Public-Key

在 ECDSA 中使用不同的散列函式

  • November 17, 2020

我遇到了一個 IC 設備配置和安全流程,詳細資訊如下圖所示。我想知道 ECDSA 必須與 SHA 散列函式配對嗎?

或者,如果使用 AES-GCM 生成 CIPHER 和TAG怎麼辦?GF 生成的TAG之後經過 ECDSA 用私鑰加密。

因此,從解密方面來看,它的工作原理與圖像完全相同,只是用 AES-GCM 引擎替換了 SHA 引擎。我想知道為什麼這在所有行業實踐中都不常見?

或者我上面描述的方案會有什麼問題嗎?

在此處輸入圖像描述

我將首先解決圖表的問題;

加密部分

儘管提到加密是可選的

  1. 沒有提及如何生成 AES 密鑰。常用的方法是 Diffie-Hellman 密鑰交換,它的橢圓曲線版本是首選 ECDH。
  2. 沒有提及操作模式。CBC,點擊率,GCM,…等。
  3. 沒有提到 nonce/IV 代。隨機數生成至關重要;
  • 在 CBC 中它必須是不可預測的
  • 在 CTR 和 GCM 中,(IV,key) 對不應使用超過一次。

ECDSA部分;

  1. 命名是完全錯誤的。我們使用簽名和驗證,這些過程與加密和解密完全不同,即使在 RSA 中也是如此。簡而言之,RSA 解密不是簽名。
  2. 驗證部分錯誤。只發送簽名部分,ECDSA驗證過程中籤名和消息必須同時存在。他們傾向於使它對稱,但這是錯誤的。

問題

我想知道 ECDSA 必須與 SHA 散列函式配對嗎?

他們沒有顯示那裡使用了哪條曲線。如果使用像 P521 或 Goldilocks 這樣的曲線,則可能需要像 SHAKE128-512 系列這樣的 XOF,或者使用 SHA256 作為 CTR 模式來生成多個塊來支持所有曲線需求。

或者,如果使用 AES-GCM 同時生成 CIPHER 和 TAG 怎麼辦?GF 生成的 TAG 之後經過 ECDSA 用私鑰加密。

AES-GCM 不會產生數字簽名,只有在正確使用的情況下才能提供機密性、完整性和身份驗證。AES-GCM 不能提供不可否認性。對於數字簽名,您需要一個數字簽名算法。

或者我上面描述的方案會有什麼問題嗎?

如果不需要數字簽名,那就沒問題了。AES-GCM 有更好的選擇;AES-GCM-SIV 是一種防止隨機數誤用的方案。如果使用相同的 (key,IV) 對再次發送相同的消息,這只會洩漏再次發送相同的消息。

或者我上面描述的方案會有什麼問題嗎?

AES 密鑰是公開的嗎?如果是,那麼很容易生成兩條具有相同標籤的消息(因此會像衝突一樣)。

如果簽名者和驗證者都知道 AES 密鑰?如果是的話,那麼,為什麼還要為 ECDSA 操心呢?如果您有共享密鑰,您可以使用比 ECDSA(或任何其他公鑰簽名操作)效率更高的消息驗證碼(例如 HMAC、CMAC、GMAC)。

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