其他分享
首页 > 其他分享> > 计网自顶向下 8.6 SSL

计网自顶向下 8.6 SSL

作者:互联网

8.6 使 TCP 连接安全:SSL

TCP 的强化版本通常被称 安全层套接字 SSL

SSL 版本 3 的一个稍加修改的版本被称为运输层安全性 TLS

网购中假如不采取安全措施

SSL 通过采用机密性、数据完整性、服务器鉴别和客户鉴别来强化 TCP,用来为发生在 HTTP 之上的事务提供安全性,又因为使 TCP 安全了,于是可以被应用于运行在 TCP 之上的任何应用程序

SSL技术位于应用层,但某些角度是运输层协议

TCP与SSL加强的TCP

8.6.1 宏观描述

简化 SSL,类 SSL,三个阶段,握手、密钥导出、数据传输

客户 B,服务器 A,A 有私钥/公钥对,和身份将公钥绑定的证书

1.握手

B行为

  1. 与 A 建立 TCP 连接
  2. 验证 A 是真实的 A
  3. 发送给 A 一个主密钥,B 和 A 使用该主密钥生成 SSL 会话所需的所有对称密码

注意:

一旦创建 TCP 连接,

类SSL

2.密钥导出

MS 已经成为对称会话密钥,但是还会生成更多的密钥

3.数据传输

不在 TCP 会话结束时才验证所有数据的完整性,SSL 将数据流分割成记录,每个记录附加一个 MAC 用于完整性检查,加密 “记录 + MAC”

B 为了产生此 MAC,将数据和密钥 M(B) 放入散列函数中,再使用会话密钥 E(B) 加密,最后经 TCP 传输

当存在中间人,且具有在 A 和 B 之间发送的 TCP 报文段中插入、删除、代替报文段的能力,完整性仍会损坏

SSL使用以下方式解决

B 维护序号计数器,开始为 0 ,每发送一个 SSL 记录则 ++

在记录中并不包含序号,但计算 MAC 时会加入

MAC = (数据 + M(B) + 序号) 散列

A 跟踪 B 的序号,通过计算 MAC 的序号,验证记录的完整性

SSL 序号阻止了 重排序,重放报文段等中间人攻击

4. SSL 记录

SSL记录

前三个字段不加密

类型字段指出是握手报文还是包含应用数据的报文,也用于关闭 SSL 连接

长度字段提供接收方从 TCP 字节流提取 SSL 记录

8.6.2 更完整的描述

1. SSL 握手

SSL 没有强制使用某种特定的对称密钥算法、特定的公钥方式或特定的 MAC ,都在握手阶段在 SSL 会话开始时就密码算法取得一致,且发送不重数,用于 4 个会话密钥的生成

  1. 客户发送支持的密码算法列表,不重数

  2. 服务器从密码算法列表选择对称算法、公钥算法、 MAC 算法,再将算法选择和服务器不重数返回给客户

  3. 客户验证证书,提取公钥,生成前主密钥 PMS,使用服务器公钥加密 PMS,加密后发送给服务器

  4. 使用相同的密钥导出函数,客户和服务器独立地从 PMS 和不重数计算出主密钥 MS,再切片生成两个密码和两个 MAC 密钥,此后,客户和服务器之间发送的所有报文都被加密和鉴别 (使用 MAC )

  5. 客户发送所有握手报文的一个 MAC

  6. 服务器发送所有握手报文的一个 MAC

5 和 6 使握手不会受篡改,例如在客户发送密码算法列表时中间人可以删除复杂算法,迫使使用简单算法,而在 5 中客户发送一个已经发送和接收的握手报文的 MAC,服务器则比较此 MAC 与已接收和已发送的握手报文的 MAC,不一致则终止连接,服务器同理,允许客户检查

1 和 2 发送不重数:

序号不足来防止报文段重放攻击

不使用不重数时,中间人知道 A 与 B 的所有通话,则可以模仿 B 发送同样的报文序列,由于没有不重数,密钥是相同的,则 A 会验证成功中间人的报文,再发送相同的序列报文响应

使用不重数,每个 TCP 会话都会有不同的不重数,加密密钥则不同,则中间人的重复报文将会失效

在 SSL 中,不重数用于防御“连接重放”,序号用于防御一个进行中的会话中重放个别分组

2.连接关闭

B 或 A 要终止会话,简单方法是直接终止底层的 TCP 连接来结束该 SSL 会话,即 B 向 A 发送一个 TCP FIN 报文

此时中间人可能会进行攻击,在一个进行的 SSL 会话中使用 TCP FIN 结束会话;此刻 A 会认为已经收到 B 的所有数据但实际没有

解决:

在类型字段中指出该记录是否用于终止该 SSL 会话,虽然 SSL 类型字段是明文的,但接收方会使用 MAC 对记录进行鉴别,于是 A 在真正关闭之前收到 TCP FIN ,则会发现错误

标签:报文,TCP,计网,SSL,MAC,自顶向下,密钥,重数
来源: https://www.cnblogs.com/zephxu/p/14883360.html