分步执行密钥和消息交换(CNG 示例)

加密公钥/私钥解决方案易受中间人攻击。这些攻击采用多种形式,包括侦听、替换、拒绝服务和仿冒。下一代加密技术 (CNG) 安全通信示例演示了替换,即第三方 (Mallory) 将自身插入到两个通信终结点(Alice 和 Bob)之间。

下面几节提供了背景信息、插图以及 CNG 示例概述中讨论的五个安全版本的分步说明:

  • 版本 1:基本消息交换

  • 版本 2:未签名密钥和未签名消息的交换:

    • 不带截获

    • 带截获

  • 版本 3:签名密钥和签名消息的交换

  • 版本 4:带检测的签名密钥和签名消息交换

  • 版本 5:带应用程序终止的签名密钥和签名消息交换

版本 1:基本消息交换

下图演示了 Alice 和 Bob 在没有中间人攻击时发送消息的情况。消息没有加密或进行数字签名。选择版本 1 时,CNG 示例将演示此过程。插图后提供了此过程的分步说明。

版本 1:基本消息交换

版本 1:基本消息交换

Alice 和 Bob 发送未加密、未签名的消息

1.Alice 创建一条消息。

2.Alice 将该消息发送给 Bob。

3.Bob 收到 Alice 的消息。

4.Bob 创建一条消息。

5.Bob 将该消息发送给 Alice。

6.Alice 收到 Bob 的消息。

版本 2:不带截获的未签名密钥和未签名消息

下图演示了无中间人攻击的密钥和消息交换。选择版本 2 并关闭 Mallory 的截获时,CNG 示例将演示此过程。插图后提供了此过程的分步说明。

版本 2:不带截获的未签名密钥和未签名消息

版本 2:带截获的未签名密钥和未签名消息

Alice 和 Bob 创建各自的密钥

1.Alice 生成一个公钥/私钥对。

2.Alice 将其公钥发送给 Bob。

3.Bob 存储 Alice 的公钥。

4.Bob 生成一个公钥/私钥对。

5.Bob 将其公钥发送给 Alice。

6.Alice 存储 Bob 的公钥。

Alice 和 Bob 派生匹配的密钥材料

7.Alice 使用自己的私钥和 Bob 的公钥生成一个共享机密协议。她使用该共享机密协议来派生密钥材料。

8.Bob 使用自己的私钥和 Alice 的公钥生成同样的共享机密协议。他使用该共享机密协议派生与 Alice 同样的密钥材料。

有关共享机密协议和密钥派生的更多信息,请参见 ECDH 算法概述(CNG 示例)

Alice 和 Bob 互相发送消息

9.Alice 创建一条消息并用密钥材料对它进行加密。

10.Alice 将该加密消息发送给 Bob。

11.Bob 接收并解密该消息。

12.Bob 创建一条消息并用密钥材料对它进行加密。

13.Bob 将该消息发送给 Alice。

14.Alice 接收并解密该消息。

版本 2:带截获的未签名密钥和未签名消息

下图演示了有中间人攻击的密钥和消息流。选择版本 2 并启用 Mallory 的截获时,CNG 示例将演示此过程。

版本 2:带截获的未签名密钥和未签名消息

版本 2:带截获的未签名密钥和未签名消息

Mallory 模拟 Bob

1.Alice 生成一个公钥/私钥对。

2.Alice 将其公钥发送给 Bob。

3.Mallory 截获并存储 Alice 的公钥。

4.Mallory 生成他自己的公钥/私钥对以用于 Alice。

5.Mallory 将他的公钥发送给 Alice,诱使她认为此公钥来自 Bob。

6.Alice 存储 Mallory 的公钥,以为这是 Bob 的。

直到完成了与 Alice 的密钥交换之后,Mallory 才建立与 Bob 的通道。这样做是因为他与 Alice 共享 PublicChannel(请参见源代码概述)。他需要先向 Alice 发送他的替换密钥,然后才能关闭再重新打开 PublicChannel,然后与 Bob 连接。

将此与步骤 17-22 进行比较。在步骤 17-22 中,Alice 发送的消息直接传输给 Bob。

Mallory 模拟 Alice

7.Mallory 生成另一个公钥/私钥对以用于 Bob。

8.Mallory 将其公钥发送给 Bob。

9.Bob 存储 Mallory 的公钥,以为这是 Alice 的。

10.Bob 生成一个公钥/私钥对。

11.Bob 将其公钥发送给 Alice。

12.Mallory 截获并存储 Bob 的公钥。

Alice 和 Mallory 派生匹配的密钥材料

13.Alice 使用自己的私钥和她以为是 Bob 的公钥(实际是 Mallory/Alice 公钥)生成一个共享机密协议。她使用该共享机密协议派生 Mallory/Alice 密钥材料。

14.Mallory 使用自己的私钥和 Alice 的公钥生成同样的共享机密协议。然后使用该共享机密协议派生与 Alice 相同的密钥材料。

Bob 和 Mallory 派生匹配的密钥材料

15.Mallory 使用自己的私钥和 Bob 的公钥生成一个共享机密协议。他使用该共享机密协议派生 Mallory/Bob 密钥材料。

16.Bob 使用自己的私钥和他以为是 Alice 的公钥(实际是 Mallory/Bob 公钥)生成同样的共享机密协议。然后他使用该共享机密协议派生与 Mallory 相同的密钥材料。

备注

步骤 13 和步骤 16 之后,Alice 和 Bob 以为他们共享的是同一密钥材料。实际上,他们不是彼此共享密钥材料,而是与 Mallory 共享密钥材料。

Alice 给 Bob 发送一条消息

此时,Mallory 有两条打开的管道可用,能够参与双重对话。这与步骤 1-6 不同。在步骤 1-6 中,Mallory 一次打开一条通道来截获加密密钥。

17.Alice 生成一条消息,并使用她在步骤 13 中生成的 Mallory/Alice 密钥材料加密此消息。她将一个潜在销售联系人的信息告诉给 Bob。

18.Alice 将该消息发送给 Bob。

19.Mallory 截获并解密该消息。他窃取了该联系人信息。

20.Mallory 根据 Alice 的消息生成一条假消息,但是他更改了联系人地址。他使用共享的 Mallory/Bob 密钥材料加密这条假消息。

21.Mallory 将该消息发送给 Bob。

22.Bob 解密该消息,以为它来自 Alice。

Bob 给 Alice 发送一条消息

23.Bob 生成一条消息,并使用他在步骤 16 中生成的 Mallory/Bob 密钥材料加密此消息。他告诉 Alice 他期待与这个联系人见面。

24.Bob 将该消息发送给 Alice。

25.Mallory 截获、解密并丢弃了该消息。

26.Mallory 使用共享的 Mallory/Alice 密钥材料生成一条假消息。他告诉 Alice 他认为这个销售联系人的地址不正确,但是他会继续尝试联系此联系人。

27.Mallory 将该消息发送给 Alice。

28.Alice 解密该消息,以为它来自 Bob。她接受了他的说明,并继续处理其他客户。

版本 3:带截获的签名密钥和签名消息

下图演示了加密密钥和消息流、中间人攻击和使用数字签名来签署密钥和消息。选择版本 3 并启用 Mallory 的截获时,CNG 示例将演示此方案。

版本 3:带截获的签名密钥和签名消息

版本 3:带输入的签名密钥和签名消息

除了演示使用数字签名来签署消息和加密密钥外,版本 3 与版本 2 完全相同。

在步骤 1-6 中,Alice 在不安全的 PublicChannel 上发送数字签名密钥,该密钥在此通道被 Mallory 截获,Mallory 用它来签署其替换密钥和消息。结果,Alice、Bob 和 Mallory 使用同一数字签名密钥。当 Alice 和 Bob 在步骤 15、20、35 和 42 中验证密钥和消息签名时,没有检测到 Mallory 的截获。

版本 4:带检测的签名密钥和签名消息

下图演示了加密密钥和消息流、中间人攻击和使用数字签名来签署密钥和消息。此外,版本 4 软件还检测到无效签名。选择版本 4 并启用 Mallory 的截获时,CNG 示例将演示此方案。

版本 4:带检测的签名密钥和签名消息

版本 4:带检测的签名密钥和签名消息

版本 4 和版本 3 存在以下不同:

  • 版本 4 软件只给了 Alice 和 Bob。

  • 版本 4 发送在版本 3 中使用的数字签名密钥,但将其视为假密钥。

  • 版本 4 使 Alice 可以通过 Mallory 并不知道的一个专用通道给 Bob 发送另一个数字签名密钥。(这是上图中的步骤 0。)Alice 和 Bob 使用该专用数字签名来签署各自的密钥和消息。

  • 版本 4 在步骤 15、20、35 和 42 中检测到 Mallory 的无效签名,并显示安全警告。

Mallory 继续使用版本 3 的数字签名来签署其替换密钥和消息。因此:

  • 他不知道版本 4 的数字签名私钥。

  • 他没有接收到安全警告。

  • 他不知道 Alice 和 Bob 能够检测到他的无效密钥和消息签名。

版本 5:带会话终止的签名密钥和签名消息

下图演示了加密密钥和消息流、中间人攻击和使用数字签名来签署密钥和消息。与版本 4 一样,检测到了无效签名。选择版本 5 并启用 Mallory 的截获时,CNG 示例将演示此方案。

版本 5:带终止的签名密钥和签名消息

版本 5:带会话终止的签名密钥和签名消息

除了在 Alice 和 Bob 接收到带有无效数字签名的加密公钥时结束会话以外,版本 5 与版本 4 完全相同。

请参见

概念

下一代加密技术 (CNG) 安全通信示例

加密服务