首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Curve25519基点加速

Curve25519基点加速
EN

Cryptography用户
提问于 2020-07-03 10:45:20
回答 1查看 100关注 0票数 0

关于曲线25519的文件中,DJB将基点定义为P_{base} = (9,y)。选择这种方式的主要原因是,P_{base}具有很大的质数顺序,这给安全性带来了优势。但是还有很多其他的点具有相同的性质。x=9之所以被选中,是因为它是排序如此之大的最小点。

我的问题是:一个小的x值虽然在标量点乘法的速度上有优势吗?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-07-03 13:20:45

是的,它可以被利用来获得较小的性能优势。

在伪码中,montgomery梯子是已定义,如下所示:

代码语言:javascript
复制
 x2,z2,x3,z3 = 1,0,x1,1    
 for i in reversed(range(255)):
     bit = 1 & (n >> i)
     x2,x3 = cswap(x2,x3,bit)
     z2,z3 = cswap(z2,z3,bit)
     x3,z3 = ((x2*x3-z2*z3)^2,x1*(x2*z3-z2*x3)^2)
     x2,z2 = ((x2^2-z2^2)^2,4*x2*z2*(x2^2+A*x2*z2+z2^2))
     x2,x3 = cswap(x2,x3,bit)
     z2,z3 = cswap(z2,z3,bit)    
  return x2*z2^(p-2)

在乘法x1 x1*(x2*z3-z2*x3)^2中有一行使用D3

x1是输入的x坐标.可以通过将该值硬编码为9来编写该乘法的优化实现,这将比x1的泛型乘法更快,其中x1可以是字段的任何元素。

然而,我从未见过这样的优化,主要是因为泛型代码对于所有输入都是可用的,而且速度可能在5%左右。您可以尝试对乘法进行一个有条件的决策,使其兼具两个世界的优点(如果输入为"9“,则调用优化的乘法,否则调用泛型乘法),但将分支放入固定时间代码中,以获得最小加速比可能不值得。(尽管我认为这样做没有安全问题)。

如果事先知道输入点,并且没有x坐标值的先决条件,那么还有更好的方法来进行优化实现。的速度提高了44%。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/81696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档