资源边界强制与字节码安全验证
引言
在软件开发中,资源边界的强制实施和代码安全验证至关重要。特别是在移动代码应用场景,如小程序、网格计算等,确保代码不会超出资源限制并保证运行安全是首要任务。本文将介绍一种结合静态和动态检查的资源边界强制方法,以及字节码安全验证的相关技术。
资源边界强制的静态验证动态检查
证明函数的定义
prove
函数用于验证资源边界条件,其定义如下:
- prove(A, b) = ¬sat(A ∧¬b)
- prove(A, P1 ∧P2) = prove(A, P1) ∧prove(A, P2)
- prove(A, A1 ⇒P) = prove(A ∧A1, P)
- prove(A, ∀x.P) = prove(A, [a/x]P) (a is fresh)
- prove(A, cond(b, P1, P2)) = prove(A ∧b, P1) ∧prove(A ∧¬b, P2)
这里, A ⇒b
有效当且仅当其否定 A ∧¬b
不可满足。由于 A
的形式受限,我们仅对(可能取反的)布尔表达式的合取调用 sat
函数。 prove
函数使用可逆规则分解 P
,因此当且仅当 sat </