动态软件更新中安全更新点检测的形式验证与软件真实性风险分析
1. 动态软件更新安全更新点检测
1.1 验证方法与工具
为了验证动态软件更新(DSU)系统中安全更新点(SUP)检测机制的正确性,采用了线性时态逻辑(LTL)来描述系统属性。LTL 能表达布尔需求和系统执行状态序列的假设,其语法依赖经典布尔一阶逻辑,还提供了多种时态运算符,例如:
- ◦P
(next P):表示在下一状态 s1
中 P
必须为真。
- ♦P
(eventually P):表示存在一个状态 si
使得 P
为真。
- □P
(always P):表示在所有状态 si
中 P
都为真。
在验证过程中,使用了 SPIN 模型检查器和 Modex 工具。SPIN 可验证用 Promela 语言描述的系统的 LTL 属性,该语言能捕捉多种高级语言的特性。为提高验证效率,SPIN 实现了多种优化算法和启发式方法,如部分顺序约简、状态向量压缩和位状态哈希。此外,当属性不满足时,SPIN 能生成反例。Modex 则用于自动生成与 C 程序对应的 Promela 代码。
1.2 无死锁属性验证
1.2.1 死锁场景
使用 Spin 检查死锁时,发现了一个死锁场景。以两个线程 T1
和 T2
为例