虽然 2 方公钥加密在 .net 框架中得到了很好的布局,但我非常关心 n 方。例如保护两方视频会议。沟通很容易:
1) 每一方生成会话特定的 RSA 密钥对,并获得由受信任的权威机构(即受信任的服务器)签名的公钥。2)每一方交换密钥,ECDiffieHellmanCng
因此连接现在既真实又安全(认为他们使用Vista/W7)。
现在向此通信添加第三个参与者将不起作用,因为密钥交换算法旨在仅从 2 个公钥派生共享密钥(尤其是使用 .NET 和 BouncyCastle)。所以问题是,您将如何实施仍然是真实的(即抵抗中间人攻击)和安全(即防止窃听)的 n 方公钥加密模式。
编辑:目前的想法如下,我将继续实现最受欢迎的一个作为NBusy.Communicator库的一部分:
- 使用两方通信方案,其中一方充当联合服务器。
- 发起两方通信,让一方对第三方进行身份验证并共享秘密/对称密钥。
- 使用多方密钥协议方案。
Edit2:我将使用“n-Party Diffie Hellman”算法,类似于此处描述的算法,但有一些修改: http: //www.codeproject.com/KB/cs/diffy_helman.aspx