CN117610083A - 文件校验方法、装置、电子设备及计算机存储介质 - Google Patents
文件校验方法、装置、电子设备及计算机存储介质 Download PDFInfo
- Publication number
- CN117610083A CN117610083A CN202311723074.3A CN202311723074A CN117610083A CN 117610083 A CN117610083 A CN 117610083A CN 202311723074 A CN202311723074 A CN 202311723074A CN 117610083 A CN117610083 A CN 117610083A
- Authority
- CN
- China
- Prior art keywords
- verification
- target file
- file
- hash value
- value
- 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.)
- Pending
Links
- 238000012795 verification Methods 0.000 title claims abstract description 239
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000006870 function Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 2
- 238000005192 partition Methods 0.000 description 28
- 230000008569 process Effects 0.000 description 11
- 238000002360 preparation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例提供了一种文件校验方法、装置、电子设备及计算机存储介质,涉及操作***技术领域。该方法包括:获取针对目标文件的操作请求,操作请求包括操作类型,若操作类型为写操作类型,调用预设的钩子函数,确定操作请求是否为目标文件的首次写操作,若操作请求不是首次写操作,确定目标文件的第一哈希值,将第一哈希值和目标文件存储的第一验证值上传至可信执行模块,以使可信执行模块确定目标文件的校验结果。本申请提供的文件校验方法,通过可信执行模块将第一哈希值和第一验证值进行比较以完成对目标文件的完整性校验,校验通过之后才可以对目标文件进行写操作,防止***数据被篡改,能够保证***数据的安全,优化***性能。
Description
技术领域
本申请涉及操作***技术领域,具体而言,本申请涉及一种文件校验方法、装置、电子设备及计算机存储介质。
背景技术
随着操作***技术的发展,人们的生活越来越依赖各种***,***的完整性问题日益重要,例如,对于某个受大众欢迎的软件,攻击者会将恶意代码添加到该软件中,然后发布到网络上,当用户下载并使用这些被篡改过的软件时,计算机病毒或木马程序就会悄然进入用户的计算机等电子设备。因此,需要对操作***中的文件的完整性进行校验,即文件完整性校验,以确保数据、文件或其他信息在传输或使用过程中未被篡改、损坏或感染恶意代码等。
通常***完整性校验的方法为,在每次电子设备重启后、用户访问文件前,操作***均对该文件进行验签操作,以此确定该文件是否被篡改。然而,对于与用户数据相对应的可写分区无法进行校验,一旦有攻击者对用户数据进行篡改,没有相应的完整性校验机制,无法保证数据的安全性,导致***性能较差。
发明内容
本申请实施例旨在解决现有电子设备中的操作***无法对可写分区的文件进行完整性校验的问题。所述技术方案如下:
第一方面,本申请提供了一种文件校验方法,包括:
获取针对目标文件的操作请求,操作请求包括操作类型;
若操作类型为写操作类型,调用预设的钩子函数,确定操作请求是否为目标文件的首次写操作;
若操作请求不是首次写操作,确定目标文件的第一哈希值;
将第一哈希值和目标文件存储的第一验证值上传至可信执行模块,以使可信执行模块基于第一哈希值和第一验证值确定针对目标文件的校验结果;校验结果用于表征目标文件的完整性。
在第一方面的可选实施例中,操作请求还包括写入内容;
方法还包括:
若操作请求是首次写操作,则将操作请求中的写入内容写入目标文件;
获取目标文件的第二哈希值,并将第二哈希值上传至可信执行模块,以使可信执行模块基于第二哈希值与可信执行模块的标识确定出第一验证值;
将第一验证值存储在目标文件中。
在第一方面的可选实施例中,基于第一哈希值和第一验证值确定针对目标文件的校验结果,包括:
基于第一哈希值和可信执行模块的标识,获取第二验证值;
将第一验证值和第二验证值进行对比,获取校验结果。
在第一方面的可选实施例中,方法还包括:
若校验结果为验证值相同,则根据操作请求对目标文件进行写操作,获得更新后的目标文件;
获取更新后的目标文件的第三哈希值,并将第三哈希值上传至可信执行模块,根据第三哈希值和可信执行模块的标识,获取第三验证值;
基于第三验证值对第一验证值进行更新,将更新后的第一验证值存储在目标文件中。
在第一方面的可选实施例中,方法还包括:
若校验结果为验证值不相同,则不允许对目标文件进行写操作。
在第一方面的可选实施例中,获取针对目标文件的操作请求之前,包括:
生成针对***的私钥;
确定***中每一只读文件的第四哈希值;
针对每一只读文件,使用私钥对第四哈希值进行签名,获取签名信息;
分别将签名信息存储在每一只读文件中;签名信息用于验证是否允许针对目标文件进行对应的读操作。
在第一方面的可选实施例中,方法还包括:
生成针对***的公钥,并将公钥存储在可信执行模块中;
若操作类型为只读操作类型,则获取目标文件的第五哈希值;
将第五哈希值和目标文件中的签名信息上传到可信执行模块,以使可信执行模块根据公钥和第五哈希值对签名信息进行验证;
若验证通过,则根据操作请求对目标文件进行读操作;
若验证不通过,则不允许对目标文件进行读操作。
第二方面,提供了一种文件校验装置,该装置包括:
获取模块,用于获取针对目标文件的操作请求,操作请求包括操作类型;
调用模块,用于若操作类型为写操作类型,调用预设的钩子函数,确定操作请求是否为目标文件的首次写操作;
确定模块,用于若操作请求不是首次写操作,确定目标文件的第一哈希值;
校验模块,用于将第一哈希值和目标文件存储的第一验证值上传至可信执行模块,以使可信执行模块基于第一哈希值和第一验证值确定针对目标文件的校验结果;校验结果用于表征目标文件的完整性。
第三方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,处理器执行计算机程序以实现本申请第一方面中任一项方法的步骤。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现本申请第一方面中任一项所示的文件校验方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请提供的文件校验方法,通过获取操作请求并确定操作类型,确定为写操作类型,则调用内核中预设的钩子函数确定该操作请求是目标文件的第几次写操作,若是该目标文件的首次写操作,将写入内容写入该文件,然后获取目标文件的第二哈希值,可信执行模块基于第二哈希值和模块的标识确定出第一验证值并将验证值存储在目标文件中,若非首次写操作,则获取目标文件的第一哈希值,将目标文件中保存的第一验证值与该第一哈希值上传到可信执行模块中,使得可信执行模块将第一验证值与第一哈希值进行比较确定校验结果,该校验结果表征了目标文件的完整性。本申请中的方法支持在可信环境中对可写分区的文件进行完整性校验,能够有效防止可写文件中数据被篡改,提高了文件数据的安全性,优化了***性能。
进一步的,在***的编译准备阶段,获取***中每一个只读文件的第四哈希值,生成私钥对每一第四哈希值进行签名,将签名信息存储在对应的文件中,生成公钥存储在可信执行模块中,若操作类型为只读操作类型,获取目标文件的第五哈希值,在可信执行模块中使用第五哈希值和公钥对签名信息进行验证,验证通过后才可以进行读操作,实现了对于只读分区文件的完整性校验,本申请中的文件校验方法能够对只读和可写分区的文件进行校验,能够保证***完整性校验信任链的完整。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种文件校验方法的应用场景示意图;
图2为本申请实施例提供的一种文件校验方法的流程示意图;
图3为本申请实施例提供的一种文件校验方法中校验可写目标文件验证值的流程示意图;
图4为本申请实施例提供的一种文件校验方法中获取第一验证值的流程示意图;
图5为本申请实施例提供的一种文件校验方法中校验只读目标文件的流程示意图;
图6为本申请实施例提供的一种文件校验方法的示例的流程示意图;
图7为本申请实施例提供的一种文件校验装置的结构示意图;
图8为本申请实施例提供的一种文件校验方法适用的电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作和组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为了更好的说明和理解本申请实施例提供的方案,首先对本申请实施例中所涉及的一些相关的技术用语进行介绍。
写操作:通常指对数据进行修改、更新或新增的操作。在操作***中,写操作一般表示对数据进行更改或添加新数据的过程,包括更新文件中已经记录的数据和向文件中写入新数据等。进行写操作时需要确保数据的完整性和安全性。
可信执行模块:也可以称为可信执行环境(TEE),是计算机等电子设备中的一个受保护区域,提供了高度隔离的可信计算环境。TEE通常是在主处理器和操作***之上运行的一种软硬件解决方案,设计目标是保护敏感数据和执行关键任务时的安全性,防止恶意软件、攻击者或不受信任的应用程序获取或篡改数据。它提供了一种受保护的执行环境,使得只有经过授权的程序才能访问其中的数据和资源。
哈希值:通过哈希函数对输入数据进行计算而得到的固定长度的字符串或数字。哈希是英文“Hash”的音译,也称为散列、杂凑等,目前哈希泛指将任意长度的消息压缩成某一固定长度的消息摘要的算法设计思想,能够实现上述思想的算法都可以称为哈希。消息可以是任意类型的数据,消息摘要的形式可以是字符串或数字。
公钥和私钥:公私钥是一对密钥,用于加密和解密数据。公钥可以公开,而私钥则只能由密钥拥有者保管。在公私钥加密中,发送方使用接收方提供的公钥对数据进行加密,而接收方使用自己的私钥对加密后的数据进行解密。公私钥广泛应用于数字签名、数据加密和身份验证等场景。其中,数字签名是指将文件的哈希值用私钥进行加密,以证明该文件的完整性和来源不可否认性;数据加密是指使用公钥加密敏感数据,以确保在传输过程中数据不会被窃取或篡改;身份验证是指使用公私钥验证用户的身份,以防止有人冒充其他用户进入***。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。在本申请中如果没有特别说明,***一词指操作***。
在启动操作***时需要进行完整性校验,对于***完整性的校验通常有两种方案,开源的操作***原生的IMA(Integrity Measurement Architecture,完整性测量架构)以及安卓原生的内核的块校验。然而IMA方案依赖芯片,需要在修订模式下计算文件基准值,然后将***改为强制模式,用在修订模式计算的基准值和***当前的基准值进行对比,如不符合则拒绝访问。这存在一个问题,在设定文件基准值之前,文件可能被篡改,信任链不完整。安卓原生的内核的块校验,在***启动阶段进行拦截操作,是粗粒度的校验过程,采用该方案后***无法使用基于文件的差分包进行升级,并且消耗电子设备的资源,对电子设备的性能产生一定影响。
现有的***完整性校验方法,在每次电子设备重启后、用户访问文件前,操作***均需要对该文件进行验签操作,以此确定文件是否被篡改。然而,对于与用户数据相对应的可写分区,无法进行校验,一旦有攻击者对用户数据进行篡改,没有相应的完整性校验机制,无法保证数据的安全性,导致***性能较差。
现有技术中为了克服对可写分区无法进行校验不足,也有采用可写分区中的文件全部加密、当需要进行写操作时先解密文件完成写操作后再加密的方式。此种方式确实极大增加了对可写分区文件中数据进行篡改的难度,但很多实际场景中不允许对可写分区中的所有文件都加密,一些可写文件被加密将导致电子设备无法正常使用。
针对相关技术中所存在的至少一个技术问题或需要改善的地方,本申请提出一种文件校验方法、装置、电子设备及计算机存储介质,该方案提供的文件校验方法,通过获取操作请求并确定操作类型,若确定为写操作类型,则调用内核中预设的钩子函数确定该操作请求是目标文件的第几次写操作,若是该目标文件的首次写操作,将写入内容写入该文件,然后获取目标文件的第二哈希值,可信执行模块基于第二哈希值和模块的标识确定出第一验证值并将验证值存储在目标文件中,若非首次写操作,则获取目标文件的第一哈希值,将目标文件中保存的第一验证值与该第一哈希值上传到可信执行模块中,使得可信执行模块将第一验证值与第一哈希值进行比较确定校验结果,该校验结果表征了目标文件的完整性。本申请中的方法支持在可信环境中对可写分区的文件进行完整性校验,能够有效防止可写文件中数据被篡改,提高了文件数据的安全性,优化了***性能。
进一步的,在***的编译准备阶段,获取***中每一个只读文件的第四哈希值,生成私钥对每一第四哈希值进行签名,将签名信息存储在对应的文件中,生成公钥存储在可信执行模块中,若操作类型为只读操作类型,获取目标文件的第五哈希值,在可信执行模块中使用第五哈希值和公钥对签名信息进行验证,验证通过后才可以进行读操作,实现了对于只读分区文件的完整性校验。本申请中的文件校验方法能够对只读和可写分区的文件进行校验,能够保证***完整性校验信任链的完整。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
图1为本申请实施例提供的文件校验方法的应用场景示意图,其中,应用环境可以包括一个电子设备101,电子设备101上部署有能够执行上述文件校验方法的操作***。
具体的,针对于电子设备101上部署的能够执行上述文件校验方法的操作***,获取针对目标文件的操作请求,操作请求包括操作类型,若操作类型为写操作类型,调用预设的钩子函数,确定操作请求是否为目标文件的首次写操作,若操作请求不是首次写操作,确定目标文件的第一哈希值,将第一哈希值和目标文件存储的第一验证值上传至可信执行模块,以使可信执行模块确定目标文件的校验结果,以完成对电子设备101上操作***中可写分区文件的完整性校验。
本技术领域技术人员可以理解,电子设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、笔记本电脑、数字广播接收器、MID(Mobile Internet Devices,移动互联网设备)、PDA(个人数字助理)、台式计算机、智能家电、车载终端(例如车载导航终端、车载电脑等)、智能音箱、智能手表等。
在一些可能的实施方式中,以执行主体为安装有操作***的电子设备为例,本申请实施例提供了一种文件校验方法,如图2所示,可以包括如下步骤:
S201,获取针对目标文件的操作请求。
其中,操作请求可以包括操作类型、操作对象和操作内容等有关文件操作的详细信息。
在具体实施过程中,当操作***的用户或者操作***中的某个程序需要打开或者运行某文件时,该文件即为目标文件,获取针对目标文件的操作请求可以明确对目标文件需要进行什么操作,操作请求中可以包括需要进行的操作的相关信息。
S202,若所述操作类型为写操作类型,调用预设的钩子函数,确定所述操作请求是否为所述目标文件的首次写操作。
其中,所述钩子函数由操作***提供,在特定的事件或条件下被触发。
具体的,若操作类型为写操作类型,则表示该操作请求是对于可写分区的文件进行操作的请求,调用钩子函数来确定该操作请求是否是针对该目标文件的首次写操作,若为首次写操作,则向文件中写入数据,然后生成第一验证值,若非首次写操作,则认为是要对目标文件中的数据进行修改或更新,需要进行完整性验证。其中,可写分区文件可以包括用户数据文件。
S203,若所述操作请求不是首次写操作,确定所述目标文件的第一哈希值。
具体的,上述第一哈希值可以是基于目标文件的文件内容和文件名称获取的,获取哈希值的方法可以根据实际情况进行调整,并不局限于某种方式。
具体的,若操作请求并非首次写操作,则认为是要对目标文件进行修改或更新,需要在可信执行模块中使用第一哈希值进行验证,只有在第一哈希值验证通过之后,才允许对目标文件进行操作。
S204,将所述第一哈希值和所述目标文件存储的第一验证值上传至可信执行模块,以使所述可信执行模块基于所述第一哈希值和所述第一验证值确定针对所述目标文件的校验结果。
其中,校验结果用于表征所述目标文件的完整性。
在具体实施过程中,在获取目标文件的第一哈希值后,将目标文件的扩展属性中存储的第一验证值和第一哈希值都上传至可信执行模块,由可信执行模块进行验证,获取校验结果。其中,可信执行模块可以为可信执行环境,可信执行环境可以包括TEE(TrustedExecution Environment),是一个安全的隔离环境,通常是基于硬件级别的安全扩展或受保护的运行环境,使用可信执行环境可以提高整个***的安全性和可信度。
在一些可能的实施方式中,上述的文件校验方法还包括:
(1)若所述操作请求是首次写操作,则将所述操作请求中的写入内容写入所述目标文件;
(2)获取所述目标文件的第二哈希值,并将所述第二哈希值上传至所述可信执行模块,以使所述可信执行模块基于所述第二哈希值与所述可信执行模块的标识确定出所述第一验证值;
(3)将所述第一验证值存储在所述目标文件中。
其中,操作请求还可以包括写入内容,第二哈希值是基于目标文件内容和文件名称获取的。
具体的,若为首次写操作,则将写入内容写入该目标文件,写入之后就获取目标文件的第二哈希值,将第二哈希值传入可信执行模块中,可信执行模块中有可信执行模块的标识,可信执行模块基于第二哈希值与可信执行模块的标识计算获得第一验证值,将第一验证值存储在目标文件的扩展属性中。若针对首次写操作的目标文件还不存在,则首先创建目标文件再执行后续的写入、获取第一验证值等操作。
在具体实施过程中,上述获取第一验证值的步骤可以如图3所示,在普通运行环境(即图中所示的REE)中判断写操作的次数,若为首次写操作,则将写入内容写入该目标文件,若所述目标文件还不存在,则首先创建所述目标文件,创建后再将写入内容写入所述目标文件,写入之后,基于目标文件内容和文件名称(即图中所示的data和name)获取目标文件的第二哈希值(即图中所示的hash),将第二哈希值传入可信执行模块(即图中所示的TEE)中,可信执行模块中有可信执行模块的标识(即图中所示的TEE key),可信执行模块基于第二哈希值与可信执行模块的标识计算获得第一验证值(即图中所示的hmac1),将第一验证值存储在目标文件的扩展属性中,上述获取第一验证值的步骤在可信执行模块中完成,能够提高第一验证值的可信度。
在一些可能的实施方式中,上述步骤S204中基于所述第一哈希值和所述第一验证值确定针对所述目标文件的校验结果,包括:
(1)基于所述第一哈希值和所述可信执行模块的标识,获取第二验证值;
(2)将所述第一验证值和所述第二验证值进行对比,获取所述校验结果。
其中,可信执行模块的标识是唯一的,一个可信执行模块对应一个标识。
具体的,在进行校验时,根据第一哈希值和唯一的可信执行模块标识确定第二验证值,将目标文件的扩展属性中存储的第一验证值与计算得到的第二验证值进行比较,获取校验结果。若验证值一致,则认为此次操作可信,可以进行操作,不一致则不允许此次操作。
在具体实施过程中,如图4所示,在普通运行环境(即图中所示的REE)中,根据目标文件的内容和名称(即图中所示的data和name)确定出第一哈希值(即图中所示的hash),根据第一哈希值和唯一的可信执行模块标识确定第二验证值(即图中所示的hmac2),将目标文件的扩展属性中存储的第一验证值与计算得到的第二验证值进行比较(即图中所示的:判断hmac1是否等于hmac2),获取校验结果,若验证值一致,则认为此次操作可信,可以进行操作,不一致则不允许此次操作,将校验结果返回给普通运行环境。可选的,获取校验结果之后可以将该结果展示给使用***的用户,例如弹窗警告等,具体方式本方案中不做限制。
在一些可能的实施方式中,上述文件校验方法还包括:
(1)若所述校验结果为验证值相同,则根据所述操作请求对所述目标文件进行写操作,获得更新后的目标文件;
(2)获取所述更新后的目标文件的第三哈希值,并将所述第三哈希值上传至可信执行模块,根据所述第三哈希值和所述可信执行模块的标识,获取第三验证值;
(3)基于所述第三验证值对所述第一验证值进行更新,将更新后的第一验证值存储在所述目标文件中。
具体的,若校验结果为验证值相同,则认为该修改可信,则可以对目标文件中的内容进行写操作,写操作完成后,获取内容更新之后的目标文件的第三哈希值,将该第三哈希值传入可信执行模块,在可信执行模块中将第三哈希值和唯一的可信执行模块标识一起计算,获取新的第三验证值,使用第三验证值对第一验证值进行更新,将该第三验证值存储在目标文件的扩展属性中;其中,写操作具体可以包括写入、删除、更新和修改数据等。
在一些可能的实施方式中,上述文件校验方法还包括:
(1)若所述校验结果为验证值不相同,则不允许对所述目标文件进行写操作。
具体的,当校验结果为验证值不相同,则认为当前操作不可信,不允许对目标文件进行写操作,可以返回当前操作不可信的警告以提示用户解决问题。
在具体实施过程中,若验证结果为验证值不相同,则验证不通过,当前操作不可信,***将拒绝对可写文件的写操作请求,拒绝通常可以通过ACL(Access Control List,实施访问控制列表)或者权限控制来实现。这样能有效地限制不可信操作对可写文件的修改,提高***的安全性和数据的完整性。
在一些可能的实施方式中,上述步骤S201中获取针对目标文件的操作请求之前,包括:
(1)生成针对所述***的私钥;
(2)确定所述***中每一只读文件的第四哈希值;
(3)针对所述每一只读文件,使用所述私钥对所述第四哈希值进行签名,获取签名信息;
(4)分别将所述签名信息存储在所述每一只读文件中;所述签名信息用于验证是否允许针对所述目标文件进行对应的读操作。
其中,第四哈希值是根据只读文件的内容和名称获取的。
具体的,生成***对应的私钥,并确定不可以进行写操作的文件、也就是只读文件的第四哈希值,使用私钥对每一只读文件的第四哈希值进行签名,获取签名信息并存储在文件的扩展属性中。该过程是使用私钥对于第四哈希值进行加密的过程,该签名信息是在需要读取文件时进行验证确定是否允许对目标文件进行读取的信息。
在具体实施过程中,可以生成***的公私钥对,使用私钥对数据进行加密或者生成数字签名,并使用公钥进行解密或者验证数字签名,上述步骤中的公私钥对是在***的编译准备阶段对应生成的,使用公私钥对可以防止***在编译到实际部署运行之间受到篡改或攻击导致哈希值不可信的情况,能够提高***的安全性。
在一些可能的实施方式中,上述文件校验方法还包括:
(1)生成针对所述***的公钥,并将所述公钥存储在所述可信执行模块中;
(2)若所述操作类型为只读操作类型,则获取所述目标文件的第五哈希值;
(3)将所述第五哈希值和所述目标文件中的签名信息上传到所述可信执行模块,以使所述可信执行模块根据所述公钥和所述第五哈希值对所述签名信息进行验证;
(4)若验证通过,则根据所述操作请求对所述目标文件进行读操作;
(5)若验证不通过,则不允许对所述目标文件进行读操作。
其中,公钥是与上述步骤中的私钥相对应的,可以用来解密私钥加密的信息。
具体的,将公钥存储在可信执行模块中,若所述操作类型为只读操作,则调用内核的钩子函数,根据目标文件的内容和名称获取对应的第五哈希值,将第五哈希值和目标文件扩展属性中的签名信息上传到可信执行模块,使用公钥对私钥加密的签名信息进行解密,并将解密获得的哈希值和第五哈希值进行对比,获取验证信息,根据验证信息确定是否允许对目标文件进行操作。
在具体实施过程中生成***的公钥后,将公钥存储在可信执行模块中,以便安全地进行验证,如图5所示,若所述操作类型为只读操作类型,则调用内核的钩子函数,根据目标文件的内容和名称获取对应的第五哈希值(即图中所示的hash),将第五哈希值和目标文件扩展属性中的签名信息上传到可信执行模块(即图中所示的TEE),使用公钥对私钥加密的签名信息进行解密,获取目标文件对应的第四哈希值,将目标文件对应的第四哈希值和第五哈希值进行对比,获取验证信息(即图中所示的验签),若验证通过,则根据操作请求对目标文件进行读操作,若验证不通过,则不允许对目标文件进行读操作。
上述实施例中,通过获取操作请求并确定操作类型,若确定为写操作类型,则调用内核中预设的钩子函数确定该操作请求是目标文件的第几次写操作,若是该目标文件的首次写操作,将写入内容写入该文件,然后获取目标文件的第二哈希值,可信执行模块基于第二哈希值和模块的标识确定出第一验证值并将验证值存储在目标文件中,若非首次写操作,则获取目标文件的第一哈希值,将目标文件中保存的第一验证值与该第一哈希值上传到可信执行模块中,使得可信执行模块将第一验证值与第一哈希值进行比较确定校验结果,该校验结果表征了目标文件的完整性。本申请中的方法支持在可信环境中对可写分区的文件进行完整性校验,能够有效防止可写文件中数据被篡改,提高了文件数据的安全性,优化了***性能。
进一步的,在***的编译准备阶段,获取***中每一个只读文件的第四哈希值,生成私钥对每一第四哈希值进行签名,将签名信息存储在对应的文件中,生成公钥存储在可信执行模块中,若操作类型为只读操作类型,获取目标文件的第五哈希值,在可信执行模块中使用第五哈希值和公钥对签名信息进行验证,验证通过后才可以进行读操作,实现了对于只读分区文件的完整性校验。本申请中的文件校验方法能够对只读和可写分区的文件进行校验,能够保证***完整性校验信任链的完整。
为更清楚地理解本申请实施例描述的文件校验方法,以下将结合示例进行进一步详细阐述。
在一个示例中,本申请的文件校验方法,如图6所示,可以包括:
当需要打开或者运行目标文件,获取目标文件的操作请求,其中,操作请求中可以包括需要进行的操作的类型及操作对象、操作内容等信息。
当确定操作类型为写操作类型,调用钩子函数,确定该操作请求是否是针对该目标文件的首次写操作。
若为首次写操作,则将写入内容写入该目标文件,写入之后就获取目标文件的第二哈希值,将第二哈希值传入可信执行模块中(即图中所示的:将文件内容和名称相加取hash,然后将hash传入TEE),可信执行模块中有可信执行模块的标识(即图中所示的:TEE中唯一的key),可信执行模块基于第二哈希值与可信执行模块的标识计算获得第一验证值(即图中所示的hmac1),将第一验证值存储在目标文件的扩展属性中。
若操作请求不是首次写操作,计算第一哈希值并和第一验证值一起上传至可信执行模块,根据第一哈希值和唯一的可信执行模块标识确定第二验证值(即图中所示的hmac2),将目标文件的扩展属性中存储的第一验证值与计算得到的第二验证值进行比较,获取校验结果。
若校验结果为验证值相同,则可以对目标文件中的内容进行写操作,写操作完成后,获取内容更新之后的目标文件的第三哈希值,将该第三哈希值传入可信执行模块,在可信执行模块中将第三哈希值和唯一的可信执行模块标识一起计算,获取新的第三验证值,使用第三验证值对第一验证值进行更新,将该第三验证值存储在目标文件的扩展属性中;若校验结果为验证值不相同,不允许对目标文件进行写操作。
另外,当操作类型为只读操作类型,生成公私钥对,预先获取***中每一只读文件的第四哈希值并使用私钥进行签名,获取签名信息,将公钥存储在可信执行模块中。
若所述操作类型为只读操作类型,则调用内核的钩子函数,根据目标文件的内容和名称获取对应的第五哈希值,将第五哈希值和目标文件扩展属性中的签名信息上传到可信执行模块,使用公钥对私钥加密的签名信息进行解密,并将解密获得的哈希值和第五哈希值进行对比,获取验证信息,根据验证信息确定是否允许对目标文件进行操作。
若验证通过,则根据操作请求对目标文件进行读操作,若验证不通过,则不允许对目标文件进行读操作。
上述文件校验方法,通过获取操作请求并确定操作类型,若确定为写操作类型,则调用内核中预设的钩子函数确定该操作请求是目标文件的第几次写操作,若是该目标文件的首次写操作,将写入内容写入该文件,然后获取目标文件的第二哈希值,可信执行模块基于第二哈希值和模块的标识确定出第一验证值并将验证值存储在目标文件中,若非首次写操作,则获取目标文件的第一哈希值,将目标文件中保存的第一验证值与该第一哈希值上传到可信执行模块中,使得可信执行模块将第一验证值与第一哈希值进行比较确定校验结果,该校验结果表征了目标文件的完整性。本申请中的方法支持在可信环境中对可写分区的文件进行完整性校验,能够有效防止可写文件中数据被篡改,提高了文件数据的安全性,优化了***性能。
进一步的,在***的编译准备阶段,获取***中每一个只读文件的第四哈希值,生成私钥对每一第四哈希值进行签名,将签名信息存储在对应的文件中,生成公钥存储在可信执行模块中,若操作类型为只读操作类型,获取目标文件的第五哈希值,在可信执行模块中使用第五哈希值和公钥对签名信息进行验证,验证通过后才可以进行读操作,实现了对于只读分区文件的完整性校验。本申请中的文件校验方法能够对只读和可写分区的文件进行校验,能够保证***完整性校验信任链的完整。
本申请实施例提供了一种文件校验装置,如图7所示,该装置70可以包括:获取模块701、调用模块702、确定模块703和校验模块704,其中,
获取模块701,用于获取针对目标文件的操作请求,所述操作请求包括操作类型;
调用模块702,用于若所述操作类型为写操作类型,调用预设的钩子函数,确定所述操作请求是否为所述目标文件的首次写操作;
确定模块703,用于若所述操作请求不是首次写操作,确定所述目标文件的第一哈希值;
校验模块704,用于将所述第一哈希值和所述目标文件存储的第一验证值上传至可信执行模块,以使所述可信执行模块基于所述第一哈希值和所述第一验证值确定针对所述目标文件的校验结果;所述校验结果用于表征所述目标文件的完整性。
本申请提供的文件校验装置中,通过获取操作请求并确定操作类型,若确定为写操作类型,则调用内核中预设的钩子函数确定该操作请求是目标文件的第几次写操作,若是该目标文件的首次写操作,将写入内容写入该文件,然后获取目标文件的第二哈希值,可信执行模块基于第二哈希值和模块的标识确定出第一验证值并将验证值存储在目标文件中,若非首次写操作,则获取目标文件的第一哈希值,将目标文件中保存的第一验证值与该第一哈希值上传到可信执行模块中,使得可信执行模块将第一验证值与第一哈希值进行比较确定校验结果,该校验结果表征了目标文件的完整性。本申请中的方法支持在可信环境中对可写分区的文件进行完整性校验,能够有效防止可写文件中数据被篡改,提高了文件数据的安全性,优化了***性能。
进一步的,在***的编译准备阶段,获取***中每一个只读文件的第四哈希值,生成私钥对每一第四哈希值进行签名,将签名信息存储在对应的文件中,生成公钥存储在可信执行模块中,若操作类型为只读操作类型,获取目标文件的第五哈希值,在可信执行模块中使用第五哈希值和公钥对签名信息进行验证,验证通过后才可以进行读操作,实现了对于只读分区文件的完整性校验。本申请中的文件校验方法能够对只读和可写分区的文件进行校验,能够保证***完整性校验信任链的完整。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现文件校验方法的步骤,与相关技术相比可实现:在目标文件进行写操作或读操作前完成对目标文件的完整性校验。
在一个可选实施例中提供了一种电子设备,如图8所示,图8所示的电子设备8000包括:处理器8008和存储器8003。其中,处理器8008和存储器8003相连,如通过总线8002相连。可选地,电子设备8000还可以包括收发器8004,收发器8004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器8004不限于一个,该电子设备8000的结构并不构成对本申请实施例的限定。
处理器8008可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器8008也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线8002可包括一通路,在上述组件之间传送信息。总线8002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线8002可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器8003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器8003用于存储执行本申请实施例的计算机程序,并由处理器8008来控制执行。处理器8008用于执行存储器8003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包括但不限于:能应用上述文件校验方法的终端和服务器。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (10)
1.一种文件校验方法,其特征在于,包括:
获取针对目标文件的操作请求,所述操作请求包括操作类型;
若所述操作类型为写操作类型,调用预设的钩子函数,确定所述操作请求是否为所述目标文件的首次写操作;
若所述操作请求不是首次写操作,确定所述目标文件的第一哈希值;
将所述第一哈希值和所述目标文件存储的第一验证值上传至可信执行模块,以使所述可信执行模块基于所述第一哈希值和所述第一验证值确定针对所述目标文件的校验结果;所述校验结果用于表征所述目标文件的完整性。
2.基于权利要求1所述的文件校验方法,其特征在于,所述操作请求还包括写入内容;
所述方法还包括:
若所述操作请求是首次写操作,则将所述操作请求中的写入内容写入所述目标文件;
获取所述目标文件的第二哈希值,并将所述第二哈希值上传至所述可信执行模块,以使所述可信执行模块基于所述第二哈希值与所述可信执行模块的标识确定出所述第一验证值;
将所述第一验证值存储在所述目标文件中。
3.基于权利要求1所述的文件校验方法,其特征在于,所述基于所述第一哈希值和所述第一验证值确定针对所述目标文件的校验结果,包括:
基于所述第一哈希值和所述可信执行模块的标识,获取第二验证值;
将所述第一验证值和所述第二验证值进行对比,获取所述校验结果。
4.基于权利要求1所述的文件校验方法,其特征在于,所述方法还包括:
若所述校验结果为验证值相同,则根据所述操作请求对所述目标文件进行写操作,获得更新后的目标文件;
获取所述更新后的目标文件的第三哈希值,并将所述第三哈希值上传至可信执行模块,根据所述第三哈希值和所述可信执行模块的标识,获取第三验证值;
基于所述第三验证值对所述第一验证值进行更新,将更新后的第一验证值存储在所述目标文件中。
5.基于权利要求1所述的文件校验方法,其特征在于,所述方法还包括:
若所述校验结果为验证值不相同,则不允许对所述目标文件进行写操作。
6.基于权利要求1所述的文件校验方法,其特征在于,所述获取针对目标文件的操作请求之前,包括:
生成针对所述***的私钥;
确定所述***中每一只读文件的第四哈希值;
针对所述每一只读文件,使用所述私钥对所述第四哈希值进行签名,获取签名信息;
分别将所述签名信息存储在所述每一只读文件中;所述签名信息用于验证是否允许针对所述目标文件进行对应的读操作。
7.基于权利要求6所述的文件校验方法,其特征在于,所述方法还包括:
生成针对所述***的公钥,并将所述公钥存储在所述可信执行模块中;
若所述操作类型为只读操作类型,则获取所述目标文件的第五哈希值;
将所述第五哈希值和所述目标文件中的签名信息上传到所述可信执行模块,以使所述可信执行模块根据所述公钥和所述第五哈希值对所述签名信息进行验证;
若验证通过,则根据所述操作请求对所述目标文件进行读操作;
若验证不通过,则不允许对所述目标文件进行读操作。
8.一种文件校验装置,其特征在于,包括:
获取模块,用于获取针对目标文件的操作请求,所述操作请求包括操作类型;
调用模块,用于若所述操作类型为写操作类型,调用预设的钩子函数,确定所述操作请求是否为所述目标文件的首次写操作;
确定模块,用于若所述操作请求不是首次写操作,确定所述目标文件的第一哈希值;
校验模块,用于将所述第一哈希值和所述目标文件存储的第一验证值上传至可信执行模块,以使所述可信执行模块基于所述第一哈希值和所述第一验证值确定针对所述目标文件的校验结果;所述校验结果用于表征所述目标文件的完整性。
9.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的文件校验方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311723074.3A CN117610083A (zh) | 2023-12-14 | 2023-12-14 | 文件校验方法、装置、电子设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311723074.3A CN117610083A (zh) | 2023-12-14 | 2023-12-14 | 文件校验方法、装置、电子设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117610083A true CN117610083A (zh) | 2024-02-27 |
Family
ID=89956256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311723074.3A Pending CN117610083A (zh) | 2023-12-14 | 2023-12-14 | 文件校验方法、装置、电子设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117610083A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118051919A (zh) * | 2024-04-16 | 2024-05-17 | 苏州萨沙迈半导体有限公司 | 数据处理方法、芯片、电子设备以及存储介质 |
-
2023
- 2023-12-14 CN CN202311723074.3A patent/CN117610083A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118051919A (zh) * | 2024-04-16 | 2024-05-17 | 苏州萨沙迈半导体有限公司 | 数据处理方法、芯片、电子设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313690B (zh) | 自包含的加密引导策略验证 | |
US9680648B2 (en) | Securely recovering a computing device | |
AU2009233685B2 (en) | Method and apparatus for incremental code signing | |
CN107679393B (zh) | 基于可信执行环境的Android完整性验证方法和装置 | |
US8127146B2 (en) | Transparent trust validation of an unknown platform | |
EP2210174B1 (en) | Progressive boot for a wireless device | |
US7305553B2 (en) | Manifest-based trusted agent management in a trusted operating system environment | |
US20060236122A1 (en) | Secure boot | |
US11321466B2 (en) | Integrated circuit data protection | |
US8543841B2 (en) | Secure hosted execution architecture | |
KR20060108710A (ko) | 신뢰성 있는 이동 플랫폼 구조 | |
JP6073320B2 (ja) | デジタル署名するオーソリティ依存のプラットフォームシークレット | |
TW201516733A (zh) | 用以核對uefi認證變量變化之系統及方法 | |
EP2051181A1 (en) | Information terminal, security device, data protection method, and data protection program | |
EP2803011B1 (en) | Detection of invalid escrow keys | |
CN108229144B (zh) | 一种应用程序的验证方法、终端设备及存储介质 | |
CN117610083A (zh) | 文件校验方法、装置、电子设备及计算机存储介质 | |
CN107924440B (zh) | 用于管理容器的方法、***和计算机可读介质 | |
CN109891425B (zh) | 序列验证 | |
CN115795432A (zh) | 一种适用于只读文件***的程序完整性验证***及方法 | |
CN111046440B (zh) | 一种安全区域内容的篡改验证方法及*** | |
WO2022019910A1 (en) | Read protection for uefi variables | |
CN108416209B (zh) | 程序安全验证方法、装置及终端设备 | |
WO2022100247A1 (zh) | 一种切换执行环境的方法及其相关设备 | |
KR101781970B1 (ko) | 자가 대응 전자문서 불법 유출 방지 장치 및 방법 |
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 |