理解HTTPS
HTTP的头部信息是基于键值对的,比较容易理解。而且首部字段允许开发人员自定义添加,灵活性和扩展性也比较好。但是HTTP是基于明文传输的,存在安全性问题。
HTTPS就是提供安全服务的HTTP,在应用层与传输层之间增加了一个安全层子层SSL/TLS,其中HTTPS的熟知端口号是443.发送数据时,应用程序向将数据呈递给SSL套接字(安全套接字),对数据加密后才会交给TCP套接字发送出去。
总结:HTTPS本质上是在传输层与应用层之间增加了一个安全子层的HTTP服务,可以保证数据传输加密,同时可以保证数据完整性。
密码体制
对称加密体制中,加密秘钥和解密秘钥使用相同的密码体制,如DES和AES。对称加密的算法是公开的,但是秘钥本身不公开(如算法是1和0交换,秘钥是第几位被交换了)。对称秘钥体系中,双方使用相同的秘钥,但是秘钥分配问题和数字签名没有公钥体系实现方便。
密码体系和加密解密的效率没有本质关系,加密解密效率取决于算法和选取秘钥的复杂度,越复杂越安全。我的理解是,目前流行的公钥加密算法开销普遍都比较大,所以频繁数据传输一般偏向于使用对称加密算法进行加密。
(对称秘钥使用秘钥分配中心KDC进行秘钥分配是高度安全的,但是会产生大量网络带宽)
非对称加密体制中(也称公钥密码体制),能够被公开的钥匙称为公钥,自己保存私钥。其中公钥只能加密不能解密,因此加密和解密需要两把钥匙,最常用的就是RSA算法。
非对称加密的公钥是公开的,而且公钥只能加密,那么A和B通信,A使用B的公钥加密,B收到后使用私钥解密,反过来同理,这就解决了分配难题(压根不用分配,反正公钥大家都知道,就像qq号一样,你知道它的qq号就可以向他发送消息,它登录qq就能看见,你的qq也是公开的)
这里存在中间人攻击,因为你怎么知道这个qq是不是被掉包的qq?通信前我们需要实体鉴别,防范中间人攻击(这里的中间人攻击仅指协商阶段)。
HTTPS采用的是对称加密和非对称加密的混合加密。
【1】通信前,采用非对称加密的方式协商出会话秘钥。
【2】通信过程中,使用会话秘钥进行对称加密数据。
举个例子,你想告诉