CN104717060B - 一种攻击椭圆曲线加密算法的方法和攻击设备 - Google Patents
一种攻击椭圆曲线加密算法的方法和攻击设备 Download PDFInfo
- Publication number
- CN104717060B CN104717060B CN201510104861.9A CN201510104861A CN104717060B CN 104717060 B CN104717060 B CN 104717060B CN 201510104861 A CN201510104861 A CN 201510104861A CN 104717060 B CN104717060 B CN 104717060B
- Authority
- CN
- China
- Prior art keywords
- wrong
- basic point
- coordinate
- curve
- elliptic curve
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种攻击椭圆曲线加密算法的方法和攻击设备,包括:攻击设备预先获取具有一字节错误的错误基点的坐标、所在椭圆曲线的曲线参数和阶之间的对应关系,其中,阶为最大素数因子的长度小于或等于预设阈值的阶;攻击设备对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标;攻击设备控制加密设备根据错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出;攻击设备根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数,在对应关系中查找曲线参数对应的错误基点的坐标和阶;攻击设备根据错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文。本发明提高了攻击效率。
Description
技术领域
本发明涉及信息安全技术,尤指一种攻击椭圆曲线加密算法的方法和攻击设备。
背景技术
随着信息科技的发展,信息的安全性被提升到了一个前所未有的高度。各种加密算法正被广泛地应用于经济、军事、行政等重要部门,用于保护信息的安全性。对称密码和公钥密码的出现使得信息能从算法级和软件级得到保护。但是进入21世纪后,随着攻击形式的多样化,攻击性越来越强的方法也随之产生。尤其是从硬件入手的侧信道攻击和故障注入攻击方法使得许多安全信息受到了威胁。针对密码算法软硬件实现的分析研究对保护信息安全具有重要的意义。
“故障攻击”的概念是1996年由Boneh等人首次提出的,是对RSA(Ron Rivest,AdiShamir,Leonard Adleman三人姓氏的开头字母)公钥密码体制的新型攻击方法,该方法利用了密码计算过程中的错误。这种攻击方法一经提出立即引起了人们的广泛关注,并展示出了其对密码体制安全性的极大破坏性。1997年,Biham和Shamir将这种攻击方法应用于对称密码体制,首次提出了“差分故障攻击”的概念,并成功地攻击了数据加密标准(DES,DataEncryption Standard)算法.此后研究人员提出了各种不同的故障攻击方法,成功攻击了多种密码体制,如椭圆曲线密码编码学(ECC,Elliptic Curves Cryptography)公钥体制、3DES(Triple DES)算法以及流密码(RC4)算法等。
下面以SM2解密算法为例说明现有的攻击椭圆曲线加密算法的方法。这里假设SM2解密算法中标量乘的计算使用了二进制算法。
二进制算法具体实现如下:
为了计算标量乘A=[k1]P,将标量k1以二进制形式展开得到k1=(kn-1,…,k1,k0),其中,k0为k1的第n个比特位,k1为k1的第(n-1)个比特位,…,kn-1为k1的第1个比特位,kn-1=1。令i为(n-2);
令A点的坐标(x1,y1,z1)为椭圆曲线的基点P的坐标,B点的坐标(x2,y2,z2)为椭圆曲线的基点P的坐标的2倍。
判断出ki等于1,按照公式λ1=x1z2,λ2=x2z1,λ4=y1z2,λ5=y2z1,λ8=z1z2计算中间值λ,按照公式λ3=λ1-λ2,λ6=λ4-λ5,λ7=λ1+λ2,λ10=λ3λ9,对中间值λ进行扩展;按照公式x3=λ3λ11,y3=λ6(λ9λ1-λ11)-λ4λ10,z3=λ10λ8计算C点的坐标(x3,y3,z3),计算得到的C点的坐标即为A点的坐标和B点的坐标之间的和值;按照公式(x1,y1,z1)=(x3,y3,z3)计算A点的坐标;
按照公式λ2=2y2z2,λ4=λ3x2z2,计算中间值,按照公式x3=λ2λ6,y3=λ1(4λ4-λ6)-2λ3λ5,z3=λ2λ5计算C点的坐标,计算得到的C点的坐标即为B点的坐标的2倍;按照公式(x2,y2,z2)=(x3,y3,z3)计算B点的坐标;
判断出ki不等于1,按照公式λ2=2y2z2,λ4=λ3x2z2,计算中间值,按照公式x3=λ2λ6,y3=λ1(4λ4-λ6)-2λ3λ5,z3=λ2λ5计算C点的坐标,计算得到的C点的坐标即为B点的坐标的2倍;按照公式(x2,y2,z2)=(x3,y3,z3)计算B点的坐标;
将i减去1继续执行判断ki是否等于1的步骤,直到i=0。最后输出A点的坐标。
SM2解密算法具体实现如下:
假设明文M的密文C=C1||C3||C2,klen为C2的比特长度。
从C中取出比特串C1,并将C1转换为椭圆曲线上的点,验证C1是否满足加密过程中所用的椭圆曲线方程,若不满足则报错并退出;
若C1满足椭圆曲线方程,则计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出;
若S不是无穷远点,采用上述二进制算法计算[dB]C1=(x2,y2),并将坐标x2,y2转化为比特串;计算t=KDF(x1||y2,klen),若t为全0比特串,则报错退出;其中,dB为用户私钥;
若t为非全0比特串,则从C中取出比特串C2,计算计算u=Hash(x2||M’||y2),从C中取出比特串C3,若u不等于C3,则报错并退出;若u等于C3,则输出M’。
现有的攻击椭圆曲线密码算法的方法大致包括:
在SM2解密过程中,标量乘[dB]C1=(x2,y2)是按照二进制算法计算的,在二进制算法中,令A=(x2,y2),k=dB,P=C1。标量乘法[dB]C1=(x2,y2)运算进行到第i轮时,对点A的x坐标注入错误变为A'=(x1',y1,z1),如果错误注入时ki为1且处于对中间值λ进行扩展的过程,由于对中间值λ进行扩展的过程独立于各点的坐标值,仅与计算得到的中间值有关,那么A'的坐标的改变不会影响中间值λ的扩展和C点的坐标的计算,最终A点的坐标被C点的坐标代替,最终结果不受“安全错误”的影响,从而得到正确的解密结果;如果ki为0,则错误的A'的坐标值将保留并参与后续的标量循环迭代中,最终输出解密失败。因此,可根据解密成功与否分析出相应时刻的标量比特值ki。通过多次试验,最终获得k的每一比特,即获得k后,也就是说获得dB就能够根据dB采用SM2解密算法进行解密得到明文。
现有的攻击椭圆曲线加密算法的方法中,由于对标量乘的实现有要求,必须采用二进制算法、一直点倍点加、蒙哥马利算法等来实现,错误注入的时机比较难控制(即只能在对中间值λ进行扩展的过程中进行错误注入),还需要知道在标量乘的哪一次迭代中注入错误,一次只能攻击到密钥的1比特,需要进行多次攻击才能获得完整的密钥,因此,该方法攻击效率较低。
发明内容
为了解决上述问题,本发明提出了一种攻击椭圆曲线加密算法的方法和攻击设备,能够提高攻击效率。
为了达到上述目的,本发明提出了一种攻击椭圆曲线加密算法的方法,包括:
攻击设备预先获取具有一字节错误的错误基点的坐标、错误基点所在椭圆曲线的曲线参数和错误基点的阶之间的对应关系;其中,阶为最大素数因子的长度小于或等于预设阈值的阶;
攻击设备对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标;
攻击设备控制加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出;
攻击设备根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数,在对应关系中查找计算得到的曲线参数对应的错误基点的坐标和阶;
攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文。
优选地,当所述攻击设备在所述对应关系中查找不到计算得到的曲线参数对应的错误基点的坐标和阶时,该方法还包括:
攻击设备继续执行所述对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标的步骤。
优选地,所述错误密文输出包括:C1'、C2和C3;所述加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出包括:
按照公式C1'=[k2]G'计算所述椭圆曲线上的点C1'的坐标;其中,k2为1到(N-1)之间的随机数,G’为所述错误基点,N为所述基点G的阶;
按照公式S=[h]PB计算所述椭圆曲线上的点S;其中,h为余因子,PB为用户公钥;
判断出点S不是无穷远点,按照公式(x2,y2)=[k2]PB计算x2,y2;其中,x2为点[k2]PB的横坐标,y2为点[k2]PB的纵坐标;
按照公式t=KDF(x2||y2,klen)计算密钥派生函数t;其中,KDF为密钥派生函数,||为比特串的拼接,klen为明文M的比特长度;
判断出计算得到的t不是全0比特串,按照公式计算所述C2,按照公式C3=hash(x2||M||y2)计算所述C3。
优选地,当判断出所述计算得到的t为全0比特串时,所述加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出还包括:
继续执行所述按照公式C1'=[k2]G'=(x1,y1)计算椭圆曲线上的点C1'的步骤。
优选地,所述错误密文输出包括:C1';所述攻击设备根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数包括:
所述攻击设备按照公式计算所述错误基点所在的椭圆曲线的曲线参数;其中,b’为所述错误基点所在的椭圆曲线的曲线参数, 为C1'点的坐标,a为所述椭圆曲线的参数。
优选地,所述攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文包括:
所述攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;根据获得的r和错误密文输出获取所述明文。
优选地,所述错误密文输出包括:C2和C3;所述根据获得的r和错误密文输出获取明文包括:
令j为0,按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j);
按照公式t'j=KDF(x'2,j||y'2,j,klen)计算t'j;
按照公式计算Mj;
按照公式C3'=hash(x'2,j||Mj||y'2,y)计算C3';
判断出C3'与C3相等,计算得到的Mj为所述明文;
其中,n’为所述错误基点的阶。
优选地,当判断出C3'与C3不相等时,所述根据获得的r获取明文还包括:
将所述j加1继续执行按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j)的步骤,直到判断出C3'与C3相等或者j为
本发明还提出了一种攻击设备,至少包括:
获取模块,用于预先获取具有一字节错误的错误基点的坐标、错误基点所在错误基点的阶之间的对应关系;其中,阶为最大素数因子的长度小于或等于预设阈值的阶;
错误注入模块,用于对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标;
控制模块,用于控制加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出;
计算模块,用于根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数;
查找模块,用于在对应关系中查找计算得到的曲线参数对应的错误基点的坐标和阶,根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文。
优选地,所述查找模块还用于:
在所述对应关系中查找不到计算得到的曲线参数对应的错误基点的坐标和阶;
所述错误注入模块还用于:
在所述查找模块在所述对应关系中查找不到所述计算得到的曲线参数对应的错误基点的坐标和阶时,继续对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标。
优选地,所述计算模块具体用于:
按照公式计算所述错误基点所在的椭圆曲线的曲线参数;其中,b’为所述错误基点所在的椭圆曲线的曲线参数,为C1'点的坐标,a为所述椭圆曲线的参数。
优选地,所述查找模块具体用于:
根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;根据获得的r和错误密文输出获取所述明文。
优选地,所述查找模块具体用于:
根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;
令j为0,按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j);
按照公式t'j=KDF(x'2,j||y'2,j,klen)计算t'j;
按照公式计算Mj;
按照公式C3'=hash(x'2,j||Mj||y'2,y)计算C3';
判断出C3'与C3相等,计算得到的Mj为所述明文。
优选地,所述查找模块还用于:
判断出C3'与C3不相等,将所述j加1继续执行按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j)的步骤,直到判断出C3'与C3相等或者j为
与现有技术相比,本发明包括:攻击设备预先获取具有一字节错误的错误基点的坐标、错误基点所在椭圆曲线的曲线参数和错误基点的阶之间的对应关系;其中,阶为最大素数因子的长度小于或等于预设阈值的阶;攻击设备对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标;攻击设备控制加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出;攻击设备根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数,在对应关系中查找计算得到的曲线参数对应的错误基点的坐标和阶;攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文。通过本发明的方案,攻击设备在加密前对基点的坐标进行错误注入,并且由攻击设备控制加密设备进行加密,错误注入的时机比较容易控制,并且只要做一次攻击就能够获得明文,因此,提高了攻击效率。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
图1为本发明攻击椭圆曲线加密算法的方法的流程图;
图2为本发明攻击设备的结构组成示意图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的各种方式可以相互组合。
参见图1,本发明提出了一种攻击椭圆曲线加密算法的方法,包括:
步骤100、攻击设备预先获取具有一字节错误的错误基点的坐标、错误基点所在椭圆曲线的曲线参数和错误基点的阶之间的对应关系。
本步骤中,阶为最大素数因子的长度小于或等于预设阈值的阶。
本步骤中,具有一字节错误的错误基点是指对椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到的错误基点。
其中,椭圆曲线加密算法可以是商密(SM2)算法,或椭圆曲线加密方案(ECIES,Elliptic Curve Integrated Encryption Scheme)算法。
其中,椭圆曲线加密算法所使用的椭圆曲线系统参数(包括基点的坐标等)可以从相应算法标准中获得。例如,SM2椭圆曲线的基点的坐标来自商密标准SM2算法,商密标准SM2算法中推荐的256(bit)比特安全曲线的曲线参数如表1所示。其中,p为有限域Fp的规模,a和b是定义在Fp上的一条椭圆曲线的参数,N为基点的阶,Gx为基点的横坐标(即x坐标),Gy为基点的纵坐标(即y坐标),表中各参数是以十六进制的形式表示的。
256bit椭圆曲线系统参数 |
p=0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF |
a=0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC |
b=0x28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93 |
N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123 |
Gx=0x32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7 |
Gy=0xBC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0 |
表1
其中,可以对椭圆曲线加密算法所使用的椭圆曲线的基点的横坐标(即x坐标),或纵坐标(即y坐标)注入一字节错误。
其中,一字节错误可以是一字节中的一个或一个以上比特的错误。例如,一字节中包含有八比特,则一字节错误可以是包含有一比特错误的字节,或包含有两比特错误的字节,等等。
本步骤中,如何根据具有一字节错误的错误基点的坐标获取所在椭圆曲线的曲线参数和阶属于本领域技术人员的公知常识,并不用于限定本发明的保护范围,这里不再赘述。
本步骤中,可以由攻击设备或其他设备先计算出所有可能的对应关系,再将所有可能的对应关系中的阶分解为素数因子,然后从所有可能的对应关系中筛选出阶的最大素数因子的长度小于或等于预设阈值对应的对应关系保存到攻击设备中。
本步骤中,预设阈值可以是192。
步骤101、攻击设备对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标。
本步骤中,攻击设备可以在加密设备将椭圆曲线系统参数从存储区传入到寄存器的过程中对基点的坐标注入一字节错误。
本步骤中,攻击设备在加密前对基点的坐标进程错误注入,并且由攻击设备控制加密设备进行加密,错误注入的时机比较容易控制,并且只要做一次攻击就能够获得明文,因此,提高了攻击效率。
步骤102、攻击设备控制加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出。
本步骤中,攻击设备如何控制加密设备对明文进行加密属于本领域技术人员的公知常识,并不用于限定本发明的保护范围,这里不再赘述。
本步骤中,当椭圆曲线加密算法为商密(SM2)加密算法时,加密过程如下:
按照公式C1'=[k2]G'=(x1,y1)计算椭圆曲线上的点C1'的坐标;其中,k2为1到(N-1)之间的随机数,G’为错误基点,N为基点G的阶;
按照公式S=[h]PB计算椭圆曲线上的点S,判断出点S为无穷远点,报错并退出;其中,h为余因子,PB为用户公钥;判断出点S不是无穷远点,按照公式(x2,y2)=[k2]PB计算x2,y2;其中,x2为点[k2]PB的横坐标,y2为点[k2]PB的纵坐标。
按照公式t=KDF(x2||y2,klen)计算密钥派生函数t,判断出计算得到的t为全0比特串,继续执行按照公式C1'=[k2]G'=(x1,y1)计算椭圆曲线上的点C1'的步骤;其中,KDF为密钥派生函数,||为比特串的拼接,klen为明文M的比特长度;
判断出计算得到的t不是全0比特串,按照公式计算C2,按照公式C3=hash(x2||M||y2)计算所述C3。
步骤103、攻击设备根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数,在对应关系中查找计算得到的曲线参数对应的错误基点的坐标和阶。
本步骤中,当攻击设备在对应关系中查找不到计算得到的曲线参数对应的错误基点的坐标和阶时,继续执行攻击设备对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标的步骤。
本步骤中,攻击设备可以按照公式计算错误基点所在的椭圆曲线的曲线参数;其中,b’为错误基点所在的椭圆曲线的曲线参数, 为C1'点的坐标,a为椭圆曲线参数(即表1中的a)。
步骤104、攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文。具体包括:
攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;根据获得的r和错误密文输出获取明文。
其中,r为满足C1'=[k2]G'=[r]G'的标量。
其中,可以采用代数攻击方法(如Pollard-Hellman、Baby-Step Giant-Step、Pollard’s rho等)获取r,具体实现属于本领域技术人员的公知常识,并不用于限定本发明的保护范围,这里不再赘述。
其中,根据获得的r和错误密文输出获取明文包括:
令j为0,按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j);
按照公式t'j=KDF(x'2,j||y'2,j,klen)计算t'j;
按照公式计算Mj;
按照公式C3'=hash(x'2,j||Mj||y'2,y)计算C3';
判断出C3'与C3相等,计算得到的Mj为正确的明文。
其中,n’为错误基点的阶。
其中,当判断出C3'与C3不相等时,将j加1继续执行按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j)的步骤,直到判断出C3'与C3相等或者j为
参见图2,本发明还提出了一种攻击设备,至少包括:
获取模块,用于预先获取具有一字节错误的错误基点的坐标、错误基点所在椭圆曲线的曲线参数和错误基点的阶之间的对应关系;其中,阶为最大素数因子的长度小于或等于预设阈值的阶;
错误注入模块,用于对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标;
控制模块,用于控制加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出;
计算模块,用于根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数;
查找模块,用于在对应关系中查找计算得到的曲线参数对应的错误基点的坐标和阶,根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文。
本发明的攻击设备中,查找模块还用于:
在对应关系中查找不到计算得到的曲线参数对应的错误基点的坐标和阶;
错误注入模块还用于:
在查找模块在对应关系中查找不到计算得到的曲线参数对应的错误基点的坐标和阶时,继续对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标。
本发明的攻击设备中,计算模块具体用于:
按照公式计算错误基点所在的椭圆曲线的曲线参数;其中,b’为错误基点所在的椭圆曲线的曲线参数,为C1'点的坐标,a为椭圆曲线的参数。
本发明的攻击设备中,查找模块具体用于:
根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;根据获得的r和错误密文输出获取明文。
本发明的攻击设备中,查找模块具体用于:
根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;
令j为0,按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j);
按照公式t'j=KDF(x'2,j||y'2,j,klen)计算t'j;
按照公式计算Mj;
按照公式C3'=hash(x'2,j||Mj||y'2,y)计算C3';
判断出C3'与C3相等,计算得到的Mj为明文。
本发明的攻击设备中,查找模块还用于:
判断出C3'与C3不相等,将j加1继续执行按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j)的步骤,直到判断出C3'与C3相等或者j为
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。
Claims (14)
1.一种攻击椭圆曲线加密算法的方法,其特征在于,包括:
攻击设备预先获取具有一字节错误的错误基点的坐标、错误基点所在椭圆曲线的曲线参数和错误基点的阶之间的对应关系;其中,阶为最大素数因子的长度小于或等于预设阈值的阶;
攻击设备对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标;
攻击设备控制加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出;
攻击设备根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数,在对应关系中查找计算得到的曲线参数对应的错误基点的坐标和阶;
攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文。
2.根据权利要求1所述的方法,其特征在于,当所述攻击设备在所述对应关系中查找不到计算得到的曲线参数对应的错误基点的坐标和阶时,该方法还包括:
攻击设备继续执行所述对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标的步骤。
3.根据权利要求1或2所述的方法,其特征在于,所述错误密文输出包括:C′1、C2和C3;所述加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出包括:
按照公式C′1=[k2]G'计算所述椭圆曲线上的点C1'的坐标;其中,k2为1到N-1之间的随机数,G’为所述错误基点,N为所述基点G的阶;
按照公式S=[h]PB计算所述椭圆曲线上的点S;其中,h为余因子,PB为用户公钥;
判断出点S不是无穷远点,按照公式(x2,y2)=[k2]PB计算x2,y2;其中,x2为点[k2]PB的横坐标,y2为点[k2]PB的纵坐标;
按照公式t=KDF(x2||y2,klen)计算密钥派生函数t;其中,KDF为密钥派生函数,||为比特串的拼接,klen为明文M的比特长度;
判断出计算得到的t不是全0比特串,按照公式计算所述C2,按照公式C3=hash(x2||M||y2)计算所述C3。
4.根据权利要求3所述的方法,其特征在于,当判断出所述计算得到的t为全0比特串时,所述加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出还包括:
继续执行所述按照公式C′1=[k2]G'=(x1,y1)计算椭圆曲线上的点C′1的步骤。
5.根据权利要求1或2所述的方法,其特征在于,所述错误密文输出包括:C′1;所述攻击设备根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数包括:
所述攻击设备按照公式计算所述错误基点所在的椭圆曲线的曲线参数;其中,b’为所述错误基点所在的椭圆曲线的曲线参数, 为C′1点的坐标,a为所述椭圆曲线的参数。
6.根据权利要求1或2所述的方法,其特征在于,所述攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文包括:
所述攻击设备根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;根据获得的r和错误密文输出获取所述明文。
7.根据权利要求6所述的方法,其特征在于,所述错误密文输出包括:C2和C3;所述根据获得的r和错误密文输出获取明文包括:
令j为0,按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j);
按照公式t'j=KDF(x'2,j||y'2,j,klen)计算t'j;
按照公式计算Mj;
按照公式C'3=hash(x'2,j||Mj||y'2,y)计算C'3;
判断出C'3与C3相等,计算得到的Mj为所述明文;
其中,n’为所述错误基点的阶。
8.根据权利要求7所述的方法,其特征在于,当判断出C'3与C3不相等时,所述根据获得的r获取明文还包括:
将所述j加1继续执行按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j)的步骤,直到判断出C'3与C3相等或者j为
9.一种攻击设备,其特征在于,至少包括:
获取模块,用于预先获取具有一字节错误的错误基点的坐标、错误基点所在错误基点的阶之间的对应关系;其中,阶为最大素数因子的长度小于或等于预设阈值的阶;
错误注入模块,用于对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标;
控制模块,用于控制加密设备根据得到的错误基点的坐标采用椭圆曲线加密算法对明文进行加密得到错误密文输出;
计算模块,用于根据错误密文输出计算错误基点所在的椭圆曲线的曲线参数;
查找模块,用于在对应关系中查找计算得到的曲线参数对应的错误基点的坐标和阶,根据查找到的错误基点的坐标和阶、计算得到的曲线参数和错误密文输出获取明文。
10.根据权利要求9所述的攻击设备,其特征在于,所述查找模块还用于:
在所述对应关系中查找不到计算得到的曲线参数对应的错误基点的坐标和阶;
所述错误注入模块还用于:
在所述查找模块在所述对应关系中查找不到所述计算得到的曲线参数对应的错误基点的坐标和阶时,继续对加密设备中椭圆曲线加密算法所使用的椭圆曲线的基点的坐标注入一字节错误得到错误基点的坐标。
11.根据权利要求9或10所述的攻击设备,其特征在于,所述计算模块具体用于:
按照公式计算所述错误基点所在的椭圆曲线的曲线参数;其中,b’为所述错误基点所在的椭圆曲线的曲线参数,为C′1点的坐标,a为所述椭圆曲线的参数。
12.根据权利要求9或10所述的攻击设备,其特征在于,所述查找模块具体用于:
根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;根据获得的r和错误密文输出获取所述明文。
13.根据权利要求9或10所述的攻击设备,其特征在于,所述查找模块具体用于:
根据查找到的错误基点的坐标和阶、计算得到的曲线参数获取r;
令j为0,按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j);
按照公式t'j=KDF(x'2,j||y'2,j,klen)计算t'j;
按照公式计算Mj;
按照公式C'3=hash(x'2,j||Mj||y'2,y)计算C'3;
判断出C'3与C3相等,计算得到的Mj为所述明文。
14.根据权利要求13所述的攻击设备,其特征在于,所述查找模块还用于:
判断出C'3与C3不相等,将所述j加1继续执行按照公式(x'2,j,y'2,j)=[r+jn']PB计算(x'2,j,y'2,j)的步骤,直到判断出C'3与C3相等或者j为
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510104861.9A CN104717060B (zh) | 2015-03-10 | 2015-03-10 | 一种攻击椭圆曲线加密算法的方法和攻击设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510104861.9A CN104717060B (zh) | 2015-03-10 | 2015-03-10 | 一种攻击椭圆曲线加密算法的方法和攻击设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104717060A CN104717060A (zh) | 2015-06-17 |
CN104717060B true CN104717060B (zh) | 2017-11-17 |
Family
ID=53416057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510104861.9A Active CN104717060B (zh) | 2015-03-10 | 2015-03-10 | 一种攻击椭圆曲线加密算法的方法和攻击设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104717060B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109067554A (zh) * | 2018-10-31 | 2018-12-21 | 北京云测信息技术有限公司 | 抗注入攻击的签名方法、装置、移动终端及存储介质 |
CN109582284B (zh) * | 2018-11-16 | 2020-11-13 | 大唐微电子技术有限公司 | 一种芯片中的标量乘实现方法及装置、计算机可读存储介质 |
CN110247929B (zh) * | 2019-06-28 | 2021-06-11 | 兆讯恒达科技股份有限公司 | 一种椭圆加密算法协处理器防注入式攻击的方法 |
CN117811737A (zh) * | 2023-12-29 | 2024-04-02 | 北京海泰方圆科技股份有限公司 | 一种数据处理方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885767A (zh) * | 2006-07-12 | 2006-12-27 | 北京华大信安科技有限公司 | 安全高效的椭圆曲线加解密参数 |
CN102394747A (zh) * | 2011-11-23 | 2012-03-28 | 上海爱信诺航芯电子科技有限公司 | 一种快速嵌入明文到椭圆曲线上一点的方法 |
CN103490876A (zh) * | 2013-10-18 | 2014-01-01 | 重庆科技学院 | 基于超混沌Lorenz系统构建Hash函数的数据加密方法 |
CN104320247A (zh) * | 2014-09-22 | 2015-01-28 | 杭州电子科技大学 | 一种基于椭圆曲线与指纹模糊金库的共享密钥保护方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8331558B2 (en) * | 2010-02-18 | 2012-12-11 | King Fahd University Of Petroleum And Minerals | Method of cipher block chaining using elliptic curve cryptography |
-
2015
- 2015-03-10 CN CN201510104861.9A patent/CN104717060B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885767A (zh) * | 2006-07-12 | 2006-12-27 | 北京华大信安科技有限公司 | 安全高效的椭圆曲线加解密参数 |
CN102394747A (zh) * | 2011-11-23 | 2012-03-28 | 上海爱信诺航芯电子科技有限公司 | 一种快速嵌入明文到椭圆曲线上一点的方法 |
CN103490876A (zh) * | 2013-10-18 | 2014-01-01 | 重庆科技学院 | 基于超混沌Lorenz系统构建Hash函数的数据加密方法 |
CN104320247A (zh) * | 2014-09-22 | 2015-01-28 | 杭州电子科技大学 | 一种基于椭圆曲线与指纹模糊金库的共享密钥保护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104717060A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Prouff et al. | Masking against side-channel attacks: A formal security proof | |
Bruneau et al. | Masks will fall off: higher-order optimal distinguishers | |
US20220271916A1 (en) | Method and apparatus for implementing a white-box cipher | |
CN104717060B (zh) | 一种攻击椭圆曲线加密算法的方法和攻击设备 | |
EP3096488B1 (en) | Hypersphere-based multivariable public key encryption/decryption system and method | |
US8010587B2 (en) | Random number generator | |
EP2575286A1 (en) | Encryption processing apparatus | |
US8976960B2 (en) | Methods and apparatus for correlation protected processing of cryptographic operations | |
CN103795527A (zh) | 防止基于功耗分析攻击aes算法的软件掩码防护方案 | |
US11418334B2 (en) | Protecting modular inversion operation from external monitoring attacks | |
Duan et al. | Differential power analysis attack and efficient countermeasures on PRESENT | |
JP2020510879A (ja) | 楕円曲線点乗算デバイス及び方法 | |
KR101095386B1 (ko) | 이산화된 카오스 함수를 이용한 암호 시스템 | |
Mewada et al. | Exploration of efficient symmetric AES algorithm | |
CN112653546A (zh) | 一种基于功耗分析的故障攻击检测方法 | |
Agibalov et al. | Asymmetric cryptosystems on Boolean functions | |
CN105119929A (zh) | 单一恶意云服务器下的安全模指数外包方法及系统 | |
CN110798313B (zh) | 基于秘密动态共享的包含秘密的数的协同生成方法及系统 | |
JP6194136B2 (ja) | 疑似乱数生成装置及び疑似乱数生成プログラム | |
CN103684748B (zh) | 对称式加解密方法、对称式加解密系统 | |
Agibalov | ElGamal cryptosystems on Boolean functions | |
Aïssa et al. | Image encryption using stream cipher algorithm with nonlinear filtering function | |
Jovanovic et al. | Multi-stage fault attacks on block ciphers | |
Leadbitter et al. | Attacking DSA under a repeated bits assumption | |
Mohamed et al. | Towards algebraic cryptanalysis of HFE challenge 2 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |