在 EdDSA 的 EC 子組(尤其是 Ed255190)中工作時,如何使用與主組不同的操作?
Ed25519 使用複合階橢圓曲線,但在主組的素階子組中工作。根據群論,子群使用群操作。
但是,根據this,Ed25519 實現不這樣做。
但是每個現有的實現都實現了標量算術 $ \bmod q $ ,素數階群的階,不 $ \bmod 8q $ ,全組的順序。
這裡,主組的順序是 $ 8q $ 和 $ q $ 作為素數。
這有點令人困惑。
- 為什麼 Ed25519 實現會這樣做?
- 如果這些操作是在不同的子組操作下完成的,那麼我們不僅僅是在一個完全不同的橢圓曲線中工作 - 即在素數域上定義的橢圓曲線 ( $ \bmod q $ ) - 擁有父組有什麼意義?
- 這樣做的優點和缺點是什麼?
EC(C) 的小序言
在密碼學中,我們在有限域上使用橢圓曲線 (EC)。要在有限域上形成 EC,首先,選擇一個有限域 $ \mathbb F_q $ 在哪裡 $ q $ 要麼是素數的素數(也寫為 $ GF(q) $ 由於伽羅瓦)比曲線方程。滿足曲線方程的整數座標點稱為曲線的點(有理點)。這些點在點加法(切線規則)下形成一個阿貝爾群。現在,我們需要確定組的順序。可以使用Schoof 算法(或Schoof-Elkies-Atkin 算法在啟發式假設下更快)
一旦我們有訂單,我們可以更多地談論這個小組 $ #E(k) $ ,它是素數還是非素數?如果它是素數,我們有一條素數曲線,其中所有元素(除了恆等式 - 大多數情況下它是無窮遠處的點)都是生成器。在曲線階不是素數的情況下,我們有一個輔因子 $ h = #E(k)/n $ 在哪裡 $ n $ 是最大階子群。
但是,據此,Ed25519 實現不這樣做。
> > 但是每個現有的實現都實現了標量算術 $ \bmod q $ ,素數階群的階,不 $ \bmod 8q $ ,全組的順序。 > > >
因為這沒有正式定義 Ed25519 在主要子組或完整組中工作,正如 Mike Hamburg 在他們的Decaf 論文中所述。
實現定義的行為。一些系統,例如 Ed25519
$$ 7 $$,當輸入具有非零 h 扭轉分量時,不要指定行為。特別是,Ed25519 簽名驗證對於批量簽名與單例簽名或在不同實現之間可能有所不同。這可能會導致協議中斷,所有各方必須就簽名是否有效達成一致,例如區塊鍊或拜占庭協議。在其他情況下,它可能會使指紋實現更容易。
標量上的模運算 $ [q]P = \mathcal{O} $ 當順序 $ P $ 是 $ q $ 然後服用 $ k \bmod q $ 消除了不必要的標量計算。
- 為什麼 Ed25519 實現會這樣做?
據我所知,沒有像Lim-Lee對 ECDHE 的主動小分組攻擊這樣的攻擊。很可能,一個程序員選擇這個是為了安全起見,而其他人選擇相同,以便他們可以驗證彼此的簽名。
- 如果這些操作是在不同的子組操作下完成的,那麼我們不僅僅是在一個完全不同的橢圓曲線中工作 - 即在素數域上定義的橢圓曲線 ( $ \bmod q $ ) - 擁有父組有什麼意義?
好吧,正如我們在序言中談到的,我們不是處於不同的橢圓曲線中。一旦我們形成曲線,我們就像往常一樣在一個阿貝爾群中工作。
素數曲線比非素數曲線更安全,因為 Lim-Lee 攻擊不適用,但這是一方面。輔因子大於 1 的曲線提供了更快的加法公式,例如擊敗慢得多的喬伊斯階梯的蒙哥馬利階梯。蒙哥馬利曲線的輔因子>1。每條蒙哥馬利曲線都與愛德華曲線雙有理等價,這為每條蒙哥馬利曲線帶來了快速加法定律(需要元素 4 才能獲得雙有理等價定理 3.3)
- 這樣做的優點和缺點是什麼?
據我們所知,互操作性僅此而已。
該聲明
每個現有的實現都實現了標量算術 $ \bmod q $ ,素數階群的階,不 $ \bmod 8q $ ,全組的順序。
並不意味著在子組中工作,而是使用與主組不同的操作。群運算是兩個橢圓曲線點之間的點相加,在子群和群中是一樣的。標量乘法涉及整數 $ k $ 和一點 $ P $ , 並產生一個點 $ [k]P $ 定義為 $ \underbrace{P+P+\ldots+P+P}_{k\text{ times}} $ .
我的理解是引用聲明實現使用它 $ [k]P=[k\bmod q]P $ , 當 $ P $ 屬於順序的一個子組 $ q $ .