Public-Key

為什麼仍然使用 NIST 曲線?

  • August 15, 2021

我對加密世界還比較陌生(但就數學而言,我對內部工作原理很熟悉。我以前很少用它來保護隱私,但現在我用它做很多事情)。

無論如何,我正在查看這個 URL,當然我注意到 NIST 曲線似乎有很多弱點。與其他曲線相比,如 E-521,據我所知,它已在數學上被證明對大多數已知攻擊是安全的。

由此,我有幾個問題希望有人可以向我解釋:

  • 如果 GPG 的安全性不如其他加密,為什麼 GPG 還提供 NIST 加密?為什麼他們不提供最安全的選擇?
  • 我的 GPG 密鑰都屬於 NIST 類別,我應該更改它們嗎?(順便說一句,我的簽名子密鑰不同,但仍然是易受攻擊的類型。)

這是一個在密碼學社區內的元/政治戰爭的極限衝浪的問題。

SafeCurves 是一個很好的資源,但它對“安全”的含義**非常固執。**例如secp256k1,比特幣和乙太坊用來保證其安全性的曲線被 SafeCurves 團隊認為是“不安全的”,而它目前有超過 1000 多 B$ 的 BTC 和 ETH 形式的“漏洞賞金”,可以被黑客攻擊如果你能打破它…

所以,不,不是因為 SafeCurves 說某些東西不“安全”,這意味著它“壞了”。當然,NIST 曲線可能會更好,但它們仍然可以工作並完成它們的工作,並且(據我們所知)沒有針對它們的有效、實際的攻擊會威脅到目前正在使用它們的系統,只要它們是“正確”實施……這意味著它們沒有損壞,我個人不會說它們在 2021 年使用不“安全”。但如果我正在設計一個新系統,我可以選擇任何關鍵協議機製或簽名算法,它們也不是我的首選。

當您從事軟體(和硬體)開發時,一個巨大的問題是“合規性”,而 NIST 是發布被認為是合規性世界中聖杯的“標準”的人,恐怕。

因此,雖然他們目前正在研究包含更多“現代”曲線的新草案(例如 FIPS 186-5 草案目前包括 Ed25519 作為簽名算法),但他們仍然沒有更新他們的建議和標準,因此許多實體被要求依賴其良好的舊建議,例如 P-256 曲線。

兼容性也是一個大問題。例如,NIST P-256 曲線由 Web Crypto API 支持,它應該是恆定時間和“安全的”(在某種意義上,“我們不知道針對它的有效、實際的攻擊”)。同時,更現代的 Curve25519 被認為比 P-256 更安全,更不容易出錯,但 Web Crypto API 尚不支持。因此,要使用 ECC 進行 JavaScript 處理,目前最好使用 P-256 而不是 Curve25519。(或 WASM,但這是另一個話題。)

此外,重要的是要注意 GnuPG 遵循OpenPGP 規範,並試圖成為一個可廣泛互操作、相互兼容的工具。因此,它支持許多不同的方案,其中一些比其他的更舊,一些或多或少被使用。在 PGP 中有一個包含 Ed25519 和 X25519 支持的草案,該草案目前是開放的,並且在過去幾年中一直在積極工作:

PGP 也會出現同樣的兼容性問題:如果您希望能夠輕鬆地與使用它的其他人通信,最好使用其他人也在使用/支持的東西。

所以,PGP 會在某個時候到達那裡,但這是一個緩慢的過程,只要這些舊曲線和標準實際上沒有(或有被破壞的風險),這個緩慢的過程可能不會加速。

現在,如果您使用 P-256 或其他“rho 成本”在該列表中高於 2^100 的曲線,您是否應該更改 PGP 密鑰:https ://safecurves.cr.yp.to/rho.html ?我會說“不”。你現在不需要擔心,至少在接下來的 5 年,可能更多。但是量子電腦可能會在幾年內改變這個故事,如果它們能像我們預期的那樣有效地解決實踐中的離散對數問題。

引用自:https://crypto.stackexchange.com/questions/93519