数据防泄漏方法及计算机可读存储介质与流程

文档序号:17479507发布日期:2019-04-20 06:20阅读:179来源:国知局
数据防泄漏方法及计算机可读存储介质与流程

本发明涉及数据安全技术领域,尤其涉及一种数据防泄漏方法及计算机可读存储介质。



背景技术:

现有的普通flash对数据的防护比较弱,很容易通过工具将存储在里面的数据拷贝出来,如果数据是明文形式存在的话数据就泄漏了。如果使用专用的安全flash又增加了硬件成本,且保护的仅仅是静态情况下的数据,程序运行起来之后加载到普通内存里面的数据又有可能被恶意程序窥探到,从而导致数据的泄漏。



技术实现要素:

本发明所要解决的技术问题是:提供一种数据防泄漏方法及计算机可读存储介质,可有效防止数据从静态存储到动态运行时的泄露。

为了解决上述技术问题,本发明采用的技术方案为:一种基于trustzone的数据防泄漏方法,包括:

使用加密密钥对待加密的明文数据进行加密,得到密文数据;

根据所述密文数据,得到预设格式的数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据;

根据所述数据块和所述签名数据,得到混合数据;

将所述加密密钥注入至熔丝区域;

安全操作系统启动后,配置安全存储区域;

安全操作系统获取所述混合数据,并使用可信启动公钥对所述混合数据进行签名验证;

若验证通过,则从熔丝区域获取加密密钥;

解析所述混合数据,使用所述加密密钥对混合数据的数据块中的密文数据进行解密,得到明文数据,并将所述明文数据存储至所述安全存储区域。

本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。

本发明的有益效果在于:通过把需要保护的数据用密码技术进行处理产生一个格式化的混合数据文件,在运行时通过trustzone权限配置部分普通的内存区域为可信区域独享安全存储区域,并通过密码技术把数据解析到对应的安全存储区域,这样非可信环境下的程序无法窥探到安全内存的数据,只能通过间接请求trustzone的可信环境下的数据进行使用,确保整个过程数据无法泄漏出去。本发明可在不需要使用专用安全flash或者专用安全ram的情况下,有效防止数据在静态存储到动态运行时的泄露。

附图说明

图1为本发明一种基于trustzone的数据防泄漏方法的流程图;

图2为本发明实施例一的方法流程图;

图3为本发明实施例二的加密过程示意图;

图4为本发明实施例二的解密过程示意图;

图5为本发明实施例二的混合数据的格式示意图;

图6为本发明实施例三的嵌入式设备启动流程示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。

本发明最关键的构思在于:通过加密和签名验证,确保静态数据的私密性和完整性,运行之后通过在可信环境下进行解密并将数据保存在安全内存,来确保数据无法被泄漏。

请参阅图1,一种基于trustzone的数据防泄漏方法,包括:

使用加密密钥对待加密的明文数据进行加密,得到密文数据;

根据所述密文数据,得到预设格式的数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据;

根据所述数据块和所述签名数据,得到混合数据;

将所述加密密钥注入至熔丝区域;

安全操作系统启动后,配置安全存储区域;

安全操作系统获取所述混合数据,并使用可信启动公钥对所述混合数据进行签名验证;

若验证通过,则从熔丝区域获取加密密钥;

解析所述混合数据,使用所述加密密钥对混合数据的数据块中的密文数据进行解密,得到明文数据,并将所述明文数据存储至所述安全存储区域。

从上述描述可知,本发明的有益效果在于:可在不需要使用专用安全flash或者专用安全ram的情况下,有效防止数据在静态存储到动态运行时的泄露。

进一步地,所述“使用加密密钥对待加密的明文数据进行加密,得到密文数据;根据所述密文数据,得到预设格式的数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据”具体为:

通过随机数生成器生成加密密钥,所述加密密钥包括第一密钥和第二密钥;

使用所述第一密钥对待加密的明文数据进行加密,得到密文数据;

使用所述第二密钥对所述第一密钥进行加密,得到加密后的第一密钥;

根据预设的格式合成所述密文数据和加密后的第一密钥,得到数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据。

由上述描述可知,通过双重密钥进行加密,进一步保证了数据安全性。

进一步地,所述“将所述加密密钥注入至熔丝区域”具体为:

将所述第二密钥通过密钥注入工具注入至熔丝区域。

由上述描述可知,熔丝区域具有烧录之后硬件不可篡改的特性,而且熔丝区域一般只有trustzone的安全操作系统才能访问使用,普通操作系统无法访问,进一步确保了加密密钥的安全性。

进一步地,所述安全存储区域包括第一内存块和第二内存块;

所述“从熔丝区域获取加密密钥;解析所述混合数据,使用所述加密密钥对混合数据的数据块中的密文数据进行解密,得到明文数据,并将所述明文数据存储至所述安全存储区域”具体为:

安全操作系统从熔丝区域获取第二密钥;

解析所述混合数据的数据块,得到密文数据和加密后的第一密钥;

使用所述第二密钥对所述加密后的第一密钥进行解密,得到第一密钥,并将所述第一密钥存储至第二内存块;

使用所述第一密钥对所述密文数据进行解密,得到明文数据,并将所述明文数据存储至第一内存块。

由上述描述可知,将明文数据和第一密钥都保存至安全存储区域,保证运行时数据和密钥的安全性。

进一步地,所述“将所述明文数据存储至第一内存块”之后,进一步包括:

清空释放所述第二内存块。

由上述描述可知,密文数据解密为明文数据后,就不需要第一密钥,因此可把存放第一密钥的第二内存块先清空之后再释放掉,节约安全存储区域的空间。

进一步地,所述“将所述加密密钥注入至熔丝区域”之后,进一步包括:

将可信启动公钥通过密钥注入工具注入至熔丝区域;

将所述混合数据通过烧录工具保存至flash区域。

由上述描述可知,将可信启动公钥也注入至熔丝区域,确保了可信启动公钥的安全性;混合数据由于已经经过加密处理,因此可以直接保存在flash区域。

进一步地,所述“安全操作系统获取所述混合数据,并使用可信启动公钥对所述混合数据进行签名验证”具体为:

安全操作系统获取可信启动公钥;

使用所述可信启动公钥对所述混合数据中的签名数据进行解密,得到第一摘要;

对所述混合数据中的数据块进行摘要运算,得到第二摘要值;

若所述第一摘要值与所述第二摘要值一致,则判定验证通过。

由上述描述可知,通过进行签名验证,确保混合数据的合法性和完整性。

本发明还提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。

实施例一

请参照图2,本发明的实施例一为:一种基于trustzone的数据防泄漏方法,所述方法基于armtrustzone硬件架构、otp熔丝区域、片上不可篡改rom区域等硬件技术,trustzone技术是arm处理器上的一种可信区域技术,该技术可以把处理器上的硬件资源和软件资源划分成两个运行环境:可信环境和非可信环境。可信环境下运行一个安全操作系统,非可信环境下运行一个普通操作系统。

所述方法包括如下步骤:

s1:使用加密密钥对待加密的明文数据进行加密,得到密文数据;

s2:根据所述密文数据,得到预设格式的数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据;具体地,先对数据块进行摘要运算,再使用可信启动私钥对摘要值进行加密,即得到签名数据。

s3:根据所述数据块和所述签名数据,得到混合数据;例如,合成数据块和签名数据,即得到混合数据。

s4:将所述加密密钥注入至熔丝区域;具体地,通过密钥注入工具注入至熔丝区域;进一步地,将可信启动公钥也通过密钥注入工具注入至熔丝区域,混合数据可以通过烧录工具保存至flash区域。

熔丝区域具有烧录之后硬件不可篡改的特性(非熔丝区域烧录之后可以进行修改,存储在里面的密钥会被替换掉),而且熔丝区域一般只有trustzone的安全操作系统才能访问使用,普通操作系统无法访问,进一步确保了加密密钥的安全性。

s5:安全操作系统启动后,配置安全存储区域;具体地,trustzone可以通过tzasc(地址空间控制器)配置某个地址区域具有特定的安全访问权限,这样就可以把某块普通内存区域配置为只能在可信环境下进行访问,非可信环境下无法访问。

s6:安全操作系统获取所述混合数据,并使用可信启动公钥对所述混合数据进行签名验证,判断是否验证通过,若是,则执行步骤s7,若否,则验证失败,则不对混合数据进行解析。

具体地,安全操作系统从熔丝区域获取可信启动公钥,从flash区域获取混合数据;使用所述可信启动公钥对所述混合数据中的签名数据进行解密,得到第一摘要;对所述混合数据中的数据块进行摘要运算,得到第二摘要值;若所述第一摘要值与所述第二摘要值一致,则判定验证通过,否则判定验证不通过。

s7:从熔丝区域获取加密密钥;

s8:解析所述混合数据,使用所述加密密钥对混合数据的数据块中的密文数据进行解密,得到明文数据,并将所述明文数据存储至所述安全存储区域。

本实施例利用armtrustzone的硬件特性,在不需要使用专用安全flash或者专用安全ram的情况下,使用普通flash和普通的ram就可以实现从静态存储到动态运行时的整个重要数据的数据防泄漏方法。被保护的数据可以是任何数据,比如用于非安全世界的数据加密密钥,非安全世界请求数据加密时,通过命令参数发送消息给安全世界,在安全世界里面进行数据加密操作并输出结果给非安全世界,整个加密过程都是在安全世界进行处理的,从而防止了加密密钥数据的泄漏。

实施例二

本实施例是对实施例一的进一步拓展,本实施例中,所述加密密钥包括第一密钥和第二密钥。

请参照图3,对于步骤s1-s3,在pc端通过随机数生成器生成第一密钥和第二密钥,然后使用所述第一密钥对待加密的明文数据进行加密,得到密文数据,使用所述第二密钥对所述第一密钥进行加密,得到加密后的第一密钥;接着根据预设的格式合成所述密文数据和加密后的第一密钥,得到数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据;最后根据所述数据块和所述签名数据,得到混合数据。混合数据最终以二进制文件的形式存储下来。

对于步骤s4,第二密钥在生产制造的时候通过密钥注入工具注入嵌入式设备的otp熔丝区域进行存储,混合数据在生产制造的时候通过烧录工具存入嵌入式设备的flash的相应区域。

本实施例中,步骤s5中的安全存储区域包括第一内存块和第二内存块。

请参照图4,对于步骤s6-s8,安全操作系统从熔丝区域获取可信启动公钥和第二密钥;先用可信启动公钥对混合数据进行签名验证,验证通过过,解析所述混合数据的数据块,得到密文数据和加密后的第一密钥;使用从熔丝区域获取的第二密钥对加密后的第一密钥进行解密,得到第一密钥,并将所述第一密钥存储至第二内存块;使用解密得到的第一密钥对密文数据进行解密,得到明文数据,并将所述明文数据存储至第一内存块。

进一步地,密文数据解密为明文数据后,就不需要第一密钥,因此可把存放第一密钥的第二内存块先清空之后再释放掉。

进一步地,上述的加密算法、解密算法可采用aes加解密算法。

进一步地,混合数据的格式可如图5所示,包括文件头部信息、标志、数据信息、第一密钥信息、签名信息、密文数据、第一密钥密文和签名数据。

其中文件头部信息字段包括一个标识文件身份的魔数(一个固定的数字常量)及文件版本号。标志字段标识该文件是否包含相应的数据块,本实施例中的标志字段包括数据占位符、第一密钥占位符和签名占位符,如果对应占位符上的标志被打开(比如对应的比特位置1为打开)则表示接下来会有对应的数据块信息数据字段,比如数据占位符标志被打开,则接下来的字段会包含数据信息字段,目前这三个占位符标志都需要打开,所以接下来字段会包含数据信息字段、第一密钥信息字段和签名信息字段。数据信息字段包括类型、偏移和长度,类型表明该字段对应下面的那块数据块内容,这里对应的类型是密文数据,偏移表示密文数据的数据块相对整个混合数据文件的偏移地址,长度表示密文数据的数据块的长度。第一密钥信息和签名信息和数据信息的内容类似,这里不再详述。也就是说,数据信息、第一密钥信息、签名信息相当于密文数据、第一密钥密文和签名数据的索引,可根据这些信息在混合数据文件中定位具体的密文数据、第一密钥密文和签名数据。

密文数据是具体的加完密的数据块,存放的位置按数据信息里面指定的偏移和长度进行存放。第一密钥密文是具体的加完密的第一密钥的数据块。签名数据是从文件头部信息开始到第一密钥密文结束的全部数据(即步骤s2中的数据块)进行单向安全散列(如sha算法)计算得到的摘要值,再用可信启动私钥进行加密之后得到的数据。其中,由于签名信息字段的长度是固定的,类型、偏移、长度分配的区域是固定的,因此可以预留该字段的存储空间,等签名数据计算出来之后再把偏移和长度数据写入对应的签名信息字段存储空间。

本实施例中,通过双重密钥进行加密,进一步保证了数据安全性,同时,增加了混合数据中的信息,通过提高混合数据的破解难度从而进一步防止数据泄露。

实施例三

本实施例是上述实施例的进一步拓展。

本实施例中,嵌入式设备的启动流程使用了可信启动技术,即启动过程中每一阶段被加载的程序或系统在加载运行之前都进行了签名校验,如果校验通过则运行,否则拒绝执行,不基于该技术,如果嵌入式系统被刷入恶意固件,就可以获得保存在otp熔丝区域密钥的使用权,从而进行密文数据的解密,导致数据泄漏。

整个设备上电启动之后每一阶段签名校验成功启动的流程如图6所示:

①加载校验并启动片上不可篡改rom区域的可信根程序;

②加载校验并启动第一级引导加载程序;

③加载校验并启动安全操作系统;

④安全操作系统分配两块内存块为可信区域独享(分别用来存储解密完的第一密钥和明文数据);

⑤安全操作系统加载校验混合数据;

⑥安全操作系统运行数据解密模块,即实施例二中的数据解密部分,整个解密过程均在嵌入式设备的可信区域进行的;

⑦将第一密钥和明文数据分别保存到安全内存中的两块内存块;

⑧清空存放第一密钥的内存块并释放该内存块;

⑨加载校验并启动第二级引导加载程序;

⑩加载校验并启动普通操作系统。

这样数据无论是存储在flash中,还是最终加载到安全内存中,都无法通过非授权方式进行访问,从而防止了数据泄漏的风险。

实施例四

本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:

使用加密密钥对待加密的明文数据进行加密,得到密文数据;

根据所述密文数据,得到预设格式的数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据;

根据所述数据块和所述签名数据,得到混合数据;

将所述加密密钥注入至熔丝区域;

安全操作系统启动后,配置安全存储区域;

安全操作系统获取所述混合数据,并使用可信启动公钥对所述混合数据进行签名验证;

若验证通过,则从熔丝区域获取加密密钥;

解析所述混合数据,使用所述加密密钥对混合数据的数据块中的密文数据进行解密,得到明文数据,并将所述明文数据存储至所述安全存储区域。

进一步地,所述“使用加密密钥对待加密的明文数据进行加密,得到密文数据;根据所述密文数据,得到预设格式的数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据”具体为:

通过随机数生成器生成加密密钥,所述加密密钥包括第一密钥和第二密钥;

使用所述第一密钥对待加密的明文数据进行加密,得到密文数据;

使用所述第二密钥对所述第一密钥进行加密,得到加密后的第一密钥;

根据预设的格式合成所述密文数据和加密后的第一密钥,得到数据块,并使用可信启动私钥对所述数据块进行签名,得到签名数据。

进一步地,所述“将所述加密密钥注入至熔丝区域”具体为:

将所述第二密钥通过密钥注入工具注入至熔丝区域。

进一步地,所述安全存储区域包括第一内存块和第二内存块;

所述“从熔丝区域获取加密密钥;解析所述混合数据,使用所述加密密钥对混合数据的数据块中的密文数据进行解密,得到明文数据,并将所述明文数据存储至所述安全存储区域”具体为:

安全操作系统从熔丝区域获取第二密钥;

解析所述混合数据的数据块,得到密文数据和加密后的第一密钥;

使用所述第二密钥对所述加密后的第一密钥进行解密,得到第一密钥,并将所述第一密钥存储至第二内存块;

使用所述第一密钥对所述密文数据进行解密,得到明文数据,并将所述明文数据存储至第一内存块。

进一步地,所述“将所述明文数据存储至第一内存块”之后,进一步包括:

清空释放所述第二内存块。

进一步地,所述“将所述加密密钥注入至熔丝区域”之后,进一步包括:

将可信启动公钥通过密钥注入工具注入至熔丝区域;

将所述混合数据通过烧录工具保存至flash区域。

进一步地,所述“安全操作系统获取所述混合数据,并使用可信启动公钥对所述混合数据进行签名验证”具体为:

安全操作系统获取可信启动公钥;

使用所述可信启动公钥对所述混合数据中的签名数据进行解密,得到第一摘要;

对所述混合数据中的数据块进行摘要运算,得到第二摘要值;

若所述第一摘要值与所述第二摘要值一致,则判定验证通过。

综上所述,本发明提供的一种数据防泄漏方法及计算机可读存储介质,通过把需要保护的数据用密码技术进行处理产生一个格式化的混合数据文件,在运行时通过trustzone权限配置部分普通的内存区域为可信区域独享安全存储区域,并通过密码技术把数据解析到对应的安全存储区域,这样非可信环境下的程序无法窥探到安全内存的数据,只能通过间接请求trustzone的可信环境下的数据进行使用,确保整个过程数据无法泄漏出去;通过双重密钥进行加密,进一步保证了数据安全性;通过将加密密钥保存到熔丝区域,进一步确保了加密密钥的安全性;本发明可在不需要使用专用安全flash或者专用安全ram的情况下,有效防止数据在静态存储到动态运行时的泄露。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1