簡體   English   中英

X509證書,DigitalSignature與不可否認(C#)

[英]X509 Certificates, DigitalSignature vs NonRepudiation (C#)

我們已經在智能卡上獲得了一組測試證書,以開發一種要求使用PKI對XML消息進行簽名的解決方案。 每個(物理)智能卡似乎都存儲有兩個證書。 我使用智能卡提供程序提供的軟件將它們導入Windows證書存儲,然后使用類似於以下代碼的代碼遍歷已安裝的證書:

foreach (X509Certificate2 x509 in CertStore.Certificates) {
  foreach (X509Extension extension in x509.Extensions) {
     if (extension.Oid.Value == "one we are interested in") {
        X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
        if ((ext.KeyUsages & X509KeyUsageFlags.DigitalSignature) != X509KeyUsageFlags.None) {
            // process certs here

我們被告知使用設置了不可否認密鑰使用標志的證書來對XML進行簽名。 但是,具有NonRepudiation標志的證書具有此標志,而不是我上面檢查過的DigitalSignature標志。 這會打擊我以外的人嗎? 換句話說,我被告知要使用未(似乎)未設置DigitalSignature使用標志的證書進行簽名。 這是正常程序嗎? 任何意見?

謝謝。

它有什么主要用途? 沒錯,這有點奇怪,但是,例如,如果密鑰用於提供AD登錄,則可能未設置用於DigitalSignature的標志。 這並不是說您不能為此使用它,僅表示當您超出密鑰指示的使用范圍時,證書頒發者不提供任何保證。

當我閱讀RFC 5280 (4.2.1.3)時,不可否認是digitalSignature的超集。 換句話說,它授予了DigitalSignature的所有功能,然后授予了某些功能。 因此,從技術上講,他們要求的是有效的,盡管可能與眾不同。

如果要提供不可否認性服務,即您希望簽名具有LEGAL值,則應該僅使用不可否認性。 實際上,這是標准推薦的標准(請參閱ETSI TS 102 280),因為將其他keyUsage位與nonRepudation一起使用可能會帶來安全問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM