几天前,我写了两对密切相关的椭圆曲线:Tweedledum 和 Tweedledee,以及 Pallas 和 Vesta。
在每一对中,一条曲线的阶就是另一条曲线基场的阶。每对中的曲线在密码学中一起使用,但它们并不构成双线性配对技术意义上的“配对”,事实上,正如下文所述,没有一条曲线是“配对友好的”。
如果r能整除qk −1(其中k较小) ,则称椭圆曲线E / F q是配对友好的。这里r是曲线最大素数阶子群的大小,但由于我们的曲线的素数阶为p ,因此r = p 。
至于k的较小值是多少,大约 10 左右就被认为是小值。k 越大,曲线对配对的友好程度就越低。我们将证明我们的曲线极其不利于配对。
由于在我们的例子中q不是p的倍数,因此q必定存在某个幂,例如
qk = 1模p 。
问题在于k是否很大,也就是说q mod p的阶是否很大。我们可以尝试k的连续值,但这不会有太大进展。为了更巧妙,我们利用拉格朗日定理,该定理指出元素的阶可以整除群的阶。因此, k必定是p − 1 的因数之一。(我们减去 1 是因为我们正在研究乘法群 mod p ,这会去掉 0。)
求n − 1 的因数需要分解n − 1,这并不容易,但也并非无法克服。上一篇文章报告了分别在 Python 和 Mathematica 中针对以下每个n值执行此操作所需的时间。
p = 2254 + 4707489544292117082687961190295928833
q = 2254 + 4707489545178046908921067385359695873
r = 2254 + 45560315531419706090280762371685220353
s = 2254 + 45560315531506369815346746415080538113
Tweedledum 的阶为p ,其基域的阶为q 。
k = 28948022309329048855892746252171976963322203655954433126947083963168578338816
Tweedledee 的阶为q ,其基域的阶为p 。
k = 28948022309329048855892746252171976963322203655955319056773317069363642105856
Vesta 的阶为r ,其基场的阶为s 。
k = 14474011154664524427946373126085988481681528240970780357977338382174983815168
Pallas 的阶为s ,其基场的阶为r 。
k = 14474011154664524427946373126085988481681528240970823689839871374196681474048
可以肯定地说,在每种情况下, k都不是一个小的数字。
配对不友好曲线一文最先出现在John D. Cook身上。
原文: https://www.johndcook.com/blog/2025/08/04/pairing-unfriendly-curves/