Hash
驗證沒有數據的 ECDSA 簽名
使用 RSA PKCS#1 v1.5,可以驗證簽名是否由正確的私鑰生成,而無需實際訪問數據。您只需使用公鑰執行模冪運算即可檢索填充的散列。然後可以驗證消息是否被正確填充。此外,您檢索可用於嘗試猜測輸入的雜湊值(網際網路搜尋、數據庫查找、使用字典猜測、蠻力等)。
ECDSA 是否有類似的可能?是否至少可以驗證簽名是使用特定私鑰創建的?就我個人而言,我不認為它的價值 $ r $ 只是隨機的,我看不到任何逆轉的方法 $ s = k^{-1} (z + rd_A) \bmod n $ 沒有雜湊作為輸入。有沒有辦法做到這一點,或者有可能在數學上證明這樣做是不可行的?
這不可能:
讓 $ d_A, d_B $ 是不同的私鑰。然後
$$ s=k^{-1}(z+rd_A)=k^{-1}((z+r;(d_A-d_B)) + rd_B) $$
所以這對 $ (r, s) $ 不僅是公鑰的有效簽名 $ d_AG $ 和(部分)雜湊 $ z $ , 也為公鑰 $ d_BG $ 和消息雜湊 $ z+r,(d_A-d_B) \pmod n $ .
所以在很多情況下(如果對有效值沒有限制 $ z $ ),每個有效簽名 $ (r, s) $ (對於某些公鑰“有效”)和每個公鑰 $ d_AG $ 會有消息 $ M $ 這樣 $ (r, s) $ 是一個簽名 $ M $ 在下面 $ d_AG $ .