发明内容
本发明实施例提供了安全芯片中的RSA算法私钥元素获取方法及安全芯片中的RSA算法私钥元素获取装置,以获取安全芯片的RSA算法私钥元素。
一方面,本发明实施例提供了一种安全芯片中的RSA算法私钥元素获取方法,该方法包括:设置测试码,所述测试码的比特位长等于被测安全芯片的RSA公钥模的比特位长,所述测试码由比特位长均为t的高半部分和低半部分组成;利用所述测试码获取所述被测安全芯片的基准功耗曲线;在获取到所述基准功耗曲线之后,将所述测试码的高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1;根据所述测试码中的数据及所述基准功耗曲线,对所述测试码第t-1比特位的值进行修正;在所述第t-1比特位的值修正完成后,根据对所述测试码第i比特位的值修正后所述测试码中的数据及所述基准功耗曲线,对所述测试码第i-1比特位的值进行修正,其中i属于[2,t-1];在所述低半部分除第0比特位外的其他比特位的值修正完成后,根据所述基准功耗曲线对所述测试码中的数据进行验证;当所述测试码中的数据通过验证时,获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
结合一方面,在一方面的第一种可能的实现方式中,所述利用所述测试码获取所述被测安全芯片的基准功耗曲线包括:将所述测试码高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1,生成第一值;使用公钥对所述第一值进行加密生成第一结果;获取第一功耗曲线,所述第一功耗曲线为所述被测安全芯片以所述第一结果为输入进行处理的处理过程对应的功耗曲线;将所述测试码的第0比特位及第1比特位的值设置为1,其余比特位的值设置为0,生成第二值;使用公钥对所述第二值进行加密生成第二结果;获取第二功耗曲线,所述第二功耗曲线为所述被测安全芯片以所述第二结果为输入进行处理的处理过程对应的功耗曲线;对所述第一功耗曲线与所述第二功耗曲线进行分析,得出安全芯片只执行一次减法运算的第一基准功耗曲线,及所述被测安全芯片执行一次减法并执行一次加法运算的第二基准功耗曲线。
结合一方面的第一种可能的实现方式,在一方面的第二种可能的实现方式中,所述使用所述基准功耗曲线对所述测试码第t-1比特位的值进行修正包括:使用公钥对测试码中的数据进行加密生成第三结果;获取第三功耗曲线,所述第三功耗曲线为所述被测安全芯片以所述第三结果为输入进行处理的处理过程对应的功耗曲线;从所述第三功耗曲线中获取第一对比曲线,所述第一对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;比较所述第一对比曲线与所述第一基准功耗曲线在功耗上是否一致;如果所述第一对比曲线与所述第一基准功耗曲线在功耗上一致,则将所述测试码第t-1比特位的值设置为1,或者,如果所述第一对比曲线与所述第一基准功耗曲线在功耗上不一致,则将所述测试码第t-1比特位的值设置为0。
结合一方面的第一种可能的实现方式,在一方面的第三种可能的实现方式中,所述对所述测试码第i-1比特位的值进行修正包括:在第i比特位的值设置完成后,使用公钥对所述测试码中的数据进行加密生成第四结果,其中i属于[2,t-1];获取第四功耗曲线,所述第四功耗曲线为所述被测安全芯片以所述第四结果为输入进行处理的处理过程对应的功耗曲线;从所述第四功耗曲线中获取第二对比曲线,所述第二对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;比较所述第二对比曲线与所述第一基准功耗曲线在功耗上是否一致;如果所述第二对比曲线与所述第一基准功耗曲线在功耗上一致,则将所述低半部分第i-1比特位的值设置为1,或者,如果所述第二对比曲线与所述第一基准功耗曲线在功耗上不一致,则将所述低半部分第i-1比特位的值设置为0,其中i属于[2,t-1]。
结合一方面的第一种可能的实现方式,在一方面的第四种可能的实现方式中,所述根据所述基准功耗曲线对所述测试码中的数据进行验证,包括:在第1比特位的值设置完成后,使用公钥对所述测试码中的数据进行加密生成第五结果;获取第五功耗曲线,所述第五功耗曲线为所述被测安全芯片以所述第五结果为输入进行处理的处理过程对应的功耗曲线;从所述第五功耗曲线中获取第三对比曲线,所述第三对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;比较所述第三对比曲线与所述第二基准功耗曲线在功耗上是否一致;所述当所述比特值通过验证时,获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素,具体为:如果所述第三对比曲线与所述第二基准功耗曲线在功耗上一致,则获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
另一方面,本发明实施例还提供了一种安全芯片中的RSA算法私钥元素获取装置,该装置包括:设置单元,用于设置测试码,所述测试码的比特位长等于被测安全芯片的RSA公钥模的比特位长,所述测试码由比特位长均为t的高半部分和低半部分组成;获取单元,用于利用所述利用设置单元设置的所述测试码获取所述被测安全芯片的基准功耗曲线;预设单元,用于在所述获取单元获取到所述基准功耗曲线之后,将所述测试码的高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1;第一修正单元,用于根据所述获取单元获取到的所述测试码中的数据及所述基准功耗曲线,对所述测试码第t-1比特位的值进行修正;第二修正单元,用于在第一修正单元对所述第t-1比特位的值修正完成后,根据对所述测试码第i比特位的值修正后所述测试码中的数据及所述基准功耗曲线,对所述测试码第i-1比特位的值进行修正,其中i属于[2,t-1];验证单元,用于在第二修正单元对所述低半部分除第0比特位外的其他比特位的值修正完成后,根据所述基准功耗曲线对所述测试码中的数据进行验证;确定单元,用于当所述测试码中的数据通过所述验证单元的验证时,获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
结合另一方面,在另一方面的第一种可能的实现方式中,所述获取单元包括:第一值设置子单元,用于将所述测试码高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1,生成第一值;第一加密子单元,用于使用公钥对所述第一值设置子单元设置的所述第一值进行加密生成第一结果;第一获取子单元,用于获取第一功耗曲线,所述第一功耗曲线为所述被测安全芯片以所述第一加密子单元生成的所述第一结果为输入进行处理的处理过程对应的功耗曲线;第二值设置子单元,用于在所述第一获取子单元获取到所述第一功耗曲线后,将所述测试码的第0比特位及第1比特位的值设置为1,其余比特位的值设置为0,生成第二值;第二加密子单元,用于使用公钥对所述第二值设置子单元设置的所述第二值进行加密生成第二结果;第二获取子单元,用于获取第二功耗曲线,所述第二功耗曲线为所述被测安全芯片以所述第二加密子单元生成的所述第二结果为输入进行处理的处理过程对应的功耗曲线;曲线获取子单元,用于对所述第一获取子单元获取的所述第一功耗曲线与所述第二获取子单元获取的所述第二功耗曲线进行分析,得出安全芯片只执行一次减法运算的第一基准功耗曲线,及所述被测安全芯片执行一次减法并执行一次加法运算的第二基准功耗曲线。
结合另一方面的第一种可能的实现方式,在另一方面的第二种可能的实现方式中,所述第一修正单元包括:第三加密子单元,用于使用公钥对测试码中的数据进行加密生成第三结果;第三获取子单元,用于获取第三功耗曲线,所述第三功耗曲线为所述被测安全芯片以所述第三加密子单元生成的所述第三结果为输入进行处理的处理过程对应的功耗曲线;第一生成子单元,用于从所述第三获取子单元获取的所述第三功耗曲线中获取第一对比曲线,所述第一对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;第一比较子单元,用于比较所述第一生成子单元获取的所述第一对比曲线与所述第一基准功耗曲线在功耗上是否一致;第一确定子单元,用于经过所述第一比较子单的比较,如果所述第一对比曲线与所述第一基准功耗曲线在功耗上一致,则将所述测试码第t-1比特位的值设置为1,或者,如果所述第一对比曲线与所述第一基准功耗曲线在功耗上不一致,则将所述测试码第t-1比特位的值设置为0。
结合另一方面的第一种可能的实现方式,在另一方面的第三种可能的实现方式中,所述第二修正单元包括:第四加密子单元,用于在第i比特位的值设置完成后,使用公钥对所述测试码中的数据进行加密生成第四结果,其中i属于[2,t-1];第四获取子单元,用于获取所述第四功耗曲线,所述第四功耗曲线为所述被测安全芯片以所述第四加密子单元生成的所述第四结果为输入进行处理的处理过程对应的功耗曲线;第二生成子单元,用于从所述第四获取子单元获取的所述第四功耗曲线中获取第二对比曲线,所述第二对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;第二比较子单元,用于比较所述第二生成子单元获取的所述第二对比曲线与所述第一基准功耗曲线在功耗上是否一致;第二确定子单元,用于经过所述第二比较子单元的比较,如果所述第二对比曲线与所述第一基准功耗曲线在功耗上一致,则将所述低半部分第i-1比特位的值设置为1,或者,如果所述第二对比曲线与所述第一基准功耗曲线在功耗上不一致,则将所述低半部分第i-1比特位的值设置为0,其中i属于[2,t-1]。
结合另一方面的第一种可能的实现方式,在另一方面的第四种可能的实现方式中,所述验证单元包括:第五加密子单元,用于在第1比特位的值设置完成后,使用公钥对所述测试码中的数据进行加密生成第五结果;第五获取子单元,用于获取所述第五功耗曲线,所述第五功耗曲线为所述被测安全芯片以所述第五加密子单元生成的所述第五结果为输入进行处理的处理过程对应的功耗曲线;第三生成子单元,用于从所述第五获取子单元获取的所述第五功耗曲线中获取第三对比曲线,所述第三对比曲线为被测安全芯片执行(SP-SQ)modP运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;第三比较子单元,用于比较所述第三生成子单元获取的所述第三对比曲线与所述第二基准功耗曲线在功耗上是否一致;所述确定单元,用于经过所述第三比较子单元的比较,如果所述第三对比曲线与所述第二基准功耗曲线在功耗上一致,则获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
与现有技术相比,本发明实施例提供的方法及装置,可以通过对测试码中预设的数据的进行逐位修正,使测试码中的数据不断逼近安全芯片的RSA算法私钥元素,最终使测试码中的数据等于被测安全芯片的RSA算法私钥元素,从而获得安全芯片的RSA算法的一个私钥元素。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明安全芯片中的RSA算法私钥元素获取方法一个实施例的流程图,该实施例包括如下步骤:
步骤101,设置测试码,所述测试码的比特位长等于被测安全芯片的RSA公钥模的比特位长,所述测试码由比特位长均为t的高半部分和低半部分组成。
要获取安全芯片,即所述被测安全芯片的RSA算法私钥元素,首先需要根据所述被测安全芯片的RSA公钥模的比特位长设置一个测试码,该测试码可以用M来表示。由于在实际使用中RSA公钥模的比特长通常为偶数,M可以由比特位长相等的高半部分及低半部分组成,M的高半部分可以用MH表示,低半部分可以用ML表示,即M=MH||ML。M的每一比特位的值可以根据需要进行设置或修改,对M中的数据进行设置或修改即为对保存在存储空间中的数据进行设置或修改。
RSA公钥模的比特位长可以2t来表示。当RSA公钥模的比特位长为2t时,MH与ML的比特位长均为t。MH的各个比特位从高到低可以标记为2t-1、2t-2、…、t,ML的各个比特位从高到低可以标记为t-1、t-2、…、0。
步骤102,利用所述测试码获取所述被测安全芯片的基准功耗曲线。
被测安全芯片对输入数据进行处理的过程可以用以下表达式表示:CRT(SP,SQ)=(((SP-SQ)*Qinv)mod P)*Q+SQ,其中,P为被测安全芯片的第一私钥元素,Q为被测安全芯片的第二私钥元素,即,P与Q为预先选择两个素数;Qinv为被测安全芯片的第五私钥元素,即,Qinv为Q关于P的逆;SP为第一中间数据,SQ为第二中间数据。从上述表达式可知被测安全芯片在对数据进行签名或解密处理时,被测芯片对输入数据的处理时需要计算(SP-SQ)mod P。
根据RSA算法的原理可知,SP=MPDP,SQ=MQDQ,其中,DP为e关于P-1的逆,即被测安全芯片的第三私钥元素,DQ为e关于Q-1的逆,即被测安全芯片的第四私钥元素,e为公钥数据,e与密钥长度n共同组成公钥。MP=C mod P,MQ=C mod Q,其中,C为输入到芯片中的数据,即待加密或待签名数据。
进一步分析可知,
SP=(C mod P)DP
=((Me mod N)mod P)DP
=Me*DP mod P
=M mod P
SQ=(C mod Q)DQ
=((Me mod N)mod Q)DQ
=Me*DQ mod Q
=M mod Q
因此,(SP-SQ)mod P=(M mod P-M mod Q)mod P。
以安全芯片在进行数据加密或签名时采用1024位RSA为例,第一私钥元素P与第二私钥元素Q的取值区间为[1,2512-1];当P>Q时,私钥元素的取值区间可以分为三部分,区间一:[1,Q)、区间二:[Q,P)、区间三:[P,2512-1]。
由于,(SP-SQ)mod P=(M mod P-M mod Q)mod P,
可知当M中的数据落到区间一或区间二时,
(SP-SQ)mod P≥0,
此时计算(SP-SQ)mod P,被测安全芯片只需要执行一次减法运算;
当测试码M中的数据M的值落到区间三时,
(SP-SQ)mod P<0,
此时计算(SP-SQ)mod P,被测安全芯片需要执行一次减法,一次加法运算。
被测安全芯片只执行一次减法运算与执行一次减法并执行一次加法,所需的时间、功耗等会有很大差异,而这一差异可以在功耗曲线上体现出来。其中,功耗曲线可以使用能量分析仪器等设备或方法获取。
通过为测试码M设置不同的值并对被测安全芯片进行测试,可以获取被测安全芯片获取执行一次减法运算的处理过程对应的第一基准功耗曲线及执行一次减法并执行一次加法的处理过程对应的第二基准功耗曲线。
具体来说,首先将高半部分MH的所有比特位的值设置为0,低半部分ML的所有比特位的值设置为1,从而生成第一值M1。使用已知的公钥对M1进行加密,生成第一结果C1。把C1输入被攻击芯片进行签名或解密处理,获取所述被测安全芯片对C1进行处理的处理过程对应的第一功耗曲线Tarce1。然后,将MH的所有比特位的值设置为0,ML的第1比特位与第0比特位的值设置为1,ML其余所有比特位的值都设置为0,从而生成第二值M2。使用已知的公钥对M2进行加密,生成第二结果C2。把C2输入被攻击芯片进行签名或解密处理,获取所述被测安全芯片对C2进行处理的处理过程对应的第二功耗曲线Tarce2。
将Tarce1与Tarce2进行对比,根据分析出被测安全芯片只执行一次减法的第一基准功耗曲线TarceA及执行一次减法并执行一次加法的第二基准功耗曲线TarceB。根据芯片的不同,可以采用不同的标准确定TarceA与TarceB,例如,可以根据功耗曲线的特征,确定Tarce1及Tarce2中特定部分作为备选功耗曲线,然后以时间标准,执行时间相对较短的一个备选功耗曲线确定为线TarceA,执行时间相对较长的一个备选功耗曲线确定为TarceB;或者也可以由技术人员根据经验从Tarce1与Tarce2中间选取出TarceA与TarceB。
步骤103,在获取到所述基准功耗曲线之后,将所述测试码的高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1。
在获取到TarceA及TarceB之后,将MH的所有比特位的值设置为0,ML的所有比特位的值设置为1,此时M中的数据可以记为M3。
步骤104,根据所述测试码中的数据及所述基准功耗曲线,对所述测试码第t-1比特位的值进行修正。
在对第t-1比特位,即ML的最高比特位的值进行设置时,首先使用已知的公钥对M中当前的数据M3,进行加密生成第三结果C3;把C3输入被攻击芯片进行签名或解密处理。获取被测安全芯片对C3进行处理的处理过程对应的第三功耗曲线Tarce3;在获取到Tarce3之后,从Tarce3中获取被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线作为第一对比曲线Tarce(t-1),其中Tarce(t-1)可以是Tarce3的一部分,技术人员可以根据功耗曲线的特征确定Tarce3的某部分为Tarce(t-1),具体的确定方法在此就不再赘述。比较Tarce(t-1)与TarceA在功耗上是否一致;当Tarce(t-1)与TarceA在功耗上一致时,将ML第t-1比特位的值设置为1,或者,当Tarce(t-1)与TarceA在功耗上不一致时,将ML第t-1比特位的值设置为0。
步骤105,在所述第t-1比特位的值修正完成后,根据对所述测试码第i比特位的值修正后所述测试码中的数据及所述基准功耗曲线,对所述测试码第i-1比特位的值进行修正,其中i属于[2,t-1]。
在第t-1比特位,即ML的最高比特位的值修正完成后,按照从高比特位到低比特位的顺序,逐比特位设置第t-2比特位到第1比特位每一个比特位的值。
具体来说,如果i属于[2,t-1],在对第i-1比特位的值进行设置时,首先获取对ML第i比特位的值进行设置后所述测试码M中的数据M(i);使用已知的公钥对M(i)进行加密生成第四结果C(i);将C(i)输入所述被测安全芯片进行签名或解密处理,获取所述被测安全芯片对C(i)进行处理的处理过程对应的第四功耗曲线Tarce4;从Tarce4中获取第二对比曲线Tarce(i),其中Tarce(i)为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线;比较Tarce(i)与TarceA在功耗上是否一致;当Tarce(i)与TarceA在功耗上一致时,将ML第i-1比特位的值设置为1,或者,当Tarce(i)与TarceA在功耗上不一致时,将ML第i-1比特位的值设置为0。
步骤106,在所述低半部分除第0比特位外的其他比特位的值修正完成后,根据所述基准功耗曲线对所述测试码中的数据进行验证。
在按照从高到低的顺序将测试码M第t-2比特位到第1比特位的值修正完成后,即ML除第0比特位外的其他比特位的值均修正完成后,获取M中的数据M4;使用已知的公钥对M4进行加密生成第五结果C4;获取所述被测安全芯片对C4进行处理过程的第五功耗曲线Tarce5;从Tarce5中获取第三对比曲线Tarce(0),Tarce(0)为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线;比较Tarce(0)与TarceB在功耗上是否一致。
步骤107,当所述测试码中的数据通过验证时,获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
当所述第三对比曲线Tarce(0)与所述第二基准功耗曲线TarceB在功耗上一致时,可以认为低半部分ML的比特值通过验证,此时所述测试码M中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
从上述实施例可以看出,采用本实施例提供的方法,可以通过对测试码中预设的数据进行逐比特位修正,使测试码中的数据不断逼近安全芯片的RSA算法私钥元素,最终使测试码中的数据等于被测安全芯片的RSA算法私钥元素,从而获得安全芯片的RSA算法的一个私钥元素。该私钥元素即为生成RSA算法密钥的一个素数,通过该素数可以很容易的获取到另一个素数及其他的私钥元素,即,通过该私钥元素可以很容易获取到其他的私钥元素。
参见图2,为本发明安全芯片中的RSA算法私钥元素获取方法另一个实施例的流程图,该实施例详细说明了获取RSA算法私钥元素的过程。
步骤201,设置测试码,所述测试码的比特位长等于被测安全芯片的RSA公钥模的比特位长,所述测试码由比特位长均为t的高半部分和低半部分组成;
步骤202,将所述测试码高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1,生成第一值;
步骤203,使用公钥对所述第一值进行加密生成第一结果;
步骤204,获取第一功耗曲线,所述第一功耗曲线为所述被测安全芯片以所述第一结果为输入进行处理的处理过程对应的功耗曲线;
步骤205,将所述测试码的第0比特位及第1比特位的值设置为1,其余比特位的值设置为0,生成第二值;
步骤206,使用公钥对所述第二值进行加密生成第二结果;
步骤207,获取第二功耗曲线,所述第二功耗曲线为所述被测安全芯片以所述第二结果为输入进行处理的处理过程对应的功耗曲线;
步骤208,对所述第一功耗曲线与所述第二功耗曲线进行分析,得出安全芯片只执行一次减法运算的第一基准功耗曲线,及所述被测安全芯片执行一次减法并执行一次加法运算的第二基准功耗曲线;
步骤209,在获取到所述基准功耗曲线之后,将所述测试码的高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1;
步骤210,使用公钥对测试码中的数据进行加密生成第三结果;
步骤211,获取第三功耗曲线,所述第三功耗曲线为所述被测安全芯片以所述第三结果为输入进行处理的处理过程对应的功耗曲线;
步骤212,从所述第三功耗曲线中获取第一对比曲线,所述第一对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;
步骤213,比较所述第一对比曲线与所述第一基准功耗曲线在功耗上是否一致;
步骤214,如果所述第一对比曲线与所述第一基准功耗曲线在功耗上一致,则将所述测试码第t-1比特位的值设置为1,或者,如果所述第一对比曲线与所述第一基准功耗曲线在功耗上不一致,则将所述测试码第t-1比特位的值设置为0;
步骤215,在第i比特位的值设置完成后,使用公钥对所述测试码中的数据进行加密生成第四结果,其中i属于[2,t-1];
步骤216,获取第四功耗曲线,所述第四功耗曲线为所述被测安全芯片以所述第四结果为输入进行处理的处理过程对应的功耗曲线;
步骤217,从所述第四功耗曲线中获取第二对比曲线,所述第二对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;
步骤218,比较所述第二对比曲线与所述第一基准功耗曲线在功耗上是否一致;
步骤219,如果所述第二对比曲线与所述第一基准功耗曲线在功耗上一致,则将所述低半部分第i-1比特位的值设置为1,或者,如果所述第二对比曲线与所述第一基准功耗曲线在功耗上不一致,则将所述低半部分第i-1比特位的值设置为0,其中i属于[2,t-1];
步骤220,在第1比特位的值设置完成后,使用公钥对所述测试码中的数据进行加密生成第五结果;
步骤221,获取第五功耗曲线,所述第五功耗曲线为所述被测安全芯片以所述第五结果为输入进行处理的处理过程对应的功耗曲线;
步骤222,从从所述第五功耗曲线中获取第三对比曲线,所述第三对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;
步骤223,比较所述第三对比曲线与所述第二基准功耗曲线在功耗上是否一致;
步骤224,如果所述第三对比曲线与所述第二基准功耗曲线在功耗上一致,则获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
从上述实施例可以看出,采用实施例提供的方法,通过对测试码中预设的数据逐比特位进行修正改,使测试码中的数据不断逼近安全芯片的RSA算法私钥元素,最终使测试码中的数据等于被测安全芯片的RSA算法私钥元素,从而获得安全芯片的RSA算法的一个私钥元素。
与本发明安全芯片中的RSA算法私钥元素获取方法相对应,本发明还提供了安全芯片中的RSA算法私钥元素获取装置。
参见图3,为本发明安全芯片中的RSA算法私钥元素获取装置一个实施例框图。
该装置包括:设置单元301,获取单元302,预设单元303,第一修正单元304,第二修正单元305,验证单元306,确定单元307。
其中,所述设置单元301,用于设置测试码,所述测试码的比特位长等于被测安全芯片的RSA公钥模的比特位长,所述测试码由比特位长均为t的高半部分和低半部分组成;
所述获取单元302,用于利用所述利用设置单元301设置的所述测试码获取所述被测安全芯片的基准功耗曲线;
图4为本发明安全芯片中的RSA算法私钥元素获取装置的获取单元的一个实施例框图。获取单元302可以包括:第一值设置子单元401,第一加密子单元402,第一获取子单元403,第二值设置子单元404,第二加密子单元405,第二获取子单元406,曲线获取子单元407。
第一值设置子单元401,用于将所述测试码高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1,生成第一值;第一加密子单元402,用于使用公钥对所述第一值设置子单元401设置的所述第一值进行加密生成第一结果;第一获取子单元403,用于获取第一功耗曲线,所述第一功耗曲线为所述被测安全芯片以所述第一加密子单元402生成的所述第一结果为输入进行处理的处理过程对应的功耗曲线;第二值设置子单元404,用于在所述第一获取子单元403获取到所述第一功耗曲线后,将所述测试码的第0比特位及第1比特位的值设置为1,其余比特位的值设置为0,生成第二值;第二加密子单元405,用于使用公钥对所述第二值设置子单元404设置的所述第二值进行加密生成第二结果;第二获取子单元406,用于获取第二功耗曲线,所述第二功耗曲线为所述被测安全芯片以所述第二加密子单元405生成的所述第二结果为输入进行处理的处理过程对应的功耗曲线;曲线获取子单元407,用于对所述第一获取子单元403获取的所述第一功耗曲线与所述第二获取子单元406获取的所述第二功耗曲线进行分析,得出安全芯片只执行一次减法运算的第一基准功耗曲线,及所述被测安全芯片执行一次减法并执行一次加法运算的第二基准功耗曲线。
所述预设单元303,用于在所述获取单元302获取到所述基准功耗曲线之后,将所述测试码的高半部分所有比特位的值设置为0,低半部分所有比特位的值设置为1;
所述第一修正单元304,用于根据所述获取单元303获取到的所述测试码中的数据及所述获取单元302获取到的所述基准功耗曲线,对所述测试码第t-1比特位的值进行修正;
图5为本发明安全芯片中的RSA算法私钥元素获取装置的第一修正单元的一个实施例框图。第一修正单元可以包括:第三加密子单元501,第三获取子单元502,第一生成子单元503,第一比较子单元504,第一确定子单元505。
第三加密子单元501,用于使用公钥对测试码中的数据进行加密生成第三结果;第三获取子单元502,用于获取第三功耗曲线,所述第三功耗曲线为所述被测安全芯片以所述第三加密子单元501生成的所述第三结果为输入进行处理的处理过程对应的功耗曲线;第一生成子单元503,用于从所述第三获取子单元502获取的所述第三功耗曲线中获取第一对比曲线,所述第一对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;第一比较子单元504,用于比较所述第一生成子单元503获取的所述第一对比曲线与所述第一基准功耗曲线在功耗上是否一致;第一确定子单元505,用于经过所述第一比较子单元504的比较,如果所述第一对比曲线与所述第一基准功耗曲线在功耗上一致,则将所述测试码第t-1比特位的值设置为1,或者,如果所述第一对比曲线与所述第一基准功耗曲线在功耗上不一致,则将所述测试码第t-1比特位的值设置为0。
所述第二修正单元305,用于在第一修正单元304对所述第t-1比特位的值修正完成后,根据对所述测试码第i比特位的值修正后所述测试码中的数据及所述获取单元302获取到的所述基准功耗曲线,对所述测试码第i-1比特位的值进行修正,其中i属于[2,t-1];
图6为本发明安全芯片中的RSA算法私钥元素获取装置的第二修正单元的一个实施例框图。该第二修正单元包括:第四加密子单元601,第四获取子单元602,第二生成子单元603,第二比较子单元604,第二确定子单元605。
第四加密子单元601,用于在第i比特位的值设置完成后,使用公钥对所述测试码中的数据进行加密生成第四结果,其中i属于[2,t-1];第四获取子单元602,用于获取所述第四功耗曲线,所述第四功耗曲线为所述被测安全芯片以所述第四加密子单元601生成的所述第四结果为输入进行处理的处理过程对应的功耗曲线;第二生成子单元603,用于从所述第四获取子单元602获取的所述第四功耗曲线中获取第二对比曲线,所述第二对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;第二比较子单元604,用于比较所述第二生成子单元603获取的所述第二对比曲线与所述第一基准功耗曲线在功耗上是否一致;第二确定子单元605,用于经过所述第二比较子单元604的比较,如果所述第二对比曲线与所述第一基准功耗曲线在功耗上一致,则将所述低半部分第i-1比特位的值设置为1,或者,如果所述第二对比曲线与所述第一基准功耗曲线在功耗上不一致,则将所述低半部分第i-1比特位的值设置为0,其中i属于[2,t-1]。
所述验证单元306,用于在第二修正单元305对所述低半部分除第0比特位外的其他比特位的值修正完成后,根据所述所述获取单元302获取到的基准功耗曲线对所述测试码中的数据进行验证;
图7为本发明安全芯片中的RSA算法私钥元素获取装置的验证单元的一个实施例框图。该验证单元包括:第五加密子单元701,第五获取子单元702,第三生成子单元703,第三比较子单元704。
第五加密子单元701,用于在第1比特位的值设置完成后,使用公钥对所述测试码中的数据进行加密生成第五结果;第五获取子单元702,用于获取所述第五功耗曲线,所述第五功耗曲线为所述被测安全芯片以所述第五加密子单元701生成的所述第五结果为输入进行处理的处理过程对应的功耗曲线;第三生成子单元703,用于从所述第五获取子单元702获取的所述第五功耗曲线中获取第三对比曲线,所述第三对比曲线为被测安全芯片执行(SP-SQ)mod P运算的处理过程对应的功耗曲线,其中SP为第一中间数据,SQ为第二中间数据,P为第一私钥元素;第三比较子单元704,用于比较所述第三生成子单元703获取的所述第三对比曲线与所述第二基准功耗曲线在功耗上是否一致。
所述确定单元307,用于当所述测试码中的数据通过所述验证单元306的验证时,获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
所述当验证单元306包含上述子单元时,所述确定单元307,具体用于当经过所述第三比较子单元704的比较,所述第三对比曲线与所述第二基准功耗曲线在功耗上一致时,获取所述测试码中的数据,所述测试码中的数据即为所述被测安全芯片中的一个RSA算法私钥元素。
从上述实施例可以看出,采用本实施例提供的装置,可以通过对测试码中的数据进行修改,使测试码中的数据不断逼近安全芯片的RSA算法私钥元素,最终使测试码中的数据等于被测安全芯片的RSA算法私钥元素,从而获得安全芯片的RSA算法私钥元素。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。