Dsa
為什麼我們在使用 DSA 時會截斷散列?
我在網上讀到的所有關於 DSA 的文章都不斷告訴我,需要截斷散列的大小,以使位長等於或小於欄位素數的位長。
例如,維基百科說:
- 選擇一個認可的加密散列函式 H。$$ … $$雜湊輸出可能會被截斷為密鑰對的大小。
- 選擇一個 N 位素數 q。N 必須小於或等於雜湊輸出長度。
但我們究竟為什麼需要這個?使用 256 位雜湊和 160 位素數有什麼問題?
我嘗試在網上查看,但我不斷得到解釋我如何截斷雜湊的結果,而不是為什麼。
在驗證期間,您執行 $ u_1 = H ( m ) w \bmod{q} $ 會返回相同的 $ u_1 $ 對於多個雜湊值。通常,您只希望一個雜湊成功,即使對手不太可能生成等於的雜湊 $ n q + H(m) w $ .
當然,這意味著任何具有最左邊位的雜湊都與 org.hash 相同。散列也是可以接受的,但至少你不必執行 $ \bmod{q} $ 在一個非常大的數字上。
對於模算術,任何大於模數的輸入(模冪運算的基值)都包含虛假資訊。