用于执行声明式IFC策略的分离逻辑
1. 多秘密场景与公共零策略
在一些场景中会存在多个秘密数据。假设前提条件 P 表明,变量 x、y 和 z 都包含高安全级(Hi)数据,变量 a 包含低安全级(Lo)数据,并且 a = (x + y + z)/3。在这种情况下,非干扰性原则意味着,只要三个秘密数据的平均值不变,我们可以将这些秘密数据从任意一组三元组值改变为另一组,而程序的输出不会受到影响。
还有一种“公共零”的情况。假设变量 x 存储着一个秘密数据,我们只愿意在 x 的值为 0 时将其公开。一种方法是在另一个变量中存储一个公共布尔值,当且仅当 x 为 0 时该布尔值为真。不过,还有更简单的方式来表示这个策略,无需额外的变量。前提条件 P 可以设定为:若 x 为 0,则其标签为 Lo;若 x 不为 0,则其标签为 Hi。这是条件标签的一个例子,即标签的值取决于某个状态谓词。当 x 为 0 时,由于状态中没有高安全级数据,非干扰性原则不产生额外约束;当 x 不为 0 时,只要前提条件 P 仍然成立,改变 x 的值(但不改变其标签)不会影响输出。也就是说,所有非零的 x 值对于观察者来说是不可区分的。条件标签是该系统的一个创新点,后续会看到它在验证程序安全性方面的强大作用。
2. 语言与语义
2.1 编程语言定义
编程语言的定义如下:
- 表达式(Exp) :
plaintext E ::= x | c | E + E | · · ·
- 布尔表达式(BExp) :
plaint
超级会员免费看
订阅专栏 解锁全文
15

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



