2010-05-20 45 views

回答

1

X509證書包含一個公鑰。要加密,您使用從他們的證書中獲得的收件人的公鑰。爲了簽名,你可以使用你的私鑰,可能來自一個安全的商店。收件人使用您的公鑰驗證簽名,大概來自您的證書。這些是基礎知識。

+0

謝謝。我正在研究一些Windows Identity Foundation(WIF)代碼。我陷入了使框架行爲的細節中,使我忘記了我的證書的基礎知識! – 2010-05-21 02:37:52

5

發件人使用他自己的私鑰簽署消息。該消息用收件人公鑰加密。證書包含一個公鑰。據推測,發件人公鑰(對應於用於簽署郵件的發件人私鑰)也在證書中表示。

收件人使用他自己的私鑰(對應於他的證書中的公鑰)來解密傳入的郵件。收件人使用發件人公鑰(來自發件人證書)驗證簽名。

這就是說,你可以設想一個通用的場景,每個人都可以發送和接收電子郵件。因此,每個人都有一個用於加密和解密電子郵件的密鑰對(公共部分在證書中)(Bob的公鑰用於加密發送給Bob的電子郵件,Bob使用相應的私鑰解密它們,即讀取電子郵件)。 還有,每個人都有簽名的密鑰對(Bob使用他的私鑰簽署他發送的消息,Alice使用Bob的公鑰來驗證Bob聲稱計算的簽名)。 問題是:鮑勃是否有兩個密鑰對(一個用於加密/解密,另一個用於簽名/驗證),或者只有一個密鑰對用於這兩個工作?

恰巧RSA公開加密算法和RSA簽名算法可以使用相同類型的密鑰,稱爲(相當邏輯上)「RSA密鑰」。所以這是可行的,實際上它經常發生。

但是,一般來說,簽名密鑰和加密密鑰具有不同的生命週期和管理程序。在業務環境中,方向保存所有用於加密的私鑰的安全副本,因爲丟失加密密鑰意味着丟失數據。員工可能變得「不可用」(員工被解僱,員工退休,員工被公交車撞上......)。相反,當簽名密鑰丟失時,以前發出的簽名仍然有效且可驗證,因此只需創建一個新的密鑰對即可生成其他簽名。此外,數字簽名可能會獲得強有力的法律地位,只有在某處安全密鑰的副本有。所以一般的建議是將加密和簽名密鑰分開。對兩者使用相同的密鑰是一種近似,可能會產生不必要的副作用(如數據丟失或缺乏合法價值)。根據具體情況,這可能會也可能不會成爲問題。

+0

謝謝你解決這個inteersting方面。然而,你的意思是'解密'在'方向保存所有用於加密的私鑰的安全副本',不是嗎? – efie 2014-02-16 21:51:03