内联引用监视器的模型检查
1. 抽象安全状态跟踪
IRM 验证器需将抽象安全状态跟踪为两个部分:残差的并集 Res(Q0) 和文字事件的有限序列 τ 。 Res(Q0) 编码了不可信程序在 IRM 最后一次更新具体化状态变量以反映当前安全状态时可能处于的安全状态集合。由于 IRM 通常无法在展现安全相关事件的同一操作中更新状态值,程序的实际当前安全状态可能与任何给定程序点上的具体化状态值不同步。因此,跟踪 τ 模拟了自状态值最后一次更新以来所展现的事件序列。
为使抽象解释易于处理,我们将 τ 的长度限制为固定常数 k 。这意味着当 IRM 在状态变量更新之间执行超过 k 个安全相关操作时,我们的验证器将保守地近似某些程序点的跟踪,可能会保守地拒绝一些符合策略的程序。常数 k 的选择决定了 IRM 性能和验证效率之间的权衡:
- 低 k 值:迫使 IRM 更频繁地更新安全状态变量以通过验证,可能增加运行时开销。
- 高 k 值:减轻了这一负担,但会产生更大的抽象状态语言,可能增加验证开销。在我们的实现中, k = 1 就足够了。
具体化状态值本身被抽象为整数或 ⊤VS (表示未知值)。为简单起见,我们的形式化表示将所有程序值视为整数并以相同方式进行抽象。
抽象值定义 </
内联引用监视器模型检查解析
超级会员免费看
订阅专栏 解锁全文
17

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



