Ed25519 是一個基于橢圓曲線的數字簽名算法,它高效,安全且應用廣泛。TLS 1.3, SSH, Tor, ZCash, WhatsApp 和 Signal 中都使用了它。本文主要講解以下幾點:
1. 介紹一點群論知識,目的是讓大家對 Ed25519 和其可延展性問題的原理有一種直覺。若想深入理解,還需參考其他資料;
2. 針對 rust 庫 ed25519-dalek 的 1.0.1 版本講解 ed25519 的實現;
3. 針對該庫的延展性問題做出解釋。
數學要點回顧
群的定義與性質
群論是抽象代數研究的內容,但抽象代數的一些思想是程序員非常熟悉的。面向對象中的繼承就是一個很好的例子,我們都知道子類繼承了父類后,就能使用父類中定義的方法。可以將抽象代數理解為對一個抽象的數據結構定義了一些性質,由這些性質推導出來的定理對于所有的子類都成立。
慢霧:近期出現假冒UniSat的釣魚網站,請勿交互:5月13日消息,慢霧首席信息安全官 @IM_23pds 在社交媒體上發文表示,近期有假冒比特幣銘文錢包及交易市場平臺 UniSat 的釣魚網站出現,經慢霧分析,假網站有明顯的傳統針對 ETH、NFT 釣魚團伙的作案特征,或因近期 BRC-20 領域火熱故轉而制作有關該領域的釣魚網站,請用戶注意風險,謹慎辨別。[2023/5/13 15:01:11]
沿用剛剛的比喻,來看看群(group)這個數據結構是如何定義的。
由此可以推出許多有意思的定理:
慢霧:V神相關地址近日于Uniswap賣出3000枚以太坊:11月14日消息,據慢霧監測顯示,以太坊創始人Vitalik Buterin地址(0xe692開頭)近日在Uniswap V3上分三筆將3000枚以太坊(約400萬美元)兌換成了USDC。[2022/11/14 13:03:22]
舉幾個例子:
拉格朗日定理
現在介紹一個非常有意思的定理,這個定理的推導在文末引用的視頻中。
“群的階能被子群的階整除。”
慢霧:Multichain(AnySwap)被黑由于anySwapOutUnderlyingWithPermit函數相關問題:據Multichain(AnySwap)早前消息,2022年01月18日,一個影響6個跨鏈Token的關鍵漏洞正在被利用。慢霧安全團隊進行分析后表示,此次主要是由于anySwapOutUnderlyingWithPermit函數為檢查用戶傳入的Token的合法性,且未考慮并非所有underlying代幣都有實現permit函數,導致用戶資產被未授權轉出。慢霧安全團隊建議:應對用戶傳入的參數是否符合預期進行檢查,且在與其他合約進行對接時應考慮好兼容性問題。[2022/1/19 8:57:49]
為什么說這個定理有意思呢,不僅僅因為它的證明過程串起了剛剛介紹的許多知識,還因為下面的結論:
慢霧:BSC項目Value DeFi vSwap 模塊被黑簡析:據慢霧區情報,幣安智能鏈項目 Value DeFi 的 vSwap 模塊被黑,慢霧安全團隊第一時間介入分析,并將結果以簡訊的形式分享,供大家參考:
1. 攻擊者首先使用 0.05 枚 WBNB 通過 vSwap 合約兌換出 vBSWAP 代幣;
2. 攻擊者在兌換的同時也進行閃電貸操作,因此 vSwap 合約會將兌換的 vBSWAP 代幣與閃電貸借出的 WBNB 轉給攻擊者;
3. 而在完成整個兌換流程并更新池子中代幣數量前,會根據池子的 tokenWeight0 參數是否為 50 來選擇不同的算法來檢查池子中的代幣數量是否符合預期;
4. 由于 vSwap 合約的 tokenWeight0 參數設置為 70,因此將會采用第二種算法對池子中的代幣數量進行檢查;
5. 而漏洞的關鍵點就在于采用第二種算法進行檢查時,可以通過特殊構造的數據來使檢查通過;
6. 第二種算法是通過調用 formula 合約的 ensureConstantValue 函數并傳入池子中緩存的代幣數量與實時的代幣數量進行檢查的;
7. 在通過對此算法進行具體分析調試后我們可以發現,在使用 WBNB 兌換最小單位(即 0.000000000000000001) vBSWAP 時,池子中緩存的 WBNB 值與實時的值之間允許有一個巨大的波動范圍,在此范圍內此算法檢查都將通過;
8. 因此攻擊者可以轉入 WBNB 進行最小單位的 vBSWAP 代幣兌換的同時,將池子中的大量 WBNB 代幣通過閃電貸的方式借出,由于算法問題,在不歸還閃電貸的情況下仍可以通過 vSwap 的檢查;
9. 攻擊者只需要在所有的 vSwap 池子中,不斷的重復此過程,即可將池子中的流動性盜走完成獲利。詳情見原文鏈接。[2021/5/8 21:37:37]
Ed25519 的實現
現在我們來講 Ed25519,它是 EdDSA 算法的其中一種。EdDSA 有 11 個參數(https://datatracker.ietf.org/doc/html/rfc8032#autoid-3),這些參數的具體選擇對于算法的安全和性能有很大的影響。Ed25519 的具體選擇請參看鏈接(https://datatracker.ietf.org/doc/html/rfc8032#autoid-9)。
另外,值得一提的是這套算法用到了一個叫 Curve25519(https://datatracker.ietf.org/doc/html/rfc7748#autoid-5)的橢圓曲線。對于橢圓曲線,我們只需知道,它上邊有很多很多點,這些點相加能得到新的點,新的點還是在曲線上。這些點和這個加法能形成一個群。注意這里的橢圓曲線加法(https://www.wikiwand.com/en/Elliptic_curve_point_multiplication)是有特殊定義的。
我們約定如下記法:
這是個交互式的算法,但是沒關系,有一個技巧叫做 the Fiat – Shamir heuristic(https://link.springer.com/chapter/10.1007%2F3-540-47721-7_12),它可以把任意的交互式算法轉化成非交互式的算法。最終我們會用非交互式算法。
數字簽名算法都會給我們如下 API:
代碼地址(https://github.com/dalek-cryptography/ed25519-dalek/blob/97c22f2d07b3c260726b90c55cd45f34ec34a037/src/public.rs#L322-L355)
密碼學算法的實現和使用都有非常多要注意的地方。當我們說一個數字簽名算法是安全的,一般指的是即使在攻擊者能夠獲得任意消息的簽名(Chosen Message Attack)的情況下,攻擊者仍然不能偽造簽名。Ed25519 滿足這個性質,但不代表 Ed25519 是絕對安全的。在原始的論文中也提到,可延展性問題是可以接受的,且原始的算法就有這個問題。
慢霧科技
個人專欄
閱讀更多
區塊律動BlockBeats
Foresight News
曼昆區塊鏈法律
GWEI Research
吳說區塊鏈
西柚yoga
ETH中文
金色早8點
金色財經 子木
ABCDE
0xAyA
金色財經記者 Jessy在六月底結束的ETHGloble Waterloo黑客松比賽中,入圍決賽的11個項目中有四個是有關ERC-6551協議的項目.
1900/1/1 0:00:00過去一個月,Bored Ape Yacht Club、Mutant Ape Yacht Club 和 Otherdeed for Otherside 的價格都跌到了今年的最低點.
1900/1/1 0:00:00如果要問最近NFT圈有哪兩件事最火,那得是Azuki和ERC6551,Azuki讓市場失望,但ERC6551則給了市場希望.
1900/1/1 0:00:00又到了每月安全盤點時刻!據區塊鏈安全審計公司Beosin旗下Beosin EagleEye安全風險監控、預警與阻斷平臺監測顯示,2023年6月,黑客攻擊事件損失金額較5月大幅上升.
1900/1/1 0:00:00近日,國內領先的數字藏品生態平臺iBox鏈盒發布了《足不出戶“逛”世界-2023文旅數字藏品研究報告》(下文簡稱“報告”).
1900/1/1 0:00:00作者:@DodoResearch,編譯:Odaily星球日報小飛上周,@jackygu 2020 在以太坊上推出了公平概念的 FERC 20 .
1900/1/1 0:00:00