安全芯片的公钥防护方法及公钥防护系统与流程

文档序号:16210544发布日期:2018-12-08 07:41阅读:326来源:国知局
安全芯片的公钥防护方法及公钥防护系统与流程

本发明涉及安全芯片设计领域,特别涉及一种安全芯片的公钥防护方法及公钥防护系统。

背景技术

在席卷全球的信息化革命中,信息技术发展作为推动社会进步与发展的强有力因素,极大地影响着人们的工作、生活和学习方式,但在给社会带来巨大便利的同时,也带来了一个严峻的安全挑战。随着信息安全攻击技术的不断发展,信息安全的攻击方向逐渐从软件向硬件甚至是集成电路转移。针对芯片的安全性出现了许多攻击或破解方法,差分功耗分析攻击和故障攻击是具有代表性且对智能卡芯片威胁性较强的两种攻击方法。

现有的抗故障攻击的方法多是从算法的角度出发,通过两次运算,在运算结束后将两次运算进行结果对比,或者是在芯片中插入一些检测电路来检测电压或者电流的抖动、毛刺,来检测是否受到了攻击。对于公钥算法,可以通过修改算法或者算法流程,分两次输入参数,分别进行两次部分的算法运算,然后将两个算法结果进行对比;或者是在一次签名运算完再运算一次验签运算来进行验证。

现有的抗故障攻击方法的缺点在于:对于计算复杂、规模庞大的公钥算法,进行多次运算比对结果来抗故障攻击的方法或者先签名后验签的方法,大大增加了公钥运算的时间,性能牺牲太大,而且对于公钥算法,这种多次运算的方法往往仅仅只能是验证了部分的运算流程,所以并不能检测出整个算法期间的故障攻击,也不能对寄存器进行实时检测。

现有的抗差分功耗分析攻击的方法,多是通过对幂指数、底数或者模数使用掩码技术,或者修改模幂算法的伪运算方案,增加多次模乘或者乘法等方法来抵抗差分功耗分析攻击。

现有抗差分功耗分析攻击的方法的缺点在于:虽然有了很多伪运算可以混淆真实运算,但由于真数据需要存储而伪运算不存储导致的功耗差异可以直接将伪运算暴露。而即便将真伪运算均进行存储,攻击者还可以在芯片上通过电磁分析来检测出真数据存储的区域和伪运算存储的区域,依旧可以区分出来真伪运算。

公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。



技术实现要素:

本发明的目的在于提供一种安全芯片的公钥防护方法,能够在不增加公钥算法的运算时间的前提下,实时对公钥算法模块的整个流程进行故障攻击的检测。

为实现上述目的,本发明提供了一种安全芯片的公钥防护方法。该方法包括以下内容:在公钥运算启动前,计算并存储所述安全芯片的配置寄存器中的所有初值的校验值;在公钥运算启动后,实时对所述安全芯片的配置寄存器中的值进行校验,若校验失败,则终止运算并报错。

在一优选的实施方式中,所述公钥防护方法还包括:将准备写入所述安全芯片的第一寄存器堆的数据进行加密;计算加密后的数据的校验值;将所述加密后的数据及其校验值均存储在所述第一寄存器堆中;读取该第一寄存器堆的数据时,先进行数据校验,若校验失败,则终止运算并报错,若校验成功,则解密该第一寄存器堆的数据。

在一优选的实施方式中,所述第一寄存器堆的数据包括在公钥运算启动前cpu写入的数据以及在公钥运算启动后所有的运算数据。

在一优选的实施方式中,所述公钥防护方法还包括:在所述安全芯片中加入真乘法运算和伪乘法运算,所述伪乘法运算与所述真乘法运算的电路相同;执行所述真乘法运算和所述伪乘法运算,产生真伪数据;将所述真伪数据进行加密;计算加密后的真伪数据的校验值;将所述加密后的真伪数据及其校验值均存储在第二寄存器堆中;读取该第二寄存器堆的数据时,先进行数据校验,若校验失败,则终止运算并报错,若校验成功,则解密该第二寄存器堆的数据。

在一优选的实施方式中,所述伪乘法运算在所述安全芯片的模幂运算单元中实现。

在一优选的实施方式中,当扫描幂指数时,该幂指数的当前位为0时,执行所述伪乘法运算;当扫描幂指数时,该幂指数的当前位为1时,执行所述真乘法运算。

在一优选的实施方式中,将所述第二寄存器堆中的真伪数据及其校验值进行统一编写存储地址,并将所述存储地址进行扰乱。

本发明还提供了一种安全芯片的公钥防护系统,其包括:配置寄存器的初始校验值计算模块、配置寄存器实时校验模块。配置寄存器的初始校验值计算模块用于在公钥运算启动前,计算并存储所述安全芯片的配置寄存器中的所有初值的初始校验值。配置寄存器实时校验模块与所述配置寄存器的初始校验值计算模块相耦合,用于在公钥运算启动后,实时对所述安全芯片的配置寄存器中的值进行校验,若校验失败,则终止运算并报错。

在一优选的实施方式中,所述配置寄存器实时校验模块包括:新的校验值计算模块、比对模块。新的校验值计算模块用于在每个运算的时钟周期内均将所述配置寄存器的当前值进行校验值的计算,获得新的校验值,其中,所述得到新的校验值的计算方法与得到所述初始校验值的计算方法相同。比对模块与所述新的校验值计算模块和所述配置寄存器的初始校验值计算模块均相耦合,用于将所述新的校验值和已经存储的初始校验值进行比对,若校验值不一致,则校验失败。

在一优选的实施方式中,所述公钥防护系统还包括:第一加密模块、加密数据的校验值计算模块、读取模块。第一加密模块用于将准备写入所述安全芯片的第一寄存器堆的数据进行加密。加密数据的校验值计算模块与所述加密模块相耦合,用于计算加密后的数据的校验值并将所述加密后的数据及其校验值均存储在所述第一寄存器堆中。读取模块与所述加密数据的校验值计算模块相耦合,用于读取该第一寄存器堆的数据并进行数据校验,若校验失败,则终止运算并报错,若校验成功,则解密该第一寄存器堆的数据。

在一优选的实施方式中,所述第一寄存器堆的数据包括在公钥运算启动前cpu写入的数据以及在公钥运算启动后所有的运算数据。

在一优选的实施方式中,所述公钥防护系统还包括:真乘法运算和伪乘法运算植入模块、执行运算模块、第二加密模块、真伪数据的校验值计算模块、真伪数据的校验值存储模块、真伪数据读取模块。真乘法运算和伪乘法运算植入模块用于在所述安全芯片中的安全算法中加入真乘法运算和伪乘法运算,所述伪乘法运算与所述真乘法运算的电路相同。执行运算模块与所述真乘法运算和伪乘法运算植入模块相耦合,用于执行所述真乘法运算和所述伪乘法运算并产生真伪数据。第二加密模块与所述执行运算模块相耦合,用于将所述真伪数据进行加密。真伪数据的校验值计算模块与所述第二加密模块相耦合,用于计算加密后的真伪数据的校验值。真伪数据的校验值存储模块与所述真伪数据的校验值计算模块相耦合,用于将所述加密后的真伪数据及其校验值均存储在第二寄存器堆中。真伪数据读取模块与所述真伪数据的校验值存储模块相耦合,用于读取该第二寄存器堆的数据时,先进行数据校验,若校验失败,则终止运算并报错,若校验成功,则解密该第二寄存器堆的数据。

在一优选的实施方式中,所述伪乘法运算在所述安全芯片的模幂运算单元中实现。

在一优选的实施方式中,所述执行运算模块包括扫描模块,扫描模块与所述真乘法运算和伪乘法运算植入模块相耦合,用于扫描真乘法运算和伪乘法运算中的幂指数,当扫描到该幂指数的当前位为0时,所述执行运算模块执行所述伪乘法运算;当扫描到该幂指数的当前位为1时,所述执行运算模块执行所述真乘法运算。

在一优选的实施方式中,所述真伪数据的校验值存储模块包括地址编写及扰乱模块。该地址编写及扰乱模块用于将所述加密后的真伪数据及其校验值进行统一编写存储地址,并将所述存储地址通过扰乱算法进行扰乱。

在一优选的实施方式中,所述真伪数据读取模块包括地址解析模块。地址解析模块用于通过所述扰乱算法逆向解析出该第二寄存器堆的数据的扰乱前的存储地址。

与现有技术相比,根据本发明的安全芯片的公钥防护方法具有如下有益效果:本发明通过对配置寄存器的数据进行实时校验,以及对寄存器堆的所有数据进行读写校验,可以实时地监测整个公钥算法过程是否受到了故障攻击,并且该抵抗故障攻击的方法没有牺牲公钥算法的运算时间。此外本发明还使用同一个乘法算法进行真伪乘法运算,并且将真伪乘法运算的运算结果的存储区统一编址并打乱地址,能够使得真伪运算的功耗更难区分,所以即便是电磁分析,也无法在芯片上对真伪运算进行定位区分,,从而有效地抵抗了差分功耗分析攻击。因此本发明不仅提升了公钥算法的性能,也极大地增强了公钥的安全性。

附图说明

图1是根据本发明一优选的实施方式的公钥安全防护方法的抗故障攻击法;

图2是根据本发明一优选的实施方式的公钥安全防护方法的抗差分功耗分析攻击法;

图3是根据本发明一优选的实施方式的公钥安全防护系统的用于抗故障攻击的结构示意图;

图4是根据本发明一优选的实施方式的公钥安全防护方法的用于抗差分功耗分析攻击的结构示意图。

具体实施方式

下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。

除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。

本发明重点考虑差分功耗分析攻击和故障攻击这两种具有代表性的攻击方法,提供了一种安全芯片的公钥防护方法,能够在不增加公钥算法的运算时间的前提下,实时对公钥算法模块的整个流程进行故障攻击的检测,而且可以有效抵抗差分功耗分析攻击。其原理是通过对寄存器数据进行实时校验、对寄存器堆的数据进行读写校验来检测是否在运算过程中算法受到了故障攻击,同时还使用同一个乘法算法进行真伪乘法运算,并且将真伪乘法运算的运算结果的存储区统一编址并打乱地址,能够使得真伪运算的功耗更难区分,即便是电磁分析也无法在芯片上对真伪运算数据进行定位区分,从而有效地抵抗了差分功耗分析攻击。

图1是根据本发明一优选的实施方式的公钥安全防护方法的抗故障攻击法。

该抗故障攻击法包括:在公钥运算启动之前,将配置寄存器11的所有初值进行校验值的计算并存储该校验值;在启动公钥运算之后,在每个运算的时钟周期内均将配置寄存器的值在按照相同的算法进行校验值的计算,获得的新的校验值和其已经存储的最初的校验值进行比对验证,从而达到运算期间内实时检测公钥算法是否受到了攻击。若上述两个校验值不一致,则校验失败就代表公钥算法受到了故障攻击,配置寄存器11的值已经被篡改,校验失败将中止运算并报错。

优选地,该实施方式中,该抗故障攻击法还包括:在公钥运算之前,cpu10通过ahb数据总线将数据从写缓存寄存器12写入第一寄存器堆13时,先进行数据加密,并计算加密数据的校验值,将校验值连同加密数据一起存储到第一寄存器堆13中。读取这些数据时,需要先将这些数据计算校验值,获得当前数据的新的校验值,并将该新的校验值与已经存储并读出的原校验值进行比对,若比对的两个校验值不一致,则说明检测数据在存储过程中受到了故障攻击,完成校验后再进行解密运算,将运算结果输出至读缓存寄存器14。如果校验错误,则说明公钥运算受到了故障攻击,第一寄存器堆13的数据已被攻击篡改,此时将中止运算并报错。

在公钥运算过程中,所有的公钥运算数据从写缓存寄存器12写入第一寄存器堆13也需要经过同样的流程。先进行数据加密,并计算加密数据的校验值,将校验值连同加密数据一起存储到第一寄存器堆13中。读取这些数据时,需要先将这些数据计算校验值,获得当前数据的新的校验值,并将该新的校验值与已经存储并读出的原校验值进行比对,来检测数据在存储过程中是否受到了故障攻击,完成校验后再进行解密运算,将运算结果输出至读缓存寄存器14。如果校验错误,则说明公钥运算受到了故障攻击,第一寄存器堆13的数据已被攻击篡改,此时将中止运算并报错。

现有的抵抗故障攻击方法通过在公钥算法中进行多次运算,比较多次运算的结果来判断是否存在故障攻击,运算量大大增加,而本发明的抵抗故障攻击的方法大大减少了运算量,并没有增加公钥算法的运算时间。

图2是根据本发明一优选的实施方式的公钥安全防护方法的抗差分功耗分析攻击法。在该实施方式中,为了抵抗差分功耗分析攻击,在安全芯片的模幂运算单元20中的乘法运算模块20a中增加了伪乘法运算。在扫描幂指数时,如果幂指数的当前位为1时执行真乘法运算,如果幂指数的当前位为0,则执行伪乘法运算。真伪乘法运算的电路完全相同,而且真伪乘法运算的结果均进行加密后连同运算结果的校验值一并存储到第二寄存器堆21中。优选地,该第二寄存器堆21包含于所述第一寄存器堆13中。为了掩盖真运算和伪运算的功耗信息,在存储时将真伪存储单元进行统一编址,并将存储地址通过私有的扰乱算法进行扰乱,使得扰乱后的地址和原存储地址在逻辑上是一一对应的,在读取时,根据该私有的扰乱算法可以逆向推导出扰乱后的地址对应的原地址,从而将对应的数据读取出来,该私有的扰乱算法外界无法获得,即便是电磁分析也无法在芯片上对真伪运算数据进行定位区分,从而有效地抵抗了差分功耗分析攻击。

本发明还提供了一种安全芯片的公钥防护系统。该系统分为两部分结构,一部分用于抵抗故障攻击,一部分用于抵抗差分功耗分析攻击。

图3是根据本发明一优选的实施方式的公钥安全防护系统的用于抗故障攻击的结构示意图。

该用于抗故障攻击的结构包括:配置寄存器的初始校验值计算模块30、配置寄存器实时校验模块31。配置寄存器的初始校验值计算模块30用于在公钥运算启动前,计算并存储所述安全芯片的配置寄存器11中的所有初值的初始校验值。配置寄存器实时校验模块31用于在公钥运算启动后,实时对所述安全芯片的配置寄存器11中的值进行校验,若校验失败,则终止运算并报错。配置寄存器实时校验模块31包括:新的校验值计算模块31a、比对模块31b。新的校验值计算模块31a用于在每个运算的时钟周期内均将所述配置寄存器11的当前值进行校验值的计算,获得新的校验值,其中,所述得到新的校验值的计算方法与得到所述初始校验值的计算方法相同。比对模块31b用于将所述新的校验值和已经存储的初始校验值进行比对,若校验值不一致,则校验失败。

为了更进一步防御故障攻击,优选地,该用于抗故障攻击的结构还可以包括:第一加密模块32、加密数据的校验值计算模块33、读取模块34。第一加密模块32用于将准备写入所述安全芯片的第一寄存器堆13的数据进行加密。优选地,第一寄存器堆13的数据包括在公钥运算启动前cpu写入的数据以及在公钥运算启动后所有的运算数据。加密数据的校验值计算模块33用于计算加密后的数据的校验值并将所述加密后的数据及其校验值均存储在所述第一寄存器堆13中。读取模块34用于读取该第一寄存器堆13的数据并进行数据校验,若校验失败,则终止运算并报错,若校验成功,则解密该第一寄存器堆的数据。

图4是根据本发明一优选的实施方式的公钥安全防护方法的用于抗差分功耗分析攻击的结构示意图。

该用于抗差分功耗分析攻击的结构包括:真乘法运算和伪乘法运算植入模块40、执行运算模块41、第二加密模块42、真伪数据的校验值计算模块43、真伪数据的校验值存储模块44、真伪数据读取模块45。

真乘法运算和伪乘法运算植入模块40用于在所述安全芯片中的安全算法中加入真乘法运算和伪乘法运算,所述伪乘法运算与所述真乘法运算的电路相同。优选地,所述伪乘法运算在所述安全芯片的模幂运算单元20中实现。

执行运算模块41用于执行所述真乘法运算和所述伪乘法运算并产生真伪数据。所述执行运算模块41包括扫描模块41a,扫描模块41a与所述真乘法运算和伪乘法运算植入模块40相耦合,用于扫描真乘法运算和伪乘法运算中的幂指数,当扫描到该幂指数的当前位为0时,所述执行运算模块执行所述伪乘法运算;当扫描到该幂指数的当前位为1时,所述执行运算模块执行所述真乘法运算。

第二加密模块42用于将所述真伪数据进行加密。

真伪数据的校验值计算模块43用于计算加密后的真伪数据的校验值。

真伪数据的校验值存储模块44用于将所述加密后的真伪数据及其校验值均存储在第二寄存器堆21中。真伪数据的校验值存储模块44包括地址编写及扰乱模块44a。该地址编写及扰乱模块44a用于将所述加密后的真伪数据及其校验值进行统一编写存储地址,并将所述存储地址通过扰乱算法进行扰乱。

真伪数据读取模块45用于读取该第二寄存器堆21的数据时,先进行数据校验,若校验失败,则终止运算并报错,若校验成功,则解密该第二寄存器堆21的数据。真伪数据读取模块45包括地址解析模块45a。地址解析模块45a用于通过所述扰乱算法逆向解析出该第二寄存器堆21的数据的扰乱前的存储地址。

综上,本发明通过对配置寄存器的数据进行实时校验,以及对寄存器堆的所有数据进行读写校验,可以实时地监测整个公钥算法过程是否受到了故障攻击,并且该抵抗故障攻击的方法没有牺牲公钥算法的运算时间。此外本发明还使用同一个乘法算法进行真伪乘法运算,并且将真伪乘法运算的运算结果的存储区统一编址并打乱地址,能够使得真伪运算的功耗更难区分,所以即便是电磁分析,也无法在芯片上对真伪运算数据进行定位区分,从而有效地抵抗了差分功耗分析攻击。因此本发明不仅提升了公钥算法的性能,也极大地增强了公钥的安全性。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用于说明本发明的技术方案而非对其保护范围的限制,尽管参照上述实施例对本申请进行了详细的说明,所属领域的普通技术人员应当理解:本领域技术人员阅读本申请后依然可对申请的具体实施方式进行种种变更、修改或者等同替换,但这些变更、修改或者等同替换,均在申请待批的权利要求保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1