-
PGP 使用了数字签名,而不是 MAC
-
A 给 B 发 PGP 的加密流程如下:
-
A 使用 Ks 加密报文 m,得到 Ks(m),A 使用 B 的公钥 Kb+ 加密该对称密钥 Ks,得到
Kb+(Ks)
,组合两者形成一个包 P1,P1 包内容是[Ks(m) + Kb+(Ks)]
。 -
上述步骤提供了机密性,接下来提供完整性和发送者鉴别性。使用摘要算法 SHA 或者 MD5 计算出 P1 的摘要信息
MAC(P1)
,使用 A 的私钥加密该摘要信息得到 数字签名Ka-(MAC(P1))
,然后组合形成一个包 P2,P2 包的内容是(P1 + Ka-(MAC(P1)))
。
-
-
B 收到 A 发送的 PGP 的解密流程如下:
-
用 Ka+ 解密
Ka-(MAC(P1))
得到MAC(P1)
,用摘要算法计算MAC(P1)'
,比较MAC(P1) == MAC(P1)'
,若相等,则报文完整性得到鉴别,并且能够证明此报文确实来自 A。 -
用 Kb- 解密
Kb+(Ks)
得到 Ks,然后用 Ks 解密 Ks(m) 得到 m。
-
- SSL 的流程如下:
- 握手
- TCP 三次握手
- C 向 S 发送支持的加密算法列表,以及一个不重数
- S 向 C 发送确认的加密算法,一个不重数,以及自己的证书
- C 生成一个随机数
Pre-Master Secret
,然后从 S 的证书中提取出 S 的公钥,使用该公钥加密随机数,然后发送给 S。 - S 收到该随机数,然后告知 C,接着 S 和 C 使用相同的密钥导出函数生成四个密钥。Ec, Mc, Es, Ms。
- C 向 S 发送发送和接收的所有报文的 MAC
- S 收到该 MAC,然后与自己的记录校验,如果没有发现篡改,则 ACK 给 C
- S 也向 C 发送发送和接收到的所有报文的 MAC
- C 收到该 MAC,然后与自己的记录校验
- 加密数据通信
| 类型 | 版本 | 长度 | 数据 | MAC | <== SSL 记录项
- 发送端维护一个 SSL 的发送序号,对于每一个 TCP 报文段,使用【序号】+【数据】+【Mc】计算出一个 MAC,添加在数据字段的尾部,然后用 Ec 加密 【数据 + MAC】,然后添加类型,版本,长度构成一个 SSL 记录项。
- 接收端维护一个 SSL 的接收序号,对于每一个 SSL 记录项,使用 Ec 解密得到【数据项 + MAC】,使用【序号】+【数据】+【Mc】计算出 MAC',以此来验证数据没有遭到篡改。
- 握手
* 从上面的流程可以看出,SSL 的记录项中,没有字段用于 SSL 序号,SSL 序号是用来防止中间人重排序攻击的,它用来加入 MAC 的计算中。
- 防止重放攻击。用过的不重数在一定期间内不会再被使用。
- 服务器不会以明文向客户端发送 IV,客户端在密钥导出阶段独立的使用 Pre-Master Secret 生成四个通信密钥和 IV (如果使用了 CBC 块密码的话)。
R23 假设 Bob 向 Trudy 发起了一条 TCP 连接,而 Trudy 正在伪装她是 Alice。在握手期间,Trudy 向 Bob 发送 Alice 的证书。在 SSL 握手算法的哪一步,Bob 将发现他没有与 Alice 通信?
- Bob 给 Trudy 发送支持的加密算法列表,以及一个不重数
- Trudy 给 Bob 确认加密算法,以及一个不重数,以及 Alice 的证书
- Bob 提取了 Alice 的公钥,加密 PMS,然后发送给 Trudy,因为 Trudy 没有 Alice 的私钥,所以无法得到 PMS,然后他随机选了一个 PMS'。接着双方导出各自的 4 个密钥。
- 在最后的所有发送和接收报文的 MAC 发送阶段,Bob 测试 MAC 失败,断开与 Trudy 的连接。(计算该 MAC 时使用了使用 PMS 生成的 4 个密钥)。
- 错误,SA 首先在主机 A 和主机 B 之间建立,就像 TCP 一样,之后该条连接的每个分组都使用同一个 SA
R25 假设在图 8-28 中总部和分支机构之间通过 IPsec 运行 TCP。如果 TCP 重新传输相同的分组,则由 R1 发送的两个对应的分组将在 ESP 首部中具有相同的序号。这种说法是正确还是错误?
- 错误,IPsec 将会增加每个它所发送 IP 数据报的序号字段。
- 错误,一个 IKE SA 用于创建一个或多个 IPsec SA
ci = di XOR ki = 10101100 XOR 11110000 = 01011100
- 正确