https加密
=对称加密
+非对称加密
,非对称加密
用于传输秘钥
,双方得到秘钥
后再通过对称加密
来通信。
什么是对称加密(Symmetry Encrypted)?
小明和小王在网上聊天,为了不让别人知道他们在聊什么,于是他们约定了一个加密方法:字母后移动一位,比如小明给小王发 I LOVE YOU
小王接收到 J MPWF ZPV
后,向前移一位得到 I LOVE YOU
。
小明和小王约定的加密方法被称为秘钥(真实的秘钥当然复杂的多),秘钥只有小明和小王知道他们,所以他们就能安全的聊天。这个过程就叫对称加密。
小明和小王约定的秘钥,是需要通过网络传输的,如果传输过程中被人窃取了呢?于是又有了非对称加密。
什么是非对称加密(Asymmetric Encrypted)?
小明和小王各有一对私钥和公钥,私钥自己保存,公钥对所有人公开。公钥加密私钥解开。
比如小明给小王发消息,小明先拿到小王的公钥,然后把消息用公钥来加密,再把加密后的消息发给小王,小王用我自己的私钥解密,就得到小王给我自己发的消息了。
小明拿到的公钥是通过网络传输的,如果公钥被人掉包了呢?怎么证明是小王的公钥呢?这就需要用到证书加密了
什么是证书加密(Certificate Encrypted)?
小王的公钥
+个人信息
,通过 Hash 算法生成一个信息摘要
证书的私钥
+ 信息摘要
,生成一个 数字签名
数字签名
+ 小明的公钥
+个人信息
就生成了一个数字证书
。
小明得到数字证书
后,用证书的公钥
解密数字签名
得到信息摘要
,然后又用小王的公钥
+个人信息
,通过 相同 Hash 算法生成一个信息摘要
,对比这两个信息摘要是否相同,相同的则表明这个公钥就是小王的。
以为这就这就结束了?还没有!
怎么证明这个证书是不是真的呢,会不会是别人伪造的呢?
用其他证书去证明,证书认证证书,从下到上,呈树形,根节点的证书是内置到系统或浏览器。
说了这么多到底什么 HTTPS?
HTTPS 加密是什么?
上文我们知道通过证书认证的非对称加密方式是非常安全的,但是有一个问题就是,这种方式性能非常差,所以采用非对称加密传输秘钥,之后就采用性能更好的的对称加密,这种方式就是 HTTPS 加密。
具体流程如下: