CN103812648A - Rsa密钥生成方法及装置 - Google Patents
Rsa密钥生成方法及装置 Download PDFInfo
- Publication number
- CN103812648A CN103812648A CN201410092851.3A CN201410092851A CN103812648A CN 103812648 A CN103812648 A CN 103812648A CN 201410092851 A CN201410092851 A CN 201410092851A CN 103812648 A CN103812648 A CN 103812648A
- Authority
- CN
- China
- Prior art keywords
- key
- rsa key
- rsa
- father
- pki
- 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.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明实施例公开了一种RSA密钥生成方法及装置,在可信平台模块外部的ARM安全运行环境生成素数等密钥参数,将生成的密钥参数发送给可信平台模块,由可信平台模块根据接收到的密钥参数生成RSA密钥,也就是说,本申请实施例中,将生成密钥所需的高运算量的计算(素性检验计算)转移到可信平台模块外部,从而减轻了可信平台模块的计算负担,缩短了创建RSA密钥的时间。
Description
技术领域
本发明涉及信息处理技术领域,更具体地说,涉及一种RSA密钥生成方法及装置。
背景技术
可信计算技术凭借强有力的安全保护手段和宽广的应用前景成为今年来信息安全领域最具吸引力的热点技术。可信计算以可信平台模块(TrustedPlatform Module,TPM)作为可信根,通过可信链将信任扩展到整个系统,从而实现增强安全性的目标。可信平台模块是一个小型片上系统(也叫系统级芯片),能提供各种密码学运算,芯片中含有可信存储根,能够保证密钥和数据的安全存储,并提供完备的密钥管理机制。
可信平台模块可以生成RSA密钥,在创建RSA密钥时需要产生两个大素数,具体为:可信平台模块产生大随机数,然后验证随机数是否为素数,当产生的随机数为素数时,依据所产生的随机素数创建RSA密钥。
但是,可信平台模块低成本的设计理念使得可信平台模块的运算性能低,而由于素数是随机生成的,因此素性检验的运算量有可能会很大,因此可信平台模块创建RSA密钥的时间较长,以至于无法满足某些应用开发的需求,使得可信平台模块的应用范围受到限制,因此如何缩短可信平台模块创建RSA密钥的时间成为亟待解决的问题。
发明内容
本发明的目的是提供一种RSA密钥生成方法及装置,以缩短可信平台模块创建RSA密钥的时间。
为实现上述目的,本发明提供了如下技术方案:
一种RSA密钥生成方法,应用于ARM嵌入式系统,所述ARM嵌入式系统的主板上设置有可信平台模块,所述ARM嵌入式系统的运行环境包括安全运行环境和非安全运行环境,所述方法包括:
获取可信计算组织软件栈生成创建RSA密钥请求,并将所述创建RSA密钥请求存储至所述ARM嵌入式系统的内存中,所述创建RSA密钥请求中包括父密钥、RSA密钥的公钥的长度;
当所述创建RSA密钥请求有效时,将所述ARM嵌入式系统的运行环境切换至安全运行环境;
创建RSA密钥参数,所述密钥参数包括:依据两个不同素数得到的RSA密钥的公钥和RSA密钥的私钥,所述RSA密钥的公钥的摘要值,所述RSA密钥的私钥的长度,以及第一加密参数;所述第一加密参数由所述父密钥对所述公钥的摘要值、所述私钥,以及所述私钥的长度进行加密得到;
向所述可信平台模块发送创建RSA密钥命令,所述创建RSA密钥命令中包括所创建的RSA密钥参数,以及预先载入所述可信平台模块的父密钥的句柄,RSA密钥的使用授权数据、RSA密钥的迁移授权数据,父密钥的第一口令验证码,以及第一随机数;
所述可信平台模块创建RSA密钥,包括:
验证所述父密钥的第一口令验证码是否有效,当所述父密钥的第一口令验证码有效时,通过所述父密钥解密所述第一加密参数,得到所述RSA密钥的公钥的摘要值、所述RSA密钥的私钥,以及所述私钥的长度;
计算所述RSA密钥的公钥的摘要值;
当计算得到的RSA密钥的公钥的摘要值与解密得到的RSA密钥的公钥的摘要值相同时,将所述RSA密钥参数加载至RSA密钥数据块中;
如果RSA密钥是不可迁移密钥,则将所述可信平台模块的不可迁移标识标记到所述RSA密钥的迁移授权数据上,并加载至所述RSA密钥数据块中;如果RSA密钥是可迁移密钥,则通过预先建立的特定对象授权会话的共享密钥对RSA密钥的迁移授权数据进行解密,将解密得到的数据加载至所述RSA密钥数据块中;
通过预先建立的特定对象授权会话的共享密钥对RSA密钥的使用授权数据进行解密,将得到的RSA密钥的使用授权数据加载至所述RSA密钥数据块中;
用所述父密钥对所述公钥的摘要值、所述私钥、所述私钥的长度、所述RSA密钥的迁移授权数据加密得到第二加密参数,将所述第二加密参数加载至所述RSA密钥数据块中;
生成第二随机数,并将所述第二随机数加载至所述RSA密钥数据块中;
生成父密钥的第二口令验证码,将所述父密钥的第二口令验证码加载至所述RSA密钥数据块中;
通过所述可信计算组织软件栈的创建密钥接口向所述可信计算组织软件栈返回与所述创建RSA密钥命令相对应的响应消息,所述响应消息中携带有所述RSA密钥数据块;
将所述响应消息存储至所述ARM嵌入式系统的内存中;
将所述ARM嵌入式系统的运行环境切换到非安全运行环境。
上述方法,优选的,
每一个素数的长度为所述RSA密钥的公钥的长度的一半;
所述RSA密钥的公钥为所述两个不同的素数的乘积;
所述RSA密钥的私钥为所述两个不同素数中的第一素数;
所述RSA密钥的私钥的长度为所述第一素数的长度。
上述方法,优选的,所述两个不同的素数通过如下方法获取:
所述ARM嵌入式系统的运行环境切换至安全运行环境后,随机生成两个大素数。
上述方法,优选的,所述两个不同的素数通过如下方法获取:
在所述ARM嵌入式系统开机后,随机生成若干对大素数,其中每对大素数只能用一次;
当所述ARM嵌入式系统的运行环境切换至安全运行环境后,从所述若干对大素数中选择一对大素数。
上述方法,优选的,在所述若干对大素数都用完后,当需要大素数时,随机生成两个大素数。
上述方法,优选的,所述两个不同的素数通过如下方法获取:
预先随机生成若干对大素数,并将所述若干对大素数存储至缓冲池中,其中,每对大素数只能用一次;
当所述ARM嵌入式系统的运行环境切换至安全运行环境后,从所述缓冲池中随机选择一对大素数。
上述方法,优选的,当所述缓冲池中大素数的对数小于预设值时,随机生成若干对大素数,并将随机生成的大素数对添加至所述缓冲池中。
一种RSA密钥生成装置,应用于ARM嵌入式系统,所述ARM嵌入式系统的主板上设置有可信平台模块,所述ARM嵌入式系统的运行环境包括安全运行环境和非安全运行环境,所述装置包括:
密钥请求获取模块,用于获取可信计算组织软件栈生成的创建RSA密钥请求,并将所述创建RSA密钥请求存储至所述ARM嵌入式系统的内存中,所述创建RSA密钥请求中包括父密钥、RSA密钥的公钥的长度;
监控模块,用于当所述创建RSA密钥请求有效时,将所述ARM嵌入式系统的运行环境切换至安全运行环境;或者,当所述可信平台模块返回响应消息后,将所述ARM嵌入式系统的运行环境切换至非安全运行环境;
RSA密钥参数创建模块,用于创建RSA密钥参数,所述密钥参数包括:依据两个不同的素数得到的RSA密钥的公钥和RSA密钥的私钥,所述RSA密钥的公钥的摘要值,所述RSA密钥的私钥的长度,以及第一加密参数;所述第一加密参数由所述父密钥对所述公钥的摘要值、所述私钥,以及所述私钥的长度进行加密得到;
发送模块,用于向所述可信平台模块发送创建RSA密钥命令,所述创建RSA密钥命令中包括所创建的RSA密钥参数,以及预先载入所述可信平台模块的父密钥的句柄,RSA密钥的使用授权数据、RSA密钥的迁移授权数据,父密钥的第一口令验证码,以及第一随机数;
RSA密钥生成模块,应用于所述可信平台模块,用于在接收到所述创建RSA密钥命令后,验证所述父密钥的第一口令验证码是否有效,当所述父密钥的第一口令验证码有效时,通过所述父密钥解密所述第一加密参数,得到所述RSA密钥的公钥的摘要值、所述RSA密钥的私钥,以及所述私钥的长度;计算所述RSA密钥的公钥的摘要值;当计算得到的RSA密钥的公钥的摘要值与解密得到的RSA密钥的公钥的摘要值相同时,将所述RSA密钥参数加载至RSA密钥数据块中;如果RSA密钥是不可迁移密钥,则将所述可信平台模块的不可迁移标识标记到所述RSA密钥的迁移授权数据上,并加载至所述RSA密钥数据块中;如果RSA密钥是可迁移密钥,则通过预先建立的特定对象授权会话的共享密钥对RSA密钥的迁移授权数据进行解密,将解密得到的数据加载至所述RSA密钥数据块中;通过预先建立的特定对象授权会话的共享密钥对RSA密钥的使用授权数据进行解密,将得到的RSA密钥的使用授权数据加载至所述RSA密钥数据块中;用所述父密钥对所述公钥的摘要值、所述私钥、所述私钥的长度、所述RSA密钥的迁移授权数据加密得到第二加密参数,将所述第二加密参数加载至所述RSA密钥数据块中;生成第二随机数,将所述第二随机数加载至所述RSA密钥数据块中;生成父密钥的第二口令验证码,将所述父密钥的第二口令验证码加载至所述RSA密钥数据块中;向所述可信计算组织软件栈返回与所述创建RSA密钥命令相对应的响应消息,所述响应消息中携带有所述RSA密钥数据块;
存储模块,将所述响应消息存储至所述ARM嵌入式系统的内存中。
上述装置,优选的,
每一个素数的长度为所述RSA密钥的公钥的长度的一半;
所述RSA密钥的公钥为所述两个不同的素数的乘积;
所述RSA密钥的私钥为所述两个不同素数中的第一素数;
所述私钥的长度为所述第一素数的长度。
通过以上方案可知,本申请提供的一种RSA密钥生成方法及装置,在可信平台模块外部的安全运行环境生成素数等密钥参数,将生成的密钥参数发送给可信平台模块,由可信平台模块根据接收到的密钥参数生成RSA密钥,也就是说,本申请实施例中,将生成密钥所需的高运算量的计算(素性检验计算)转移到可信平台模块外部,从而减轻了可信平台模块的计算负担,缩短了创建RSA密钥的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中创建RSA密钥的实现方式示意图;
图2为本申请实施例提供的创建RSA密钥的实现方式示意图;
图3为本申请实施例提供的RSA密钥生成方法的一种实现流程图;
图4为本申请实施例提供的可信平台模块创建RSA密钥的实现流程图;
图5为本申请实施例提供的RSA密钥生成装置的一种结构示意图。
说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的部分,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示的以外的顺序实施。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更清楚的说明本方案,首先对现有技术中创建RSA密钥的实现方式进行说明,请参阅图1,图1为现有技术中创建RSA密钥的实现方式示意图;
现有技术中,当应用程序需要RSA密钥时,调用可信计算软件栈的创建密钥接口,可信计算软件栈生成创建密钥的请求,并将该创建密钥的请求直接发送给可信平台模块,可信平台模块接收到创建密钥请求后,创建密钥参数,并根据生成的密钥参数创建RSA密钥,将创建的RSA密钥通过可信计算软件栈的创建密钥接口返回给应用程序。
而本方案的基本思想是,利用ARM架构中的TrustZone技术,扩展可信平台模块创建RSA密钥的功能,把创建密钥的部分工作转移到安全运行环境中进行,即利用ARM架构的高性能处理器在安全运行环境下完成创建密钥的部分工作,从而在保证安全性的前提下,提高可信平台模块的运算的执行效率。如图2所示,图2为本申请实施例提供的创建RSA密钥的实现方式示意图;
本申请提供的创建RSA密钥的实现方式为:当应用程序需要RSA密钥时,调用可信计算软件栈的创建密钥接口,可信计算软件栈生成创建RSA密钥请求,将所生成的创建RSA密钥请求存储至ARM嵌入式系统的内存中;监控器审核内存中的创建RSA密钥的请求是否有效,当所创建的RSA密钥有效时,将ARM嵌入式系统的运行环境切换至安全运行环境;ARM嵌入式系统在安全运行环境中创建RSA密钥参数,然后向可信平台模块发送创建RSA密钥参数的命令,可信平台模块接收到创建RSA密钥参数的命令后,创建RSA密钥,并将创建的密钥通过可信计算组织软件栈的创建密钥接口返回内存中,应用程序从内存中获取RSA密钥后,监控器将运行环境切换至非安全运行环境。
下面详细对本方案进行说明,本申请提供的RSA密钥生成方法应用于ARM嵌入式系统,该ARM嵌入式系统的主板上设置有可信平台模块,且所述ARM嵌入式系统的运行环境包括和非安全运行环境,当ARM嵌入式系统运行于安全运行环境时,只能执行受信指令,在非安全运行环境时,可以执行所有指令,其中,所述安全运行环境和非安全运行环境的划分安全运行环境可以通过TrustZone技术实现,具体如何实现属于本领域的公知常识,这里不再赘述。请参看图3,图3为本申请实施例提供的RSA密钥生成方法的一种实现流程图,可以包括:
步骤S31:获取可信计算组织软件栈生成创建RSA密钥请求,并将所述创建RSA密钥请求存储至所述ARM嵌入式系统的内存中,所述创建RSA密钥请求中包括父密钥、RSA密钥的公钥的长度;
本申请实施例中,当可信计算组织软件生成创建RSA密钥请求后,所生成的创建RSA密钥请求不是直接发送给可信平台模块,而是存储至计算的内存中。
步骤S32:当所述创建RSA密钥请求有效时,将所述ARM嵌入式系统的运行环境切换至安全运行环境;
其中,判断所述创建RSA密钥请求是否有效,可以通过数字签名的方式实现,即,在将所述创建RSA密钥请求存储至内存时,对其进行数字签名,然后通过验证数字签名的有效性判断所述创建RSA密钥请求的有效性。
本申请实施例中,当不需要创建RSA密钥时,ARM嵌入式系统运行在非安全模式,当需要创建RSA密钥时,才将ARM嵌入式系统的运行环境切换至安全模式。
步骤S33:创建RSA密钥参数,所述密钥参数包括:两个不同素数,每一个素数的长度,RSA密钥的公钥,所述RSA密钥的公钥的摘要值,RSA密钥的私钥,所述RSA密钥的私钥的长度,以及第一加密参数;所述第一加密参数由所述父密钥对所述公钥的摘要值、所述私钥,以及所述私钥的长度进行加密得到;
本申请实施例中,创建RSA密钥所需的RSA密钥参数是在可信平台模块外部创建的。
其中,两个素数的长度可以相等,都为所述RSA密钥的公钥的长度的一半;所述RSA密钥的公钥为所述两个素数的乘积;所述RSA密钥的私钥为所述两个素数中的第一素数,因此,所述RSA密钥的私钥的长度为第一素数的长度。
步骤S34:向所述可信平台模块发送创建RSA密钥命令,所述创建RSA密钥命令中包括所创建的RSA密钥参数,以及预先载入所述可信平台模块的父密钥的句柄,RSA密钥的使用授权数据、RSA密钥的迁移授权数据,父密钥的第一口令验证码,以及第一随机数;
所述父密钥的句柄用于判断父密钥是否已经载入可行平台模块;RSA密钥的使用授权数据用于检验RSA密钥是否是有效的;而RSA密钥的迁移授权数据用于检验RSA密钥是否是可迁移的;父密钥的第一口令验证码则用于检验父密钥的使用授权是否是有效的。
本申请实施例提供的符合可信平台模块标准的创建RSA密钥命令的一种定义如表1所示:
表1
其中,类型是指可信平台模块标准中定义的数据类型。
所述认证标记用于标记该命令是否需要认证。本申请实施例中,只需要进行一次认证就可以,即父密钥的使用授权数据的认证。
表1中,pubAuth即为父密钥的第一口令验证码,通过HMAC算法获得,具体为:
pubAuth=HMAC(parentKeyAuth;SHA1(1S||2S||3S||4S)||2H1||3H1||4H1)
其中,parentKeyAuth表示父密钥的使用授权数据,该父密钥的使用授权数据由用户创建父密钥时设定,计算父密钥的第一口令验证码时,由用户输入所述父密钥的使用授权数据。“||”表示比特串接;SHA1(1S||2S||3S||4S)表示对1S||2S||3S||4S应用安全散列算法(Secure Hash Algorithm,SHA)加密。本申请实施例中,安全散列算法应用的是SHA-1。
1S、2S、3S、4S、2H1、3H1、4H1为表1中的参数代号,具体在计算时使用参数代号所对应的具体变量(如,与1S对应的具体变量为ordinal,与2S对应的具体变量为dataUsageAuth)的值进行计算。
表1中2H1所对应变量是由可信平台模块在创建特定对象授权会话(OSAP会话)协议时生成的随机数。也就是说,本申请实施例中,可信平台模块与外部预先建立特定对象授权会话。需要说明的是,2H1所对应变量不属于创建RSA密钥命令的一部分,即表1中,2H1所对应信息不会发送给可信平台模块,放在表1中只是为了方便对参数进行说明。
步骤S35:所述可信平台模块创建RSA密钥,其实现流程图如图4所示,可以包括:
步骤S350:验证所述父密钥的第一口令验证码是否有效;
具体的,可以验证表1中的pubAuth的取值是否等于HMAC(parentKeyAuth;SHA1(1S||2S||3S||4S)||2H1||3H1||4H1),如果相等,则说明父密钥的第一口令验证码是有效的,即父密钥的使用授权数据是有效的,证明对方(即发送创建RSA密钥命令的一方)拥有创建RSA密钥的权利;否则,说明父密钥的第一口令验证码是无效的,即父密钥的使用授权数据是无效的,证明对方没有创建RSA密钥的权利。其中parentKeyAuth为父密钥的使用授权数据,可信平台模块根据父密钥句柄查询得到该父密钥的使用授权数据,也就是说,本步骤中所使用的父密钥的使用授权数据是预先载入所述可信平台模块的。
步骤S351:当所述父密钥的第一口令验证码为有效时,通过所述父密钥解密所述第一加密参数,得到所述RSA密钥的公钥的摘要值、所述RSA密钥的私钥,以及所述私钥的长度;
可信平台模块接收到创建RSA密钥的命令后,检查父密钥是否已经载入可信平台模块。
当父密钥已经载入可信平台模块时,检查密钥参数的有效性。具体的,可以包括:验证所述RSA密钥的私钥是否为素数;验证所述RSA密钥的私钥是否能整除RSA密钥的公钥。
需要说明的是,虽然这里需要验证RSA密钥的私钥是否为素数,但是这里只需要验证一次即可,而非现有技术中反复验证随机数是否为素数,因此,与现有技术中可能需要若干次验证相比,大大减少了素数验证的次数。
当父密钥不是存储密钥,或者加密算法为空(即没有设置用父密钥加密RSA密钥的算法),则报错,并不再执行后续步骤。
当父密钥是可迁移的,而RSA密钥是不可迁移的,也报错,并不再执行后续步骤。其中父密钥是否可迁移可以通过父密钥的迁移授权数据中的迁移标记来判断。
步骤S352:计算所述RSA密钥的公钥的摘要值;
本步骤中计算RSA密钥的公钥的摘要值所使用的摘要函数与步骤S13中计算RSA密钥的公钥的摘要值所使用的摘要函数相同。
步骤S353:当计算得到的RSA密钥的公钥的摘要值与解密得到的RSA密钥的公钥的摘要值相同时,将所述RSA密钥参数加载至RSA密钥数据块中;否则,返回参数错误提示,并不再执行后续操作。
步骤S354:如果RSA密钥是不可迁移密钥,则将所述可信平台模块的不可迁移标识标记到所述RSA密钥的迁移授权数据上,即将RSA密钥的迁移授权数据设置为可信平台模块的内部标记数据,并加载至所述RSA密钥数据块中;如果RSA密钥是可迁移密钥,则通过预先建立的特定对象授权会话(OSAP会话)的共享密钥对RSA密钥的迁移授权数据进行解密,将得到的RSA密钥的迁移授权数据加载至所述RSA密钥数据块中;
本申请实施例中,可信平台模块与外部预先建立特定对象授权会话,生成一个共享密钥,并在发送创建RSA密钥命令时,用该共享密钥对RSA密钥的迁移授权数据进行加密,可信平台模块在接收到RSA密钥的迁移授权数据时,通过该特定对象授权会话的共享密钥对RSA密钥的迁移授权数据进行解密。
步骤S355:通过预先建立的特定对象授权会话的共享密钥对RSA密钥的使用授权数据进行解密,将得到的RSA密钥的使用授权数据加载至所述RSA密钥数据块中;
同理,本申请实施例中,在发送创建RSA密钥命令时,应用特定对象授权会话的共享密钥对RSA密钥的使用授权数据加密,可信平台模块在接收到RSA密钥的使用授权数据时,通过该特定对象授权会话的共享密钥对RSA密钥的使用授权数据解密。
步骤S356:用所述父密钥对所述公钥的摘要值、所述私钥、所述私钥的长度、所述RSA密钥的迁移授权数据加密得到第二加密参数,将所述第二加密参数加载至所述RSA密钥数据块中;
其中,所述第二加密参数即为所要创建的RSA密钥。
步骤S357:生成第二随机数,将所述第二随机数加载至所述RSA密钥数据块中;
步骤S358:生成父密钥的第二口令验证码,将所述父密钥的第二口令验证码加载至所述RSA密钥数据块中;
其中,所述第二口令验证码可以通过消息杂凑认证码运算获取,具体为:
resAuth=HMAC(parentKeyAuth;SHA1(1S||2S||3S)||2H1||3H1||4H1),其中,resAuth为父密钥的第二口令验证码;parentKeyAuth表示父密钥的使用授权数据,可信平台模块根据父密钥的句柄查询得到父密钥的使用授权数据;“||”表示比特串接;SHA1(1S||2S||3S)表示对1S||2S||3S应用安全散列算法(Secure Hash Algorithm,SHA)加密。本申请实施例中,安全散列算法应用的是SHA-1。HMAC(a;b||c)表示对参数a,b,c进行消息杂凑认证码运算,具体如何计算属于本领域的公知常识,这里不再赘述。
步骤S359:通过所述可信计算组织软件栈的创建密钥接口向所述可信计算组织软件栈返回与所述创建RSA密钥命令相对应的响应消息,所述响应消息中携带有所述RSA密钥数据块;
本申请实施例提供的与所述创建RSA密钥命令相对应的符合可信平台模块标准的响应消息的一种定义如表2所示:
表2
其中,所述认证标记用于标记该命令是否需要认证,本申请实施例中,只需要进行一次认证就可以,即父密钥的使用授权数据的认证。nonceEven表示第二随机数;nonceOdd表示第一随机数。
需要说明的是,表2中,2S所对应变量不属于响应消息的一部分,即表2中,2S所对应信息不会向外部发送,放在表2中只是为了方便对参数进行说明。
步骤S36:当确定可信平台模块发送的响应消息为有效响应消息时,将所述响应消息存储至所述ARM嵌入式系统的内存中;
优选的,可以通过验证父密钥的第二口令验证码是否有效来确定响应消息是否为有效响应消息。
具体的,可以验证表2中的resAuth的取值是否等于HMAC(parentKeyAuth;SHA1(1S||2S||3S)||2H1||3H1||4H1)来进行验证,如果相等,则说明父密钥的第二口令验证码是有效的,否则说明父密钥的第二口令验证码是无效的。
将所述响应消息存储至ARM嵌入式系统的内存后,应用程序就可以获取响应消息并从相应消息中获取RSA密钥了。
步骤S37:将所述ARM嵌入式系统的运行环境切换至非安全运行环境。
本申请提供的一种RSA密钥生成方法,在可信平台模块外部的安全运行环境生成素数等密钥参数,将生成的密钥参数发送给可信平台模块,由可信平台模块根据接收到的密钥参数生成RSA密钥,也就是说,本申请实施例中,将生成密钥所需的高运算量的计算(素性检验计算)转移到可信平台模块外部,从而减轻了可信平台模块的计算负担,缩短了创建RSA密钥的时间。
其中,所述两个不同的素数的获取方法可以有如下几种方式:
方式一:即时生成策略,即,在所述ARM嵌入式系统的运行环境切换至安全运行环境后,才随机生成两个大素数。更具体的,在所述ARM嵌入式系统的运行环境切换至安全运行环境后,随机生成两个大数,检验这两个数是否都为素数,如果都不是,则再随机生成两个素数,并执行检验随机生成的两个数是否都为素数的步骤;如果只有一个数为素数,则保留该素数,并随机生成一个数,检验该随机生成的数是否为素数,如果是,则确定这两个素数为创建RSA密钥所需要的素数,否则再次随机生成一个数,并执行检验该随机生成的数是否为素数的步骤。
方式二:预生成策略,即在ARM嵌入式系统开机后(即系统启动完成后),随机生成若干对大素数,其中,每个大素数只能用一次;当所述ARM嵌入式系统的运行环境切换至安全运行环境后,所述若干对大素数中随机选择一对大素数作为创建RSA密钥所需要的素数。当预生成的大素数都用完时,可以采用方式一获取两个不同的大素数。本方式中,预先生成的大素数的个数可以采用统计得到经验值,以保证大多数情况下素数是预先生成的。
方式三:缓冲池策略,即,系统创建并维护一个大素数缓冲池,预先随机生成若干个大素数,将所生成的若干个大素数存储至该缓冲池中,当所述ARM嵌入式系统的运行环境切换至安全运行环境后,从缓冲池中随机选取两个大素数作为创建RSA密钥所需的素数。本方式中,当所述缓冲池中大素数的个数小于预设值时,随机生成若干个大素数,并将随机生成的大素数添加至所述缓冲池中,以保证能够持续提供大素数。
在方式二和方式三种,由于大素数是提前产生的,因此,采用方式二和方式三获取大素数能进一步缩短创建RSA密钥的时间。
与方法实施例相对应,本申请还提供一种RSA密钥生成装置,该RSA密钥生成装置应用于ARM嵌入式系统,所述ARM嵌入式系统的主板上设置有可信平台模块,所述ARM嵌入式系统的运行环境包括安全运行环境和非安全运行环境,本申请实施例提供的RSA密钥生成装置的一种结构示意图如图5所示,可以包括:
密钥请求生成模块51,监控模块52,RSA密钥参数创建模块53;发送模块54;RSA密钥生成模块55和存储模块56。
密钥请求获取模块51用于获取可信计算组织软件栈生成的创建RSA密钥请求,并将所述创建RSA密钥请求存储至所述ARM嵌入式系统的内存中,所述创建RSA密钥请求中包括父密钥、RSA密钥的公钥的长度;
监控模块52用于当所述创建RSA密钥请求有效时,将所述ARM嵌入式系统的运行环境切换至安全运行环境;或者,当所述可信平台模块返回响应消息后,将所述ARM嵌入式系统的运行环境切换至非安全运行环境;
RSA密钥参数创建模块53用于创建RSA密钥参数,所述密钥参数包括:依据两个不同的素数得到的RSA密钥的公钥和RSA密钥的私钥,所述RSA密钥的公钥的摘要值,所述RSA密钥的私钥的长度,以及第一加密参数;所述第一加密参数由所述父密钥对所述公钥的摘要值、所述私钥,以及所述私钥的长度进行加密得到;
其中,两个素数的长度可以相等,都为所述RSA密钥的公钥的长度的一半;所述RSA密钥的公钥为所述两个素数的乘积;所述RSA密钥的私钥为所述两个素数中的第一素数,因此,所述RSA密钥的私钥的长度为第一素数的长度。
发送模块54用于向所述可信平台模块发送创建RSA密钥命令,所述创建RSA密钥命令中包括所创建的RSA密钥参数,以及预先载入所述可信平台模块的父密钥的句柄,RSA密钥的使用授权数据、RSA密钥的迁移授权数据,父密钥的第一口令验证码,以及第一随机数;
RSA密钥生成模块55应用于所述可信平台模块,用于在接收到所述创建RSA密钥命令后,验证所述父密钥的第一口令验证码是否有效,当所述父密钥的第一口令验证码有效时,通过所述父密钥解密所述第一加密参数,得到所述RSA密钥的公钥的摘要值、所述RSA密钥的私钥,以及所述私钥的长度;计算所述RSA密钥的公钥的摘要值;当计算得到的RSA密钥的公钥的摘要值与解密得到的RSA密钥的公钥的摘要值相同时,将所述RSA密钥参数加载至RSA密钥数据块中;如果RSA密钥是不可迁移密钥,则将所述可信平台模块的不可迁移标识标记到所述RSA密钥的迁移授权数据上,并加载至所述RSA密钥数据块中;如果RSA密钥是可迁移密钥,则通过预先建立的特定对象授权会话的共享密钥对RSA密钥的迁移授权数据进行解密,将解密得到的数据加载至所述RSA密钥数据块中;通过预先建立的特定对象授权会话的共享密钥对RSA密钥的使用授权数据进行解密,将得到的RSA密钥的使用授权数据加载至所述RSA密钥数据块中;用所述父密钥对所述公钥的摘要值、所述私钥、所述私钥的长度、所述RSA密钥的迁移授权数据加密得到第二加密参数,将所述第二加密参数加载至所述RSA密钥数据块中;生成第二随机数,将所述第二随机数加载至所述RSA密钥数据块中;生成父密钥的第二口令验证码,将所述父密钥的第二口令验证码加载至所述RSA密钥数据块中;向所述可信计算组织软件栈返回与所述创建RSA密钥命令相对应的响应消息,所述响应消息中携带有所述RSA密钥数据块;
存储模块56将所述响应消息存储至所述ARM嵌入式系统的内存中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种RSA密钥生成方法,应用于ARM嵌入式系统,所述ARM嵌入式系统的主板上设置有可信平台模块,其特征在于,所述ARM嵌入式系统的运行环境包括安全运行环境和非安全运行环境,所述方法包括:
获取可信计算组织软件栈生成创建RSA密钥请求,并将所述创建RSA密钥请求存储至所述ARM嵌入式系统的内存中,所述创建RSA密钥请求中包括父密钥、RSA密钥的公钥的长度;
当所述创建RSA密钥请求有效时,将所述ARM嵌入式系统的运行环境切换至安全运行环境;
创建RSA密钥参数,所述密钥参数包括:依据两个不同素数得到的RSA密钥的公钥和RSA密钥的私钥,所述RSA密钥的公钥的摘要值,所述RSA密钥的私钥的长度,以及第一加密参数;所述第一加密参数由所述父密钥对所述公钥的摘要值、所述私钥,以及所述私钥的长度进行加密得到;
向所述可信平台模块发送创建RSA密钥命令,所述创建RSA密钥命令中包括所创建的RSA密钥参数,以及预先载入所述可信平台模块的父密钥的句柄,RSA密钥的使用授权数据、RSA密钥的迁移授权数据,父密钥的第一口令验证码,以及第一随机数;
所述可信平台模块创建RSA密钥,包括:
验证所述父密钥的第一口令验证码是否有效;
当所述父密钥的第一口令验证码有效时,通过所述父密钥解密所述第一加密参数,得到所述RSA密钥的公钥的摘要值、所述RSA密钥的私钥,以及所述私钥的长度;
计算所述RSA密钥的公钥的摘要值;
当计算得到的RSA密钥的公钥的摘要值与解密得到的RSA密钥的公钥的摘要值相同时,将所述RSA密钥参数加载至RSA密钥数据块中;
如果RSA密钥是不可迁移密钥,则将所述可信平台模块的不可迁移标识标记到所述RSA密钥的迁移授权数据上,并加载至所述RSA密钥数据块中;如果RSA密钥是可迁移密钥,则通过预先建立的特定对象授权会话的共享密钥对RSA密钥的迁移授权数据进行解密,将解密得到的数据加载至所述RSA密钥数据块中;
通过预先建立的特定对象授权会话的共享密钥对RSA密钥的使用授权数据进行解密,将得到的RSA密钥的使用授权数据加载至所述RSA密钥数据块中;
用所述父密钥对所述公钥的摘要值、所述私钥、所述私钥的长度、所述RSA密钥的迁移授权数据加密得到第二加密参数,将所述第二加密参数加载至所述RSA密钥数据块中;
生成第二随机数,并将所述第二随机数加载至所述RSA密钥数据块中;
生成父密钥的第二口令验证码,将所述父密钥的第二口令验证码加载至所述RSA密钥数据块中;
通过所述可信计算组织软件栈的创建密钥接口向所述可信计算组织软件栈返回与所述创建RSA密钥命令相对应的响应消息,所述响应消息中携带有所述RSA密钥数据块;
将所述响应消息存储至所述ARM嵌入式系统的内存中;
将所述ARM嵌入式系统的运行环境切换到非安全运行环境。
2.根据权利要求1所述的方法,其特征在于,
每一个素数的长度为所述RSA密钥的公钥的长度的一半;
所述RSA密钥的公钥为所述两个不同的素数的乘积;
所述RSA密钥的私钥为所述两个不同素数中的第一素数;
所述RSA密钥的私钥的长度为所述第一素数的长度。
3.根据权利要求1或2所述的方法,其特征在于,所述两个不同的素数通过如下方法获取:
所述ARM嵌入式系统的运行环境切换至安全运行环境后,随机生成两个大素数。
4.根据权利要求1或2所述的方法,其特征在于,所述两个不同的素数通过如下方法获取:
在所述ARM嵌入式系统开机后,随机生成若干对大素数,其中每对大素数只能用一次;
当所述ARM嵌入式系统的运行环境切换至安全运行环境后,从所述若干对大素数中选择一对大素数。
5.根据权利要求4所述的方法,其特征在于,在所述若干对大素数都用完后,当需要大素数时,随机生成两个大素数。
6.根据权利要求1或2所述的方法,其特征在于,所述两个不同的素数通过如下方法获取:
预先随机生成若干对大素数,并将所述若干对大素数存储至缓冲池中,其中,每对大素数只能用一次;
当所述ARM嵌入式系统的运行环境切换至安全运行环境后,从所述缓冲池中随机选择一对大素数。
7.根据权利要求6所述的方法,其特征在于,当所述缓冲池中大素数的对数小于预设值时,随机生成若干对大素数,并将随机生成的大素数对添加至所述缓冲池中。
8.一种RSA密钥生成装置,应用于ARM嵌入式系统,所述ARM嵌入式系统的主板上设置有可信平台模块,其特征在于,所述ARM嵌入式系统的运行环境包括安全运行环境和非安全运行环境,所述装置包括:
密钥请求获取模块,用于获取可信计算组织软件栈生成的创建RSA密钥请求,并将所述创建RSA密钥请求存储至所述ARM嵌入式系统的内存中,所述创建RSA密钥请求中包括父密钥、RSA密钥的公钥的长度;
监控模块,用于当所述创建RSA密钥请求有效时,将所述ARM嵌入式系统的运行环境切换至安全运行环境;或者,当所述可信平台模块返回响应消息后,将所述ARM嵌入式系统的运行环境切换至非安全运行环境;
RSA密钥参数创建模块,用于创建RSA密钥参数,所述密钥参数包括:依据两个不同的素数得到的RSA密钥的公钥和RSA密钥的私钥,所述RSA密钥的公钥的摘要值,所述RSA密钥的私钥的长度,以及第一加密参数;所述第一加密参数由所述父密钥对所述公钥的摘要值、所述私钥,以及所述私钥的长度进行加密得到;
发送模块,用于向所述可信平台模块发送创建RSA密钥命令,所述创建RSA密钥命令中包括所创建的RSA密钥参数,以及预先载入所述可信平台模块的父密钥的句柄,RSA密钥的使用授权数据、RSA密钥的迁移授权数据,父密钥的第一口令验证码,以及第一随机数;
RSA密钥生成模块,应用于所述可信平台模块,用于在接收到所述创建RSA密钥命令后,验证所述父密钥的第一口令验证码是否有效,当所述父密钥的第一口令验证码有效时,通过所述父密钥解密所述第一加密参数,得到所述RSA密钥的公钥的摘要值、所述RSA密钥的私钥,以及所述私钥的长度;计算所述RSA密钥的公钥的摘要值;当计算得到的RSA密钥的公钥的摘要值与解密得到的RSA密钥的公钥的摘要值相同时,将所述RSA密钥参数加载至RSA密钥数据块中;如果RSA密钥是不可迁移密钥,则将所述可信平台模块的不可迁移标识标记到所述RSA密钥的迁移授权数据上,并加载至所述RSA密钥数据块中;如果RSA密钥是可迁移密钥,则通过预先建立的特定对象授权会话的共享密钥对RSA密钥的迁移授权数据进行解密,将解密得到的数据加载至所述RSA密钥数据块中;通过预先建立的特定对象授权会话的共享密钥对RSA密钥的使用授权数据进行解密,将得到的RSA密钥的使用授权数据加载至所述RSA密钥数据块中;用所述父密钥对所述公钥的摘要值、所述私钥、所述私钥的长度、所述RSA密钥的迁移授权数据加密得到第二加密参数,将所述第二加密参数加载至所述RSA密钥数据块中;生成第二随机数,将所述第二随机数加载至所述RSA密钥数据块中;生成父密钥的第二口令验证码,将所述父密钥的第二口令验证码加载至所述RSA密钥数据块中;向所述可信计算组织软件栈返回与所述创建RSA密钥命令相对应的响应消息,所述响应消息中携带有所述RSA密钥数据块;
存储模块,将所述响应消息存储至所述ARM嵌入式系统的内存中。
9.根据权利要求8所述的装置,其特征在于,
每一个素数的长度为所述RSA密钥的公钥的长度的一半;
所述RSA密钥的公钥为所述两个不同的素数的乘积;
所述RSA密钥的私钥为所述两个不同素数中的第一素数;
所述私钥的长度为所述第一素数的长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410092851.3A CN103812648B (zh) | 2014-03-13 | 2014-03-13 | Rsa密钥生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410092851.3A CN103812648B (zh) | 2014-03-13 | 2014-03-13 | Rsa密钥生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103812648A true CN103812648A (zh) | 2014-05-21 |
CN103812648B CN103812648B (zh) | 2017-03-22 |
Family
ID=50708897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410092851.3A Active CN103812648B (zh) | 2014-03-13 | 2014-03-13 | Rsa密钥生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103812648B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230595A (zh) * | 2016-07-21 | 2016-12-14 | 北京可信华泰信息技术有限公司 | 一种可信平台控制模块的授权协议 |
CN107579815A (zh) * | 2017-08-18 | 2018-01-12 | 福州瑞芯微电子股份有限公司 | 一种安全烧写密钥的方法及其装置 |
CN108055128A (zh) * | 2017-12-18 | 2018-05-18 | 数安时代科技股份有限公司 | Rsa密钥的生成方法、装置、存储介质及计算机设备 |
CN109462474A (zh) * | 2018-11-14 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种Keystone中Fernet密钥的生成方法及相关装置 |
CN110932843A (zh) * | 2019-11-19 | 2020-03-27 | 湖北工业大学 | 一种嵌入式系统数据通讯加密方法 |
CN113411287A (zh) * | 2020-03-16 | 2021-09-17 | 阿里巴巴集团控股有限公司 | 密钥管理系统、方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060155988A1 (en) * | 2005-01-07 | 2006-07-13 | Microsoft Corporation | Systems and methods for securely booting a computer with a trusted processing module |
CN101369889A (zh) * | 2007-08-13 | 2009-02-18 | 深圳兆日技术有限公司 | 一种对文档进行电子签名的系统和方法 |
CN102355351A (zh) * | 2011-07-21 | 2012-02-15 | 华为技术有限公司 | 一种基于可信计算的密钥生成、备份和迁移方法及系统 |
-
2014
- 2014-03-13 CN CN201410092851.3A patent/CN103812648B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060155988A1 (en) * | 2005-01-07 | 2006-07-13 | Microsoft Corporation | Systems and methods for securely booting a computer with a trusted processing module |
CN101369889A (zh) * | 2007-08-13 | 2009-02-18 | 深圳兆日技术有限公司 | 一种对文档进行电子签名的系统和方法 |
CN102355351A (zh) * | 2011-07-21 | 2012-02-15 | 华为技术有限公司 | 一种基于可信计算的密钥生成、备份和迁移方法及系统 |
Non-Patent Citations (1)
Title |
---|
TRUSTED COMPUTING GROUP: "TPM Main Part 1 Design Principles", 《TPM MAIN PART 1 DESIGN PRINCIPLES SPECIFICATION VERSION 1.2》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230595A (zh) * | 2016-07-21 | 2016-12-14 | 北京可信华泰信息技术有限公司 | 一种可信平台控制模块的授权协议 |
CN106230595B (zh) * | 2016-07-21 | 2019-09-03 | 北京可信华泰信息技术有限公司 | 一种可信平台控制模块的授权协议 |
CN107579815A (zh) * | 2017-08-18 | 2018-01-12 | 福州瑞芯微电子股份有限公司 | 一种安全烧写密钥的方法及其装置 |
CN108055128A (zh) * | 2017-12-18 | 2018-05-18 | 数安时代科技股份有限公司 | Rsa密钥的生成方法、装置、存储介质及计算机设备 |
CN108055128B (zh) * | 2017-12-18 | 2021-11-19 | 数安时代科技股份有限公司 | Rsa密钥的生成方法、装置、存储介质及计算机设备 |
CN109462474A (zh) * | 2018-11-14 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种Keystone中Fernet密钥的生成方法及相关装置 |
CN110932843A (zh) * | 2019-11-19 | 2020-03-27 | 湖北工业大学 | 一种嵌入式系统数据通讯加密方法 |
CN110932843B (zh) * | 2019-11-19 | 2022-04-29 | 湖北工业大学 | 一种嵌入式系统数据通讯加密方法 |
CN113411287A (zh) * | 2020-03-16 | 2021-09-17 | 阿里巴巴集团控股有限公司 | 密钥管理系统、方法、装置及设备 |
CN113411287B (zh) * | 2020-03-16 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 密钥管理系统、方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103812648B (zh) | 2017-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10142107B2 (en) | Token binding using trust module protected keys | |
CN109313690B (zh) | 自包含的加密引导策略验证 | |
CN107085675B (zh) | 受控安全代码验证 | |
TWI450556B (zh) | 外部通信實體可認證的裝置及方法 | |
JP5710075B2 (ja) | 証明書の検証 | |
US20190052622A1 (en) | Device and method certificate generation | |
US11601268B2 (en) | Device attestation including attestation-key modification following boot event | |
CN103812648A (zh) | Rsa密钥生成方法及装置 | |
CN103138939B (zh) | 云存储模式下基于可信平台模块的密钥使用次数管理方法 | |
CN110874478B (zh) | 密钥处理方法及装置、存储介质和处理器 | |
US20140258736A1 (en) | Systems and Methods for Maintaining Integrity and Secrecy in Untrusted Computing Platforms | |
CN103888251A (zh) | 一种云环境中虚拟机可信保障的方法 | |
CA2402351A1 (en) | Encryption in a secure computerized gaming system | |
CN103236931B (zh) | 一种基于tpm的身份验证方法及系统以及相关设备 | |
CN110874494B (zh) | 密码运算处理方法、装置、系统及度量信任链构建方法 | |
CN109951276B (zh) | 基于tpm的嵌入式设备远程身份认证方法 | |
RU2003112729A (ru) | Способы дистанционного изменения пароля связи | |
CN106790045B (zh) | 一种基于云环境分布式虚拟机代理装置及数据完整性保障方法 | |
CN103269271A (zh) | 一种备份电子签名令牌中私钥的方法和系统 | |
CN104794394A (zh) | 一种虚拟机启动校验的方法及装置 | |
Das et al. | DPaSE: distributed password-authenticated symmetric-key encryption, or how to get many keys from one password | |
JP2018117185A (ja) | 情報処理装置、情報処理方法 | |
CN115664655A (zh) | 一种tee可信认证方法、装置、设备及介质 | |
US8954728B1 (en) | Generation of exfiltration-resilient cryptographic keys | |
CN102270285B (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 |