第十三个知识点:概述投影点表达的用途的优点
第十三个知识点:概述投影点表达的用途的优点
原文链接:http://bristolcrypto.blogspot.com/2015/01/52-things-number-13-outline-use-and.html
这是52密码学系列中第13篇,我们继续数学背景部分,通过概述投影点表达的使用和优点.
TLDR - 在椭圆曲线点上的翻倍和加法操作需要一个域取逆和几个乘法操作.我们考虑域\(K\)(特征值既不是2也不是3).给定\(K\)上的一个逆运算是比乘法更花费时间的,因此用投影点坐标去计算这些操作是更有效率的.
什么是射影点?
对于椭圆曲线\(E\),Weistrass等式(椭圆曲线的一种表示形式)的射影表达是一种可选的表达,这种表达和原曲线是等价的。我们没有获得任何额外的功能,但是实际上,我们定义了一种等价关系。让\(c\)和\(d\)都是正整数,\(K\)是一个域(域的特征既不是2也不是3),然后我们定义一个等价关系\(\sim\),在集合\(K^3 \backslash \{0,0,0\}\)(\(K\)的超域中非零点构成的集合)就是
\((X_1,Y_1,Z_1) \sim (X_2,Y_2,Z_2) 当且仅当 X_1 = \lambda^c X_2,Y_1 = \lambda^d Y_2,Z_1= \lambda Z_2 , 其中\lambda \in K^{*}\)
上述等价关系的等价类是
我们现在就有了射影点\((X:Y:Z)\),和它的表达式\((X,Y,Z)\)。
在文献中有不同的射影坐标系,但是在这篇博客里我们只考虑Jacobian坐标系统。在这个表达中,射影点\((X:Y:Z)\)对应的仿射点\((x,y)=(\frac{X}{Z^2},\frac{Y}{Z^3})\)。
使用放射坐标系统的优点是什么?
使用射影点表示来计算点的加法和倍增会产生更少的逆运算和更多的乘法(与使用仿射坐标相比)。这可以通过将射影点转换为仿射坐标并尝试简化加法和乘法运算来证明。得到的方程清除了分母,从而消除了取逆。从表面上看,这似乎不是什么了不起的成就,然而,计算一个域的逆运算要比计算乘法复杂得多。为了给出仿射坐标和雅各比(Jacoabian)坐标的操作数,我们列出了下面的表格:
表示形式 | 加倍 | 加法 |
---|---|---|
仿射坐标 | 1I,2M,2S | 1I,2M,2S |
雅各比坐标 | 4M,4S | 12M,4S |
上面的表格采取的椭圆曲线形式是\(y = x^3 - 3x + b\),其中I是取逆运算,M是乘法运算,S是平方运算。
确切的性能比较比较复杂,因为它们依赖于底层平台和实现。然而,只要取逆仍然比乘法要昂贵得多,那么使用仿射坐标将导致对投影点的高性能损失。
是否存在缺点?
据我所知没有(尽管我不认为自己是这方面的专家)。与以往一样,总是存在着将实现导致的问题,可以通过泄露离散对数问题的一些位产生攻击[1]。
[1] https://www.iacr.org/archive/eurocrypt2004/30270258/projective.pdf