CN113419905A - 一种实现可信验证的方法及装置和安全模块 - Google Patents
一种实现可信验证的方法及装置和安全模块 Download PDFInfo
- Publication number
- CN113419905A CN113419905A CN202110668352.4A CN202110668352A CN113419905A CN 113419905 A CN113419905 A CN 113419905A CN 202110668352 A CN202110668352 A CN 202110668352A CN 113419905 A CN113419905 A CN 113419905A
- Authority
- CN
- China
- Prior art keywords
- code
- recovery
- trusted
- image
- platform
- 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 137
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000011084 recovery Methods 0.000 claims abstract description 172
- 238000005259 measurement Methods 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 27
- 230000003068 static effect Effects 0.000 claims description 23
- 239000000126 substance Substances 0.000 claims description 4
- 230000006870 function Effects 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种实现可信验证的方法及装置和安全模块,本申请为真正实现对系统安全的可信验证提供了可行方案。安全模块独立于计算系统,使用自己的安全硬件和安全系统,所有的平台安全操作都在卡内系统中运行,同时提供可信验证和镜像恢复功能,通过对平台启动可信验证发现平台是否可信,并通过平台镜像恢复对不可信的平台固件/平台代码进行镜像恢复,保证了整个平台的安全可信,真正了实现对系统安全的可信验证;实现可信验证的方法,基于跳转指令将应用程序分段,得到多个顺序执行代码段;对每个顺序执行代码段分别进行可信验证。基于可信模块和程序安全编译,不改变应用程序自身和平台系统,真正了实现对系统安全的可信验证。
Description
技术领域
本申请涉及但不限于可信计算技术,尤指一种实现可信验证的方法及装置和安全模块。
背景技术
网络安全等级保护基本要求2.0(GB/T 22239-2019)正式发布,成为网络安全法的支撑条例;其中的第三级/第四级安全要求,明确提出:基于可信根对计算设备的系统启动等进行可信验证,并在应用程序的执行环节进行动态可信验证。但是,网络安全等级保护基本要求只是给出了一个标准,目前并没有可行的技术方案。
发明内容
本申请提供一种实现可信验证的方法及装置和安全模块,能够真正实现对系统安全的可信验证。
本发明实施例提供了一种安全模块,包括:可信验证处理模块、镜像恢复处理模块,以及用于存储恢复镜像的镜像存储模块;其中,
可信验证处理模块,用于实现平台启动可信验证,当平台启动出现不可信时,通知镜像恢复处理模块;
镜像恢复处理模块,用于接收到来自可信验证处理模块的通知,利用镜像存储模块中存储的恢复镜像对不可信的平台启动进行镜像恢复。
在一种示例性实例中,所述可信验证处理模块用于:
对以下之一或任意组合进行所述可信验证:平台启动代码、设备启动代码、操作系统加载器运行代码、操作系统运行代码,得到以下之一或任意组合的度量值:平台启动代码的度量值、设备启动代码的度量值、操作系统加载器运行代码的度量值、操作系统运行代码的度量值;当所述之一或任意代码的度量值与该代码对应的基准值不等时,通知所述镜像恢复处理模块。
在一种示例性实例中,所述镜像恢复处理模块用于:
接收到来自所述可信验证处理模块的通知,获知平台启动代码不可信、或者设备启动代码不可信、或者操作系统加载器运行代码不可信、或者操作系统运行代码不可信,利用所述镜像存储模块中存储的恢复镜像对不可信的代码进行镜像恢复。
在一种示例性实例中,所述镜像恢复处理模块还用于:
通过高速网络接口与远程用于存储恢复镜像的远程恢复镜像池相连;
当查询到所述镜像存储模块中未存储需要进行镜像恢复的代码镜像时,查询远程恢复镜像池以获取当前需要进行镜像恢复的代码镜像;利用从远程恢复镜像池获得的恢复镜像对不可信的代码进行镜像恢复。
在一种示例性实例中,所述镜像恢复处理模块中的利用恢复镜像对不可信的代码进行镜像恢复,包括:
所述镜像恢复处理模块判断出所述获得的恢复镜像属于主板启动代码镜像,将所述获得的恢复镜像传递给所述可信验证处理模块;所述镜像恢复处理模块判断出所述获得的恢复镜像不属于主板启动代码镜像,刷写其他的恢复镜像;
所述可信验证处理模块还用于:根据获得的恢复镜像,刷写主板启动的恢复镜像。
在一种示例性实例中,所述可信验证处理模块为可信芯片;可信芯片通过低速总线接口与平台主板相连,以进行平台启动的可信度量验证。
在一种示例性实例中,所述镜像恢复处理模块为系统级芯片SoC;SoC通过高速总线接口与平台部件相连,进行镜像恢复。
本申请实施例还提供一种实现可信验证的方法,包括:
安全模块对平台启动进行可信验证;
当平台启动出现不可信时,安全模块利用自身存储的恢复镜像对不可信的平台启动进行镜像恢复。
在一种示例性实例中,所述安全模块利用自身存储的恢复镜像对不可信的平台启动进行镜像恢复,包括:
当平台启动代码不可信、或者设备启动代码不可信、或者操作系统加载器运行代码不可信、或者操作系统运行代码不可信,利用所述安全模块中存储的恢复镜像对不可信的代码进行镜像恢复。
在一种示例性实例中,还包括:
当所述安全模块查询到自身未存储需要进行镜像恢复的代码镜像时,查询远程恢复镜像池以获取当前需要进行镜像恢复的代码镜像;
利用从远程恢复镜像池获得的恢复镜像对不可信的代码进行镜像恢复。
在一种示例性实例中,所述利用恢复镜像对不可信的代码进行镜像恢复,包括:
判断出所述获得的恢复镜像属于主板启动代码镜像,通过低速接口刷写主板启动的恢复镜像;判断出获得的恢复镜像不属于主板启动代码镜像,通过高速接口刷写其他的恢复镜像。
在一种示例性实例中,还包括:
在应用程序启动过程中,对应用程序进行静态可信验证,启动静态可信验证为可信的应用程序;
根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第二度量值集合;
比对第二度量值集合和作为基准值的第一度量值集合,如果第一度量值集合和第二度量值集相等,确定应用程序可信,继续执行该应用程序。
本申请实施例又提供一种实现可信验证的方法,包括:
在应用程序启动过程中,对应用程序进行静态可信验证,启动静态可信验证为可信的应用程序;
根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第二度量值集合;
比对第二度量值集合和作为基准值的第一度量值集合,如果第一度量值集合和第二度量值集相等,确定应用程序可信,继续执行该应用程序。
在一种示例性实例中,还包括:
在所述应用程序反编译过程中,根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第一度量值集合。
本申请实施例提供的安全模块独立于计算系统,使用自己的安全硬件和安全系统,所有的平台安全操作都在卡内系统中运行。本申请实施例提出的安全模块是一通用的硬件安全管理系统,同时提供可信验证和镜像恢复功能,通过对平台启动可信验证,发现平台是否可信(或是否被篡改),并通过平台镜像恢复对不可信的平台固件/平台代码进行镜像恢复,保证了整个平台的安全可信,真正了实现对系统安全的可信验证。
本申请实施例提供的实现可信验证的方法,基于跳转指令将应用程序分段,得到多个顺序执行代码段;对每个顺序执行代码段分别进行可信验证。基于可信模块和程序安全编译,不改变应用程序自身和平台系统,真正了实现对系统安全的可信验证。进一步地,本申请实施例中图5提供的实现可信验证的方法,依靠硬件可信模块进一步增强了可信验证的安全性,需要攻破可信模块硬件才能攻击系统。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例中一种安全模块的组成结构示意图;
图2为本申请实施例中安全模块实现可信验证的方法的流程示意图;
图3为本申请实施例中安全模块实现可信验证中平台启动可信验证的实施例的流程示意图;
图4为本申请实施例中安全模块实现可信验证中不可信平台镜像恢复的实施例的流程示意图;
图5为本申请实施例中应用程序实现可信验证的方法的流程示意图;
图6为本申请实施例中应用程序实现可信验证中应用程序安全编译的实施例的流程示意图;
图7为本申请实施例中应用程序实现可信验证中应用进程动态可信验证的实施例的流程示意图;
图8为本申请实施例中应用程序实现可信验证的装置的组成结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在本申请一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1为本申请实施例中一种安全模块的组成结构示意图,如图1所示,至少包括:可信验证处理模块、镜像恢复处理模块,以及镜像存储模块;其中,
可信验证处理模块,用于实现平台启动可信验证,当平台启动出现不可信时,通知镜像恢复处理模块;
镜像恢复处理模块,用于接收到来自可信验证处理模块的通知,利用镜像存储模块中存储的恢复镜像对不可信的平台启动进行镜像恢复;
镜像存储模块,用于存储恢复镜像。
本申请实施例中,将对平台安全进行管理的安全模块从计算系统中独立了出来,安全模块使用自己的安全硬件和安全系统,所有的平台安全操作都在卡内系统中运行。本申请实施例提出的安全模块是一通用的硬件安全管理系统,同时提供可信验证和镜像恢复功能,该安全模块是一套独立的平台安全防护系统,该安全模块使用自己独立的处理器、内存、存储等模块,不使用主计算平台的计算资源。本申请实施例提出的安全模块通过对平台启动可信验证,发现平台是否可信(或是否被篡改),并通过平台镜像恢复对不可信的平台固件/平台代码进行镜像恢复,保证了整个平台的安全可信,真正了实现对系统安全的可信验证。
本申请实施例提出的安全模块作为一个安全平台,一方面,覆盖了全部平台场景:即将平台安全防护功能从主计算平台中分离出来,该安全模块是一张通用的用于平台安全管理的安全模块,灵活地实现了多种安全功能;另一方面,该安全模块解耦通用平台,独立演进互不影响:即该安全模块的演进与功能集成不依赖于主计算平台,独立发展。
在一种示例性实例中,可信验证处理模块可以是可信芯片。在一种实施例中,可信芯片可以通过如串行外设接口(SPI,Serial Peripheral Interface)等低速总线接口与平台主板相连,以进行平台启动的可信度量验证即可信验证。
在一种示例性实例中,镜像恢复处理模块可以是系统级芯片(SoC,System on achip)即将计算处理器和其它电子系统集成到单一芯片的集成电路。在一种实施例中,SoC可以通过如高速外围组件互连(PCIe,peripheral component interconnect express)等高速总线接口与平台部件相连,进行镜像恢复。其中,平台部件可以包括但不限于如:输入/输出(IO)网络存储、内存、异构计算部件如图形处理单元(GPU,Graphics ProcessingUnit)、现场可编程逻辑门阵列(FPGA,Field-programmable gate array)、神经网络处理器(NPU,Neural network Processing Unit)等。
在一种示例性实例中,当安全模块所在平台上电时,首先启动本申请实施例提供的对平台安全进行管理的安全模块。
在一种示例性实例中,可信验证处理模块中设置有平台度量合法值,以作为可信验证的基准值,在一种实施例中,基准值可以包括以下之一或任意组合:平台启动代码的基准值、设备启动代码的基准值、操作系统加载器运行代码的基准值、操作系统运行代码的基准值。
在一种示例性实例中,可信验证处理模块可以用于:
对以下之一或任意组合进行可信验证:平台启动代码、设备启动代码、操作系统加载器运行代码、操作系统运行代码;当可信验证出现不可信时即对上述任意代码进行可信度量的度量值与该代码对应的基准值不等时,通知镜像恢复处理模块。
在一种示例性实例中,镜像恢复处理模块可以用于:
接收到来自可信验证处理模块的通知,获知平台启动代码不可信、或者设备启动代码不可信、或者操作系统加载器运行代码不可信、或者操作系统运行代码不可信,利用镜像存储模块中存储的恢复镜像对不可信的代码进行镜像恢复。
在一种示例性实例中,镜像恢复处理模块还可以用于:通过网络接口卡(NIC,Network Interface Card)等高速网络接口与远程用于存储恢复镜像的远程恢复镜像池相连,以在镜像存储模块中没有恢复镜像时,从远程恢复镜像池中获取恢复镜像。相应地,
镜像恢复处理模块还用于:当查询到镜像存储模块中未存储需要进行镜像恢复的代码镜像时,查询远程恢复镜像池以获取当前需要进行镜像恢复的代码镜像;利用从远程恢复镜像池获得的恢复镜像对不可信的代码进行镜像恢复。
在一种示例性实例中,镜像恢复处理模块中的利用恢复镜像对不可信的代码进行镜像恢复,可以包括:
判断出获得的恢复镜像属于主板启动代码镜像,如:基本输入/输出系统(BIOS,Basic Input/Output System)镜像、基板管理控制器(BMC,Baseboard ManagementController)镜像等,将恢复镜像传递给可信验证处理模块,以使可信验证处理模块通过SPI接口刷写主板启动的恢复镜像;判断出获得的恢复镜像不属于主板启动代码镜像,通过PCIE接口刷写其他的恢复镜像。
相应地,可信验证处理模块还用于:根据获得的恢复镜像,通过SPI接口刷写主板启动的恢复镜像。
图2为本申请实施例中安全模块实现可信验证的方法的流程示意图,如图2所示,包括:
步骤200:安全模块对平台启动进行可信验证。
在一种示例性示例中,本步骤可以包括:
对以下之一或任意组合进行可信验证:平台启动代码、设备启动代码、操作系统加载器运行代码、操作系统运行代码;
当可信验证出现不可信时即对上述任意代码进行可信度量的度量值与预先存储的该代码对应的基准值不等时,确定平台启动出现不可信。
步骤201:当平台启动出现不可信时,安全模块利用自身存储的恢复镜像对不可信的平台启动进行镜像恢复。
在一种示例性实例中,本步骤可以包括:
当平台启动代码不可信、或者设备启动代码不可信、或者操作系统加载器运行代码不可信、或者操作系统运行代码不可信,利用安全模块中存储的恢复镜像对不可信的代码进行镜像恢复。
本申请实施例中,可信验证在对平台安全进行管理的安全模块中实现,安全模块独立于计算系统,使用自己的安全硬件和安全系统,所有的平台安全操作都在卡内系统中运行。本申请实施例提出的实现可信验证的方法,同时提供可信验证和镜像恢复功能,通过对平台启动可信验证,发现平台是否可信(或是否被篡改),并通过平台镜像恢复对不可信的平台固件/平台代码进行镜像恢复,保证了整个平台的安全可信,真正了实现对系统安全的可信验证。
在一种示例性实例中,步骤201还可以包括:
当安全模块查询到自身未存储需要进行镜像恢复的代码镜像时,查询远程恢复镜像池以获取当前需要进行镜像恢复的代码镜像;
利用从远程恢复镜像池获得的恢复镜像对不可信的代码进行镜像恢复。
在一种示例性实例中,步骤201中的利用恢复镜像对不可信的代码进行镜像恢复,可以包括:
判断出获得的恢复镜像属于主板启动代码镜像,如:BIOS镜像、BMC镜像等,安全模块通过SPI接口刷写主板启动的恢复镜像;判断出获得的恢复镜像不属于主板启动代码镜像,安全模块通过PCIE接口刷写其他的恢复镜像。
图3为本申请实施例中安全模块实现可信验证中平台启动可信验证的实施例的流程示意图,如图3所示,包括:
步骤1:平台上电,启动对平台安全进行管理的安全模块。比如:安全模块所在平台可以通过电源模块管理(CPLD),首先放电给安全模块以使其先启动。
在一种实施例中,安全模块可以是一张安全芯片,安全芯片包括但不限于如可信平台模块(TPM,Trusted Platform Model)、可信平台控制模块(TPCM,Trusted PlatformControl Model)等。其中,TPM是一种安全密码处理器的国际标准,由可信赖计算组织(TCG,Trusted Computing Group)撰写,通过专门的微控制器将加密密钥集成到设备中来保护硬件。TPM安全芯片是指符合TPM标准的安全芯片,一般通过物理方式被强绑定到计算平台,它能有效地保护PC、防止非法用户访问。TPCM作为中国国内自主可控的可信节点植入可信源根,在TPM基础上加以信任根控制功能,实现了以密码为基础的主动控制和度量;TPCM先于CPU启动并对BIOS进行验证,由此改变了TPM作为被动设备的传统思路,实现了TPCM对整个平台的主动控制。
步骤2~步骤3:安全模块中的可信芯片验证平台启动代码。
本步骤中,可信芯片对平台的首指令启动代码进行可信度量,计算平台启动代码的摘要值即平台启动代码度量值;并将计算得到的摘要值与正确的平台启动代码的基准值进行比对;
如果平台启动代码度量值与平台启动代码的基准值相等,那么,平台启动代码可信验证通过,进入步骤4;如果平台启动代码度量值与平台启动代码的基准值不相等,那么,平台启动代码可信验证失败,说明平台启动代码不可信,进入步骤14。
在一种实施例中,可信度量可以是哈希(Hash)度量算法,包括但不限于如SHA-1、SHA256、SM3等。其中,安全散列演算法(SHA,Secure Hash Algorithm)是一个密码散列函数家族,SM3是一种密码散列函数标准。
步骤4~步骤8:中央处理单元(CPU)上电,BIOS开始启动,在BIOS启动过程中,安全模块中的可信芯片验证设备启动运行代码。
本步骤中,可信芯片会遍历每一个设备,对设备启动运行代码进行可信度量,计算设备启动代码的摘要值即设备启动代码度量值;并将计算得到的摘要值与正确的设备启动代码的基准值进行比对;
如果设备启动代码度量值与设备启动代码的基准值相等,那么,设备启动代码可信验证通过,进入步骤9。如果设备启动代码度量值与设备启动代码的不相等,那么,设备启动代码可信验证失败,说明设备启动代码不可信即设备固件不可信,进入步骤14。
步骤9~步骤10:在操作系统加载器(OS_Loader)启动过程中,安全模块中的可信芯片验证操作系统加载器运行代码。
本步骤中,可信芯片对OS_Loader运行代码进行可信度量,计算OS_Loader代码的摘要值即OS_Loader运行代码度量值;并将计算得到的摘要值与正确的OS_Loader运行代码的基准值进行比对;
如果OS_Loader代码度量值与OS_Loader运行代码的基准值相等,那么,OS_Loader运行代码可信验证通过,进入步骤11;如果OS_Loader代码度量值与OS_Loader运行代码的基准值不相等,那么,OS_Loader运行代码可信验证失败,说明OS_Loader代码不可信即OS_Loader不可信,进入步骤14。
步骤11~步骤12:OS启动过程中,安全模块中的可信芯片验证操作系统运行代码。
本步骤中,可信芯片对OS运行代码进行可信度量,计算得到OS运行代码的摘要值即OS运行代码度量值;并将计算得到的摘要与正确的OS运行代码的基准值进行比对;
如果OS运行代码度量值与OS运行代码的基准值相等,那么,OS运行代码可信验证通过,进入步骤13;如果OS运行代码度量值与OS运行代码的基准值不相等,那么,OS运行代码可信验证失败,说明OS运行代码不可信即OS不可信,进入步骤14。
步骤13:OS启动完成,平台进入操作系统。
步骤14:告警并如图4所示对不可信的运行代码进行镜像恢复流程。
图4为本申请实施例中安全模块实现可信验证中不可信平台镜像恢复的实施例的流程示意图,如图4所示,包括:
步骤1:如果平台启动代码不可信,或者设备启动代码不可信即设备固件不可信,或者OS_Loader运行代码不可信即OS_Loader不可信,或者OS运行代码不可信即OS不可信,都会触发告警,并进入图4所示的镜像恢复流程。
步骤2~步骤4:安全模块中的可信芯片通知安全模块中的SoC启动并查询安全模块是否存储有当前需要进行镜像恢复的事项的恢复(Recovery)镜像,如果安全模块内存储有,进入步骤5;如果安全模块内未存储,进入步骤6。
步骤5:SoC读取安全模块内的恢复镜像,进入步骤9。
步骤6~步骤8:SoC查询安全模块外的远程Recovery镜像池,如果远程Recovery镜像池中存在当前需要镜像恢复的事项的恢复镜像,SoC拉取远程的恢复镜像。
步骤9~步骤12:SoC判断得到的恢复镜像是否属于主板启动代码镜像,如果得到的恢复镜像属于主板启动代码镜像,SoC将得到的恢复镜像传递到安全模块内的可信芯片,可信芯片通过SPI接口刷写主板启动镜像;如果得到的恢复镜像不属于主板启动代码镜像,SoC通过PCIE接口刷写其它镜像。
其中,主板启动代码镜像,可以包括但不限于如BIOS镜像、BMS镜像等。
步骤13:平台重启,重新执行图3所示的平台可信验证流程。
在可信计算平台启动后,为了能够实现主动抵御入侵行为,本申请实施例还提供一种对应用程序的动态可信验证方法。这里需要特别说明的是,对平台启动的可信验证可以是本申请实施例中图2所示的安全模块实现可信验证的方法,但并不限于此,也可以是通过其他方式实现对平台启动的可信验证。
图5为本申请实施例中应用程序实现可信验证的方法的流程示意图,如图5所示,包括:
步骤501:在应用程序启动过程中,对应用程序进行静态可信验证,启动静态可信验证为可信的应用程序。
在一种示例性实例中,可以通过可信模块来验证应用程序的静态执行文件,以检查执行文件是否被篡改。如果静态可信验证未通过,说明应用程序被篡改不可信,那么,对该应用程序进行告警,并拒绝执行该应用程序,结束本流程;如果静态可信验证通过,那么,启动该应用程序,该应用程序进入动态运行状态。
步骤502:根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第二度量值集合。
在一种示例性实例中,跳转指令包括但不限于如:x86的call、jxx、retn等指令,ARM的bl、bxx、ret等指令。
本步骤的具体实现与图6中步骤2~步骤9所示的实现过程一致,这里不再赘述。本步骤不同的是,本步骤的执行过程是在应用程序启动之后,目的是动态获取该应用程序的各代码段的第二度量值集合。
在一种示例性实例中,可信度量可以是哈希(Hash)度量算法,包括但不限于如SHA-1、SHA256、SM3等。其中,安全散列演算法(SHA,Secure Hash Algorithm)是一个密码散列函数家族,SM3是一种密码散列函数标准。
步骤503:比对第二度量值集合和作为基准值的第一度量值集合,如果第一度量值集合和第二度量值集相等,确定应用程序可信,继续执行该应用程序。
在一种示例性实例中,本步骤可以包括:将动态实时计算出的第二度量值集合中的Hash(i)值,与预先获得并存储的作为基准值的第一度量值集合中的Hash(i)值进行比对,如果都相等,确定应用程序可信,继续执行该应用程序;如果存在不相等,说明进程空间被篡改不可信,确定应用程序不可信,对该应用程序进行告警,并拒绝执行该应用程序。
本申请实施例中图5提供的实现可信验证的方法,基于跳转指令将应用程序分段,得到多个顺序执行代码段;对每个顺序执行代码段分别进行可信验证。基于可信模块和程序安全编译,不改变应用程序自身和平台系统,真正了实现对系统安全的可信验证。进一步地,本申请实施例中图5提供的实现可信验证的方法,依靠硬件可信模块进一步增强了可信验证的安全性,需要攻破可信模块硬件才能攻击系统。
在一种示例性实例中,步骤501之前还可以包括:
步骤500:在应用程序反编译过程中,根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第一度量值集合。
在一种示例性实例中,图6为本申请实施例中应用程序实现可信验证中应用程序安全编译的实施例的流程示意图,如图6所示,步骤500可以包括:
步骤1:应用程序反编译。
反编译过程即是将应用程序bin文件,反编译成可识别的执行代码段。
步骤2:遍历代码段,标记所有跳转指令i,i=1,2,3…。
以x86指令为例,跳转指令可以包括如call、jxx、retn等指令。
ARM指令为例,跳转质量可以包括但不限于如bl、bxx、ret等指令。
步骤3:从第i个跳转指令到第i+1个跳转指令,为顺序执行代码段。
相邻跳转指令之间的代码,为顺序执行的代码,不会有新的跳转,因此,相邻跳转指令之间的代码组成的代码段也可以称为是顺序执行代码段。
比如:第i个跳转指令到第i+1个跳转指令之间的顺序执行代码段可以简称为第i段代码。
步骤4:在该代码段内即第i个跳转指令到第i+1个跳转指令之间的顺序执行代码段(第i段代码)内,度量第j行代码,计算度量值Hash(j)。
步骤5:计算第i段代码的扩展度量值:如Hash(i)=Hash(Hash(i),Hash(j))
在一种示例性实例中,Hash(i)的初始值可以取值为0,每度量一行新代码得到度量值Hash(j),即将该度量值Hash(j)并在原有Hash(i)的尾部,重新计算新的Hash(i)。
步骤6~步骤7:遍历第i段代码的下一行即j=j+1行,返回步骤4,直到第i段代码中的代码行都遍历并全部完成度量,计算出该代码段的扩展度量值Hash(i)。
步骤8:存储第i段代码的度量值Hash(i),作为第i段代码的可信度量的基准值。
在一种示例性实例中,基准值的存储方式可以包括不限于如:存储在可信模块内部、经过加密后存储在外部磁盘等。
在一种示例性实例中,步骤8中可以将第i段代码的度量值Hash(i)存储在可信模块中,可信模块用于存储每一段顺序执行代码段的扩展度量值Hash(i)。如果可信模块自身存储空间不足,可以使用可信模块的密钥,将度量值加密后存放到可信模块外部,但是仅可信模块可以解密,以保证其安全性。在一种实施例中,可信模块可以包括但不限于如TPM、TPCM等。
步骤9:遍历下一段顺序执行代码即i=i+1段顺序执行代码,返回步骤3,直至应用程序的所有代码全部完成度量,并计算出所有顺序执行代码段的扩展度量值Hash(i),得到第一度量值集合。
图7为本申请实施例中应用程序实现可信验证中应用进程动态可信验证的实施例的流程示意图,如图7所示,包括:
步骤1~步骤2:应用程序启动过程中,由可信模块验证其静态执行文件。
在应用程序启动过程中,首先对应用程序的静态执行文件进行静态可信验证,检查应用程序的执行文件是否被篡改。如果静态可信验证未通过,说明应用程序被篡改,应用程序不可信,进入步骤12;如果静态可信验证通过,进入步骤3。
步骤3:启动该应用程序,该应用程序进入动态运行状态。
步骤4:代码运行到某跳转指令i,进入第i段顺序执行代码段。
以x86指令为例,跳转指令可以包括但不限于如call、jxx、retn等指令。
步骤5~步骤8、判断跳转指令i的下行j代码是否为跳转指令,如果为跳转指令,说明该段顺序执行代码已经全部运行,进入步骤9;如果为非跳转指令,度量该行代码,计算度量值Hash(j);计算该段顺序执行代码中已经计算过度量值的代码段的扩展度量值Hash(i)=Hash(Hash(i),Hash(j)),遍历该第i段顺序执行代码段中的下一行即第(j=j+1)行,返回步骤5,直至判断出第(j=j+1)行代码为跳转指令。
在一种实施例中,Hash(i)的初始值可以取值为0,每度量一行新代码得到度量值Hash(j),即将该度量值Hash(j)并在原有Hash(i)的尾部,重新计算新的Hash(i)。这样可以得到一个包括多个顺序执行代码段的度量值的集合即第二度量值集合。
步骤9~步骤11:将动态实时计算出的第二度量值集合中的Hash(i)值,与预先获得并存储的作为基准值的第一度量值集合中的Hash(i)值进行比对,如果都相等,确定应用程序可信,继续执行该应用程序;如果存在不相等,说明进程空间被篡改不可信,确定应用程序不可信,进入步骤12。
步骤12:对该应用程序进行告警,并拒绝执行该应用程序。
本申请实施例中,当静态可信验证未通过,或者应用程序动态可信验证未通过时,都说明应用程序不可信,都会直接拒绝继续执行该应用程序,并将告警信息通知给管理中心。
本申请还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行图5任一项所述的实现可信验证的方法。
本申请再提供一种实现可信验证的设备,包括存储器和处理器,其中,存储器中存储有以下可被处理器执行的指令:用于执行图5任一项所述的实现可信验证的方法的步骤。
图8为本申请实施例中应用程序实现可信验证的装置的组成结构示意图,如图8所示,包括:第一可信验证处理模块、处理模块、第二可信验证处理模块;其中,
第一可信验证处理模块,用于在应用程序启动过程中,对应用程序进行静态可信验证,启动静态可信验证为可信的应用程序;
处理模块,用于根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第二度量值集合;
第二可信验证处理模块,用于比对第二度量值集合和作为基准值的第一度量值集合,如果第一度量值集合和第二度量值集相等,确定应用程序可信,继续执行该应用程序。
在一种示例性实例中,本申请实施例中应用程序实现可信验证的装置,还可以包括:可信验证预处理模块,用于:
在应用程序反编译过程中,根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第一度量值集合。
在一种示例性实例中,第一可信验证处理模块还用于:
如果静态可信验证未通过,说明应用程序被篡改不可信,对该应用程序进行告警,并拒绝执行该应用程序。
在一种示例性实例中,第二可信验证处理模块具体用于:
将动态实时计算出的第二度量值集合中的Hash(i)值,与预先获得并存储的作为基准值的第一度量值集合中的Hash(i)值进行比对,如果都相等,确定应用程序可信,继续执行该应用程序;如果存在不相等,说明进程空间被篡改不可信,确定应用程序不可信,对该应用程序进行告警,并拒绝执行该应用程序。
虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (14)
1.一种安全模块,包括:可信验证处理模块、镜像恢复处理模块,以及用于存储恢复镜像的镜像存储模块;其中,
可信验证处理模块,用于实现平台启动可信验证,当平台启动出现不可信时,通知镜像恢复处理模块;
镜像恢复处理模块,用于接收到来自可信验证处理模块的通知,利用镜像存储模块中存储的恢复镜像对不可信的平台启动进行镜像恢复。
2.根据权利要求1所述的安全模块,其中,所述可信验证处理模块用于:
对以下之一或任意组合进行所述可信验证:平台启动代码、设备启动代码、操作系统加载器运行代码、操作系统运行代码,得到以下之一或任意组合的度量值:平台启动代码的度量值、设备启动代码的度量值、操作系统加载器运行代码的度量值、操作系统运行代码的度量值;当所述之一或任意代码的度量值与该代码对应的基准值不等时,通知所述镜像恢复处理模块。
3.根据权利要求1所述的安全模块,其中,所述镜像恢复处理模块用于:
接收到来自所述可信验证处理模块的通知,获知平台启动代码不可信、或者设备启动代码不可信、或者操作系统加载器运行代码不可信、或者操作系统运行代码不可信,利用所述镜像存储模块中存储的恢复镜像对不可信的代码进行镜像恢复。
4.根据权利要求1所述的安全模块,所述镜像恢复处理模块还用于:
通过高速网络接口与远程用于存储恢复镜像的远程恢复镜像池相连;
当查询到所述镜像存储模块中未存储需要进行镜像恢复的代码镜像时,查询远程恢复镜像池以获取当前需要进行镜像恢复的代码镜像;利用从远程恢复镜像池获得的恢复镜像对不可信的代码进行镜像恢复。
5.根据权利要求1或4所述的安全模块,其中,所述镜像恢复处理模块中的利用恢复镜像对不可信的代码进行镜像恢复,包括:
所述镜像恢复处理模块判断出所述获得的恢复镜像属于主板启动代码镜像,将所述获得的恢复镜像传递给所述可信验证处理模块;所述镜像恢复处理模块判断出所述获得的恢复镜像不属于主板启动代码镜像,刷写其他的恢复镜像;
所述可信验证处理模块还用于:根据获得的恢复镜像,刷写主板启动的恢复镜像。
6.根据权利要求1~5任一项所述的安全模块,其中,所述可信验证处理模块为可信芯片;可信芯片通过低速总线接口与平台主板相连,以进行平台启动的可信度量验证。
7.根据权利要求1~5任一项所述的安全模块,其中,所述镜像恢复处理模块为系统级芯片SoC;SoC通过高速总线接口与平台部件相连,进行镜像恢复。
8.一种实现可信验证的方法,包括:
安全模块对平台启动进行可信验证;
当平台启动出现不可信时,安全模块利用自身存储的恢复镜像对不可信的平台启动进行镜像恢复。
9.根据权利要求8所述的方法,其中,所述安全模块利用自身存储的恢复镜像对不可信的平台启动进行镜像恢复,包括:
当平台启动代码不可信、或者设备启动代码不可信、或者操作系统加载器运行代码不可信、或者操作系统运行代码不可信,利用所述安全模块中存储的恢复镜像对不可信的代码进行镜像恢复。
10.根据权利要求8所述的方法,还包括:
当所述安全模块查询到自身未存储需要进行镜像恢复的代码镜像时,查询远程恢复镜像池以获取当前需要进行镜像恢复的代码镜像;
利用从远程恢复镜像池获得的恢复镜像对不可信的代码进行镜像恢复。
11.根据权利要求8或10所述的方法,其中,所述利用恢复镜像对不可信的代码进行镜像恢复,包括:
判断出所述获得的恢复镜像属于主板启动代码镜像,通过低速接口刷写主板启动的恢复镜像;判断出获得的恢复镜像不属于主板启动代码镜像,通过高速接口刷写其他的恢复镜像。
12.根据权利要求8所述的方法,还包括:
在应用程序启动过程中,对应用程序进行静态可信验证,启动静态可信验证为可信的应用程序;
根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第二度量值集合;
比对第二度量值集合和作为基准值的第一度量值集合,如果第一度量值集合和第二度量值集相等,确定应用程序可信,继续执行该应用程序。
13.一种实现可信验证的方法,包括:
在应用程序启动过程中,对应用程序进行静态可信验证,启动静态可信验证为可信的应用程序;
根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第二度量值集合;
比对第二度量值集合和作为基准值的第一度量值集合,如果第一度量值集合和第二度量值集相等,确定应用程序可信,继续执行该应用程序。
14.根据权利要求13所述的方法,还包括:
在所述应用程序反编译过程中,根据跳转指令将应用程序的代码划分为多个代码段,对每个代码段分别进行可信度量,获得多个对应各代码段的第一度量值集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110668352.4A CN113419905A (zh) | 2021-06-16 | 2021-06-16 | 一种实现可信验证的方法及装置和安全模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110668352.4A CN113419905A (zh) | 2021-06-16 | 2021-06-16 | 一种实现可信验证的方法及装置和安全模块 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113419905A true CN113419905A (zh) | 2021-09-21 |
Family
ID=77788710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110668352.4A Pending CN113419905A (zh) | 2021-06-16 | 2021-06-16 | 一种实现可信验证的方法及装置和安全模块 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113419905A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115544523A (zh) * | 2022-11-28 | 2022-12-30 | 深圳鲲云信息科技有限公司 | 芯片引导程序的分段验证方法、装置、设备及可读介质 |
CN117093404A (zh) * | 2023-10-17 | 2023-11-21 | 西安热工研究院有限公司 | 可信动态度量过程中不可信进程自恢复方法、系统及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101038556A (zh) * | 2007-04-30 | 2007-09-19 | 中国科学院软件研究所 | 可信引导方法及其系统 |
CN102279914A (zh) * | 2011-07-13 | 2011-12-14 | 中国人民解放军海军计算技术研究所 | 一种uefi可信支撑系统及其控制方法 |
CN102332070A (zh) * | 2011-09-30 | 2012-01-25 | 中国人民解放军海军计算技术研究所 | 一种可信计算平台的信任链传递方法 |
CN108399339A (zh) * | 2018-02-12 | 2018-08-14 | 广东为辰信息科技有限公司 | 一种基于安全芯片的可信启动方法 |
-
2021
- 2021-06-16 CN CN202110668352.4A patent/CN113419905A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101038556A (zh) * | 2007-04-30 | 2007-09-19 | 中国科学院软件研究所 | 可信引导方法及其系统 |
CN102279914A (zh) * | 2011-07-13 | 2011-12-14 | 中国人民解放军海军计算技术研究所 | 一种uefi可信支撑系统及其控制方法 |
CN102332070A (zh) * | 2011-09-30 | 2012-01-25 | 中国人民解放军海军计算技术研究所 | 一种可信计算平台的信任链传递方法 |
CN108399339A (zh) * | 2018-02-12 | 2018-08-14 | 广东为辰信息科技有限公司 | 一种基于安全芯片的可信启动方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115544523A (zh) * | 2022-11-28 | 2022-12-30 | 深圳鲲云信息科技有限公司 | 芯片引导程序的分段验证方法、装置、设备及可读介质 |
CN115544523B (zh) * | 2022-11-28 | 2023-02-14 | 深圳鲲云信息科技有限公司 | 芯片引导程序的分段验证方法、装置、设备及可读介质 |
CN117093404A (zh) * | 2023-10-17 | 2023-11-21 | 西安热工研究院有限公司 | 可信动态度量过程中不可信进程自恢复方法、系统及设备 |
CN117093404B (zh) * | 2023-10-17 | 2024-02-09 | 西安热工研究院有限公司 | 可信动态度量过程中不可信进程自恢复方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11714910B2 (en) | Measuring integrity of computing system | |
US7849315B2 (en) | Method for managing operability of on-chip debug capability | |
JP4855679B2 (ja) | サーバ管理コプロセッササブシステム内部のtcpaによる信頼性の高いプラットフォームモジュール機能のカプセル化 | |
CN109446815B (zh) | 基本输入输出系统固件的管理方法、装置和服务器 | |
US10733288B2 (en) | Verifying controller code and system boot code | |
US7917762B2 (en) | Secure execution environment by preventing execution of unauthorized boot loaders | |
US10956575B2 (en) | Determine malware using firmware | |
CN107665308B (zh) | 用于构建和保持可信运行环境的tpcm系统以及相应方法 | |
US9245122B1 (en) | Anti-malware support for firmware | |
US9038179B2 (en) | Secure code verification enforcement in a trusted computing device | |
EP4116851A1 (en) | Trusted measurement method and related apparatus | |
CN111630513A (zh) | 认证所存储代码和代码更新的真实性 | |
CN113065140B (zh) | 一种芯片化控制保护装置内嵌安全防护系统及方法 | |
US11803639B2 (en) | Measuring integrity of computing system using jump table | |
CN113419905A (zh) | 一种实现可信验证的方法及装置和安全模块 | |
CN111950014A (zh) | 服务器系统启动的安全度量方法、安全度量装置及服务器 | |
US11068599B2 (en) | Secure initialization using embedded controller (EC) root of trust | |
US11775649B2 (en) | Perform verification check in response to change in page table base register | |
US9928367B2 (en) | Runtime verification | |
CN112511306A (zh) | 一种基于混合信任模型的安全运行环境构建方法 | |
CN116070289A (zh) | 应用于系统固件的安全芯片及电子设备 | |
CN111177703A (zh) | 操作系统数据完整性的确定方法及装置 | |
CN111651769A (zh) | 获取安全启动的度量方法和装置 | |
CN111967016B (zh) | 基板管理控制器的动态监控方法及基板管理控制器 | |
US20220092189A1 (en) | Implementation of Trusted Computing System Based on Master Controller of Solid-State Drive |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240305 Address after: # 03-06, Lai Zan Da Building 1, 51 Belarusian Road, Singapore Applicant after: Alibaba Innovation Co. Country or region after: Singapore Address before: Room 01, 45th Floor, AXA Building, 8 Shanton Road, Singapore Applicant before: Alibaba Singapore Holdings Ltd. Country or region before: Singapore |