Elliptic-Curves

是否不可能從散列數據的 ECDSA 簽名中提取任何數據

  • October 29, 2022

我正在嘗試編寫一個函式,給定 EIP712 ECDSA 簽名,驗證簽名是否由特定人員簽名,然後(以某種方式)檢索簽名中編碼的資訊。

是否甚至可以從 EIP712 ECDSA 簽名中檢索未散列的數據,或者是否只能通過已經具有未散列格式的數據並使用ecrecover驗證數據的簽名者來驗證簽名包含的數據?

定義的簽名由一組編碼規則組成,這些規則指定如何將數據輸入到簽名算法中。

從關於 EIP712 的頁面我們可以看到:

編碼符合 EIP-191。“版本字節”固定為0x01,“版本特定數據”是 32 字節域分隔符domainSeparator,“要簽名的數據”是 32 字節hashStruct(message)

在哪裡

hashStruct(s : 𝕊) = keccak256(typeHash ‖ encodeData(s))在哪裡typeHash = keccak256(encodeType(typeOf(s)))

這裡的 keccak256 是一個密碼安全的雜湊,它是不可逆的。因此,出於這個原因,您只能猜測被散列的數據,然後使用它來驗證簽名。您無法從簽名本身檢索任何資訊。

這是大多數簽名的正常屬性,儘管有基於 RSA 的簽名方案允許(部分)消息恢復。

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