如何從 Ed25519 獲得 256 位安全性?
據說破解 Ed25519 的難度與破解 RSA 大約 3000 位密鑰的難度相似” 1
使用 RSA 時,我更喜歡 4096 位密鑰,但我想使用 Ed25519。
如果我想將安全級別提高一倍——類似於大約 6000 位的 RSA——我有什麼選擇?
我們是否必須等待新標準的發布?
我們能同時輕鬆破解 libsodium/nacl 嗎?
不可能以任何簡單的方式將 Ed25519 的安全級別加倍。相反,將安全級別加倍需要使用另一條大約為 512 位的曲線。
在符合RFC 7748的系統中,即一些 IETF 規範中,有 Curve448 曲線(Ed448-goldilocks)。它幾乎是 Curve25519 的兩倍(其強度為 224 位)。這通常是方便的替代方案,因為它已經在某些系統上可用。
廣泛部署的 256 位安全性替代方案:當然還有 BrainpoolP512 和 NIST P-521 曲線,理論上提供 256 位安全性。然而,BrainpoolP512 和 NIST P-521 在所有方面都被認為不如 Ed25519(參見例如https://safecurves.cr.yp.to/)。
M-511 和 E-521 是類似於 Curve25519 的曲線,提供大約 256 位的安全級別。然而,由於目前廣泛認為安全級別 128 - 192 足夠強,因此在實踐中不經常使用較大的曲線。例如,NSA 套件 B 站點建議他們認為 192 位安全級別(即 384 位橢圓曲線)足以保護絕密材料。
橢圓曲線的任何優化曲線特定實現,例如在 lib 鈉/NaCl 中的 Curve25519 的實現,很難用不同大小的曲線有效地替換。但是,lib 鈉/NaCL 的 API 級別允許輕鬆替換密碼原語。因此,“破解 libsodium/NACL”的“正確”方法可能是在與 NaCL API 兼容的 API 中提供必要的曲線實現。這通常需要使用不同的實現,而不是調整實現 Curve25519 的程式碼。並且一些 API 工作以適應 API,因為大多數橢圓曲線實現的 API 與 libsodium/NaCL 中的 API 有所不同。