内核运行时的完整性校验方法及计算机可读存储介质技术

技术编号:21116216 阅读:43 留言:0更新日期:2019-05-16 09:07
本发明专利技术公开了一种内核运行时的完整性校验方法及计算机可读存储介质,方法包括:获取内核文件中的第一字段的数据和第二字段的数据,并分别对其进行单向散列计算,得到第一散列值和第二散列值;安全操作系统运行后,将两个散列值存储至安全内存区域;普通操作系统将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;安全操作系统定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的两个散列值,分别对其进行完整性校验。本发明专利技术可对运行后的内核数据进行完整性校验,确保在内核相应区域被篡改时可以及时发现并采取相应安全策略。

Integrity Checking Method for Kernel Runtime and Computer Readable Storage Media

【技术实现步骤摘要】
内核运行时的完整性校验方法及计算机可读存储介质
本专利技术涉及数据安全
,尤其涉及一种内核运行时的完整性校验方法及计算机可读存储介质。
技术介绍
现在一般的方案都可以提供内核的静态完整性校验,比如可信启动技术,即在启动过程中每一阶段被加载的模块(比如内核)在加载运行之前都进行了安全校验,如果校验通过则运行,否则拒绝执行。但是对内核运行之后却没有进一步进行防护。例如,在公开号为CN106250760A的中国专利公开文件中,提出了一种基于TPM2.0芯片的U-Boot可信启动方法,所述方法利用TPM2.0芯片的硬件特性,收集U-Boot加载驱动程序的完整性信息,并在内核加载运行前校验驱动程序及内核文件的完整性,为可信嵌入式设备的内核文件及驱动程序完整性校验过程提供保护和隔离,嵌入式系统在启动过程中将核心驱动文件的度量值扩展至TPM2.0芯片中的PCR中,在嵌入式设备内核加载时刻,校验驱动程序及内核文件的完整性,保证只有在驱动程序及内核文件未遭受篡改的情况下才可正常启动系统。该方案只是在启动加载内核之前对内核数据进行完整性校验,确保运行之前内核数据是没有被篡改过的,内核运行后却无法确保安全性。
技术实现思路
本专利技术所要解决的技术问题是:提供一种内核运行时的完整性校验方法及计算机可读存储介质,可对运行后的内核代码段和可读数据段进行完整性校验,确保安全性。为了解决上述技术问题,本专利技术采用的技术方案为:一种基于trustzone的内核运行时的完整性校验方法,包括:获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域;普通操作系统将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;安全操作系统根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。本专利技术还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域;普通操作系统将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;安全操作系统根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。本专利技术的有益效果在于:先计算得到内核数据的散列值并存储至安全内存区域,然后在内核运行时,定时从普通内存区域中获取内存数据,并根据安全内存区域中的散列值对其进行校验,从而实现对运行后的内核代码段和可读数据段进行完整性校验的目的,有效在内核运行之后,对内核数据进行防护。本专利技术在基于trustzone的硬件架构基础上和在静态完整性校验的基础上,进一步对运行后的内核代码段和可读数据段进行完整性校验,确保在内核相应区域被篡改时可以及时发现并采取相应安全策略。附图说明图1为本专利技术一种基于trustzone的内核运行时的完整性校验方法的流程图;图2为本专利技术实施例一的方法流程图;图3为本专利技术实施例二的分块示意图;图4为本专利技术实施例二的单向安全散列函数的示意图。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图详予说明。本专利技术最关键的构思在于:在内核运行时,定时从普通内存区域中获取内存数据,并根据预先计算并保存在安全内存区域的散列值对其进行校验。请参阅图1,一种基于trustzone的内核运行时的完整性校验方法,包括:获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域;普通操作系统将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;安全操作系统根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。从上述描述可知,本专利技术的有益效果在于:对运行后的内核代码段和可读数据段进行完整性校验,确保在内核相应区域被篡改时可以及时发现并采取相应安全策略。进一步地,所述“安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域”之前,进一步包括:使用可信启动私钥对所述第一散列值和第二散列值进行签名,并将签名得到的数字签名与所述第一散列值和第二散列值进行组合,得到组合数据。进一步地,所述“安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域”具体为:安全操作系统运行后,将所述组合数据存储至安全内存区域;使用可信启动公钥对所述组合数据进行签名验证;若验证通过,则将第一散列值和第二散列值分别存储至安全内存区域。由上述描述可知,对散列值进行签名验证,防止其在存入安全内存区域之前被篡改,保证其安全性。进一步地,对所述第一字段的数据进行单向散列计算,得到第一散列值的步骤具体为:根据预设的块大小,将第一字段的数据划分为多个数据块;计算得到第一个数据块的散列值;对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;根据最后一个数据块的散列值,得到第一散列值。进一步地,根据安全内存区域中的第一散列值,对所获取的第一字段的数据进行完整性校验的步骤具体为:根据预设的块大小,将所获取的第一字段的数据划分为多个数据块;计算得到第一个数据块的散列值;对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;根据最后一个数据的散列值,得到第三散列值;将所述第三散列值与安全存储区域中的第一散列值进行对比;若一致,则判定普通内存区域中的第一字段的数据安全;若不一致,则执行预设的安全决策。由上述描述可知,通过分块单向散列计算得到散列值,进一步提高了校验的准确性,从而提高了内核防护的安全性。本专利技术还提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;安全操作系统运行后,将第一散列值和第二散列值分别存本文档来自技高网
...

【技术保护点】
1.一种基于trustzone的内核运行时的完整性校验方法,其特征在于,包括:获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域;普通操作系统将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;安全操作系统根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。

【技术特征摘要】
1.一种基于trustzone的内核运行时的完整性校验方法,其特征在于,包括:获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域;普通操作系统将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;安全操作系统根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。2.根据权利要求1所述的基于trustzone的内核运行时的完整性校验方法,其特征在于,所述“安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域”之前,进一步包括:使用可信启动私钥对所述第一散列值和第二散列值进行签名,并将签名得到的数字签名与所述第一散列值和第二散列值进行组合,得到组合数据。3.根据权利要求2所述的基于trustzone的内核运行时的完整性校验方法,其特征在于,所述“安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域”具体为:安全操作系统运行后,将所述组合数据存储至安全内存区域;使用可信启动公钥对所述组合数据进行签名验证;若验证通过,则将第一散列值和第二散列值分别存储至安全内存区域。4.根据权利要求1所述的基于trustzone的内核运行时的完整性校验方法,其特征在于,对所述第一字段的数据进行单向散列计算,得到第一散列值的步骤具体为:根据预设的块大小,将第一字段的数据划分为多个数据块;计算得到第一个数据块的散列值;对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;根据最后一个数据块的散列值,得到第一散列值。5.根据权利要求4所述的基于trustzone的内核运行时的完整性校验方法,其特征在于,根据安全内存区域中的第一散列值,对所获取的第一字段的数据进行完整性校验的步骤具体为:根据预设的块大小,将所获取的第一字段的数据划分为多个数据块;计算得到第一个数据块的散列值;对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;根据最后一个数据的散列值,得到第三散列值;将所述第三散列值与安全存储区域中的第一散列值进行对比;若一致,则判定普通内存区域中...

【专利技术属性】
技术研发人员:赵国开涂岩恺刘炯钟池炜宾
申请(专利权)人:厦门雅迅网络股份有限公司
类型:发明
国别省市:福建,35

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

1