CN106203100A - 一种完整性校验方法和装置 - Google Patents
一种完整性校验方法和装置 Download PDFInfo
- Publication number
- CN106203100A CN106203100A CN201510212803.8A CN201510212803A CN106203100A CN 106203100 A CN106203100 A CN 106203100A CN 201510212803 A CN201510212803 A CN 201510212803A CN 106203100 A CN106203100 A CN 106203100A
- Authority
- CN
- China
- Prior art keywords
- baseline
- code segment
- self
- data
- network equipment
- 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
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种完整性校验方法和装置,应用于网络设备,当系统进程的代码段加载到所述网络设备的内存中时,所述网络设备得到对应所述代码段的基线,通过对所述基线执行预置处理得到自校验数据,并建立所述基线与所述自校验数据的第二对应关系,在所述代码段驻留在所述内存期间,在对所述代码段进行所述完整性校验之前,根据所述代码段、第一对应关系和所述第二对应关系查找到所述自校验数据,通过所述自校验数据对所述基线进行校验,当校验结果为相同时判断所述基线没有被修改,使用所述基线对所述代码段执行所述完整性校验,通过自校验数据使得所述网络设备具有识别所述基线是否被篡改的能力,提高了对代码段进行完整性校验的准确度。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种完整性校验方法和装置。
背景技术
网络设备通过对自身代码的完整性校验,能够校验结果判断出所述网络设备中的硬件代码或者软件代码是否出现被恶意篡改,由此可以有效防止所述网络设备中的隐私信息泄露,是一种网络设备提高自身安全性的常用手段之一。
所述完整性校验常用于具有嵌入式系统的网络设备中,具有嵌入式系统的网络设备较为常见的包括单片机、具有联网功能的智能冰箱等。该网络设备对预先获取嵌入式系统内各个代码段进行哈希(Hash)计算,得到与代码段一一对应的基线(Benchmark)并保存。保存的基线可以作为后续完整性校验的标准。该网络设备在运行过程中,会周期性对存储的代码段进行完整性校验,所述完整性校验可以理解为对代码段进行相同的哈希计算得到计算结果,比对同一代码段的计算结果和对应的基线。如果针对一个代码段的比对结果为相同,则该网络设备可以确定该代码段是完整的,没有被篡改。为了保证校验的准确性,用于比对的基线被保存在CPU内,不允许写入操作,所以安全级别很高,基本上不可能出现基线被篡改的情况。
嵌入式系统的特点是系统内的代码段数量较少且较为固定,所以代码段所对应的基线数量也较少也较为固定。基线的数量少且固定的特点使得具有嵌入式系统的网络设备可以将基线保存在存储空间有限的CPU中,从而给予基线较高的存储安全级别。但是对于具有通用系统的网络设备来说,通用系统的特点是系统内代码段的数量可以非常多,且不固定,例如在通用系统中可以随时安装各类软件或反向卸载,使得具有通用系统的网络设备需要具有保存大量基线的能力,而通用系统的CPU有限的存储空间不具有存储大量基线的能力。故具有通用系统的网络设备目前只能将基线存储在安全级别较低的存储介质中。
在安全级别低的存储介质中,由于不限制读写操作,所以无法保证基线不被篡改,而且即使基线被篡改,网络设备也没有能力发现,从而降低了完整性校验的准确性。例如黑客篡改了代码段并对应篡改了用于校验该代码段的基线,可能会导致网络设备使用篡改后的基线验证篡改后的代码段也能通过完整性校验。该网络设备无法发现基线被篡改将为用户安全带来巨大隐患。
发明内容
为了解决上述技术问题,本发明实施例提供了一种完整性校验方法和装置,为基线保存对应的自校验数据,使得网络设备在对代码段进行完整性校验前,可以通过自校验数据判断基线是否被篡改。
第一方面,本发明实施例提供了一种完整性校验方法,应用于网络设备,所述方法包括:
当系统进程的代码段加载到所述网络设备的内存中时,所述网络设备对所述代码段进行哈希计算,根据所述哈希计算的结果得到对应所述代码段的基线,并建立所述基线与所述代码段之间的第一对应关系;
所述网络设备通过对所述基线执行预置处理得到自校验数据,并建立所述基线与所述自校验数据的第二对应关系,所述自校验数据用于作为校验所述基线是否被修改的判断条件;
在所述代码段驻留在所述内存期间,在对所述代码段进行所述完整性校验之前,所述网络设备根据所述代码段和所述第一对应关系查找到所述基线;
所述网络设备根据所述基线和所述第二对应关系查找到所述自校验数据;
所述网络设备通过所述自校验数据对所述基线进行校验,所述校验具体包括:所述网络设备对所述基线执行所述预置处理得到第一待比对数据,比对所述自校验数据和所述第一待比对数据,或者,所述网络设备对所述自校验数据反向执行所述预处理还原出第二待比对数据,比对所述自校验数据和所述第二待比对数据是否相同;
当校验结果为相同时,所述网络设备判断所述基线没有被修改,使用所述基线对所述代码段执行所述完整性校验。
在第一方面的第一种可能的实现方式中,所述网络设备通过对所述基线处理得到自校验数据,具体包括:
所述网络设备通过自身对应的私钥对所述基线进行数字签名,将数字签名结果作为所述基线的自校验数据。
结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述网络设备通过对所述基线执行预置处理得到自校验数据之后,还包括:
所述网络设备对所述基线进行加密,得到加密后的所述基线;
所述网络设备根据所述代码段和所述第一对应关系查找到所述基线具体包括:
所述网络设备根据所述代码段和所述第一对应关系查找到加密后的所述基线,对加密后的所述基线进行反向解密得到所述基线。
结合第一方面或者第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,当所述系统进程的代码段加载到所述网络设备的内存中时,还包括:
所述网络设备获取所述代码段的逻辑地址,所述逻辑地址包括所述代码段的首尾地址;
在对所述代码段进行所述完整性校验之前,所述网络设备通过所述逻辑地址获取所述代码段。
在第一方面的第四种可能的实现方式中,还包括:
当所述代码段从所述内存中移除时,根据所述第一对应关系和所述第二对应关系查找到并删除所述基线和所述自校验数据。
结合第一方面或者第一方面的第一种或第二种或第三种或第四种可能的实现方式,在第五种可能的实现方式中,还包括:
所述网络设备将所述基线以及对应的自校验数据保存在进程控制块PCB中,以提高所述网络设备通过所述第一对应关系和所述第二对应关系进行查找的查找速度。
第二方面,本发明实施例提供了一种完整性校验装置,应用于网络设备,包括:
计算单元,用于当系统进程的代码段加载到所述网络设备的内存中时,对所述代码段进行哈希计算,根据所述哈希计算的结果得到对应所述代码段的基线,并建立所述基线与所述代码段之间的第一对应关系;
处理单元,用于通过对所述基线执行预置处理得到自校验数据,并建立所述基线与所述自校验数据的第二对应关系,所述自校验数据用于作为校验所述基线是否被修改的判断条件;
查找单元,用于在所述代码段驻留在所述内存期间,在对所述代码段进行所述完整性校验之前,根据所述代码段和所述第一对应关系查找到所述基线;
所述查找单元还用于根据所述基线和所述第二对应关系查找到所述自校验数据;
校验单元,用于通过所述自校验数据对所述基线进行校验,所述校验具体包括:所述网络设备对所述基线执行所述预置处理得到第一待比对数据,比对所述自校验数据和所述第一待比对数据,或者,所述网络设备对所述自校验数据反向执行所述预处理还原出第二待比对数据,比对所述自校验数据和所述第二待比对数据是否相同;
判断单元,用于当校验结果为相同时,判断所述基线没有被修改,使用所述基线对所述代码段执行所述完整性校验。
在第二方面的第一种可能的实现方式中,
所述处理单元具体用于通过自身对应的私钥对所述基线进行数字签名,将数字签名结果作为所述基线的自校验数据。
结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
加密单元,用于在触发所述处理单元之后,对所述基线进行加密,得到加密后的所述基线;
所述查找单元具体用于根据所述代码段和所述第一对应关系查找到加密后的所述基线,对加密后的所述基线进行反向解密得到所述基线。
结合第二方面或者第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,还包括:
第一获取单元,用于在触发所述计算单元时,获取所述代码段的逻辑地址,所述逻辑地址包括所述代码段的首尾地址;
第二获取单元,用于在触发判断单元之前,通过所述逻辑地址获取所述代码段。
在第二方面的第四种可能的实现方式中,还包括:
移除单元,用于当所述代码段从所述内存中移除时,根据所述第一对应关系和所述第二对应关系查找到并删除所述基线和所述自校验数据。
结合第二方面或者第二方面的第一种或第二种或第三种或第四种可能的实现方式,在第五种可能的实现方式中,还包括:
保存单元,用于将所述基线以及对应的自校验数据保存在进程控制块PCB中,以提高所述网络设备通过所述第一对应关系和所述第二对应关系进行查找的查找速度。
由上述技术方案可以看出,所述网络设备通过对所述基线处理得到对应的自校验数据,通过所述自校验数据可以验证对应基线的完整性,使得所述网络设备具有识别所述基线是否被篡改的能力,所述网络设备使用确认没有被篡改的基线对代码段进行完整性校验,提高了校验准确度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种完整性校验方法的方法流程图;
图2为本发明实施例提供的一种完整性校验方法的方法流程图;
图3为本发明实施例提供的一种完整性校验装置的装置结构图;
图4为本发明实施例提供的一种完整性校验装置的装置结构图。
具体实施方式
现有技术中,对系统中代码段的完整性校验主要应用于具有嵌入式系统的网络设备中,例如单片机或者智能冰箱等。由于嵌入式系统中的代码段数量有限,且代码段变化较少、相对固定,故对应这些代码段的基线的数量和内容一般基本不变,具有存储容量小,改变少的特点。由此可以预先配置存储在不允许写操作、且存储空间有限的CPU内核中。
但是,在使用范围更广的、具有通用系统的网络设备中,通用系统所包含的代码段数量相对更多,内容也具有变化频繁的可能。例如智能手机就是一种典型的具有通用系统的网络设备,智能手机系统中基本上可以不受限制的安装各类软件应用,那么针对这些软件应用代码段的基线的数量将会很多,将无法再和嵌入式系统一样使用存储空间有限的CPU来存储基线,而只能将基线存储在安全级别相对较低的存储介质中,无法保证基线不被篡改的可能性。由于目前网络设备没有判断基线是否被篡改的能力,将导致对代码段的完整性校验的校验结果可信度不高,若代码段通过完整性校验,也不能判定该代码段没有被篡改。或者若代码段没有通过完整性校验,也无法判定到底是由于代码段被篡改还是基线被篡改导致的。
为此,本发明实施例提供了一种完整性校验方法和装置,所述网络设备通过对所述基线处理得到对应的自校验数据,通过所述自校验数据可以验证对应基线的完整性,使得所述网络设备具有识别所述基线是否被篡改的能力,所述网络设备使用确认没有被篡改的基线对代码段进行完整性校验,提高了校验准确度。
在为基线建立用于校验基线完整性的自校验数据的基础上,本发明实施例还提供了通过对基线加密的方法,通过自校验加上对基线加密的双重保护,进一步提高了基线的安全性,能够让网络设备可以有效的判断出基线是否被篡改。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1为本发明实施例提供的一种完整性校验方法的方法流程图,应用于网络设备,所述方法包括:
S101:当系统进程的代码段加载到所述网络设备的内存中时,所述网络设备对所述代码段进行哈希计算,根据所述哈希计算的结果得到对应所述代码段的基线,并建立所述基线与所述代码段之间的第一对应关系。
举例说明,当有代码段(Code Segment)加载到所述网络设备的内存中时,网络设备可以通过内存中的进程控制块(Processing Control Block,PCB)获知,并还可以获取该进程段的相关信息,例如进程段的首尾地址等。所述网络设备可以在所述代码段被首次执行之前,对所述代码段进行第一次可信度量,通过哈希(Hash)计算得到对应所述代码段的基线。计算基线的过程可以参加如下方式:
App Code Segment[i]=Code Segment(start-address[i],end-address[i]);
其中,
App Code Segment[i]为所述代码段,i为对应所述代码段的标识或编号等。
start-address[i],end-address[i]为所述代码段的首地址和尾地址。
哈希计算的计算公式可以如下所示:
Hash[i]=SHA256(App Code Segment[i]);
其中,
SHA256为安全哈希算法(Secure Hash Algorithm,SHA)的一种具体位数的算法,本发明并不限定一定使用SHA256来进行哈希计算,也可以是其他哈希算法。
将所述哈希计算得出的结果作为所述代码段的基线,并绑定所述代码段和基线,也就是建立所述代码段与基线的第一对应关系。
需要注意,本发明实施例所应用的所述网络设备主要为具有通用系统的网络设备,也可以是具有嵌入式系统的网络设备。
S102:所述网络设备通过对所述基线执行预置处理得到自校验数据,并建立所述基线与所述自校验数据的第二对应关系,所述自校验数据用于作为校验所述基线是否被修改的判断条件。
举例说明,通过执行预置处理得到自校验数据的方式可以为通过算法获取所述基线内容的摘要,以摘要作为自校验数据,或者通过数字签名(DigitalSignature或者Signature)等方式,本发明对此不做限定。可选的,本发明实施例提供了一种通过对所述基线执行预置处理得到自校验数据的方式,具体包括:
所述网络设备通过自身对应的私钥对所述基线进行数字签名,将数字签名结果作为所述基线的自校验数据。
举例说明,所述私钥可以理解为非对称密钥中的私钥,与所述网络设备具有对应关系。所述私钥可以存储在所述网络设备的安全运行中心(SecurityOperations Center,SOC)中。通过数字签名后的得到的所述数字签名结果可以通过非对称密钥中对应私钥的公钥进行解密,完成对所述基线的完整性校验。
S103:在所述代码段驻留在所述内存期间,在对所述代码段进行所述完整性校验之前,所述网络设备根据所述代码段和所述第一对应关系查找到所述基线。
S104:所述网络设备根据所述基线和所述第二对应关系查找到所述自校验数据。
S105:所述网络设备通过所述自校验数据对所述基线进行校验,所述校验具体包括:所述网络设备对所述基线执行所述预置处理得到第一待比对数据,比对所述自校验数据和所述第一待比对数据,或者,所述网络设备对所述自校验数据反向执行所述预处理还原出第二待比对数据,比对所述自校验数据和所述第二待比对数据是否相同。
S106:当校验结果为相同时,所述网络设备判断所述基线没有被修改,使用所述基线对所述代码段执行所述完整性校验。
举例说明,为了保证校验所述代码段的基线没有被篡改,将在校验所述代码段的完整性之前,使用所述自校验数据对所述基线进行完整性校验。由于所述自校验数据是通过完整的、未被篡改的所述基线处理生成,若所述基线被篡改,则在使用所述自校验数据进行校验的过程中必然可以发现。并在通过所述校验确定所述基线没有被篡改的情况下,使用所述基线校验所述代码段的完整性,当所述完整性校验成功时,可以明确确认所述代码段完整,当所述完整性校验不成功时,可以明确确认所述代码段不完整。
需要注意,所述网络设备对所述代码段的完整性校验可以周期性进行。
还需要注意,通过所述自校验数据对所述基线进行校验的过程可以与所述自校验数据的类型相关,例如当所述自校验数据通过特定算法根据所述基线计算得到的摘要,那么在对所述基线进行所述校验过程中,可以对所述基线通过相同所述特定算法计算出摘要,再和所述自校验数据进行比对。若所述自校验数据为通过私钥数字签名得到,那么在对所述基线进行所述校验过程中,可以对所述自校验数据反向执行所述预处理,也就是使用所述私钥对应的公钥对所述数字签名结果进行解密,将解密出的内容与所述基线进行比对。本发明实施例对其他可能的通过所述自校验数据对所述基线进行校验的过程在此不再一一穷举。
当比对结果为相同时,所述基线被确定为未被修改,则可以使用所述基线对所述代码段进行完整性校验,所述完整性校验的过程可以对所述代码段使用与步骤S101中获得所述基线的所使用哈希算法相同的哈希算法,例如为
PCR[i]=SHA256(App Code Segment[i])
其中,PCR[i]为对应所述代码段的平台配置寄存器(Platform ConfigurationRegister,PCR)。
当PCR[i]=Hash[i]时,可以确定所述代码段通过所述完整性校验,所述代码段未被修改。
可见,所述网络设备通过对所述基线处理得到对应的自校验数据,通过所述自校验数据可以验证对应基线的完整性,使得所述网络设备具有识别所述基线是否被篡改的能力,所述网络设备使用确认没有被篡改的基线对代码段进行完整性校验,提高了校验准确度。
实施例二
除了对所述基线进行处理得到自校验数据外,本发明实施例还可以在此基础上,进一步提高对所述基线的安全保护。在图1所对应的实施例基础上,图2为本发明实施例提供的一种完整性校验方法的方法流程图,所述方法包括:
S201:当系统进程的代码段加载到所述网络设备的内存中时,所述网络设备对所述代码段进行哈希计算,根据所述哈希计算的结果得到对应所述代码段的基线,并建立所述基线与所述代码段之间的第一对应关系。
举例说明,当所述代码段加载到所述内存中时,所述网络设备可以通过PCB获取所述代码段的首尾地址,所述首尾地址可以是所述代码段占用内存中的物理地址,也可以是所述代码段的逻辑地址。需要注意是的,当所述网络设备部署有通用系统时,由于通用系统的灵活性特点,可能会导致在执行所述代码段之后,所述代码段在内存中的物理地址发生改变,但所述代码段的逻辑地址一般相对固定。所述网络设备可以获取所述代码段的逻辑地址,所述逻辑地址包括所述代码段的首尾地址,使用所述代码段的逻辑地址进行哈希计算,可以得到较为准确的基线。在之后周期性的对所述代码段执行完整性校验之前,所述网络设备通过所述逻辑地址获取所述代码段,使用所述代码段的逻辑地址可以从所述内存中准确快速的查找到所述代码段。
S202:所述网络设备通过对所述基线执行预置处理得到自校验数据,并建立所述基线与所述自校验数据的第二对应关系,所述自校验数据用于作为校验所述基线是否被修改的判断条件。
由于所述代码段与所述基线,所述基线与所述自校验数据均具有对应关系,故在选择存储所述基线和所述自校验数据的存储位置时,可以将所述基线和所述自校验数据存储到与所述代码段存储的同一存储介质中,以提高之后的查找效率。故可选的,所述网络设备将所述基线以及对应的自校验数据保存在PCB中,以提高所述网络设备通过所述第一对应关系和所述第二对应关系进行查找的查找速度。所述网络设备可以在所述PCB中新增字段用于专门存储所述基线和所述自校验数据。
还需要注意,在具有通用系统的移动终端中,内存中的代码段可以被移除,若所述代码段被移除,如果还继续保存对应所述代码段的所述基线和自校验数据,可能会造成系统资源的浪费。为此,可选的,本发明实施例还提供了,当所述代码段从所述内存中移除时,所述网络设备根据所述第一对应关系和所述第二对应关系查找到并删除所述基线和所述自校验数据。通过删除无效的基线和自校验数据,可以减少网络设备的存储压力。
S203:所述网络设备对所述基线进行加密,得到加密后的所述基线。
举例说明,通过对所述基线进行加密,可以使得即使他人获取到加密后的基线,也不知道该加密后的基线是否与所述基线有关;即使知道这个就是加密后的基线,也无法通过所述加密后的基线得知未加密的基线是什么,由此提高了安全性。而且,除了可以对所述基线进行加密,还可以对所述基线对应的所述自校验数据进行加密,进一步提高安全性。加密的方式可以是通过使用所述网络设备对应的非对称密钥中的私钥加密。在反向解密的过程中,使用相应的公钥解密。不同于常用的公钥加密的方式,通过私钥加密的方式,私钥只会在刚开始加密的时候使用到,之后都是使用公钥反向解密,较少次数的使用私钥可以降低私钥泄露的几率,保证私钥的安全性。
S204:在所述代码段驻留在所述内存期间,在对所述代码段进行所述完整性校验之前,所述网络设备根据所述代码段和所述第一对应关系查找到加密后的所述基线,对加密后的所述基线进行反向解密得到所述基线。
S205:所述网络设备根据所述基线和所述第二对应关系查找到所述自校验数据。
S206:所述网络设备通过所述自校验数据对所述基线进行校验,所述校验具体包括:所述网络设备对所述基线执行所述预置处理得到第一待比对数据,比对所述自校验数据和所述第一待比对数据,或者,所述网络设备对所述自校验数据反向执行所述预处理还原出第二待比对数据,比对所述自校验数据和所述第二待比对数据是否相同。
S207:当校验结果为相同时,所述网络设备判断所述基线没有被修改,使用所述基线对所述代码段执行所述完整性校验。
由此可见,在为基线建立用于校验基线完整性的自校验数据的基础上,本发明实施例还提供了通过对基线加密的方法,通过自校验加上对基线加密的双重保护,进一步提高了基线的安全性,能够让网络设备可以有效的判断出基线是否被篡改。
实施例三
图3为本发明实施例提供的一种完整性校验装置的装置结构图,应用于网络设备,所述完整性校验装置300包括:
计算单元301,用于当系统进程的代码段加载到所述网络设备的内存中时,对所述代码段进行哈希计算,根据所述哈希计算的结果得到对应所述代码段的基线,并建立所述基线与所述代码段之间的第一对应关系。
举例说明,当有代码段(Code Segment)加载到所述网络设备的内存中时,网络设备可以通过内存中的PCB获知,并还可以获取该进程段的相关信息,例如进程段的首尾地址等。所述计算单元301可以在所述代码段被首次执行之前,对所述代码段进行第一次可信度量,通过哈希(Hash)计算得到对应所述代码段的基线。计算基线的过程可以参加如下方式:
App Code Segment[i]=Code Segment(start-address[i],end-address[i]);
哈希计算的计算公式可以如下所示:
Hash[i]=SHA256(App Code Segment[i]);
将所述哈希计算得出的结果作为所述代码段的基线,并绑定所述代码段和基线,也就是建立所述代码段与基线的第一对应关系。
需要注意,本发明实施例所应用的所述网络设备主要为具有通用系统的网络设备,也可以是具有嵌入式系统的网络设备。
处理单元302,用于通过对所述基线执行预置处理得到自校验数据,并建立所述基线与所述自校验数据的第二对应关系,所述自校验数据用于作为校验所述基线是否被修改的判断条件。
举例说明,所述处理单元302通过执行预置处理得到自校验数据的方式可以为通过算法获取所述基线内容的摘要,以摘要作为自校验数据,或者通过数字签名(Digital Signature或者Signature)等方式,本发明对此不做限定。可选的,所述处理单元302具体用于通过自身对应的私钥对所述基线进行数字签名,将数字签名结果作为所述基线的自校验数据。
举例说明,所述私钥可以理解为非对称密钥中的私钥,与所述网络设备具有对应关系。所述私钥可以存储在所述网络设备的SOC中。通过数字签名后的得到的所述数字签名结果可以通过非对称密钥中对应私钥的公钥进行解密,完成对所述基线的完整性校验。
查找单元303,用于在所述代码段驻留在所述内存期间,在对所述代码段进行所述完整性校验之前,根据所述代码段和所述第一对应关系查找到所述基线。
所述查找单元303还用于根据所述基线和所述第二对应关系查找到所述自校验数据。
校验单元304,用于通过所述自校验数据对所述基线进行校验,所述校验具体包括:所述网络设备对所述基线执行所述预置处理得到第一待比对数据,比对所述自校验数据和所述第一待比对数据,或者,所述网络设备对所述自校验数据反向执行所述预处理还原出第二待比对数据,比对所述自校验数据和所述第二待比对数据是否相同。
判断单元305,用于当校验结果为相同时,判断所述基线没有被修改,使用所述基线对所述代码段执行所述完整性校验。
举例说明,为了保证校验所述代码段的基线没有被篡改,所述校验单元304将在校验所述代码段的完整性之前,使用所述自校验数据对所述基线进行完整性校验。由于所述自校验数据是通过完整的、未被篡改的所述基线处理生成,若所述基线被篡改,则在使用所述自校验数据进行校验的过程中必然可以发现。所述判断单元305在通过所述校验确定所述基线没有被篡改的情况下,使用所述基线校验所述代码段的完整性,当所述完整性校验成功时,所述判断单元305可以明确确认所述代码段完整,当所述完整性校验不成功时,所述判断单元305可以明确确认所述代码段不完整。
需要注意,对所述代码段的完整性校验可以周期性进行。
还需要注意,所述校验单元304通过所述自校验数据对所述基线进行校验的过程可以与所述自校验数据的类型相关,例如当所述自校验数据通过特定算法根据所述基线计算得到的摘要,那么在对所述基线进行所述校验过程中,可以对所述基线通过相同所述特定算法计算出摘要,再和所述自校验数据进行比对。若所述自校验数据为通过私钥数字签名得到,那么在对所述基线进行所述校验过程中,可以对所述自校验数据反向执行所述预处理,也就是使用所述私钥对应的公钥对所述数字签名结果进行解密,将解密出的内容与所述基线进行比对。本发明实施例对其他可能的通过所述自校验数据对所述基线进行校验的过程在此不再一一穷举。
当比对结果为相同时,所述基线被确定为未被修改,则可以使用所述基线对所述代码段进行完整性校验,所述完整性校验的过程可以对所述代码段使用与所述计算单元301中获得所述基线的所使用哈希算法相同的哈希算法,例如为
PCR[i]=SHA256(App Code Segment[i])
当PCR[i]=Hash[i]时,可以确定所述代码段通过所述完整性校验,所述代码段未被修改。
可见,所述网络设备通过对所述基线处理得到对应的自校验数据,通过所述自校验数据可以验证对应基线的完整性,使得所述网络设备具有识别所述基线是否被篡改的能力,所述网络设备使用确认没有被篡改的基线对代码段进行完整性校验,提高了校验准确度。
实施例四
除了对所述基线进行处理得到自校验数据外,本发明实施例还可以在此基础上,进一步提高对所述基线的安全保护。在图3所对应的实施例基础上,图4为本发明实施例提供的一种完整性校验装置的装置结构图,
对于所述计算单元301,当所述代码段加载到所述内存中时,所述计算单元301可以通过PCB获取所述代码段的首尾地址,所述首尾地址可以是所述代码段占用内存中的物理地址,也可以是所述代码段的逻辑地址。需要注意是的,当所述网络设备部署有通用系统时,由于通用系统的灵活性特点,可能会导致在执行所述代码段之后,所述代码段在内存中的物理地址发生改变,但所述代码段的逻辑地址一般相对固定。
故所述完整性校验装置300还包括:
第一获取单元401,用于在触发所述计算单元301时,获取所述代码段的逻辑地址,所述逻辑地址包括所述代码段的首尾地址。
所述计算单元301使用所述代码段的逻辑地址进行哈希计算,可以得到较为准确的基线。在之后周期性的对所述代码段执行完整性校验之前,第二获取单元402通过所述逻辑地址获取所述代码段,使用所述代码段的逻辑地址可以从所述内存中准确快速的查找到所述代码段。
对于所述处理单元302,由于所述代码段与所述基线,所述基线与所述自校验数据均具有对应关系,故在选择存储所述基线和所述自校验数据的存储位置时,可以将所述基线和所述自校验数据存储到与所述代码段存储的同一存储介质中,以提高之后的查找效率。
故可选的,所述完整性校验装置300还包括保存单元403,用于将所述基线以及对应的自校验数据保存在PCB中,以提高所述网络设备通过所述第一对应关系和所述第二对应关系进行查找的查找速度。可以在所述PCB中新增字段用于专门存储所述基线和所述自校验数据。
还需要注意,在具有通用系统的移动终端中,内存中的代码段可以被移除,若所述代码段被移除,如果还继续保存对应所述代码段的所述基线和自校验数据,可能会造成系统资源的浪费。为此,可选的,还包括移除单元404,用于当所述代码段从所述内存中移除时,所述网络设备根据所述第一对应关系和所述第二对应关系查找到并删除所述基线和所述自校验数据。通过删除无效的基线和自校验数据,可以减少网络设备的存储压力。
加密单元405用于在触发所述处理单元302之后,对所述基线进行加密,得到加密后的所述基线。
举例说明,通过对所述基线进行加密,可以使得即使他人获取到加密后的基线,也不知道该加密后的基线是否与所述基线有关;即使知道这个就是加密后的基线,也无法通过所述加密后的基线得知未加密的基线是什么,由此提高了安全性。而且,除了可以对所述基线进行加密,还可以对所述基线对应的所述自校验数据进行加密,进一步提高安全性。加密的方式可以是通过使用所述网络设备对应的非对称密钥中的私钥加密。在反向解密的过程中,使用相应的公钥解密。不同于常用的公钥加密的方式,通过私钥加密的方式,私钥只会在刚开始加密的时候使用到,之后都是使用公钥反向解密,较少次数的使用私钥可以降低私钥泄露的几率,保证私钥的安全性。
所述查找单元303具体用于根据所述代码段和所述第一对应关系查找到加密后的所述基线,对加密后的所述基线进行反向解密得到所述基线。
由此可见,在为基线建立用于校验基线完整性的自校验数据的基础上,本发明实施例还提供了通过对基线加密的方法,通过自校验加上对基线加密的双重保护,进一步提高了基线的安全性,能够让网络设备可以有效的判断出基线是否被篡改。
本发明实施例中提到的第一对应关系和所述第一待比对数据的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(Read-Only Memory,ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的优选实施方式,并非用于限定本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种完整性校验方法,其特征在于,应用于网络设备,所述方法包括:
当系统进程的代码段加载到所述网络设备的内存中时,所述网络设备对所述代码段进行哈希计算,根据所述哈希计算的结果得到对应所述代码段的基线,并建立所述基线与所述代码段之间的第一对应关系;
所述网络设备通过对所述基线执行预置处理得到自校验数据,并建立所述基线与所述自校验数据的第二对应关系,所述自校验数据用于作为校验所述基线是否被修改的判断条件;
在所述代码段驻留在所述内存期间,在对所述代码段进行所述完整性校验之前,所述网络设备根据所述代码段和所述第一对应关系查找到所述基线;
所述网络设备根据所述基线和所述第二对应关系查找到所述自校验数据;
所述网络设备通过所述自校验数据对所述基线进行校验,所述校验具体包括:所述网络设备对所述基线执行所述预置处理得到第一待比对数据,比对所述自校验数据和所述第一待比对数据,或者,所述网络设备对所述自校验数据反向执行所述预处理还原出第二待比对数据,比对所述自校验数据和所述第二待比对数据是否相同;
当校验结果为相同时,所述网络设备判断所述基线没有被修改,使用所述基线对所述代码段执行所述完整性校验。
2.根据权利要求1所述的方法,其特征在于,所述网络设备通过对所述基线处理得到自校验数据,具体包括:
所述网络设备通过自身对应的私钥对所述基线进行数字签名,将数字签名结果作为所述基线的自校验数据。
3.根据权利要求1或2所述的方法,其特征在于,在所述网络设备通过对所述基线执行预置处理得到自校验数据之后,还包括:
所述网络设备对所述基线进行加密,得到加密后的所述基线;
所述网络设备根据所述代码段和所述第一对应关系查找到所述基线具体包括:
所述网络设备根据所述代码段和所述第一对应关系查找到加密后的所述基线,对加密后的所述基线进行反向解密得到所述基线。
4.根据权利要求1至3任一项所述的方法,其特征在于,当所述系统进程的代码段加载到所述网络设备的内存中时,还包括:
所述网络设备获取所述代码段的逻辑地址,所述逻辑地址包括所述代码段的首尾地址;
在对所述代码段进行所述完整性校验之前,所述网络设备通过所述逻辑地址获取所述代码段。
5.根据权利要求1所述的方法,其特征在于,还包括:
当所述代码段从所述内存中移除时,根据所述第一对应关系和所述第二对应关系查找到并删除所述基线和所述自校验数据。
6.根据权利要求1至5任一项所述的方法,其特征在于,还包括:
所述网络设备将所述基线以及对应的自校验数据保存在进程控制块PCB中,以提高所述网络设备通过所述第一对应关系和所述第二对应关系进行查找的查找速度。
7.一种完整性校验装置,其特征在于,应用于网络设备,包括:
计算单元,用于当系统进程的代码段加载到所述网络设备的内存中时,对所述代码段进行哈希计算,根据所述哈希计算的结果得到对应所述代码段的基线,并建立所述基线与所述代码段之间的第一对应关系;
处理单元,用于通过对所述基线执行预置处理得到自校验数据,并建立所述基线与所述自校验数据的第二对应关系,所述自校验数据用于作为校验所述基线是否被修改的判断条件;
查找单元,用于在所述代码段驻留在所述内存期间,在对所述代码段进行所述完整性校验之前,根据所述代码段和所述第一对应关系查找到所述基线;
所述查找单元还用于根据所述基线和所述第二对应关系查找到所述自校验数据;
校验单元,用于通过所述自校验数据对所述基线进行校验,所述校验具体包括:所述网络设备对所述基线执行所述预置处理得到第一待比对数据,比对所述自校验数据和所述第一待比对数据,或者,所述网络设备对所述自校验数据反向执行所述预处理还原出第二待比对数据,比对所述自校验数据和所述第二待比对数据是否相同;
判断单元,用于当校验结果为相同时,判断所述基线没有被修改,使用所述基线对所述代码段执行所述完整性校验。
8.根据权利要求7所述的装置,其特征在于,
所述处理单元具体用于通过自身对应的私钥对所述基线进行数字签名,将数字签名结果作为所述基线的自校验数据。
9.根据权利要求6或7所述的装置,其特征在于,还包括:
加密单元,用于在触发所述处理单元之后,对所述基线进行加密,得到加密后的所述基线;
所述查找单元具体用于根据所述代码段和所述第一对应关系查找到加密后的所述基线,对加密后的所述基线进行反向解密得到所述基线。
10.根据权利要求7至9任一项所述的装置,其特征在于,还包括:
第一获取单元,用于在触发所述计算单元时,获取所述代码段的逻辑地址,所述逻辑地址包括所述代码段的首尾地址;
第二获取单元,用于在触发判断单元之前,通过所述逻辑地址获取所述代码段。
11.根据权利要求7所述的装置,其特征在于,还包括:
移除单元,用于当所述代码段从所述内存中移除时,根据所述第一对应关系和所述第二对应关系查找到并删除所述基线和所述自校验数据。
12.根据权利要求7至11任一项所述的装置,其特征在于,还包括:
保存单元,用于将所述基线以及对应的自校验数据保存在进程控制块PCB中,以提高所述网络设备通过所述第一对应关系和所述第二对应关系进行查找的查找速度。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510212803.8A CN106203100A (zh) | 2015-04-29 | 2015-04-29 | 一种完整性校验方法和装置 |
PCT/CN2015/097501 WO2016173267A1 (zh) | 2015-04-29 | 2015-12-15 | 一种完整性校验方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510212803.8A CN106203100A (zh) | 2015-04-29 | 2015-04-29 | 一种完整性校验方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106203100A true CN106203100A (zh) | 2016-12-07 |
Family
ID=57198964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510212803.8A Pending CN106203100A (zh) | 2015-04-29 | 2015-04-29 | 一种完整性校验方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106203100A (zh) |
WO (1) | WO2016173267A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112528342A (zh) * | 2020-12-29 | 2021-03-19 | 内蒙古工业大学 | 一种基于编译中间结果的软件保护方法 |
WO2023165257A1 (zh) * | 2022-03-01 | 2023-09-07 | 华为技术有限公司 | 一种代码段动态度量方法、装置及电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111832012B (zh) * | 2020-07-15 | 2024-04-05 | 北京经纬恒润科技股份有限公司 | 一种ecu及其启动方法 |
CN114564724A (zh) * | 2021-12-30 | 2022-05-31 | 海光信息技术股份有限公司 | 虚拟机内存完整性保护方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101834860A (zh) * | 2010-04-22 | 2010-09-15 | 北京交通大学 | 一种远程动态验证客户端软件完整性的方法 |
CN104077522A (zh) * | 2014-06-30 | 2014-10-01 | 江苏华大天益电力科技有限公司 | 一种操作系统进程完整性检测方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259781A1 (en) * | 2005-04-29 | 2006-11-16 | Sony Corporation/Sony Electronics Inc. | Method and apparatus for detecting the falsification of metadata |
KR101427646B1 (ko) * | 2007-05-14 | 2014-09-23 | 삼성전자주식회사 | 펌웨어의 무결성 검사 방법 및 장치 |
CN102509047B (zh) * | 2011-11-09 | 2014-08-27 | 北京赛科世纪数码科技有限公司 | 校验机顶盒中程序代码的方法和系统 |
CN104408370B (zh) * | 2014-12-25 | 2017-08-04 | 珠海全志科技股份有限公司 | 安卓系统安全性验证方法及其验证装置 |
-
2015
- 2015-04-29 CN CN201510212803.8A patent/CN106203100A/zh active Pending
- 2015-12-15 WO PCT/CN2015/097501 patent/WO2016173267A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101834860A (zh) * | 2010-04-22 | 2010-09-15 | 北京交通大学 | 一种远程动态验证客户端软件完整性的方法 |
CN104077522A (zh) * | 2014-06-30 | 2014-10-01 | 江苏华大天益电力科技有限公司 | 一种操作系统进程完整性检测方法 |
Non-Patent Citations (1)
Title |
---|
WAIVE: "Android代码完整性校验", 《HTTP://WWW.XUEBUYUAN.COM/1585354.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112528342A (zh) * | 2020-12-29 | 2021-03-19 | 内蒙古工业大学 | 一种基于编译中间结果的软件保护方法 |
CN112528342B (zh) * | 2020-12-29 | 2022-06-28 | 内蒙古工业大学 | 一种基于编译中间结果的软件保护方法 |
WO2023165257A1 (zh) * | 2022-03-01 | 2023-09-07 | 华为技术有限公司 | 一种代码段动态度量方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2016173267A1 (zh) | 2016-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492378B (zh) | 一种基于设备识别码的身份验证方法、服务器及介质 | |
US9621549B2 (en) | Integrated circuit for determining whether data stored in external nonvolative memory is valid | |
ES2804771T3 (es) | Método y sistema para facilitar identificadores de terminal | |
US9270467B1 (en) | Systems and methods for trust propagation of signed files across devices | |
CN111666564B (zh) | 应用程序安全启动方法、装置、计算机设备和存储介质 | |
JP6190404B2 (ja) | 受信ノード、メッセージ受信方法およびコンピュータプログラム | |
CN101783801A (zh) | 一种基于网络的软件保护方法、客户端及服务器 | |
CN110245495B (zh) | Bios校验方法、配置方法、设备及系统 | |
CN110826091B (zh) | 一种文件签名方法、装置、电子设备及可读存储介质 | |
CN110008719B (zh) | 一种文件处理、文件检测方法及装置 | |
JP2016099837A (ja) | 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム | |
CN110830256A (zh) | 一种文件签名方法、装置、电子设备及可读存储介质 | |
CN106203100A (zh) | 一种完整性校验方法和装置 | |
CN104219626B (zh) | 一种身份认证的方法和装置 | |
CN109117643B (zh) | 系统处理的方法以及相关设备 | |
CN110674500B (zh) | 存储介质病毒查杀方法、装置、计算机设备和存储介质 | |
CN115514492A (zh) | Bios固件验证方法、装置、服务器、存储介质和程序产品 | |
CN106302414B (zh) | 网站内容防抓取方法和装置 | |
CN115357908B (zh) | 一种网络设备内核可信度量与自动修复方法 | |
CN109905408B (zh) | 网络安全防护方法、系统、可读存储介质及终端设备 | |
CN110826034B (zh) | 一种文件签名方法、装置、电子设备及可读存储介质 | |
CN110674511A (zh) | 基于椭圆曲线加密算法的离线数据保护方法及系统 | |
CN116933293A (zh) | 面向多平台的多重加密软件认证保护方法及装置 | |
CN116436617A (zh) | 密钥处理方法、系统、设备及存储介质 | |
CN111639353B (zh) | 一种数据管理方法、装置、嵌入式设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161207 |
|
RJ01 | Rejection of invention patent application after publication |