传输层安全

发布时间:2026/6/27 12:32:08
传输层安全 传输层安全定义传输层安全(TLS) 就是在HTTP和TCP之间TLS 就是在HTTP 和 TCP 中间加一层保护层。原先的流程是这样HTTP → TCP → IP → 网络但是这样明文会直接传输。HTTP 本身是明文的。也就是说如果你登录网站发送usernameabcpassword123456中间有人抓包可能直接看到。加上TLS后HTTP → TLS → TCP → IP → 网络所以 HTTPS 其实就是HTTP TLS HTTPSTLS 主要做三件事第一加密。别人抓包也只能看到乱码看不到你发的密码、cookie、网页内容。第二认证服务器身份。浏览器会检查证书确认你连到的确实是unsw.edu.au不是攻击者假冒的网站。第三防篡改。中间人不能偷偷把服务器返回的内容改掉。比如把pay $10 - pay $1000 TLS 会检测出来。TLS提供了Confidentiality机密性Integrity完整性Authentication认证简易版TLS设计逻辑握手 Handshake双方互相验证身份靠证书然后协商出一个共享秘密比如 DH 交换。这一步结束后只有通信双方知道这个密钥窃听者不知道。Alice 发Hello给 Bob。Bob 发Public Key Certificate给 Alice证书里面核心有两样东西Bob 的身份信息Bob 的公钥 K_B^Alice 生成一个Ms也就是 Master Secret。然后 Alice 用 Bob 的公钥加密它K_B^(Ms) Ems。Alice 把Ems发给 Bob。Bob 收到以后用自己的私钥解密所以这一步结束后结果是Alice 知道 Ms Bob 也知道 Ms 中间人不知道 Ms这就是“协商/建立共享秘密”。所以这张图对应 ToySSL 的第一步Handshake 认证 Bob 让 Alice 和 Bob 拥有同一个 Master Secret密钥派生 Key Derivation共享密钥本身不直接拿来加密。你从它派生出多把密钥一把加密用、一把算 MAC 用、甚至双向各一套。同一个密钥用在不同地方会削弱安全性——密钥分离原则。Kc客户端 → 服务器 的加密密钥Mc客户端 → 服务器 的 MAC 密钥Ks服务器 → 客户端 的加密密钥Ms服务器 → 客户端 的 MAC 密钥数据传输 Data Transfer把HTTP需要传输的数据切分成一条一条的record再独立加密每条record加上MAC再发送所以一条 record 发出去长这样明文数据 → 加上MAC → 整体加密 → 发送这样的好处是可以来一条record就检验一条不用等到整个会话结束后才发现信息被篡改安全关闭连接 Connection closure需要一个加密的我说完了信号双方确认才算真正结束。replay attack攻击者可以截取到多条 record然后不停的重复发送或者调换record顺序发送解决方法把sequence number放进 HMAC 计算中即HMAC MAC(Mx, sequence || data)这样即使数据内容一样只要序号不对校验就过不了。truncation attack攻击者伪造一个 TCP 关闭连接的信号导致一方误以为“数据传完了”但其实后面还有内容。于是接收方看到的是一个被截断的会话。解决方法给 record 加type。比如type 0表示正常数据type 1表示正常数据。然后把type也放入 HMACHMAC MAC(Mx, sequence || type || data)