密碼學基礎與應用
ECDSA數位簽章在每次簽章時都使用秘密的亂數 k。關於 k 的處理方式的說明,正確的是下列何者?
- Ak 包含在簽章中公開,因此相同的值使用幾次都不影響安全性
- B若對不同訊息的簽章使用相同的 k,就能由兩個簽章計算出私密金鑰
- C即使 k 是可預測的值,只要私密金鑰本身沒有外洩,簽章就不會被偽造
查看答案與解析
正確答案:B. 若對不同訊息的簽章使用相同的 k,就能由兩個簽章計算出私密金鑰
ECDSA的簽章 (r, s) 由 k、訊息的雜湊值與私密金鑰計算而得。若以相同的 k 對兩則訊息簽章,就能從兩個 s 的式子消去 k,求出 k 與私密金鑰。已知即使 k 只有部分位元有偏差或可被預測,也能從大量簽章求出私密金鑰。因此要使用品質良好的亂數,或像RFC 6979那樣,由私密金鑰與訊息確定性地產生 k。
- A. k 本身並不公開。使用相同的 k 會使簽章的 r 相同,成為求出私密金鑰的線索。
- B. 正確。重複使用相同的 k,會直接導致私密金鑰外洩。
- C. 只要知道 k,就能由簽章的式子計算出私密金鑰。知道私密金鑰就能偽造簽章。