2013-03-22 130 views
4

在.NET加密API中,我注意到CspParameters對象具有KeyNumber屬性,可用於指定密鑰是簽名密鑰還是交換密鑰。加密API中的Exchange密鑰和簽名密鑰之間的區別

就RSA密鑰而言,兩者之間是否存在真正的區別?特別是,如果我使用交換密鑰進行簽名,那麼生成的密鑰會有什麼不合適的或不安全的用法?

+0

如何運輸鑰匙? PFX/P12?令牌? – Raj 2013-03-27 14:49:54

+0

@Raj - 我將密鑰導出爲Csp Blob。從那裏我將它們存儲在數據庫中,私鑰使用從用戶密碼派生的單獨AES密鑰加密。 – 2013-03-27 14:51:36

回答

1

您不應該使用交換密鑰進行簽名。 每MSDN,交換密鑰分發給其他人,以便他們可以加密內容發送給你。如果他們想簽署郵件來表明他們發送了郵件,那麼他們會使用自己的Private key(簽名密鑰)簽名,並使用您的公鑰進行加密。在Diffie-Hellman術語中,如果您使用公鑰簽名並隨後與其他人分發/交換,他們將能夠簽名消息,使其看起來像來自您。只需將交換密鑰視爲您的公衆,並將簽名密鑰視爲您的私人密鑰。

+0

我認爲這適用於如果您使用圍繞存儲密鑰的內置安全性來定義誰不能訪問密鑰,是否可以使用私鑰或公鑰以及用於什麼目的的情況。在我的情況下,我出口的密鑰在其他地方使用,所以我對密鑰本身的屬性更感興趣,而不是Crypto API管理密鑰周圍的安全性的方式(希望是有道理的) – 2013-03-22 15:11:07