“雜湊比符號範式”是否適用於 ECDSA 密碼學?
從維基百科https://en.wikipedia.org/wiki/Digital_signature#How_they_work 和其他文章中,我看到:“簽署這樣的雜湊(或消息摘要)而不是整個文件有幾個原因。” 但它們與 RSA 有關。
Ed25519 簽名方案遵循這條規則有意義嗎?
**快速回答:**您不必對 Ed25519 的輸入進行散列,因為散列已經是 Ed25519 本身的一部分。如果您提前進行雜湊輸入,您在使用的雜湊函式中很容易受到衝突的影響。
更長的答案:
這個規則沒有意義,期間,因為散列是安全簽名方案的一個組成部分。設計原則是使用散列函式將消息壓縮成數學結構的元素,該元素可以與私鑰結合以產生可由相關公鑰驗證的簽名。這首先由Michael Rabin 在 1979 年描述。今天,每一個嚴肅的簽名方案都將消息的散列作為第一步,並有一些變化。任何試圖將“散列然後簽名”步驟分開的系統或教科書都是危險的。
下面是一個基於 RSA 的簽名方案的範例: A signature on a bit string $ m $ 在公鑰下 $ n $ , 一個具有大素因數的大整數, 是一個整數 $ s $ 這樣
$$ s^3 \equiv H(m) \pmod n, $$在哪裡 $ H $ 是一個從位串到下面正整數的隨機函式 $ n $ . 雜湊 $ H $ 是這個簽名方案的一個組成部分,因為如果你沒有使用它,而是使用了等式 $ s^3 \equiv m \pmod n $ ,然後我可以輕鬆偽造簽名 $ s = 0 $ 在消息上 $ m = 0 $ , 或者 $ s = 2 $ 在消息上 $ m = 8 $ . 指某東西的用途 $ H $ 意味著我不能在我的袖珍計算尺上使用計算整數立方的先進技術來偽造簽名,因為我沒有希望找到一個 $ m $ 具有任何規定的雜湊值。
在 Ed25519 的情況下,位串上的簽名 $ m $ 在公鑰下 $ A $ ,橢圓曲線上的一個點,是(粗略地,省略了編碼和輔因子的細節;有關更多詳細資訊和參考資料,請參閱維基百科文章)一對 $ (R, s) $ 一點的 $ R $ 在曲線上和一個整數 $ s $ 這樣
$$ [s]B = R + [H(R, A, m)]A, $$在哪裡 $ B $ 是曲線上的標準基點, $ H $ 是一個隨機函式,從兩個曲線點和一個位串到一個低於的順序的整數 $ B $ , 和 $ [s]B $ 等表示曲線上的標量乘法。 將每個簽名隨機化和公鑰一起散列增加了上述簡單的基於 RSA 的方案之外的一些安全性:每個簽名隨機化中的散列消除了對 $ H $ 在實際實現中具有抗衝突性(在使用 MD5 的實際系統中的失效已經產生了嚴重的後果),並且公鑰中的散列減輕了多目標攻擊並防止了密鑰的延展性——找到兩個不同的密鑰,在該密鑰下簽名是有效的.