CN108345786A - 硬件协助的软件控制流完整性远程证明方法 - Google Patents

硬件协助的软件控制流完整性远程证明方法 Download PDF

Info

Publication number
CN108345786A
CN108345786A CN201810046233.3A CN201810046233A CN108345786A CN 108345786 A CN108345786 A CN 108345786A CN 201810046233 A CN201810046233 A CN 201810046233A CN 108345786 A CN108345786 A CN 108345786A
Authority
CN
China
Prior art keywords
bts
control
integrality
authentication
software
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
Application number
CN201810046233.3A
Other languages
English (en)
Other versions
CN108345786B (zh
Inventor
周洪伟
原锦辉
张来顺
冀会芳
关慧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN201810046233.3A priority Critical patent/CN108345786B/zh
Publication of CN108345786A publication Critical patent/CN108345786A/zh
Application granted granted Critical
Publication of CN108345786B publication Critical patent/CN108345786B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Storage Device Security (AREA)

Abstract

本发明属于控制流完整性远程证明方法的技术领域,特别是涉及一种硬件协助的软件控制流完整性远程证明方法,当程序被装载入内存,以进程的形式在操作系统内运行后,其所有指令都将由处理器执行。处理器的BTS硬件特性将记录处理器所执行的控制转移指令,并将控制转移信息记录到内存中指定位置。为了使验证方检查BTS记录是否完整,BTS记录的完整性指纹将被扩展到TPM的PCR中。当验证方提出验证请求后,证明方将BTS记录以及记录指纹提交给验证方。验证方根据记录指纹验证BTS记录的完整性,再根据BTS记录以及基准值验证软件控制流完整性。本发明提高了捕获控制转移信息的效率,提高了判定控制流完整性的准确性,并可以提供远程证明服务。

Description

硬件协助的软件控制流完整性远程证明方法
技术领域
本发明属于控制流完整性远程证明方法的技术领域,特别是涉及一种硬件协助的软件控制流完整性远程证明方法。
背景技术
如果用户需要将数据提交给远端的服务器处理,用户自然希望知道:远端的服务器能够如其宣称的那样合法的使用数据,而不是非法使用这些数据。为了消除用户的顾虑,提供服务的厂商就需要提供这样一种机制,这种机制能够证明已方的软件合法的使用客户数据。这是远程证明的典型应用背景。
在远程证明范畴中,证明方向验证方提供的证据有多种形式。软件控制流完整性是十分重要的一类证据。软件控制流是程序执行过程中,所有可能的指令执行顺序的一个抽象表示。它反映的是软件的运行逻辑,在很大程度上也反映了软件运行时的行为。如果可以证明软件控制流并未被破坏,那么软件很大概率上是可信的。
就我们所知,由Tigist Abera等人所完成的C-FLAT与我们的目标是一致的,即:控制流完整性远程证明。不过由于依托的硬件基础以及应用环境等方面的差异,我们的工作与C-FLAT存在多个方面完全不同。下面详细介绍C-FLAT的工作流程及主要实现细节。
C-FLAT远程证明的工作流程包含以下几步。当验证方需要证明方提交进程A的控制流完整性证明时,验证方首先采用静态分析的方法生成进程A的控制流图(CFG:ControlFlow Graph);验证方在当前输入条件下,对某个特定的控制路径实施监控;验证方向证明方发送远程证明挑战c;证明方在同等条件下执行进程A的指令路径;证明方监控进程A的执行,并生成该控制路径的度量结果Auth,并进一步生成度量报告Sigx(Auth,c)发送给验证方;验证方验证数字签名以及挑战信息,以确保度量报告的合法性,以此为基础进一步验证Auth的正确,以明确进程A指定路径是否正确执行。
为了生成指定路径的度量值,C-FLAT在每个控制转移时完成如下计算:Hi=H(Hprev,Ni),其中H代表哈希计算函数,Hi代表度量值,Hprev代表前一轮的度量值,Ni代表基本块的ID号。结合图2进一步说明。图2表示控制流图的一个局部,圆圈表明基本块,每个基本块均有ID号,箭头表示控制转移,C-FLAT在每次控制转移时计算此次控制转移的度量值。对于H1而言,其哈希计算函数的输入为0和N1,对于H1而言,其哈希计算函数的输入为H1和N2,即以往控制转移的度量值以及控制转移的源基本块ID号。这样,控制路径上的所有控制转移将合并为一个度量值。为了快速计算哈希值,C-FLAT使用BLAKE-2密码算法。
为了获得时机计算度量值,C-FLAT截获软件控制流,在其中插入跳板(Trampolines)。这使得软件一旦进行控制转移时,首先跳转到跳板程序,由跳板程序完成此次控制转移的度量值计算,再完成控制转移。更确切的说,当接受到完整性证明请求,C-FLAT会对目标软件进行重写,将跳板插入到目标位置;当软件欲执行控制转移指令时,跳板会被首先触发,进而唤醒度量程序;度量程序完成控制路径的度量值计算;当软件完成指定路径的运行,验证方生成度量报告,通过网络提交给证明方。
C-FLAT存在两个主要的问题。首先是效率问题。C-FLAT需要在软件中插入若干的跳板,并且在跳板被触发后要完成度量值的计算,而这需要极大的消耗了计算资源。从执行的指令数量来看,为了实现监控控制流,C-FLAT需要执行跳板指令,需要执行BLAKE-2密码算法完成度量值计算,使得原来只需要执行一条控制转移指令的过程,需要数百上千条指令才能完成。这导致实施完整性远程证明的代价较大,从而导致用户可接受度降低。其次是准确性问题。软件控制流图是一个十分复杂的图形,很难用一个度量值来代表完整与否。事实上,控制流图中的循环、跳转等结构使得分析控制流图变得十分困难。就循环结构而言,随着外部环境以及软件输入发生变化,软件在某个结构上循环的次数也可能发生变化,很难在循环次数和软件运行正确性之间寻求某种固定的联系。C-FLAT也花费了大量的精力来处理控制流图中的这些特殊结构,但是当其应用于外部环境更加复杂的非嵌入式设备时,这些方法就不敷应对。
发明内容
针对现有技术中存在的缺陷,本发明提供一种硬件协助的软件控制流完整性远程证明方法,证明方在硬件的协助下,收集软件运行时的控制流信息,向远端的验证方提供控制流信息及其完整性证据。基于完整性证据,验证方能够验证控制流信息未被篡改,并依据控制流信息验证软件控制流的完整性。验证方可以是用户,也可以是用户信任的第三方。当验证方是可信第三方时,验证方还需要采用可靠手段告知用户验证结果。用户基于远程证明的结果,知晓远程目标软件的运行状况。
为了实现上述目的,本发明采用以下的技术方案:
本发明提供一种硬件协助的软件控制流完整性远程证明方法,参与远程证明的角色有两个,分别是验证方和证明方,为了保证远程证明的可行,验证方和证明方均度量同样的进程,即进程A,要求证明方的硬件集合中包括支持BTS特性的CPU以及TPM;该方法含有以下步骤:
步骤1,验证方设定待度量的控制路径;
步骤2,验证方生成待度量控制路径的完整性基准;
步骤3,验证方向证明方发起挑战:
挑战的内容包括两个方面:指定路径的位置信息以及随机数,其中位置信息是为了让证明方设置待度量控制路径,随机数是为了验证远程证明过程的新鲜性,防止他人实施重放攻击;
步骤4,证明方执行进程A的指定路径:
证明方根据挑战中所包含的位置信息,首先采用指令覆写的方法,设置待度量路径的起始点,完成目标软件的控制路径的设置后,启动进程A,指定路径被执行;
步骤5,证明方生成指定路径的度量值:
①证明方设置处理器BTS特性,使其监控进程指定路径的运行过程中所产生的控制转移信息;②这些控制转移信息存储到内存指定位置;③为了验证度量值自身的完整性,证明方采用哈希算法计算度量值的指纹,并将其扩展到TPM的PCR中;④为了让验证方验证度量值指纹的完整性,证明方借助TPM的远程证明能力,执行TPM_Quote接口函数,生成完整性记录指纹;⑤证明方将指定路径的度量值和其完整性记录指纹发送给验证方。
步骤6,验证方验证响应:
①验证方利用TPM的验证签名的功能,验证度量值指纹的完整性;②在保证度量值指纹的完整性的前提下,验证方利用完整性记录指纹进一步验证度量值的完整性;③在确认度量值完整的前提下,验证方根据完整性基准利用人工神经网络来验证指定的控制路径是否完整,并形成证明报告。
进一步地,所述步骤4中的指令覆写的具体实现过程如下:
在初始化阶段,首先扫描目标软件所有的控制转移指令,记录这些指令所在地址;在启动软件阶段,用新的控制转移指令覆盖原有的控制转移指令,使软件控制流发生改变,当软件运行到被覆盖的控制转移指令时,会首先执行所插入的指令片段,根据被插入的指令片段的类型,实现监控开启和监控结束的功能;考虑到软件控制结构的复杂性,不是所有的结束节点都能被触发,为了保证监控的完整,基于BTS的溢出中断机制完成监控路径的长度控制;
监控开启完成以下工作:初始化BTS硬件特性运行时所需要的环境参数,然后设置处理器BTS相应的控制位开启处理器BTS硬件特性,开始捕获在该处理器执行的控制转移信息;
监控结束完成以下工作:转移收集到的BTS缓存至指定位置,再次设置处理器BTS相应的控制位关闭处理器BTS硬件特性,释放初始化所申请的资源。
进一步地,所述BTS的溢出中断机制采用如下方法:
设监控路径的最大长度为m,BTS缓存的大小为n,m=k*n,其中k为正整数,其中,m>n,实际意义是在满足最大监控长度时,监控过程中所产生的BTS缓存已经多次被完整性认证;BTS溢出阈值设置为n,当BTM数量增至n时,中断服务例程会在每次中断时记录监控路径长度p,一旦检验P≥m时,则认定监控路径过长,停止对控制路径的监控,并转移已经收集到的BTM记录。
进一步地,所述步骤5的基于BTS收集数据,借助TPM的远程证明能力完成数据完整性远程证明的具体过程如下:
步骤5.1,进程在操作系统内活动,所有控制转移指令的执行信息均被处理器BTS硬件特性所捕获;
步骤5.2,将控制转移信息记录到内存中指定位置,系统定时将控制转移信息从BTS缓存存储到BTS记录中;
步骤5.3,为了验证BTS记录的完整性,将反映BTS记录的完整性度量值扩展到TPM的PCR中;
步骤5.4,通过执行TPM_Quote接口函数,生成完整性记录指纹,用于验证方验证BTS记录的完整性。
进一步地,所述记录和存储两个步骤通过设置BTS相关控制寄存器和数据结构,由处理器根据设置信息自动完成。
进一步地,所述PCR的工作模式包括静态PCR和动态PCR,为了防止PCR的内容被恶意篡改,TPM限制了PCR的更新操作,一种是扩展操作,即PCR新值=Hash(PCR旧值||待扩展数值),另一种是重置操作,对于静态PCR,只有在操作系统重启时才会重置PCR值,对于动态PCR,在执行TPM特权指令进行重置。
进一步地,所述步骤6验证方验证响应的过程如下:
步骤6.1,验证方检测BTS记录的完整性指纹的合法性,获取目标TPM的PCR值;
步骤6.2,验证方基于BTS记录,按照n个BTM一组的方式计算其完整性指纹,还原PCR的更新过程;
步骤6.3,验证方检查还原的PCR值与从TPM_Quote操作中获得的PCR值进行比对,如果不一致,则认为完整性指纹被篡改,终止验证;
步骤6.4,验证方根据已经通过完整性验证的BTS记录,分析其所含BTM,对进程指定路径的完整性实施完整性检查。
进一步地,所述步骤6中的③利用人工神经网络来验证指定的控制路径是否完整具体如下:
将对整个控制流的判定进行分解,根据动态变化程度将其分割为若干个判定点;每个判定点采用传统的比对方法,得出局部的判定结论,将软件一次运行所产生的所有局部判定结论作为人工神经网络的一组输入集;在训练阶段,反复监控软件正常运行或异常运行,得到若干组人工神经网络的输入集,并以这些输入集作为训练样本,训练人工神经网络,直至其收敛;在检测阶段,将待检测的软件运行轨迹转变为输入集,依托收敛后的人工神经网络,判定此次软件所产生的控制流是否完整。
进一步地,所述根据动态变化程度将控制流进行分解,在初始状态下,每个控制转移都是一个基本的判定点,反复监控运行软件所产生的控制转移,研究每个控制转移与前后控制转移的变化关系,将固定不变的控制转移合并为一个判定点,为进一步合并判定点,采用遍历的方法发现循环结构和多分支结构,对于循环结构,通过记录历史节点,并与当前节点进行比对发现循环结构,对于多分支结构,需要对比多次运行结果中,同一源地址是否存在多个目的地址。
进一步地,采用传统的比对方法对判定点实施判定,对于固定路径的判定点,直接将目标控制转移序列与之比对;对于循环结构的判定点,查看循环结构是否发生变化,循环次数是否有明显变化;对于多分支结构的判定点,如果出现未知的新的目的地址,就判定为异常。
与现有技术相比,本发明具有以下优点:
如图1所示,当程序被装载入内存,以进程的形式在操作系统内运行后,其所有指令都将由处理器执行。处理器的BTS硬件特性(BTS硬件特性是Intel处理器所具有的一种硬件特性,其它处理器也有类似的硬件特性)将记录处理器所执行的控制转移指令,并将控制转移信息记录到内存中指定位置。为了使验证方检查BTS记录是否完整,BTS记录的完整性指纹将被扩展到TPM的PCR中。当验证方提出验证请求后,证明方将BTS记录以及记录指纹提交给验证方。验证方根据记录指纹验证BTS记录的完整性,再根据BTS记录以及基准值验证软件控制流完整性。鉴于完全依赖软件捕获控制转移信息的困难,本发明借助了BTS硬件特性来捕获软件运行时的控制转移序列,减少对目标软件运行的影响,提高了捕获的效率。鉴于软件控制流的复杂性,难以用简单的比对方法判定其是否完整,本发明提出利用人工神经网络实施不确定性推定判定,提高了判定的准确性,减少了误判的可能。为了实施远程证明,本发明借助TPM的远程证明能力,并利用PCR存储完整性度量结果,将TPM和BTS有机结合在一起对外提供远程证明服务。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的工作原理示意图;
图2是C-FLAT控制流度量值计算方法示意图;
图3是本发明一种硬件协助的软件控制流完整性远程证明方法的流程示意图;
图4是设定监控路径示意图;
图5是设定监控路径异常情况示意图;
图6是利用人工神经网络实施控制流完整性度量示意图;
图7是数据完整性远程验证方法示意图。
具体实施方式
为了便于理解,对本发明中出现的部分名词作以下解释说明:
1、远程证明:为了使远程实体A相信实体B的某种声明,实体B向远程实体A提供相关证据,支持自己的声明。一种远程证明的典型应用场景如下所述。用户希望通过网络访问银行站点,并声称自己已经安装最新杀毒软件,其访问行为不会危及银行网站的安全。为了验证用户所使用主机满足连接银行网站的安全要求,银行网站向用户随机发送包含最新病毒样本,并且根据用户查杀结果来确定用户是否已经安装最新杀毒软件。
2、验证方和证明方:在远程证明中,用户A向用户B提供某种证据,支持自己的某种声明,那么用户A就是证明方,用户B就是验证方。
3、控制流(Control Flow):程序执行过程中,所有可能的指令执行顺序的一个抽象表示。
4、控制流完整性(Control Flow Integrity):控制流完整性是指软件必须按照事先确定的控制流图(CFG)的一条路径运行(原文:software execution must follow apath of a Control-Flow Graph(CFG)determined ahead of time)。
5、控制路径:程序控制流的某个局部。从监控性价比来看,并不需要对软件整个控制流实施监控,只需要对有价值的某个局部(即特定的控制路径)实施监控。
6、TPM(Trusted Platform Module):是一种植于计算机内部为计算机提供可信根的芯片,中国国内研究的TCM(trusted cryptography module,可信密码模块),与之对应。
7、PCR(Platform Configuration Register):平台配置寄存器,是TPM的内部寄存器,通常用来记录平台度量结果。
8、扩展操作:平台配置寄存器的主要更新方式,其更新的公式是新值=Hash(旧值||待扩展值)。
9、分支指令:是改变程序流程的指令。软件程序指令是按顺序执行的,当遇到分支指令后,就不再顺序执行下一条指令,而是转至分支指令所指示的指令。
10、BTS(Branch Trace Store:跳转记录存储):是处理器的一种调试特性,它能够将软件执行过程所产生的程序跳转信息记录到指令的内存位置。
11、BTM:Branch Trace Message的简写形式,是BTS特性收集的目标数据,从本质上来说就是控制转移的源地址和目的地址。
12、人工神经网络:是人工智能的一个分支,是从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。
实施软件控制流完整性远程证明的主要挑战有三个方面。首先,如何采集软件运行时的控制流信息。软件运行时的控制转移信息是瞬时而易失,单纯依赖软件的解决方案不能很好的解决采集效率和系统性能之间的矛盾。本发明将借助处理器BTS特性来收集软件运行时的控制流信息。其次,如何验证软件控制流的完整性。软件控制流十分复杂,现有控制流完整性度量方法往往着眼于少量控制转移。本发明提出利用人工神经网络对控制流大多数控制转移实施度量。最后,证明方如何让验证方信任已方所提供的信息。本发明将依赖TPM的远程证明支持,使远端的验证方可以验证控制流信息确实是初始采集的,并没有被攻击者所篡改。
本发明提出利用处理器BTS硬件特性来获取软件运行时控制转移信息,利用TPM对软件控制转移信息进行可信证明,基于人工神经网络判定软件控制流的完整性,从而使软件控制流完整性远程证明可以高效准确的完成。由于我们利用处理器BTS硬件特性来获取软件运行时控制转移信息,避免了C-FLAT那样依赖软件的方法所遇到的性能问题,使得证明方能够以较小的代价就能够完整性的获取软件运行时控制转移信息。为了对软件控制转移信息实施检查,本发明提出利用人工神经网络来判定软件运行轨迹是否合法。由于我们利用TPM对软件控制转移信息进行可信证明,使得验证方可以可信而完整的验证证明方软件的控制流信息是否完整。
本发明所依赖的硬件基础是用户可接受的。虽然BTS硬件只是Intel处理器上的硬件特性,考虑到Intel处理器的市场占有率以及其它处理器也有类似的硬件特性,所以本发明可以在Intel处理器上广泛推广,也可以容易移植到其它处理器。TPM已经普遍装备到广大计算机,是一种常见的硬件。目前国内计算机普遍装备TCM。TCM是类似TPM的硬件,是国内TPM的替代品,具备与TPM类似的功能。为了便于说明,本发明陈述以TPM为准,但是流程与方法可以推广至TCM。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:
如图3所示,本实施例提供一种硬件协助的软件控制流完整性远程证明方法,参与远程证明的角色有两个,分别是验证方和证明方,为了保证远程证明的可行,验证方和证明方均度量同样的进程,如图3所示的进程A,本发明要求证明方的硬件集合中包括支持BTS特性的CPU以及TPM,类似功能的处理器或TCM也可适用于本发明,该方法含有以下步骤:
步骤1,验证方设定待度量的控制路径;验证方可以设定待度量的路径范围。一种极端的情况是度量进程的所有控制路径。不过由于软件控制结构的复杂性,全面度量进程的控制路径可能会带来度量准确性和效率的下降。事实上,度量进程所有控制路径也不是必须的。例如进程所使用的动态链接库所产生的控制转移序列,可以预先单独实施度量,以提高度量的准确程度和度量效率。
步骤2,验证方生成待度量控制路径的完整性基准;我们采用动态监控的方法生成完整性基准。需要说明的是,现有技术手段还很难保证能够完整性基准的完备性。本发明不对完整性基准的生成方法作过多阐述,我们谨慎而乐观的假设可以完整性基准值是完备的。
步骤3,验证方向证明方发起挑战:
挑战的内容包括两个方面:指定路径的位置信息(用path表示)以及随机数(用c表示),其中path是为了让证明方设置待度量控制路径,c是为了验证远程证明过程的新鲜性,防止他人实施重放攻击;
步骤4,证明方执行进程A的指定路径:
证明方根据挑战中所包含的path,首先采用指令覆写的方法,设置待度量路径的起始点,完成目标软件的控制路径的设置后,启动进程A,指定路径被执行;
步骤5,证明方生成指定路径的度量值(用auth表示):
①证明方设置处理器BTS特性,使其监控进程指定路径的运行过程中所产生的控制转移信息;②这些控制转移信息存储到内存指定位置;③为了验证度量值自身的完整性,证明方采用哈希算法计算auth的指纹(用h表示),并将其扩展到TPM的PCR中;④为了让验证方验证h的完整性,证明方借助TPM的远程证明能力,执行TPM_Quote(h)接口函数,生成完整性记录指纹;⑤证明方将auth和TPM_Quote(h)发送给验证方。
步骤6,验证方验证响应:
①验证方利用TPM的验证签名的功能,验证h的完整性;②在保证h的完整性的前提下,验证方利用h进一步验证auth的完整性;③在确认auth完整的前提下,验证方根据完整性基准利用人工神经网络来验证指定的控制路径是否完整,并形成证明报告。
本发明采用软件指令覆写的方法改变软件控制流,并借助处理器BTS硬件特性,对软件指定控制路径实施监控。具体来讲,在初始化阶段,首先扫描目标软件所有的控制转移指令,记录这些指令所在地址;在启动软件阶段,用新的控制转移指令覆盖原有的控制转移指令,使软件控制流发生改变,当软件运行到被覆盖的控制转移指令时,会首先执行所插入的指令片段,根据被插入的指令片段的类型,实现监控开启和监控结束的功能;考虑到软件控制结构的复杂性,并非所有的结束节点都能被触发,为了保证监控的完整,基于BTS的溢出中断机制完成监控路径的长度控制,即当监控路径超过一定长度后就停止监控。
如图4所示,图中圆圈表明的是基本块,箭头表示控制转移,软件正确的执行过程是①→②→③→④。假设当前需要监控②→③这一部分指令的运行情况,本发明就查找②和③所在位置的控制转移指令,并用新的控制转移指令将其代替,从而使软件控制流导向监控程序。插入指令主要分为两种:监控起点指令和监控终点指令。根据插入指令的不同,软件控制流导向的目标指令片段不同,例如:覆盖指令②的指令即是监控起点指令,它指向监控开启功能入口地址,覆盖指令③的指令即是监控终点指令,它指向监控结束功能入口地址。这样,在BTS硬件特性的支持下,就可以实施控制流监控。
监控开启和监控结束是监控程序的两个主要功能。当监控起点指令被触发后,监控程序开启监控,主要完成以下工作:初始化BTS硬件特性运行时所需要的环境参数,例如BTS记录的存储位置、存储容量等等,然后设置处理器BTS相应的控制位开启处理器BTS硬件特性,开始捕获在该处理器执行的控制转移信息。当监控结束指令被触发后,监控程序结束监控,主要完成以下工作:转移收集到的BTS缓存至指定位置,再次设置处理器BTS相应的控制位关闭处理器BTS硬件特性,释放初始化所申请的资源。
由于软件控制流十分复杂,经常存在一个起点对应多个终点的情形,这就导致有时很难准确的设置某段控制路径的所有终点,使监控终点指令无法被触发。如图5所示,当前希望监控的路径是②→⑤→⑥,然而实际的执行路径是①→②→③→④。如果在②处设置监控开启,在⑥处设置监控关闭,那么⑥处的监控终点指令将无法触发。这就因为以②为起点的路径存在多个可能的结束节点,如果没有设置所有的监控结束节点,那么软件就可能绕开监控结束指令,导致监控行为一直持续,使大量无关数据淹没有用的监控数据。
为了解决上述问题,本发明借助处理器BTS特性,设置监控路径的最大长度。处理器BTS特性有这样一个性质:当存储BTM的BTS缓存溢出时,会产生中断信号通知处理器,由指定的中断处理程序完成BTM的备份和清除。鉴于此,本发明借助BTS中断机制,来限定监控路径的长度。本发明将一次控制转移记为长度1,处理器执行一次控制转移指令会产生一条BTM记录。为此,本发明可以设置BTS缓存的存储区域大小为m(m也是监控路径的最大长度)。当BTS缓存溢出时会产生中断,中断服务程序会及时处理这一异常。通过改写对应的中断服务程序,我们就可以借助中断的时机停止对控制路径的监控,并转移已经收集到的BTM记录。
指令覆写改变软件控制流是指用新的控制转移指令覆盖原有指令,从而改变软件原有的控制流,将其导向指定的指令片段,该指令片段可以实现安全性检查等工作,待完成后再还原软件控制流。对于Intel处理器所使用的变长指令而言,指令覆写需要解决原有指令和覆写指令之间的大小差异。当原有指令的长度大于或等于覆与指令长度,可以在原位置直接覆盖。当原有指令长度小于覆写指令的长度时,覆写必然会覆盖原有指令的后继字节,这就要求还原的指令还必须包含后继覆盖指令。为了保证能够成功还原软件控制流,需要在完成额外新增的安全性检查工作后,附加被覆盖的指令片段。
由于软件控制流的复杂性,很难采用逐一比较的方式对软件控制流实施完整性度量。现有的方法往往采用只是对控制流中少量的动态控制转移实施度量,通过比对动态控制转移的目标地址来发现非法的篡改行为。对控制流中数量众多的控制转移采用逐一比较的方法实施度量,既是消耗大量计算资源,也无法完全判定软件控制流的完整性。这是因为软件输入和外部环境的不同,很难完全确定每个控制转移的目标地址。对软件控制流整体实施完整性度量是一个不确定性推理问题。
本发明提出利用人工神经网络来实施软件控制流完整性度量,其思想如图6所示。首先将对整个控制流的判定进行分解,根据其动态变化程度将其分割为若干的判定点,如图6一个圆圈代表一个判定点。每个判定点采用传统的比对方法,得出局部的判定结论,将软件一次运行所产生的所有局部判定结论作为人工神经网络的一组输入集,如图6得到的一组输入{1,0,1}。在训练阶段,反复监控软件正常运行或异常运行,得到若干组人工神经网络的输入集,并以这些输入集作为训练样本,训练人工神经网络,直至其收敛。在检测阶段,将待检测的软件运行轨迹转变为输入集,依托收敛后的人工神经网络,就可以判定此次软件所产生的控制流是否完整。
按照上述思路,我们需要解决的关键问题就是如何合理分解控制流。我们分解的基本原则是根据控制转移的变化程度。在初始状态下,每个控制转移都是一个基本的判定点。反复监控运行软件所产生的控制转移,研究每个控制转移与前后控制转移的变化关系,将固定不变的控制转移合并为一个判定点,直至判定点数量少于预期阀值或者软件训练次数达到阀值。
为进一步合并判定点,我们还需要发现控制流中的循环结构和多分支结构。循环结构是软件控制流中常见的结构,容易影响完整性判定结论。有必要将循环结构剥离出来,单独实施判定,这样即可以对循环结构本身实施度量,也可以根据循环次数对软件的影响来实施度量。多分支跳转结构也是影响软件控制流度量的典型结构。本发明也将其单独剥离出来,形成一个判定点。
本发明采用遍历的方法发现循环结构和多分支结构。对于循环结构而言,在遍历的过程中,通过记录历史节点,并与当前节点进行比对就可以发现循环结构。当然,一些较为复杂的循环结构,如嵌套循环、交叉循环等,本发明所采用的方法并不总是能够发现。对于多分支结构而言,需要对比多次运行结果中,同一源地址是否存在多个目的地址。本发明并不追求对循环结构和多分支结构的彻底发现,现有的技术方案已经可以在一定程度上减少判定点的数量。
可以采用传统比对的方法对判定点实施判定。对于固定路径的判定点而言,可以直接将目标控制转移序列与之比对。对于循环结构的判定点而言,可以查看循环结构是否发生变化,循环次数是否有明显变化。对于多分支结构的判定点而言,如果现现未知的新的目的地址,那么就可以判定为异常。
判定点的判定结论将是人工神经网络的输入,人工神经网络的输出就是软件控制流完整性的度量结论。当判定点的判定结论为正常时,对应输入为1,当判定点的判定结论为异常时,对应输入为0。若干个判定结论形成人工神经网络的一组输入。在足够数量样本的训练下,人工神经网络将具备识别控制流异常的能力。当实施检测时,只需要将目标软件的控制转移序列转变为若干判定点,并将判定点结论转变为人工神经网络的输入,人工神经网络的输出就是软件控制流完整性的度量结论。
如图7所示,本发明基于BTS收集数据,借助TPM的远程证明能力完成数据完整性远程证明,具体过程包含以下步骤:
步骤5.1,进程在操作系统内活动,所有控制转移指令的执行信息均被处理器BTS硬件特性所捕获;
步骤5.2,将控制转移信息记录到内存中指定位置,系统定时将控制转移信息从BTS缓存写入到BTS记录;
步骤5.3,为了验证BTS记录的完整性,将反映BTS记录的完整性度量值扩展到TPM的PCR中;
步骤5.4,通过执行TPM_Quote接口函数,生成完整性记录指纹,用于验证方验证BTS记录的完整性。
记录和存储两个步骤主要通过设置BTS相关控制寄存器和数据结构,由处理器根据设置信息自动完成。本发明设置处理器MSR_DEBUGCTLA寄存器可以控制BTS特性的行为:本发明设置其中的标志字TR、BTS和BTINT为1,要求处理器将BTM(Branch trace message)写入BTS缓存,并且在BTS缓存溢出时产生中断;本发明设置其中的标志字BTS_OFF_OS为1,要求处理器不记录内核指令所产生的BTM;本发明设置其中的标志字BTS_OFF_USER为0,要求处理器记录非内核指令所产生的BTM。本发明设置处理器IA32_DS_AREA寄存器设置BTS缓存:本发明设置IA32_DS_AREA寄存器,使其指向BTS缓存管理数据结构(DS BufferManagement Area);设置BTS缓存管理数据结构,写入BTS缓存基址、BTM最大记录量、BTM溢出阀值等信息。本发明在内核捕捉BTS记录溢出中断信号,由其中断服务例程对BTS记录进行转移。
为减少BTM被篡改的风险,本发明定时将其完整性指纹扩展至TPM的PCR中。BTS缓存是处理器缓存BTM的存储区域,其空间较小。BTS记录是本发明收集所有BTM的存储区域,其空间较大。需要将BTM从BTS缓存中转移至BTS记录,并对BTS记录实施完整性认证。为此,本发明设置BTS溢出阀值为n,当BTS缓存中存储的BTM数量即将超过n时,处理器就会产生中断,由中断服务例程完成后继处理。本发明修改中断服务例程,不仅将其转移到BTM至BTS记录中,还对待转移的BTM记录集进行完整性指纹计算,将指纹值扩展至TPM PCR。本发明不限定计算BTS缓存的哈希算法。
需要协调对BTS溢出中断的利用。为了依托BTS控制监控的最大路径,本发明需要设置BTS溢出阀值。为了及时对BTS缓存进行完整性认证,本发明同样需要设置BTS溢出阀值。为了协调使用BTS溢出阀值,本发明采用如下方法:设监控路径的最大长度为m,BTS缓存的大小为n,m=k*n,其中k为正整数,一般而言,BTS缓存不应该设置过大,应该小于最大监控路径的长度,即,m>n,其实际意义是在满足最大监控长度时,监控过程中所产生的BTS缓存已经多次被完整性认证,其根本目的是:及时对中间监控结果进行完整性认证,以提高整个监控结果的可信性;根据这一考虑,BTS溢出阈值设置为n,当BTM数量增至n时,中断服务例程会在每次中断时记录监控路径长度p,一旦检验P≥m时,则认定监控路径过长,停止对控制路径的监控,并转移已经收集到的BTM记录。
本发明支持静态PCR和动态PCR两种工作模式。为了防止PCR的内容被恶意篡改,TPM限制了PCR的更新操作。一种是扩展操作,即PCR新值=Hash(PCR旧值||待扩展数值)。一种是重置操作,对于静态PCR而言,只有在操作系统重启时才会重置PCR值,对于动态PCR而言,可以在执行TPM特权指令进行重置。验证PCR内容的过程实际就是重复PCR更新操作。当前操作系统普通应用TPM来解决安全问题,特别是各个厂商所实现的可信启动过程中往往使用了静态PCR,这就使基于静态PCR的解决方案会导致验证PCR数据操作过多。相对而言,动态PCR的验证所需要的计算量会少一些。
当监控程序接收到结束监控的信号后,会完成下列操作后,最终生成记录指纹。第一步,监控程序在收到监控结束指令或者中断服务例程发来的结束监控信号后,会设置MSR_DEBUGCTLA寄存器,停止收集目标进程的分支跳转信息。第二步,监控程序对BTS缓存中的BTM实施完整性认证,并将完整性指纹扩展到TPM PCR中,当BTS缓存无剩余BTM时,跳过此步骤。第三步,监控程序会转移BTS缓存中的BTM至当前BTS记录尾部,形成包含所有BTM信息的BTS记录。第四步,监控程序执行TPM_Quote操作,生成BTS记录的完整性指纹。提交远程验证方的数据包括BTS记录和其完整性指纹。
远程验证方验证过程如下:
步骤6.1,验证方检测BTS记录的完整性指纹的合法性(本质上就是验证数字签名),获取目标TPM的PCR值;
步骤6.2,验证方基于BTS记录,按照n个BTM一组的方式计算其完整性指纹(剩余不足n个的若干BTM视为一组),还原PCR的更新过程;
步骤6.3,验证方检查还原的PCR值与从TPM_Quote操作中获得的PCR值进行比对,如果不一致,则认为完整性指纹被篡改,终止验证;
步骤6.4,验证方根据已经通过完整性验证的BTS记录,分析其所含BTM,对进程指定路径的完整性实施完整性检查。本发明假设所有硬件是可信的,并且其工作不被攻击者所影响。
需要说明的是,本发明可以采用程序插桩等其它方法改变软件控制流。本发明将代码覆写方法应用于监控路径的设置,并与处理器BTS硬件特性配合,使得控制路径的监控可行。
本发明采用人工神经网络识别非法控制流。本发明并未对人工神经网络作具体要求,例如网络层次等。只是希望利用工人神经网络的模式识别能力来完成控制流完整性判定。本发明采用的人工神经网络是双层次的BP人工神经网络,但不限制其它人工智能的敏感。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来讲是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽范围。

Claims (10)

1.一种硬件协助的软件控制流完整性远程证明方法,其特征在于,参与远程证明的角色有两个,分别是验证方和证明方,为了保证远程证明的可行,验证方和证明方均度量同样的进程,即进程A,要求证明方的硬件集合中包括支持BTS特性的CPU以及TPM;该方法含有以下步骤:
步骤1,验证方设定待度量的控制路径;
步骤2,验证方生成待度量控制路径的完整性基准;
步骤3,验证方向证明方发起挑战:
挑战的内容包括两个方面:指定路径的位置信息以及随机数,其中位置信息是为了让证明方设置待度量控制路径,随机数是为了验证远程证明过程的新鲜性,防止他人实施重放攻击;
步骤4,证明方执行进程A的指定路径:
证明方根据挑战中所包含的位置信息,首先采用指令覆写的方法,设置待度量路径的起始点,完成目标软件的控制路径的设置后,启动进程A,指定路径被执行;
步骤5,证明方生成指定路径的度量值:
①证明方设置处理器BTS特性,使其监控进程指定路径的运行过程中所产生的控制转移信息;②这些控制转移信息存储到内存指定位置;③为了验证度量值自身的完整性,证明方采用哈希算法计算度量值的指纹,并将其扩展到TPM的PCR中;④为了让验证方验证度量值指纹的完整性,证明方借助TPM的远程证明能力,执行TPM_Quote接口函数,生成完整性记录指纹;⑤证明方将指定路径的度量值和其完整性记录指纹发送给验证方。
步骤6,验证方验证响应:
①验证方利用TPM的验证签名的功能,验证度量值指纹的完整性;②在保证度量值指纹的完整性的前提下,验证方利用完整性记录指纹进一步验证度量值的完整性;③在确认度量值完整的前提下,验证方根据完整性基准利用人工神经网络来验证指定的控制路径是否完整,并形成证明报告。
2.根据权利要求1所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,所述步骤4中的指令覆写的具体实现过程如下:
在初始化阶段,首先扫描目标软件所有的控制转移指令,记录这些指令所在地址;在启动软件阶段,用新的控制转移指令覆盖原有的控制转移指令,使软件控制流发生改变,当软件运行到被覆盖的控制转移指令时,会首先执行所插入的指令片段,根据被插入的指令片段的类型,实现监控开启和监控结束的功能;考虑到软件控制结构的复杂性,不是所有的结束节点都能被触发,为了保证监控的完整,基于BTS的溢出中断机制完成监控路径的长度控制;
监控开启完成以下工作:初始化BTS硬件特性运行时所需要的环境参数,然后设置处理器BTS相应的控制位开启处理器BTS硬件特性,开始捕获在该处理器执行的控制转移信息;
监控结束完成以下工作:转移收集到的BTS缓存至指定位置,再次设置处理器BTS相应的控制位关闭处理器BTS硬件特性,释放初始化所申请的资源。
3.根据权利要求2所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,所述BTS的溢出中断机制采用如下方法:
设监控路径的最大长度为m,BTS缓存的大小为n,m=k*n,其中k为正整数,其中,m>n,实际意义是在满足最大监控长度时,监控过程中所产生的BTS缓存已经多次被完整性认证;BTS溢出阈值设置为n,当BTM数量增至n时,
中断服务例程会在每次中断时记录监控路径长度p,一旦检验P≥m时,则认定监控路径过长,停止对控制路径的监控,并转移已经收集到的BTM记录。
4.根据权利要求1所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,所述步骤5的基于BTS收集数据,借助TPM的远程证明能力完成数据完整性远程证明的具体过程如下:
步骤5.1,进程在操作系统内活动,所有控制转移指令的执行信息均被处理器BTS硬件特性所捕获;
步骤5.2,将控制转移信息记录到内存中指定位置,系统定时将控制转移信息从BTS缓存存储到BTS记录中;
步骤5.3,为了验证BTS记录的完整性,将反映BTS记录的完整性度量值扩展到TPM的PCR中;
步骤5.4,通过执行TPM_Quote接口函数,生成完整性记录指纹,用于验证方验证BTS记录的完整性。
5.根据权利要求4所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,所述记录和存储两个步骤通过设置BTS相关控制寄存器和数据结构,由处理器根据设置信息自动完成。
6.根据权利要求1或者4所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,所述PCR的工作模式包括静态PCR和动态PCR,为了防止PCR的内容被恶意篡改,TPM限制了PCR的更新操作,一种是扩展操作,即PCR新值=Hash(PCR旧值||待扩展数值),另一种是重置操作,对于静态PCR,只有在操作系统重启时才会重置PCR值,对于动态PCR,在执行TPM特权指令进行重置。
7.根据权利要求1所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,所述步骤6验证方验证响应的过程如下:
步骤6.1,验证方检测BTS记录的完整性指纹的合法性,获取目标TPM的PCR值;
步骤6.2,验证方基于BTS记录,按照n个BTM一组的方式计算其完整性指纹,还原PCR的更新过程;
步骤6.3,验证方检查还原的PCR值与从TPM_Quote操作中获得的PCR值进行比对,如果不一致,则认为完整性指纹被篡改,终止验证;
步骤6.4,验证方根据已经通过完整性验证的BTS记录,分析其所含BTM,对进程指定路径的完整性实施完整性检查。
8.根据权利要求1所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,所述步骤6中的③利用人工神经网络来验证指定的控制路径是否完整具体如下:
将对整个控制流的判定进行分解,根据动态变化程度将其分割为若干个判定点;每个判定点采用传统的比对方法,得出局部的判定结论,将软件一次运行所产生的所有局部判定结论作为人工神经网络的一组输入集;在训练阶段,反复监控软件正常运行或异常运行,得到若干组人工神经网络的输入集,并以这些输入集作为训练样本,训练人工神经网络,直至其收敛;在检测阶段,将待检测的软件运行轨迹转变为输入集,依托收敛后的人工神经网络,判定此次软件所产生的控制流是否完整。
9.根据权利要求8所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,所述根据动态变化程度将控制流进行分解,在初始状态下,每个控制转移都是一个基本的判定点,反复监控运行软件所产生的控制转移,研究每个控制转移与前后控制转移的变化关系,将固定不变的控制转移合并为一个判定点,为进一步合并判定点,采用遍历的方法发现循环结构和多分支结构,对于循环结构,通过记录历史节点,并与当前节点进行比对发现循环结构,对于多分支结构,需要对比多次运行结果中,同一源地址是否存在多个目的地址。
10.根据权利要求8所述的硬件协助的软件控制流完整性远程证明方法,其特征在于,采用传统的比对方法对判定点实施判定,对于固定路径的判定点,直接将目标控制转移序列与之比对;对于循环结构的判定点,查看循环结构是否发生变化,循环次数是否有明显变化;对于多分支结构的判定点,如果出现未知的新的目的地址,就判定为异常。
CN201810046233.3A 2018-01-17 2018-01-17 硬件协助的软件控制流完整性远程证明方法 Active CN108345786B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810046233.3A CN108345786B (zh) 2018-01-17 2018-01-17 硬件协助的软件控制流完整性远程证明方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810046233.3A CN108345786B (zh) 2018-01-17 2018-01-17 硬件协助的软件控制流完整性远程证明方法

Publications (2)

Publication Number Publication Date
CN108345786A true CN108345786A (zh) 2018-07-31
CN108345786B CN108345786B (zh) 2020-01-14

Family

ID=62960822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810046233.3A Active CN108345786B (zh) 2018-01-17 2018-01-17 硬件协助的软件控制流完整性远程证明方法

Country Status (1)

Country Link
CN (1) CN108345786B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109507952A (zh) * 2018-12-12 2019-03-22 成都飞机工业(集团)有限责任公司 一种基于切削负载的复杂零件数控加工异常状态监控方法
CN109960940A (zh) * 2019-02-18 2019-07-02 中国科学院软件研究所 一种基于日志的嵌入式设备控制流证明方法及系统
CN110276198A (zh) * 2019-06-14 2019-09-24 中国科学院信息工程研究所 一种基于概率预测的嵌入式可变粒度控制流验证方法及系统
CN110909351A (zh) * 2019-11-23 2020-03-24 中国人民解放军战略支援部队信息工程大学 硬件协助的控制结构不变式挖掘方法
CN113423108A (zh) * 2021-05-11 2021-09-21 西安电子科技大学 一种远程证明方法、系统、计算机设备及数据处理终端
CN114443147A (zh) * 2020-11-06 2022-05-06 北京航空航天大学 基于可信硬件技术的超级监控式无人飞行器可信检测方法
CN114925361A (zh) * 2022-05-06 2022-08-19 北京航空航天大学 基于可信平台的嵌入式设备软件远程审计方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593259A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 软件完整性验证方法及系统
CN101834860A (zh) * 2010-04-22 2010-09-15 北京交通大学 一种远程动态验证客户端软件完整性的方法
CN102341805A (zh) * 2009-03-12 2012-02-01 国际商业机器公司 使用外围设备的完整性验证
CN104217141A (zh) * 2014-09-04 2014-12-17 东莞理工学院 一种增强的虚拟仪器测量软件计量支持方法及装置
CN106789059A (zh) * 2016-11-10 2017-05-31 中国电子科技集团公司第二十八研究所 一种基于可信计算的远程双向访问控制系统及方法
US20170257365A1 (en) * 2013-12-27 2017-09-07 Trapezoid, Inc. System and method for hardware-based trust control management

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102341805A (zh) * 2009-03-12 2012-02-01 国际商业机器公司 使用外围设备的完整性验证
CN101593259A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 软件完整性验证方法及系统
CN101593259B (zh) * 2009-06-29 2011-03-23 北京航空航天大学 软件完整性验证方法及系统
CN101834860A (zh) * 2010-04-22 2010-09-15 北京交通大学 一种远程动态验证客户端软件完整性的方法
US20170257365A1 (en) * 2013-12-27 2017-09-07 Trapezoid, Inc. System and method for hardware-based trust control management
CN104217141A (zh) * 2014-09-04 2014-12-17 东莞理工学院 一种增强的虚拟仪器测量软件计量支持方法及装置
CN106789059A (zh) * 2016-11-10 2017-05-31 中国电子科技集团公司第二十八研究所 一种基于可信计算的远程双向访问控制系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
林华: "面向网络空间的计算安全与数据保护关键技术研究", 《湖南科技学院学报》 *
石文昌等: "DCFI-Checker:利用性能监控计数器检测内核动态控制流完整性", 《中国通信》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109507952A (zh) * 2018-12-12 2019-03-22 成都飞机工业(集团)有限责任公司 一种基于切削负载的复杂零件数控加工异常状态监控方法
CN109507952B (zh) * 2018-12-12 2021-07-30 成都飞机工业(集团)有限责任公司 一种基于切削负载的复杂零件数控加工异常状态监控方法
CN109960940A (zh) * 2019-02-18 2019-07-02 中国科学院软件研究所 一种基于日志的嵌入式设备控制流证明方法及系统
CN109960940B (zh) * 2019-02-18 2021-01-01 深圳供电局有限公司 一种基于日志的嵌入式设备控制流证明方法及系统
CN110276198A (zh) * 2019-06-14 2019-09-24 中国科学院信息工程研究所 一种基于概率预测的嵌入式可变粒度控制流验证方法及系统
CN110276198B (zh) * 2019-06-14 2021-04-20 中国科学院信息工程研究所 一种基于概率预测的嵌入式可变粒度控制流验证方法及系统
CN110909351A (zh) * 2019-11-23 2020-03-24 中国人民解放军战略支援部队信息工程大学 硬件协助的控制结构不变式挖掘方法
CN110909351B (zh) * 2019-11-23 2021-11-12 中国人民解放军战略支援部队信息工程大学 硬件协助的控制结构不变式挖掘方法
CN114443147A (zh) * 2020-11-06 2022-05-06 北京航空航天大学 基于可信硬件技术的超级监控式无人飞行器可信检测方法
CN113423108A (zh) * 2021-05-11 2021-09-21 西安电子科技大学 一种远程证明方法、系统、计算机设备及数据处理终端
CN113423108B (zh) * 2021-05-11 2022-07-12 西安电子科技大学 一种远程证明方法、系统、计算机设备及数据处理终端
CN114925361A (zh) * 2022-05-06 2022-08-19 北京航空航天大学 基于可信平台的嵌入式设备软件远程审计方法及装置

Also Published As

Publication number Publication date
CN108345786B (zh) 2020-01-14

Similar Documents

Publication Publication Date Title
CN108345786A (zh) 硬件协助的软件控制流完整性远程证明方法
Grieco et al. Echidna: effective, usable, and fast fuzzing for smart contracts
Kong et al. Automated testing of android apps: A systematic literature review
Ohmann et al. Behavioral resource-aware model inference
Musuvathi et al. Model Checking Large Network Protocol Implementations.
EP3956773A1 (en) Program execution coverage expansion by selective data capture
Homer et al. A sound and practical approach to quantifying security risk in enterprise networks
Böhme STADS: Software testing as species discovery
US20150261624A1 (en) Systems, methods, and media for recovering an application from a fault or attack
Cheng et al. Checking is believing: Event-aware program anomaly detection in cyber-physical systems
Wu et al. Evaluating and improving neural program-smoothing-based fuzzing
He et al. A bounded statistical approach for model checking of unbounded until properties
Manes et al. The art, science, and engineering of fuzzing: A survey
Tabrizi et al. Design-level and code-level security analysis of IoT devices
US20100218171A1 (en) Computer bus monitoring for the adaptive control of executing software processes
TW202046149A (zh) 核身校驗方法及裝置
Lal et al. Blockchain testing: Challenges, techniques, and research directions
Duan et al. Towards automated safety vetting of smart contracts in decentralized applications
Bognar et al. Mind the gap: Studying the insecurity of provably secure embedded trusted execution architectures
Gao et al. Fw‐fuzz: A code coverage‐guided fuzzing framework for network protocols on firmware
Autili et al. Software engineering techniques for statically analyzing mobile apps: research trends, characteristics, and potential for industrial adoption
Luo et al. BLEEM: packet sequence oriented fuzzing for protocol implementations
Meng et al. Greybox Fuzzing of Distributed Systems
Chan A framework for live forensics
Chen et al. Using memory propagation tree to improve performance of protocol fuzzer when testing ICS

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