文章目录
硬件形式化验证技术调研
硬件安全问题频频发生,造成的后果日益严重,例如伊朗核电站震网事件,攻击者通过网络激活事先植入的硬件木马使电机转子超负荷运转烧毁。然而,现今硬件设计仍缺乏有效的安全验证方法检测,导致硬件设计中存在潜在的安全漏洞、木马、恶意程序等。
现有的安全验证技术主要包含仿真和形式化验证技术,但是仿真技术存在覆盖率难以保证的问题。
形式化验证技术采用严格的数学定义描述电路规范,形式化检查硬件行为特征.现有的形式化验证技术包括模型检验和定理证明。
-
模型检验(Model Checking)
采用搜索算法验证设计是否满足设计规范,但会因设计规模的增大导致状态空间爆炸。虽然引入符号执行后解决了状态空间爆炸问题,但仍可能导致路径爆炸。 -
定理证明(Theorem Proving)
采用形式化语言描述程序规范和性质,用演绎的方法交互式地验证程序的规范和性质。
1.模型检验(Model Checking)
模型检验(model checking)是一种被广泛应用的验证有限状态系统满足规范的形式化方法,主要针对具有逻辑性质的有限状态系统,由 Clarke等人最早提出。
将待验证系统建模为有限状态机,如Kripke结构、状态-迁移系统(State Transition system)或自动机等,将系统期望的性质描述为时序逻辑公式;然后,自动化穷举搜索系统行为以确定待验证系统是否满足期望的性质。
若不满足,根据反馈信息判断具体系统中是否确实存在违反此属性的执行路径(即反例路径)。
由于模型检验器在算法支持下可以自动执行,并能在系统不满足性质时提供反例路径,因此备受工业界关注。
模型检验的思想基于穷尽搜索,这也就造成了其最大缺点是不能解决推理问题,极易发生状态爆炸(state explosion),这已经成为影响模型检验应用的重要瓶颈1。
1.1 模型检验步骤2
模型检验大致可分为以下三个步骤:
(1)系统建模
在此阶段需要把系统的Kripke结构用形式化语言描述出来,即将系统的状态集合及状态迁移关系进行形式化描述。具体使用哪种描述语言要根据模型检验工具来确定