CN109753788A - 内核运行时的完整性校验方法及计算机可读存储介质 - Google Patents
内核运行时的完整性校验方法及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109753788A CN109753788A CN201711070322.3A CN201711070322A CN109753788A CN 109753788 A CN109753788 A CN 109753788A CN 201711070322 A CN201711070322 A CN 201711070322A CN 109753788 A CN109753788 A CN 109753788A
- Authority
- CN
- China
- Prior art keywords
- hashed value
- data
- field
- memory region
- secure
- 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
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000012795 verification Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 3
- 230000003068 static effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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 (10)
1.一种基于trustzone的内核运行时的完整性校验方法,其特征在于,包括:
获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;
分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;
安全操作***运行后,将第一散列值和第二散列值分别存储至安全内存区域;
普通操作***将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作***;
安全操作***根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。
2.根据权利要求1所述的基于trustzone的内核运行时的完整性校验方法,其特征在于,所述“安全操作***运行后,将第一散列值和第二散列值分别存储至安全内存区域”之前,进一步包括:
使用可信启动私钥对所述第一散列值和第二散列值进行签名,并将签名得到的数字签名与所述第一散列值和第二散列值进行组合,得到组合数据。
3.根据权利要求2所述的基于trustzone的内核运行时的完整性校验方法,其特征在于,所述“安全操作***运行后,将第一散列值和第二散列值分别存储至安全内存区域”具体为:
安全操作***运行后,将所述组合数据存储至安全内存区域;
使用可信启动公钥对所述组合数据进行签名验证;
若验证通过,则将第一散列值和第二散列值分别存储至安全内存区域。
4.根据权利要求1所述的基于trustzone的内核运行时的完整性校验方法,其特征在于,对所述第一字段的数据进行单向散列计算,得到第一散列值的步骤具体为:
根据预设的块大小,将第一字段的数据划分为多个数据块;
计算得到第一个数据块的散列值;
对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;
根据最后一个数据块的散列值,得到第一散列值。
5.根据权利要求4所述的基于trustzone的内核运行时的完整性校验方法,其特征在于,根据安全内存区域中的第一散列值,对所获取的第一字段的数据进行完整性校验的步骤具体为:
根据预设的块大小,将所获取的第一字段的数据划分为多个数据块;
计算得到第一个数据块的散列值;
对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;
根据最后一个数据的散列值,得到第三散列值;
将所述第三散列值与安全存储区域中的第一散列值进行对比;
若一致,则判定普通内存区域中的第一字段的数据安全;
若不一致,则执行预设的安全决策。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现以下步骤:
获取内核文件中的第一字段的数据和第二字段的数据,所述第一字段为.text字段,所述第二字段为.rodata字段;
分别对所述第一字段的数据和第二字段的数据进行单向散列计算,得到第一散列值和第二散列值;
安全操作***运行后,将第一散列值和第二散列值分别存储至安全内存区域;
普通操作***将内核文件解压到普通内存区域,并将第一字段的数据和第二字段的数据在普通内存区域中的起始地址以及对应的长度发送至安全操作***;
安全操作***根据所述起始地址和对应的长度,定时从普通内存区域获取第一字段的数据和第二字段的数据,并根据安全内存区域中的第一散列值和第二散列值,分别对所获取的第一字段的数据和第二字段的数据进行完整性校验。
7.根据权利要求6所述的计算机可读存储介质,其特征在于,所述“安全操作***运行后,将第一散列值和第二散列值分别存储至安全内存区域”之前,进一步包括:
使用可信启动私钥对所述第一散列值和第二散列值进行签名,并将签名得到的数字签名与所述第一散列值和第二散列值进行组合,得到组合数据。
8.根据权利要求7所述的计算机可读存储介质,其特征在于,所述“安全操作***运行后,将第一散列值和第二散列值分别存储至安全内存区域”具体为:
安全操作***运行后,将所述组合数据存储至安全内存区域;
使用可信启动公钥对所述组合数据进行签名验证;
若验证通过,则将第一散列值和第二散列值分别存储至安全内存区域。
9.根据权利要求6所述的计算机可读存储介质,其特征在于,对所述第一字段的数据进行单向散列计算,得到第一散列值的步骤具体为:
根据预设的块大小,将第一字段的数据划分为多个数据块;
计算得到第一个数据块的散列值;
对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;
根据最后一个数据块的散列值,得到第一散列值。
10.根据权利要求9所述的计算机可读存储介质,其特征在于,根据安全内存区域中的第一散列值,对所获取的第一字段的数据进行完整性校验的步骤具体为:
根据预设的块大小,将所获取的第一字段的数据划分为多个数据块;
计算得到第一个数据块的散列值;
对当前数据块和上一个数据块的散列值进行单向散列计算,得到当前数据块的散列值;
根据最后一个数据的散列值,得到第三散列值;
将所述第三散列值与安全存储区域中的第一散列值进行对比;
若一致,则判定普通内存区域中的第一字段的数据安全;
若不一致,则执行预设的安全决策。
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 true CN109753788A (zh) | 2019-05-14 |
CN109753788B 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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115522A (zh) * | 2020-09-27 | 2020-12-22 | 成都中科合迅科技有限公司 | 利用散列算法实现数据的可信存储的方法 |
CN112394683A (zh) * | 2020-11-24 | 2021-02-23 | 桂林电子科技大学 | 一种利用工控***的文件传输方法 |
WO2024109236A1 (zh) * | 2022-11-21 | 2024-05-30 | 苏州元脑智能科技有限公司 | 元数据校验方法、***、计算机设备及非易失性可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279712A (zh) * | 2013-05-28 | 2013-09-04 | 华为技术有限公司 | 增强***安全性的方法、校验装置及安全*** |
US20150150127A1 (en) * | 2013-11-22 | 2015-05-28 | Samsung Electronics Co., Ltd. | Method of verifying integrity of electronic device, storage medium, and electronic device |
CN105022954A (zh) * | 2015-07-07 | 2015-11-04 | 中国人民解放军国防科学技术大学 | 飞腾cpu上三态操作***安全内核服务动态运行方法 |
CN106909835A (zh) * | 2016-12-28 | 2017-06-30 | 中软信息***工程有限公司 | 一种基于cpu时空隔离机制实现内核完整性度量的方法 |
-
2017
- 2017-11-03 CN CN201711070322.3A patent/CN109753788B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279712A (zh) * | 2013-05-28 | 2013-09-04 | 华为技术有限公司 | 增强***安全性的方法、校验装置及安全*** |
US20150150127A1 (en) * | 2013-11-22 | 2015-05-28 | Samsung Electronics Co., Ltd. | Method of verifying integrity of electronic device, storage medium, and electronic device |
CN105022954A (zh) * | 2015-07-07 | 2015-11-04 | 中国人民解放军国防科学技术大学 | 飞腾cpu上三态操作***安全内核服务动态运行方法 |
CN106909835A (zh) * | 2016-12-28 | 2017-06-30 | 中软信息***工程有限公司 | 一种基于cpu时空隔离机制实现内核完整性度量的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115522A (zh) * | 2020-09-27 | 2020-12-22 | 成都中科合迅科技有限公司 | 利用散列算法实现数据的可信存储的方法 |
CN112115522B (zh) * | 2020-09-27 | 2023-10-20 | 成都中科合迅科技有限公司 | 利用散列算法实现数据的可信存储的方法 |
CN112394683A (zh) * | 2020-11-24 | 2021-02-23 | 桂林电子科技大学 | 一种利用工控***的文件传输方法 |
CN112394683B (zh) * | 2020-11-24 | 2022-03-11 | 桂林电子科技大学 | 一种利用工控***的文件传输方法 |
WO2024109236A1 (zh) * | 2022-11-21 | 2024-05-30 | 苏州元脑智能科技有限公司 | 元数据校验方法、***、计算机设备及非易失性可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109753788B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104156659B (zh) | 一种嵌入式***的安全启动方法 | |
CN104424008B (zh) | 安全引导rom补丁的***及方法 | |
CN102509046B (zh) | 带有休眠支持的全局有效的测量的操作***发动 | |
KR20200052957A (ko) | 보안 제어 방법 및 컴퓨터 시스템 | |
CN109753788A (zh) | 内核运行时的完整性校验方法及计算机可读存储介质 | |
US8650655B2 (en) | Information processing apparatus and information processing program | |
US20150067884A1 (en) | Method and system for protecting software | |
CN107861793A (zh) | 虚拟硬件平台启动方法、装置、设备及计算机存储介质 | |
CN104537302B (zh) | 一种终端的安全启动方法、装置及终端 | |
CN104008342A (zh) | 一种通过bios和内核实现安全可信认证的方法 | |
US20160211974A1 (en) | Data generation apparatus, communication apparatus, communication system, mobile object, data generation method, and computer program product | |
Germanos et al. | Diagnosability under weak fairness | |
CN110851188A (zh) | 一种基于双体架构的国产plc可信链实现装置及方法 | |
CN112148314A (zh) | 一种嵌入式***的镜像验证方法、装置、设备及存储介质 | |
CN110069415B (zh) | 用于软件测试过程中的软件完整性校验及软件测试方法 | |
CN105745625B (zh) | 使用散列来验证程序的完整性的方法 | |
CN112313651A (zh) | 密码模块和针对其的运行方法 | |
CN105893877A (zh) | 安全数据读取的方法和数据处理*** | |
CN113448681B (zh) | 一种虚拟机监控器公钥的注册方法、设备和存储介质 | |
CN115130114B (zh) | 一种网关安全启动方法、装置、电子设备及存储介质 | |
US11216561B2 (en) | Executing processes in sequence | |
CN111400771A (zh) | 目标分区的校验方法及装置、存储介质、计算机设备 | |
US9727735B2 (en) | Method and system for simulating the effects of an attack on a computer code | |
JP2006053787A (ja) | プログラム実行装置及びプログラム実行方法 | |
CN108073411A (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 | ||
CP03 | Change of name, title or address |
Address after: 303-e, Zone C, innovation building, software park, torch hi tech Zone, Xiamen City, Fujian Province Patentee after: Xiamen Yaxun Zhilian Technology Co.,Ltd. Country or region after: China Address before: 303-e, Zone C, innovation building, software park, torch hi tech Zone, Xiamen City, Fujian Province Patentee before: XIAMEN YAXON NETWORK Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |