论文部分内容阅读
本文主要工作是对椭圆曲线标量乘算法的研究,椭圆曲线标量乘算法是指一个大整数k乘以椭圆曲线上的一个点P,其研究点主要有两个,一个是算法效率,另一个是算法安全性。在效率方面,主要有两条研究思路,一是在底层域变换点的表示形式,得到高效的点加倍点公式;一是对标量进行重编码,得到更低的海明重量。在安全性方面,主要有两条研究思路,一是采用随机化方式,具体有密钥随机化,点随机化等手段,使得攻击者难以捕捉到能耗轨迹的规律;另一种思路是均衡化方式,调整标量乘算法,让点加和倍点按特定的步骤序列进行,让能耗轨迹以相对平衡的方式展现。基于以上研究思路,本文主要工作有:
(1)在底层域研究上,通过将求逆转换为乘法的思路,研究二进制域上的点加和倍点计算公式,推导3kp快速算法。该算法只需要做一次求逆运算,当k>2时,效率比传统算法要高,且k越大,效率提高越多,当k=200时,该算法比仿射坐标下连续2P+P算法节省22.3%的时间,比混合坐标下连续2P+P算法节省32.4%的时间;
(2)在标量重编码研究上,介绍双基数系统及其在标量乘法中的应用,在二元域上结合3kp快速算法和折半运算,提出基于折半运算的双基数标量乘算法,该算法使用高效折半运算替代倍点运算,实验表明在NIST推荐的椭圆曲线上,该算法比Dimitrov算法和Wong算法效率要高。
另外,为了进一步缩短标量表示,在双基数链的基础之上,适当放宽基数2的指数限制,给出优化的双基数标量乘算法。实验表明,这种双基数链的长度比传统双技术链长度短16%~17%,结合3kp快速算法和折半运算,进一步提高了双基数标量乘算法的效率。
(3)在标量乘法的安全性上,主要对抵抗SPA的标量乘算法进行了研究,从均衡化思想出发,研究Jacobi Quartics曲线,推导该曲线上的点加倍点公式,使得点加运算和倍点运算的计算顺序相同,然后研究Fibonacci数列的特性,推导出短加法链算法,结合点加倍点公式提出新的标量乘算法,最后给出安全性和效率分析,表明在效率稍有提高的基础之上,安全性的得到了保证。
(4)研究新兴的并行计算系统CUDA平台,针对其计算特点设计CUDA平台上的标量乘算法。描述CUDA平台并行环境的特点,研究Edwards曲线,给出Edwards曲线的高效点加和倍点公式,结合CUDA并行计算的特点,提出一种并行的标量乘算法,然后和其他具有相当安全性的标量乘算法进行比较,其效率比其他安全性高的标量乘算法略有提高,最后分析其效率提高不多的原因并给出改进方向。