论文部分内容阅读
椭圆曲线密码(ECC)由Neal Koblitz和Victor Miller在1985年提出。它是使用椭圆曲线对先前基于离散对数问题(DLP)的密码系统的模拟,选取椭圆曲线上特殊的点群来进行保密运算。椭圆曲线离散对数问题求解是困难的,从而保证密码体系的安全性。由于椭圆曲线的特殊结构,在相同的安全性标准下,它比常规的基于有限域上的乘法群密码体制需求的密钥规模更小。椭圆曲线数字签名(ECDSA)是使用椭圆曲线对普通的基于有限域上的乘法群的数字签名算法DSA进行模拟。ECDSA是1992年在美国征集NIST数字签名时被Scott Vanstone提出。数字签名是只有信息的发送者才能计算的,而且别人无法伪造的一串字符串,能够用来证明信息的真实性,也能够用来验证谁是信息的拥有者。椭圆曲线数字签名的安全性同样基于椭圆曲线离散对数问题(ECDLP)的难解性。由于签名过程中各种计算,直接利用签名信息非常困难,Kocher提出了绕过对数学方面困难性问题的处理,直接对签名的实际运行过程进行分析的侧信道攻击。攻击者通过侧信道攻击可以获得签名过程中的部分内部数据。假设攻击者获得了多组签名,从理论上讲比只获得一组签名攻击者获得了更多的信息,攻击者如何利用更多的信息来恢复出签名者的私钥就成为了新的问题。攻击者通过利用隐藏数问题(HNP)来对获得的信息进行处理,将恢复出密钥转化成解决隐藏数问题,进一步通过格来解决隐藏数问题。2016年范淑琴便提出了这一种绕过对数学方面困难性的处理,通过侧信道攻击等现实中不可避免的软件方面的漏洞来攻击椭圆曲线数字签名恢复出签名者的私钥的方法。本文运用该方法具体的对SM2的数字签名体系进行了攻击分析。本文首先介绍了椭圆曲线数字签名算法的相关问题,同时介绍了(隐藏数)HNP问题极其变种多变量HNP问题以及(拓展隐藏数)EHNP问题,简单介绍了我们运用的侧信道攻击Flush+Reload攻击。对SM2数字签名的攻击我们分为如下几个步骤进行:第一步通过分析SM2数字签名体系,我们找到临时密钥与用户私钥之间的关系;第二步通过侧信道攻击来获得签名时临时密钥的部分信息;第三步我们通过我们得到的临时密钥与用户私钥的关系对得到的信息进行整理,将求解用户私钥的问题转化成求解EHNP问题;第四步我们用格的方法来求解EHNP问题。该攻击结果与签名时使用的wNAF的窗口大小相关,如果窗口大小为3,那么我们利用3个签名信息就有恢复密钥的可能,从理论上讲利用5个签名信息就有超过百分之九十的概率恢复密钥。我们在解决EHNP问题时生成的矩阵维数为D=d+1+L,其中d是使用的签名信息的数量,L与侧信道攻击的结果相关,随着参与计算的样本的增多,矩阵的维数也在显著增多,每增加一个签名信息平均会增加53维生成矩阵的维数,会使得求解CVP问题的困难性显著提升。