2016-11-09 71 views
0

我無法理解證書是如何知道被鏈接到私鑰的。例如,在窗口中,當您點擊來自智能卡的證書時,它會顯示「您擁有與此證書相對應的私鑰」。證書如何知道這一點?我一直在閱讀RFC5280,但是我沒有看到X509證書中指定證書是否連接到私鑰的任何字段。我錯過了什麼?x509證書如何知道被鏈接到私鑰?

回答

2

一般來說,任何公鑰都包含在其私鑰中。無論操作系統,存儲機制還是庫,只要給出一個X.509證書和一個私鑰,就可以從私鑰中提取公鑰值,並將其與證書中的公鑰值進行比較。如果它們匹配,則私鑰與證書一起屬於。

例如,RSA私鑰由

  1. PublicExponent的
  2. 模量
  3. Prime1
  4. Prime2
  5. Exponent1 [可選]
  6. Exponent2 [可選]
  7. 係數[可選]
  8. PrivateExponent [可選]

前兩個,PublicExponent和Modulus構成公鑰並存儲在X.509證書中。 (上面的可選字段可以從前4個字段計算出來,但通常包含在私鑰中,因爲需要很多CPU來計算它們)

對於您的具體示例,MMC證書管理單元查詢Crypto API(CAPI)用於安裝的證書。 CAPI使用加密服務提供商(CSP)模塊,可以提供證書存儲等。作爲CSP證書存儲規範的一部分,商店爲每個存儲的證書提供一個屬性「PP_Container」。該屬性告訴CAPI持有匹配私鑰的CSP容器的名稱(如果有的話)。這種「分離」允許將私鑰存儲在智能卡或硬件安全模塊上,而證書則存儲在Windows系統本身上。

+0

非常好的解釋,謝謝! –

1

它取決於操作系統和/或使用加密庫。在Windows的情況下,證書存儲在證書存儲區中。證書存儲支持存儲附屬屬性,可以提供CSP和密鑰容器信息。當您在商店中打開證書時,MMC會讀取附加的證書屬性並確定是否存在關聯的私鑰。