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

下一代加密技术 (CNG) 安全通信示例针对中间人攻击的加密解决方案进行建模,它模拟虚构广告公司中的三人 Alice、Bob 和 Mallory 之间的通信。该示例使用 CNG 类(一个命名管道传输)和交互式控制台窗口来演示针对中间人攻击的安全解决方案。

这是一个高级示例,假定您熟悉加密、进程间通信和网络安全。

备注

CNG 类只能在 Windows Vista 及后续 Windows 操作系统上使用。

本主题概述 CNG 示例,它讨论了以下内容:

  • 示例方案

  • IM 工具的安全漏洞

  • 版本 1:命名管道

  • 版本 2-5:依次增加安全改进

  • 测试结果

  • 代码示例

  • 命名约定

  • 详细信息

示例方案

一家广告公司开发了一个在桌面上运行的即时消息 (IM) 工具。所有员工都能够查看进入该工具的消息。

Alice 和 Bob 在销售部门工作。他们使用 IM 工具互相发送销售联系人信息。Mallory 是一名从事系统运营工作的网络工程师。他一直秘密监视着 Alice 和 Bob 的消息。为了个人利益,他每个月复制一次有价值的销售联系人信息并将它们卖给竞争对手。

几个月后,公司发现有人在窃取销售联系人信息,并且部门间的通信被破坏了。公司决定开发一个新的 IM 工具,他们从分析当前工具的安全性开始。

IM 工具的安全漏洞

公司意识到当前的 IM 工具有以下安全漏洞:

  • 传输纯文本(非加密)消息。

  • 通过企业网络广播这些消息。

  • 任何人都可以查看甚至记录这些消息。

公司认为新的 IM 工具可以通过在企业网络上启用点对点通信来解决这些问题。

版本 1:命名管道

公司开发了一个新的 IM 工具,该工具依赖命名管道(或通道)来进行进程间通信 (IPC)。此版本不使用加密或数字签名。

向 Alice 和 Bob 说明以下事项:

  1. 在名为 PublicChannel 的通道上建立一个初始连接。

  2. 将各自的专用通道的名称发送给对方,然后立即从 PublicChannel 断开连接。

  3. 使用专用通道连接,并互相发送销售联系人信息。

公司希望点对点信道可提供与企业网络其余部分的充分隔离,但很快就意识到这一解决方案并不充分。Mallory 发现了如何攻进新系统。他继续窃取销售联系人信息,并开始谨慎地更改销售联系人的地址来掩饰他的罪行。

公司决定向 IM 工具添加安全防护措施来阻止这种窃取行为。

版本 2 至 5:依次增加安全改进

新软件经过了若干个月的测试和增强。到测试完成时,已经创建了 IM 工具的四个附加版本。每个版本都以前一版本为基础:

  • 版本 2 采用了基于 CNG 的加密,该加密技术使用公钥/私钥对。

  • 版本 3 使用数字签名来签署加密密钥和消息。

  • 版本 4 添加了专用通道来传输数字签名,并用数字签名来签署加密密钥和消息。

  • 版本 5 通过结束所有接收带有无效签名的签名密钥的 IM 会话来阻止入侵。

测试结果

版本 2 使用了一种高安全性的加密算法。破解此加密算法需要大量的资源和时间。因此,当公司得知该解决方案被破坏时很惊讶。

版本 3 使用的数字签名也不能防止窃取行为。但是,该版本帮助公司获得了一个重要的发现:如果加密密钥和数字签名被截获并替换,则用来传输密钥和签名的通道一定是问题的根源。

通过将专用通道添加到版本 4 来传输数字签名验证了这一想法。如果密钥或消息具有无效签名,则版本 4 也将显示一则警告。版本 4 只给了公司的两个人:Alice 和 Bob。一旦 Alice 和 Bob 发送了第一条消息,就开始显示安全警告。公司最后发现,他们的网络正在遭受中间人攻击。

版本 5 与版本 4 相同,但版本 5 在第一次发生安全冲突时就结束会话。该版本一安装,窃取销售联系人信息的行为就停止了。

代码示例

在该示例中提供的代码模拟了这五个安全版本。源代码概述(CNG 示例)中提供了代码概述。

备注

该示例不提供全面的安全解决方案。其唯一目的是在一个看似可信的安全方案中演示 CNG API。完整的安全应用程序超出了本示例的范围。

命名约定

本示例的文档涉及五个软件版本和以数字标示的对应安全级别(例如,“版本 1”、“版本 2”等等)。

“Alice”、“Bob”和“Mallory”这三个名称可能是指本示例场景中涉及的三个人,也可能是指三个 Visual Studio 应用程序,具体取决于上下文。为简洁起见,文档使用同一名称来指代二者。例如,“Alice 自动加载 Bob 和 Mallory”指 Alice 应用程序自动加载 Bob 应用程序和 Mallory 应用程序。

详细信息

以下主题提供了关于示例方案和代码的深入信息:

请参见

概念

加密服务

.NET Framework 加密模型

加密服务

其他资源

加密任务