欢迎光临散文网 会员登陆 & 注册

【Http & SSL/TLS】谁还没有传过纸条呢

2023-01-24 20:27 作者:柚子柚子l  | 我要投稿

前言

现在市面上的许多网站,都强制使用了 Https。 说白了,Https 就是 Http 的加强版,能够保证数据传输时的安全性。其使用了 SSL/TLS 作为 TCP 或 QUIC 上层,Http 下层之间的一个协议,以此保证报文的可靠传输。 本期就讲讲 Https 的工作原理。 非对称加密

上学的时候,应该都有人传过纸条。 不过纸条和 Http 一样,都有明文传输的风险,任何中间人都能够看到。 假如我不想让别人看到,就可以在课间时告诉他,每个字母往前移一位,就是我想要和你说的话。而这样的做法,就是一种对称加密算法,双方使用同样的算法、同样的密钥进行加解密。 (以上故事来源于他人) 不过这样有一个问题:Https 中如何交换一个密钥?如果仍然使用对称加密,是否存在安全风险?此时就需要用到非对称加密算法。 现在,我们有一个数据 5,而 5^2 mod 6 为几?很显然为 1。 不过如果我们将未知数换一下,5^n mod 6 = 1,n 为多少?这样就复杂多了。但是依然能通过枚举法找出结果。 但如果除数是一个奇大无比的数呢?假设 5^n mod 1145141919810 = 1,那么 n 是多少?世界上最牛批的计算机都需要几年才能算出来,所以我们可以认为它算不出。 接下来,将 n 分解为两数乘积。 原等式就能化为 a^(pq) mod N = a (a,p,q,N 均为正整数)。其中,a 为明文,p,q 为公私钥。 如果 p,q,N 取值合理,那么下列两个等式均能成立: a^p mod N = b b^q mod N = a 因此,a 经过取模操作能够变成 b,b 经过取模操作也能变回 a。 p 与 q 互为一对公私钥,而且用私钥加密后能用公钥解密,公钥加密后也能用私钥解密。 TLS 握手

TLS 握手过程在 TCP 三次握手之后进行,总共四次。第一次、第三次由客户端发送,第二次、第四次由服务端发送。以 TLS 1.2 为例, 1. Client Hello:客户端随机数,客户端 TLS 版本号,客户端支持的密码套件列表 2. Server Hello:服务端随机数,服务端 TLS 版本号,服务端选择的密码套件列表 2. 服务器证书 2. 服务器握手完成 3. 随机数 Pre-Master 3. 改用加密通信 3. 握手数据摘要 4. 改用加密通信 4. 握手数据摘要 现在依次解释一下以上步骤。 第一次握手

第一次握手名为 Client Hello,包括客户端生成的随机数 CR,客户端的 TLS 版本号,客户端支持的密码套件列表。 其中说明一点,密码套件约定了密钥交换算法、摘要算法、加密通信算法等,且通常仅使用安全的算法。 第二次握手

第二次握手为 Server Hello,包括服务端生成的随机数 SR,服务端的 TLS 版本号,服务端选择的密码套件。接下来发送一个服务器的证书,并发送“Server Hello Done”消息,表示 Server Hello 完成。 现在了解一下服务器证书: 证书一般包括有效期、摘要算法、服务器地址、证书路径与公钥等信息。客户端如需验证证书有效性,一般会根据证书路径,找出颁发证书的 CA 机构,然后用 CA 机构的公钥解密证书(CA 的证书已经植入到操作系统或浏览器中),并查验其是否为授信任的 CA 机构颁发的证书。Windows UAC 也通过这种方式判断软件是否被信任。 第三次握手

第三次握手,客户端会先生成一个随机数 Pre-Master,然后通过服务器公钥加密,发给服务器。服务器收到后,通过私钥解密,即可获取到 Pre-Master 值。 此时客户端与服务端已经互相交换了三个随机数:CR,SR,Pre-Master。通过特定算法,用这三个值可以算出会话密钥。 客户端继续发送“改用加密通信”,并计算握手数据的摘要,用会话密钥加密,发送给服务器。 第四次握手

第四次握手,服务端同样改用会话密钥加密通信,然后同样将握手数据做一个摘要,此时就完成了握手过程。 要注意,TLS 只有握手时使用非对称加密,发送数据时使用对称加密,因为非对称加密速度相对较慢。 TLS 解决了什么问题?

Http 存在以下三个问题:

监听风险

,信息被他人抓到,用户号容易没;

冒充风险

,别人伪造某宝,用户钱容易丢;

篡改风险

,强制植入垃圾广告,用户眼容易瞎。 TLS 就解决了这些问题: 密文传输,信息无法读取,但是账号还是会因为“借”给别人而没; 客户端验证证书,保证服务器是这个服务器,但是钱还是会因为“转”给别人而丢; 摘要校验,数据被篡改就无法显示,但是眼睛还是会因为“竞价排名”而瞎。 可见,只要用户不作恶,Https 还是能够保证安全的。 总结

本期讲了 Https 的底层原理,以及非对称加密的方式。 没看懂?每天多看几遍,渐渐的就能看懂了。 好了,我们下期再见。 字数:2041

【Http & SSL/TLS】谁还没有传过纸条呢的评论 (共 条)

分享到微博请遵守国家法律