基于最弱前置条件的程序鲁棒性分析
1. 最弱前置条件与鲁棒性证明
在分析程序鲁棒性时,有一个重要结论:$P_w[\vec{•}]$ 相对于不公平攻击是鲁棒的,当且仅当 $P[\vec{•}]$ 相对于不公平攻击是鲁棒的,并且满足后置条件 $Wlpi(P_w[\vec{•}], Φ)$。
证明过程采用对 $P_1[\vec{•}]$ 结构的归纳法。若 $P_1[\vec{•}]$ 是带空洞的直线程序(满足定理 1 的假设),则应用该定理检查鲁棒性;若 $P_1[\vec{•}]$ 是条件语句,根据归纳假设结论显然成立。对于循环语句,需应用递归计算。若 $P[\vec{•}]$ 是直线程序,应用定理 1 并在 $Wlp$ 计算的每一步检查到达空洞时公式中是否出现低完整性变量。循环条件 $B$ 的存在确保主动攻击者不会影响 $B$ 中的变量,若条件验证通过,则公式在所有主动攻击下保持不变。若 $P[\vec{•}]$ 是循环或条件语句,应用归纳假设即可完成证明。
下面通过一个例子来说明:
P ::=
⎡
⎣
k := h mod 3;
if (h mod 2 = 0) then[•]; l := 0; k := l;
else l := 1;
其中 $h : HH$,$l : LL$,$k : LL$。对初始公式 ${l = m ∧ k = n}$ 应用最弱自由前置条件规则,得到:
((h mod 2 = 0 ∧ m = 0 ∧ n = 0)∨
(h mod 2 ≠ 0 ∧
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



