这里是Themberfue
✨上节课我们聊到了对称加密和非对称加密,实际上,单纯地非对称加密并不能保证数据不被窃取,我们还需要一个更加重要的东西------证书
中间人攻击
- 通过非对称加密生成私钥priKey和公钥pubKey用来加密对称加密生成的密钥,确实可以有效的对数据的传输进行保护,但其中还存在一个非常严重的漏洞。
- ✨中间人攻击(Man-In-The-Middle Attack,MITM) 是一种网络攻击形式,攻击者通过拦截和篡改两方通信内容,冒充通信的某一方与另一方对话,从而获取敏感信息或进行恶意操作。整个过程通常对通信双方是不可见的,因此具有很大的隐蔽性。
- 中间人攻击通常冒充双方之一:假装是服务器与客户端通信、假装是客户端与服务器通信,攻击者在通信中插入、修改或窃取数据,而通信双方误以为彼此直接对话。
- 中间人攻击的常见手段有很多种,这里我们只讲其中的一种:通过特殊手段拿到加密的密钥。
- ✨客户端服务端通信前,客户端向服务端请求获得 公钥pub1 ,服务端接受请求返回 公钥pub1,此时黑客拦截到响应,但黑客自己又生成了一对 公钥pub2 和 私钥pri2 ,黑客伪造响应数据包将 公钥pub2 返回客户端,客户端没有能力辨别该公钥的真假,便直接拿来用了,随后将客户端生成的 密钥key 使用 公钥pub2 进行加密,随后再度发送请求给服务端,此时又被黑客拦截了,黑客将使用 私钥pri2 对通过 公钥pub2 加密的 密钥 key 进行解密,从而得到 密钥key,随后再使用 公钥pub1 再度对该 密钥key 加密并伪造请求数据包发送给服务端,服务端得到之后使用 私钥pri1 进行解密得到密钥key,此时服务端也不会有所怀疑。在整个过程中,服务端和客户端根本不知道它们的通信还有一个中间人黑客进行篡改,密钥key 就这样被拿到了,往后的通信都会被破解。
- 如果依然有点模糊,这边还有一个比喻,希望可以加深理解:❤️假设你在咖啡馆里,想给朋友发一封信。你把信交给服务员,请他送到朋友手中。然而,服务员偷偷打开信,读了内容,还伪造了一份不同的回复信交给你。你以为在和朋友直接通信,但实际上服务员(中间人)在整个过程中窃取并操控了你的信息。
- ✨✨✨防御中间人攻击的关键在于:确保通信双方能够相互验证身份,并通过加密保护通信数据的完整性和机密性。
CA证书
- ✨上述提到的中间人攻击,关键就在于服务端和客户端不知道对方的身份是否正确,所以,引入校验机制以检验对方的身份是否合法,通常校验客户端请求服务器的公钥是否被中间人修改过。
- 如何验证,就是验证 "证书"。CA证书 (Certificate Authority Certificate)是由证书颁发机构(CA) 签发的电子文件,用于在网络通信中证明服务器或客户端的身份,并帮助建立安全的通信。CA 证书是 HTTPS 和其他加密协议的重要组成部分。
证书的组成
证书持有者信息
- 持有者名称(通常是域名)。
- 组织信息(如公司名、地点)。
CA 信息
- 签发证书的证书颁发机构名称。
公钥
- 用于加密通信的公钥。
证书序列号
- 证书的唯一标识。
有效期
- 证书的开始时间和到期时间。
签名算法
- 用于签名的哈希算法(如 SHA256)。
数字签名
- 由 CA 对证书内容进行签名,确保证书未被篡改。
- ✨在正式对广大客户端提供前,服务器先向第三方权威认证机构 申请颁发一个证书,通过提交一些服务器的域名、公钥等信息,随后机构颁发一个数字证书,证书的组成如上;证书的内容会被签名算法 算出一个校验和 ,随后机构这边也会有一对公钥pub2 和私钥pri2 ,++私钥pub2用于加密先前求出的校验和++ ,得到**数字签名;**校验和通常与内容有关,若内容相同,得到的校验和一定相同,若内容不相同,得到的校验和大概率不同,这和hash函数有一定的类似。
- ✨在客户端和服务器通信时,客户端会先向服务器请求其的证书,客户端得到证书后,对证书上述的组成内容使用相同的签名算法 算出一个新的校验和 ,随后使用第三方权威认证机构生成的公钥pub2 对数字签名 进行解密得到服务器那边原始的校验和,将原始的校验和与客户端新算出的校验和进行比对,如果相同,则表明内容没有被篡改,不存在中间人拦截,如果不同,则表明内容被篡改,存在中间人拦截,立刻停止通信。
- ❓看到这里,你或许会有点疑问,在这个过程中,怎么就保证内容一定没被修改了;别急,且听我一一道来。
- 💎黑客会不会对公钥pub2 进行修改,中间人攻击那样故技重施。答案是不会的,因为公钥pub2就不是通过网络传输的,而是操作系统内置的 ,你当然也可以查看自己操作系统内置的一些第三方机构。输入win+R,输入certmgr.msc后可以直接查看、打开控制面板,找到Internet选项,有一个内容tab栏,点击证书按钮便可查看。
- 💎这些第三方生成的公钥pub2黑客当然也可以看到,但是只能看不能修改,无可奈何。除非你安装的操作系统不是正版,而是黑客魔改的,那当我没说。
- 💎黑客可以自己申请或者伪造一个证书然后替换吗?确实可以申请或者伪造,但是证书的内容通常有许多唯一标识,标志着该证书的唯一性,就比如域名,黑客申请的域名的正规服务器的域名肯定不能相同,第三方机构肯定能知道你这个域名冲突了,那如果是黑客自己伪造的证书,这当然不需要通过第三方机构,但这也并不行,因为数字签名是通过第三方机构生成的私钥pri2加密 的,如果黑客使用了自己的私钥加密,那么客户端使用第三方机构生成的公钥pub2解密时,就会解密失败,从而中断通信。
- 💎如果黑客修改证书内容呢?那也一样,同样需要在修改完后使用第三方机构的私钥pri2加密,否则客户端就会解密失败。那黑客能拿到私钥pri2,要真能拿到,那也是厉害,这是真厉害,没得黑🫡。
- 我们也可以通过浏览器查看你当前访问网站的一些证书信息,在域名左侧有个锁的图标就可以查看
- 如果你访问的网站的证书是不合法的,浏览器通常会警告你,查询你是否继续访问还是退出该网页。经常网上冲浪的应该对这个不陌生。面对这种情况,还是建议不要无视风险,继续安装了。
SSL/TLS
- ✨SSL(Secure Sockets Layer) 和**TLS(Transport Layer Security)**是网络安全协议,用于在客户端和服务器之间建立安全加密的通信通道。它们在保护数据传输的机密性、完整性和身份验证方面发挥关键作用。
SSL 和 TLS 的关系
- SSL 是最初由 Netscape (网景) 开发的安全协议。
- TLS 是 SSL 的继任者,属于更安全的版本。
- SSL 3.0 是最后一个 SSL 版本,之后改进的版本被命名为 TLS 1.0。
- 当前(截至 2025 年)推荐使用的是 TLS 1.2 或 TLS 1.3,SSL 以及 TLS 1.0/1.1 已被淘汰。
SSL/TLS 的核心功能
数据加密:
- 通过对称加密保证数据传输的机密性。
- 防止传输中的数据被窃听。
数据完整性:
- 使用消息摘要(如 HMAC)防止数据被篡改。
- 如果数据被修改,接收方会发现并丢弃。
身份验证:
- 使用数字证书验证服务器身份。
- 可选:客户端身份验证(如双向认证)。
SSL/TLS 的工作流程
- 握手阶段(Handshake)
- 建立安全连接的过程,包括协商加密算法、验证身份和生成密钥。
主要步骤:
客户端 Hello
- 客户端向服务器发送支持的 TLS 版本、加密套件、随机数等信息。
服务器 Hello
- 服务器响应,确认使用的 TLS 版本、加密算法等,并发送服务器证书。
服务器证书验证
- 客户端验证服务器证书的有效性,包括是否由受信任的 CA 签发、是否过期等。
密钥交换
- 双方通过密钥交换算法(如 Diffie-Hellman 或 RSA)协商生成会话密钥。
- TLS 1.3 直接采用预共享密钥(PSK)或密钥交换,跳过部分步骤。
完成握手
- 客户端和服务器通过对称加密会话密钥,开始加密通信。
加密通信阶段
- 使用会话密钥对数据进行加密,保证传输的安全性。
- 连接关闭阶段
- 使用 TLS 关闭机制,确保剩余数据完整传输并正确断开连接。
主要特性
向后兼容性:
- 允许客户端和服务器协商最低的 SSL/TLS 版本。
加密算法灵活性:
- 支持多种加密算法(如 AES、ChaCha20),并根据安全性逐步淘汰不安全的算法。
支持扩展:
- 如 ALPN(应用层协议协商)支持 HTTP/2。
TLS 1.3 的改进
简化握手:
- 减少握手过程中的往返次数(从两次减少到一次)。
- 更快的连接建立速度。
更强的安全性:
- 移除弱加密算法和协议(如 RSA 和 MD5)。
- 默认启用前向保密(Perfect Forward Secrecy,PFS)。
效率提升:
- 提供 0-RTT(零延迟握手)机制,加速后续连接。
SSL/TLS 的典型应用场景
HTTPS(HTTP over TLS):
- 为网站提供安全加密通信。
邮件传输:
- 如 SMTPS、IMAPS。
虚拟专用网络(VPN):
- 如 OpenVPN 使用 TLS 进行隧道加密。
实时通信:
- WebRTC 中的加密。
常见的挑战与问题
性能开销:
- TLS 加密和握手过程增加了 CPU 和带宽开销。
- 解决:启用硬件加速(如 AES-NI)、使用更高效的协议(如 TLS 1.3)。
证书管理复杂性:
- 证书需要定期更新、配置和管理。
攻击风险:
- 如中间人攻击(MITM)、TLS 降级攻击(POODLE)等。
- 解决:强制使用最新版本的 TLS,启用 HSTS。
总结
SSL/TLS 是保障互联网安全的重要基石,通过加密、验证和完整性检查,确保数据安全传输。随着 TLS 的不断发展(特别是 TLS 1.3 的普及),性能和安全性得到了进一步提升。理解其原理有助于更好地设计和保护网络应用。
- 至此,HTTP/HTTPS 协议的相关内容就已经全部讲完了,如有遗漏,私信我~~~
- 下一节,我们将进入传输层 UDP/TCP 协议的讲解,大家敬请期待哦~~~
- 毕竟不知后事如何,且听下回分解
- ❤️❤️❤️❤️❤️❤️❤️