防止智能卡启动序列被修改的方法

文档序号:8395777阅读:168来源:国知局
防止智能卡启动序列被修改的方法
【技术领域】
[0001]本发明涉及一种防止智能卡启动序列被修改的方法。
【背景技术】
[0002]当前,智能卡在国民生活中的应用越来越多,与此同时,智能卡被攻击的情况也在变多。为了防止智能卡被攻击,智能卡芯片会实现大量的安全电路和安全相关的软件算法,通常在智能卡上电时,初始化安全电路的功能。在安全功能初始化完成后,智能卡能发现并阻止恶意攻击。为了在复杂的情形下,保证智能卡的安全性,需要大量的安全电路,这需要完成大量的安全初始化操作。每个安全电路的硬件是独立的,每个安全电路的初始化操作不会被攻击,但多个安全电路的初始化序列会遭到恶意攻击,如果攻击者在这个过程成功实施攻击,则智能卡的安全会受到威胁。
[0003]多个安全初始化序列,通常是通过软件连接的。如果在上电启动序列过程遭到恶意攻击,则部分安全电路会无法初始化,不能保证智能卡的安全性。

【发明内容】

[0004]本发明要解决的技术问题是提供一种防止智能卡启动序列被修改的方法,能够阻止在智能卡上电启动过程遭到的攻击。
[0005]为解决上述技术问题,本发明的防止智能卡启动序列被修改的方法,包括如下步骤:
[0006]步骤一、在智能卡芯片上设置一个安全序列寄存器,该安全序列寄存器的每两个位寄存一个安全序列标志;每个安全序列标志表示一个安全电路的状态;并且寄存校验码;
[0007]步骤二、所述智能卡芯片上电后,将所述安全序列寄存器寄存安全序列标志的位初始化为b01 ;
[0008]步骤三、依次完成所有安全电路的初始化,在每一安全电路初始化完成后,将相对应的所述安全序列寄存器的位修改为blO,同时修改校验码;
[0009]步骤四、检查所述安全序列寄存器的校验码是否正确,如果正确,则执行步骤五,否则初始化过程出错,进行错误处理;
[0010]步骤五、检查所述安全序列寄存器的值是否为b11...10的序列,如果是表示初始化完成,否则初始化过程出错,进行错误处理。
[0011]本发明采用一个专用的安全序列寄存器处理启动序列的状态,每个有效状态信息由两个相反的位来保存,对所有的状态信息,增加了校验码,能够有效防止智能卡启动过程中,启动序列遭到攻击
[0012]本发明不需要增加复杂的硬件,通过嵌入式安全软件、安全电路驱动和安全电路三方面的配合,可以可靠的防止激光注入攻击;对其它类型的攻击,也能提高防范注入攻击能力。
[0013]在现有的方法中,启动序列的标志通常放在RAM中,这易受到激光注入攻击。本发明的方法,启动序列的标志放在专用的由硬件构成的安全序列寄存器中,由软件修改并检查安全序列寄存器的值,采用硬件和软件相结合的方式来防止启动序列过程的激光注入攻击。
【附图说明】
[0014]下面结合附图与【具体实施方式】对本发明作进一步详细的说明:
[0015]附图是所述防止智能卡启动序列被修改的方法初始化流程图;
【具体实施方式】
[0016]所述防止智能卡启动序列被修改的方法,是在智能卡安全电路中,设置一个安全序列寄存器,用于寄存启动序列标志,该安全序列寄存器的每两个位对应一个安全序列标志,一个安全序列标志表不一个安全电路的状态;也就是说安全序列寄存器中每两个位对应一个安全电路的状态。所述安全序列寄存器的位数为,大于或等于智能卡芯片中是安全电路数目的两倍,再加上校验码的位数。所述校验码,包括海明校验码或循环冗余校验码(CRC)0
[0017]结合附图所示,所述防止智能卡启动序列被修改的方法,初始化流程如下:
[0018]步骤一、上电时,所述安全序列寄存器初始化成bOlOl...01+校验码。
[0019]步骤二、设置计数器i=l。
[0020]步骤三、初始化安全电路i。在安全电路i初始化完成后,由软件将所述安全序列寄存器对应的位改为blO,电路同时自动修改安全寄存器的校验码。
[0021]步骤四、将所述计数器的值加1,i+1。
[0022]步骤五、判断是否还有安全电路需要初始化,若有则返回至步骤三,进行安全电路的初始化;否则执行步骤六。
[0023]步骤六、检查所述安全序列寄存器的校验码是否正确,如果正确,则执行步骤七,否则初始化过程出错,进行错误处理。
[0024]步骤七、检查所述安全序列寄存器的值是否为blOl0...10的序列,如果是则执行步骤八,否则初始化过程出错,进行错误处理。
[0025]步骤八、初始化过程正确,完成初始化。
[0026]在智能卡的服务启动后,在进行所有的安全操作以前,需要做安全检查,方法如下:
[0027]步骤(I)、检查所述安全序列寄存器的校验码,如果安全序列寄存器的校验码错,表明智能卡的初始序列没有正确完成,做安全审计后,重新启动智能卡。
[0028]步骤(2)、检查所述安全序列寄存器的值,如果不是blOl0...10的序列,表明智能卡的初始序列没有正确完成,做安全审计后,重新启动智能卡。
[0029]在智能卡接收应用层数据单元过程中,要使能智能卡芯片的随机自跳转功能;在智能卡接收应用层数据单元后,要再次检验所述安全序列寄存器的值是否是预期的值。在上面的过程中,如果安全序列寄存器的值不是预期的值,则由软件重新启动智能卡芯片。
[0030]下面结合一个具体的实施例对本发明作进一步的说明。具体实现的步骤如下:[0031 ] 步骤1、芯片A共有13个安全电路,均需要初始化,在芯片A上设置一个安全序列寄存器,该安全序列寄存器包含26个有效数据位,6个海明校验码校验位,海明校验码对外不可见。
[0032]步骤2、在芯片A上电后,启动所述安全序列寄存器初始化为b0101010101010101010101010101010101010101010101010101,同时更新海明校验码。
[0033]步骤3、初始化安全电路I。
[0034]步骤4、修改所述安全序列寄存器的第I位和第2位,修改值为blO,同时更新海明校验码。
[0035]步骤5、初始化安全电路2 ;
[0036]步骤6、修改所述安全序列寄存器的第3位和第4位,修改值为blO,同时更新海明校验码。依此类推,依次顺序初始化后续安全电路
[0037]…
[0038]步骤7、初始化安全电路13 ;
[0039]步骤8、修改所述安全序列寄存器的第25位和第26位,修改值为blO,同时更新海明校验码。
[0040]步骤9、检查所述安全序列寄存器的校验码,如果不正确,则报错,否则执行下一止/J/ O
[0041]步骤10、检查启动所述安全序列寄存器的值,如果是bl010101010101010101010101010101010101010101010101010,则继续下一步,否则报错。
[0042]步骤11、启动序列完成。
[0043]步骤12、在使用安全功能以前,先检查所述安全序列寄存器的验验码,如果校验码不正确,则报错,再检查所述安全序列寄存器的值,如果不是bl010101010101010101010101010101010101010101010101010,则报错,否则继续工作。
[0044]在上面的实施例中,步骤4、6、8的过程软件写入的值与初始状态的值是相反的,硬件自动更新校验码,确保安全序列寄存器不被攻击。为了防止外部攻击程序存储器导致前面的安全流程被跳过,增加了步骤12,在每次操作到安全功能前,校验所述安全序列寄存器的值,能有效的避免激光注入等攻击方式。
[0045]以上通过结合【具体实施方式】对本发明作了详细的说明,这些并非构成对本发明的限制,在不脱离本发明原理的情况下,还可做出若干变形和改进,这些也应视为属于本发明的保护范围。
【主权项】
1.一种防止智能卡启动序列被修改的方法,其特征在于,包括如下步骤: 步骤一、在智能卡芯片上设置一个安全序列寄存器,该安全序列寄存器的每两个位寄存一个安全序列标志;每个安全序列标志表示一个安全电路的状态;并且寄存校验码; 步骤二、所述智能卡芯片上电后,将所述安全序列寄存器寄存安全序列标志的位初始化为bOl ; 步骤三、依次完成所有安全电路的初始化,在每一安全电路初始化完成后,将相对应的所述安全序列寄存器的位修改为blO,同时修改校验码; 步骤四、检查所述安全序列寄存器的校验码是否正确,如果正确,则执行步骤五,否则初始化过程出错,进行错误处理; 步骤五、检查所述安全序列寄存器的值是否为blOl0...10的序列,如果是则初始化完成,否则初始化过程出错,进行错误处理。
2.如权利要求1所述的方法,其特征在于:所述安全序列寄存器的位数为,大于或等于所述安全电路数目的两倍,再加上校验码的位数。
3.如权利要求1所述的方法,其特征在于:所述校验码,包括海明校验码或循环冗余校验码CRC。
4.如权利要求1所述的方法,其特征在于:实施步骤二,由硬件上电时设置完成。
5.如权利要求1所述的方法,其特征在于:在智能卡的服务启动后,在进行所有的安全操作以前,需要做安全检查,方法如下: 步骤(I)、检查所述安全序列寄存器的校验码,如果安全序列寄存器的校验码错,表明智能卡的初始序列没有正确完成,做安全审计后,重新启动智能卡。 步骤(2)、检查所述安全序列寄存器的值,如果不是blOl0...10的序列,表明智能卡的初始序列没有正确完成,做安全审计后,重新启动智能卡。
6.如权利要求1所述的方法,其特征在于:在智能卡接收应用层数据单元过程中,要使能智能卡芯片的随机自跳转功能;在智能卡接收应用层数据单元后,要再次检验所述安全序列寄存器的值是否是预期的值;如果安全序列寄存器的值不是预期的值,则重新启动智倉泛一|e。
【专利摘要】本发明公开了一种防止智能卡启动序列被修改的方法。步骤一、在智能卡芯片上设置一个安全序列寄存器,该安全序列寄存器的每两个位寄存一个安全序列标志;每个安全序列标志表示一个安全电路的状态;并且寄存校验码;步骤二、智能卡芯片上电后,将安全序列寄存器寄存安全序列标志的位初始化为b01;步骤三、依次完成所有安全电路的初始化,在每一安全电路初始化完成后,将相对应的所述安全序列寄存器的位修改为b10,同时修改校验码;步骤四、检查校验码是否正确;步骤五、检查所述安全序列寄存器的值是否为b1010...10的序列。本发明能够阻止在智能卡上电启动过程遭到的攻击。
【IPC分类】G06F11-10
【公开号】CN104714857
【申请号】CN201310684609
【发明人】赫松龄
【申请人】上海华虹集成电路有限责任公司
【公开日】2015年6月17日
【申请日】2013年12月13日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1