实际上,假设每个用户都想对自己进行身份验证和/或建立对之间的私人对话,那么您两个都错了。不幸的是,问题中缺少了这一假设。如果每个人都在使用(EC)DH,那么他们需要一个密钥对来通过建立会话密钥来建立通信。这意味着10乘2键= 20键。然而,密钥和密钥对往往是混淆的,因此教授实际上是在谈论后者,只计算私钥/密钥对,得出10正确的答案。
如果您建立了您信任的“主”用户,并且不需要实体身份验证,那么您是正确的。您只需要一个已知的私钥对,最初由主设置组分发。然后,您可以使用公钥加密会话密钥,只有拥有私钥的会话密钥才能解密。可以说,这不是非对称密码学的一个很好的例子:私钥现在是一个共享的秘密,这在对称密码学而不是非对称密码学中是很常见的。此方案要求共享私钥,否则敌手可以通过识别为您的朋友而加入。
请注意,仅拥有10个密钥对并不足以验证所有用户并设置1:1通信。它还需要信任公钥。身份验证就是证明您拥有(访问)一个私钥,该私钥属于另一个用户已知属于您的公钥。
请注意,我在第一节中讨论的是(EC)DH而不是RSA。在传输协议中设置(多个)会话密钥是常见的,而不是直接用公钥加密和用私钥解密。当然,除了非对称键之外,这还需要一组临时键。
只使用10个密钥对就可以执行加密/签名生成,因此不需要会话密钥。然而,这并没有遵循良好的密码实践。所以我决定不计算对称的会话密钥。