Biba
概述
Biba 模型(1975 年)强制保证 完整性:subject 和 object 都具有完整性级别。其规则 为:no read down(不读低完整性数据)、no write up(不写高完整性数据)。这样,高完整性数据就不会被低完整性来源破坏。
模型
[request_definition]
r = sub, sub_level, obj, obj_level, act
[policy_definition]
p = sub, obj, act
[role_definition]
g = _, _
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = (r.act == "read" && r.sub_level <= r.obj_level) || (r.act == "write" && r.sub_level >= r.obj_level)
策略
通常不需要 p 规则;Biba 规则由 matcher 基于请求中的级别实现:
- No Read Down(简单完整性属性):Subject 不能读取完整性级别更低的对象
- No Write Up(星号完整性属性):Subject 不能写入完整性级别更高的对象
核心原则
Biba 的“向上读、向下写”方法与 Bell-LaPadula 的“向下读、向上写”模型正好相反。这确保了:
- 数据完整性保护:防止高完整性数据被低完整性来源破坏
- 受控的信息流:限制写入只能从高完整性级别流向低完整性级别
- 可信性保持:在每个完整性级别上维持数据的可信度
示例
请求示例
alice, 3, data1, 1, read # alice (level 3) reads data1 (level 1) - DENIED (No Read Down)
bob, 2, data2, 2, read # bob (level 2) reads data2 (level 2) - ALLOWED
charlie, 1, data1, 1, read # charlie (level 1) reads data1 (level 1) - ALLOWED
bob, 2, data3, 3, read # bob (level 2) reads data3 (level 3) - ALLOWED
charlie, 1, data2, 2, read # charlie (level 1) reads data2 (level 2) - ALLOWED
alice, 3, data3, 3, write # alice (level 3) writes data3 (level 3) - ALLOWED
bob, 2, data3, 3, write # bob (level 2) writes data3 (level 3) - DENIED (No Write Up)
charlie, 1, data2, 2, write # charlie (level 1) writes data2 (level 2) - DENIED (No Write Up)
alice, 3, data1, 1, write # alice (level 3) writes data1 (level 1) - ALLOWED
bob, 2, data1, 1, write # bob (level 2) writes data1 (level 1) - ALLOWED
完整性级别
Biba 用整数表示完整性级别,数值越高表示完整性越高:
- Level 1:低完整性(公开数据、用户生成的内容)
- Level 2:中等完整性(经过验证的数据、可信来源)
- Level 3:高完整性(系统数据、管理内容)
- Level 4:关键完整性(安全策略、系统配置)
使用场景
Biba 模型的常见应用:
- 对数据准确性有要求的金融系统
- 医疗记录管理
- 对数据完整性有要求的数据库系统
- 防止数据破坏比防止信息泄露更重要的环境
- 信息准确性与可靠性至关重要的系统
实现要点
- 强制执行以完整性为重点的强制访问控制(MAC)
- 系统管理员根据数据的可信度分配完整性级别
- 访问决策取决于完整性级别,而非用户身份
- 通过受控的读/ 写操作防止数据被破坏
- 与 Bell-LaPadula 不同,大多数 Biba 实现只使用很少的几个完整性级别
与 Bell-LaPadula 的比较
| 方面 | Bell-LaPadula | Biba |
|---|---|---|
| 主要关注点 | 机密性 | 完整性 |
| 读规则 | 不向上读 | 不向下读 |
| 写规则 | 不向下写 | 不向上写 |
| 口诀 | “向下读,向上写” | “向上读,向下写” |