CN109753788B - 内核运行时的完整性校验方法及计算机可读存储介质 - Google Patents

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

Info

Publication number
CN109753788B
CN109753788B CN201711070322.3A CN201711070322A CN109753788B CN 109753788 B CN109753788 B CN 109753788B CN 201711070322 A CN201711070322 A CN 201711070322A CN 109753788 B CN109753788 B CN 109753788B
Authority
CN
China
Prior art keywords
hash value
data
field
memory area
operating system
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.)
Active
Application number
CN201711070322.3A
Other languages
English (en)
Other versions
CN109753788A (zh
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.)
Xiamen Yaxon Networks Co Ltd
Original Assignee
Xiamen Yaxon Networks 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 Xiamen Yaxon Networks Co Ltd filed Critical Xiamen Yaxon Networks Co Ltd
Priority to CN201711070322.3A priority Critical patent/CN109753788B/zh
Publication of CN109753788A publication Critical patent/CN109753788A/zh
Application granted granted Critical
Publication of CN109753788B publication Critical patent/CN109753788B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

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

Description

内核运行时的完整性校验方法及计算机可读存储介质
技术领域
本发明涉及数据安全技术领域,尤其涉及一种内核运行时的完整性校验方法及计算机可读存储介质。
背景技术
现在一般的方案都可以提供内核的静态完整性校验,比如可信启动技术,即在启动过程中每一阶段被加载的模块(比如内核)在加载运行之前都进行了安全校验,如果校验通过则运行,否则拒绝执行。但是对内核运行之后却没有进一步进行防护。
例如,在公开号为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字段;
分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;
安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域;
普通操作系统将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;
安全操作系统根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。
进一步地,所述“安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域”之前,进一步包括:
使用可信启动私钥对所述第一散列值和第二散列值进行签名,并将签名得到的数字签名与所述第一散列值和第二散列值进行组合,得到组合数据。
进一步地,所述“安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域”具体为:
安全操作系统运行后,将所述组合数据存储至安全内存区域;
使用可信启动公钥对所述组合数据进行签名验证;
若验证通过,则将第一散列值和第二散列值分别存储至安全内存区域。
进一步地,对所述第一字段的数据进行单向散列计算,得到第一散列值的步骤具体为:
根据预设的块大小,将第一字段的数据划分为多个数据块;
计算得到第一个数据块的散列值;
对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;
根据最后一个数据块的散列值,得到第一散列值。
进一步地,根据安全内存区域中的第一散列值,对所获取的第一字段的数据进行完整性校验的步骤具体为:
根据预设的块大小,将所获取的第一字段的数据划分为多个数据块;
计算得到第一个数据块的散列值;
对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;
根据最后一个数据的散列值,得到第三散列值;
将所述第三散列值与安全存储区域中的第一散列值进行对比;
若一致,则判定普通内存区域中的第一字段的数据安全;
若不一致,则执行预设的安全决策。
实施例一
请参照图2,本发明的实施例一为:一种基于trustzone的内核运行时的完整性校验方法;本方法基于下述条件:(1)要有trustzone硬件架构;(2)在安全区域即trustzone区域上运行安全操作系统,而非安全区域运行普通操作系统(如linux/android或者其他操作系统),也即本方法需要防护的对象;(3)所有的镜像数据在运行之前都已经通过静态的完整性校验,在这里使用可信启动技术进行校验。否则对一个已经被注入恶意程序的内核再进行运行时完整性校验没有意义。
整个静态完整性校验的顺序是:可信根程序->第一级加载程序->安全操作系统程序->第二级加载程序->非安全操作系统程序。箭头方向表示软件组件启动的顺序,启动过程需要基于可信启动技术(启动过程中每一阶段被加载的组件在加载运行之前都进行了签名校验,如果校验通过则运行,否则拒绝执行)。
如图2所示,本方法包括如下步骤:
S1:获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;
S2:分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;
S3:使用可信启动私钥对所述第一散列值和第二散列值进行签名,并将签名得到的数字签名与所述第一散列值和第二散列值进行组合,得到组合数据。
即在PC端把编译生成的原始内核elf(可执行文件格式)文件中的.text字段提取出来进行单向安全散列计算得到一个.text的散列值,同样把内核elf文件中的.rodata字段提取出来进行单向安全散列计算得到一个.rodata的散列值,再把两个散列值使用可信启动私钥进行签名,最终组合成“.text散列值+.rodata散列值+数字签名”的组合数据。
将可信启动公钥在生产的时候通过密钥注入工具注入至嵌入式设备的OTP熔丝区域,所述组合数据同样在生产制造的时候通过烧录工具存入Flash的相应区域。
S4:安全操作系统运行后,将所述组合数据存储至安全内存区域,即将Flash区域中的组合数据拷贝到安全内存区域。
S5:使用可信启动公钥对所述组合数据进行签名验证,判断验证是否通过,若是,则执行步骤S6,若否,则执行步骤S11。具体地,将组合数据解析成第一散列值、第二散列值和数字签名,使用可信启动公钥对所述数字签名进行解密,得到第一摘要和第二摘要,若第一摘要与第一散列值一致且第二摘要与第二散列值一致,则判定验证通过。
S6:将第一散列值和第二散列值分别存储至安全内存区域。之后,安全操作系统等待非安全操作系统,即普通操作系统还回一个消息,并把控制权交给后面的启动程序(第二级加载程序)。
S7:普通操作系统将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;即非安全内核的解压程序在将原始内核的.text和rodata等相关数据解压到普通内存之后,需要发送一条信息给安全内核的告诉其.text和rodata在普通内存中的起始地址和对应的长度,之后在跳到对应的.text去执行。
S8:安全操作系统将所述起始地址和对应的长度存储至安全内存区域;
S9:安全操作系统根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。即安全内核循环对非安全内核在普通内存中的.text和rodata数据分时进行完整性校验。
S10:判断校验是否通过,若是,则表示非安全内核对应的.text数据和rodata数据没有被篡改,若否,则表示非安全内核对应的.text数据和rodata数据被篡改了,执行步骤S11。具体地,分别对所获取的第一字段的数据和第二字段的数据进行单向散列计算,得到第三散列值和第四散列值,若第三散列值与第一散列值一致且第四散列值与第二散列值一致,则校验通过,否则校验不通过。
S11:执行预设的安全决策,例如重启普通操作系统。
进一步地,在步骤S6后,若安全操作系统超过预设的时间未接收到普通操作系统发送的消息,即等待超时,则执行步骤S11。
进一步地,安全操作系统运行后可创建一个针对非安全内核运行时的监控任务,由监控任务执行步骤S4-S6以及步骤S8-S11。
本实施例在基于trustzone的硬件架构基础上和在静态完整性校验的基础上,进一步对运行后的内核代码段和可读数据段进行完整性校验,确保在内核相应区域被篡改时可以及时发现并采取相应安全策略。
实施例二
本实施例是对实施例一的进一步拓展。
在步骤S2中,分别对所述第一字段的数据和第二字段的数据进行分块单向散列计算,得到第一散列值和第二散列值。
本实施例以第一字段的数据为例进行说明。如图3所示,根据预设的块大小,将第一字段的数据划分为多个数据块;例如每块的大小为4K,假设.text数据的大小有1M,则可以分成256块;若最后的数据不足4K,比如最后一块只有2K,也按一块来算。
然后计算得到第一个数据块的散列值;对接下去的每个数据块,对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;即第i个数据块的散列值是由第i个数据块的数据和第i-1个数据块的散列值进行单向安全散列计算得到的,直到计算得到最后一个数据块的散列值。根据最后一个数据块的散列值,得到第一散列值,即将最后一个数据块的散列值作为第一字段的数据的散列值。
上述步骤可如图4所示,假设第一字段的数据总共划分为N块,其中单向安全散列函数的输入为:一块.text数据块(按顺序进行,比如这次是数据块i,下次就是数据块i+1)+上一次函数计算输出的散列值(第一次从第一块开始计算.text块时,没有这一项输入)。每次计算得到的散列值则作为下一次函数的一个输入值,直到完成所有N块的.text块的计算得到最终的.text整个数据块的散列值。
对于步骤S9-S10中,对获取的第一字段的数据也进行分块单向散列计算,得到第三散列值;即安全操作系统需要启动一个定时器在每个预设的时间间隔T到来时,使用上述的分块单向散列算法计算.text数据的散列值。然后将计算得到的.text数据的散列值与安全存储区域中的.text数据的散列值进行对比,若一致,则非安全内核对应的.text数据没有被篡改,否则对应内存的数据就被篡改了需要做出相关安全决策,比如重启普通操作系统。
第二字段的数据,即.rodata数据以同样的方式进行散列计算和校验确认。
进一步地,在每个时间间隔T到来之后,串行进行,先进行.text数据的校验,再进行.rodata数据的校验;可以不需要再额外分配定时器,且如果其中一个校验失败,另外一个不需要再进行校验,从而简化设计。
本实施例通过分块单向散列计算得到散列值,进一步提高了校验的准确性,从而提高了内核防护的安全性。
实施例三
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;
分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;
安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域;
普通操作系统将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作系统;
安全操作系统根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。
进一步地,所述“安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域”之前,进一步包括:
使用可信启动私钥对所述第一散列值和第二散列值进行签名,并将签名得到的数字签名与所述第一散列值和第二散列值进行组合,得到组合数据。
进一步地,所述“安全操作系统运行后,将第一散列值和第二散列值分别存储至安全内存区域”具体为:
安全操作系统运行后,将所述组合数据存储至安全内存区域;
使用可信启动公钥对所述组合数据进行签名验证;
若验证通过,则将第一散列值和第二散列值分别存储至安全内存区域。
进一步地,对所述第一字段的数据进行单向散列计算,得到第一散列值的步骤具体为:
根据预设的块大小,将第一字段的数据划分为多个数据块;
计算得到第一个数据块的散列值;
对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;
根据最后一个数据块的散列值,得到第一散列值。
进一步地,根据安全内存区域中的第一散列值,对所获取的第一字段的数据进行完整性校验的步骤具体为:
根据预设的块大小,将所获取的第一字段的数据划分为多个数据块;
计算得到第一个数据块的散列值;
对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;
根据最后一个数据的散列值,得到第三散列值;
将所述第三散列值与安全存储区域中的第一散列值进行对比;
若一致,则判定普通内存区域中的第一字段的数据安全;
若不一致,则执行预设的安全决策。
综上所述,本发明提供的一种内核运行时的完整性校验方法及计算机可读存储介质,先计算得到内核数据的散列值并存储至安全内存区域,然后在内核运行时,定时从普通内存区域中获取内存数据,并根据安全内存区域中的散列值对其进行校验,从而实现对运行后的内核代码段和可读数据段进行完整性校验的目的,有效在内核运行之后,对内核数据进行防护。本发明在基于trustzone的硬件架构基础上和在静态完整性校验的基础上,进一步对运行后的内核代码段和可读数据段进行完整性校验,确保在内核相应区域被篡改时可以及时发现并采取相应安全策略。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (6)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711070322.3A CN109753788B (zh) 2017-11-03 2017-11-03 内核运行时的完整性校验方法及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711070322.3A CN109753788B (zh) 2017-11-03 2017-11-03 内核运行时的完整性校验方法及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109753788A CN109753788A (zh) 2019-05-14
CN109753788B true CN109753788B (zh) 2024-04-19

Family

ID=66398692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711070322.3A Active CN109753788B (zh) 2017-11-03 2017-11-03 内核运行时的完整性校验方法及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109753788B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112115522B (zh) * 2020-09-27 2023-10-20 成都中科合迅科技有限公司 利用散列算法实现数据的可信存储的方法
CN112394683B (zh) * 2020-11-24 2022-03-11 桂林电子科技大学 一种利用工控系统的文件传输方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279712A (zh) * 2013-05-28 2013-09-04 华为技术有限公司 增强系统安全性的方法、校验装置及安全系统
CN105022954A (zh) * 2015-07-07 2015-11-04 中国人民解放军国防科学技术大学 飞腾cpu上三态操作系统安全内核服务动态运行方法
CN106909835A (zh) * 2016-12-28 2017-06-30 中软信息系统工程有限公司 一种基于cpu时空隔离机制实现内核完整性度量的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102183852B1 (ko) * 2013-11-22 2020-11-30 삼성전자주식회사 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279712A (zh) * 2013-05-28 2013-09-04 华为技术有限公司 增强系统安全性的方法、校验装置及安全系统
CN105022954A (zh) * 2015-07-07 2015-11-04 中国人民解放军国防科学技术大学 飞腾cpu上三态操作系统安全内核服务动态运行方法
CN106909835A (zh) * 2016-12-28 2017-06-30 中软信息系统工程有限公司 一种基于cpu时空隔离机制实现内核完整性度量的方法

Also Published As

Publication number Publication date
CN109753788A (zh) 2019-05-14

Similar Documents

Publication Publication Date Title
CN108399339B (zh) 一种基于安全芯片的可信启动方法
US11093258B2 (en) Method for trusted booting of PLC based on measurement mechanism
US9530004B2 (en) Secure boot method, semiconductor device and recording medium
US20160275019A1 (en) Method and apparatus for protecting dynamic libraries
US11604881B2 (en) Verification of a provisioned state of a platform
JP2007525774A (ja) ランタイム・セキュリティ保証用の自律型メモリ・チェッカ
US20160098555A1 (en) Program code attestation circuitry, a data processing apparatus including such program code attestation circuitry and a program attestation method
US10803176B2 (en) Bios security
CN112699419A (zh) 安全执行可延伸固件应用程序的方法及计算器设备
CN110674494B (zh) 进程的保护方法、系统及数据处理方法
CN112651030A (zh) 一种面向bmc固件系统安全的可信启动方法
CN111095200A (zh) 嵌入式程序的安全升级方法、装置、设备及存储介质
CN109753788B (zh) 内核运行时的完整性校验方法及计算机可读存储介质
CN112511306A (zh) 一种基于混合信任模型的安全运行环境构建方法
Dhobi et al. Secure firmware update over the air using trustzone
CN109491716B (zh) 启动方法及装置、程序存储方法及装置
CN107924440B (zh) 用于管理容器的方法、系统和计算机可读介质
US20210073397A1 (en) Computing device and method for operating same
KR101482700B1 (ko) 해시를 이용한 프로그램의 무결성 검증 방법
CN114547618A (zh) 基于Linux系统的安全启动方法、装置、电子设备及存储介质
US11657157B2 (en) Secure boot system, method and apparatus
CN114995894A (zh) 操作系统的启动控制方法、终端设备及可读存储介质
Lin et al. Using TPM to improve boot security at BIOS layer
CN114282205A (zh) 固件启动方法及装置、计算机可读存储介质
CN114764347A (zh) 一种多核控制器的程序校验系统、校验方法及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant