英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料
通过软件签名进行控制流检查
Nahmsuk Oh,IEEE会员,Philip P. Shirvani,IEEE会员,Edward J. McCluskey,IEEE会员
摘要 - 本文提出了一种新的签名监控技术CFCSS(软件签名控制流程检查);CFCSS是一种纯软件方法,使用指定的签名检查程序的控制流。算法为程序图中的每个节点分配唯一的签名,并添加错误检测指令。在编译期间,使用指令的常量字段将签名嵌入到程序中,并在执行程序时与运行时签名进行比较。另一种算法减少了由CFCSS中的指令检查引起的代码大小和执行时间开销。
使用基准程序进行“分支故障注入实验”。没有CFCSS,平均有33.7%的注入分支断层产生未检测到的错误输出;然而,对于CFCSS,只有3.1%的分支故障产生未检测到的错误输出。因此,可以使用CFCSS将控制流错误的错误检测覆盖范围增加一个数量级。
与先前的签名监控技术相比,CFCSS的独特优势在于CFCSS是一种纯软件方法,即它不需要专用硬件,例如用于控制流检查的看门狗处理器。多任务环境中的监视任务也不需要额外的硬件,但CFCSS优于监视任务的优点是即使操作系统不支持多任务处理也可以使用CFCSS。
索引术语 - 分配的签名,控制流检查,故障注入实验,签名监控,软件错误检测。
首字母缩写词1
阿尔戈斯 高级研究和全球观测卫星
比照 控制流
CFCSS 通过软件签名CPU进行CF检查 中央处理器
格斯尔 全局签名寄存器SIC 结构完整性检查。
符号
/ / / /:表示基本块的顶点集
表示基本块之间可能的CF的边集
程序图
手稿于1999年11月1日收到;2000年7月10日修订。这项工作部分由弹道导弹防御组织,创新科学和技术(BMDO / IST)理事会支持,并通过美国海军部,海军研究办公室NMP14-92-J管理。 -1782和N00014-95-1-1047。责任编辑:R。Karri。
作者与可靠计算中心合作;斯坦福大学电气工程与计算机科学系,斯坦福,加利福尼亚州94305美国(电子邮件:{NSoh; Shirvani; EJM}@crc.stanford.edu)。
发布者项目标识符S 0018-9529(02)02954-8。
1单数和复数的首字母缩略词总是拼写相同。
签名
运行时签名中的签名差异
/ 的价值 在
运行时调整签名
br 来自的分支 至
汁 一组继承人
预计值 前人的一套 .
术语
- 基本块:一组最大有序指令,其中从第一条指令开始执行,并在最后一条指令处终止。除了最后一个块之外,基本块中没有分支指令。基本块终止于分支到另一个基本块的指令或从程序中的两个或多个位置接收CF传输的指令[3]。
- 程序图:来自的定义 和 ,程序可以用程序图表示,。br不一定是明确的分支指令;它们还表示直通执行路径,跳转,子程序调用和返回。图1是一个例子。
- 非法:在 / 中,当且仅当包含br时。同样,当且仅当包括br时,在 / 中。如果程序由其表示
/,那么br(在执行期间)如果br不包括在[3]中则是非法的。这个非法分支表示CF错误,这可能是由程序计数器,地址电路或存储器系统等硬件中的瞬态或永久性故障引起的[1]。
- Branch-Fan-in节点,分支插入,分支删除:如果一个节点接收到超过2个CF传输,则它是一个分支扇入节点,即pred中的节点数 /
.当节点中的一个指令由于错误而变为分支指令时,发生分支插入。当错误导致节点的分支指令变为非分支指令时,发生分支删除。结果,没有分支指令的节点与存储器地址空间中与其相邻的节点合并。
- Xor-和的差异:执行和/或xor-difference的按位XOR运算的结果
,哪里 并且是二进制数。
-
- 介绍
T
在运行期间在计算机系统中引入的RANSIENT或永久性故障可能导致程序中不正确的指令执行序列,并且可能导致CF错误。如果系统未执行某些运行时检查,则可能无法检测到错误输出并且可能造成严重损坏
0018-9529 / 02 $ 17.00copy;2002 ieee
图1.指令序列及其图表。
结果。因此,监控程序以检测CF中的任何异常或其他错误并采取适当措施以避免任何不正确的输出非常重要。
本文介绍了CFCSS,这是一种新的指定签名监视技术,它使用指令检查程序的块间CF,但不使用任何特殊硬件。该计划分为基本块。基于程序的CF构建程序图。程序图中的节点表示基本块。程序图中的所有节点都分配了不同的任意数字(签名),这些数字在预处理或编译时嵌入到程序中。在程序执行期间,运行时签名存储在通用寄存器GSR之一中,并且每当控制转移到新节点时与存储的节点签名进行比较。对于多分支,将运行时调整签名与。完整的算法和示例程序在第III节中。
CFCSS与其他签名监控技术的不同之处在于不使用看门狗处理器或额外硬件来实现块间CF检查。CFCSS使用类似于SIC [1]的指定签名技术,但不需要将检查标签发送到看门狗处理器,因为它使用指令检查签名。块签名自检[2]也是一种指定的签名技术,它使用子程序来代替看门狗处理器。但是,它的缺点是代码取决于代码的位置,因为签名由绝对地址组成。[3]中的CF检查方案是纯软件方法,但它构建了一个包含有关并发CF检查信息的数据库,因此可能需要可观的内存开销。[4]中的监视程序任务也不需要额外的硬件,但操作系统必须支持多任务环境。另一方面,在导出的签名技术中需要看门狗处理器或类似的监视硬件,如
- 路径签名分析[5];
- 签名指令流(SIS)[6];
- 异步SIS [7];
- 连续特征监测(CSM)[8],[9];
- 扩展精度校验和方法[10];
- 在线签名学习和检查(OSLC)[11];
- 隐式签名检查(ISC)[12]。
它们通过观察从指令位模式或基本块的地址导出的签名来检查块内和块间CF,而CFCSS通过GSR中的监视分配签名来检查块间CF.虽然它具有相似的功能,但GSR与[13]中的保留寄存器不同;保留寄存器存储程序或过程名称,而GSR存储当前节点的签名。GSR不是CPU中的特殊或附加寄存器。它是由编译器或汇编器选择用作GSR的CPU的通用寄存器之一。此外,CFCSS与VASC [14]的不同之处在于它嵌入和检查签名的方式。
CFCSS的动机来自真实的太空实验,斯坦福ARGOS(高级研究和全球观测卫星)项目[15]。美国(非常规恒星方面)实验[16]是ARGOS卫星携带的实验之一,包括一个有两个处理器板的计算试验台。其中一块板仅使用商用现成组件构建,没有用于错误检测的硬件;只有纯软件技术才能用于检测错误。在这种情况下,软件技术CFCSS可用于通过增强CF错误检测能力来提高系统可靠性。
- 之前的工作
已经提出了签名监视和纯软件方法来检查计算机系统的CF.签名监视是一种方法,其中计算与指令块(CF图中的一个或多个节点)相关联的签名并在编译期间保存在某处;然后,在运行时生成相同的签名,并与保存的签名进行比较。签名是任意分配的(分配的签名)或从二进制代码或指令的地址(派生的签名)导出。结构完整性检查(SIC)[1]使用指定的签名方法,而路径签名分析(PSA)[5],签名指令流(SIS)[6],异步SIS(ASIS)[7],连续签名监控(CSM) [8],[9],扩展精度校验和方法[10],以及在线签名学习和检查(OSLC)
[11]都使用派生的签名。
在许多签名监视技术中,专用硬件用于计算运行时签名并将其与保存的签名进行比较。在[17],[18]中为此目的提出了一种看门狗处理器。另一方面,当硬件固定且不能改变时,需要不需要任何额外硬件的软件方法。软件方法的示例如下:
- 断言[4],[19];
- 看门狗任务[4];
- 块签名自检(BSSC)[11];
- 错误捕获指令(ECI)[11];
- 定时器检查程序的行为[20];
- 可用资源驱动的控制流量监测(ARC)[21];
- 时间冗余方法[22]。
已经在[14]中提出并评估了指定的签名监视技术Versatile Assign Signature Checking(VASC),其中报告了RISC和CISC处理器中CF错误与数据错误之间的比率的比较。
- cfcss的描述
- 运行时签名
CFCSS使用GSR检查程序的CF,GSR是一个专用寄存器,它包含与程序流程图中当前节点(包含当前执行的指令的节点)相关的运行时签名。在编译程序时,识别每个基本块(在程序流程图中表示)并分配唯一。在正常执行程序(无错误)下,/应该相等。如果包含与当前节点关联的签名不同的数字,则程序中发生错误。
当控制从一个基本块传输到另一个基本块时,由分支的目标节点处的签名函数生成新的。签名函数是使用两个值更新当前节点的函数:
-
- 前一节点的签名(分支的源节点);和
- 当前节点的签名(分支的目标节点)。
使用这两个值是因为分支的源节点和目标节点唯一地确定了每个分支。
让签名功能
/是在存储的编译时广告中预先计算的。在采取br之前,包含。采取分支后,使用新值更新,
/,基于之前的/和/。如果 ,那就没有CF错误。另一方面,如果是,则发生CF错误。
选择XOR操作作为签名函数,因为为了检查或生成签名,XOR操作优于其他ALU操作。由于AND,OR,XOR运算在ALU中使用的门数少于加法和乘法,因此它们在ALU中出现错误的几率低于加法和乘法。现在,检查原始程序中的正确CF并最小化签名功能中的错误概率。签名函数使用的门越少,签名函数计算中出错的概率就越低。使用AND和OR运算,给定一个输入操作数 / 和输出结果 /,不能唯一确定另一个输入操作数 / 。因此,可能发生签名别名,导致未检测到的错误。XOR没有此混叠问题。因此,签名函数的最佳候选者是XOR运算。
例如,在图2中, / / ;节点ae将唯一的数字作为其签名。在执行分支之前,/与源的签名相同
图2.非法分支的检测。
分支的节点。分支完成后,使用新的运行时签名/更新:
因为/和/,新的运行时签名是
即,更新的/与当前的相同;因此,没有发生错误。另一方面,假设从中采取非法分支;即,控件应该从节点移动到节点,但是错误会导致非法分支。在采取非法分支之前,/,和以前一样。但是,在执行分支之后,新的更新/与新的更新/因为
-
- 。,可以通过观察运行时签名与新节点签名不同来检测CF错误。
在显示精确算法之前,描述了将CFCSS添加到程序的算法的概要。
程序中的所有基本块(节点)都被识别和编号。每个基本块都分配有唯一的签名。还计算所有分支的签名差异(源节点和目的节点之间的XOR差异)并将其存储在所有分支的目的节点中。只要控件进入新节点,运行时签名就会更新为a
由 / 使用前一个运行时 / 和作为参数。如果/与新节点的签名相同,则执行节点中的指令;否则,表示发生了CF错误,控制权转移到错误处理程序。
图3.带有检查指令的基本块。
图4.在正确的控制流程中检查指令。
算法细节
为了检查CF,检查指令位于每个基本块的顶部,即,在基本块中执行原始指令之前执行检查指令。在图3中,基本块/由指令 / / /和位于其开头的附加检查指令组成。检查说明包括两部分:
-
-
- 生成运行时签名的签名函数 ,
-
-
-
- 分支指令,“br 错误,“将运行时签名与基本块/的签名进行比较。
-
这样,一个 用其检查指令表示/。
图4显示了检查指令如何检测错误。控件将从转移到。/
,当前的签名 .在br之后 如果采用, / 将生成新的运行时
和 与...相比 由“br /指令。条件分支指令“br /错误“分支到错误处理程序,如果 和 是不同的。
错误”
与图4相比,图5示出了采用非法分支以及如何通过检查指令检测到它的情况。在采取非法br之前,有价值。怎么样-
永远,在 ,新的运行时签名 /不同于因为 和
这种不匹配导致以下指令“br / /错误“将控制转移到错误处理例程。
与图5相反,图6示出了在分支指令中发生的错误(例如,目的地字段中的位翻转)导致不可预测的跳
全文共14291字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[248],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。