Dsa
為什麼確定性 ECDSA(根據 RFC 6979)在 k 的生成中包含私鑰?
很明顯,使用私有 ECDSA 密鑰 $ x $ 作為RFC 6979中指定的雜湊算法的附加輸入,不會損害安全性(假設 HMAC_DRBG 是 PRF)。
但有必要嗎?
允許簽名算法具有相同的輸出是否有任何問題 $ k $ 對於相同的消息,無論使用什麼密鑰?Per如果公鑰不同,將 ECDSA 隨機數用於兩個簽名是否安全?,看來這應該沒問題。
如果密鑰依賴確實是這裡的目標,為什麼使用私鑰而不是公鑰?
使用公鑰或完全刪除任何密鑰依賴似乎允許驗證給定實現是否使用確定性簽名,這在某些情況下似乎是一個理想的屬性。例如,它將允許通過觀察一個或多個簽名來檢測給定實現是否使用確定性簽名而不知道私鑰。
我錯過了什麼嗎?
但是有必要嗎?
必要的是別人猜不到 $ k $ 曾是; 畢竟,如果他們猜到了,他們可以通過一些簡單的代數從簽名中恢復私鑰。
如果他們只使用公共資訊(公鑰和消息),那麼攻擊者可以計算 $ k $ 自己,那就不好了。
當然,您不必專門使用私鑰;您可以使用另一個秘密值。但是,使用一些秘密值很重要(並且重用私鑰的優點是我們只需要保密一件事)。