HTTPS
HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议)需要注意的额是,HTTPS并不是独立于HTTP的一个新的协议,HTTPS还是与HTTP进行通信,利用SSL/TLS来加密数据包。HTTPS的出现的为了解决HTTP协议的安全问题等。
HTTP在通信过程中面临以下的威胁:
(一)使用明文传输,通信被窃听后数据会被窃听。
(二)由于无法查明服务器身份,存在服务器欺骗。
(三)数据在传输过程中可能被篡改,无法确定数据的完整性。
HTPS的出现是为了解决这些问题,所以它是HTTP的加强版:
HTTPS=HTTP+身份认证+数据完整性验证+数据加密
1、背景知识
HTTPS证书
HTTPS的信任继续基于预先安装在浏览器中证书颁发机构发布的证书。这个证书证明了访问的网站是一个合法的网站。
加密算法
为了保证通信过程中数据的安全,HTTPS采用了一系列加密算法,包括非对称加密、对称加密和HASH算法。
算法类型
使用的算法
非对称加密算法
RSA,DSA/DSS
对称加密算法
AES,RC4,3DES
HASH算法
MD5,SHA-1,SHA256
2、HTTPS工作过程
HTTPS在传输数据之前客户端和服务器之间会进行一次握手,在握手过程中将确定双方的会话密钥,之后的通信采用该秘钥使用对称加密算法加密。握手流程如下:
1.客户端发出请求-ClientHello
首先,客户端需要先向服务器发出加密请求,叫做ClinetHello请求。在这一步中,客户端需要向服务器提供以下信息:
(一)支持的协议版本,比如TLS1.0版。
(二)一个客户端生成的随机数,稍后用于生成'会话密钥'。
(三)支持的加密方法,比如RSA共钥加密。
(四)支持的压缩方法。
2.服务器响应-ServerHello
服务器收到客户端请求后,向客户端发出回应,叫做ServerHello。服务器的回应包含以下内容:
(一)确认使用的加密通信版本。
(二)一个服务器生成的随机数,稍后用于生成“会话密钥”。
(三)确认使用的加密方法,比如RSA共钥加密。
(四)服务器证书。
3.客户端回应
客户端收到服务器回应后,首先验证服务器证书的有效性。验证通过后会从证书中取出服务器的公钥,然后,向服务器发送下面三项信息:
(一)一个随机数,用于公钥加密,防止被窃听。
(二)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(三)客户端握手结束通知。
4.服务器最后响应
服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的“会话密钥”。然后,向客户端最后发送下面的信息。
(一)编码改变通知,随后的信息都将有双方协商的加密方法和密钥发送。
(二)服务器握手结束通知。
3、参考文献
Last updated