CN102014015B - 智能密钥设备的自检方法 - Google Patents
智能密钥设备的自检方法 Download PDFInfo
- Publication number
- CN102014015B CN102014015B CN201010214151A CN201010214151A CN102014015B CN 102014015 B CN102014015 B CN 102014015B CN 201010214151 A CN201010214151 A CN 201010214151A CN 201010214151 A CN201010214151 A CN 201010214151A CN 102014015 B CN102014015 B CN 102014015B
- Authority
- CN
- China
- Prior art keywords
- random number
- intelligent cipher
- key equipment
- algorithm
- key
- 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.)
- Active
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种智能密钥设备的自检方法,属于信息安全领域。方法包括:智能密钥设备上电;所述智能密钥设备进行初始化;所述智能密钥设备执行如下操作,包括:与主机建立第一通信、生成随机数并检测所述随机数的安全性、检测关键函数的安全性、计算存储区存储内容的差错检测码并根据所述计算得到的差错检测码来检测所述存储区存储内容的完整性、对第一检测数据进行散列运算并根据所述散列运算结果来检测散列算法的安全性和对第二检测数据进行加解密操作并根据所述加解密操作结果来检测加解密算法的安全性;所述智能密钥设备与所述主机建立第二通信,并等待接收所述主机下发的指令。
Description
技术领域
本发明属于信息安全领域,具体涉及一种智能密钥设备的自检方法。
背景技术
智能密钥设备是一种带有处理器和存储器的小型硬件装置,使用简单、成本较低。它内置单片机或智能卡芯片,可以存储用户的密钥或数字证书,利用智能密钥设备内置的密码算法实现对用户身份的认证。智能密钥设备具有电子邮件加密、数字签名、安全证书、安全网络登录和访问SSL(Security Socket Layer,安全套接层)安全网络等功能,并且具有保证用户的私钥永远不离开硬件的特征,还具有物理上防攻击的特性,安全性极高,在现有技术中,智能密钥设备内部通常采用COS来管理。
COS是英文全称Chip Operating System(卡片操作系统)的缩写。从本质上说它是智能卡芯片内的一个监控软件,用于接收和处理外界发给智能卡的各种信息,管理卡内的存储器,并给出相应的应答信息。在现有技术中,COS一般为软件开发商编写的可被智能密钥设备所识别并执行的程序。
智能密钥设备通常使用加密或基于公钥体制的数字签名来验证用户身份,公钥体制的数字签名既保证了信息的机密性,又保证了信息具有不可抵赖性。即便是这样还不能完全保证数字签名及加密数据的安全性,因为固件COS本身也存在安全风险,体现在两个方面,一是对COS芯片和存储内容的破坏,另一方面是利用COS自身设计隐患,或利用COS芯片的剩余空间嵌入非法程序等,严重影响了智能密钥设备的安全性,使智能密钥设备丧失了其存在的价值,同时,也必然会给用户带来不必要的损失。
发明内容
针对上述问题,本发明提供了一种智能密钥设备的自检方法,具体用来保证智能密钥设备的固件安全,技术方案如下:
一种智能密钥设备的自检方法,所述方法包括:
智能密钥设备上电;
所述智能密钥设备进行初始化;
所述智能密钥设备执行如下操作,包括:与主机建立第一通信、生成随机数并检测所述随机数的安全性、检测关键函数的安全性、计算存储区存储内容的差错检测码并根据所述计算得到的差错检测码来检测所述存储区存储内容的完整性、对第一检测数据进行散列运算并根据所述散列运算结果来检测散列算法的安全性和对第二检测数据进行加解密操作并根据所述加解密操作结果来检测加解密算法的安全性;
所述智能密钥设备与所述主机建立第二通信,并等待接收所述主机下发的指令。
所述随机数包括真随机数和伪随机数。
当所述随机数为真随机数时,检测所述随机数的安全性具体为:
所述智能密钥设备获取随机种子,所述随机种子包括:环境噪音、系统时钟、中断信号、CPU温度、电压;
所述智能密钥设备根据所述随机种子按照预设计算方法连续生成两个真随机数;
所述智能密钥设备判断所述生成的两个真随机数是否相同,如果不相同,则真随机数的生成是安全的,否则,真随机数的生成是不安全的。
当所述随机数为伪随机数时,检测所述随机数的安全性具体为:
所述智能密钥设备生成伪随机数,并判断所述生成的伪随机数是否与预先存储的伪随机数相同,如果相同,则伪随机数的生成是安全的,否则,伪随机数的生成是不安全的。
所述方法还包括,对所述智能密钥设备生成伪随机数过程中的第一初始化模块进行安全性检测,具体为:
调用所述第一初始化模块,所述第一初始化模块用于将代码区中的密钥Key、初始向量V、变量reseed、自检标识清零;
判断所述代码区中的密钥Key、初始向量V、变量reseed及自检标识是否为零,如果是零,则所述第一初始化模块是安全的,否则,所述第一初始化模块是不安全的。
所述方法还包括,对所述智能密钥设备生成伪随机数过程中的第二初始化模块进行安全性检测,具体为:
调用所述第二初始化模块,所述第二初始化模块用于将代码区中的密钥Key、初始向量V、熵清零;
判断所述代码区中的密钥Key、初始向量V、熵是否为零,如果是零,则所述第二初始化模块是安全的,否则,所述第二初始化模块是不安全的。
所述方法还包括,对所述智能密钥设备生成伪随机数过程中的密钥生成模块进行安全性检测,具体为:
调用所述密钥生成模块,所述密钥生成模块用于生成密钥key、初始向量V;
判断生成的密钥key、初始向量V是否与预先存储的密钥Key、初始向量V相同,如果相同,则说明所述密钥生成模块是安全的,否则,所述密钥生成模块是不安全的。
所述方法还包括,对所述智能密钥设备生成伪随机数过程中的重置模块进行安全性检测,具体为:
判断生成的密钥Key、初始向量V是否与预先存储的密钥Key、初始向量V相同,如果相同,则说明所述重置模块是安全的,否则,所述重置模块是不安全的。
所述方法还包括,对所述智能密钥设备生成伪随机数过程中的伪随机数生成模块进行安全性检测,具体为:
调用所述伪随机数生成模块,所述伪随机数生成模块用于生成伪随机数;
判断生成的伪随机数是否与预先存储的伪随机相同,如果相同,则所述伪随机数生成模块是安全的,否则,所述伪随机数生成模块是不安全的。
所述关键函数是自定义的。
所述存储区包括数据区和代码区;
其中,所述数据区包括用户数据和用户数据差错检测码,所述代码区包括用户代码和用户代码差错检测码。
检测所述存储区中数据区内容的完整性具体为:
所述智能密钥设备计算所述数据区中用户数据差错检测码,并判断所述计算得到的差错检测码是否与所述数据区中存储的用户数据差错检测码相同,如果相同,则所述数据区内容是完整的,否则,所述数据区内容是不完整的。
检测所述存储区中代码区内容的完整性具体为:
所述智能密钥设备计算所述代码区中用户代码的差错检测码,并判断所述计算得到的差错检测码是否与所述代码区中存储的用户代码差错检测码相同,如果相同,则所述代码区内容是完整的,否则,所述代码区内容是不完整的。
所述差错检测码具体为循环冗余校验码CRC。
对第一检测数据进行散列运算,并根据所述散列运算结果来检测散列算法的安全性具体为:
所述智能密钥设备根据所述散列算法对所述第一检测数据进行散列运算,并判断所述运算得到的散列值是否与预先存储的散列值相同,如果相同,则所述散列算法是安全的,否则,所述散列算法是不安全的;
其中,所述散列算法包括SHA1算法和SHA256算法。
所述预先存储的散列值是预先根据所述散列算法对第一检测数据进行计算得到的,并存储在所述智能密钥设备中。
对第二检测数据进行加解密操作,并根据所述加解密操作结果来检测加解密算法的安全性具体为:
所述智能密钥设备根据对称加密算法对所述第二检测数据进行加解密操作,并判断所述加解密操作结果是否与预先存储的密文相同,如果相同,则所述加解密算法是安全的,否则,所述加解密算法是不安全的。
所述加解密算法包括对称加解密算法和非对称加解密算法;
其中,所述对称加密算法包括AES算法和DES算法;所述非对称加解密算法包括RSA算法和椭圆曲线算法ECC。
所述预先存储的密文是预先根据所述加解密算法对所述第二检测数据进行计算得到的,并存储在所述智能密钥设备中。
所述方法还包括:设置自检标识,当所述智能密钥设备进行自检,所述自检结果错误时,将所述自检标识置为预定值。
所述方法还包括:
当所述智能密钥设备接收到的指令为RSA密钥生成指令时,所述智能密钥设备生成RSA算法公私密钥对,并判断所述公私密钥对是否匹配,如果匹配,则所述智能密钥设备生成的RSA公私密钥对是安全的,如果不匹配,则所述智能密钥设备生成的RSA公私密钥对是不安全的。
所述判断所述公私密钥对是否匹配具体为:
根据所述生成的私钥对第三检测数据进行签名操作,得到签名值;
根据所述生成的公钥对所述签名值进行解密操作,得到第一数据
比较所述第一数据是否与第三检测数据相同,若相同,则生成的公私密钥对是匹配的,否则,生成的公私密钥对是不匹配的。
有益效果:本发明中智能密钥设备通过对随机数生成安全性、关键函数的安全性、算法的安全性、存储区的完整性进行自检,保证了智能密钥设备固件本身的安全,使得数字签名、加解密数据等操作能够运行在一个安全、可靠的环境中,从而大大提高了智能密钥设备的安全性。
附图说明
图1为本发明实施例1提供的一种智能密钥设备自检的方法流程图;
图2为本发明实施例1提供的一种检测真随机数生成安全性的方法流程图;
图3为本发明实施例1提供的一种检测伪随机数生成安全性的方法流程图;
图4为本发明实施例1提供的一种检测SHA1算法安全性的方法流程图;
图5为本发明实施例1提供的一种检测关键函数的安全性的方法流程图;
图6为本发明实施例1提供的一种检测数据区完整性的方法流程图;
图7为本发明实施例1提供的一种检测RSA公私密钥对匹配性的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步的描述。
实施例1
本实施例提供了一种智能密钥设备的自检方法,具体地,智能密钥设备在响应主机下发的指令之前进行自检操作,其中,自检的内容包括:检测智能密钥设备中随机数(包括真随机数和伪随机数)的生成安全性、检测RSA算法的安全性、检测关键函数的安全性、检测数据区及代码区的内容完整性,自检的内容还包括:根据known answer的检测方法来检测AES、DES、SHA1、SHA256等算法的安全性;上述自检行为保障了智能密钥设备的硬件环境的安全性,从而保障了签名、加解密数据等操作是运行在一个安全的环境中。
本实施例以USB Key这种较为典型的智能密钥设备作为该方法的执行主体进行说明,但并不用以限制该方法的执行主体,本领域技术人员所熟知的智能密钥设备均在本发明的保护范围之内。
参见图1,一种智能密钥设备自检的方法,具体技术方案如下:
101、USB Key上电;
102、USB Key进行初始化;
具体地,USB Key进行初始化包括:设置系统时钟、设置端口状态(如将端口状态设为输出状态)、及初始化MF(Master File,主文件)等;
103、USB Key开始进行自检;
USB Key自检的内容如104至113所述,具体如下:
104、USB Key生成真随机数,并对所生成的真随机数的安全性进行检测;
参见图2,USB Key生成真随机数,并对所生成的真随机数的安全性进行检测的具体过程如下:
104-1、硬件电路获取环境噪音,并将获取的噪音作为随机种子来生成真随机数,按照该方法连续生成两个真随机数;
具体地,USB Key将获取的随机种子采用预定的计算方法来计算得到真随机数,例如,预定的计算方法为:Xn=(Xn-1*a+b)mod c,其中,参数a、b、c为整型数据,mod指求余运算,获取的随机种子是Xn的初始值,通过这样的迭代运算可以得到一个随机数列。
其中,硬件电路为USB Key内真随机数的生成模块,该模块由生产厂家设计完成;
其中,随机种子的获取,即噪音的取样可以采用两种策略:1)按一定的基准时间间隔(如1分钟)连续取噪音样点来生成随机数;2)即时采样,即在需要的时候一次取若干样点来生成一个随机数;
需要说明的是,本实例中也可以将USB Key内的系统时钟、中断信号、电压、CPU温度等作为生成真随机数时的随机种子;
其中,真随机数的大小为32字节。
本实施例将环境噪音作为随机种子主要是由于:环境噪音属于随机振动,且是瞬态随机振动,随机性较好,而在随机种子随机性良好的情况下,硬件电路所生成的真随机数的随机性良好。
104-2、对比步骤104-1中先后生成的两个真随机数是否相同,如两者相同,则说明USB Key内生成的真随机数是不安全的,如两者不同,说明USB Key生成的真随机数是安全的。
本步骤还具体包括:如果先后生成的真随机数一样,USB Key向主机报错;若先后生成的真随机数不一样,USB Key将前一生成的真随机数导出硬件电路,以供后续操作来使用。
105、USB Key生成伪随机数,并对生成的伪随机数的安全性进行检测;
具体地,USB Key通过调用第一初始化函数、第二初始化函数、密钥生成函数、重置函数及伪随机数生成函数来完成伪随机数的生成。
具体地,第一初始化函数、第二初始化函数、密钥生成函数、重置函数及伪随机数生成函数为:函数uninit()、init()、updata()、resead()及generate()。
具体地,USB Key中生成伪随机数的过程如下:
105-A1、调用函数uninit()将代码区中存储的密钥Key、初始向量V、reseed、自检标识等清零;
其中,reseed是一个变量,用于标识updata()函数被调用的次数;
其中,自检标识用于表示自检是否出错,该标识的初始状态为0,当自检出错时,该自检标识将被置为1;
需要说明的是,USB Key在接收到power off命令后,调用函数uninit()。
105-A2、调用函数init()将代码区中存储的密钥Key、初始向量V、熵(seed)等清零;
具体地,本步骤还包括将变量reseed置为1,开始对updata()函数的调用次数进行计数;
105-A3、调用函数updata(),生成密钥Key和初始向量V;
具体地,函数updata()被调用时,传入的参数包括初始化后的密钥Key、初始向量V、熵及参数reseed;
具体地,函数updata()被调用时,操作包括:根据3DES算法周密钥Key对初始向量V进行加密操作,并在加密操作过后,将初始向量V加1,一轮加密操作完成;在进行下一轮加密操作时,密钥Key对加1后的初始向量V进行加密操作,如此,4轮加密操作后得到4组8字节的密文(这是由于初始向量V是8字节长的数据),该4组8字节的密文顺序组成32个字节的数据,该32个字节的数据与熵进行异或操作后得到新的32个字节的数据,将该新得到的32个字节的数据的前24个字节作为新的密钥Key,而后8个字节作为新的初始向量V,并将所生成的新的密钥Key、初始向量V存储到代码区;
具体地,4轮加密操作结束后,将参数reseed加1。
其中,3DES(即Triple DES)是DES向AES过渡的加密算法,使用3条56位的密钥对数据进行三次加密;数据加密标准(DES)为密码体制中的对称密码体制,又被称为美国数据加密标准。
105-A4、调用函数generate()生成伪随机数;
具体地,函数generate()被调用时,传入的参数包括updata()函数中生成的密钥Key、初始向量V;
具体地,generate()函数被调用时,用密钥Key对初始向量V进行3DES加密操作,计算得到伪随机。
具体地,本步骤中还包括,判断变量reseed是否小于预定值,如果小于,不做任何处理,否则,则调用reseed()函数,对熵进行重置,并将参数reseed清零;
其中,预定值是自定义的,本实例中为10万。
参见图3,对生成的伪随机的安全性进行检测的过程具体如下:
105-B1、对uninit()函数进行检测;
具体地,判断密钥Key、初始向量V、reseed是否为零,如果是,执行105-B2,否则,uninit()函数出错,向主机返回错误报告;
105-B2、对init()函数进行检测;
具体地,判断密钥Key、初始向量V是否为零,是,则执行步骤105-B3,否则,init()函数出错,向主机返回错误报告;
105-B3、对updata()函数进行检测;
具体地,判断updata()函数生成的Key及V与已知的Key和V是否一致,若一致,则说明updata()函数是安全的,否则,updata()函数出错,向主机返回错误报告;
105-B4、对reseed()函数进行检测;
具体地,判断密钥Key、初始向量V、reseed是否为零,如果是,执行105-B5,否则,reseed()函数出错,向主机返回错误报告;
105-B5、对generate()函数进行检测;
具体地,判断生成的伪随机数是否与已知的预先存储的伪随机数相一致,若一致,则说明generate()函数是安全的,否则,generate()函数出错,向主机返回错误报告;
需要说明的是,USB Key中生成的随机数作为RSA算法模块在生成公私密钥对时用到的大素数的选取对象;另外,生成的随机数还可以作为测试数据。
106、USB Key对散列算法的安全性进行检测;
其中,散列算法具体包括SHA1、SHA5、MD5等,本实例中以SHA1算法的检测为例来进行说明;
现有一组检测数据,如0x00101110001110010101110011,采用SHA1算法对该组数据进行计算后得到的摘要值为0xD8E22807,USBKey存储有该组检测数据0x00101110001110010101110011,及其经过SHA1算法计算得到的摘要值0xD8E22807;
参见图4,对SHA1算法的安全性进行检测的过程如下:
106-1、采用SHA1算法对存储的检测数据进行计算,得到摘要值;
具体地,对检测数据0x00101110001110010101110011进行SHA1计算,得到摘要值0xD8E22807;
106-2、判断106-1中计算摘要值与存储的摘要值是否一致,若一致,则SHA1算法是安全的,若不一致,则SHA1算法是不安全的,向主机报告错误信息。
本实施例中,106-1中计算得到的摘要值为0xD8E22807,与存储的摘要值0xD8E22807相同,则USB Key内的SHA1算法是安全的;
需要说明的是,其他散列算法的检测与SHA1算法的检测是一样的,此处就不再赘述。
107、USB Key对DES算法模块的安全性进行检测;
具体地,USB Key对DES算法的检测方法与散列算法的相同,此处就不再赘述。
108、USB Key对AES算法的安全性进行检测;
其中,AES(Advanced Encryption Standard)为高级加密标准,又称Rijndael加密法。
具体地,对AES算法的检测与散列算法的检测方法一样,此处就不再赘述。
109、USB Key对设置的关键函数的安全性进行检测;
其中,关键函数可以是自定义的,本实例以自定义的关键函数EEPROM_write()为例来说明检测的过程;
在对关键函数EEPROM_write()的检测进行说明之前,需要知道的是:闪存(Flash Memory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据的存储、删除不是以单个字节为单位而是以固定长度的区块为单位的,如NAND型闪存的基本存储单元为页(Page),类似硬盘的扇区;关键函数EEPROM_write()就是用于将用户数据按页写入到Flash中,其中,分页大小是64字节。
还需要知道的是函数EEPROM_read(),该函数用于将flash中的数据按页读出来;
需要说明的是,EEPROM_write()、EEPROM_read()函数中的参数包括:数据写入flash的偏移量off、写入数据的长度len、写入数据data,在对函数EEPROM_write()、EEPROM_read()函数进行测试时,上述参数是由用户指定的;
参见图5,对关键函数EEPROM_write()的安全性的检测的具体过程如下:
109-1、生成一组检测数据;
本实施例中,生成的检测数据的大小不超过64字节;
具体地,USB Key可以将生成的伪随机数作为该检测数据;
109-2、将检测数据按页写入flash芯片;
具体地,EEPROM_write()函数将检测数据写入到flash芯片中的第一偏移地址处;
其中,第一偏移地址是预先约定的;
109-3、调用函数EEPROM_read(),从第二偏移地址开始从flash芯片中读出指定长度的数据;
其中,第二偏移地址与第一偏移地址相同;
其中,读出数据的长度与检测数据的长度相同;
109-4、判断读出的数据是否与检测数据相同,如果不相同,则报错,如果相同,则关键函数EEPROM_write()是安全的;
110、USB Key对数据区的完整性进行检测;
其中,USB Key数据区的数据由两部分组成:用户数据和EDC(error detection code)码;
其中,EDC码具体可以是循环冗余校验码CRC;
其中,EDC码的最小长度为18位。
本实例中,数据区的数据具体为0x01ab22344564ce4100024d485788976f899464313cbd00f,CRC码部分为0x579CF6B0。
参见图6,USB Key对数据区的完整性进行检测的过程如下:
110-1、USB Key根据数据区的数据计算CRC码;
具体地,计算数据0x01ab22344564ce4100024d485788976f899464313cbd 00f的CRC码,得到0x579CF6B0;
110-2、判断计算得到的CRC码与数据区中的CRC码是否一致,一致,则说明数据区的内容完整,没有经过修改或伪造,否则,报错;
本实例中,计算得到的CRC码为0x579CF6B0与数据区中的CRC码字段是一样的,因此所述数据区是完整的。
111、USB Key对代码区的完整性进行检测;
具体地,代码区的内容也包括两部分:用户代码和CRC码,相应地,对代码区的完整性检测的方法与数据区的完整性检测方法一样,此处就不再赘述。
需要说明的是,当USB Key代码段中有补丁程序添加进来的时候,对补丁程序的完整性也采用检测数据区完整性的方法进行检测,此处就不再赘述。
112、USB Key与主机建立第一通信;
具体地,与主机建立第一通信为:USB Key与主机建立物理的基础连接;例如USB Key复位,接收到主机下发的枚举USB设备的指令,USB Key告知主机自身的情况(如设备类型、协议类型等)等。
具体地,USB Key枚举操作结束后,向主机返回设备描述符、配置描述、接口描述符、端点描述符等描述符信息,主机在获知这些描述符信息后,会向USB Key设备发送power on命令;
在具体实现时,还可以将上述真随机数的生成安全性检测、伪随机数的生成安全性检测、散列算法的安全性检测、AES或DES算法的安全性检测、关键函数的安全性检测、数据区及代码区的完整性检测放在USB Key与主机建立第一通信的过程中进行,或放在USB Key与主机建立第一通信之后进行,或放在USB Key与主机建立第一通信的过程中及与主机建立第一通信之后进行,或放在USB Key与主机建立第一通信之间及与主机建立第一通信的过程中进行,或放在USB Key与主机建立第一通信之前、与主机建立第一通信的过程中及于主机建立第一通信之后进行。
在具体实现时,上述真随机数的生成安全性检测、伪随机数的生成安全性检测、散列算法的安全性检测、AES或DES算法的安全性检测、关键函数的安全性检测、数据区及代码区的完整性检测的检测顺序是任意的。
USB Key在接收到主机下发的power on命令后,执行如下的操作:
113、USB Key对RSA算法模块的安全性进行检测;
其中,对RSA算法模块的安全性检测具体是对RSA算法签名操作的安全性进行检测;
需要知道的是,在对RSA算法的安全性进行检测时,已知数据由检测数据、检测数据的签名值、密钥Key等,上述数据是预先存放在数据区中的;
其中,密钥Key是由RSA算法模块生成的;
具体地,对RSA算法签名操作的安全性的检测如下:
113-1、根据密钥Key对检测数据进行签名操作,得到签名值;
113-2、比较计算得到的签名值是否与预先存储的签名值相一致,若不一致,则报错,若一致,则RSA算法的签名操作是安全的。
这里需要说明的是,当USB Key中存在椭圆曲线算法ECC时,还要对ECC算法的安全性进行检测,具体检测方式与RSA算法类似,此处就不再赘述。
114、USB Key响应主机发送的power on命令,与主机建立第二通信;
USB Key与主机建立第二通信具体是指,USB Key与主机之间建立逻辑上的通信,即UBS Key枚举操作结束,主机知道USB Key的具体类型(如USB Key是CCID设备还是HID设备等)后,为USB Key加载相应的驱动,至此,USB Key与主机之间建立了第二通信,之后,USB Key等待接收主机下发的指令(如APDU指令);
其中APDU指令是英文Application Protocol Data Unit的缩写,意思为应用协议数据单元。
115、USB Key接收到主机下发的生成RSA算法密钥的指令;
116、检查自检标识是否为1,如果为1,则报错,否则,执行117;
具体地,当USB Key接收到主机下发的APDU(应用协议数据单元)格式的指令时,都会查询自检标识,若自检标识为1,不对接收到的APDU指令进行任何的处理,向主机返回0x6F00;
117、USB Key生成RSA算法公私密钥对;
以下简单的介绍一下RSA算法公私密钥对的生成原理:1)、寻找两个素数p、q,其中数据p、q由大素数分解而来,而USB Key中大素数是从生成的随机数中选取的;2)、取n=p*q;3)、t=(p-1)*(q-1);4)、找到e,要求满足e<t且e与t互素;5)、计算d*e%t=1;经过上述计算得到n、d、e,n、d即为RSA算法公钥,n、e即为RSA算法私钥。
需要说明的是,USB Key中的RSA算法模块中固件程序可以自动生成基于上述原理的RSA公私密钥对。
118、USB Key对生成的公私密钥对的匹配性进行检测;
参见图7,对生成的公私密钥对的匹配性进行检测的过程如下:
118-1、用生成的私钥对USB Key中生成的随机数进行签名操作,得到签名值;
118-2、用生成的公钥对118-1中计算得到的签名值进行解密操作,得到明文;
118-3、比较118-1中计算得到的明文是否与118-2中用于签名的随机数相一致,如果一致,则说明公私密钥对是匹配的,否则,报错;
还需要说明的是,USB Key在与主机建立第二通信后,除了会对RSA算法公私密钥对的匹配性进行测试外,还会进行一些其他的条件测试,如随机数的连续性检测、手工密钥项测试、软/固组件的加载测试等,具体的检测方式就不再一一陈述了;
需要说明的是,上述检测方法同样适用于智能卡芯片安全性的检测,智能卡芯片与主机之间是通过ISO7816通信协议或ISO14443通信协议来进行信息的交互的;
需要说明的是,在对智能卡芯片的安全行进行检测时,上述检测内容可以在智能卡芯片进行ATR(Answer To Reset,复位应答),即与主机建立第一通信之前进行检测,也可以在智能卡芯片进行复位应答之后进行检测,还可以穿插在复位应答的过程中进行检测,如将上述检测内容的一部分放在返回ATR时序的第一个字符之前进行检测,而剩余部分在返回ATR时序的第一个字符之后进行等,当然,还可以将上述检测内容穿插在ATR之前、ATR过程中、ATR之后进行;
智能密钥设备通过进行上述一系列的检测后,确保了智能密钥设备中的算法是安全的,生成的随机数是安全的,数据区及代码区的内容的完整无误的,即保证智能密钥设备在进行数据加密或数字签名操作时是运行在安全可靠的环境内的,从而进一步的提高了智能密钥设备的安全性。
以上所述仅是本发明的较佳实施例,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应在本发明的保护范围之内。
Claims (21)
1.一种智能密钥设备的自检方法,其特征在于,所述方法包括:
智能密钥设备上电;
所述智能密钥设备进行初始化;
所述智能密钥设备执行如下操作,包括:与主机建立第一通信、生成随机数并检测所述随机数的安全性、检测关键函数的安全性、计算存储区存储内容的差错检测码并根据所述计算得到的差错检测码来检测所述存储区存储内容的完整性、对第一检测数据进行散列运算并根据所述散列运算结果来检测散列算法的安全性和对第二检测数据进行加解密操作并根据所述加解密操作结果来检测加解密算法的安全性;
所述智能密钥设备与所述主机建立第二通信,并等待接收所述主机下发的指令。
2.根据权利要求1所述的方法,其特征在于,当所述随机数为真随机数时,检测所述随机数的安全性具体为:
所述智能密钥设备获取随机种子,所述随机种子包括:环境噪音、系统时钟、中断信号、CPU温度、电压;
所述智能密钥设备根据所述随机种子按照预设计算方法连续生成两个真随机数;
所述智能密钥设备判断所述生成的两个真随机数是否相同,如果不相同,则真随机数的生成是安全的,否则,真随机数的生成是不安全的。
3.根据权利要求1所述的方法,其特征在于,当所述随机数为伪随机数时,检测所述随机数的安全性具体为:
所述智能密钥设备生成伪随机数,并判断所述生成的伪随机数是否与预先存储的伪随机数相同,如果相同,则伪随机数的生成是安全的,否则,伪随机数的生成是不安全的。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括,对所述智能密钥设备生成伪随机数过程中的第一初始化模块进行安全性检测,具体为:
调用所述第一初始化模块,所述第一初始化模块用于将代码区中的密钥Key、初始向量V、变量reseed、自检标识清零;
判断所述代码区中的密钥Ke y、初始向量V、变量reseed及自检标识是否为零,如果是零,则所述第一初始化模块是安全的,否则,所述第一初始化模块是不安全的。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括,对所述智能密钥设备生成伪随机数过程中的第二初始化模块进行安全性检测,具体为:
调用所述第二初始化模块,所述第二初始化模块用于将代码区中的密钥Key、初始向量V、熵清零;
判断所述代码区中的密钥Key、初始向量V、熵是否为零,如果是零,则所述第二初始化模块是安全的,否则,所述第二初始化模块是不安全的。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括,对所述智能密钥设备生成伪随机数过程中的密钥生成模块进行安全性检测,具体为:
调用所述密钥生成模块,所述密钥生成模块用于生成密钥key、初始向量V;
判断生成的密钥key、初始向量V是否与预先存储的密钥Key、初始向量V相同,如果相同,则说明所述密钥生成模块是安全的,否则,所述密钥生成模 块是不安全的。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括,对所述智能密钥设备生成伪随机数过程中的重置模块进行安全性检测,具体为:
判断生成的密钥Key、初始向量V是否与预先存储的密钥Key、初始向量V相同,如果相同,则说明所述重置模块是安全的,否则,所述重置模块是不安全的。
8.根据权利要求3所述的方法,其特征在于,所述方法还包括,对所述智能密钥设备生成伪随机数过程中的伪随机数生成模块进行安全性检测,具体为:
调用所述伪随机数生成模块,所述伪随机数生成模块用于生成伪随机数;
判断生成的伪随机数是否与预先存储的伪随机数相同,如果相同,则所述伪随机数生成模块是安全的,否则,所述伪随机数生成模块是不安全的。
9.根据权利要求1所述的方法,其特征在于,所述关键函数是自定义的。
10.根据权利要求1所述的方法,其特征在于,所述存储区包括数据区和代码区;
其中,所述数据区包括用户数据和用户数据差错检测码,所述代码区包括用户代码和用户代码差错检测码。
11.根据权利要求10所述的方法,其特征在于,检测所述存储区中数据区内容的完整性,具体为:
所述智能密钥设备计算所述数据区中用户数据差错检测码,并判断所述计 算得到的差错检测码是否与所述数据区中存储的用户数据差错检测码相同,如果相同,则所述数据区内容是完整的,否则,所述数据区内容是不完整的。
12.根据权利要求10所述的方法,其特征在于,检测所述存储区中代码区内容的完整性,具体为:
所述智能密钥设备计算所述代码区中用户代码的差错检测码,并判断所述计算得到的差错检测码是否与所述代码区中存储的用户代码差错检测码相同,如果相同,则所述代码区内容是完整的,否则,所述代码区内容是不完整的。
13.根据权利要求1所述的方法,其特征在于,所述差错检测码具体为循环冗余校验码CRC。
14.根据权利要求1所述的方法,其特征在于,对第一检测数据进行散列运算,并根据所述散列运算结果来检测散列算法的安全性具体为:
所述智能密钥设备根据所述散列算法对所述第一检测数据进行散列运算,并判断所述运算得到的散列值是否与预先存储的散列值相同,如果相同,则所述散列算法是安全的,否则,所述散列算法是不安全的;
其中,所述散列算法包括SHA1算法和SHA256算法。
15.根据权利要求14所述的方法,其特征在于,所述预先存储的散列值是预先根据所述散列算法对第一检测数据进行计算得到的,并存储在所述智能密钥设备中。
16.根据权利要求1所述的方法,其特征在于,对第二检测数据进行加解密操作,并根据所述加解密操作结果来检测加解密算法的安全性具体为:
所述智能密钥设备根据对称加密算法对所述第二检测数据进行加解密操作,并判断所述加解密操作结果是否与预先存储的密文相同,如果相同,则所述加解密算法是安全的,否则,所述加解密算法是不安全的。
17.根据权利要求16所述的方法,其特征在于,所述加解密算法包括对称加解密算法和非对称加解密算法;
其中,所述对称加密算法包括AES算法和DES算法;所述非对称加解密算法包括RSA算法和椭圆曲线算法ECC。
18.根据权利要求16所述的方法,其特征在于,所述预先存储的密文是预先根据所述加解密算法对所述第二检测数据进行计算得到的,并存储在所述智能密钥设备中。
19.根据权利要求1所述的方法,其特征在于,所述方法还包括:设置自检标识,当所述智能密钥设备进行自检,所述自检结果错误时,将所述自检标识置为预定值。
20.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述智能密钥设备接收到的指令为RSA密钥生成指令时,所述智能密钥设备生成RSA算法公私密钥对,并判断所述公私密钥对是否匹配,如果匹配,则所述智能密钥设备生成的RSA公私密钥对是安全的,如果不匹配,则所述智 能密钥设备生成的RSA公私密钥对是不安全的。
21.根据权利要求20所述的方法,其特征在于,所述判断所述公私密钥对是否匹配具体为:
根据所述生成的私钥对第三检测数据进行签名操作,得到签名值;
根据所述生成的公钥对所述签名值进行解密操作,得到第一数据;
比较所述第一数据是否与第三检测数据相同,若相同,则生成的公私密钥对是匹配的,否则,生成的公私密钥对是不匹配的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010214151A CN102014015B (zh) | 2010-06-29 | 2010-06-29 | 智能密钥设备的自检方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010214151A CN102014015B (zh) | 2010-06-29 | 2010-06-29 | 智能密钥设备的自检方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102014015A CN102014015A (zh) | 2011-04-13 |
CN102014015B true CN102014015B (zh) | 2012-10-03 |
Family
ID=43844041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010214151A Active CN102014015B (zh) | 2010-06-29 | 2010-06-29 | 智能密钥设备的自检方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102014015B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104660398B (zh) * | 2015-01-28 | 2018-02-13 | 北京深思数盾科技股份有限公司 | 一种加密密钥的生成方法 |
CN105721143B (zh) * | 2016-01-30 | 2019-05-10 | 飞天诚信科技股份有限公司 | 一种对智能卡应用进行初始化的方法和装置 |
CN106549968A (zh) * | 2016-11-22 | 2017-03-29 | 浪潮(苏州)金融技术服务有限公司 | 一种检测方法和装置 |
CN108449183A (zh) * | 2018-05-04 | 2018-08-24 | 北京邮电大学 | 一种使用量子随机数的非对称加密方法 |
CN110430014B (zh) * | 2019-07-19 | 2022-02-01 | 河海大学 | 一种用于现场总线信道加密的硬件加密网关及加密方法 |
CN110457239B (zh) * | 2019-07-31 | 2023-05-02 | 四川效率源信息安全技术股份有限公司 | 一种提取固态硬盘基本密钥的方法 |
CN110505048B (zh) * | 2019-08-16 | 2022-04-15 | 兆讯恒达科技股份有限公司 | 一种数据加密标准协处理器自检的方法 |
CN110929252B (zh) * | 2019-11-22 | 2021-10-26 | 福建金密网络安全测评技术有限公司 | 一种算法和随机数检测系统 |
CN112769572A (zh) * | 2020-12-25 | 2021-05-07 | 杭州海兴电力科技股份有限公司 | 一种基于hmac算法的电能表加密通讯方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1790359A (zh) * | 2004-12-16 | 2006-06-21 | 国际商业机器公司 | 使用便携式计算设备作为智能密钥设备的方法和系统 |
CN1945554A (zh) * | 2006-10-12 | 2007-04-11 | 北京飞天诚信科技有限公司 | 一种提高智能密钥安全性的方法及装置 |
CN1976279A (zh) * | 2006-12-04 | 2007-06-06 | 北京飞天诚信科技有限公司 | 一种自动监控和清理的智能密钥系统及其工作方法 |
-
2010
- 2010-06-29 CN CN201010214151A patent/CN102014015B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1790359A (zh) * | 2004-12-16 | 2006-06-21 | 国际商业机器公司 | 使用便携式计算设备作为智能密钥设备的方法和系统 |
CN1945554A (zh) * | 2006-10-12 | 2007-04-11 | 北京飞天诚信科技有限公司 | 一种提高智能密钥安全性的方法及装置 |
CN1976279A (zh) * | 2006-12-04 | 2007-06-06 | 北京飞天诚信科技有限公司 | 一种自动监控和清理的智能密钥系统及其工作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102014015A (zh) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102014015B (zh) | 智能密钥设备的自检方法 | |
US11218330B2 (en) | Generating an identity for a computing device using a physical unclonable function | |
US11361660B2 (en) | Verifying identity of an emergency vehicle during operation | |
US20220224550A1 (en) | Verification of identity using a secret key | |
CN104468089B (zh) | 数据保护装置及其方法 | |
CN106416124B (zh) | 半确定性数字签名生成 | |
US9571289B2 (en) | Methods and systems for glitch-resistant cryptographic signing | |
KR20040053101A (ko) | 정보 누출이 감소된 장치 및 방법 | |
WO2017041603A1 (zh) | 数据加密方法、装置及移动终端、计算机存储介质 | |
RU2579990C2 (ru) | Защита от пассивного сниффинга | |
CN105095097B (zh) | 随机化的存储器访问 | |
CN111783078A (zh) | Android平台安全芯片控制系统 | |
JP2021144239A (ja) | 暗号アルゴリズム向けのワンタイムの中国剰余定理のべき乗のためのシステムおよび方法 | |
US20020124179A1 (en) | Fault detection method | |
EP3304801B1 (en) | System and method for protecting a cryptographic device against fault attacks while performing cryptographic non-linear operations using linear error correcting codes | |
CN112632642B (zh) | 一种时钟校验方法、装置及电子设备 | |
EP3785399B1 (en) | Method for generating on-board a cryptographic key using a physically unclonable function | |
WO2020197775A1 (en) | Over-the-air update validation | |
JP3952304B2 (ja) | 電子コンポネントにおいて公開指数を求める暗号アルゴリズムを実行する方法 | |
Zhao et al. | Research on Root of Trust for Embedded Devices based on On-Chip Memory | |
US10425233B2 (en) | Method for automatically verifying a target computer file with respect to a reference computer file | |
Mayes | Performance of authenticated encryption for payment cards with crypto co-processors | |
Raghad et al. | Design Security System Based on AES and MD5 for Smart Card | |
CN105554033A (zh) | 一种图像输入设备的可信认证方法及其图像输入设备 | |
CN116188009A (zh) | 一种国密软加密模式秘钥获取方法、系统、终端和可读存储介质 |
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 |