Bell-LaPadula 实施示例

信息安全 验证 访问控制 正直 强制访问控制 贝尔拉帕杜拉
2021-09-06 16:30:33

我目前正在研究 Bell-LaPadula 模型,我需要做一个实现作为示例。

我了解该模型的工作原理,但我在用编程语言(例如 Java)实现它时遇到了困难。我认为有以下分类:

  • 受限制的,
  • 机密的,
  • 秘密,
  • 绝密

以及以下类别:

  • 中尉,
  • 上校,
  • 队长,
  • 中将,
  • 一般的。

我如何表示晶格?

3个回答

我怀疑您对 Bell-Lapadula 的工作方式有些困惑,特别是类别在 Bell-Lapadula 中的工作方式。

  • 分类必然是有序的。在您的示例中,我们限制了 < 机密 < 机密 < 最高机密。到现在为止还挺好。

  • 类别通常没有排序。通常,它们是一组,它们之间没有排序。它们用于划分,并且与分类正交。隔间用于进一步限制向有需要了解的一组个人的传播。隔间(类别)的示例可能是 GAMMA(拦截苏联通信)、RUFF(通过卫星获得的图像)等。例如,类别集可能是 {GAMMA, RUFF},GAMMA 与 RUFF 之间没有隐含的排序。

文件可能会被盖章,例如 Top Secret GAMMA RUFF。要允许某人阅读此文件,他们需要获得最高机密许可,并且需要获得授权才能访问 GAMMA 隔间中的材料和访问 RUFF 隔间中的材料。一般来说,要阅读一些文件,您的权限至少需要与分类一样高,并且您必须是文件标记的每个隔间(类别)的成员。

因此,在实践中,车厢永远不会像中尉那样军衔。你的例子没有意义。

在此背景下,每个文档/数据项标记如下:

  • 它有一个分类。

  • 它有一组类别(隔间)。

您可以按照@Jeff Ferland 的建议来表示分类。要表示一组类别,您需要修改@Jeff 的建议,并存储一组类别。

最有趣的部分不是标签的表示;最有趣的部分是弄清楚如何比较两个标签。如果一个文件有标签 L,而一个人有标签 L',是否应该允许该人阅读该文件?为了检查您是否了解 Bell-Lapadula 模型,我建议您编写此检查代码,例如。

[Restricted, Confidential, Secret, Top Secret] => [0, 1, 2, 3] //constants
[Lieutenant, Colonel, Captain, Lieutenant General, General] => [0, 1, 2, 3, 4] //constants

将其设置在一个类似于 Math.MAX_INT 和其他工作方式的静态类中...Classification.RESTRICTED 将返回 0。从程序员的角度来看,这很容易阅读。

如何关联类别取决于您。您的读/写测试很简单“该值是否低于/高于user.getClassification()user.setClassficiation(Classification.SECRET))”(或您放置的任何位置)。

Bell-LaPadula 中没有指定类别,因此您要么必须暗示您打算如何使用它们,要么弄清楚如何将其关联起来,因为我假设排名与许可没有直接关系。

记住 Bell-LaPadula 模型的简单方法是:不读,不写。

分类是标签,控制主体(人)是否可以阅读对象(文档、文件等)。对于这个例子,我将忽略隔间。

让我们创建四个人 Alice、Bob、Charlie、Diana 和 Eve。现在让我们给每个人一个标签:Alice 是机密的,Bob 是受限的,Charlie 是机密的,Diana 是机密的,Eve 是绝密的。每个人都创建一个文档,当他们创建一个文档时,该文档将获得与创建它的人相同的标签。Alice 创建文档 A,Bob 创建文档 B,Charlie 创建文档 C,Diana 创建文档 D,Eve 创建文档 E。

您现在可以创建一个简单的表格,显示当有人尝试阅读文档时会发生什么。

阅读:

        | Doc A | Doc B | Doc C | Doc D | Doc E |
-------------------------------------------------
Alice   | allow | deny  | deny  | deny  | deny  |
Bob     | allow | allow | deny  | deny  | deny  | 
Charlie | allow | allow | allow | deny  | deny  | 
Diana   | allow | allow | allow | allow | deny  | 
Eve     | allow | allow | allow | allow | allow |