一种基于TPM的软件密钥保护方法技术

技术编号:23449619 阅读:202 留言:0更新日期:2020-02-28 22:56
本发明专利技术公开了一种基于TPM的软件密钥保护方法,包括密钥的生成,密钥的加密存储,密钥的使用和密钥的恢复,密钥的生成:当应用软件需要生成密钥时,首先要求用户输入一个用户密码,并记住这个密码,用这个密码和盐通过PBKDF2算法生成密钥种子,盐的值为固定单词“mnemonic”之后使用HASH算法用种子生成用户密钥(USERKEY),这时候生成密用户密钥还是一个明文密钥,在后面加密后处理,需删除这个明文密钥,通过用户密码生成加密密钥方法是为了能在密钥丢失后可以恢复密钥。有益效果:本发明专利技术的这种方法可以安全的保护密钥,并且软件开发方便,通用性高。

A software key protection method based on TPM

【技术实现步骤摘要】
一种基于TPM的软件密钥保护方法
本专利技术涉及信息安全
,具体来说,涉及一种基于TPM的软件密钥保护方法。
技术介绍
一些应用软件因安全需求,需要使用密码算法来保护自身的安全或保护其他文件数据不被非法读取,但几乎所有的软件应用都面临一个问题,即如何安全的保存密钥,应用软件只能将密钥保存在磁盘等通用的存储介质上,攻击者很容易读磁盘的方式将密钥窃取到密钥。另一方面,随着数字货币的兴起,很多人开始关注和拥有数字货币资产,数字货币都是匿名的,是通过密码学原理来确认货币拥有着,谁拥有对应货币地址的私钥,谁就可以支配这些数字货币资产。目前大部分的数字钱包都是将密钥以明文形式存储在本地,很容易被黑客破解,从而窃取数字货币资产。没有实际的硬件安全设备支持,软件始终无法解决密钥保护的问题,使用一些专用的安全设备不仅会增加成本,软件也必须根据硬件做针对性开发,与硬件绑定,软硬件开发周期长,而且通用性差,如何保护软件密钥是一个需要解决问题。针对相关技术中的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术的目的在于现在很多计算机出厂的时候都带有可信平台模块(TPM/TPCM),TPM/TPCM是一种安全模块,可信计算通过芯片厂家植入在可信硬件中的算法和秘钥,以及集成的专用微控制器对系统和应用进行度量、验证来确保平台可信。可信芯片的安全等级一般都达到EAL4+安全等级,芯片自身被破解可能性极低,并且因可信平台模块在计算机上多有预装,有操作系统底层支持,软件容易访问和使用可信平台模块,因此我们提出一种使用TPM保护密钥的方法,其特点是通过计算机或嵌入式系统上内置的TPM模块,利用TPM模块保护软件密钥,以解决上述
技术介绍
中提出的问题。为实现上述目的,本专利技术提供如下技术方案:一种基于TPM的软件密钥保护方法,包括密钥的生成,密钥的加密存储,密钥的使用和密钥的恢复。进一步的,密钥的生成:当应用软件需要生成密钥时,首先要求用户输入一个用户密码,并记住这个密码,用这个密码和盐通过PBKDF2算法生成密钥种子,盐的值为固定单词“mnemonic”之后使用HASH算法用种子生成用户密钥(USERKEY),这时候生成密用户密钥还是一个明文密钥,在后面加密后处理,需删除这个明文密钥,通过用户密码生成加密密钥方法是为了能在密钥丢失后可以恢复密钥。进一步的,密钥的加密存储:TPM调用TPM_INIT执行初始化工作,之后执行TPM2_STARTUP启动该TPM,执行TPM自检命令TPM2_SELFTESTFULL,检查TPM是否正常工作,如果TPM不正常,则向系统程序返回错误码,系统发送警告信息给用户,执行TPM2_CREATPRMARY命令建立TPM主密钥(SRK),执行TPM2_Create命令生成加密密钥(VMK),生成的密钥类型选择storage,密码类型为AES,密钥迁移性类型为可迁移密钥,父密钥为SRK,执行TPM2_LOAD装载VMK,并使用TPM2_EVICTCONTROL做持久化存储。进一步的,执行TPM2_ENCRYPTDECRYPT使用VMK加密用户密钥,得到加密后的密钥数据UserKey.encrypted,删除用户密钥,加密后的密钥数据可以保存在磁盘上。进一步的,密钥的使用:当应用软件需要使用密钥加解密数据时,使用TPM模块,通过执行命令TPM2_ENCRYPTDECRYPT解密UserKey.encrypted,解出用户密钥USERKEY,软件加载USERKEY完成数据加解密。进一步的,密钥的恢复:当用户密钥加密数据UserKey.encrypted丢失或被删除时,重新执行密钥生成,密钥加密存储步骤。与现有技术相比,本专利技术具有以下有益效果:本专利技术的这种方法可以安全的保护密钥,并且软件开发方便,通用性高。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例的一种基于TPM的软件密钥保护方法的密钥生成流程示意图;图2是根据本专利技术实施例的一种基于TPM的软件密钥保护方法的密钥加密存储流程示意图;图3是根据本专利技术实施例的一种基于TPM的软件密钥保护方法的密钥使用流程示意图。具体实施方式下面,结合附图以及具体实施方式,对专利技术做出进一步的描述:请参阅图1-3,根据本专利技术实施例的一种基于TPM的软件密钥保护方法,包括密钥的生成,密钥的加密存储,密钥的使用和密钥的恢复。请参阅图1,密钥的生成:当应用软件需要生成密钥时,首先要求用户输入一个用户密码,并记住这个密码,用这个密码和盐通过PBKDF2算法生成密钥种子,盐的值为固定单词“mnemonic”之后使用HASH算法用种子生成用户密钥(USERKEY),这时候生成密用户密钥还是一个明文密钥,在后面加密后处理,需删除这个明文密钥,通过用户密码生成加密密钥方法是为了能在密钥丢失后可以恢复密钥。请参阅图2,密钥的加密存储:TPM调用TPM_INIT执行初始化工作,之后执行TPM2_STARTUP启动该TPM,执行TPM自检命令TPM2_SELFTESTFULL,检查TPM是否正常工作,如果TPM不正常,则向系统程序返回错误码,系统发送警告信息给用户,执行TPM2_CREATPRMARY命令建立TPM主密钥(SRK),执行TPM2_Create命令生成加密密钥(VMK),生成的密钥类型选择storage,密码类型为AES,密钥迁移性类型为可迁移密钥,父密钥为SRK,执行TPM2_LOAD装载VMK,并使用TPM2_EVICTCONTROL做持久化存储。执行TPM2_ENCRYPTDECRYPT使用VMK加密用户密钥,得到加密后的密钥数据UserKey.encrypted,删除用户密钥,加密后的密钥数据可以保存在磁盘上,因为数据是加密的所以安全性可以得到保障。请参阅图3,密钥的使用:当应用软件需要使用密钥加解密数据时,使用TPM模块,通过执行命令TPM2_ENCRYPTDECRYPT解密UserKey.encrypted,解出用户密钥USERKEY,软件加载USERKEY完成数据加解密。请参阅图1-2,密钥的恢复:当用户密钥加密数据UserKey.encrypted丢失或被删除时,重新执行密钥生成,密钥加密存储步骤。最后应说明的是:以上所述仅为本专利技术的优选实施例而已,并不用于限定本专利技术,尽管参照前述实施例对本专利技术进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本专利技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本专利技术的保护范围之内。本文档来自技高网
...

【技术保护点】
1.一种基于TPM的软件密钥保护方法,其特征在于,包括密钥的生成,密钥的加密存储,密钥的使用和密钥的恢复。/n

【技术特征摘要】
1.一种基于TPM的软件密钥保护方法,其特征在于,包括密钥的生成,密钥的加密存储,密钥的使用和密钥的恢复。


2.根据权利要求1所述的一种基于TPM的软件密钥保护方法,其特征在于,密钥的生成:当应用软件需要生成密钥时,首先要求用户输入一个用户密码,并记住这个密码,用这个密码和盐通过PBKDF2算法生成密钥种子,盐的值为固定单词“mnemonic”之后使用HASH算法用种子生成用户密钥(USERKEY),这时候生成密用户密钥还是一个明文密钥,在后面加密后处理,需删除这个明文密钥,通过用户密码生成加密密钥方法是为了能在密钥丢失后可以恢复密钥。


3.根据权利要求1所述的一种基于TPM的软件密钥保护方法,其特征在于,密钥的加密存储:TPM调用TPM_INIT执行初始化工作,之后执行TPM2_STARTUP启动该TPM,执行TPM自检命令TPM2_SELFTESTFULL,检查TPM是否正常工作,如果TPM不正常,则向系统程序返回错误码,系统发送警告信息给用户,执行TPM2_CREATPRMARY命令建立TPM主密钥(SRK),执行TPM2_Create...

【专利技术属性】
技术研发人员:周强孙群李珏莹
申请(专利权)人:上海思赞博微信息科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1