深入理解https

为什么需要加密?

http的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。

对称加密

对称加密指的就是加、解密使用的同是一串密钥,所以被称做对称加密,对称加密只有一个密钥作为私钥。
对称加密相比非对称加密算法来说,加解密的效率要高得多、加密速度快。但是缺陷在于对于密钥的管理和分发上比较困难,不是非常安全,密钥管理负担很重。

以共享密钥方式加密(对称密钥加密)时必须将密钥也发给对方。那么就会产生一个新的问题。发送密钥就有被窃听的风险,但不发送,对方就不能解密。再说,密钥若能够安全发送,那数据也应该能安全送达。

非对称加密

指的是加、解密使用不同的密钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。反之,私钥加密的信息,只有公钥才能解密。
举个例子,你向某公司服务器请求公钥,服务器将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人才能对你的消息解密。与对称加密不同的是,公司服务器不需要将私钥通过网络发送出去,因此安全性大大提高。
最常用的非对称加密算法:RSA

非对称加密虽然相较于对称加密安全,但是解决不了中间人攻击,也就是公钥被仿冒、伪造问题

HTTPS数字证书加密

安全的获取公钥,防止公钥被冒充

  • server通过域名等信息向CA申请(会验证申请者域名、身份等)证书(包含服务端公钥
  • client请求server时会下载证书,要做的第一件事情是验证证书的真伪、时效性
  • 各大浏览器和操作系统已经维护了所有权威证书机构的名称和公钥。
    • 伪造的证书会有风险提示
    • 验证通过,通过公钥解开证书所携公钥
    • 通过非对称加密算法安全传递密钥并建立链接
  • 建立安全链接后,通过对称加密算法传输数据,提高加、解密效率