跳到主要内容

**Biba Integrity Model**: No Read Down, No Write Up

什么是 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)

Policy​

通常没有 p 规则;匹配器根据请求中的级别来实现 Biba:

  • No Read Down (Simple Integrity Property): 主体不能读取完整性级别较低的对象
  • No Write Up (Star Integrity Property): 主体不能写入完整性级别较高的对象

核心原则​

Biba 的“向上读,向下写”方法反转了 Bell-LaPadula 模型的“向下读,向上写”。这确保了:

  1. Data Integrity Protection: 防止来自低完整性来源的高完整性数据损坏
  2. Controlled Information Flow: 限制写入仅从较高完整性级别流向较低完整性级别
  3. Trust Preservation: 保持每个完整性级别的数据可信度

示例​

请求示例​

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: Low integrity (public data, user-generated content)
  • Level 2: Medium integrity (verified data, trusted sources)
  • Level 3: High integrity (system data, administrative content)
  • Level 4: Critical integrity (security policies, system configuration)

用例​

常见的 Biba 模型应用场景:

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

实现说明​

  • 强制执行专注于完整性的强制访问控制 (MAC)
  • 系统管理员根据数据的可信度分配完整性级别
  • 访问决策取决于完整性级别,而非用户身份
  • 通过受控的读/写操作防止数据损坏
  • 与 Bell-LaPadula 不同,大多数 Biba 实现使用的完整性级别较少

与 Bell-LaPadula 的比较​

方面Bell-LaPadulaBiba
主要关注点机密性完整性
读取规则禁止向上读禁止向下读
写入规则禁止向下写禁止向上写
口诀"向下读,向上写""向上读,向下写"

FAQ​

“禁止向下读,禁止向上写”是什么意思? 主体不能读取比自身完整性级别更低的数据(禁止向下读),也不能写入比自身完整性级别更高的数据(禁止向上写)。这两条规则旨在防止低完整性数据污染高完整性数据。

Biba 和 Bell-LaPadula 有什么区别? Bell-LaPadula 通过“禁止向上读,禁止向下写”来保护机密性;而 Biba 通过镜像规则来保护完整性。上表对两者进行了比较。

Casbin 是否内置了 Biba 模型? Casbin 没有名为 Biba 的内置模型。你可以像本页所示那样,将其编写为基于完整性级别的匹配器(matcher);同样的方法适用于任何 Casbin 移植版本。

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