如果我想使用X509證書對消息進行簽名和加密,是否有任何理由不使用相同的證書進行加密和簽名?使用RSA加密,我應該使用相同的證書來簽署和加密消息嗎?
更新:回想起來,我認爲這一定是我曾經問過的最頭髮的問題。對不起。
如果我想使用X509證書對消息進行簽名和加密,是否有任何理由不使用相同的證書進行加密和簽名?使用RSA加密,我應該使用相同的證書來簽署和加密消息嗎?
更新:回想起來,我認爲這一定是我曾經問過的最頭髮的問題。對不起。
X509證書包含一個公鑰。要加密,您使用從他們的證書中獲得的收件人的公鑰。爲了簽名,你可以使用你的私鑰,可能來自一個安全的商店。收件人使用您的公鑰驗證簽名,大概來自您的證書。這些是基礎知識。
發件人使用他自己的私鑰簽署消息。該消息用收件人公鑰加密。證書包含一個公鑰。據推測,發件人公鑰(對應於用於簽署郵件的發件人私鑰)也在證書中表示。
收件人使用他自己的私鑰(對應於他的證書中的公鑰)來解密傳入的郵件。收件人使用發件人公鑰(來自發件人證書)驗證簽名。
這就是說,你可以設想一個通用的場景,每個人都可以發送和接收電子郵件。因此,每個人都有一個用於加密和解密電子郵件的密鑰對(公共部分在證書中)(Bob的公鑰用於加密發送給Bob的電子郵件,Bob使用相應的私鑰解密它們,即讀取電子郵件)。 還有,每個人都有簽名的密鑰對(Bob使用他的私鑰簽署他發送的消息,Alice使用Bob的公鑰來驗證Bob聲稱計算的簽名)。 問題是:鮑勃是否有兩個密鑰對(一個用於加密/解密,另一個用於簽名/驗證),或者只有一個密鑰對用於這兩個工作?
恰巧RSA公開加密算法和RSA簽名算法可以使用相同類型的密鑰,稱爲(相當邏輯上)「RSA密鑰」。所以這是可行的,實際上它經常發生。
但是,一般來說,簽名密鑰和加密密鑰具有不同的生命週期和管理程序。在業務環境中,方向保存所有用於加密的私鑰的安全副本,因爲丟失加密密鑰意味着丟失數據。員工可能變得「不可用」(員工被解僱,員工退休,員工被公交車撞上......)。相反,當簽名密鑰丟失時,以前發出的簽名仍然有效且可驗證,因此只需創建一個新的密鑰對即可生成其他簽名。此外,數字簽名可能會獲得強有力的法律地位,只有在某處安全密鑰的副本有否。所以一般的建議是將加密和簽名密鑰分開。對兩者使用相同的密鑰是一種近似,可能會產生不必要的副作用(如數據丟失或缺乏合法價值)。根據具體情況,這可能會也可能不會成爲問題。
謝謝你解決這個inteersting方面。然而,你的意思是'解密'在'方向保存所有用於加密的私鑰的安全副本',不是嗎? – efie 2014-02-16 21:51:03
謝謝。我正在研究一些Windows Identity Foundation(WIF)代碼。我陷入了使框架行爲的細節中,使我忘記了我的證書的基礎知識! – 2010-05-21 02:37:52