基于最弱前置条件的程序鲁棒性分析
在当今的信息时代,程序的安全性至关重要。攻击者可能会通过各种手段获取程序的私有信息,因此如何保证程序在面对攻击时的鲁棒性成为了研究的热点。本文将介绍一种基于最弱前置条件的方法来分析程序的鲁棒性,涉及抽象解释、信息流模型、非干扰性、去分类、鲁棒去分类、最弱自由前置条件语义等多个方面。
1. 抽象解释基础
抽象解释是一种用于程序静态分析的技术,通过将具体的值抽象为抽象属性,从而简化程序分析。在抽象解释中,我们使用上闭包算子(upper closure operator,简称 uco)来描述具体域的抽象。
上闭包算子 ρ : C → C 是单调的、幂等的且扩展的,即对于任意 x ∈ C,有 x ≤C ρ(x)。它将具体值映射到其抽象属性,是具体值在抽象域中的最佳近似。
例如,定义在整数幂集上的符号算子 Sign : ℘(Z) → ℘(Z),将每个整数集 S 与其符号关联起来:
- Sign(∅) = “none”
- Sign(S) = +,如果对于所有 n ∈ S,n > 0
- Sign(0) = 0
- Sign(S) = -,如果对于所有 n ∈ S,n < 0
- Sign(S) = “I don’t know”,否则
同样,我们可以定义奇偶算子 Par : ℘(Z) → ℘(Z),将每个整数集与其奇偶性关联起来:
- Par(∅) = “none” = ∅
- Par(S) = even = {n ∈ Z | n 是偶数},如果对于所有 n ∈ S,n 是偶数
- Par(S) = odd = {n ∈ Z |
超级会员免费看
订阅专栏 解锁全文
12

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



