论文部分内容阅读
公钥密码体系中的椭圆曲线密码体制(ECC)自1985年被提出以来就得到普遍关注。以SM2系列算法为代表的椭圆曲线密码算法在我国得到广泛应用。椭圆曲线点乘算法作为关键运算过程,其安全性基于椭圆曲线上的离散对数困难问题,其复杂度为指数阶。旁路分析是指攻击者利用密码运算过程中泄露的旁路信息来攻击密码算法,恢复诸如明文、私钥等敏感信息。这种有效的攻击方法避开了攻击密码算法时遇到的困难数学问题,常被用于攻击分组密码算法、RSA算法以及ECC算法。常见的旁路分析方法包括时间分析、缓存(Cache)分析、功耗分析和故障分析等。密码运算过程中的功耗信息一般需要借助特殊设备来获取,并且功耗分析的研究较为丰富。缓存分析方法需要访问密码硬件,软件仿真较困难。攻击实验的结果证明旁路分析方法在攻击ECC点乘算法时是有效的。本文提出的差分故障分析方法、代数故障分析方法以及时间分析方法均可在有限时间内效恢复出ECC点乘算法中的私钥。通过软件仿真这三种攻击过程,均可得到理想的实验数据。而采用数学理论分析方法对ECC算法基于的椭圆曲线上的离散对数困难问题进行分析,在计算上是不可行的。本文对ECC点乘算法的攻击研究进一步说明了旁路分析可以在实践过程中助力密码算法分析,进而得到诸如私钥等敏感信息。相应地,在实际应用时应注意避免旁路信息泄露。针对所提出的不同旁路分析方法,本文分别给出了相应的防御措施。本文的主要工作内容总结如下:(1)本文针对椭圆曲线点乘算法提出一种改进差分故障分析方案。解决了一般差分故障分析方案存在的“故障检测”和“零块失效”的问题。通过软件仿真,成功攻击了 ECC二进制从左至右点乘算法、二进制NAF点乘算法和蒙哥马利点乘算法。在普通PC机上实现了有效攻击,恢复256比特的私钥需要185分钟。(2)本文针对椭圆曲线点乘算法提出一种代数故障分析方案。在椭圆曲线点乘运算过程中注入故障,建立代数方程组,然后求解该方程组来恢复密钥。通过软件仿真,成功攻击了 ECC的Comb点乘算法和窗口 NAF点乘算法。在普通PC机上实现了有效攻击,恢复256比特的私钥需要13分钟。(3)本文针对椭圆曲线点乘算法提出一种时间分析方案。利用椭圆曲线点乘运算中存在的时间差异,可以恢复出私钥。通过软件仿真,成功攻击了 ECC二进制从左至右点乘算法。在普通PC机上实现了有效攻击,恢复256比特的私钥需要188秒。