跳转至主要内容

Biba

概述​

Biba 模型(1975 年)保证 完整性:主体和对象都有完整性级别。规则:不下读(不读完整性更低的数据),不上写(不写完整性更高的数据)。这样高完整性的数据就不会被低完整性的来源破坏。

模型​

[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:

  • 不下读(简单完整性属性):主体不能读取完整性级别更低的对象
  • 不上写(星完整性属性):主体不能写入完整性级别更高的对象

核心原则​

Biba 的“上读,下写”正好与 Bell-LaPadula 的“下读,上写”相反。这保证了:

  1. 保护数据完整性:防止高完整性数据被低完整性来源破坏
  2. 受控的信息流:只允许从高完整性级别向低完整性级别写入
  3. 保持可信度:在每个完整性级别上保持数据的可信度

示例​

请求示例​

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 用整数表示完整性级别,数值越大完整性越高:

  • 级别 1:低完整性(公开数据、用户生成内容)
  • 级别 2:中完整性(已验证数据、可信来源)
  • 级别 3:高完整性(系统数据、管理内容)
  • 级别 4:关键完整性(安全策略、系统配置)

应用案例​

Biba 模型的常见应用:

  • 要求数据准确的金融系统
  • 医疗记录管理
  • 需要保证数据完整性的数据库系统
  • 防止数据被破坏比防止泄露更重要的环境
  • 信息准确性和可靠性至关重要的系统

实现说明​

  • 实施以完整性为核心的强制访问控制(MAC)
  • 系统管理员根据数据可信度分配完整性级别
  • 访问判定取决于完整性级别,而不是用户身份
  • 通过受控的读 / 写操作防止数据被破坏
  • 与 Bell-LaPadula 不同,大多数 Biba 实现只使用少数几个完整性级别

与 Bell-LaPadula 的对比​

方面Bell-LaPadulaBiba
主要关注点机密性完整性
读规则不上读不下读
写规则不下写不上写
口诀“下读,上写”“上读,下写”

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.