HTTPS采用混合加密
一、对称加密
加密和解密同用一个密钥的方式就叫对称加密,也称为共享密钥加密
例如:A和B是进行通信的双方
假设A手握一把密钥 key1,那么A需要克隆一把相同的密钥 key1'
在第一次通信中,A将报文连同 key1'一起发送给B
此后:A和B则分别使用 key1、key1' 分别对接收/发送的报文进行解密/加密
对称密钥加密的优点在于:
加密算法公开、计算量小、加密速度快
缺点在于:
1、转发密钥的通信若被监听,则密钥可能落入攻击者之手
2、通信双方需要使用其他人不知道的密钥,这会使得双方持有的钥匙数量巨大,难以管理和维护
下面举个例子来简要说明一下对称加密的工作过程。甲和乙是一对生意搭档,他们住在不同的城市。由于生意上的需要,他们经常会相互之间邮寄重要的货物。为了保证货物的安全,他们商定制作一个保险盒,将物品放入其中。他们打造了两把相同的钥匙分别保管,以便在收到包裹时用这个钥匙打开保险盒,以及在邮寄货物前用这把钥匙锁上保险盒。
上面是一个将重要资源安全传递到目的地的传统方式,只要甲乙小心保管好钥匙,那么就算有人得到保险盒,也无法打开。这个思想被用到了现代计算机通信的信息加密中。在对称加密中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。
二、非对称加密
通信双方使用一把私有密钥和一把公开密钥,也称为公开密钥加密
顾名思义:任何人都可以获得公开密钥,但私有密钥不能让其他人知道
例如:B希望自己发送给A的报文被加密
假设A手握公钥 key2 和私钥 key2'
首先,A将报文主体连同 key2 一起发送给B
此后,B向A发送的报文都将使用 key2 加密
而被 key2 上锁的报文 只有A手上的 key2' 才能解密
同理:当A想要回复B时,正好相反
此时A就使用B的公钥对数据进行加密
而B就用自己的私钥进行解密
非对称加密很好地解决了对称加密的问题:
它消除了通信双方交换密钥的需要,进一步保证了通信的安全性
然而,非对称加密的加密解密速度非常慢,算法复杂
HTTPS采用的混合加密机制 则充分利用了两者的优势
三、混合加密机制
在交换密钥的环节使用非对称加密,之后的通信则使用对称加密
例如:A手握一对非对称密钥(公钥key3、私钥key3'),B手握一对对称密钥(key4、key4')
阶段1:交换密钥-使用非对称加密
1、A将公钥 key3 发送给B
2、B将下一阶段加密/解密用的 key4' 放在报文中,并使用公钥 key3 对报文进行加密
3、A使用私钥 key3' 解密报文,得到 key4'
阶段2:数据通信-使用对称加密
A和B分别使用 key4' 和 key4对接收/发送的报文进行解密/加密
一方面,第一阶段的非对称加密 保证了对称密钥的安全性
另一方面,第二阶段的对称加密 可以提高加密/解密处理的速度,提高数据传输的效率
然而,这种混合加密机制还是存在一些问题
那就是:无法证明第一阶段派发的公钥 是货真价实的公钥
解决方式:请看 简述HTTPS(三):数字证书