慢霧:Ed25519 實現原理與可延展性問題

2023-05-31 15:05:17

Ed25519 是一個基於橢圓曲线的數字籤名算法,它高效,安全且應用廣泛。TLS 1.3, SSH, Tor, ZCash, WhatsApp 和 Signal 中都使用了它。本文主要講解以下幾點:

1. 介紹一點群論知識,目的是讓大家對 Ed25519 和其可延展性問題的原理有一種直覺。若想深入理解,還需參考其他資料;

2. 針對 rust 庫 ed25519-dalek 的 1.0.1 版本講解 ed25519 的實現;

3. 針對該庫的延展性問題做出解釋。

數學要點回顧

群的定義與性質

群論是抽象代數研究的內容,但抽象代數的一些思想是程序員非常熟悉的。面向對象中的繼承就是一個很好的例子,我們都知道子類繼承了父類後,就能使用父類中定義的方法。可以將抽象代數理解為對一個抽象的數據結構定義了一些性質,由這些性質推導出來的定理對於所有的子類都成立。

沿用剛剛的比喻,來看看群(group)這個數據結構是如何定義的。

由此可以推出許多有意思的定理:

舉幾個例子: 

被一筆帶過的群論術語

拉格朗日定理

現在介紹一個非常有意思的定理,這個定理的推導在文末引用的視頻中。

“群的階能被子群的階整除。”

為什么說這個定理有意思呢,不僅僅因為它的證明過程串起了剛剛介紹的許多知識,還因為下面的結論:

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 是絕對安全的。在原始的論文中也提到,可延展性問題是可以接受的,且原始的算法就有這個問題。


鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
129 3個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
128 3個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
135 3個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
127 3個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
108 3個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
116 3個月前