Kathi Fisler, Shriram Krishnamurthi, Leo A. Meyerovich, Michael Carl Tschantz, ICSE’05
本文工作:
作者实现了一个验证Security Policy的工具Margrave,该工具可以检查Security Policy的描述(XACML形式)与用户定义的property(形式化描述)是否一致。另一个功能是对Security Policy进行Change-Impact分析,即给定两个版本的Security Policy,输出两者之间property的差异。
作者用MTBDD(multi-terminal binary decision diagram)来表达Security Policy,为每条rule建立一个MTBDD,并采用rule-(policy-)combining algorithm合并MTBDD,以提高Security Policy的分析效率。
MTBDD是高效的表达Security Rules的形式,相比其他表达形式,如Alloy(一种描述结构的语言,被广泛用于security mechanism检查),MTBDD具有的优势是:虽然最坏情况下,MTBDD结点数是Security Policy属性-值对数目的指数,但是通常情况下,两者呈线性关系,因此对分析Security Policy而言,是高效的。
本文贡献:
1、提出了基于MTBDD的Security Policy验证方法,实现了从XACML到MTBDD的转换;
2、开发了工具Margrave,实现了对Security Policy的验证和change-impact分析;
疑问:
1、好像文中没提到测试生成?
我的想法:
可以从MTBDD生成Security Policy测试用例。下图是一个MTBDD实例:
每个非终端节点代表一个attribute的值,即
faculty,
student,
receive,
assign, and
grades。终端节点对应decision,即
Not-Applicable,
Permit,
Deny。从根节点(f结点)到某个终端节点(N,P,D)构成的路径对应一条规则,例如路径(f,1,s,0,a,1,g,1,P),对应的rule就是
Permission(faculty, asign, grade),即具有faculty身份的用户可以修改成绩。
因此,给定Security Policy对应的MTBDD,通过某种路径遍历算法,可以生成具体的测试用例集,并可以定义rule覆盖准则:每个rule都至少被一个测试用例覆盖。
实现方面,第一,CUDD工具提供了接口操作MTBDD;第二,可以借助本文提出的工具Margrave实现XACML到MTBDD的转换。
对生成的Security Policy test cases的测评,可以借鉴mutation testing的方法。