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

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



