CN101382978A - 安全芯片中对旁路攻击进行早期预警的方法 - Google Patents
安全芯片中对旁路攻击进行早期预警的方法 Download PDFInfo
- Publication number
- CN101382978A CN101382978A CNA2008101434483A CN200810143448A CN101382978A CN 101382978 A CN101382978 A CN 101382978A CN A2008101434483 A CNA2008101434483 A CN A2008101434483A CN 200810143448 A CN200810143448 A CN 200810143448A CN 101382978 A CN101382978 A CN 101382978A
- Authority
- CN
- China
- Prior art keywords
- register
- state
- unit
- private key
- value
- 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.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种安全芯片中对旁路攻击进行早期预警的方法,要解决的技术问题是在安全芯片中对旁路攻击进行早期预警。技术方案是设计由复位抑制单元、计数单元、预警单元以及现场保护与恢复单元组成的旁路攻击早期预警模块,将旁路攻击早期预警模块集成到安全芯片中,旁路攻击预警模块在安全芯片上电复位后始终处于活动状态,且周期性地计算并输出安全芯片遭受旁路攻击的概率大小。采用本发明可确定安全芯片遭受旁路攻击的概率,适用于各种旁路攻击,且旁路攻击早期预警模块自身具有非常高的安全性。
Description
技术领域
本发明属于信息安全领域,具体涉及一种在安全芯片中对旁路攻击进行早期预警的方法。
背景技术
随着社会信息化程度的提高,以智能卡为代表的安全芯片在各领域得到了非常广泛的应用。安全芯片的主要作用包括:数据的安全存储、数据加解密、数字签名与认证以及身份鉴别等。上述各种功能的实现有赖于现代密码算法,包括公钥密码算法、分组密码算法以及流密码算法等。公钥密码算法主要用于数字签名与认证以实现身份鉴别,如RSA(Rivest-Shamir-Adlemen)和ECC(Elliptic Curve Crypto-system:椭圆曲线密码算法);分组密码算法用于数据加解密,如DES(Data Encryption Standard:数据加密标准)和AES(Advanced Encryption Standard:高级加密标准);而流密码算法主要用于数据流的加解密,如RC4(Rivest Cipher 4)。因此,密码算法运算部件(软件模块或者硬件模块)是安全芯片中不可缺少的组成部分,且安全芯片内往往存储了用户的私有密钥。
安全芯片在应用系统中往往是安全控制核心和信任根源。受非法利益驱使,安全芯片往往受到恶意实体的非法破解和攻击。旁路攻击就是一种破解片内私有密钥的有效手段,这种攻击是一种被动攻击方式,并非破解密码算法本身,而是根据安全芯片执行密码算法时泄漏出的某些外在信息而破解片内私有密钥,常见的旁路攻击手段有:时间分析攻击(Timing Analysis Attack)、功耗攻击(Power Analysis Attack)、电磁辐射分析攻击(Electromagnetic Analysis Attack)以及错误注入攻击(Fault injection attack)。由于密码运算所需时间、功耗以及电磁辐射与具体的处理数据(包括密钥)相关,时间分析攻击、功耗攻击以及电磁辐射分析攻击利用这种相关性来破解密钥,旁路攻击所用到的运算时间、功耗以及电磁辐射等信息称为旁路信息。旁路攻击主要包括两个步骤:一是数据采集,也就是采集安全芯片执行密码算法时的旁路信息的大量样本;二是数据分析,也就是根据旁路信息与密钥之间的相关性,运用数理统计技术分析出私有密钥的值。在数据采集阶段,攻击者一般将PC(Personal Computer)机与安全芯片通过某种接口(如RS232即串口)相连,PC机向安全芯片输入随机的明文,并控制安全芯片以使其连续的执行大量密码算法加(解)密运算;旁路信息采集所需的设备较为简单,比如采集功耗样本可使用数字示波器;采集到的旁路信息样本存储于PC机中。数据分析阶段的运算在PC机上完成,与安全芯片无关。旁路攻击无需昂贵的仪器设备,实施手段简单。因此旁路攻击对安全芯片构成了严重的安全威胁。已有众多的文献报道,采用旁路攻击特别是功耗攻击手段成功破解了多款不同类型的安全芯片。这也要求安全芯片必须具有抗旁路攻击的防御能力。
当前关于旁路攻击的相关研究主要集中在旁路攻击的被动防护技术上,也就是改进密码算法的具体实现,使得旁路攻击理论上或者实际上不可行。从防护技术所达到的效果来看,不同防护技术主要分为两类:一是消除旁路攻击漏洞,二是增大旁路攻击的难度。消除旁路攻击漏洞是指消除密钥与各旁路信息之间相关性,包括密钥与运算时间、功耗以及电磁辐射之间的相关性;常用的技术手段包括:采用统一的运算方法和电路来实现同一类型的操作,使得同一类型的操作具有相同的运算时间、采用随机掩码技术(用均匀分布的随机数与密码运算过程中的中间结果做异或操作,中间结果即被随机数掩码),以使得被掩码的中间结果同样为随机数,且其概率分布与密钥无关,从而消除旁路攻击漏洞。增大旁路攻击难度的主要目的在于使实施旁路攻击的难度增大到失去可行性的程度,常见的技术手段包括:随机化技术,比如在密码算法实现过程中插入随机冗余伪操作、运算流程随机化、插入随机的延时以及引入随机的功耗噪声等;恒定化技术,即使得安全芯片执行密码算法时所消耗的功耗等旁路信息几乎为恒定值,即大幅度削弱功耗与密钥之间的相关性,比如采用新型的具有功耗恒定特性的逻辑单元,如基于敏感放大器的逻辑(Sense Amplifier Based Logic:SABL)和基于掩码的双轨预充逻辑(MaskedDual-rail Pre-charging Logic:MDPL)等;功耗平滑技术,即保证安全芯片工作时的功耗在预定范围之内,增加额外电路对整个芯片的功耗进行动态补偿。
上述各种攻击防护手段都为被动防护方法,不管安全性是否遭受旁路攻击,防护手段均起作用。单纯的在安全芯片中引入被动的防护措施存在以下不足,一是带来大量不必要的额外开销,因为各种防护方法都不可避免的具有一定的额外开销,包括使得芯片面积增加、运算性能下降以及功耗增加等,如果在芯片未遭受攻击时同样启动防御机制,毫无疑问将带来不必要的开销;二是使得芯片内的防护措施失去针对性,即无论芯片处于何种状态都采用统一的应对措施,但实际上在不同情况下应灵活采取不同的对策:比如当芯片未遭受攻击时,应停用不必要的防护手段;当预测芯片可能正遭受旁路攻击时,启动特定防御机制以增大攻击的难度,或者采取拒绝服务,甚至自毁等措施。在安全芯片中,如果能够根据旁路攻击的特点和安全芯片的工作行为来预测芯片是否遭受旁路攻击以及可能性有多高(即发生的概率大小),则使得芯片具有主动防护能力,弥补上述不足。但关于在安全芯片中如何根据旁路攻击的特点进行早期预警还未见有公开的技术报导。
发明内容
本发明要解决的技术问题是:根据旁路攻击的特点和安全芯片的工作行为来计算安全芯片遭受旁路攻击的概率大小,即在安全芯片中对旁路攻击进行早期预警,这种预警信息有助于安全芯片采取有效的应对措施。
为解决上述技术问题,本发明的技术方案为:设计旁路攻击早期预警模块;将旁路攻击早期预警模块集成到安全芯片中;旁路攻击预警模块在安全芯片上电复位后始终处于活动状态,且周期性地(每隔一定的时钟周期数)计算安全芯片遭受旁路攻击的概率大小。
所述的旁路攻击早期预警模块的外部输入包括安全芯片内的系统复位信号和时钟信号,以及安全芯片内部互联总线(包括地址线、数据线和控制线);输出为以安全芯片内各个私钥为目标的旁路攻击的概率。
旁路攻击早期预警模块包括四个子模块:复位抑制单元、计数单元、预警单元以及现场保护与恢复单元。复位抑制单元以安全芯片内系统复位信号作为输入,与其它各子模块均相连,为其它各子模块产生内部复位信号,并保证各子模块在安全芯片上电至断电期间内仅复位一次。计数单元与其它各子模块均相连:从复位抑制单元获得复位信号;在复位时从现场保护与恢复单元获得初始状态信息,并将工作过程中的状态变化通过现场保护与恢复单元保存到非易失存储器中;以安全芯片内部互联总线信号作为输入,统计安全芯片在一定时间段内执行私钥加解密操作的次数;向预警单元提供私钥加解密操作次数的统计信息以使其计算安全芯片遭受旁路攻击的概率。预警单元同样与其它各子模块相连:从复位抑制单元获得复位信号;在复位时从现场保护与恢复单元获得初始状态信息,并将工作过程中的状态变化通过现场保护与恢复单元保存到非易失存储器中;从计数单元获得统计信息以计算旁路攻击概率。现场保护与恢复单元同样与其它各子模块相连,它在工作过程中,将计数单元和预警单元的状态更新保存在非易失存储器中,且在收到来自复位抑制单元的复位信号时,执行复位动作,从非易失存储器中恢复出状态信息,并提供给计数单元和预警单元。
本发明具体技术方案为:
第一步,按如下步骤设计旁路攻击早期预警模块:
步骤一,设计复位抑制单元,以系统复位信号作为输入,为旁路攻击早期预警模块产生内部复位信号,并保证在安全芯片上电至断电期间内仅复位一次。具体设计方法为:
步骤1)在复位抑制单元内设置寄存器FLGRST,其位数为NFLGRST,32≥NFLGRST≥16,在上电之后复位抑制单元复位之前,寄存器FLGRST的值处于不确定状态,即可能为任意值;
步骤2)设计有限状态机FSMRST,以控制FLGRST的状态,并产生有效的内部复位信号INTRST。FSMRST包括A0、A1、A2、以及A3四个状态,其状态转换过程是:
当状态机FSMRST接收到安全芯片中有效的系统复位信号(具体可能为同步复位或异步复位信号)时,如果寄存器FLGRST的值与预定义的常量CFLGRST不同,则状态机FSMRST进入A0状态,且INTRST为无效状态,并将寄存器FLGRST的值置为CFLGRST;常量CFLGRST是设计者指定的值,其海明重量为(NFLGRST/2),即CFLGRST中0和1的位数相同;
步骤二,设计计数单元监听安全芯片内部互联总线,以互联总线中地址线、数据线和控制线信号为输入,统计安全芯片在一定时间段内执行私钥加解密操作的次数。具体设计方法为:
步骤1)设置NC(NC≥1)个时钟周期计数寄存器REGCLK1,REGCLK2,...,REGCLKi,...,REGCLKNC(1≤i≤NC);其中NC为安全芯片中密码算法运算模块(包括软件模块和硬件协处理器)的个数,各密码算法运算模块分别记为CRP1,...,CRPi,...,CRPNC;各寄存器的位数分别为NCLK1,NCLK2,...,NCLKi,...,NCLKNC,NCLKi>8。在每个时钟周期内,各个时钟周期计数寄存器的值加1;第i个寄存器的位数决定了它的时钟周期计数的最大值为。对任意的寄存器REGCLKi而言,其位数必须满足如下条件: ;寄存器的值从0递增至MAXi的时间段称为一个计数周期,MAXi=MAXSKi×NCRPi,MAXSKi为一个计数周期内预期统计的私钥加解密操作的最大次数,由设计者指定,满足64≥MAXSKi≥16;NCRPi为密码运算模块CRPi执行私钥加解密操作所需的时钟周期数。
步骤2)设置NC组私钥加解密操作计数寄存器:REGSK[1][0],...,REGSK[1][i1],...,REGSK[1][K1-1],...,REGSK[m][0],...,REGSK[m][im],...,REGSK[m][Km-1],...,REGSK[NC][0],...,REGSK[NC][iNC],...,REGSK[NC][KNC-1],1≤m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1,其中K1,...,Km,...,KNC分别为与密码运算模块CRP1,...,CRPm,...,CRPNC相关的片内私钥的个数;如果Km为0,则无需设置寄存器REGSK[m][0],...,REGSK[m][im],...,REGSK[m][Km-1];与各寄存器相关的私钥分别记为SK[1][0],...,SK[1][i1],...,SK[1][K1-1],...,SK[m][0],...,SK[m][im],...,SK[m][Km-1],...,SK[NC][0],...,SK[NC][iNC],...,SK[NC][KNC-1]。私钥加解密操作计数寄存器用于统计安全芯片在一次计数周期内执行的私钥加解密操作的次数,每当安全芯片执行私钥加解密操作,相应的寄存器的值加1。同一组私钥加解密操作计数寄存器也与同一个密码运算模块相关的一组寄存器的位数相同,各组私钥加解密操作计数寄存器的位数分别为NSK1,...,NSKm,...,NSKNC,且必须满足如下条件: ;
步骤3)设计NC个时钟周期计数控制有限状态机:FSMCLK1,...,FSMCLKj,...,FSMCLKNC以控制各时钟周期计数寄存器的值,其中1≤j≤NC,且这NC个时钟周期计数控制状态机的逻辑均相同。状态机FSMCLKj包括B0、B1、以及B2三个状态,其状态转换过程是:
当FSMCLKj收到来自复位抑制单元的有效内部复位信号INTRST时,FSMCLKj进入B0状态,令时钟周期计数寄存器REGCLKj的值为0,输出信号OVCLKj为0(表示计数未达到MAXi),以等待来自现场保护与恢复单元的初始值;
当FSMCLKj处于B1状态时,如果寄存器REGCLKj的值小于MAXi,则在时钟周期上升沿令寄存器REGCLKj的值加1,并保持在B1状态;如果寄存器REGCLKj的值等于MAXi,则令输出信号OVCLKj为1(表明时钟周期计数已达到一个计数周期),且FSMCLKj进入B2状态;
步骤4)设计NC个私钥加解密操作计数控制有限状态机:FSMSK1,...,FSMSKn,...,FSMSKNC,以控制各私钥加解密操作次数寄存器的值,1≤n≤NC,各私钥加解密操作计数控制状态机的逻辑均相同,其中FSMSKn控制第n组私钥加解密操作计数寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1]的值;状态机FSMSKn包括状态C0、C1、以及C2三个状态,其状态转换过程是:
当FSMSKn收到来自复位抑制单元的有效内部复位信号INTRST时,FSMSKn进入C0状态,令寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1]的值为0,以等待来自现场保护与恢复单元的初始值;
当FSMSKn处于C0状态时,如果来自现场保护与恢复单元的数据载入使能信号LDEN为有效,寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1]载入来自现场保护与恢复单元的初始值,且FSMSKn进入C1状态;
当FSMSKn处于C1状态时,如果根据安全芯片互联总线信号判断出安全芯片执行关于私钥SK[n][x]的加解密操作,则令寄存器REGSK[n][x]的值加1,其中0≤x≤Kn-1;如果OVCLKn有效,则FSMSKn进入C2状态;
当FSMSKn处于C2状态时,令寄存器REGSK[n][1],...,REGSK[n][k],...,REGSK[n][Kn]的值为0,且FSMSKn进入C1状态。
上述状态转换过程中提到的根据总线信号判断安全芯片是否执行私钥加解密操作的方法为:如果密码算法运算模块CRPn为软件模块,当片内微处理器核通过总线读取指令的地址位于CRPn的范围内,且微处理器核通过总线读取数据的地址与私钥SK[n][x]在非易失存储器中的存储地址相匹配,则安全芯片正在执行关于私钥SK[n][x]的加解密操作;如果密码算法运算模块CRPn为硬件协处理器,则根据片内微处理器核通过总线向CRPn发出的控制命令来确定是否执行关于私钥SK[n][x]的加解密操作,若控制命令是加密(或解密),且安全芯片通过总线读取非易失存储器中的私钥SK[n][x](或者密码算法运算模块CRPn直接通过总线读取私钥SK[n][x]),则安全芯片正在执行关于私钥SK[n][x]的加解密操作。
步骤三,设计预警单元,由预警单元根据计数单元中私钥加解密操作次数以及上一次的旁路攻击发生概率来确定芯片当前遭受旁路攻击的概率大小。具体设计方法为:
步骤1)设置私钥加解密操作计数暂存寄存器组,也就是与计数单元中私钥加解密操作计数寄存器一一对应的寄存器组,分别为REGSK1[1][0],...,REGSK1[1][i1],...,REGSK1[1][K1-1],...,REGSK1[m][0],...,REGSK1[m][im],...,REGSK1[m][Km-1],...,REGSK1[NC][0],...,REGSK1[NC][iNC],...,REGSK1[NC][KNC-1],1≤m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1。
步骤2)设置NC组与各个私钥相关的旁路攻击概率寄存器组,记录以各个私钥为破解目标的旁路攻击的概率大小,各寄存器分别为:REGP[1][0],...,REGP[1][i1],...,REGP[1][K1-1],...,REGP[m][0],...,REGP[m][im],...,REGP[m][Km-1],...,REGP[NC][0],...,REGP[NC][iNC],...,REGP[NC][KNC-1],各寄存器的位数均为NP(6≥NP≥4)。各寄存器的取值范围为0,1,2,...,p,...,2NP-1,所表示的概率大小分别为0,1/(2NP-1),2/(2NP-1),...,p/(2NP-1),...,1,其中0≤p≤2NP-1;因为旁路攻击早期预警模块只是预测安全芯片遭受旁路攻击的概率大小,不需要得出一个精确的值,因此采用整数编码而不是浮点数来近似表示攻击概率是完全可行的。
步骤3)设计旁路攻击概率计算部件,根据一个私钥加解密操作计数寄存器和与之对应的旁路攻击概率寄存器的值来计算以该私钥为目标的旁路攻击新的概率。旁路攻击概率计算部件由第一多路选择器和第二多路选择器组成,两个多路选择器串联,第一多路选择器的输出作为第二多路选择器的输入。以私钥SK[x][y](1≤x≤NC,0≤y≤Kx-1)为例,与之对应的私钥加解密操作计数寄存器为REGSK1[x][y],旁路攻击概率寄存器为REGP[x][y];以私钥SK[x][y]为目标的旁路攻击新的概率具体计算方法为:
以第一多路选择器的输出t(0≤t≤2NP-1)和旁路攻击概率寄存器REGP[x][y]的值u(0≤u≤2NP-1)作为第二多路选择器的输入,将t和u映射到区间[0,2NP-1]中的元素v,具体的映射方式为v=[w1t+w2u],w1和w2分别为t和u的权值,权值w1和w2为设计者确定的参数,满足如下条件:0≤w1,w2≤1,w1+w2=1。
步骤4)设计NC个旁路攻击概率计算控制有限状态机FSMALERT1,...,FSMALERTs,...,FSMALERTNC,以控制控制预警单元中各个寄存器的值,并计算旁路攻击的概率,1≤s≤NC,这NC个旁路攻击概率计算控制状态机的逻辑均相同;状态机FSMALERTs用于控制寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]的值,0≤is≤Ks-1。状态机FSMALERTs包括D0、D1、以及D2三个状态,其状态转换过程是:
当FSMALERTs收到来自复位抑制单元的有效内部复位信号INTRST时,FSMALERTs进入D0状态,令寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]的值均为0,以等待来自现场保护与恢复单元的初始值;
当FSMALERTs处于D0状态时,如果来自现场保护与恢复单元的数据载入使能信号LDEN为有效,令寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]载入来自现场保护与恢复单元的初始值,FSMALERTs进入D1状态;
当FSMALERTs处于D1状态时,如果来自计数单元的输入信号OVCLKs有效,则寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1]载入计数单元中REGSK[s][0],...,REGSK[s][is],...,REGSK[s][Ks-1]的值,FSMALERTs进入D2状态;
当FSMALERTs处于D2状态时,令旁路攻击概率计算部件依次计算以私钥SK[s][0],...,SK[s][is],...,SK[s][Ks-1]为破解目标的旁路攻击概率,也就是依次以寄存器对(REGSK[s][0],REGP[s][0]),...,(REGSK[s][is],REGP[s][is]),...,(REGSK[s][Ks-1],REGP[s][Ks-1])的值作为旁路攻击概率计算部件的输入,并依次将旁路攻击概率计算部件的输出更新到旁路攻击概率寄存器REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]中,FSMALERTs进入D1状态。
步骤四,设计现场保护与恢复单元,在旁路攻击早期预警模块复位时,恢复出计数单元和预警单元的状态,在工作过程中,及时保存计数单元和预警单元的状态改变,计数单元和预警单元的状态保存在非易失存储器中。具体设计方法为:
步骤1)设置与计数单元中时钟周期计数寄存器组、私钥加解密操作计数寄存器组、以及预警单元中与各个私钥相关的旁路攻击概率寄存器组分别对应的备份寄存器组,分别记为CLKBAK1,...,CLKBAKg,...,CLKBAKNC,SKBAK[1][0],...,SKBAK[1][i1],...,SKBAK[1][K1-1],...,SKBAK[m][0],...,SKBAK[m][im],...,SKBAK[m][Km-1],...,SKBAK[NC][0],...,SKBAK[NC][iNC],...,SKBAK[NC][KNC-1],PBAK[1][0],...,PBAK[1][i1],...,PBAK[1][K1-1],...,PBAK[m][0],...,PBAK[m][im],...,PBAK[m][Km-1],...,PBAK[NC][0],...,PBAK[NC][iNC],...,PBAK[NC][KNC-1],1≤g,m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1;
步骤2)设置一个NL(NCLKmin≥NL≥6,其中NCLKmin为各个时钟周期数寄存器的最小位数)位的循环计数器LPCNT,在内部复位INTRST有效时,LPCNT复位为0;然后在每个时钟周期,LPCNT的值加1;当LPCNT的值达到2NL-1时,下一时钟周期的计数将使得LPCNT的值恢复到0;
步骤3)设置一个非易失存储器MEM(如EEPROM或Flash),用于保存步骤1)中设置的各个备份寄存器的状态,设置一个32位的标志量LSFLG。各个寄存器在MEM中的存储地址分别记为ACLK1,...,ACLKg,...,ACLKNC,ASK[1][0],...,ASK[1][i1],...,ASK[1][K1-1],...,ASK[m][0],...,ASK[m][im],...,ASK[m][Km-1],...,ASK[NC][0],...,ASK[NC][iNC],...,ASK[NC][KNC-1],AP[1][0],...,AP[1][i1],...,AP[1][K1-1],...,AP[m][0],...,AP[m][im],...,AP[m][Km-1],...,AP[NC][0],...,AP[NC][iNC],...,AP[NC][KNC-1],且各寄存器在MEM中顺序编址,即ACLK1为最低地址,AP[NC][KNC-1]为最高地址;标志量LSFLG的存储地址为AFLG;MEM的控制接口包括如下信号:读写命令CMD(RD表示读操作,WR表示写操作,NOP表示无效操作)、地址ADDR、写操作的数据DATAWR、读操作的结果DATARSP、以及响应信号ACK(ACK为0表示MEM未完成当前读写命令,ACK为1表明MEM已完成当前读写命令);
步骤4)设计现场保护与恢复控制有限状态机FSMLS,以控制现场保护与恢复单元的行为。状态机FSMLS包括E0、E1、E2、E3、E4、E5、E6、以及E7等8个状态,其状态转换过程是:
当FSMLS收到来自复位抑制单元的有效内部复位信号INTRST时,FSMLS进入E0状态,此时现场保护与恢复单元内的各个寄存器均复位为0,且输出信号LDEN为0;向MEM发出读操作命令,即CMD为RD,ADDR为AFLG;
当FSMLS处于E0状态时,如果来自MEM的ACK有效且MEM返回的结果DATARSP不等于设计者预定义的常量CLS(CLS必须为0和1位数相等的常量,即CLS的海明重量为16),表明旁路攻击早期预警模块之前从未工作过,令LDEN为1(也就是计数单元和预警单元中各个寄存器的初始值均为0),且向MEM发写操作命令,即CMD为WR,ADDR为AFLG,且DATAWR为CLS,状态机FSMLS进入E1状态;如果ACK有效且MEM返回的结果DATARSP等于设计者预定义的常量CLS,表明旁路攻击早期预警模块已经工作过,MEM中已经存储了各个寄存器在上一次断电前的状态,则向MEM发读操作命令,即CMD为RD,ADDR为ACLK1,状态机FSMLS进入E2状态;
当FSMLS处于E2状态时,如果来自MEM的ACK有效,则表明当前读操作已完成,令与当前读操作的地址相对应的寄存器载入来自MEM的DATARSP。如果当前读操作的地址ADDR不等于AP[NC][KNC-1],即仍未完成各个寄存器状态的恢复,继续向MEM发出读操作命令,CMD为RD,ADDR为下一个寄存器的地址,状态机FSMLS保持在E2状态;如果来自MEM的ACK有效且ADDR等于AP[NC][KNC-1],则表明已经完成了各个寄存器的状态恢复,令LDEN为1,将指向MEM的命令CMD置为NOP,状态机进入E3状态;
当FSMLS处于E3状态时,令LDEN为0。如果循环计数器LPCNT的值达到2NL-1,令各个时钟周期数备份寄存器更新为计数单元中对应寄存器的值,状态机FSMLS进入E4状态;如果现场保护与恢复单元中除时钟周期数的备份寄存器之外的寄存器的值与计数单元和预警单元中对应的寄存器的值不匹配,表明计数单元和预警单元中对应寄存器具有更新的值,令出现不匹配的备份寄存器更新为计数单元或者预警单元中对应寄存器的最新的状态,状态机FSMLS进入E6状态;
当FSMLS处于E5状态时,如果来自MEM的ACK有效,表明已经完成了当前写操作。如果当前写操作的地址ADDR不等于ACLKNC,继续向MEM发出写操作命令,即CMD为WR,且ADDR为下一个寄存器的地址,状态机FSMLS保持在E5状态;否则将指向MEM的命令CMD置为NOP,状态机进入E3状态;
当FSMLS处于E7状态时,如果来自MEM的ACK有效,表明已经完成了对应寄存器的状态保护,将指向MEM的命令CMD置为NOP,状态机进入E3状态。
步骤五,将复位抑制单元、计数单元、预警单元以及现场保护与恢复单元按照信号连接关系组合起来,完成旁路攻击早期预警模块的完整设计。各个子模块均与其它子模块相连,它们的连接关系为:
计数单元以总线地址线、数据线和控制线作为输入,且从复位抑制单元接收内部复位信号INTRST;在复位后,等待来自现场保护与恢复单元的数据载入使能信号LDEN,并载入时钟周期计数寄存器和私钥加解密操作计数寄存器的初始值;在工作过程中,每完成一个计数周期,通过输出信号OVCLKh(1≤h≤NC)通知预警单元,并向其提供私钥加解密操作计数寄存器的值以计算旁路攻击概率;
预警单元从复位抑制单元接收内部复位信号INTRST;在复位后,等待来自现场保护与恢复单元的数据载入使能信号LDEN,并载入与各个私钥相关的旁路攻击概率寄存器的初始值;在工作过程中,等待来自计数单元的时钟周期计数已满一次计数周期的指示信号OVCLKh(1≤h≤NC),并从计数单元接收私钥加解密操作计数寄存器的值,计算并输出各个私钥相关的旁路攻击概率,旁路攻击概率寄存器的状态改变同样通过现场保护与恢复单元保存到非易失存储器中;
现场保护与恢复单元从复位抑制单元接收内部复位信号INTRST;在复位后,从非易失存储器中恢复出时钟周期计数寄存器、私钥加解密操作计数寄存器、以及旁路攻击概率寄存器的初始状态;在工作过程中,及时将时钟周期计数寄存器、私钥加解密操作计数寄存器、以及旁路攻击概率寄存器的状态改变更新到非易失存储器中。
第二步,将旁路攻击早期预警模块作为独立的IP(Intellectual Property)核集成到安全芯片中,旁路攻击早期预警模块以安全芯片内的系统时钟和复位、以及片内互联总线的数据线、地址线和控制线作为输入;以关于各个私钥的旁路攻击概率寄存器的状态作为输出;完成集成后,以安全芯片作为一个整体,经过必要的集成电路设计步骤(如逻辑综合和布局布线),得到安全芯片的版图并投片生产,得到经验证满足功能和性能要求的物理芯片。
第三步,当安全芯片在工作过程中,只要安全芯片上电复位,旁路攻击预警模块始终处于活动状态,且周期性地输出(每隔一定的时钟周期数)安全芯片遭受旁路攻击的概率大小:
当安全芯片上电复位时,在复位抑制单元中,如果寄存器FLGRST的值不等于设计者预定的常量CFLGRST,则复位控制有限状态机FSMRST进入A0状态,产生有效的内部复位信号INTRST,FSMRST最终转换到A3状态,并一直保持,以保证旁路攻击早期预警模块在上电断电期间内仅复位一次;
当现场保护与恢复单元从复位抑制单元接收到有效的内部复位信号INTRST时,现场保护与恢复单元内部所有寄存器和输出信号复位为0,然后现场保护与恢复控制有限状态机FSMLS发出读命令,从MEM中读取标志量LSFLG的值,如果LSFLG不等于设计者预定义的常量CLS,表明旁路攻击早期预警模块之前没有工作过,将时钟周期计数备份寄存器、私钥加解密操作计数备份寄存器以及旁路攻击概率备份寄存器的值初始化为0,通过载入使能信号LDEN通知计数单元和预警单元载入时钟周期计数寄存器、私钥加解密操作计数寄存器以及旁路攻击概率寄存器的值(此时各个寄存器的值为0),并且令LSFLG为CLS并写入MEM,将时钟周期计数寄存器、私钥加解密操作计数寄存器以及旁路攻击概率寄存器在MEM中的存储位置初始化为0,以表明旁路攻击早期预警模块已经启动并工作;如果标志量LSFLG等于设计者预定义的常量CLS,则表明MEM中存储了各个寄存器之前的状态,现场保护与恢复控制有限状态机FSMLS发出读命令,依次从MEM中读出各个寄存器的原有状态,读取完毕后以LDEN通知计数单元和预警单元载入各个寄存器的有效值;
当计数单元从复位抑制单元接收到有效的内部复位信号INTRST时,将内部各个寄存器和输出信号复位为0,等待来自现场保护与恢复单元的有效数据载入使能信号LDEN,从现场保护与恢复单元接收时钟周期计数寄存器和私钥加解密操作计数寄存器的初始值,进入计数状态(对应于时钟周期计数控制有限状态机中B1状态和私钥加解密操作计数控制有限状态机中C1状态):在每个时钟周期,各个时钟周期计数寄存器的值加1;计数单元根据安全芯片内部互联总线的状态来判断是否执行私钥加解密操作,如果检测到一次私钥加解密操作,令相关的私钥加解密操作计数寄存器的值加1;当某个时钟周期计数寄存器的值达到预定的值时(即已满一个计数周期),令相应的输出信号OVCLKh(1≤h≤NC)为1,通知预警单元计算与密码运算模块CRPh对应的各个私钥相关的旁路攻击概率;然后,令相应的时钟周期计数寄存器和私钥加解密操作计数寄存器的值为0,开始新的计数;
当预警单元从复位抑制单元接收到有效的内部复位信号INTRST后,将内部各个寄存器和输出信号复位为0,等待来自现场保护与恢复单元的有效数据载入使能信号LDEN,从现场保护与恢复单元接收与各私钥相关的旁路攻击概率寄存器的初始值;当从计数单元接收到OVCLKh(1≤h≤NC)时,令预警单元内部的概率计算部件依次计算第h组中各个私钥相关的旁路攻击概率,新的旁路攻击概率保存在旁路攻击概率寄存器中,并直接输出各个旁路攻击概率寄存器的状态;
现场保护与恢复单元中设置了NL位的循环计数器LPCNT,在收到来自复位抑制单元的有效复位信号INTRST后,LPCNT初始化为0;此后,LPCNT在每个时钟周期内计数,这样每隔2NL-1个时钟周期,现场保护与恢复单元从计数单元中获得时钟周期计数寄存器的最新状态,并将其写入MEM;当从计数单元接收的私钥加解密操作计数寄存器和预警单元中旁路攻击概率寄存器的状态与现场保护与恢复单元中相应的备份寄存器的状态不一致时,将相应寄存器的最新状态写入MEM中,并更新备份寄存器的值。
采用本发明可以达到如下技术效果:
1.采用本发明设计的旁路攻击早期预警模块利用了所有旁路攻击的共有特性,即旁路攻击必须通过执行大量的密码操作来事先采集大量样本,因此所述的预警方法能够适用于各种旁路攻击;
2.只要为安全芯片内的各个密码运算模块和私钥设置必要的寄存器、非易失存储资源、以及控制逻辑,不管安全芯片内存中多少个密码运算模块,不管安全芯片内存储了多少个私钥,都可以采用本发明来确定安全芯片遭受旁路攻击的概率;
3.在第一步中,旁路攻击早期预警模块仅仅以系统时钟、复位以及片内互联总线的地址线、数据线和控制线作为输入,无需任何的额外软件和硬件控制机制;在安全芯片上电至断电过程中,预警模块仅仅复位一次;当预警模块内部的寄存器状态发生改变时,及时更新至不受外部控制的非易失存储器MEM中;在安全芯片上电复位后,预警模块从MEM中恢复出上一次断电后的状态;因为预警模块仅仅将时钟周期数作为考量依据,安全芯片的系统时钟频率的变化不会影响预警模块的工作行为;因此采用本发明设计的旁路攻击早期预警模块不会被非法禁止,也不会受恶意的变换频率和恶意复位的影响,也无法被绕过,因此采用本发明设计的旁路攻击早期预警模块自身具有非常高的安全性;
4.采用本发明所述的以整数编码表示概率,以及直接映射的概率计算方法,也就是完全以多路选择来实现概率计算,避免了既消耗时间又具有高硬件复杂度的浮点除法和乘加运算,在保证有效精度的前提下获得了更高的性能,而且硬件复杂度更低。
附图说明
图1为本发明的总体流程图;
图2为旁路攻击早期预警模块逻辑结构图;
图3为旁路攻击早期预警模块复位抑制单元中复位控制有限状态机的状态转换图;
图4为旁路攻击早期预警模块计数单元中时钟周期计数控制和私钥加解密操作计数控制有限状态机的状态转换图;
图5为旁路攻击早期预警模块预警单元中概率计算控制有限状态机的状态转换图;
图6为预警单元中概率计算部件进行概率计算方法的示意图;
图7为旁路攻击早期预警模块中现场保护与恢复控制有限状态机的状态转换图。
具体实施方式
图1为安全芯片中对旁路攻击进行早期预警的总体流程图,主要包括如下步骤:
1.设计旁路攻击早期预警模块,具体设计方法为:
1.1设计复位抑制单元,以系统复位信号作为输入,为旁路攻击早期预警模块产生内部复位信号,并保证在安全芯片上电至断电期间内仅复位一次;
1.2设计计数单元,以安全芯片的互联总线信号(包括地址线、数据线和控制线)为输入,即监听片内互联总线,统计安全芯片在一定时间段内执行私钥加解密操作的次数;
1.3设计预警单元,根据计数单元中私钥加解密操作次数以及上一次的旁路攻击发生概率来确定芯片当前遭受旁路攻击的概率大小;
1.4设计现场保护与恢复单元,在旁路攻击早期预警模块复位时,恢复出计数单元和预警单元的状态,在工作过程中,及时保存计数单元和预警单元的状态改变,计数单元和预警单元的状态保存在非易失存储器中;
1.5集成上述各子模块,得到旁路攻击早期预警模块的完整设计;
2.将旁路攻击早期预警模块集成到安全芯片中,以安全芯片内的系统时钟和复位、以及片内互联总线的数据线、地址线和控制线作为输入;以关于各个私钥的旁路攻击概率寄存器的状态作为输出;
3.当安全芯片在过程中,只要安全芯片上电复位,旁路攻击预警模块始终处于活动状态,且周期性地输出安全芯片遭受旁路攻击的概率大小。
上述步骤1和步骤2只发生在安全芯片的设计过程中,也就是只需执行一次;而当安全芯片成功投片且正常应用后,安全芯片每次上电复位后步骤3都被执行。
图2为旁路攻击早期预警模块的逻辑结构图。旁路攻击早期预警模块的外部输入包括安全芯片内的系统复位信号和时钟信号,以及安全芯片内部互联总线中地址线、数据线和控制线等;输出为以安全芯片内各个私钥为目标的旁路攻击的概率。旁路攻击早期预警模块包括四个子模块:复位抑制单元、计数单元、预警单元以及现场保护与恢复单元,四个子模块之间均有信号相连。
复位抑制单元以安全芯片内系统复位信号作为输入,为其它各子模块产生内部复位信号。复位抑制单元内部设置了寄存器FLGRST,其位数为NFLGRST(32≥NFLGRST≥16)。复位控制有限状态机FSMRST用于控制寄存器FLGRST的状态,并产生旁路攻击早期预警模块的内部复位信号INTRST。
计数单元中设置了NC个时钟周期计数寄存器:REGCLK1,REGCLK2,...,REGCLKi,...,REGCLKNC,1≤i≤NC;其中NC为安全芯片中密码算法运算模块(包括软件模块和硬件协处理器)的个数。计数单元中同时设置了NC组私钥加解密操作计数寄存器:REGSK[1][0],...,REGSK[1][i1],...,REGSK[1][K1-1],...,REGSK[m][0],...,REGSK[m][im],...,REGSK[m][Km-1],...,REGSK[NC][0],...,REGSK[NC][iNC],...,REGSK[NC][KNC-1],1≤m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1,其中K1,...,Km,...,KNC分别为与密码运算模块CRP1,...,CRPm,...,CRPNC相关的片内私钥的个数;如果Km为0,则无需设置寄存器REGSK[m][0],...,REGSK[m][im],...,REGSK[m][Km-1];与各寄存器相关的私钥分别记为SK[1][0],...,SK[1][i1],...,SK[1][K1-1],...,SK[m][0],...,SK[m][im],...,SK[m][Km-1],...,SK[NC][0],...,SK[NC][iNC],...,SK[NC][KNC-1]。计数单元在复位时从现场保护与恢复单元获得时钟周期计数寄存器和私钥加解密操作计数寄存器的初始状态,并将工作过程中的状态变化通过现场保护与恢复单元保存到非易失存储器中;以安全芯片内部互联总线信号作为输入,统计安全芯片在一定时间段内执行私钥加解密操作的次数;向预警单元提供私钥加解密操作计数寄存器的值以使其计算安全芯片遭受旁路攻击的概率。计数单元的上述功能由时钟周期计数控制有限状态机和私钥加解密操作计数控制有限状态机共同实现。
预警单元设置了与计数单元中私钥加解密操作次数寄存器一一对应的暂存寄存器:REGSK1[1][0],...,REGSK1[1][i1],...,REGSK1[1][K1-1],...,REGSK1[m][0],...,REGSK1[m][im],...,REGSK1[m][Km-1],...,REGSK1[NC][0],...,REGSK1[NC][iNC],...,REGSK1[NC][KNC-1],1≤m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1。另外,设置与各个私钥相关的旁路攻击概率寄存器组:REGP[1][0],...,REGP[1][i1],...,REGP[1][K1-1],...,REGP[m][0],...,REGP[m][im],...,REGP[m][Km-1],...,REGP[NC][0],...,REGP[NC][iNC],...,REGP[NC][KNC-1],各寄存器的位数均为NP(6≥NP≥4),用于存储以各个私钥为破解目标的旁路攻击的概率大小。各寄存器的取值范围为0,1,2,...,p,...,2NP-1,所表示的概率大小分别为0,1/(2NP-1),2/(2NP-1),...,p/(2NP-1),...,1,其中0≤p≤2NP-1。预警单元在复位时从现场保护与恢复单元获得旁路攻击概率寄存器的初始状态,并将工作过程中的状态变化通过现场保护与恢复单元保存到非易失存储器中;从计数单元获得私钥加解密操作计数统计信息以计算旁路攻击概率,旁路攻击概率由概率计算部件通过整数编码和直接映射的方式实现。预警单元的上述功能通过概率计算控制有限状态机来实现。
现场保护与恢复单元中设置了与计数单元中时钟周期计数寄存器和私钥加解密操作计数寄存器、以及预警单元中旁路攻击概率寄存器一一对应的备份寄存器,分别为CLKBAK1,...,CLKBAKg,...,CLKBAKNC,SK[1][0],...,SKBAK[1][i1],...,SKBAK[1][K1-1],...,SKBAK[m][0],...,SKBAK[m][im],...,SKBAK[m][Km-1],...,SKBAK[NC][0],...,SKBAK[NC][iNC],...,SKBAK[NC][KNC-1],PBAK[1][0],...,PBAK[1][i1],...,PBAK[1][K1-1],...,PBAK[m][0],...,PBAK[m][im],...,PBAK[m][Km-1],...,PBAK[NC][0],...,PBAK[NC][iNC],...,PBAK[NC][KNC-1],1≤g,m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1。另外在现场保护与恢复单元中设置一个NL(NCLKmin≥NL≥6,其中NCLKmin为各个时钟周期数寄存器的最小位数)位的循环计数器LPCNT,在内部复位INTRST有效时,LPCNT复位为0;然后在每个时钟周期,LPCNT的值加1;当LPCNT的值达到2NL-1时,下一时钟周期的计数将使得LPCNT的值恢复到0。旁路攻击早期预警模块中时钟周期计数寄存器、私钥加解密操作计数寄存器以及旁路攻击概率寄存器的状态以及32位标志量LSFLG保存在内部非易失存储器MEM中。各个寄存器在MEM中的存储地址分别记为ACLK1,...,ACLKg,...,ACLKNC,ASK[1][0],...,ASK[1][i1],...,ASK[1][K1-1],...,ASK[m][0],...,ASK[m][im],...,ASK[m][Km-1],...,ASK[NC][0],...,ASK[NC][iNC],...,ASK[NC][KNC-1],AP[1][0],...,AP[1][i1],...,AP[1][K1-1],...,AP[m][0],...,AP[m][im],...,AP[m][Km-1],...,AP[NC][0],...,AP[NC][iNC],...,AP[NC][KNC-1],且各寄存器在MEM中顺序编址,即ACLK1为最低地址,而AP[NC][KNC-1]为最高地址;标志量LSFLG的存储地址为AFLG;设MEM的控制接口包括如下信号:读写命令CMD(RD表示读操作,WR表示写操作,NOP表示无效操作)、地址ADDR、写操作的数据DATAWR、读操作的结果DATARSP、以及响应信号ACK(ACK为0表示MEM未完成当前读写命令,ACK为1表明MEM已完成当前读写命令)。现场保护与恢复单元在收到来自复位抑制单元的复位信号后,执行复位动作,从非易失存储器中恢复出状态信息,并提供给计数单元和预警单元;在工作过程中,将计数单元和预警单元的状态变化保存在非易失存储器中;上述功能通过现场保护与恢复控制有限状态机来实现。
图3为步骤1.1中复位抑制单元内复位控制有限状态机FSMRST的状态转换图。复位控制有限状态机FSMRST包括A0、A1、A2、以及A3四个状态,其状态转换过程是:
当状态机FSMRST接收到安全芯片中有效的系统复位信号(具体可能为同步复位或异步复位信号)时,如果寄存器FLGRST的值与预定义的常量CFLGRST不同,则状态机FSMRST进入A0状态,且INTRST为无效状态,并将寄存器FLGRST的值置为CFLGRST;常量CFLGRST是设计者指定的值,其海明重量为(NFLGRST/2),即CFLGRST中0和1的位数相同;
如果状态机处于A0状态,则下一时钟周期进入A1状态,并令INTRST有效;
图4为步骤1.2中计数单元中时钟周期计数控制有限状态机和私钥加解密操作计数控制有限状态机的状态转换图。
在计数单元中,设计实现了NC个逻辑上相同的时钟周期计数控制有限状态机:FSMCLK1,...,FSMCLKj,...,FSMCLKNC,1≤j≤NC。FSMCLKj包括B0、B1以及B2三个状态,其状态转换过程如图4的左边所示:
当FSMCLKj收到来自复位抑制单元的有效内部复位信号INTRST时,FSMCLKj进入B0状态,令时钟周期计数寄存器REGCLKj的值为0,输出信号OVCLKj为0(表示计数未达到MAXi),以等待来自现场保护与恢复单元的初始值;
当FSMCLKj处于B1状态时,如果寄存器REGCLKj的值小于MAXi,则在时钟周期上升沿令寄存器REGCLKj的值加1,并保持在B1状态;如果寄存器REGCLKj的值等于MAXi,则令输出信号OVCLKj为1(表明时钟周期计数已达到一个计数周期),且FSMCLKj进入B2状态;
在计数单元中,设计实现了NC个逻辑上相同的私钥加解密操作计数控制有限状态机:FSMSK1,...,FSMSKn,...,FSMSKNC,1≤n≤NC。状态机FSMSKn控制与密码运算模块CRPn相关的寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1],包括C0、C1以及C2三个状态,其状态转换过程如图4的右边所示:
当FSMSKn收到来自复位抑制单元的有效内部复位信号INTRST时,FSMSKn进入C0状态,令寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1]的值为0,以等待来自现场保护与恢复单元的初始值;
当FSMSKn处于C0状态时,如果来自现场保护与恢复单元的数据载入使能信号LDEN为有效,寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1]载入来自现场保护与恢复单元的初始值,且FSMSKn进入C1状态;
当FSMSKn处于C1状态时,如果根据安全芯片互联总线信号判断出安全芯片执行关于私钥SK[n][x]的加解密操作,则令寄存器REGSK[n][x]的值加1,其中0≤x≤Kn-1;如果OVCLKn有效,则FSMSKn进入C2状态;
图5为步骤1.3中预警单元概率计算控制有限状态机的状态转换图。为控制预警单元中私钥加解密操作计数暂存寄存器和旁路攻击概率寄存器的状态,预警单元中设置了NC个逻辑上相同的概率计算控制有限状态机:FSMALERT1,...,FSMALERTs,...,FSMALERTNC,1≤s≤NC;状态机FSMALERTs用于控制寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]的值,0≤is≤Ks-1。状态机FSMALERTs包括D0、D1以及D2三个状态,其状态转换过程是:
当FSMALERTs收到来自复位抑制单元的有效内部复位信号INTRST时,FSMALERTs进入D0状态,令寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]的值均为0,以等待来自现场保护与恢复单元的初始值;
当FSMALERTs处于D0状态时,如果来自现场保护与恢复单元的数据载入使能信号LDEN为有效,令寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]载入来自现场保护与恢复单元的初始值,FSMALERTs进入D1状态;
当FSMALERTs处于D1状态时,如果来自计数单元的输入信号OVCLKs有效,则寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1]载入计数单元中REGSK[s][0],...,REGSK[s][is],...,REGSK[s][Ks-1]的值,FSMALERTs进入D2状态;
当FSMALERTs处于D2状态时,令旁路攻击概率计算部件依次计算以私钥SK[s][0],...,SK[s][is],...,SK[s][Ks-1]为破解目标的旁路攻击概率,也就是依次以寄存器对(REGSK[s][0],REGP[s][0]),...,(REGSK[s][is],REGP[s][is]),...,(REGSK[s][Ks-1],REGP[s][Ks-1])的值作为旁路攻击概率计算部件的输入,并依次将旁路攻击概率计算部件的输出更新到旁路攻击概率寄存器REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]中,FSMALERTs进入D1状态。
图6为步骤1.3中预警单元中概率计算部件进行旁路攻击概率计算方法的示意图。在所提出的设计方法中,以整数来对概率进行编码,以直接映射的方式计算概率,这样可以避免复杂的浮点除法和乘加运算,提高运算效率,降低硬件复杂度。概率计算主要分为两个步骤,一是根据私钥加解密次数寄存器的值计算出私钥加解密操作在当前时间段内(由时钟周期数寄存器所统计)的发生频率,由第一多路选择器完成;二是根据当前频率与上一次计算得出的旁路攻击概率加权平均,以综合旁路攻击概率的历史信息,由第二多路选择器完成。
私钥加解密操作在当前时间段内的发生频率计算方法如图6的左边所示,以私钥SK[s][is]为例,直接将寄存器REGSK1[s][is]的值映射到区间[0,2NP-1]中的元素。设z∈{0,1,...,MAXSKs},则所述的直接映射可以表示为t=[(z·(2NP-1)/MAXSKs],其中t∈{0,1,...,2NP-1},例如0直接映射为0,MAXSKs直接映射为2NP-1。在具体的实现中,通过多路选择器来实现所述的直接映射。
当前频率与上一次计算得出的旁路攻击概率加权平均的方法如图6右边所示。设私钥加解密操作中当前时间段内的发生频率为PA(PA∈{0,1,...,2NP-1}),上一次计算得出的以该私钥为目标的旁路攻击概率为PB(PB∈{0,1,...,2NP-1});加权平均后的概率为[w1PA+w2PB],其中w1,w2分别为PA和PB的权值,权值w1和w2为设计者确定的参数,满足如下条件:0≤w1,w2≤1,w1+w2=1。例如,当PA=z1,PB=z2时,加权平均后的概率为[w1z1+w2z2]。根据上述映射方法,可以建立直接映射表,在具体实现中,通过多路选择器来实现所述的加权平均。
图7为步骤1.4中现场保护与恢复单元控制有限状态机的状态转换图。在现场保护与恢复单元中,设计现场保护与恢复控制有限状态机FSMLS以控制该单元的行为模式。状态机FSMLS包括E0、E1、E2、E3、E4、E5、E6以及E7等8个状态,其状态转换过程是:
当FSMLS收到来自复位抑制单元的有效内部复位信号INTRST时,FSMLS进入E0状态,此时现场保护与恢复单元内的各个寄存器均复位为0,且输出信号LDEN为0;向MEM发出读操作命令,即CMD为RD,ADDR为AFLG;
当FSMLS处于E0状态时,如果来自MEM的ACK有效且MEM返回的结果DATARSP不等于设计者预定义的常量CLS(CLS必须为0和1位数相等的常量,即CLS的海明重量为16),表明旁路攻击早期预警模块之前从未工作过,令LDEN为1(也就是计数单元和预警单元中各个寄存器的初始值均为0),且向MEM发写操作命令,即CMD为WR,ADDR为AFLG,且DATAWR为CLS,状态机FSMLS进入E1状态;如果ACK有效且MEM返回的结果DATARSP等于设计者预定义的常量CLS,表明旁路攻击早期预警模块已经工作过,MEM中已经存储了各个寄存器在上一次断电前的状态,则向MEM发读操作命令,即CMD为RD,ADDR为ACLK1,状态机FSMLS进入E2状态;
当FSMLS处于E2状态时,如果来自MEM的ACK有效,则表明当前读操作已完成,令与当前读操作的地址相对应的寄存器载入来自MEM的DATARSP。如果当前读操作的地址ADDR不等于AP[NC][KNC-1],即仍未完成各个寄存器状态的恢复,继续向MEM发出读操作命令,CMD为RD,ADDR为下一个寄存器的地址,状态机FSMLS保持在E2状态;如果来自MEM的ACK有效且ADDR等于AP[NC][KNC-1],则表明已经完成了各个寄存器的状态恢复,令LDEN为1,将指向MEM的命令CMD置为NOP,状态机进入E3状态;
当FSMLS处于E3状态时,令LDEN为0。如果循环计数器LPCNT的值达到2NL-1,令各个时钟周期数备份寄存器更新为计数单元中对应寄存器的值,状态机FSMLS进入E4状态;如果现场保护与恢复单元中除时钟周期数的备份寄存器之外的寄存器的值与计数单元和预警单元中对应的寄存器的值不匹配,表明计数单元和预警单元中对应寄存器具有更新的值,令出现不匹配的备份寄存器更新为计数单元或者预警单元中对应寄存器的最新的状态,状态机FSMLS进入E6状态;
当FSMLS处于E5状态时,如果来自MEM的ACK有效,表明已经完成了当前写操作。如果当前写操作的地址ADDR不等于ACLKNC,继续向MEM发出写操作命令,即CMD为WR,且ADDR为下一个寄存器的地址,状态机FSMLS保持在E5状态;否则将指向MEM的命令CMD置为NOP,状态机进入E3状态;
Claims (3)
1.一种安全芯片中对旁路攻击进行早期预警的方法,其特征在于包括如下步骤:
第一步,按如下步骤设计旁路攻击早期预警模块:
步骤一,设计复位抑制单元,以系统复位信号作为输入,方法为:
步骤1)在复位抑制单元内设置寄存器FLGRST,其位数为NFLGRST,32≥NFLGRST≥16,在上电之后复位抑制单元复位之前,寄存器FLGRST的值处于不确定状态;
步骤2)设计有限状态机FSMRST,以控制FLGRST的状态,并产生内部复位信号INTRST,FSMRST包括A0、A1、A2、以及A3四个状态,其状态转换过程是:
当状态机FSMRST接收到安全芯片中有效的系统复位信号时,如果寄存器FLGRST的值与预定义的常量CFLGRST不同,则状态机FSMRST进入A0状态,且INTRST为无效状态,并将寄存器FLGRST的值置为CFLGRST;常量CFLGRST是设计者指定的值,其海明重量为NFLGRST/2,即CFLGRST中0和1的位数相同;
步骤二,设计计数单元监听安全芯片内部互联总线,以互联总线中地址线、数据线和控制线信号为输入,方法为:
步骤1)设置NC(NC≥1)个时钟周期计数寄存器REGCLK1,REGCLK2,...,REGCLKi,...,REGCLKNC(1≤i≤NC);其中NC为安全芯片中密码算法运算模块(包括软件模块和硬件协处理器)的个数,各密码算法运算模块分别记为CRP1,...,CRPi,...,CRPNC;各寄存器的位数分别为NCLK1,NCLK2,...,NCLKi,...,NCLKNC,NCLKi>8。在每个时钟周期内,各个时钟周期计数寄存器的值加1;第i个寄存器的位数决定了它的时钟周期计数的最大值为对任意的寄存器REGCLKi而言,其位数必须满足如下条件: 寄存器的值从0递增至MAXi的时间段称为一个计数周期,MAXi=MAXSKi×NCRPi,MAXSKi为一个计数周期内预期统计的私钥加解密操作的最大次数,由设计者指定,满足64≥MAXSKi≥16;NCRPi为密码运算模块CRPi执行私钥加解密操作所需的时钟周期数。
步骤2)设置NC组私钥加解密操作计数寄存器:REGSK[1][0],...,REGSK[1][i1],...,REGSK[1][K1-1],...,REGSK[m][0],...,REGSK[m][im],...,REGSK[m][Km-1],...,REGSK[NC][0],...,REGSK[NC][iNC],...,REGSK[NC][KNC-1],1≤m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1,其中K1,...,Km,...,KNC分别为与密码运算模块CRP1,...,CRPm,...,CRPNC相关的片内私钥的个数;如果Km为0,则无需设置寄存器REGSK[m][0],...,REGSK[m][im],...,REGSK[m][Km-1];与各寄存器相关的私钥分别记为SK[1][0],...,SK[1][i1],...,SK[1][K1-1],...,SK[m][0],...,SK[m][im],...,SK[m][Km-1],...,SK[NC][0],...,SK[NC][iNC],...,SK[NC][KNC-1];私钥加解密操作计数寄存器用于统计安全芯片在一次计数周期内执行的私钥加解密操作的次数,每当安全芯片执行私钥加解密操作,相应的寄存器的值加1;同一组私钥加解密操作计数寄存器也与同一个密码运算模块相关的一组寄存器的位数相同,各组私钥加解密操作计数寄存器的位数分别为NSK1,...,NSKm,...,NSKNC,且
步骤3)设计NC个时钟周期计数控制有限状态机:FSMCLK1,...,FSMCLKj,...,FSMCLKNC以控制各时钟周期计数寄存器的值,其中1≤j≤NC,且这NC个时钟周期计数控制状态机的逻辑均相同,状态机FSMCLKj包括B0、B1、以及B2三个状态,其状态转换过程是:
当FSMCLKj收到来自复位抑制单元的有效内部复位信号INTRST时,FSMCLKj进入B0状态,令时钟周期计数寄存器REGCLKj的值为0,输出信号OVCLKj为0,表示计数未达到MAXi,以等待来自现场保护与恢复单元的初始值;
当FSMCLKj处于B1状态时,如果寄存器REGCLKj的值小于MAXi,则在时钟周期上升沿令寄存器REGCLKj的值加1,并保持在B1状态;如果寄存器REGCLKj的值等于MAXi,则令输出信号OVCLKj为1,表明时钟周期计数已达到一个计数周期,且FSMCLKj进入B2状态;
当FSMCLKj处于B2状态时,令寄存器REGCLKj的值为0,输出信号OVCLKj为0,且FSMCLKj进入B1状态,以开始一个新的计数周期;
步骤4)设计NC个私钥加解密操作计数控制有限状态机:FSMSK1,...,FSMSKn,...,FSMSKNC,以控制各私钥加解密操作次数寄存器的值,1≤n≤NC,各私钥加解密操作计数控制状态机的逻辑均相同,其中FSMSKn控制第n组私钥加解密操作计数寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1]的值;状态机FSMSKn包括状态C0、C1、以及C2三个状态,其状态转换过程是:
当FSMSKn收到来自复位抑制单元的有效内部复位信号INTRST时,FSMSKn进入C0状态,令寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1]的值为0,以等待来自现场保护与恢复单元的初始值;
当FSMSKn处于C0状态时,如果来自现场保护与恢复单元的数据载入使能信号LDEN为有效,寄存器REGSK[n][0],...,REGSK[n][k],...,REGSK[n][Kn-1]载入来自现场保护与恢复单元的初始值,且FSMSKn进入C1状态;
当FSMSKn处于C1状态时,如果根据安全芯片互联总线信号判断出安全芯片执行关于私钥SK[n][x]的加解密操作,则令寄存器REGSK[n][x]的值加1,其中0≤x≤Kn-1;如果OVCLKn有效,则FSMSKn进入C2状态;
步骤三,设计预警单元,由预警单元根据计数单元中私钥加解密操作次数以及上一次的旁路攻击发生概率来确定芯片当前遭受旁路攻击的概率大小,具体设计方法为:
步骤1)设置私钥加解密操作计数暂存寄存器组,也就是与计数单元中私钥加解密操作计数寄存器一一对应的寄存器组,分别为REGSK1[1][0],...,REGSK1[1][i1],...,REGSK1[1][K1-1],...,REGSK1[m][0],...,REGSK1[m][im],...,REGSK1[m][Km-1],...,REGSK1[NC][0],...,REGSK1[NC][iNC],...,REGSK1[NC][KNC-1],1≤m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1。
步骤2)设置NC组与各个私钥相关的旁路攻击概率寄存器组,记录以各个私钥为破解目标的旁路攻击的概率大小,各寄存器分别为:REGP[1][0],...,REGP[1][i1],...,REGP[1][K1-1],...,REGP[m][0],...,REGP[m][im],...,REGP[m][Km-1],...,REGP[NC][0],...,REGP[NC][iNC],...,REGP[NC][KNC-1],各寄存器的位数均为NP(6≥NP≥4)。各寄存器的取值范围为0,1,2,...,p,...,2NP-1,所表示的概率大小分别为0,1/(2NP-1),2/(2NP-1),...,p/(2NP-1),...,1,其中0≤p≤2NP-1。
步骤3)设计旁路攻击概率计算部件,根据一个私钥加解密操作计数寄存器和与之对应的旁路攻击概率寄存器的值来计算以该私钥为目标的旁路攻击新的概率;
步骤4)设计NC个旁路攻击概率计算控制有限状态机FSMALERT1,...,FSMALERTs,...,FSMALERTNC,以控制控制预警单元中各个寄存器的值,并计算旁路攻击的概率,1≤s≤NC,这NC个旁路攻击概率计算控制状态机的逻辑均相同;状态机FSMALERTs用于控制寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]的值,0≤is≤Ks-1。状态机FSMALERTs包括D0、D1、以及D2三个状态,其状态转换过程是:
当FSMALERTs收到来自复位抑制单元的有效内部复位信号INTRST时,FSMALERTs进入D0状态,令寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]的值均为0,以等待来自现场保护与恢复单元的初始值;
当FSMALERTs处于D0状态时,如果来自现场保护与恢复单元的数据载入使能信号LDEN为有效,令寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1],REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]载入来自现场保护与恢复单元的初始值,FSMALERTs进入D1状态;
当FSMALERTs处于D1状态时,如果来自计数单元的输入信号OVCLKs有效,则寄存器REGSK1[s][0],...,REGSK1[s][is],...,REGSK1[s][Ks-1]载入计数单元中REGSK[s][0],...,REGSK[s][is],...,REGSK[s][Ks-1]的值,FSMALERTs进入D2状态;
当FSMALERTs处于D2状态时,令旁路攻击概率计算部件依次计算以私钥SK[s][0],...,SK[s][is],...,SK[s][Ks-1]为破解目标的旁路攻击概率,也就是依次以寄存器对(REGSK[s][0],REGP[s][0]),...,(REGSK[s][is],REGP[s][is]),...,(REGSK[s][Ks-1],REGP[s][Ks-1])的值作为旁路攻击概率计算部件的输入,并依次将旁路攻击概率计算部件的输出更新到旁路攻击概率寄存器REGP[s][0],...,REGP[s][is],...,REGP[s][Ks-1]中,FSMALERTs进入D1状态;
步骤四,设计现场保护与恢复单元,在旁路攻击早期预警模块复位时,恢复出计数单元和预警单元的状态,在工作过程中,及时保存计数单元和预警单元的状态改变,计数单元和预警单元的状态保存在非易失存储器中。具体设计方法为:
步骤1)设置与计数单元中时钟周期计数寄存器组、私钥加解密操作计数寄存器组、以及预警单元中与各个私钥相关的旁路攻击概率寄存器组分别对应的备份寄存器组,分别记为CLKBAK1,...,CLKBAKg,...,CLKBAKNC,SKBAK[1][0],...,SKBAK[]][i1],...,SKBAK[1][K1-1],...,SKBAK[m][0],...,SKBAK[m][im],...,SKBAK[m][Km-1],...,SKBAK[NC][0],...,SKBAK[NC][iNC],...,SKBAK[NC][KNC-1],PBAK[1][0],...,PBAK[1][i1],...,PBAK[1][K1-1],...,PBAK[m][0],...,PBAK[m][im],...,PBAK[m][Km-1],...,PBAK[NC][0],...,PBAK[NC][iNC],...,PBAK[NC][KNC-1],1≤g,m≤NC,0≤i1≤K1-1,0≤im≤Km-1,0≤iNC≤KNC-1;
步骤2)设置一个NL(NCLKmin≥NL≥6,其中NCLKmin为各个时钟周期数寄存器的最小位数)位的循环计数器LPCNT,在内部复位INTRST有效时,LPCNT复位为0;然后在每个时钟周期,LPCNT的值加1;当LPCNT的值达到2NL-1时,下一时钟周期的计数将使得LPCNT的值恢复到0;
步骤3)设置一个非易失存储器MEM(如EEPROM或Flash),用于保存步骤1)中设置的各个备份寄存器的状态,设置一个32位的标志量LSFLG。各个寄存器在MEM中的存储地址分别记为ACLK1,...,ACLKg,...,ACLKNC,ASK[1][0],...,ASK[1][i1],...,ASK[1][K1-1],...,ASK[m][0],...,ASK[m][im],...,ASK[m][Km-1],...,ASK[NC][0],...,ASK[NC][iNC],...,ASK[NC][KNC-1],AP[1][0],...,AP[1][i1],...,AP[1][K1-1],...,AP[m][0],...,AP[m][im],...,AP[m][Km-1],...,AP[NC][0],...,AP[NC][iNC],...,AP[NC][KNC-1],且各寄存器在MEM中顺序编址,即ACLK1为最低地址,AP[NC][KNC-1]为最高地址;标志量LSFLG的存储地址为AFLG;MEM的控制接口包括如下信号:读写命令CMD(RD表示读操作,WR表示写操作,NOP表示无效操作)、地址ADDR、写操作的数据DATAWR、读操作的结果DATARSP、以及响应信号ACK(ACK为0表示MEM未完成当前读写命令,ACK为1表明MEM已完成当前读写命令);
步骤4)设计现场保护与恢复控制有限状态机FSMLS,以控制现场保护与恢复单元的行为,状态机FSMLS包括E0、E1、E2、E3、E4、E5、E6、以及E7等8个状态,其状态转换过程是:
当FSMLS收到来自复位抑制单元的有效内部复位信号INTRST时,FSMLS进入E0状态,此时现场保护与恢复单元内的各个寄存器均复位为0,且输出信号LDEN为0;向MEM发出读操作命令,即CMD为RD,ADDR为AFLG;
当FSMLS处于E0状态时,如果来自MEM的ACK有效且MEM返回的结果DATARSP不等于设计者预定义的常量CLS,CLS必须为0和1位数相等的常量,表明旁路攻击早期预警模块之前从未工作过,令LDEN为1,且向MEM发写操作命令,即CMD为WR,ADDR为AFLG,且DATAWR为CLS,状态机FSMLS进入E1状态;如果ACK有效且MEM返回的结果DATARSP等于设计者预定义的常量CLS,表明旁路攻击早期预警模块已经工作过,MEM中已经存储了各个寄存器在上一次断电前的状态,则向MEM发读操作命令,即CMD为RD,ADDR为ACLK1,状态机FSMLS进入E2状态;
当FSMLS处于E2状态时,如果来自MEM的ACK有效,则表明当前读操作已完成,令与当前读操作的地址相对应的寄存器载入来自MEM的DATARSP;如果当前读操作的地址ADDR不等于A P[NC][KNC-1],即仍未完成各个寄存器状态的恢复,继续向MEM发出读操作命令,CMD为RD,ADDR为下一个寄存器的地址,状态机FSMLS保持在E2状态;如果来自MEM的ACK有效且ADDR等于AP[NC][KNC-1],则表明已经完成了各个寄存器的状态恢复,令LDEN为1,将指向MEM的命令CMD置为NOP,状态机进入E3状态;
当FSMLS处于E3状态时,令LDEN为0;如果循环计数器LPCNT的值达到2NL-1,令各个时钟周期数备份寄存器更新为计数单元中对应寄存器的值,状态机FSMLS进入E4状态;如果现场保护与恢复单元中除时钟周期数的备份寄存器之外的寄存器的值与计数单元和预警单元中对应的寄存器的值不匹配,表明计数单元和预警单元中对应寄存器具有更新的值,令出现不匹配的备份寄存器更新为计数单元或者预警单元中对应寄存器的最新的状态,状态机FSMLS进入E6状态;
当FSMLS处于E5状态时,如果来自MEM的ACK有效,表明已经完成了当前写操作;如果当前写操作的地址ADDR不等于ACLKNC,继续向MEM发出写操作命令,即CMD为WR,且ADDR为下一个寄存器的地址,状态机FSMLS保持在E5状态;否则将指向MEM的命令CMD置为NOP,状态机进入E3状态;
步骤五,将复位抑制单元、计数单元、预警单元以及现场保护与恢复单元按照信号连接关系组合起来:
计数单元以总线地址线、数据线和控制线作为输入,且从复位抑制单元接收内部复位信号INTRST;在复位后,等待来自现场保护与恢复单元的数据载入使能信号LDEN,并载入时钟周期计数寄存器和私钥加解密操作计数寄存器的初始值;在工作过程中,每完成一个计数周期,通过输出信号OVCLKh通知预警单元,并向其提供私钥加解密操作计数寄存器的值以计算旁路攻击概率,1≤h≤NC;
预警单元从复位抑制单元接收内部复位信号INTRST;在复位后,等待来自现场保护与恢复单元的数据载入使能信号LDEN,并载入与各个私钥相关的旁路攻击概率寄存器的初始值;在工作过程中,等待来自计数单元的时钟周期计数已满一次计数周期的指示信号OVCLKh,并从计数单元接收私钥加解密操作计数寄存器的值,计算并输出各个私钥相关的旁路攻击概率,旁路攻击概率寄存器的状态改变同样通过现场保护与恢复单元保存到非易失存储器中;
现场保护与恢复单元从复位抑制单元接收内部复位信号INTRST;在复位后,从非易失存储器中恢复出时钟周期计数寄存器、私钥加解密操作计数寄存器、以及旁路攻击概率寄存器的初始状态;在工作过程中,及时将时钟周期计数寄存器、私钥加解密操作计数寄存器、以及旁路攻击概率寄存器的状态改变更新到非易失存储器中;
第二步,将旁路攻击早期预警模块作为独立的IP核集成到安全芯片中,旁路攻击早期预警模块以安全芯片内的系统时钟和复位、以及片内互联总线的数据线、地址线和控制线作为输入;以关于各个私钥的旁路攻击概率寄存器的状态作为输出;完成集成后,以安全芯片作为一个整体,经过集成电路设计步骤得到安全芯片的版图并投片生产,得到物理芯片;
第三步,当安全芯片在工作过程中,只要安全芯片上电复位,旁路攻击预警模块始终处于活动状态,且周期性地输出安全芯片遭受旁路攻击的概率大小:
当安全芯片上电复位时,在复位抑制单元中,如果寄存器FLGRST的值不等于设计者预定的常量CFLGRST,则复位控制有限状态机FSMRST进入A0状态,产生有效的内部复位信号INTRST,FSMRST最终转换到A3状态,并一直保持,以保证旁路攻击早期预警模块在上电断电期间内仅复位一次;
当现场保护与恢复单元从复位抑制单元接收到有效的内部复位信号INTRST时,现场保护与恢复单元内部所有寄存器和输出信号复位为0,然后现场保护与恢复控制有限状态机FSMLS发出读命令,从MEM中读取标志量LSFLG的值,如果LSFLG不等于设计者预定义的常量CLS,将时钟周期计数备份寄存器、私钥加解密操作计数备份寄存器以及旁路攻击概率备份寄存器的值初始化为0,通过载入使能信号LDEN通知计数单元和预警单元载入时钟周期计数寄存器、私钥加解密操作计数寄存器以及旁路攻击概率寄存器的值,并且令LSFLG为CLS并写入MEM,将时钟周期计数寄存器、私钥加解密操作计数寄存器以及旁路攻击概率寄存器在MEM中的存储位置初始化为0;如果标志量LSFLG等于设计者预定义的常量CLS,现场保护与恢复控制有限状态机FSMLS发出读命令,依次从MEM中读出各个寄存器的原有状态,读取完毕后以LDEN通知计数单元和预警单元载入各个寄存器的有效值;
当计数单元从复位抑制单元接收到有效的内部复位信号INTRST时,将内部各个寄存器和输出信号复位为0,等待来自现场保护与恢复单元的有效数据载入使能信号LDEN,从现场保护与恢复单元接收时钟周期计数寄存器和私钥加解密操作计数寄存器的初始值,进入计数状态:在每个时钟周期,各个时钟周期计数寄存器的值加1;计数单元根据安全芯片内部互联总线的状态来判断是否执行私钥加解密操作,如果检测到一次私钥加解密操作,令相关的私钥加解密操作计数寄存器的值加1;当某个时钟周期计数寄存器计满一个计数周期时,令相应的输出信号OVCLKh为1,通知预警单元计算与密码运算模块CRPh对应的各个私钥相关的旁路攻击概率;然后,令相应的时钟周期计数寄存器和私钥加解密操作计数寄存器的值为0,开始新的计数,1≤h≤NC;
当预警单元从复位抑制单元接收到有效的内部复位信号INTRST后,将内部各个寄存器和输出信号复位为0,等待来自现场保护与恢复单元的有效数据载入使能信号LDEN,从现场保护与恢复单元接收与各私钥相关的旁路攻击概率寄存器的初始值;当从计数单元接收到OVCLKh时,令预警单元内部的概率计算部件依次计算第h组中各个私钥相关的旁路攻击概率,新的旁路攻击概率保存在旁路攻击概率寄存器中,并直接输出各个旁路攻击概率寄存器的状态;
现场保护与恢复单元中设置了NL位的循环计数器LPCNT,在收到来自复位抑制单元的有效复位信号INTRST后,LPCNT初始化为0;此后,LPCNT在每个时钟周期内计数,每隔2NL-1个时钟周期,现场保护与恢复单元从计数单元中获得时钟周期计数寄存器的最新状态,并将其写入MEM;当从计数单元接收的私钥加解密操作计数寄存器和预警单元中旁路攻击概率寄存器的状态与现场保护与恢复单元中相应的备份寄存器的状态不一致时,将相应寄存器的最新状态写入MEM中,并更新备份寄存器的值;
当私钥加解密操作次数寄存器和旁路攻击概率寄存器的值发生改变时,现场保护与恢复单元同样将它们的值写入MEM。
2.如权利要求1所述的安全芯片中对旁路攻击进行早期预警的方法,其特征在于旁路攻击概率计算部件由第一多路选择器和第二多路选择器组成,两个多路选择器串联,第一多路选择器的输出作为第二多路选择器的输入;与私钥SK[x][y]对应的私钥加解密操作计数寄存器为REGSK1[x][y],旁路攻击概率寄存器为REGP[x][y],1≤x≤NC,0≤y≤Kx-1,以私钥SK[x][y]为目标的旁路攻击新的概率计算方法为:
以第一多路选择器的输出t和旁路攻击概率寄存器REGP[x][y]的值u作为第二多路选择器的输入,将t和u映射到区间[0,2NP-1]中的元素v,具体的映射方式为v=[w1t+w2u],w1和w2分别为t和u的权值,权值w1和w2为设计者确定的参数,满足:0≤w1,w2≤1,w1+w2=1,0≤t≤2NP-1,0≤u≤2NP-1。
3.如权利要求1所述的安全芯片中对旁路攻击进行早期预警的方法,其特征在于状态机FSMSKn状态转换过程中根据总线信号判断安全芯片是否执行私钥加解密操作的方法为:如果密码算法运算模块CRPn为软件模块,当片内微处理器核通过总线读取指令的地址位于CRPn的范围内,且微处理器核通过总线读取数据的地址与私钥SK[n][x]在非易失存储器中的存储地址相匹配,则安全芯片正在执行关于私钥SK[n][x]的加解密操作;如果密码算法运算模块CRPn为硬件协处理器,则根据片内微处理器核通过总线向CRPn发出的控制命令来确定是否执行关于私钥SK[n][x]的加解密操作,若控制命令是加密或解密,且安全芯片通过总线读取非易失存储器中的私钥SK[n][x]或者密码算法运算模块CRPn直接通过总线读取私钥SK[n][x],则安全芯片正在执行关于私钥SK[n][x]的加解密操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810143448A CN100578520C (zh) | 2008-10-30 | 2008-10-30 | 安全芯片中对旁路攻击进行早期预警的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810143448A CN100578520C (zh) | 2008-10-30 | 2008-10-30 | 安全芯片中对旁路攻击进行早期预警的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101382978A true CN101382978A (zh) | 2009-03-11 |
CN100578520C CN100578520C (zh) | 2010-01-06 |
Family
ID=40462814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810143448A Expired - Fee Related CN100578520C (zh) | 2008-10-30 | 2008-10-30 | 安全芯片中对旁路攻击进行早期预警的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100578520C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710413A (zh) * | 2012-04-25 | 2012-10-03 | 杭州晟元芯片技术有限公司 | 一种抗dpa/spa攻击的系统和方法 |
CN103530566A (zh) * | 2013-10-21 | 2014-01-22 | 中国科学院深圳先进技术研究院 | 一种检测诱导错误攻击下安全芯片安全性能的系统 |
CN104484583A (zh) * | 2014-12-15 | 2015-04-01 | 天津大学 | 一种限定有效期的ip核的保护方法 |
CN104484308A (zh) * | 2014-11-18 | 2015-04-01 | 瑞昱半导体股份有限公司 | 应用于操作模式有限状态机的控制方法以及计算机可读媒体 |
CN106548098A (zh) * | 2015-09-21 | 2017-03-29 | 恩智浦有限公司 | 用于检测故障攻击的方法和系统 |
CN107818270A (zh) * | 2016-09-14 | 2018-03-20 | 国民技术股份有限公司 | 芯片的安全保护电路及保护方法 |
CN109508540A (zh) * | 2018-09-12 | 2019-03-22 | 成都奥卡思微电科技有限公司 | 一种芯片安全监视方法和安全监视芯片 |
CN112084541A (zh) * | 2020-08-11 | 2020-12-15 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 硬件木马检测方法、系统、计算机设备及可读存储介质 |
CN112424783A (zh) * | 2018-07-09 | 2021-02-26 | Arm有限公司 | 重复边信道攻击对策 |
CN114722767A (zh) * | 2022-05-13 | 2022-07-08 | 紫光同芯微电子有限公司 | 用于安全芯片混合布局的方法及装置 |
CN115118477A (zh) * | 2022-06-22 | 2022-09-27 | 四川数字经济产业发展研究院 | 一种基于深度强化学习的智能电网状态恢复方法及系统 |
-
2008
- 2008-10-30 CN CN200810143448A patent/CN100578520C/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710413A (zh) * | 2012-04-25 | 2012-10-03 | 杭州晟元芯片技术有限公司 | 一种抗dpa/spa攻击的系统和方法 |
CN103530566A (zh) * | 2013-10-21 | 2014-01-22 | 中国科学院深圳先进技术研究院 | 一种检测诱导错误攻击下安全芯片安全性能的系统 |
CN103530566B (zh) * | 2013-10-21 | 2016-08-24 | 中国科学院深圳先进技术研究院 | 一种检测诱导错误攻击下安全芯片安全性能的系统 |
CN104484308A (zh) * | 2014-11-18 | 2015-04-01 | 瑞昱半导体股份有限公司 | 应用于操作模式有限状态机的控制方法以及计算机可读媒体 |
CN104484308B (zh) * | 2014-11-18 | 2017-12-26 | 瑞昱半导体股份有限公司 | 应用于操作模式有限状态机的控制方法 |
CN104484583A (zh) * | 2014-12-15 | 2015-04-01 | 天津大学 | 一种限定有效期的ip核的保护方法 |
CN104484583B (zh) * | 2014-12-15 | 2017-11-17 | 天津大学 | 一种限定有效期的ip核的保护方法 |
CN106548098A (zh) * | 2015-09-21 | 2017-03-29 | 恩智浦有限公司 | 用于检测故障攻击的方法和系统 |
CN107818270A (zh) * | 2016-09-14 | 2018-03-20 | 国民技术股份有限公司 | 芯片的安全保护电路及保护方法 |
CN107818270B (zh) * | 2016-09-14 | 2023-12-29 | 国民技术股份有限公司 | 芯片的安全保护电路及保护方法 |
CN112424783A (zh) * | 2018-07-09 | 2021-02-26 | Arm有限公司 | 重复边信道攻击对策 |
CN109508540A (zh) * | 2018-09-12 | 2019-03-22 | 成都奥卡思微电科技有限公司 | 一种芯片安全监视方法和安全监视芯片 |
CN112084541A (zh) * | 2020-08-11 | 2020-12-15 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 硬件木马检测方法、系统、计算机设备及可读存储介质 |
CN114722767A (zh) * | 2022-05-13 | 2022-07-08 | 紫光同芯微电子有限公司 | 用于安全芯片混合布局的方法及装置 |
CN115118477A (zh) * | 2022-06-22 | 2022-09-27 | 四川数字经济产业发展研究院 | 一种基于深度强化学习的智能电网状态恢复方法及系统 |
CN115118477B (zh) * | 2022-06-22 | 2024-05-24 | 四川数字经济产业发展研究院 | 一种基于深度强化学习的智能电网状态恢复方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100578520C (zh) | 2010-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100578520C (zh) | 安全芯片中对旁路攻击进行早期预警的方法 | |
Qiu et al. | Voltjockey: Breaching trustzone by software-controlled voltage manipulation over multi-core frequencies | |
Moore et al. | Improving smart card security using self-timed circuits | |
Yuce et al. | Fault attacks on secure embedded software: Threats, design, and evaluation | |
US7590880B1 (en) | Circuitry and method for detecting and protecting against over-clocking attacks | |
Saputra et al. | Masking the energy behavior of DES encryption [smart cards] | |
US7205794B2 (en) | Microprocessor resistant to power analysis | |
US9747472B2 (en) | Mesh grid protection | |
Guilley et al. | Fault injection resilience | |
Tiri | Side-channel attack pitfalls | |
Dutertre et al. | Review of fault injection mechanisms and consequences on countermeasures design | |
TW200949677A (en) | Microprocessor having secure non-volatile storage access | |
CN101695021A (zh) | 一种抗spa/dpa攻击的系统和方法 | |
TW201514992A (zh) | 非揮發記憶體裝置以及用於非揮發記憶體裝置的方法 | |
EP3480998B1 (en) | Operation method and security chip | |
KR20170106623A (ko) | 클락 지연들을 변동시킴으로써 부채널 공격들로부터 보호하는 시스템 및 방법 | |
CN102271038A (zh) | 用于生成比特向量的方法 | |
Roy et al. | Circuit CAD tools as a security threat | |
CN107994980B (zh) | 一种采用时钟乱序技术和混沌触发器的抗dpa攻击方法 | |
CN104660466A (zh) | 一种安全测试方法及系统 | |
CN106487499A (zh) | Rijndael算法的保护 | |
Gross et al. | Fpganeedle: Precise remote fault attacks from fpga to cpu | |
Choudhury et al. | Patron: A pragmatic approach for encoding laser fault injection resistant fsms | |
Blömer et al. | Wagner’s Attack on a secure CRT-RSA Algorithm Reconsidered | |
Moein et al. | Hardware attack mitigation techniques analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100106 Termination date: 20121030 |