Public-Key

如果沒有散列函式,ECDSA 還能工作嗎?

  • November 18, 2020

根據維基百科 ECDSA 主題的演練步驟,如下所示,如果我們不對原始消息應用散列函式(圖中以藍色突出顯示)會產生什麼影響?

雖然這聽起來有點傻,但假設我們有或沒有 SHA256 引擎測試案例,如下所示。

十六進制消息(256 位):“0123456789012345678901234567890123456789012345678901234567890123”

SHA256(256 位)後的十六進制消息:“9674d9e078535b7cec43284387a6ee39956188e735a85452b0050b55341cda56”

如果我繼續執行後續的 ECDSA 簽名流程,誰能解釋第一個 Hex 消息有什麼問題?

假設 Alice 在這種情況下簽署了原始消息?

在此處輸入圖像描述

這裡的真實答案是我不知道。我很確定實際上更好的答案是這是未知的。雜湊僅用於抗碰撞的假設是公然錯誤的,因為通常需要一個隨機預言機來實現這種方案。特別是在 ECDSA 中,即使使用隨機預言機,我們實際上也沒有安全證明,所以情況更糟。然而,鑑於它已經存在了這麼多年,它的安全性本質上是一個被廣泛接受的假設。然而,一旦你改變了一些東西,而不是散列消息肯定會改變一些東西,那麼它就會分崩離析。

如果您所做的唯一更改是刪除散列步驟,那麼事情肯定會分崩離析。使用您在問題中使用的維基百科的描述,這意味著將第一步替換為 $ e := m $ 然後繼續其餘步驟不變。

然後第二步將定義 $ z $ 作為 $ L_n $ 最左邊的位 $ m $ . 因此,任何僅在位不同的消息在右邊比 $ L_n $ 會立即發生碰撞,從而允許進行微不足道的偽造。

如果您進一步修改簽名方案以排除這種類型的偽造,例如通過限制消息長度,則適用 Yehuda 的答案。

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