热门问题
时间线
聊天
视角
EdDSA
来自维基百科,自由的百科全书
Remove ads
在公鑰密碼學,愛德華茲曲線數位簽章算法(EdDSA)是一種數位簽章方式,使用一種基於扭曲的愛德華茲曲線的施諾爾簽名變種。[1] 其被設計為比現有的數位簽章方式更快同時不犧牲安全性。Daniel J. Bernstein、Niels Duif、Tanja Lange、Peter Schwabe 和 Bo-Yin Yang等人的團隊研發了這一算法[2],並將其參考實現發布為了公有領域軟體。[3]
概要
以下是 EdDSA 的簡化描述,忽略將整數和曲線點編碼為位串的細節。關於完整的細節,請參見論文和RFC。[4][2][1]
一種EdDSA 簽名方案是一種下列內容的組合:[4]:1–2[2]:5–6[1]:5–7
這些參數對於使用同一EdDSA簽名方案的所有用戶都是通用的。EdDSA簽名方案的安全性關鍵取決於參數的選擇,除了基點的任意選擇之外,例如,Pollard Rho算法預計需要大約次曲線相加才能計算離散對數,[5] 所以必須足夠大才能使其不可行,並且通常取值超過2200。[6] 的選擇受限於的選擇,因為根據哈斯定理, 不能與相差超過。散列函數在EdDSA安全性的正式分析中通常被建模為隨機預言。
在 EdDSA 簽名方案中,
- 公鑰
- EdDSA公鑰是一個曲線點,編碼為位。
- 簽名驗證
- 公鑰對消息的EdDSA簽名是元組,編碼為位,由滿足下面的驗證方程的曲線點和整數組成。表示串接。
- 私鑰
- EdDSA私鑰是一個位字符串,其應該被均勻地隨機選擇。對應的公鑰為,其中為通過將的最低有效位解釋為小端字節序的整數得到。
- 簽名
- 消息的簽名被確定地計算為,其中,,且這滿足驗證方程:
Remove ads
Ed25519
Ed25519是使用SHA-512(SHA-2)和Curve25519的EdDSA簽名方式[2],其中:
- 是扭曲的愛德華茲曲線
- ,且
- 為中獨特的一點,其坐標為,且坐標為正數
「正數」根據位編碼定義:- 「正」坐標是偶數坐標(最低有效位被清除)
- 「負數」坐標是奇數坐標(最低有效位被設置)
- 為SHA-512,其。
曲線與被稱為Curve25519的蒙哥馬利曲線雙有理等價。等價的是:[2][7]
Remove ads
原作團隊將Ed25519針對x86-64 Nehalem、Westmere處理器家族進行了優化x86-64。可以批量執行64個簽名的驗證,以獲得更大的吞吐量。Ed25519 旨在提供與128位對稱密碼質量相當的抗攻擊能力。[8]
公鑰的長度為256位,簽名的長度為512位。[9]
Ed25519旨在避免使用依賴於秘密數據的分支條件或數組索引的實現,[2]:2[1]:40以緩解側信道攻擊。
與其他基於離散對數的簽名方案一樣,EdDSA 為每個簽名使用一個唯一的、被稱為「nonce」的秘密值。在DSA和ECDSA簽名方案中,傳統上,這個隨機數是為每個簽名隨機生成的,如果隨機數生成器在簽名時被破壞並且是可預測的,則簽名可能會洩漏私鑰,就像Sony PlayStation 3固件更新簽名密鑰所發生的那樣。[10][11][12][13]
相比之下,EdDSA 確定性地選擇 nonce 作為私鑰和消息的哈希值的一部分。因此,一旦生成私鑰,EdDSA 就不再需要隨機數生成器來進行簽名,並且不存在用於生成簽名的受損隨機數生成器洩露私鑰的風險。[2]:8
值得注意的是,EdDSA 有兩項標準化工作,一項來自IETF,即信息性RFC 8032,另一項來自NIST,作為FIPS 186-5的一部分。[14]兩個標準之間的差異已經被分析了,[15][16]並且有測試向量。[17]
Ed25519 的顯著用途包括OpenSSH、[18]GnuPG[19]及各種替代方案和OpenBSD的signify工具[20]。SSH協議中的Ed25519和Ed448使用已經得到標準化。[21]在2023年,FIPS 186-5 標準的最終版確定將Ed25519包含為一種批准的簽名方案。[14]
- Apple Watch和iPhone使用Ed25519密鑰進行IKEv2相互認證[22]
- Botan
- Crypto++
- CryptoNote 加密貨幣協議
- Dropbear SSH[23]
- I2Pd的EdDSA實現[24]
- Java Development Kit 15
- Libgcrypt
- Minisign[25]和macOS的Minisign Miscellanea[26]
- NaCl / libsodium[27]
- OpenSSL 1.1.1[28]
- Python的一個緩慢但簡潔的替代實現[29],不包含側信道攻擊保護[30]
- Supercop參考實現[31](帶有內聯彙編的C語言)
- Virgil PKI默認使用Ed25519密鑰[32]
- wolfSSL[33]
Remove ads
Ed448
Ed448是使用SHAKE256和Curve448的EdDSA簽名方式,定義於RFC 8032。其也已被FIPS 186-5標準的最終版本批准。[14]
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads