一种版本信息的控制方法和控制装置的制造方法_2

文档序号:9667158阅读:来源:国知局
版本号升级规则如下:当数据块被修改但不涉及安全时,则只需要升级主版本号或子版本号,不需要升级安全版本号。当数据块被修改且与安全有关时,则必须升级安全版本号,那么当升级安全版本号时,也需要对所述安全计数值进行升级。
[0022]在具体实施中,所述获取一次性可编程器中的安全计数值,闪存中版本数据块对应的版本控制信息以及所述安全计数值和版本控制信息的签名数据,具体为:
获取一次性可编程器中的安全计数值,闪存中版本数据块对应的版本控制信息、第一寄存器中的随机数(Random-seed),第二寄存器中的芯片身份标识码(Chip ID),以及所述安全计数值,版本控制信息,随机数和芯片身份标识码的签名数据。
[0023]在具体实施中,根据所述安全计数值和版本控制信息的签名数据对所述安全计数值和版本控制信息进行校验,具体为: 对所述安全计数值、版本控制信息、随机数和芯片身份标识码进行安全哈希算法得到哈希值;
对获取到的签名数据进行解密;
根据所述哈希值和解密后的签名数据进行校验算法;
当所述哈希值和解密后通过所述校验算法时,校验通过。
[0024]比如:对所述安全计数值、版本控制信息、随机数和芯片身份标识码使用SHA算法进行SHA运算得到哈希值,接着使用KEY对签名数据进行RSA解密,得到解密值;最后将哈希值和解密值使用RSA检验算法(如PSS或PKCS)进行校验并判断结果。
[0025]如图2所示,分别从0ΤΡ中读取出VR-Counter,Flash中读取出VRDB和签名数据,第一寄存器中读取出Random-seed和第二寄存器中读取出Chip ID,VR_Counter,版本控制信息,Random-seed和Chip ID组成数据组并使用与签名时相同的算法得到当前的签名数据,所述当前的签名数据和从Flash中读取的签名数据比较以进行校验,只有在校验通过的情况下才能进行版本控制。另外,Random-seed作为随机数,增加随机性;而Chip ID为芯片特有的,每个芯片的ID都是不同的,增加了特有性,整体而言,增加了控制方法的安全性。
[0026]也就是说,VRDB的签名是将由版本信息、VR-Counter、Random-seed、Chip ID组成的数据组进行签名,并分别存储(VRDB及签名数据存储在Flash中,VR-Counter存储在OTP中,Random-seed和Chip ID存储在各自的寄存器中);在加载应用程序进行版本比较前,会对组成的数据组进行校验。
[0027]在具体实施中,所述对更新后的版本控制信息和安全计数值进行签名,得到更新后的签名数据,具体为:
所述对更新后的版本控制信息,升级后的安全计数值,随机数芯片和身份标识码进行签名,得到更新后的签名数据。
[0028]也就是说,在更新应用程序后,同时会将VRDB中的版本信息升级为应用程序数据块的版本信息,即更新VRDB;如果应用程序的更新涉及到安全,则同时也升级VR-Counter ;然后对新的数据组进行重新签名并分别更新至相对应位置。如图3所示,分别从各自寄存器中读取出Random-seed和Chip ID,若VR-Counter没有被升级,则从0ΤΡ中读出,与更新后的VRDB组成新的数据组并重新签名。重新签名后,将更新后的VRDB及重新签名后的签名数据更新至Flash。如果VR-Counter有升级,更新后的版本信息、升级后的VR-Counter,Random-seed和Chip ID组成新的数据组并重新签名,然后将升级后的VR-Counter更新至OTP,最后复位系统。
[0029]在具体实施中,本发明还提供一种实施例的版本信息的控制装置,如图4所示,所述控制装置包括:
一次性可编程器10,用于存储安全计数值;
闪存20,用于存储版本数据块和应用程序数据块;
控制器30,用于获取一次性可编程器中的安全计数值,闪存中版本数据块对应的版本控制信息以及所述安全计数值和版本控制信息的签名数据;根据所述安全计数值和版本控制信息的签名数据对所述安全计数值和版本控制信息进行校验;当校验通过时,获取闪存中应用程序数据块的版本控制信息;判断应用程序数据块的版本控制信息是否高于或等于版本数据块对应的版本控制信息;如果是,加载应用程序数据块中的应用程序。
[0030]从上述方法的方案可以看出,当需要加载应用程序时,需要先对跟所述安全计数值和版本控制信息的签名数据对所述安全计数值和版本控制信息进行校验之后,再进行版本控制,以保证加载应用程序的安全性,另外,由于版本信息存储在闪存中,可以大大提高了版本信息的升级次数。
[0031]由于应用程序大部分的更新可能是与安全无关的,仅仅只是功能上的修改,但是会使得应用程序更新的频度比较大,如果将其版本控制信息存储于0TP10中,为保证能升级足够次数,则需要非常大的0TP10空间。为避免占用太多0TP10空间又确保版本信息安全可信,本发明采取以下方式:
第一,使用部分0TP10空间,但不作为存储版本控制信息用,而是作为计数应用程序涉及安全的升级,即用于存储安全计数值。另外,将安全计数值命名为VR-Counter。
[0032]第二,将版本控制信息存储于版本数据块(VRDB,Vers1n Data Block)中,而VRDB会被签名并存储于闪存(Flash)中;因为Flash没有OTP的编程特性,部分的存储空间用于存储版本信息以便于数量较多次数的升级比如:4294967296次,可以大大提高了版本信息的升级次数。
[0033]也就是说,系统在启动时首先会校验安全计数值和版本控制信息形成的数据组,校验通过后进行版本控制;如果应用程序数据块中的版本信息低于VRDB中对应的版本信息,应用程序将不被加载;版本控制通过后才加载应用程序。
[0034]在具体实施中,所述控制器30还用于:
获取应用程序的更新信号;
获取更新后应用程序数据块的版本控制信息,当前版本数据块对应的版本控制信息和一次性可编程器中的安全计数值;
判断更新后应用程序数据块的版本控制信息是否高于当前版本数据块对应的版本控制信息;
如果是,对更新后的版本控制信息和安全计数值进行签名,得到更新后的签名数据,即更新后的版本控制信息和安全计数值形成数据组,对所述数据组使用SHA(算法进行SHA运算,再进行加密,得到更新后的签名数据;
将更新后的版本控制信息和更新后的签名数据更新到闪存的版本数据块中。
[0035]如果应用程序更新,则升级VRDB中对应的版本信息,即更新VRDB;若应用程序的更新与安全有关,则同时还需要升级VR-Counter,然后重新签名数据组;将升级后的VRDB、VR-Counter和重新签名获得的签名数据更新至相对应位置,复位后重新进入应用程序加载流程,也就是说更新后的签名数据作为下一次加载流程中的获取到的签名数据。
[0036]在具体实施中,所述版本控制信息包括安全版本号、主版本号和子版本号。
[0037]在具体实施中,所述控制器30还用于:当更新后的版本控制信息的安全版本号进行更新时,对所述安全计数值进行升级。
[0038]在具体实施中,存储在VRDB中的版本信息一般为一个32位4个字节的数据,各个字节分别指示应用程序数据块的安全版本号、主版本号(2个字节)、子版本号。版本号升级规则如下:当数据块被修改但不涉及安全时,则只需要升级主版本号或子版本号,不需要升级安全版本号。当数据块被修改且与安全有关时,则必须升级安全版本号,那么当升级安全版本号时,也需要对所述安全计数值进行升级。
[0039]在具体实施中,所述控制器30还用于:获取一次性可编程器中的安全计数值,闪存中版本数据
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1