自动化属性导向自组合技术解析
1. 引言
超安全(Hypersafety)或 k - 安全属性是一种程序安全属性,违反该属性至少需要 k 次程序运行才能被发现,例如确定性和非干扰性。自我组合(Self - Composition)是将 k - 安全属性转化为普通(1 - )安全属性的直接方法,它通过将 k 个内存不相交的程序副本相互组合来实现。由于副本内存不相交,这种组合可视为异步并行组合,所有交织方式具有相同行为,因此自我组合能将 k - 安全属性简化为安全属性,且该技术对 k - 安全验证既可靠又完备。
不过,验证自我组合的程序并非易事。例如,若程序按顺序组合,证明属性往往需要全面捕捉每个组件的功能,即使对于简单程序和属性,所需的不变量也可能难以获取。于是,属性导向自组合(Property Directed Self Composition,Pdsc)技术应运而生。Pdsc 试图找到一个易于证明的组合,并证明其安全性,它会提出一个语义自我组合函数以及验证组合程序安全性所需的归纳不变量。但 Pdsc 存在两个主要局限性:一是依赖用户提供一组谓词来表达组合和不变量,这对用户来说颇具挑战,因为谓词集既要足够表达不变量,又不能过度表达以避免不必要地增加搜索空间;二是仅尝试寻找能确立给定 k - 安全属性的不变量,若失败则不会寻找反例。
本文提出了一种基于 Pdsc 的算法,旨在自动丰富谓词集,直到得出证明,并在无法用现有谓词集获得证明时寻找反例。同时,还介绍了三种获取谓词的方法,分别基于语法引导合成、量词消除和插值。
2. 动机示例
考虑以下两个程序:
# 程
超级会员免费看
订阅专栏 解锁全文
1075

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



