HTTPS 加密是怎么实现的?

1,763 阅读2分钟

https加密 = 对称加密 + 非对称加密非对称加密用于传输秘钥,双方得到秘钥后再通过对称加密来通信。

什么是对称加密(Symmetry Encrypted)?

小明和小王在网上聊天,为了不让别人知道他们在聊什么,于是他们约定了一个加密方法:字母后移动一位,比如小明给小王发 I LOVE YOU

小王接收到 J MPWF ZPV 后,向前移一位得到 I LOVE YOU

symmetry_encrypted

小明和小王约定的加密方法被称为秘钥(真实的秘钥当然复杂的多),秘钥只有小明和小王知道他们,所以他们就能安全的聊天。这个过程就叫对称加密。

小明和小王约定的秘钥,是需要通过网络传输的,如果传输过程中被人窃取了呢?于是又有了非对称加密。

什么是非对称加密(Asymmetric Encrypted)?

小明和小王各有一对私钥和公钥,私钥自己保存,公钥对所有人公开。公钥加密私钥解开。

比如小明给小王发消息,小明先拿到小王的公钥,然后把消息用公钥来加密,再把加密后的消息发给小王,小王用我自己的私钥解密,就得到小王给我自己发的消息了。

asymmetric_encrypted

小明拿到的公钥是通过网络传输的,如果公钥被人掉包了呢?怎么证明是小王的公钥呢?这就需要用到证书加密了

什么是证书加密(Certificate Encrypted)?

小王的公钥+个人信息,通过 Hash 算法生成一个信息摘要

证书的私钥 + 信息摘要,生成一个 数字签名

数字签名 + 小明的公钥+个人信息 就生成了一个数字证书

Certificate_Encrypted

小明得到数字证书后,用证书的公钥解密数字签名得到信息摘要,然后又用小王的公钥+个人信息,通过 相同 Hash 算法生成一个信息摘要,对比这两个信息摘要是否相同,相同的则表明这个公钥就是小王的。

WeWork Helper20190731050117

以为这就这就结束了?还没有!

怎么证明这个证书是不是真的呢,会不会是别人伪造的呢?

用其他证书去证明,证书认证证书,从下到上,呈树形,根节点的证书是内置到系统或浏览器

说了这么多到底什么 HTTPS?

HTTPS 加密是什么?

上文我们知道通过证书认证的非对称加密方式是非常安全的,但是有一个问题就是,这种方式性能非常差,所以采用非对称加密传输秘钥,之后就采用性能更好的的对称加密,这种方式就是 HTTPS 加密。

具体流程如下:

img do

Reference

刘欣的《码农翻身》之一个故事讲完 HTTPS