【问题标题】:Difference between Exchange key and Signing key in Crypto APICrypto API 中交换密钥和签名密钥的区别
【发布时间】:2013-03-12 11:42:19
【问题描述】:

在 .NET 加密 API 中,我注意到 CspParameters 对象有一个 KeyNumber 属性,可用于指定密钥是签名密钥还是交换密钥。

就 RSA 密钥而言,两者之间有什么真正的区别吗?具体来说,如果我使用交换密钥进行签名,生成的密钥是否会使其不适合或不安全地用于该用途?

【问题讨论】:

  • 如何传输密钥? PFX/P12?代币?
  • @Raj - 我将密钥导出为 Csp Blob。从那里我将它们存储在数据库中,使用从用户密码派生的单独 AES 密钥加密私钥。

标签: .net security cryptography cryptoapi


【解决方案1】:

您不应使用交换密钥进行签名。 根据MSDN,交换密钥会分发给其他人,以便他们可以加密内容以发送给您。如果他们想对消息进行签名以表明他们发送了消息,那么他们将使用自己的Private key(签名密钥)进行签名,并使用您的公钥进行加密。用 Diffie-Hellman 术语来说,如果你用你的公钥签署东西,然后与其他人分发/交换它,他们将能够签署消息,使它们看起来像是来自你。只需将交换密钥视为您的公共密钥,将签名密钥视为您的私有密钥。

【讨论】:

  • 我认为这适用于如果您使用围绕存储密钥的内置安全性来定义谁可以访问密钥,他们是否可以使用私钥或公钥,以及用于什么目的.就我而言,我正在导出密钥以供其他地方使用,因此我对密钥本身的属性更感兴趣,而不是 Crypto API 管理密钥安全性的方式(希望这是有道理的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多