Rsa

如何在 RSA 數字證書驗證中使用消息摘要雜湊

  • May 6, 2020

這就是我理解數字簽名驗證的一般工作方式:

  1. 明文通過散列機制執行以生成消息摘要(IBM 的術語,散列數據似乎還有很多其他術語)。
  2. 消息摘要使用發件人的私鑰進行加密。
  3. 加密的消息摘要和明文都發送給收件人。
  4. 收件人使用發件人的公鑰解密消息摘要。
  5. 明文通過散列機制執行以生成消息摘要,如步驟 1 所示。
  6. 如果散列明文和解密消息摘要相同,則測試通過。

我無法弄清楚這個過程是如何專門應用於數字證書的 RSA 驗證的。我找不到明文!如果它是為每個請求隨機生成的,那麼在證書中擁有來自分配 CA 的數字簽名有什麼意義呢?如果不是,那麼驗證證書的人在哪裡獲得明文來比較簽名?我看不出它是證書的一部分。

那麼,首先,我是否了解適用於數字證書驗證的一般簽名驗證過程?如果我這樣做了,有人可以為我解決“失去明文之謎”嗎?

讓我們修復簽名生成的描述。請閱讀PKCS#1 v2.2 規範以獲取完整的詳細資訊。

  1. 規範二進制明文通過散列機制執行以生成消息摘要(IBM 的術語,散列數據似乎還有很多其他術語)。
  2. 消息摘要用作配置的填充機制的輸入。
  3. 二進制填充消息摘要轉換為數字。
  4. 直接或使用中國剩餘定理將數字提高到以模模為模的私有指數的冪。
  5. 該數字被轉換回二進制,其字節大小與模數相同,給出簽名。
  6. 明文和生成的簽名都發送給收件人。

正如你所看到的,我不得不重寫大部分內容。模冪運算通常被視為“用私鑰部分加密”,但這本身就是一個矛盾;這只是一個類似的操作,PKCS#1 v2 特意解釋了這一點。有關更多資訊,請參閱我的 Q/A此處

我無法弄清楚這個過程是如何專門應用於數字證書的 RSA 驗證的。我找不到明文!

該證書包含一個待簽名 (TBS) 部分。這可以在 X.509v3 標準中找到。這是上述簽名生成方案中的明文:

The signatureValue field contains a digital signature computed upon
the ASN.1 DER encoded tbsCertificate.  The ASN.1 DER encoded
tbsCertificate is used as the input to the signature function.  This
signature value is encoded as a BIT STRING and included in the
signature field. 

如果它是為每個請求隨機生成的,那麼在證書中擁有來自分配 CA 的數字簽名有什麼意義呢?如果不是,那麼驗證證書的人在哪裡獲得明文來比較簽名?我看不出它是證書的一部分。

它只是數據,沒有指針,如:這是二進製或文本描述中的明文。

那麼,首先,我是否了解適用於數字證書驗證的一般簽名驗證過程?如果我這樣做了,有人可以為我解決“失去明文之謎”嗎?

當然見上。但大部分內容最好通過閱讀標准文件來了解。如果你這樣做了,那麼神秘就不會存在。

引用自:https://crypto.stackexchange.com/questions/80508