JRIF:Java 中的反应式信息流控制
1. JRIF 标签特性
JRIF 中的重新分类使用标识符简洁描述,而经典标签的解密和背书描述更冗长,需关联目标标签,有时还得包含源标签。虽然 JRIF 标签比经典标签更详细,但它能指定经典标签无法表达的机密性和完整性变化。使用经典标签的系统需额外代码模拟 JRIF 标签,且这些代码的安全性无法自动检查,程序员要完全负责正确实现预期策略。
与使用经典标签的语言相比,JRIF 能更好地将程序逻辑与信息流策略分离,使程序更易编写和维护。例如,若程序员决定不公开之前可公开的玩家姓名:
- 在 JRIF 中,只需修改存储玩家姓名的字段上的 JRIF 标签声明,检查并编辑标签的 c - 自动机,确保无过渡到映射额外主体的自动机状态。
- 在使用经典标签的语言中,程序员不仅要找到并移除所有明确涉及姓名字段的解密命令,还要移除涉及玩家姓名流入的所有表达式的解密命令,这种操作易出错。
2. JRIF 的示例应用
2.1 战舰游戏
战舰游戏是一个很好的例子,因为机密性和完整性对于防止作弊都很重要。在游戏过程中,机密信息会被解密。舰船坐标最初是固定且保密的,但当对手正确猜出对手的舰船坐标时,就会被揭示。此外,玩家必须在初始放置后被限制改变他们的舰船位置。
使用简单的 c - 自动机可以指定每个玩家的舰船坐标的机密性策略。玩家 p1 选择的舰船坐标派生的值应该只由 p1 读取,因为对手玩家 p2 不允许了解 p1 的舰船位置。玩家 p1 的舰船是否被对手玩家 p2 击中的结果可以被包括 p2 在内的所有人读取。表达此策略的 c - 自动机如图 6a 所示,其中 Q 是检查对
超级会员免费看
订阅专栏 解锁全文
16

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



