为什么HTTPS能保证会话安全?

279 阅读2分钟

前置知识

如果后面讲解不懂的时候,可以看前置知识中的名词解释。

  • 对称加密

    一把钥匙,就能加密解密一段消息,特点速度快。

  • 非对称加密(RSA)

    有两把钥匙。

    特点:

    用私钥加密的数据,只有对应的公钥才能解密。 用公钥加密的数据, 只有对应的私钥才能解密。

    缺点:

    幂等复杂度。比对称加密慢很多很多。

  • 消息包

    服务器RSA算法的公钥数据、其个人信息和其他的信息的集合

  • 消息摘要

    将消息包HASH后得到的数据

  • 数字签名

    将消息摘要(也就是HASH值)用CA(认证机构)的私钥加密的数据

  • 数字证书

    RSA算法消息包和数字签名的集合

HTTPS加密流程

如何才叫安全的会话呢?

HTPPS的会话只要是建立在一个安全的对称加密的会话上就是安全的。

那么如何在明文的前提下把对称加密的钥匙传送给浏览器呢?

使用TLS(传输层安全性协议Transport Layer Security)

TSL的大致意思:

共3步

1.浏览器请求服务器(明文情况)

2.服务器返回一个数字证书

数字证书包含一个含有服务器RSA公钥的信息包,和数字签名,数字签名是经过CA私钥加密的信息摘要,而信息摘要是信息包HASH的值。

浏览器通过系统上可信任的CA机构提供的公钥解密数字签名,数字签名解密出来的信息摘要和未加密的信息自己做HASH做一致性测试,排除信息包中公钥数据被篡改的可能。浏览器就收获了一个绝对安全的服务器的RSA公钥。

3.浏览器通过通过服务器的RSA公钥来加密一个随机的对称加密的密钥-会话密钥(session key),传输给服务器,就建立一个安全的对称加密的会话。

疑问?

在第2步花了老大劲就是为了浏览器得到一个绝对安全的RSA公钥,可却还是用的系统内置的CA RSA公钥解密。为什么不直接用CA机构的公钥加密session key,反而麻烦的用RSA来传送RSA的公钥?

答:为了防止万一CA的私钥泄密导致在网的所有HTTPS会话(仅使用CA公钥加密过的)被泄密。TLS设计需要满足PFS(向前安全性 Perfect Forward Secrecy)。