一种文件完整性校验方法、装置、设备及存储介质与流程
未命名
08-05
阅读:91
评论:0

技术领域:
:,特别涉及一种文件完整性校验方法、装置、设备及存储介质。
背景技术:
::2.当前,uefi(unifiedextensiblefirmwareinterface,统一的可扩展固件接口)安全启动是uefi标准引入的一项安全功能,旨在确保电脑仅使用oem(originalequipmentmanufacturer,原始设备制造商)信任的软件启动,帮助计算机抵御病毒攻击和恶意软件感染。当pc(personalcomputer,个人计算机)启动时,uefi安全启动验证每个启动软件的签名,包括uefi固件驱动程序、uefi应用程序和操作系统。如果签名有效,则pc启动,固件将控制权交给操作系统。其中,uefi安全启动的核心就是利用数字签名来确认uefi驱动程序、uefi固件程序或者应用程序是否被篡改,是否被信任。目前,在uefi标准中采用authenticode技术(即代码签名技术),使用md5(messagedigest5,消息摘要5)算法、sha256(securehashalgorithm256,安全散列算法256)等散列算法,rsa数字签名算法,不满足国家密码管理局商用密码标准,其中,使用rsa数字签名算法,运行效率低,尤其有大量uefi映像文件需要被验证时尤为明显,严重影响计算机启动速度,而且使用公钥密码体制的消息认证,需要部署公钥基础设施,部署复杂,导致成本较高。技术实现要素:3.有鉴于此,本发明的目的在于提供一种文件完整性校验方法、装置、设备及存储介质,能够防止uefi映像文件中核心代码或数据被篡改或被破坏。其具体方案如下:4.第一方面,本技术公开了一种文件完整性校验方法,包括:5.基于当前输入的密钥授权值获取相应的hmac-sm3密钥,并验证uefi映像文件对应的pe文件格式是否正确;6.若所述uefi映像文件对应的所述pe文件格式正确,则获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,并基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值;7.判断所述第一完整性校验值和所述第二完整性校验值是否一致得到相应的判断结果;8.基于所述判断结果确定所述uefi映像文件的完整性校验是否成功。9.可选的,所述文件完整性校验方法,还包括:10.将hmac-sm3密钥进行均分得到多个均分后密钥,并将各所述均分后密钥分散保存至预先确定的密钥隐藏区中;11.基于预设授权值生成相应的加密密钥,并利用所述加密密钥对所述密钥隐藏区进行加密;12.相应的,所述基于当前输入的密钥授权值获取相应的hmac-sm3密钥,包括:13.利用当前输入的密钥授权值生成相应的解密密钥,并利用所述解密密钥对所述密钥隐藏区进行解密得到相应的解密结果;14.如果所述解密结果表明对所述密钥隐藏区解密成功,则获取所述密钥隐藏区中的密钥数据,并根据预设重组规则对所述密钥数据进行重组得到相应的hmac-sm3密钥。15.可选的,所述文件完整性校验方法,还包括:16.将完整性校验值进行均分得到多个均分后校验值,并将各所述均分后校验值分散保存至所述uefi映像文件的校验值隐藏区中;17.相应的,所述获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,包括:18.对所述uefi映像文件对应的所述pe文件格式进行解析以获取所述校验值隐藏区中的校验值数据;19.根据所述预设重组规则对所述校验值数据进行重组得到第一完整性校验值。20.可选的,所述文件完整性校验方法,还包括:21.在所述uefi映像文件中插入一个新节表,并将所述校验值隐藏区中的所述校验值数据写入所述新节表;22.对所述uefi映像文件中的pe头和节表头进行重构;23.相应的,所述验证uefi映像文件对应的pe文件格式是否正确,包括:24.验证所述uefi映像文件对应的pe文件格式中的重构后pe文件头对应的校验值是否正确并验证所述uefi映像文件中是否存在插入的所述新节表。25.可选的,所述基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值,包括:26.对所述uefi映像文件对应的所述pe文件格式进行解析以获取所述uefi映像文件对应的关键段资源;27.基于所述hmac-sm3密钥和调用的所述hmac-sm3算法对所述关键段资源进行计算以得到第二完整性校验值。28.可选的,所述基于所述判断结果确定所述uefi映像文件的完整性校验是否成功,包括:29.如果所述判断结果表明所述第一完整性校验值和所述第二完整性校验值一致,则判定所述uefi映像文件的完整性校验成功,并运行加载所述uefi映像文件;30.如果所述判断结果表明所述第一完整性校验值和所述第二完整性校验值不一致,则判定所述uefi映像文件的完整性校验失败,并禁止加载所述uefi映像文件。31.可选的,所述验证uefi映像文件对应的pe文件格式是否正确之后,还包括:32.若所述uefi映像文件的所述pe文件格式不正确,则禁止加载所述uefi映像文件。33.第二方面,本技术公开了一种文件完整性校验装置,包括:34.密钥获取模块,用于基于当前输入的密钥授权值获取相应的hmac-sm3密钥;35.文件格式验证模块,用于验证uefi映像文件对应的pe文件格式是否正确;36.校验值获取模块,用于当所述uefi映像文件对应的所述pe文件格式正确时,则获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,并基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值;37.判断模块,用于判断所述第一完整性校验值和所述第二完整性校验值是否一致得到相应的判断结果;38.完整性校验确定模块,用于基于所述判断结果确定所述uefi映像文件的完整性校验是否成功。39.第三方面,本技术公开了一种电子设备,包括:40.存储器,用于保存计算机程序;41.处理器,用于执行所述计算机程序,以实现前述公开的文件完整性校验方法的步骤。42.第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的文件完整性校验方法的步骤。43.可见,本技术提供了一种文件完整性校验方法,包括:基于当前输入的密钥授权值获取相应的hmac-sm3密钥,并验证uefi映像文件对应的pe文件格式是否正确;若所述uefi映像文件对应的所述pe文件格式正确,则获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,并基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值;判断所述第一完整性校验值和所述第二完整性校验值是否一致得到相应的判断结果;基于所述判断结果确定所述uefi映像文件的完整性校验是否成功。由此可知,本技术在uefi映像文件对应的pe文件格式正确时,获取该uefi映像文件中的第一完整性校验值,并基于调用的hmac-sm3算法和获取到的hmac-sm3密钥确定出该uefi映像文件的第二完整性校验值,然后判断该第一完整性校验值和该第二完整性校验值是否一致,基于该判断结果确定uefi文件的完整性校验是否成功,从而能够防止uefi映像文件中核心代码或数据被篡改或被破坏。附图说明44.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。45.图1为本技术公开的一种文件完整性校验方法流程图;46.图2为本技术公开的一种pe文件格式示意图;47.图3为本技术公开的一种pe文件格式嵌入完整性校验值示意图;48.图4为本技术公开的一种uefi映像文件完整性校验值生成流程图;49.图5为本技术公开的一种具体的uefi映像文件完整性校验流程图;50.图6为本技术公开的一种文件完整性校验装置结构示意图;51.图7为本技术公开的一种电子设备结构图。具体实施方式52.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。53.当前,uefi安全启动的核心就是利用数字签名来确认uefi驱动程序、uefi固件程序或者应用程序是否被篡改,是否被信任。目前,在uefi标准中采用authenticode技术(即代码签名技术),使用md5(messagedigest5,消息摘要5)算法、sha256(securehashalgorithm256,安全散列算法256)等散列算法,rsa数字签名算法,不满足国家密码管理局商用密码标准,其中,使用rsa数字签名算法,运行效率低,尤其有大量uefi映像文件需要被验证时尤为明显,严重影响计算机启动速度,而且使用公钥密码体制的消息认证,需要部署公钥基础设施,部署复杂,导致成本较高。为此,本技术提供了一种文件完整性校验方法,能够防止uefi映像文件中核心代码或数据被篡改或被破坏。54.本发明实施例公开了一种文件完整性校验方法,参见图1所示,该方法包括:55.步骤s11:基于当前输入的密钥授权值获取相应的hmac-sm3密钥,并验证uefi映像文件对应的pe文件格式是否正确。56.本实施例中,基于当前输入的密钥授权值获取相应的hmac-sm3密钥。可以理解的是,hmac-sm3密钥隐藏相应的密钥隐藏区,并且该密钥隐藏区为利用加密密钥加密后的隐藏区,所以需要基于密钥授权值来获取hmac-sm3密钥,其中,hmac-sm3密钥隐藏至密钥隐藏区的具体过程可以包括:将hmac-sm3密钥进行均分得到多个均分后密钥,并将各所述均分后密钥分散保存至预先确定的密钥隐藏区中;基于预设授权值生成相应的加密密钥,并利用所述加密密钥对所述密钥隐藏区进行加密,相应的,所述基于当前输入的密钥授权值获取相应的hmac-sm3密钥,具体可以包括:利用当前输入的密钥授权值生成相应的解密密钥,并利用所述解密密钥对所述密钥隐藏区进行解密得到相应的解密结果;如果所述解密结果表明对所述密钥隐藏区解密成功,则获取所述密钥隐藏区中的密钥数据,并根据预设重组规则对所述密钥数据进行重组得到相应的hmac-sm3密钥。也就是说,将hmac-sm3密钥均分后保存至密钥隐藏区,并对密钥隐藏区进行加密,所以要获取hmac-sm3密钥时就需要解密该密钥隐藏区,从而对取出的密钥进行重组后得到该hmac-sm3密钥。57.需要指出的是,上述pe文件格式,即portableexecutablefileformat,可移植的执行文件格式,是windows下的标准执行文件格式,比如.exe,.dll,.sys等。其中,pe文件是由许许多多的结构体组成的,程序在运行时就会通过这些结构快速定位到pe文件的各种资源,如代码段、数据段,资源段等,pe文件的结构,如图2所示,从上到下依次是dos头、pe头、节表头、节区和调试信息,其中,所述调试信息是可选的。pe文件头保存着整个pe文件的索引信息,根据所述索引信息可以帮助pe装载器定位资源,而节区则保存着整个pe文件的所有资源。其中,uefi映像文件的格式使用上述pe文件格式。58.本实施例中,还需要验证uefi映像文件对应的pe文件格式是否正确。可以理解的是,验证uefi映像文件对应的pe文件格式中的pe文件头校验值是否正确。59.步骤s12:若所述uefi映像文件对应的所述pe文件格式正确,则获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,并基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值。60.本实施例中,在验证uefi映像文件对应的pe文件格式是否正确时,若所述uefi映像文件的所述pe文件格式不正确,则禁止加载所述uefi映像文件。如果所述uefi映像文件对应的所述pe文件格式正确,则获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,并基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值。61.需要指出的是,如图3所示,由基于sm3的hamc算法计算出来的完整性校验值直接嵌入至uefi映像文件中,作为一个单独pe文件节,从而避免单独管理完整性校验值,其中,在uefi映像文件未被篡改时,基于sm3的hamc算法计算出来的完整性校验值隐藏至校验值隐藏区中,具体的隐藏过程可以包括:将完整性校验值进行均分得到多个均分后校验值,并将各所述均分后校验值分散保存至所述uefi映像文件的校验值隐藏区中,所以在获取所述uefi映像文件中的第一完整性校验值时,对所述uefi映像文件对应的所述pe文件格式进行解析以获取所述校验值隐藏区中的校验值数据;根据所述预设重组规则对所述校验值数据进行重组得到第一完整性校验值。62.将计算出来的完整性校验值嵌入uefi映像文件中,也即,在所述uefi映像文件中插入一个新节表,并将所述校验值隐藏区中的所述校验值数据写入所述新节表;对所述uefi映像文件中的pe头和节表头进行重构;所以在验证uefi映像文件对应的pe文件格式是否正确,还可以包括:验证所述uefi映像文件对应的pe文件格式中的重构后pe文件头对应的校验值是否正确并验证所述uefi映像文件中是否存在插入的所述新节表。63.本实施例中,所述基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值,可以包括:对所述uefi映像文件对应的所述pe文件格式进行解析以获取所述uefi映像文件对应的关键段资源;基于所述hmac-sm3密钥和调用的基于sm3的hmac算法对所述关键段资源进行计算以得到第二完整性校验值。64.可以理解的是,在校验值隐藏区中隐藏有所述uefi映像文件未被篡改前计算的完整性校验值,即第一完整性校验值,所以在所述uefi映像文件对应的pe文件格式正确时,从该校验值隐藏区中获取第一完整性校验值,为了验证该uefi映像文件是否被篡改,还需要基于sm3的hamc算法重新计算该uefi映像文件的完整性校验值,即第二完整性校验值。65.需要指出的是,为保障商用密码应用的安全性,国家密码管理局制订了一系列商用密码算法,包括商密sm3算法,。基于商密sm3的hmac算法是一个消息鉴别码算法,该算法基于sm3信息摘要算法和一个密钥实现,用于高安全的数据完整性保护。基于商密sm3的hmac算法的安全性不完全依赖于hmac-sm3算法,还依赖于所使用的密钥,该密钥是由双方事先协商或约定,第三方不可能知道,所以使用基于商密sm3的hmac算法对数据进行完整性保护的安全性高于sm3信息摘要算法,使用国家密码管理局基于商密sm3的hmac算法,可以在保证密码强度的情况下,显著提高uefi映像文件的验证性能,而且使用hmac-sm3算法的hmac,不需要部署公钥基础设施,易于维护和部署,运行速度快,抵抗密码分析的强度等同于散列函数强度。66.例如,uefi映像文件的完整性保护采用上述基于商密sm3的hmac算法,使用的密钥是sm3key,计算所得的完整性校验值是sm3value。其中,sm3key存储在uefibiosflash区中,即sm3keybuf,在平台出厂时使用管理程序写入,上述完整性校验值sm3value存储在uefi映像文件中机,sm3valuebuf,在映像文件发布前使用校验管理程序写入,存储的格式如表1所示:67.数据字段说明sm3keybuf[n]sm3key隐藏区sm3valuebuf[n]sm3value隐藏区[0068]其中,n表示字节长度。[0069]将sm3key均分为多个部分,根据预定规则,将均分出来的这各个部分分散隐藏于sm3keybuf区,使用授权值派生出加密密钥,利用该加密密钥对sm3keybuf区进行加密;同理,将sm3value均分为多个部分,根据预定规则,将均分出来的这各个部分分散隐藏于sm3valuebuf区。[0070]步骤s13:判断所述第一完整性校验值和所述第二完整性校验值是否一致得到相应的判断结果。[0071]本实施例中,确定出所述第一完整性校验值和所述第二完整性校验值之后,判断所述第一完整性校验值和所述第二完整性校验值是否一致得到相应的判断结果。[0072]步骤s14:基于所述判断结果确定所述uefi映像文件的完整性校验是否成功。[0073]本实施例中,基于所述判断结果确定所述uefi映像文件的完整性校验是否成功。可以理解的是,如果所述判断结果表明所述第一完整性校验值和所述第二完整性校验值一致,则判定所述uefi映像文件的完整性校验成功,并运行加载所述uefi映像文件;如果所述判断结果表明所述第一完整性校验值和所述第二完整性校验值不一致,则判定所述uefi映像文件的完整性校验失败,并禁止加载所述uefi映像文件。[0074]可见,本技术实施例中,针对于应用程序对其使用的uefi映像文件有完整性保护要求的情况下,对uefi映像文件进行完整性校验,即在uefi映像文件对应的pe文件格式正确时,获取该uefi映像文件中的第一完整性校验值,并基于调用的hmac-sm3算法和获取到的hmac-sm3密钥确定出该uefi映像文件的第二完整性校验值,然后判断该第一完整性校验值和该第二完整性校验值是否一致,基于该判断结果确定uefi文件的完整性校验是否成功,从而能够防止uefi映像文件中核心代码或数据被篡改或被破坏。[0075]例如,如图4所示,在uefi映像文件完整性校验值生成的过程中,启动uefi映像文件完整性数据生成程序,即输入sm3key授权,取得sm3key数据,然后将uefi映像文件加载到内存,并验证uefi映像文件的格式是否正确,即pe文件头校验值是否正确;当验证出所述uefi映像文件的格式正确时,计算出映像文件的hmacsm3值,即计算该uefi映像文件完整性校验值,具体的计算过程包括:解析uefi映像文件的文件格式,取出代码段,数据段等,然后调用hmac-sm3算法,计算uefi映像文件的所述代码段、所述数据段等的校验值sm3value,将sm3value均分为多部分,根据预定重组规则,分散隐藏于sm3valuebuf区,并在uefi映像文件中插入一个新节表,把sm3valuebuf数据写入节表中,也即将所示hmacsm3值写入到映像文件中,重组映像文件,即重构uefi映像文件的pe头,节表头。[0076]例如,如图5所示,在uefi映像文件完整性校验过程中,在uefi环境下,启动uefi映像文件完整性校验程序,即输入sm3key授权,取得sm3keybuf数据,根据预定重组规则,把sm3keybuf数据进行重组,得到sm3key,将uefi映像文件加载到内存,验证uefi映像文件格式是否正确,pe文件头校验值是否正确,当验证出所述uefi映像文件的格式正确时,解析uefi映像文件的文件格式,取出sm3valuebuf数据;根据规则,把sm3valuebuf数据进行重组,得到sm3value1,解析uefi映像文件的文件格式,取出代码段,数据段等,调用hmac-sm3算法,重新计算uefi映像文件的代码段、数据段等的校验值sm3value2;然后将sm3value1与sm3value2进行比较,如果sm3value1与sm3value2一致,则表示完整性校验成功,运行加载uefi映像文件,如果sm3value1与sm3value2不一致,则表示完整性校验失败,拒绝加载uefi映像文件。[0077]相应的,本技术实施例还公开了一种文件完整性校验装置,参见图6所示,该装置包括:[0078]密钥获取模块11,用于基于当前输入的密钥授权值获取相应的hmac-sm3密钥;[0079]文件格式验证模块12,用于验证uefi映像文件对应的pe文件格式是否正确;[0080]校验值获取模块13,用于当所述uefi映像文件对应的所述pe文件格式正确时,则获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,并基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值;[0081]判断模块14,用于判断所述第一完整性校验值和所述第二完整性校验值是否一致得到相应的判断结果;[0082]完整性校验确定模块15,用于基于所述判断结果确定所述uefi映像文件的完整性校验是否成功。[0083]由上可见,本技术实施例中,针对于应用程序对其使用的uefi映像文件有完整性保护要求的情况下,对uefi映像文件进行完整性校验,即应用程序对其使用的uefi映像文件有完整性保护要求的情况下,在uefi映像文件对应的pe文件格式正确时,获取该uefi映像文件中的第一完整性校验值,并基于调用的hmac-sm3算法和获取到的hmac-sm3密钥确定出该uefi映像文件的第二完整性校验值,然后判断该第一完整性校验值和该第二完整性校验值是否一致,基于该判断结果确定uefi文件的完整性校验是否成功,从而能够防止uefi映像文件中核心代码或数据被篡改或被破坏。[0084]在一些具体的实施例中,所述文件完整性校验装置,具体可以包括:[0085]密钥均分模块,用于将hmac-sm3密钥进行均分得到多个均分后密钥;[0086]密钥隐藏模块,用于将各所述均分后密钥分散保存至预先确定的密钥隐藏区中;[0087]加密密钥生成模块,用于基于预设授权值生成相应的加密密钥;[0088]隐藏区加密模块,用于利用所述加密密钥对所述密钥隐藏区进行加密;[0089]相应的,所述密钥获取模块11,具体可以包括:[0090]解密密钥生成模块,用于利用当前输入的密钥授权值生成相应的解密密钥;[0091]隐藏区解密模块,用于利用所述解密密钥对所述密钥隐藏区进行解密得到相应的解密结果;[0092]密钥数据获取模块,用于当所述解密结果表明对所述密钥隐藏区解密成功时,则获取所述密钥隐藏区中的密钥数据;[0093]密钥重组模块,用于根据预设重组规则对所述密钥数据进行重组得到相应的hmac-sm3密钥。[0094]在一些具体的实施例中,所述文件完整性校验装置,具体可以包括:[0095]校验值均分模块,用于将完整性校验值进行均分得到多个均分后校验值;[0096]校验值隐藏模块,用于将各所述均分后校验值分散保存至所述uefi映像文件的校验值隐藏区中;[0097]相应的,所述校验值获取模块13,具体可以包括:[0098]第一格式解析模块,用于对所述uefi映像文件对应的所述pe文件格式进行解析以获取所述校验值隐藏区中的校验值数据;[0099]校验值重组模块,用于根据所述预设重组规则对所述校验值数据进行重组得到第一完整性校验值。[0100]在一些具体的实施例中,所述文件完整性校验装置,具体可以包括:[0101]节表插入模块,用于在所述uefi映像文件中插入一个新节表;[0102]数据写入模块,用于将所述校验值隐藏区中的所述校验值数据写入所述新节表;[0103]文件重构模块,用于对所述uefi映像文件中的pe头和节表头进行重构;[0104]在一些具体的实施例中,所述文件格式验证模块12,具体可以包括:[0105]第一验证模块,用于验证所述uefi映像文件对应的pe文件格式中的重构后pe文件头对应的校验值是否正确;[0106]第二验证模块,用于验证所述uefi映像文件中是否存在插入的所述新节表。[0107]在一些具体的实施例中,所述校验值获取模块13,具体可以包括:[0108]第二格式解析模块,用于对所述uefi映像文件对应的所述pe文件格式进行解析以获取所述uefi映像文件对应的关键段资源;[0109]资源计算模块,用于基于所述hmac-sm3密钥和调用的所述hmac-sm3算法对所述关键段资源进行计算以得到第二完整性校验值。[0110]在一些具体的实施例中,所述完整性校验确定模块15,具体可以包括:[0111]第一判定模块,用于在所述判断结果表明所述第一完整性校验值和所述第二完整性校验值一致时,则判定所述uefi映像文件的完整性校验成功,并运行加载所述uefi映像文件;[0112]第二判定模块,用于在所述判断结果表明所述第一完整性校验值和所述第二完整性校验值一致时,则判定所述uefi映像文件的完整性校验失败,并禁止加载所述uefi映像文件。[0113]在一些具体的实施例中,所述文件完整性校验装置,具体可以包括:[0114]加载禁止模块,用于在所述uefi映像文件的所述pe文件格式不正确时,则禁止加载所述uefi映像文件。[0115]进一步的,本技术实施例还提供了一种电子设备。图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。[0116]图7为本技术实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的文件完整性校验方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。[0117]本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。[0118]另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。[0119]其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是windowsserver、netware、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的文件完整性校验方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。[0120]进一步的,本技术实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的文件完整性校验方法步骤。[0121]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。[0122]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0123]以上对本发明所提供的一种文件完整性校验方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
技术特征:
1.一种文件完整性校验方法,其特征在于,包括:基于当前输入的密钥授权值获取相应的hmac-sm3密钥,并验证uefi映像文件对应的pe文件格式是否正确;若所述uefi映像文件对应的所述pe文件格式正确,则获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,并基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值;判断所述第一完整性校验值和所述第二完整性校验值是否一致得到相应的判断结果;基于所述判断结果确定所述uefi映像文件的完整性校验是否成功。2.根据权利要求1所述的文件完整性校验方法,其特征在于,还包括:将hmac-sm3密钥进行均分得到多个均分后密钥,并将各所述均分后密钥分散保存至预先确定的密钥隐藏区中;基于预设授权值生成相应的加密密钥,并利用所述加密密钥对所述密钥隐藏区进行加密;相应的,所述基于当前输入的密钥授权值获取相应的hmac-sm3密钥,包括:利用当前输入的密钥授权值生成相应的解密密钥,并利用所述解密密钥对所述密钥隐藏区进行解密得到相应的解密结果;如果所述解密结果表明对所述密钥隐藏区解密成功,则获取所述密钥隐藏区中的密钥数据,并根据预设重组规则对所述密钥数据进行重组得到相应的hmac-sm3密钥。3.根据权利要求1所述的文件完整性校验方法,其特征在于,还包括:将完整性校验值进行均分得到多个均分后校验值,并将各所述均分后校验值分散保存至所述uefi映像文件的校验值隐藏区中;相应的,所述获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,包括:对所述uefi映像文件对应的所述pe文件格式进行解析以获取所述校验值隐藏区中的校验值数据;根据所述预设重组规则对所述校验值数据进行重组得到第一完整性校验值。4.根据权利要求3所述的文件完整性校验方法,其特征在于,还包括:在所述uefi映像文件中插入一个新节表,并将所述校验值隐藏区中的所述校验值数据写入所述新节表;对所述uefi映像文件中的pe头和节表头进行重构;相应的,所述验证uefi映像文件对应的pe文件格式是否正确,包括:验证所述uefi映像文件对应的pe文件格式中的重构后pe文件头对应的校验值是否正确并验证所述uefi映像文件中是否存在插入的所述新节表。5.根据权利要求1所述的文件完整性校验方法,其特征在于,所述基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值,包括:对所述uefi映像文件对应的所述pe文件格式进行解析以获取所述uefi映像文件对应的关键段资源;基于所述hmac-sm3密钥和调用的所述hmac-sm3算法对所述关键段资源进行计算以得
到第二完整性校验值。6.根据权利要求1所述的文件完整性校验方法,其特征在于,所述基于所述判断结果确定所述uefi映像文件的完整性校验是否成功,包括:如果所述判断结果表明所述第一完整性校验值和所述第二完整性校验值一致,则判定所述uefi映像文件的完整性校验成功,并运行加载所述uefi映像文件;如果所述判断结果表明所述第一完整性校验值和所述第二完整性校验值不一致,则判定所述uefi映像文件的完整性校验失败,并禁止加载所述uefi映像文件。7.根据权利要求1至6任一项所述的文件完整性校验方法,其特征在于,所述验证uefi映像文件对应的pe文件格式是否正确之后,还包括:若所述uefi映像文件的所述pe文件格式不正确,则禁止加载所述uefi映像文件。8.一种文件完整性校验装置,其特征在于,包括:密钥获取模块,用于基于当前输入的密钥授权值获取相应的hmac-sm3密钥;文件格式验证模块,用于验证uefi映像文件对应的pe文件格式是否正确;校验值获取模块,用于当所述uefi映像文件对应的所述pe文件格式正确时,则获取所述uefi映像文件中的完整性校验值,得到第一完整性校验值,并基于所述hmac-sm3密钥和调用的hmac-sm3算法重新确定出所述uefi映像文件中的所述完整性校验值,得到第二完整性校验值;判断模块,用于判断所述第一完整性校验值和所述第二完整性校验值是否一致得到相应的判断结果;完整性校验确定模块,用于基于所述判断结果确定所述uefi映像文件的完整性校验是否成功。9.一种电子设备,其特征在于,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的文件完整性校验方法的步骤。10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的文件完整性校验方法的步骤。
技术总结
本申请公开了一种文件完整性校验方法、装置、设备及存储介质,涉及计算机技术领域,包括:基于当前输入的密钥授权值获取相应的HMAC-SM3密钥,并验证UEFI映像文件对应的PE文件格式是否正确;若正确,则获取UEFI映像文件中的完整性校验值,得到第一完整性校验值,并基于HMAC-SM3密钥和调用的HMAC-SM3算法重新确定出UEFI映像文件中的完整性校验值,得到第二完整性校验值;基于判断第一完整性校验值和第二完整性校验值是否一致的判断结果确定UEFI映像文件的完整性校验是否成功。本申请通过判断UEFI映像文件中的第一完整性校验值和重新确定的第二完整性校验值是否一致确定该映像文件的完整性校验是否成功,从而能够防止UEFI映像文件中核心代码或数据被篡改或被破坏。坏。坏。
技术研发人员:胡蓬 黄锦 潘利华
受保护的技术使用者:中电科网络安全科技股份有限公司
技术研发日:2023.05.11
技术公布日:2023/8/4
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/