CN105847011A - 一种密钥加载方法及设备 - Google Patents

一种密钥加载方法及设备 Download PDF

Info

Publication number
CN105847011A
CN105847011A CN201610162361.5A CN201610162361A CN105847011A CN 105847011 A CN105847011 A CN 105847011A CN 201610162361 A CN201610162361 A CN 201610162361A CN 105847011 A CN105847011 A CN 105847011A
Authority
CN
China
Prior art keywords
key
tpm
memory
context
ciphertext
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.)
Pending
Application number
CN201610162361.5A
Other languages
English (en)
Inventor
赵波
谢特
黄宇晴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610162361.5A priority Critical patent/CN105847011A/zh
Publication of CN105847011A publication Critical patent/CN105847011A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB

Abstract

一种密钥加载方法及设备,用于增强TPM加载密钥的能力,从而提高系统的安全性。该方法包括:TPM确定所述TPM内部的第一存储器中留存的用于加载密钥的空间的可用容量小于等于第一预设容量;所述TPM将至少一个第一密钥存储到第二存储器;其中,所述第二存储器位于所述TPM外部,所述至少一个第一密钥包括待加载到所述第一存储器的密钥和/或已加载在所述第一存储器中的密钥。

Description

一种密钥加载方法及设备
技术领域
本发明涉及安全存储技术领域,特别涉及一种密钥加载方法及设备。
背景技术
可信平台模块(Trusted Platform Module,TPM)是可信计算平台的核心,TPM安全芯片为应用(APP)提供密钥安全保护和可信执行环境支撑。
随着电子技术的快速发展,片上系统(System-on-a-Chip,SoC)这个概念也随之诞生,SoC是在一个芯片上实现一个完整的用户系统,可以实现控制、存贮、输入输出、数字信号处理等功能。现场可编程门阵列(Field-Programmable Gate Array,FPGA)经过多年的改进,其内部的逻辑单元以及集成度也越来越强大,所以在FPGA上实现SoC是一个必然趋势。基于FPGA实现的TPM,可以通过通用串行总线(Universal Serial Bus,USB)等多种接口连接到个人计算机(PC)、移动终端等不同的设备,并通过TPM提供密钥安全存储、加解密、安全度量、或身份认证等功能,对这些设备和用户信息进行安全保护。
然而,FPGA的片内随机存取存储器(Random-Access Memory,RAM)空间是有限的,预留出来用于TPM加载密钥的空间就更少,如果FPGA的片内RAM里用于TPM加载密钥的空间已满,若再有应用试图通过TPM加载密钥,则TPM只能返回空间已满的错误码,无法加载新的密钥。这样显然给TPM的使用带来了较大的限制,使得TPM无法为较多的应用提供密钥安全使用功能,降低了系统的安全性。
发明内容
本发明实施例提供一种密钥加载方法及设备,用于增强TPM加载密钥的能力,从而提高系统的安全性。
第一方面,提供一种密钥加载方法,该方法包括:TPM确定TPM内部的第一存储器中留存的用于加载密钥的空间的可用容量小于等于第一预设容量,则TPM将至少一个第一密钥存储到第二存储器。其中,第二存储器位于TPM外部,至少一个第一密钥包括待加载到第一存储器的密钥和/或已加载在第一存储器中的密钥。
本发明实施例中,如果TPM内部的第一存储器中用于TPM加载密钥的空间的容量小于等于第一预设容量,则TPM可以将至少一个第一密钥存储到位于TPM外部的第二存储器,即,通过利用TPM外部的存储器,扩展了用于加载密钥的空间,提升了TPM加载密钥的能力,使得TPM可以加载更多的密钥,可以为更多的应用提供密钥安全使用功能,也就提升了系统的安全性。
结合第一方面,在第一方面的第一种可能的实现方式中,TPM将至少一个第一密钥存储到第二存储器,可以通过以下方式实现:TPM对至少一个第一密钥分别进行加密,得到至少一个密文,TPM将至少一个密文存储到第二存储器。
TPM在将第一密钥存储到第二存储器时,可以是对第一密钥加密后再进行存储,这样可以提高存储的第一密钥的安全性,尽量避免第一密钥在存储的过程中被盗取。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,TPM对至少一个第一密钥分别进行加密,得到至少一个密文,可以通过以下方式实现:TPM根据至少一个第一密钥的句柄,生成用于对至少一个第一密钥进行加密的至少一个第二密钥,TPM通过至少一个第二密钥对至少一个第一密钥及至少一个第一密钥的上下文进行加密,得到至少一个密文。其中每个第二密钥用于对一个第一密钥及该第一密钥的上下文进行加密,以得到该第一密钥的密文。
TPM可以根据一个第一密钥的句柄来生成用于对该密钥进行加密的第二密钥,提供了一种获得用于对第一密钥进行加密的第二密钥的方式,且直接根据第一密钥的句柄来生成第二密钥即可,无需额外获取其他的信息来生成第二密钥,方式较为简单,所需的信息较少。
结合第一方面或第一方面的第一种可能的实现方式或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,TPM在将至少一个第一密钥存储到第二存储器之前,还可以对至少一个第一密钥及至少一个第一密钥的上下文进行哈希运算,得到至少一个哈希值,并存储至少一个哈希值。其中,在进行哈希运算时,是对每个第一密钥及该第一密钥的上下文进行哈希运算,得到该第一密钥的哈希值。
TPM可以对第一密钥及第一密钥的上下文进行哈希运算,得到第一密钥的哈希值,该哈希值主要是为了验证第一密钥是否被篡改,比如,在后续对第一密钥的密文解密后也会得到第一密钥和第一密钥的上下文,TPM也可以对第一密钥和第一密钥的上下文进行哈希运算,TPM可以将加密过程中得到的第一密钥的哈希值和解密过程中得到的第一密钥的哈希值进行比较,如果二者一致,则可以确定第一密钥的密文在存储的过程中安全,未被篡改,可以继续使用,如果二者不一致,则可以认为第一密钥此时已经不安全,可能已被篡改。通过这种方式,进一步提高了密钥的安全性。
结合第一方面或第一方面的第一种可能的实现方式或第二种可能的实现方式或第三种可能的实现方式,在第一方面的第四种可能的实现方式中,TPM还可以确定待获取的第三密钥位于第二存储器中,TPM从第二存储器中获取第三密钥。
如果需要使用存储在第二存储器中的第三密钥,则TPM可以在确定第三密钥存储在第二存储器之后,从第二存储器中获取第三密钥,即TPM不仅具有将密钥存储到第二存储器的能力,还具有从第二存储器中获取所存储的密钥的能力,从而TPM可以在暂时不使用时将密钥存储到第二存储器,以节省第一存储器的空间,在要使用时可以从第二存储器中取出密钥,不会影响正常使用。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,TPM从第二存储器中获取第三密钥,可以通过以下方式实现:TPM从第二存储器中获取第三密钥的密文,TPM对第三密钥的密文进行解密,获得第三密钥及第三密钥的上下文。
因为为了提高密钥的安全性,在将密钥存储到第二存储器时是将密钥加密后进行的存储,因此TPM从第二存储器中获取的可能是第三密钥的密文,那么TPM在获取第三密钥的密文后可以对第三密钥的密文进行解密,从而可以获得第三密钥和第三密钥的上下文。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,TPM对第三密钥的密文进行解密,获得第三密钥及所述第三密钥的上下文,可以通过以下方式实现:TPM根据第三密钥的句柄,生成用于对第三密钥的密文进行解密的第四密钥,TPM通过第四密钥对第三密钥的密文进行解密,得到第三密钥及第三密钥的上下文。
在对第三密钥进行加密时,可能采用的是根据第三密钥的句柄生成的密钥对第三密钥进行的加密,那么在对第三密钥的密文进行解密时,也可以根据第三密钥的句柄生成用于解密的第四密钥,这样加密的密钥和解密的密钥可以对应,从而可以对第三密钥的密文进行正确的解密。
结合第一方面的第五种可能的实现方式或第六种可能的实现方式,在第一方面的第七种可能的实现方式中,在得到第三密钥及第三密钥的上下文之后,TPM还可以对第三密钥及第三密钥的上下文进行哈希运算,得到第三密钥的哈希值,TPM可以将计算得到的第三密钥的哈希值与存储的第三密钥的哈希值进行比较,判断二者是否一致,若二者一致,则TPM可以将第三密钥及第三密钥的上下文加载到第一存储器。其中,存储的第三密钥的哈希值可以是在将第三密钥存储到第二存储器的过程中生成的。
在前面介绍了,在存储第三密钥时,可以对第三密钥和第三密钥的上下文进行哈希运算,得到的哈希值就是为了在解密时对第三密钥进行验证,那么在解密时,也可以对第三密钥和第三密钥的上下文进行哈希运算,TPM可以将加密过程中得到的哈希值和解密过程中得到的哈希值进行比较,如果二者一致,那么可以确定第三密钥未被篡改,即确定第三密钥安全,则可以继续使用第三密钥,而如果二者不一致,则可以认为第三密钥不安全,比如可能被篡改,则可能不会再继续使用第三密钥,以保障系统的安全。
结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,在判断二者是否一致之后,若二者不一致,则TPM可以丢弃第三密钥及第三密钥的上下文。
如果二者不一致,则可以认为第三密钥不安全,比如可能被篡改,则可能不会再继续使用第三密钥,为了保证系统安全,TPM可以丢弃第三密钥和第三密钥的上下文,以防止系统被可能的病毒侵袭。
第二方面,提供一种TPM,包括第一存储器和处理器。其中,第一存储器可以用于存储密钥,处理器可以用于确定第一存储器中留存的用于加载密钥的空间的可用容量小于等于第一预设容量,将至少一个第一密钥存储到第二存储器。第二存储器位于TPM外部,至少一个第一密钥包括新生成的密钥和/或加载在第一存储器中的密钥。
结合第二方面,在第二方面的第一种可能的实现方式中,处理器用于将至少一个第一密钥存储到第二存储器,可以通过以下方式实现:处理器对至少一个第一密钥分别进行加密,得到至少一个密文,处理器将至少一个密文存储到第二存储器。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,处理器用于对至少一个第一密钥分别进行加密,得到至少一个密文,可以通过以下方式实现:处理器根据至少一个第一密钥的句柄,生成用于对至少一个第一密钥进行加密的至少一个第二密钥,处理器通过至少一个第二密钥对至少一个第一密钥及至少一个第一密钥的上下文进行加密,得到至少一个密文。其中每个第二密钥用于对一个第一密钥及该第一密钥的上下文进行加密,以得到该第一密钥的密文。
结合第二方面或第二方面的第一种可能的实现方式或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,处理器还可以用于:在将至少一个第一密钥存储到第二存储器之前,对至少一个第一密钥及至少一个第一密钥的上下文进行哈希运算,得到至少一个哈希值,存储至少一个哈希值。其中,在进行哈希运算时,是对每个第一密钥及该第一密钥的上下文进行哈希运算,得到该第一密钥的哈希值。
结合第二方面或第二方面的第一种可能的实现方式或第二种可能的实现方式或第三种可能的实现方式,在第二方面的第四种可能的实现方式中,处理器还可以用于:确定待获取的第三密钥位于第二存储器中,从第二存储器中获取第三密钥。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,处理器用于从所述第二存储器中获取所述第三密钥,可以通过以下方式实现:处理器从第二存储器中获取第三密钥的密文,对第三密钥的密文进行解密,获得第三密钥及第三密钥的上下文。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,处理器用于对所述第三密钥的密文进行解密,获得所述第三密钥及所述第三密钥的上下文,可以通过以下方式实现:处理器根据第三密钥的句柄,生成用于对第三密钥的密文进行解密的第四密钥,处理器通过第四密钥对第三密钥的密文进行解密,得到第三密钥及第三密钥的上下文。
结合第二方面的第五种可能的实现方式或第六种可能的实现方式,在第二方面的第七种可能的实现方式中,处理器还可以用于:在得到第三密钥及第三密钥的上下文之后,对第三密钥及第三密钥的上下文进行哈希运算,得到第三密钥的哈希值,将计算得到的第三密钥的哈希值与存储的第三密钥的哈希值进行比较,判断二者是否一致,若二者一致,则将第三密钥及第三密钥的上下文加载到第一存储器。其中,存储的第三密钥的哈希值是在将第三密钥存储到第二存储器的过程中生成的。
结合第二方面的第七种可能的实现方式,在第二方面的第八种可能的实现方式中,处理器还可以用于:在判断二者是否一致之后,若二者不一致,则丢弃第三密钥及第三密钥的上下文。
第三方面,提供一种开发板,该开发板可以包括第二存储器和TPM。其中,第二存储器可以用于存储密钥,TPM可以用于确定TPM的第一存储器中留存的用于加载密钥的空间的可用容量小于等于第一预设容量,将至少一个第一密钥存储到第二存储器。至少一个第一密钥包括待加载到第一存储器的密钥和/或已加载在第一存储器中的密钥。
结合第三方面,在第三方面的第一种可能的实现方式中,该开发板可以为FPGA开发板。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的系统架构图;
图2为本发明实施例提供的TPM模块及第二存储器的一种结构图;
图3为本发明实施例提供的密钥加载方法的一种流程图;
图4为本发明实施例提供的应用使用密钥的方法的一种流程图;
图5为本发明实施例提供的将第一存储器中的密钥搬移到第二存储器的方法的一种流程图;
图6为本发明实施例提供的将第二存储器中的密钥重新加载到第一存储器的方法的一种流程图;
图7为本发明实施例提供的TPM的一种结构图;
图8为本发明实施例提供的开发板的一种结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面请参见图1,介绍本发明实施例提供的系统架构,该架构可以包括终端设备和开发板,该开发板以FPGA开发板为例,该开发板上可以设置有FPGA模块,例如FPGA模块的一种实现形式可以是FPGA芯片,此时FPGA芯片中可以包括TPM模块,TPM模块即可用于完成TPM的功能,当然FPGA芯片也还可以用于完成一些其他功能,比如FPGA芯片还可以包括一些其他的模块,本发明实施例不作限制。
可选的,终端设备中可以安装一个或多个应用,其中的部分应用或者全部应用在使用密钥时可能需要TPM为其加载密钥。那么应用可以通过可信计算组织软件站(Trusted Computing Group Software Stack,TSS)与TPM进行交互。以终端设备和开发板通过USB连接为例,终端设备可以设置USB接口,开发板上可以设置USB控制芯片,从而终端设备和开发板可以通过USB连接实现通信。当然终端设备和开发板的通信方式不限于USB,图1只是举例。
从图1可以看到,TPM模块内部可以具有第一存储器,一般来说,应用要使用密钥时,需要TPM模块将密钥进行加载,之后才可以使用,那么第一存储器的全部区域或者部分区域就可以预留用于加载密钥,可选的,第一存储器例如可以是易失性存储器,例如可以包括随机存取存储器(Random AccessMemory,RAM),或者也可以包括其他可能的易失性存储器。需要注意的是,加载密钥和存储密钥是不同的概念,例如,TPM模块加载的密钥可以存储在TPM模块内部的其他存储器中,例如可以存储在TPM模块内部的非易失性存储器中,或者也可以存储在该开发板上的其他模块中,或者也可以存储在终端设备中,等等。另外该开发板上还可以设置有第二存储器,第二存储器可以位于TPM模块外部,例如该第二存储器可以认为是FPGA芯片的片外存储器,本发明实施例可以利用第二存储器中的部分区域或者全部区域来存储对密钥加密后得到的密文。
可选的,该开发板上还可以包括一些其他的模块,例如图1中所示的非易失性存储器,例如非易失性存储器可以包括可擦除可编程配置串行存储器(Erasable programmable configurable serial,EPCS),或者也可以包括其他可能的非易失存储器。另外该开发板还可以包括图1中未示出的一些其他可能的模块,本发明实施例不作限制。
可选的,图1以该开发板是FPGA开发板为例,在实际应用中,本发明实施例中的开发板不限于FPGA开发板,例如还可以是专门用于实现TPM功能的开发板,或者还可能是其他可能的能够实现TPM功能的开发板,等等。
请参见图2,为本发明实施例提供的开发板上设置的TPM模块及第二存储器的一种结构图。
其中,TPM模块可以包括加解密子模块1、密钥保存子模块、密钥恢复子模块、用于存储密钥置换表的存储子模块(图1中未示出存储子模块,只示出了密钥置换表)、密钥置换子模块、及第一存储器。可选的,TPM模块中还可以包括用于存储种子(seed)的种子子模块。其中,存储子模块与第一存储器是TPM模块内的两个存储区域。以上除了第一存储器和存储子模块之外,均是本发明实施例在TPM模块中新增的子模块,TPM模块中还可以包括一些TPM模块中原有的子模块,例如图2中示出的加解密子模块2和签名子模块,当然还可能包括一些TPM模块中原有的其他子模块,图2中不再一一示出,对于这些TPM模块中原有的子模块的功能等也不做过多介绍,可参考现有技术。
加密时:
密钥置换子模块负责密钥的换入和换出。在第一存储器用于加载密钥的空间不足时,密钥置换子模块可以选择将第一存储器中已加载的密钥搬移到第二存储器,或者密钥置换子模块也可以选择将待加载到第一存储器的密钥搬移到第二存储器。因为待加载到第一存储器的密钥很可能是应用即将要使用的密钥,如果将其搬移到第二存储器,则很可能又需要很快将其搬移回第一存储器,这样应用才可以使用,因此优选的,可以选择将第一存储器中已加载的密钥搬移到第二存储器,下面以密钥置换子模块将第一存储器中存储的密钥搬移到第二存储器为例。密钥置换子模块可以根据存储在第一存储器中的密钥加载表选择要搬移到第二存储器中的密钥,密钥加载表可以存储已加载在第一存储器中的每个密钥的信息。例如密钥置换子模块可以选择较长时间未使用的密钥,或者可以选择使用频率较小的密钥,等等。密钥置换子模块可以只选择将一个密钥搬移到第二存储器,或者也可以选择将多个密钥搬移到第二存储器,密钥置换子模块可以将选择的密钥及其上下文传给密钥保存子模块,可选的,密钥置换子模块还可以修改密钥加载表,例如密钥加载表里可以存储第一存储器中加载的各个密钥的上下文的句柄,还可以存储每个密钥在第一存储器中的地址,在将一个密钥搬移到第二存储器后,密钥置换子模块例如可以将密钥加载表里记载的该密钥在第一存储器中的地址设置为空,这样就表明该密钥已被搬移到第二存储器,或者密钥置换子模块也可以为密钥加载表中存储的该密钥的信息添加标识,以表明该密钥已存储到第二存储器。
密钥保存子模块在接收待搬移到第二存储器的密钥及其上下文后,可以将接收的密钥及其上下文传给加解密子模块1,加解密子模块1可以利用待搬移到第二存储器中的密钥的上下文的句柄生成保护密钥,为了区分不同的概念,将待搬移到第二存储器中的密钥称为第一密钥,将加解密子模块1根据第一密钥的上下文的句柄生成的保护密钥称为第二密钥,加解密子模块1在生成第二密钥后,可以采用第二密钥对该第二密钥对应的第一密钥进行加密,得到该第一密钥的密文。可选的,在存储一个密钥时,一般除了考虑密钥本身之外还要考虑密钥的上下文,因此,加解密子模块1采用第二密钥对该第二密钥对应的第一密钥进行加密,可以是采用第二密钥对该第二密钥对应的第一密钥及该第一密钥的上下文一起进行加密,以得到该第一密钥的密文。在得到第一密钥的密文后,加解密子模块1可以将第一密钥的密文传给密钥保存子模块,密钥保存子模块可以将第一密钥的密文存储到第二存储器。
可选的,seed可以是系统每次启动时利用系统上电后的初始状态产生的随机数,加解密子模块1在生成第二密钥时,可以根据第一密钥的上下文的句柄来生成,或者也可以根据第一密钥的上下文的句柄和种子子模块中存储的seed一起来生成,一般来说,根据第一密钥的上下文的句柄和seed一起生成的第二密钥一般都是对称密钥,这样比较方便加密和解密。
可选的,密钥保存子模块在接收待搬移到第二存储器的第一密钥及其上下文后,除了可以将接收的第一密钥及其上下文传给加解密子模块1之外,还可以对接收的每个第一密钥和其上下文分别进行哈希(hash)运算,以得到每个密钥的哈希值。密钥保存子模块可以将第一密钥的哈希值、第一密钥的上下文的句柄、及第一密钥的密文在第二存储器中的地址存储在密钥置换表中。其中,在加密过程中生成的第一密钥的哈希值,可以用于在解密时对第一密钥的安全性进行验证。
解密时:
在要使用第二存储器中存储的第一密钥时(其中,第二存储器实际存储的是第一密钥的密文),需要先将第二存储器中存储的第一密钥重新加载到第一存储器。例如需要使用第二存储器中存储的第一密钥1,则密钥恢复子模块根据密钥置换表中记录的第一密钥的密文在第二存储器中地址获取存储在第二存储器中的第一密钥1的密文,密钥恢复子模块可以调用加解密子模块1对第一密钥1的密文进行解密,得到第一密钥1和第一密钥1的上下文,加解密子模块1可以将得到的第一密钥1和第一密钥1的上下文发送给密钥恢复子模块。密钥恢复子模块可以将第一密钥1和第一密钥1的上下文发送给密钥置换子模块,密钥置换子模块接收密钥恢复子模块发送的第一密钥1和第一密钥1的上下文,可以将第一密钥1和第一密钥1的上下文重新加载到第一存储器。可选的,密钥置换子模块还可以修改密钥加载表,以标识第一密钥1已重新加载到第一存储器。可选的,密钥恢复子模块在从第二存储器中获取第一密钥1的密文后,可以在密钥置换表中删除第一密钥1的相关信息。
可选的,加解密子模块1需对第一密钥1的密文进行解密,例如加解密子模块1可以根据第一密钥1的上下文的句柄生成与第一密钥1对应的第二密钥1,加解密子模块1可以采用第二密钥1对第一密钥1的密文进行解密。或者,如果对第一密钥1进行加密的第二密钥1是根据第一密钥1的上下文的句柄和seed生成的,那么加解密子模块1可以根据第一密钥1的上下文的句柄和seed生成与第一密钥1对应的第二密钥1,并采用第二密钥1对第一密钥1的密文进行解密。
可选的,密钥恢复子模块在将第一密钥1和第一密钥1的上下文发送给密钥置换子模块之前,可以先对第一密钥1和第一密钥1的上下文进行哈希运算,在对密钥进行加密和解密时可以采用相同的哈希算法。在对第一密钥1和第一密钥1的上下文进行哈希运算后,可以得到第一密钥1的哈希值,而根据对加密过程的介绍可知,在存储第一密钥1和第一密钥的上下文时,也根据第一密钥1和第一密钥1的上下文计算得到了哈希值,加密过程中得到的第一密钥1的哈希值存储在密钥置换表中,那么密钥恢复子模块可以将解密过程中得到的第一密钥1的哈希值和加密过程中得到的第一密钥1的哈希值进行比较,以确定二者是否一致,如果一致,则可以确定第一密钥1和第一密钥1的上下文都未被篡改,可以确定第一密钥1和第一密钥1的上下文安全,则密钥恢复子模块可以将第一密钥1和第一密钥1的上下文发送给密钥置换子模块,而如果解密过程中得到的第一密钥1的哈希值和加密过程中得到的第一密钥1的哈希值不一致,则密钥恢复子模块可以确定第一密钥1和/或第一密钥1的上下文已被篡改,此时的第一密钥1和/或第一密钥1的上下文可能是不安全的,则密钥恢复子模块可以直接丢弃第一密钥1和第一密钥1的上下文,且可以向待使用第一密钥1的应用返回错误提示。
另外需注意的是,图2所提供的各子模块中,除了第一存储器、第二存储器、用于存储seed的种子子模块、以及用于存储密钥置换表的存储子模块等子模块可以通过硬件实现外,其他的子模块既可以通过硬件方式实现也可以通过软件方式实现。且以上对于TPM模块所包括的子模块的划分方式及每个子模块所完成的功能只是一种示例,在实际应用中,如果按照以上方式在TPM模块中划分子模块,则各子模块所完成的功能也可以与如上介绍有所不同,或者还可以按照其他方式在TPM模块中划分不同的子模块,本发明实施例均不作限制,只要TPM模块整体能够完成本发明实施例所提供的密钥存储方法即可。
另外,本发明实施例中提供的各个模块以及子模块的名称不构成对装置的限定,在实际应用时也可以为以上的模块或子模块命不同的名称。
下面结合附图介绍本发明实施例所提供的方法。
请参见图3,提供一种密钥加载方法,该方法可以通过图1或图2所示的TPM模块和第二存储器完成。该方法的流程描述如下:
步骤301:TPM确定TPM内部的第一存储器中留存的用于加载密钥的空间的可用容量小于等于第一预设容量;
步骤302:TPM将至少一个第一密钥存储到第二存储器;其中,第二存储器位于TPM外部,至少一个第一密钥包括待加载到第一存储器的密钥和/或已加载在第一存储器中的密钥。
其中,图3中的TPM可以理解为图1或图2中的TPM模块。
为了更为清楚地介绍图3所述的密钥加载方法,下面介绍几个例子,这几个例子涉及不同的处理流程,可以通过不同的侧面来介绍图3所述的密钥加载方法。可选的,在下面的几个例子中,继续将需加载在第一存储器的密钥、即应用使用的密钥称为第一密钥,将用于对第一密钥加密的密钥称为第二密钥。
例1
请参见图4,为安装在终端设备中的应用使用第一密钥的过程。另外,为避免概念混淆,将图4中的应用称为应用1,将图4中使用的第一密钥称为第一密钥1。图4的步骤介绍如下。
1、应用1通过安装的TSS向TPM模块发送请求消息,该请求消息用于请求TPM模块为应用1创建第一密钥。
例如,应用1在需要使用第一密钥时,可以通过TSS向TPM模块发送请求消息,TPM模块接收请求消息后,即可生成第一密钥。
2、TPM模块接收请求消息后,创建第一密钥1,且得到第一密钥1的密钥块。
可选的,TPM创建第一密钥1后,可以存储第一密钥1,例如可以存储在TPM内部的非易失性存储器中,或者也可以将第一密钥1存储在其他模块中,例如可以通过TSS进行存储。
3、TPM模块将第一密钥1的密钥块通过TSS传给应用1。
4、应用1通过TSS将第一密钥1的密钥块传给TPM模块,并通知TPM模块加载第一密钥1。
应用1若确定需要使用第一密钥1,则可以通过TSS将第一密钥1的密钥块传给TPM模块,这样TPM模块就可以知晓要加载第一密钥1,其中,TPM模块加载第一密钥1,在TPM加载第一密钥1后才可以使用第一密钥1。
5、在TPM模块加载第一密钥1时,确定第一存储器中预留的用于加载密钥的空间,例如预留的用于加载密钥的槽(slot),的可用容量不足,比如可用容量小于等于第一预设容量,则TPM模块可以将至少一个第一密钥搬移到第二存储器。其中,第一预设容量可以由用户设定,或者也可以由开发者设定,或者也可以由TPM模块自动设定。
可选的,在TPM模块加载第一密钥1时,若确定第一存储器中预留的用于加载密钥的空间的可用容量小于等于第一预设容量,则TPM模块可以主动将至少一个第一密钥存储到第二存储器,或者TPM模块也可以通过TSS向应用1返回错误信息,TSS接收错误信息后,若确定需要使用第一密钥1,则TSS可以指示TPM模块将至少一个第一密钥存储到第二存储器,那么TPM模块在接收TSS的指示后,可以将至少一个第一密钥存储到第二存储器,而如果TSS不指示TPM模块将至少一个第一密钥存储到第二存储器,或者如果TSS指示TPM模块无需将第一密钥存储到第二存储器,则TPM模块可以不进行操作,即可以不向第二存储器存储任何的第一密钥,在这种情况下,TPM模块可能也无法将第一密钥1加载到第一存储器,则第一密钥1可能无法使用。
可选的,至少一个第一密钥中可以包括第一密钥1,也可以不包括第一密钥1。例如,因为第一密钥1可能是待加载而又无法加载在第一存储器中的第一密钥,则TPM模块可以直接将第一密钥1存储到第二存储器,这样无需挪动第一存储器中原有的第一密钥,方式较为简单。或者例如,因第一密钥1是待加载的密钥,而一般来说待加载的密钥可能都是应用即将使用的密钥,而应用在使用密钥时需要密钥加载在第一存储器,否则可能无法使用,因此,TPM模块也可以从第一存储器中已加载的第一密钥中选择至少一个第一密钥存储到第二存储器,而将第一密钥1加载到第一存储器,以方便及时使用第一密钥1,例1以这种情况为例。
可选的,如果TPM模块从第一存储器中已加载的第一密钥中选择至少一个第一密钥存储到第二存储器,那么TPM模块在选择至少一个第一密钥时,可以选择较长时间未使用的第一密钥,例如可以预先设定预设时长,预设时长比如可以由用户设定,或者也可以由开发者设定,或者也可以由TPM模块自动设定,TPM模块可以选择将预设时长内未使用的第一密钥存储到第二存储器。因为较长时间未使用的第一密钥可能在短时间内被使用的可能性较小,将这样的第一密钥存储到第二存储器,可以尽量避免在存储之后又因为马上要使用而又要搬移到第一存储器,尽量减少TPM模块的工作量。或者例如,TPM模块可以选择将使用频率小于预设频率的至少一个第一密钥存储到第二存储器,例如预设频率可以预先设定,比如可以由TPM模块自动设定,或者也可以由开发者设定,或者也可以由用户设定,因为使用频率较低的第一密钥可能在短时间内被使用的可能性较小,将这样的第一密钥存储到第二存储器,可以尽量避免在存储之后又因为马上要使用而又要搬移到第一存储器,尽量减少TPM模块的工作量。当然,TPM模块也可以有其他的选择至少一个第一密钥的方式,本发明实施例不作限制。
可选的,例1中是以第一存储器预留的用于加载密钥的空间的可用容量不足为例进行的介绍,在TPM模块加载第一密钥1时,若确定第一存储器中预留的用于加载密钥的空间足够,即若确定第一存储器中预留的用于加载密钥的空间的可用容量大于第一预设容量,那么TPM模块可以直接将第一密钥1加载到第一存储器。
6、TPM模块将第一密钥1加载到第一存储器。在步骤5中介绍了,例1以将第一存储器中已加载的至少一个第一密钥存储到第二存储器,而将第一密钥1加载到第一存储器为例,即例1中至少一个第一密钥中不包括第一密钥1。
7、TPM模块将加载第一密钥1后得到的第一密钥1的上下文的句柄通过TSS返回给应用1,则应用1可以通过TSS接收第一密钥1的上下文的句柄。
在TPM模块将第一密钥1加载到第一存储器后,TPM模块可以将加载第一密钥1后得到的第一密钥1的上下文的句柄通过TSS返回给应用1,且TPM模块可以将第一密钥1的上下文的句柄以及第一密钥1在第一存储器中的地址存储在密钥加载表中,这样后续TPM模块就可以根据第一密钥1的上下文的句柄在第一存储器中查找第一密钥1。另外,为尽量减少特征的名称的长度,在本发明实施例中也可以将密钥的上下文的句柄这一特征称为密钥的句柄,例如,可以将第一密钥1的上下文的句柄称为第一密钥1的句柄。
8、应用1通过TSS将待加密的信息以及第一密钥1的句柄发送给TPM模块,则TPM模块可以通过TSS接收将待加密的信息以及第一密钥1的句柄。
其中,加解密过程可以由TPM模块完成,因此应用1可以通过TSS将待通过第一密钥1加密的信息以及第一密钥1的句柄发送给TPM模块,这样TPM模块可以进行加密。
9、TPM模块通过第一密钥1对待加密的信息进行加密。
其中,TPM模块可以根据接收的第一密钥1的句柄在密钥加载表里查找第一密钥1在第一存储器中的地址,因为例1是以将第一密钥1加载在第一存储器为例,因此TPM模块可以根据密钥加载表里记载的第一密钥1的地址从第一存储器中获取第一密钥1,TPM模块可以根据获取的第一密钥1对接收的待加密的信息进行加密。
可选的,TPM模块根据第一密钥1的句柄在密钥加载表里查找第一密钥1在第一存储器中的地址,若根据密钥加载表的记录确定第一密钥1搬移到了第二存储器,则还需要先从第二存储器中将第一密钥1重新加载到第一存储器,之后再从第一存储器中获取第一密钥1,并根据获取的第一密钥1对接收的待加密的信息进行加密。
10、TPM模块将通过第一密钥1加密后的待加密的信息通过TSS发送给应用1,应用1可以通过TSS接收通过第一密钥1加密后的待加密的信息。这样就完成了信息的加密。
11、第一密钥1使用结束后,TPM模块可以清除第一密钥1的相关信息。
步骤11为可选步骤。可选的,应用1在无需使用第一密钥1后,可以通过TSS通知TPM模块从第一存储器中卸载第一密钥1,则TPM模块可以根据应用1的请求卸载第一密钥1。可选的,TPM模块从第一存储器中卸载第一密钥1后,还可以从密钥加载表中删除第一密钥1的信息,相当于TPM模块不再存储第一密钥1。如果应用1下次又要使用第一密钥1,因为应用1存储了第一密钥1的密钥块,则应用1可以再通过TSS把第一密钥1的密钥块传给TPM模块,TPM模块可以重新加载第一密钥1。即,如果一个应用第二次使用同一个密钥,可以无需再让TPM模块重新生成密钥,减少TPM模块的工作量。
另外,例1中的情况是有新的密钥要加载时可以确认第一存储器中预留的用于加载密钥的空间的可用容量是否小于等于第一预设容量,这只是一种示例,比如,TPM模块也可以实时地、或者周期性地监控第一存储器,以确认第一存储器中预留的用于加载密钥的空间的可用容量是否小于等于第一预设容量,如果第一存储器中预留的用于加载密钥的空间的可用容量小于等于第一预设容量,则TPM模块就可以将第一存储器中已加载的全部第一密钥或者部分第一密钥搬移到第二存储器,这样,无需有密钥待加载时再进行密钥的搬移,可以较为及时地加载待加载的密钥。
例2
请参见图5,为将第一存储器中的密钥搬移到第二存储器的过程,在例2的介绍过程中,以该方法依托于图2的架构为例。另外,为避免概念混淆,将图5中待搬移到第二存储器的第一密钥称为第一密钥2。图5是以将一个第一密钥(即第一密钥2)搬移到第二存储器为例,如果有多个第一密钥需要从第一存储器搬移到第二存储器,每个第一密钥的搬移过程都可以参考图5所介绍的过程,且多个第一密钥在搬移时可以串行执行,以尽量避免出错,或者也可以并行执行,以提高效率。图5的步骤介绍如下。
1、密钥置换子模块根据第一存储器中存储的密钥加载表,获取第一密钥2的句柄。
可选的,密钥置换子模块获取的句柄可以是在预设时长内未使用的第一密钥的句柄。若在预设时长内未使用的第一密钥有多个,则密钥置换子模块可以将句柄其全部获取,或者也可以从中获取部分第一密钥的句柄。例2以密钥置换子模块获取第一密钥2的句柄为例。
2、密钥置换子模块将第一密钥2的句柄发给密钥保存子模块。
3、密钥保存子模块根据接收的第一密钥2的句柄,从第一存储器中获取第一密钥2及第一密钥2的上下文。
4、密钥保存子模块将第一密钥2及第一密钥2的上下文传给加解密子模块1。
可选的,密钥保存子模块除了可以将第一密钥2和第一密钥2的上下文传给加解密子模块1之外,还可以对第一密钥2和第一密钥2进行哈希运算,得到第一密钥2的哈希值,例如将此时得到的哈希值称为哈希值1。
5、加解密子模块1对第一密钥2及第一密钥2的上下文进行加密,得到第一密钥2的密文。
可选的,加解密子模块1可以以第一密钥2的句柄作为输入,生成用于对第一密钥2及第一密钥2的上下文进行加密的第二密钥,例如将该第二密钥称为第二密钥1。
可替换的,加解密子模块1也可以以第一密钥2的句柄和种子子模块中存储的seed作为输入,生成第二密钥1。
加解密子模块1可以通过第二密钥1对第一密钥2及第一密钥2的上下文进行加密。
6、加解密子模块1将第一密钥2的密文传给密钥保存子模块。
7、密钥保存子模块将第一密钥2的密文存储到第二存储器。
可选的,密钥保存子模块可以在密钥置换表中增加一个表项,该表项用于记录第一密钥2的相关信息,例如该表项中可以记录第一密钥2的句柄及第一密钥2的密文在第二存储器中的地址。可选的,如果密钥保存子模块还根据第一密钥2和第一密钥2的上下文进行哈希运算得到了哈希值1,则该表项中还可以记录哈希值1。
8、密钥保存子模块通知加解密子模块1销毁第二密钥1。
步骤8为可选步骤。销毁第二密钥1,可以避免第二密钥1被盗取,从而可以在一定程度上保障存储在第二存储器中的第一密钥2的密文的安全性。
可选的,密钥保存子模块可以通知密钥置换子模块修改密钥加载表中记录的第一密钥2的信息,例如可以在密钥加载表中将第一密钥2在第一存储器中的地址置为空,或者例如可以在密钥加载表中将第一密钥2标记为已搬移到第二存储器。
例3
例如,当应用需要使用某个第一密钥时,若TPM模块通过查找密钥加载表发现该第一密钥已加载但未存储在第一存储器,或者通过查找密钥加载表确定该第一密钥已搬移到第二存储器,则TPM模块可以主动将该第一密钥从第二存储器中重新加载到第一存储器,例3以此情况为例,或者,若TPM模块通过查找密钥加载表发现该第一密钥已加载但未存储在第一存储器,则TPM模块可以通知TSS,若TSS确定要使用该第一密钥,则TSS可以指示TPM模块将该第一密钥从第二存储器中重新加载到第一存储器。或者例如,TPM模块也可以实时、或周期性地对第一存储器进行监控,若确定第一存储器中预留的用于加载密钥的空间的可用容量较多,例如大于第二预设容量,TPM模块可以选择将第二存储器中存储的全部密钥或部分密钥重新加载到第一存储器。其中,第一预设容量与第二预设容量可以相同也可以不同,若不同的话,则第一预设容量可以小于第二预设容量。请参见图6,为将第二存储器中的密钥重新加载到第一存储器的过程,在例3的介绍过程中,继续以该方法依托于图2的架构为例。另外,为避免概念混淆,将图6中待重新加载到第一存储器的第一密钥称为第一密钥3。图6是以将一个第一密钥(即第一密钥3)重新加载到第一存储器为例,如果有多个第一密钥需要从第二存储器重新加载到第一存储器,每个第一密钥的重新加载的过程都可以参考图6所介绍的过程,且多个第一密钥在重新加载时可以串行执行,以尽量避免出错,或者也可以并行执行,以提高效率。图6的步骤介绍如下。
1、密钥置换子模块确定待重新加载的第一密钥的句柄为第一密钥3的句柄,则密钥置换模块根据第一密钥3的句柄查找密钥置换表,并将密钥置换表中记录的第一密钥3的密文在第二存储器中的地址发送给密钥恢复子模块,则密钥恢复子模块可以接收第一密钥3的密文在第二存储器中的地址。
可选的,密钥置换子模块如果在密钥置换表中未查询到第一密钥3的句柄相关的表项,则可以返回错误信息。
2、密钥恢复子模块可以将第一密钥3的密文发送给加解密子模块1。
密钥恢复子模块根据接收的第一密钥3的密文在第二存储器的地址,可以从第二存储器中获取第一密钥3的密文。
3、加解密子模块1可以对第一密钥3的密文进行解密。
可选的,加解密子模块1可以将第一密钥3的句柄作为输入,生成用于对第一密钥3的密文进行解密的保护密钥,例如将该保护密钥称为第二密钥2,加解密子模块1可以通过第二密钥2对第一密钥3的密文进行解密,得到第一密钥3及第一密钥3的上下文。
可替换的,若在对第一密钥3及第一密钥3的上下文进行加密时所使用的保护密钥是通过第一密钥3的句柄和种子子模块中存储的种子生成的,那么加解密子模块1可以将第一密钥3的句柄和种子子模块中存储的种子作为输入,生成用于对第一密钥3的密文进行解密的第二密钥2,加解密子模块1可以通过第二密钥2对第一密钥3的密文进行解密,得到第一密钥3及第一密钥3的上下文。
4、加解密子模块1可以将第一密钥3及第一密钥3的上下文发送给密钥恢复子模块。
5、密钥恢复子模块可以将第一密钥3及第一密钥3的上下文发送给密钥置换子模块。
可选的,在将第一密钥3搬移到第二存储器的过程中,若根据第一密钥3和第一密钥3进行了哈希运算,且在密钥置换表中存储了运算结果,例如为哈希值2,那么密钥恢复子模块在将第一密钥3及第一密钥3的上下文发送给密钥置换子模块之前,可以先根据第一密钥3及第一密钥3的上下文进行哈希运算,例如得到的哈希值称为哈希值3。其中,针对同一个第一密钥,在加密和解密过程中进行的哈希运算所采用的哈希算法可以相同。在得到哈希值3后,密钥恢复子模块可以将哈希值3和密钥置换表中存储的哈希值2进行比较,以判断二者是否一致,如果二者一致,则可以认为第一密钥3的密文在存储的过程中未被篡改,传输过程也未出错,则密钥恢复子模块可以将第一密钥3及第一密钥3的上下文发送给密钥置换子模块,而如果哈希值3和哈希值2不一致,则可以认为第一密钥3的密文在存储的过程中发生了错误,比如可能是存储中出错,或者也可能是被篡改,或者也可能在传输的过程中发生了错误,总之第一密钥3和/或第一密钥3的上下文此时可能是不安全的,或者说第一密钥3和/或第一密钥3的上下文是错误的,无法正常使用,则密钥恢复子模块可以不将第一密钥3及第一密钥3的上下文发送给密钥置换子模块,比如密钥恢复子模块可以向密钥置换子模块则返回错误信息。可选的,如果哈希值3和哈希值2不一致,密钥恢复子模块可以丢弃第一密钥3和第一密钥3的上下文。
6、密钥置换子模块可以将第一密钥3及第一密钥3的上下文重新加载到第一存储器。且密钥置换子模块可以修改密钥加载表,例如可以在密钥加载表中添加第一密钥3在第一存储器中的地址,或者可以删除密钥加载表中记录的用于指示第一密钥3已搬移到第二存储器中的标记,或者可以在密钥加载表中标记第一密钥3已加载在第一存储器。
可选的,密钥置换子模块在将第一密钥3及第一密钥3的上下文重新加载到第一存储器之前,可以先确定第一存储器中预留的用于加载密钥的空间的可用容量是否大于第一预设容量,若第一存储器中预留的用于加载密钥的空间的可用容量大于第一预设容量,则密钥置换模块可以将第一密钥3及第一密钥3的上下文重新加载到第一存储器,若第一存储器中预留的用于加载密钥的空间的可用容量小于等于第一预设容量,则密钥置换模块可以先从第一存储器中选择部分第一密钥搬移到第二存储器,再将第一密钥3第一密钥3的上下文重新加载到第一存储器。其中,将第一存储器中的第一密钥搬移到第二存储器的过程可参考例2的介绍。
7、密钥置换子模块可以通知加解密子模块1销毁第二密钥2。
步骤7为可选步骤。销毁第二密钥2,可以避免第二密钥2被盗取,也可以节省存储空间。
本发明实施例中,TPM模块除了可以将密钥加载到第一存储器之外,还可以将第一存储器中无法加载的密钥暂存储到第二存储器,提升了TPM的加载能力,扩展了密钥的存储空间,也对TPM模块所能够完成的功能进行了改进,使得TPM的功能更加完善,提高了TPM模块的处理效率。另外,无论是将密钥存储到第一存储器还是第二存储器,都可以由TPM模块进行操作,中间无需TSS的参与,减少了运行在终端设备中的TSS与开发板上的TPM模块进行交互的过程,节省传输资源,提高处理效率。在将密钥存储到第二存储器之前对密钥进行加密,且存储到第二存储器的密钥的密文与终端设备相隔离,在一定程度上提高了密钥的安全性。
请参见图7,基于同一发明构思,提供一种TPM,该TPM可以包括第一存储器701和处理器702。
其中,处理器702可以包括中央处理器(CPU)或特定应用集成电路(Application Specific Integrated Circuit,ASIC),可以包括一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(Field ProgrammableGate Array,FPGA)开发的硬件电路,可以是基带芯片。
第一存储器701可以包括易失性存储器,例如可以包括随机存取存储器(Random Access Memory,RAM)等。第一存储器701可以用于加载密钥,还可以用于存储如前所述的密钥加载表,例如第一存储器701中可以预留出部分空间或全部空间用于加载密钥,如果第一存储器701预留了部分空间用于加载密钥,则第一存储器701还可以存储其他数据。
可选的,该TPM还可以包括一些对外接口,例如该TPM可以通过其中的部分接口与FPGA的第二存储器进行通信等。
通过对处理器702进行设计编程,将前述所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述图3-图6所示的方法。如何对处理器702进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
该TPM可以用于执行上述图3-图6所述的方法,例如可以是如前所述的TPM模块,例如该TPM与图1所示的TPM模块可以是同一功能模块,或者例如该TPM与图2所示的TPM模块可以是同一功能模块,例如,处理器702可以实现图2中的加解密子模块1、密钥保存子模块、密钥恢复子模块、用于存储密钥置换表的存储子模块、种子子模块及密钥置换子模块的功能,例如密钥置换表、及种子子模块中的seed可以存储在处理器702的缓存中,或者也可以存储在该TPM包括的其他的存储器中。
因此,对于该TPM中的各单元所实现的功能等,可参考如前的描述,不多赘述。
请参见图8,基于同一发明构思,提供一种开发板,该开发板可以包括TPM801和第二存储器802。
其中,TPM801可以是如图1-图7任一所述的TPM。
第二存储器802可以包括易失性存储器,例如可以包括RAM,或者第二存储器802还可以包括非易失性存储器,例如可以包括只读存储器(Read OnlyMemory,ROM)和磁盘存储器等。第二存储器802可以用于存储密钥的密文,例如第二存储器中可以预留出部分空间或全部空间用于存储密钥的密文,如果第二存储器802预留了部分空间用于存储密钥的密文,则第二存储器802还可以存储其他数据。
该开发板可以用于执行上述图3-图6所述的方法,例如可以是如前所述的开发板,可选的,该开发板可以是FPGA开发板,例如该开发板与图1所示的FPGA开发板可以是同一开发板,或者例如该开发板上包括的FPGA芯片可以包括图2所示的TPM模块,或者该开发板也可以是其他类型的开发板,例如可以是专门用于实现TPM功能的开发板,或者可能是其他的能够实现TPM功能的开发板,等等。因此,对于该开发板中的各功能模块所实现的功能等,可参考如前的描述,不多赘述。
图8以该开发板通过FPGA芯片实现TPM模块的功能为例,在实际应用中不限于此。
本发明实施例中,如果用于TPM的第一存储器中用于加载密钥的空间的容量小于等于第一预设容量,则TPM可以将至少一个第一密钥存储到第二存储器,即,通过利用TPM外部的第二存储器,扩展了用于加载密钥的空间,提升了TPM的密钥加载能力,使得TPM可以加载更多的密钥,可以为更多的应用提供密钥安全使用功能,也就提升了系统的安全性。
在本发明中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例。
在本发明实施例中的各功能单元可以集成在一个处理单元中,或者各个单元也可以均是独立的物理模块。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(UniversalSerial Bus flash drive)、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以对本发明的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。

Claims (20)

1.一种密钥加载方法,其特征在于,包括:
可信平台模块TPM确定所述TPM内部的第一存储器中留存的用于加载密钥的空间的可用容量小于等于第一预设容量;
所述TPM将至少一个第一密钥存储到第二存储器;其中,所述第二存储器位于所述TPM外部,所述至少一个第一密钥包括待加载到所述第一存储器的密钥和/或已加载在所述第一存储器中的密钥。
2.如权利要求1所述的方法,其特征在于,所述TPM将至少一个第一密钥存储到第二存储器,包括:
所述TPM对所述至少一个第一密钥分别进行加密,得到至少一个密文;
所述TPM将所述至少一个密文存储到所述第二存储器。
3.如权利要求2所述的方法,其特征在于,所述TPM对所述至少一个第一密钥分别进行加密,得到至少一个密文,包括:
所述TPM根据所述至少一个第一密钥的句柄,生成用于对所述至少一个第一密钥进行加密的至少一个第二密钥;
所述TPM通过所述至少一个第二密钥对所述至少一个第一密钥及所述至少一个第一密钥的上下文进行加密,得到所述至少一个密文;其中每个第二密钥用于对一个第一密钥及该第一密钥的上下文进行加密,以得到该第一密钥的密文。
4.如权利要求1-3任一所述的方法,其特征在于,所述TPM在将至少一个第一密钥存储到第二存储器之前,还包括:
所述TPM对所述至少一个第一密钥及所述至少一个第一密钥的上下文进行哈希运算,得到至少一个哈希值;其中,在进行哈希运算时,是对每个第一密钥及该第一密钥的上下文进行哈希运算,得到该第一密钥的哈希值;
所述TPM存储所述至少一个哈希值。
5.如权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
所述TPM确定待获取的第三密钥位于所述第二存储器中;
所述TPM从所述第二存储器中获取所述第三密钥。
6.如权利要求5所述的方法,其特征在于,所述TPM从所述第二存储器中获取所述第三密钥,包括:
所述TPM从所述第二存储器中获取所述第三密钥的密文;
所述TPM对所述第三密钥的密文进行解密,获得所述第三密钥及所述第三密钥的上下文。
7.如权利要求6所述的方法,其特征在于,所述TPM对所述第三密钥的密文进行解密,获得所述第三密钥及所述第三密钥的上下文,包括:
所述TPM根据所述第三密钥的句柄,生成用于对所述第三密钥的密文进行解密的第四密钥;
所述TPM通过所述第四密钥对所述第三密钥的密文进行解密,得到所述第三密钥及所述第三密钥的上下文。
8.如权利要求6或7所述的方法,其特征在于,在得到所述第三密钥及所述第三密钥的上下文之后,还包括:
所述TPM对所述第三密钥及所述第三密钥的上下文进行哈希运算,得到所述第三密钥的哈希值;
所述TPM将计算得到的所述第三密钥的哈希值与存储的所述第三密钥的哈希值进行比较,判断二者是否一致;其中,存储的所述第三密钥的哈希值是在将所述第三密钥存储到所述第二存储器的过程中生成的;
若二者一致,则所述TPM将所述第三密钥及所述第三密钥的上下文加载到所述第一存储器。
9.如权利要求8所述的方法,其特征在于,在判断二者是否一致之后,还包括:
若二者不一致,则所述TPM丢弃所述第三密钥及所述第三密钥的上下文。
10.一种可信平台模块TPM,其特征在于,包括:
第一存储器,用于存储密钥;
处理器,用于确定所述第一存储器中留存的用于加载密钥的空间的可用容量小于等于第一预设容量,将至少一个第一密钥存储到第二存储器;所述第二存储器位于所述TPM外部,所述至少一个第一密钥包括新生成的密钥和/或加载在所述第一存储器中的密钥。
11.如权利要求10所述的TPM,其特征在于,所述处理器用于将至少一个第一密钥存储到第二存储器,包括:
对所述至少一个第一密钥分别进行加密,得到至少一个密文;
将所述至少一个密文存储到所述第二存储器。
12.如权利要求11所述的TPM,其特征在于,所述处理器用于对所述至少一个第一密钥分别进行加密,得到至少一个密文,包括:
根据所述至少一个第一密钥的句柄,生成用于对所述至少一个第一密钥进行加密的至少一个第二密钥;
通过所述至少一个第二密钥对所述至少一个第一密钥及所述至少一个第一密钥的上下文进行加密,得到所述至少一个密文;其中每个第二密钥用于对一个第一密钥及该第一密钥的上下文进行加密,以得到该第一密钥的密文。
13.如权利要求10-12任一所述的TPM,其特征在于,所述处理器还用于:
在将至少一个第一密钥存储到第二存储器之前,对所述至少一个第一密钥及所述至少一个第一密钥的上下文进行哈希运算,得到至少一个哈希值;其中,在进行哈希运算时,是对每个第一密钥及该第一密钥的上下文进行哈希运算,得到该第一密钥的哈希值;
存储所述至少一个哈希值。
14.如权利要求10-13任一所述的TPM,其特征在于,所述处理器还用于:
确定待获取的第三密钥位于所述第二存储器中;
从所述第二存储器中获取所述第三密钥。
15.如权利要求14所述的TPM,其特征在于,所述处理器用于从所述第二存储器中获取所述第三密钥,包括:
从所述第二存储器中获取所述第三密钥的密文;
对所述第三密钥的密文进行解密,获得所述第三密钥及所述第三密钥的上下文。
16.如权利要求15所述的TPM,其特征在于,所述处理器用于对所述第三密钥的密文进行解密,获得所述第三密钥及所述第三密钥的上下文,包括:
根据所述第三密钥的句柄,生成用于对所述第三密钥的密文进行解密的第四密钥;
通过所述第四密钥对所述第三密钥的密文进行解密,得到所述第三密钥及所述第三密钥的上下文。
17.如权利要求15或16所述的TPM,其特征在于,所述处理器还用于:
在得到所述第三密钥及所述第三密钥的上下文之后,对所述第三密钥及所述第三密钥的上下文进行哈希运算,得到所述第三密钥的哈希值;
将计算得到的所述第三密钥的哈希值与存储的所述第三密钥的哈希值进行比较,判断二者是否一致;其中,存储的所述第三密钥的哈希值是在将所述第三密钥存储到所述第二存储器的过程中生成的;
若二者一致,则将所述第三密钥及所述第三密钥的上下文加载到所述第一存储器。
18.如权利要求17所述的TPM,其特征在于,所述处理器还用于:
在判断二者是否一致之后,若二者不一致,则丢弃所述第三密钥及所述第三密钥的上下文。
19.一种开发板,其特征在于,包括:
第二存储器,用于存储密钥;
TPM,用于确定所述TPM的第一存储器中留存的用于加载密钥的空间的可用容量小于等于第一预设容量,将至少一个第一密钥存储到所述第二存储器;所述至少一个第一密钥包括待加载到所述第一存储器的密钥和/或已加载在所述第一存储器中的密钥。
20.如权利要求19所述的开发板,其特征在于,所述开发板为现场可编程门阵列FPGA开发板。
CN201610162361.5A 2016-03-21 2016-03-21 一种密钥加载方法及设备 Pending CN105847011A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610162361.5A CN105847011A (zh) 2016-03-21 2016-03-21 一种密钥加载方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610162361.5A CN105847011A (zh) 2016-03-21 2016-03-21 一种密钥加载方法及设备

Publications (1)

Publication Number Publication Date
CN105847011A true CN105847011A (zh) 2016-08-10

Family

ID=56587522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610162361.5A Pending CN105847011A (zh) 2016-03-21 2016-03-21 一种密钥加载方法及设备

Country Status (1)

Country Link
CN (1) CN105847011A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108092765A (zh) * 2017-11-23 2018-05-29 深圳市文鼎创数据科技有限公司 一种支持无限个用户密钥的方法、装置及设备
CN109447203A (zh) * 2018-11-07 2019-03-08 广州凯晟信息科技有限公司 二维码加密、解密方法、装置、云服务器及系统
CN109768862A (zh) * 2019-03-12 2019-05-17 北京深思数盾科技股份有限公司 一种密钥管理方法、密钥调用方法及密码机
CN109815711A (zh) * 2018-12-21 2019-05-28 航天信息股份有限公司 一种存储设备、数据存储方法和数据读取方法
WO2019105276A1 (zh) * 2017-11-30 2019-06-06 华为技术有限公司 数据访问方法、存储器及处理器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101141729A (zh) * 2006-09-07 2008-03-12 三星电子株式会社 移动终端的固件更新方法及使用该方法的移动终端
CN101196852A (zh) * 2008-01-03 2008-06-11 杭州华三通信技术有限公司 分布式缓存方法及其系统、以及缓存设备和非缓存设备
US20080162932A1 (en) * 2006-12-29 2008-07-03 Lenovo (Singapore) Pte Ltd. Authenticating suspect data using key tables
CN102549594A (zh) * 2009-10-13 2012-07-04 微软公司 临时秘密的安全存储

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101141729A (zh) * 2006-09-07 2008-03-12 三星电子株式会社 移动终端的固件更新方法及使用该方法的移动终端
US20080162932A1 (en) * 2006-12-29 2008-07-03 Lenovo (Singapore) Pte Ltd. Authenticating suspect data using key tables
CN101196852A (zh) * 2008-01-03 2008-06-11 杭州华三通信技术有限公司 分布式缓存方法及其系统、以及缓存设备和非缓存设备
CN102549594A (zh) * 2009-10-13 2012-07-04 微软公司 临时秘密的安全存储

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108092765A (zh) * 2017-11-23 2018-05-29 深圳市文鼎创数据科技有限公司 一种支持无限个用户密钥的方法、装置及设备
WO2019105276A1 (zh) * 2017-11-30 2019-06-06 华为技术有限公司 数据访问方法、存储器及处理器
CN109857682A (zh) * 2017-11-30 2019-06-07 华为技术有限公司 数据访问方法、存储器及处理器
CN109857682B (zh) * 2017-11-30 2021-10-01 华为技术有限公司 数据访问方法、存储器及处理器
CN109447203A (zh) * 2018-11-07 2019-03-08 广州凯晟信息科技有限公司 二维码加密、解密方法、装置、云服务器及系统
CN109815711A (zh) * 2018-12-21 2019-05-28 航天信息股份有限公司 一种存储设备、数据存储方法和数据读取方法
CN109768862A (zh) * 2019-03-12 2019-05-17 北京深思数盾科技股份有限公司 一种密钥管理方法、密钥调用方法及密码机
CN109768862B (zh) * 2019-03-12 2019-11-22 北京深思数盾科技股份有限公司 一种密钥管理方法、密钥调用方法及密码机

Similar Documents

Publication Publication Date Title
US10419216B2 (en) Keying infrastructure
JP6332766B2 (ja) トラステッドサービスマネージャデータの保護および秘密性のためのトラステッドセキュリティゾーンコンテナ
CN105847011A (zh) 一种密钥加载方法及设备
US9049186B1 (en) Trusted security zone re-provisioning and re-use capability for refurbished mobile devices
CN100424678C (zh) 使用隐含中间密钥来认证软件的系统和方法
TWI496023B (zh) 用於部分保全記憶體處理的軟體修改技術
WO2007133024A1 (en) Method and apparatus for searching rights object and mapping method and mapping apparatus for the same
US7903812B2 (en) Detection and handling of encryption key and initialization vector
CN103617401A (zh) 一种数据文件保护方法及装置
EP3127273A1 (en) Cryptographic chip and related methods
CN116980230B (zh) 一种信息安全保护方法及装置
CN117378173A (zh) 经由安全处理器计算设备的所有权的转移
CN108183796A (zh) 利用白盒库文件和白盒密钥文件进行加解密的方法及装置
CN109190411A (zh) 一种操作系统的主动安全防护方法、系统及终端设备
CN108111622A (zh) 一种下载白盒库文件的方法、装置及系统
CN110221990A (zh) 数据的存储方法及装置、存储介质、计算机设备
CN114528603B (zh) 嵌入式系统的隔离动态保护方法、装置、设备和存储介质
CN114942729A (zh) 一种计算机系统的数据安全存储与读取方法
CN108416224A (zh) 一种数据加解密方法及装置
CN101420299B (zh) 提高智能密钥设备稳定性的方法和智能密钥设备
CN109889334A (zh) 嵌入式固件加密方法、装置、wifi设备及存储介质
US20150193267A1 (en) Systems and methods for a save back feature
Liu et al. Ensuring data confidentiality in cloud computing: an encryption and trust-based solution
CN109801423A (zh) 一种基于蓝牙的车辆控制方法及系统
CN107085900B (zh) 数据处理方法、装置、系统及pos终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160810