Pairings

BLS12-381和BLS12-377在結構上有什麼區別?

  • November 23, 2022

BLS12-381 和 BLS12-377 有什麼區別?

之前我認為他們的基本密碼算法是相同的,所以很容易從BLS12-377構造BLS12-381,或者從BLS12-381構造BLS12-377,只需要改變一些曲線參數。這個對嗎?

但是在某些領域,比如ZK-proof,有人跟我說他們的構造完全不一樣,我看不懂。

所以想知道BLS12-377和BLS12-381的具體區別,比如標量和相關計算,點和相關計算等。

兩者都是嵌入度為 12 的Barreto-Lynn-Scott 族曲線。它們是由於改進了用於計算場中的離散對數的數域篩法而建構的 $ \mathbb{F}_{p^n} $ 有素數 $ p $ 和一個小值 $ n $ 這嚴重影響了以前在實踐中廣泛用於實例化基於配對的密碼學的 BN 曲線的安全級別。(參見https://eprint.iacr.org/2016/1102.pdf)。

這些 BLS12 曲線的有趣之處在於它們“配對友好”。準確地說,它們旨在用於配對密碼學的框架,我們有一個有效的“Type-III”配對(其中一個有效的同構 $ \mathbb{G}_2\rightarrow \mathbb{G}_1 $ 被認為不存在),可以在實踐中計算。我們的配對是雙線性映射: $$ e: \mathbb{G}_1 \times \mathbb{G}_2 \rightarrow \mathbb{G}_t $$

我們的配對是在這些組上定義的 $ \mathbb{G}_{{1,2,t}} $ 這些組的良好候選者是在橢圓曲線上定義的,因為橢圓曲線允許比直接在有限域上定義的組更快的算術和更小的位大小。

所以,橢圓曲線來了:BLS12-381 於2017年首次推出,而 BLS12-377 於2018 年推出。

兩者之間的第一個區別是它們的基域:

  • BLS12-377 定義在由素數生成的欄位上,該素數q = 0x01ae3a4617c510eac63b05c06ca1493b1a22d9f300f5138f1ef3622fba094800170b5d44300000008508c00000000001是 377 位素數。
  • BLS12-381 是在由q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab381 位素數的素數生成的欄位上定義的。

這大致是每條曲線上點座標的大小。兩者都小於 384 位,但大於 320 位,從實現的角度來看,這意味著它們可以僅使用 6 個 64 位的字來表示。那裡沒有什麼顯著不同。

請注意,隨著打破此類曲線的最新進展,它們都被認為具有約 120 位的“安全級別”。這不是很好,但仍然可以接受,並且仍然被認為與今天的知識和技術決裂是不可行的。這是一篇關於該主題的好部落格文章。

下一個區別,正如@fgrieu 所指出的,兩者都有不同的“扭曲”。兩者都是按照2006 年配對友好曲線紙分類法中的構造 6.6 構造的,在這種情況下 $ k \equiv 0 \mod 6 $ ,因此有一個等於 3 的“CM 判別式”(這裡有一個包含不同參數的表)。這意味著它們都具有 6 度扭曲(也稱為“六度扭曲”),這就是關於建構 BLS12 曲線的論文推薦用於快速算術的內容,也可能是使用這種方法建構它們的原因。這樣的 BLS12 曲線總是有 2 種可能的六角形扭曲,但它們有不同的順序,具體取決於手頭的參數和曲線。我們使用的“正確扭曲”是其順序可被整除的那個 $ r $ ,配對友好子組的大小(我們將在下面看到原因)。這 $ r $ 兩者的值是:

  • 對於 BLS12-381:r= 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
  • 對於 BLS12-377:r= 0x12ab655e9a2ca55660b44d1e5c37b00159aa76fed00000010a11800000000001

正因為如此,他們有不同類型的扭曲

  • BLS12-381 有一個“M 型扭曲”: $ (E_t/\mathbb{F}_p^2): Y^2 = X^3+4(u+1) $
  • BLS12-377 有一個“D 型扭曲”: $ (E_t/\mathbb{F}_p^2): Y^2 = X^3+1/u $

請注意,它們都具有低漢明重量 $ u $ 值,這很好,因為它將是 Miller Loop 算法中用於計算配對的加法步驟數:

  • BLS12-381 有 $ u = -0xd201000000010000 = -2^{63}-2^{62}-2^{60}-2^{57}-2^{48}-2^{16} $ , 海明權重為 6
  • BLS12-377 有 $ u = 0x8508c00000000001 = 2^{63}+2^{58}+2^{56}+2^{51}+2^{47}+2^{46}+1 $ , 海明權重為 7

另一方面,鑑於其略小的欄位大小,與 BLS12-381 相比,可以預期 BLS12-377 的性能略好,這很可能抵消其值的較低漢明權重 $ u $ …後者也被更廣泛地使用,並且到目前為止已經得到更好的採用,這意味著它可能有更精細的實現。

所以現在我們已經看到了所有這些參數,手邊的橢圓曲線, $ E(F_q) $ , 只有一個大的訂單子群 $ r $ 雖然它是我們小組的一個很好的候選人 $ \mathbb{G}1 $ ,我們需要兩個不同但“兼容”的組來定義我們的配對。但很酷的是,我們可以“擴展”定義橢圓曲線的域,這樣我們就可以得到橢圓曲線 $ E’ $ 在其擴展上定義 $ F{q^k} $ 學位 $ k $ 將包含所述訂單的 1 個以上子組 $ r $ 當然。在 BLS12 系列案例中,我們的擴展度為 12(我第一句話中提到的著名嵌入度),這為我們的團隊提供了一個很好的候選者 $ \mathbb{G}_2 $ .

現在,扭曲在這裡變得很重要,因為當我們在 12 度的域擴展中工作時,做算術真的很慢!所以加速計算的“技巧”是依靠一種方法來映射我們的曲線 $ E({F}{q^{12}}) $ 到在較低度場上定義的更好的曲線上,這就是順序扭曲可以被整除的地方 $ r $ 進來!(根據拉格朗日定理,有一個大小為 $ r $ 它的順序必須被整除 $ r $ .) 我們可以使用從曲線到它的扭曲的映射來在扭曲而不是在擴展欄位中操作。因此,它們都具有 6 次扭曲的事實意味著我們可以在使用扭曲時將擴展場減少六倍,這是 12 的最大除數,而不是 12 本身。所以有 $ \mathbb{G}2 $ be on the twist 意味著我們正在做計算 $ F{q^2} $ 代替 $ {F}{q^{12}} $ ,在那裡進行計算要容易得多。

這種扭曲方面的差異意味著我們沒有相同的地圖可以將扭曲曲線映射到原始曲線上。但我相信,我們必須計算配對的最新公式可以完全在扭曲中執行,因此扭曲類型的差異在實現級別可能根本不重要,具體取決於為曲線算術實現的公式。

最後用一個更具體的例子來真正回答你的問題,雖然兩者並不完全相同,但它們在實現層面仍然有很多共同點,例如 Go Kilic BLS12-377庫實際上改編自 Go Kilic BLS12- 381一個,變化相對較少,主要區別主要是曲線參數和場參數,這對我們進行算術運算的方式有影響(尤其是在彙編程式碼中),但兩者的大部分程式碼本身保持不變.

PS:關於 BLS12-381 和配對友好曲線的好書是“ BLS12-381 for the rest of us ”,它還詳細介紹了上述內容。

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