@@ -61,15 +61,15 @@ SSL/TLS 的核心要素是**非对称加密**。非对称加密采用两个密
6161>
6262> 这样,通信信息就不会被其他人截获了,这依赖于私钥的保密性。
6363
64- ![ ] ( ./images/http& https/public-key-cryptography.png )
64+ ![ ] ( ./images/http-vs- https/public-key-cryptography.png )
6565
6666非对称加密的公钥和私钥需要采用一种复杂的数学机制生成(密码学认为,为了较高的安全性,尽量不要自己创造加密方案)。公私钥对的生成算法依赖于单向陷门函数。
6767
6868> 单向函数:已知单向函数 f,给定任意一个输入 x,易计算输出 y=f(x);而给定一个输出 y,假设存在 f(x)=y,很难根据 f 来计算出 x。
6969>
7070> 单向陷门函数:一个较弱的单向函数。已知单向陷门函数 f,陷门 h,给定任意一个输入 x,易计算出输出 y=f(x;h);而给定一个输出 y,假设存在 f(x;h)=y,很难根据 f 来计算出 x,但可以根据 f 和 h 来推导出 x。
7171
72- ![ 单向函数] ( ./images/http& https/OWF.png )
72+ ![ 单向函数] ( ./images/http-vs- https/OWF.png )
7373
7474上图就是一个单向函数(不是单项陷门函数),假设有一个绝世秘籍,任何知道了这个秘籍的人都可以把苹果汁榨成苹果,那么这个秘籍就是“陷门”了吧。
7575
@@ -81,7 +81,7 @@ SSL/TLS 的核心要素是**非对称加密**。非对称加密采用两个密
8181
8282> 对称加密:通信双方共享唯一密钥 k,加解密算法已知,加密方利用密钥 k 加密,解密方利用密钥 k 解密,保密性依赖于密钥 k 的保密性。
8383
84- ![ ] ( ./images/http& https/symmetric-encryption.png )
84+ ![ ] ( ./images/http-vs- https/symmetric-encryption.png )
8585
8686对称加密的密钥生成代价比公私钥对的生成代价低得多,那么有的人会问了,为什么 SSL/TLS 还需要使用非对称加密呢?因为对称加密的保密性完全依赖于密钥的保密性。在双方通信之前,需要商量一个用于对称加密的密钥。我们知道网络通信的信道是不安全的,传输报文对任何人是可见的,密钥的交换肯定不能直接在网络信道中传输。因此,使用非对称加密,对对称加密的密钥进行加密,保护该密钥不在网络信道中被窃听。这样,通信双方只需要一次非对称加密,交换对称加密的密钥,在之后的信息通信中,使用绝对安全的密钥,对信息进行对称加密,即可保证传输消息的保密性。
8787
@@ -99,7 +99,7 @@ SSL/TLS 介绍到这里,了解信息安全的朋友又会想到一个安全隐
9999>
100100> 同样的,S 公钥即使做加密,也难以避免这种信任性问题,C 被 AS 拐跑了!
101101
102- ![ ] ( ./images/http& https/attack1.png )
102+ ![ ] ( ./images/http-vs- https/attack1.png )
103103
104104为了公钥传输的信赖性问题,第三方机构应运而生——证书颁发机构(CA,Certificate Authority)。CA 默认是受信任的第三方。CA 会给各个服务器颁发证书,证书存储在服务器上,并附有 CA 的** 电子签名** (见下节)。
105105
@@ -117,7 +117,7 @@ SSL/TLS 介绍到这里,了解信息安全的朋友又会想到一个安全隐
117117>
118118> 客户端对证书数据(包含服务器的公钥)做相同的散列处理,得到摘要,并将该摘要与之前从签名中解码出的摘要做对比,如果相同,则身份验证成功;否则验证失败。
119119
120- ![ ] ( ./images/http& https/digital-signature.png )
120+ ![ ] ( ./images/http-vs- https/digital-signature.png )
121121
122122总结来说,带有证书的公钥传输机制如下:
123123
@@ -127,7 +127,7 @@ SSL/TLS 介绍到这里,了解信息安全的朋友又会想到一个安全隐
1271274 . C 获得 S 的证书,信任 CA 并知晓 CA 公钥,使用 CA 公钥对 S 证书上的签名解密,同时对消息进行散列处理,得到摘要。比较摘要,验证 S 证书的真实性。
1281285 . 如果 C 验证 S 证书是真实的,则信任 S 的公钥(在 S 证书中)。
129129
130- ![ ] ( ./images/http& https/public-key-transmission.png )
130+ ![ ] ( ./images/http-vs- https/public-key-transmission.png )
131131
132132对于数字签名,我这里讲的比较简单,如果你没有搞清楚的话,强烈推荐你看看[ 数字签名及数字证书原理] ( https://www.bilibili.com/video/BV18N411X7ty/ ) 这个视频,这是我看过最清晰的讲解。
133133
0 commit comments