一种128位对称密钥生成及保护装置的制造方法

文档序号:10538506阅读:371来源:国知局
一种128位对称密钥生成及保护装置的制造方法
【专利摘要】本发明公开了一种128位对称密钥生成及保护装置,其特征在于,设存储于装置中的种子密钥为A段密钥,由主机下发的种子密钥为B段密钥,合成的结果为密钥,装置包括以下模块:至少一个A段密钥管理模块;至少一个B段密钥管理模块;至少一个MD5算法模块;至少一个SHA1算法模块;至少一个密钥合成管理模块;至少一个密钥存储模块。本发明避免了A段密钥的暴露,从而使本装置具有抵抗软件恶意攻击的能力,本发明中一旦设备脱离主机环境,那么B段密钥与生成后的密钥将自动销毁,从而使本装置具有抵抗硬件恶意攻击的能力,进一步提升了密钥的安全性。
【专利说明】
一种128位对称密钥生成及保护装置
技术领域
[0001]本发明涉及信息安全技术领域中的密钥生成及保护方法,尤其涉及一种128位对称密钥生成及保护装置。
【背景技术】
[0002]密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。
[0003]随着信息技术的高速发展,大数据时代的来临,各类的加密算法广泛应用于各大行业,密钥作为各类加解密算法的核心,一旦暴露则会产生不可预估的损失,由此可见密钥在信息安全技术领域中的重要性。
[0004]目前对于密钥的保护方法,通常可采用两种方法,一种是将密钥存储于硬件设备中,当需要使用时通过特定方式从硬件设备中取出,这样做的目的是将密钥与算法进行隔离,通过密钥与算法所处的不同环境来保护密钥;一种是将密钥与算法同时存储于硬件设备当中,只由设备来完成加解密功能,设备不向外部输出密钥,这样做的目的是通过硬件设备的访问门槛来保护密钥。对于第一种方法,设备不论以何种方式送出密钥,都有可能会被截取密钥,导致密钥的安全性有所降低;对于第二种方式,设备虽然不输出密钥,但密钥存储于设备中,存储密钥的设备通常是ROM类的非易失存储介质,基于当前的逆向工程技术,仍然可从存储介质中获取完整密钥,对于上述的第一种方法同样存在这样的问题。同时,为保证信息的安全,通常会出现定期更新密钥、新增密钥等情况,那么就要求密钥保护设备具有在线更新的能力以适应用户对于密钥的灵活管理,在线更新的过程同样增加了密钥暴露的风险。

【发明内容】

[0005]本发明的目的是为了解决上述问题,提出一种128位对称密钥生成及保护装置,能够在启用本装置前存储一段种子密钥在装置的EEPROM中,能够将主机下发的种子密钥与固化在装置内的密钥合成为128位的密钥,应用于集成在同硬件设备的AES、3des及RC4等流行的对称类加密算法。
[0006]本发明将种子密钥进行分段,一段存储于硬件设备的存储介质中,一段由用户自主下发到设备中,设备通过特定的方式重新对种子密钥进行合成,进而通过种子密钥与特定算法生成对称类加解密算法可用的密钥,存储于片内RAM当中,提供给集成在同硬件设备中的AES、3des及RC4等流行的对称类加密算法进行加解密操作。
[0007]为方便后续对于种子密钥的描述,在此定义存储于装置中的种子密钥为A段密钥,由主机下发的种子密钥为B段密钥,合成的结果为密钥。
[0008]本发明提供的一种128位对称密钥生成及保护装置,包括以下模块:
[0009]至少一个A段密钥管理模块;
[0010]至少一个B段密钥管理模块;[0011 ] 至少一个MD5算法模块;
[0012]至少一个SHAl算法模块;
[0013]至少一个密钥合成管理模块;
[0014]至少一个密钥存储模块;
[0015]本发明提供的一种128位对称密钥生成及保护装置的所有模块均通过FPGA进行实现,FPGA通过Pcie接口与主机进行通讯,用于信息和数据的接收和回传;通过SPI接口与片夕卜EEPROM进行通讯,用于读写A段密钥。
[0016]本发明提供的一种128位对称密钥生成及保护装置不向主机提供密钥读取接口以避免密钥暴露,为确保主机写入的种子密钥的正确性,通过二次写入并比对两次写入数据的方式对写入数据进行校验,主机通过读取校验寄存器的状态确认写入是否正确。
[0017]本发明的优点在于:
[0018]本发明提供的一种128位对称密钥生成及保护装置采用分段式种子密钥的目的在于提供更加安全的密钥保护机制。由于A段密钥存储于硬件设备的EEPROM中,并且只能由FPGA进行读取,在一定程度上避免了 A段密钥的暴露,从而使本装置具有抵抗软件恶意攻击的能力;用户自主下发的B段密钥与硬件设备生成的密钥都存储于FPGA的片内RAM中,由于RAM的掉电丢失特性,一旦设备脱离主机环境,那么B段密钥与生成后的密钥将自动销毁,从而使本装置具有抵抗硬件恶意攻击的能力,进一步提升了密钥的安全性。
【附图说明】
[0019]图1为本发明的整体结构图;
[0020]图2为本发明的A段密钥管理流程;
[0021 ]图3为本发明的B段密钥管理流程;
[0022 ]图4为本发明的密钥合成流程。
【具体实施方式】
[0023]下面将结合附图和实施例对本发明作进一步的详细说明。
[0024]图1显示了本发明的整体结构,由A段密钥管理模块、B段密钥管理模块、密钥合成管理模块、SHAl算法模块、MD5算法模块及密钥存储模块构成。A段密钥管理模块负责A段密钥的缓存、校验、向主机反馈A段密钥管理状态、烧写片外EEPROM及在装置上电后从片外EEPROM中读取A段密钥到片内缓存中;B段密钥管理模块负责B段密钥的缓存、校验及向主机反馈B段密钥管理状态。密钥合成模块负责从A、B段密钥缓存中读取A、B段密钥,将A、B段密钥拼合为种子密钥,将种子密钥分别送入SHAl与MD5算法模块中进行计算,将计算结果进行异或运行得到合成后的密钥,并将合成后的密钥送入密钥存储模块进行缓存。SHAl算法模块负责对种子密钥的低24字节进行计算,给出20字节的散列值。MD5算法模块负责对种子密钥的高24字节进行计算,给出16字节的散列值。密钥存储模块负责存储及分发合成后的密钥。
[0025]种子密钥由A段密钥和B段密钥拼合构成,其中A段密钥为8字节,B段密钥为24字节。种子密钥的拼合规则为,将B段密钥的高12字节放在32-21字节,低12字节放在12-1字节,A段密钥放在20-13字节。这样在进行MD5运算时,所取的高24字节将包括全部的A段密钥及B段密钥的高12字节;在进行SHAl运算时,所取的低24字节将包括全部的A段密钥及B段密钥的低12字节。
[0026]图2显示了本发明的A段密钥管理流程,下面结合图2对A段密钥管理流程进行详细说明:
[0027]步骤1:主机读取A段密钥管理状态。
[0028]步骤2:判断A段密钥管理状态是否空闲,是则转到步骤3,否则转到步骤I。
[0029]步骤3:主机下发A段密钥写入指令,A段密钥管理模块进入数据接收状态。
[0030]步骤4:主机下发A段密钥,A段密钥管理模块将下发的密钥写入相应的缓存。主机每次下发4字节的A段密钥,A段密钥管理模块按照下发的顺序将两次下发的A段密钥进行拼合后写入缓存;主机可连续下发多个A段密钥;A段密钥管理模块最多可缓存256个8字节的A段密钥。
[0031]步骤5:判断所有A段密钥是否下发完成,是则转到步骤6,否则转到步骤4。
[0032]步骤6:主机下发A段密钥校验指令,A段密钥管理模块进入数据校验状态。
[0033]步骤7:主机再次依次写入A段密钥,每写入一个完整的A段密钥后,需要从A段密钥管理模块中读取校验状态。A段密钥管理模块首先将主机再次下发的A段密钥缓存到寄存器中,然后从首次缓存的A段密钥中读取相应的A段密钥。
[0034]步骤8:A段密钥管理模块判断两次写入的A段密钥是否一致,是则转到步骤10,否则转到步骤9。
[0035]步骤9:向主机返回写入错误,返回的错误中指明了两次写入数据出现不一致的b i t位,并转到步骤3。
[0036]步骤10:向主机返回写入正确。
[0037]步骤11:判断是否所有A段校验完成,是则转到步骤12,否则转到步骤7。
[0038]步骤12:A段密钥管理模块将缓存中的A段密钥通过SPI接口烧写到片外EEPROM中。
[0039]图3显示了本发明的B段密钥管理流程,下面结合图3对B段密钥管理流程进行详细说明:
[0040]步骤1:主机读取B段密钥管理状态。
[0041]步骤2:判断B段密钥管理状态是否空闲,是则转到步骤3,否则转到步骤I。
[0042]步骤3:主机下发B段密钥写入指令,B段密钥管理模块进入数据接收状态。
[0043]步骤4:主机下发B段密钥,B段密钥管理模块将下发的密钥写入相应的缓存。主机每次下发4字节的B段密钥,B段密钥管理模块按照下发的顺序将两次下发的B段密钥进行拼合后写入缓存;主机可连续下发多个B段密钥;B段密钥管理模块最多可缓存256个24字节的B段密钥。
[0044]步骤5:判断所有B段密钥是否下发完成,是则转到步骤6,否则转到步骤4。
[0045]步骤6:主机下发B段密钥校验指令,B段密钥管理模块进入数据校验状态。
[0046]步骤7:主机再次依次写入B段密钥,每写入一个完整的B段密钥后,需要从B段密钥管理模块中读取校验状态。B段密钥管理模块首先将主机再次下发的B段密钥缓存到寄存器中,然后从首次缓存的B段密钥中读取相应的B段密钥。
[0047]步骤8:B段密钥管理模块判断两次写入的B段密钥是否一致,是则转到步骤10,否则转到步骤9。
[0048]步骤9:向主机返回写入错误,返回的错误中指明了两次写入数据出现不一致的b i t位,并转到步骤3。
[0049]步骤10:向主机返回写入正确。
[0050]步骤11:判断是否所有B段校验完成,是则结束校验操作,否则转到步骤7。
[0051]图4显示了本发明的密钥合成流程,下面结合图4对密钥合成流程进行详细说明:
[0052]步骤1:上电后首先将片外EEPROM中的A段密钥读入到片内RAM中进行缓存。
[0053]步骤2:A段缓存完成后通知主机下发B段密钥。
[0054]步骤3:等待主机下发B段密钥。
[0055]步骤4:主机下发密钥合成指令,密钥合成管理模块进入密钥合成状态。
[0056]步骤5:从A段密钥缓存中读取一个8字节的A段密钥。
[0057]步骤6:从B段密钥缓存中读取一个24字节的B段密钥。
[0058]步骤7:将读取的A段密钥与B段密钥拼合为32字节的种子密钥。拼合规则为,B段密钥的高12字节做为种子密钥的32-21字节,低12字节做为种子密钥的12-1字节,A段密钥做为种子密钥的20-13字节。
[0059]步骤8:将种子密钥的高24字节送入MD5算法模块进行散列值计算,得到16字节的散列值。
[0060]步骤9:将种子密钥的低24字节送入SHAl算法模块进行散列值计算,得到20字节的散列值。
[0061 ]步骤1:将MD5计算得到的16字节的散列值与SHAl计算得到的20字节散列值中的高16字节进行异或操作并将结果缓存到寄存器中。
[0062]步骤11:将异或操作得到的密钥缓存入密钥存储模块。
[0063]步骤12:判断所有密钥是否合成完成,是则转到步骤13,否则转到步骤5。
[0064]步骤13:通知主机密钥合成完成。
[0065]综上所述,本发明提供的一种128位对称密钥生成及保护装置采用FPGA实现了所有的功能模块;所提供的密钥缓存最多可支持合成256个密钥,可支持密钥组及密钥轮换机制;所提供的A、B段密钥校验机制确保了种子密钥合成的正确性;所提供的种子密钥拼合机制确保了 A、B段密钥均能够参与散列值的计算,提升了生成的密钥的复杂度;所采用的MD5及SHAl的散列值算法确保了合成后的密钥不可逆性;所提供的不可回读功能避免了从密钥下发到密钥合成完成的整个流程密钥暴露的风险;所提供的分段式的种子密钥存储方式能够抵抗软件及硬件的恶意攻击,从而提升了密钥的安全性。所提供的A段密钥管理模块能够支持用户通过特殊控件及在被隔离的环境中对存储在EEPROM中的A段密钥进行更新,确保了密钥更新的灵活性。
【主权项】
1.一种128位对称密钥生成及保护装置,其特征在于,设存储于装置中的种子密钥为A段密钥,由主机下发的种子密钥为B段密钥,合成的结果为密钥,装置包括以下模块: 至少一个A段密钥管理模块; 至少一个B段密钥管理模块; 至少一个MD5算法模块; 至少一个SHAl算法模块; 至少一个密钥合成管理模块; 至少一个密钥存储模块。2.根据权利要求1所述的一种128位对称密钥生成及保护装置,其特征在于,所述的A段密钥管理模块负责A段密钥的缓存、校验、向主机反馈A段密钥管理状态、烧写片外EEPROM及在装置上电后从片外EEPROM中读取A段密钥到片内缓存中。3.根据权利要求1所述的一种128位对称密钥生成及保护装置,其特征在于,所述的B段密钥管理模块负责B段密钥的缓存、校验及向主机反馈B段密钥管理状态。4.根据权利要求1所述的一种128位对称密钥生成及保护装置,其特征在于,所述的密钥合成模块负责从A、B段密钥缓存中读取A、B段密钥,将A、B段密钥拼合为种子密钥,将种子密钥分别送入SHAl与MD5算法模块中进行计算,将计算结果进行异或运行得到合成后的密钥,并将合成后的密钥送入密钥存储模块进行缓存。5.根据权利要求1所述的一种128位对称密钥生成及保护装置,其特征在于,所述的SHAl算法模块负责对种子密钥的低24字节进行计算,给出20字节的散列值,所取的低24字节包括全部的A段密钥及B段密钥的低12字节。6.根据权利要求1所述的一种128位对称密钥生成及保护装置,其特征在于,所述的MD5算法模块负责对种子密钥的高24字节进行计算,给出16字节的散列值,所取的高24字节包括全部的A段密钥及B段密钥的高12字节。7.根据权利要求1所述的一种128位对称密钥生成及保护装置,其特征在于,所述的密钥存储模块负责存储及分发合成后的密钥。8.根据权利要求1所述的一种128位对称密钥生成及保护装置,其特征在于,所述的A段密钥管理模块、B段密钥管理模块、密钥合成管理模块、SHAl算法模块、MD5算法模块和密钥存储模块均通过FPGA进行实现,FPGA通过Pcie接口与主机进行通讯,用于信息和数据的接收和回传;通过SPI接口与片外EEPROM进行通讯,用于读写A段密钥。9.根据权利要求4所述的一种128位对称密钥生成及保护装置,其特征在于,所述的种子密钥由A段密钥和B段密钥拼合构成,其中A段密钥为8字节,B段密钥为24字节,种子密钥的拼合规则为,将B段密钥的高12字节放在32-21字节,低12字节放在12-1字节,A段密钥放在20-13字节。10.根据权利要求1所述的一种128位对称密钥生成及保护装置,其特征在于,所述的A段密钥管理模块中,A段密钥管理流程包括: 步骤I:主机读取A段密钥管理状态; 步骤2:判断A段密钥管理状态是否空闲,是则转到步骤3,否则转到步骤I; 步骤3:主机下发A段密钥写入指令,A段密钥管理模块进入数据接收状态; 步骤4:主机下发A段密钥,A段密钥管理模块将下发的密钥写入相应的缓存;主机每次下发4字节的A段密钥,A段密钥管理模块按照下发的顺序将两次下发的A段密钥进行拼合后写入缓存;主机可连续下发多个A段密钥;A段密钥管理模块最多可缓存256个8字节的A段密钥; 步骤5:判断所有A段密钥是否下发完成,是则转到步骤6,否则转到步骤4; 步骤6:主机下发A段密钥校验指令,A段密钥管理模块进入数据校验状态; 步骤7:主机再次依次写入A段密钥,每写入一个完整的A段密钥后,需要从A段密钥管理模块中读取校验状态;A段密钥管理模块首先将主机再次下发的A段密钥缓存到寄存器中,然后从首次缓存的A段密钥中读取相应的A段密钥; 步骤8:A段密钥管理模块判断两次写入的A段密钥是否一致,是则转到步骤10,否则转到步骤9; 步骤9:向主机返回写入错误,返回的错误中指明了两次写入数据出现不一致的bit位,并转到步骤3; 步骤10:向主机返回写入正确; 步骤11:判断是否所有A段校验完成,是则转到步骤12,否则转到步骤7; 步骤12: A段密钥管理模块将缓存中的A段密钥通过SPI接口烧写到片外EEPROM中; B段密钥管理模块中,B段密钥管理流程包括: 步骤I:主机读取B段密钥管理状态; 步骤2:判断B段密钥管理状态是否空闲,是则转到步骤3,否则转到步骤I; 步骤3:主机下发B段密钥写入指令,B段密钥管理模块进入数据接收状态; 步骤4:主机下发B段密钥,B段密钥管理模块将下发的密钥写入相应的缓存;主机每次下发4字节的B段密钥,B段密钥管理模块按照下发的顺序将两次下发的B段密钥进行拼合后写入缓存;主机可连续下发多个B段密钥;B段密钥管理模块最多可缓存256个24字节的B段密钥; 步骤5:判断所有B段密钥是否下发完成,是则转到步骤6,否则转到步骤4; 步骤6:主机下发B段密钥校验指令,B段密钥管理模块进入数据校验状态; 步骤7:主机再次依次写入B段密钥,每写入一个完整的B段密钥后,需要从B段密钥管理模块中读取校验状态;B段密钥管理模块首先将主机再次下发的B段密钥缓存到寄存器中,然后从首次缓存的B段密钥中读取相应的B段密钥; 步骤8: B段密钥管理模块判断两次写入的B段密钥是否一致,是则转到步骤10,否则转到步骤9; 步骤9:向主机返回写入错误,返回的错误中指明了两次写入数据出现不一致的bit位,并转到步骤3; 步骤10:向主机返回写入正确; 步骤11:判断是否所有B段校验完成,是则结束校验操作,否则转到步骤7; 密钥合成管理模块中,密钥合成流程包括: 步骤1:上电后首先将片外EEPROM中的A段密钥读入到片内RAM中进行缓存; 步骤2: A段缓存完成后通知主机下发B段密钥; 步骤3:等待主机下发B段密钥; 步骤4:主机下发密钥合成指令,密钥合成管理模块进入密钥合成状态; 步骤5:从A段密钥缓存中读取一个8字节的A段密钥; 步骤6:从B段密钥缓存中读取一个24字节的B段密钥; 步骤7:将读取的A段密钥与B段密钥拼合为32字节的种子密钥;拼合规则为,B段密钥的高12字节做为种子密钥的32-21字节,低12字节做为种子密钥的12-1字节,A段密钥做为种子密钥的20-13字节; 步骤8:将种子密钥的高24字节送入MD5算法模块进行散列值计算,得到16字节的散列值; 步骤9:将种子密钥的低24字节送入SHAl算法模块进行散列值计算,得到20字节的散列值; 步骤10:将MD5计算得到的16字节的散列值与SHAl计算得到的20字节散列值中的高16字节进行异或操作并将结果缓存到寄存器中; 步骤11:将异或操作得到的密钥缓存入密钥存储模块; 步骤12:判断所有密钥是否合成完成,是则转到步骤13,否则转到步骤5; 步骤13:通知主机密钥合成完成。
【文档编号】H04L9/06GK105897405SQ201610384213
【公开日】2016年8月24日
【申请日】2016年6月2日
【发明人】徐晓燕, 李高超, 周渊, 张露晨, 马秀娟, 唐积强, 徐小磊, 毛洪亮, 刘俊贤, 苏沐冉, 刘庆良, 何万江
【申请人】北京赛思信安技术股份有限公司, 国家计算机网络与信息安全管理中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1