计算机网络——应用层 HTTPS 协议分析
概述
HTTPS(HyperText Transfer Protocol Secure)是 HTTP 的安全版本,即安全的超文本传输协议
HTTPS 通过在 HTTP 协议基础上加入 SSL/TLS 加密层,确保数据在客户端(如浏览器)与服务器之间传输时的机密性、完整性和身份认证。
同样也是基于 TCP 解封装。
使用端口号为
443。
加密算法
加密算法历史(简要)
近代密码学的发展始于 20 世纪初电报和无线电的普及,在一战和二战期间,军事通信需求推动了密码技术的进步,如德国 Enigma 密码机和美军 纳瓦霍语密码 的应用,同时英国破译齐默尔曼电报等事件直接影响了战争走向,而 香农信息论 和 Kerckhoffs 原则 为密码学奠定了理论基础。
1976 年后,现代密码学迎来革命性发展,Diffie-Hellman 密钥交换和 RSA 算法 的提出开创了公钥密码学新时代,DES 和 AES 成为对称加密标准,ECC 椭圆曲线密码 以更短的密钥实现高强度安全,同时中国也贡献了 ZUC、SM4 等国际认可的密码算法。
进入 21 世纪,随着 MD5 等哈希函数被破解和量子计算的出现,密码学面临新的挑战,后量子密码学成为研究重点,各国加速推进密码算法自主化与标准化,密码学已从军事保密工具演变为支撑数字社会的核心技术,其发展始终与计算技术、数学理论和安全需求紧密交织,未来将继续在保障信息安全方面发挥关键作用。
对称加密算法
概述
对称加密算法(Symmetric Encryption)是一种加密技术,其核心特点是 加密和解密使用相同的密钥,常用的算法是
AES、DES。
[!tip]
这种算法速度快、效率高,适合加密大量数据,但密钥管理(如安全分发和存储)是其主要挑战。
算法运用
客户端用对称密钥(如 AES)加密 HTTP 请求(
明文 --> 密文)。
服务器用相同密钥解密密文,处理请求后,再用该密钥加密响应。
主流对称加密算法汇总
哈希加密算法
概述
哈希函数是一种将任意长度的输入(消息)映射为固定长度输出(哈希值)的数学函数,具有 不可逆性、确定性和抗碰撞性等核心特性。
常用的哈希加密有 MD5,SHA256,CRC。
哈希算法又称杂凑算法、摘要算法。
算法运用
主流哈希加密算法汇总
非对称加密算法
概述
非对称加密(又称公钥加密)是一种使用一对密钥(公钥和私钥)进行加密和解密的算法。
公钥可公开分享,用于加密数据或验证签名;私钥必须保密,用于解密数据或生成签名。
公钥和私钥是数学安全的,已知公钥,不可能推导出私钥;已知私钥,也不可能推导出公钥。
算法运用
主流非对称加密算法汇总
协议分析
密钥分发
HTTPS 使用 RSA 公钥加密 AES 密码,服务器接收到加密后的 AES 密码,使用 RSA 私钥解密得到 AES 密码。
服务器发送公钥:服务器将自己的 RSA 公钥发送给客户端(实际通过数字证书传递,图中简化为直接发送)。
客户端生成会话密钥:客户端随机生成一个 AES 对称密钥(用于后续高效加密通信数据)。
客户端加密 AES 密钥:使用服务器的 RSA 公钥加密 AES 密钥,生成密文
{AES Key}_{pk},并发送给服务器。服务器解密获取密钥:服务器用自己的 RSA 私钥解密
{AES Key}_{pk},得到原始的 AES 密钥。双向确认密钥:客户端和服务器均持有相同的 AES 密钥,完成密钥协商。
通道加密就绪:双方约定后续所有通信数据均使用 AES 对称加密。
客户端发送加密请求:使用 AES 密钥加密应用数据(如 HTTP 请求),发送给服务器。
服务器返回加密响应:服务器用 AES 密钥解密请求,处理后再加密响应数据,返回给客户端。
循环通信:后续所有通信均重复上述加密/解密过程(图中以
loop表示循环)。
HTTPS 防篡改
Chrome 预先内置了 RSA 公钥,并通过 AES 加密和哈希验证来确保数据完整性。
Chrome 浏览器内置百度服务器的 RSA 公钥。
Chrome 浏览器向百度服务器发起 HTTPS 请求(tieba.baidu.com)。
浏览器生成 AES 密码(示例:123456)。
使用 RSA 公钥加密 AES 密码,得到密文(示例:goosuih ihiUFgc)。
对 AES 密码进行 MD5 哈希,得到哈希密文(示例:ev81984vs)。
将加密后的密文和哈希密文一起发送给服务器。
服务器使用 RSA 私钥解密获取 AES 密码。
对解密后的 AES 密码进行 MD5 哈希,得到验证密文(示例:ev81984vs)。
对比收到的哈希密文和计算出的验证密文。
CA 证书颁发机构
CA 证书颁发机构相当于公证处,证实了服务器 RSA 公钥的安全性和有效性。
服务器生成 RSA 密钥对(包含公钥和私钥)。
服务器向 CA 机构提交公钥和身份验证信息(如域名所有权证明)。
CA 机构验证服务器身份真实性。
CA 机构使用 CA 自己的 RSA 私钥对服务器公钥进行 数字签名。
CA 机构颁发包含服务器公钥和 CA 签名的数字证书。
浏览器向服务器发起 HTTPS 连接请求。
服务器向浏览器返回数字证书(包含 CA 签名的服务器公钥)。
浏览器使用内置的 CA 公钥解密数字签名。
对比解密结果与证书中的服务器公钥。
验证证书的有效期、域名匹配等附加信息。
验证成功:
信任该服务器公钥
继续完成 TLS 握手流程
建立安全加密通道
验证失败:
显示 “不安全连接” 警告
阻止用户继续访问
评论区