深入理解HTTPS工作原理( 二 )


以对称加密方式加密时必须将密钥也发给对方 。可究竟怎样才能安全地转交?在互联网上转发密钥时,如果通信被监听那么密钥就可会落人攻击者之手,同时也就失去了加密的意义 。另外还得设法安全地保管接收到的密钥 。
方法2.非对称加密公开密钥加密使用一对非对称的密钥 。一把叫做私有密钥,另一把叫做公开密钥 。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得 。
使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密 。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走 。

深入理解HTTPS工作原理

文章插图
 
非对称加密的特点是信息传输一对多,服务器只需要维持一个私钥就能够和多个客户端进行加密通信 。
这种方式有以下缺点:
  • 公钥是公开的,所以针对私钥加密的信息,黑客截获后可以使用公钥进行解密,获取其中的内容;
  • 公钥并不包含服务器的信息,使用非对称加密算法无法确保服务器身份的合法性,存在中间人攻击的风险,服务器发送给客户端的公钥可能在传送过程中被中间人截获并篡改;
  • 使用非对称加密在数据加密解密过程需要消耗一定时间,降低了数据传输效率;
方法3.对称加密+非对称加密(HTTPS采用这种方式)使用对称密钥的好处是解密的效率比较快,使用非对称密钥的好处是可以使得传输的内容不能被破解,因为就算你拦截到了数据,但是没有对应的私钥,也是不能破解内容的 。就比如说你抢到了一个保险柜,但是没有保险柜的钥匙也不能打开保险柜 。那我们就将对称加密与非对称加密结合起来,充分利用两者各自的优势,在交换密钥环节使用非对称加密方式,之后的建立通信交换报文阶段则使用对称加密方式 。
具体做法是:发送密文的一方使用对方的公钥进行加密处理“对称的密钥”,然后对方用自己的私钥解密拿到“对称的密钥”,这样可以确保交换的密钥是安全的前提下,使用对称加密方式进行通信 。所以,HTTPS采用对称加密和非对称加密两者并用的混合加密机制 。
2.解决报文可能遭篡改问题——数字签名网络传输过程中需要经过很多中间节点,虽然数据无法被解密,但可能被篡改,那如何校验数据的完整性呢?----校验数字签名 。
数字签名有两种功效:
  • 能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名 。
  • 数字签名能确定消息的完整性,证明数据是否未被篡改过 。
数字签名如何生成:
深入理解HTTPS工作原理

文章插图
 
将一段文本先用Hash函数生成消息摘要,然后用发送者的私钥加密生成数字签名,与原文文一起传送给接收者 。接下来就是接收者校验数字签名的流程了 。
校验数字签名流程:
深入理解HTTPS工作原理

文章插图
 
接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与上一步得到的摘要信息对比 。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性 。
假设消息传递在Kobe,James两人之间发生 。James将消息连同数字签名一起发送给Kobe,Kobe接收到消息后,通过校验数字签名,就可以验证接收到的消息就是James发送的 。当然,这个过程的前提是Kobe知道James的公钥 。问题的关键的是,和消息本身一样,公钥不能在不安全的网络中直接发送给Kobe,或者说拿到的公钥如何证明是James的 。
此时就需要引入了证书颁发机构(Certificate Authority,简称CA),CA数量并不多,Kobe客户端内置了所有受信任CA的证书 。CA对James的公钥(和其他信息)数字签名后生成证书 。
3.解决通信方身份可能被伪装的问题——数字证书数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上 。
深入理解HTTPS工作原理

文章插图
 
我们来介绍一下数字证书认证机构的业务流程: