我目前正在研究Bell-LaPadula模型,我需要以一个实现为例。
我理解这个模型是如何工作的,但是我很难用编程语言(例如Java)来实现它。我认为有以下分类:
和下列类别:
我如何表示格?
发布于 2011-11-07 07:22:48
我怀疑你对Bell-Lapadula是如何工作的,特别是在Bell-Lapadula中类别是如何工作的感到有点困惑。
一份文件可能会加盖印章,例如,绝密伽马射线。对于被允许阅读这份文件的人,他们需要最高机密许可,并且他们需要被授权进入伽马舱中的材料和在RUFF室中访问材料。一般来说,要阅读一些文件,你的清关至少要和分类一样高,而且你必须是文件所贴上标签的每一个隔间(类别)的成员。
因此,在实践中,师绝不会像中尉那样排列。你的榜样没有意义。
在这种背景下,每个文件/数据项的标签如下:
正如Jeff建议的那样,你可以代表这个分类。要表示类别集,您需要修改@Jeff的建议,并存储一组类别。
最有趣的部分不是标签的表示;最有趣的部分是如何比较两个标签。如果一份文件上有L的标签,而一个人贴上L的标签,那么该人是否应该被允许阅读该文件?为了检查您是否理解Bell-Lapadula模型,我建议您对此检查进行编码,举个例子。
发布于 2011-11-05 15:34:40
[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))低/高吗?”(或您放置的位置)。
这些类别在贝尔-拉帕杜拉中没有规范,所以你要么暗示你计划如何使用它们,要么找出如何将它们联系起来,因为我假设一个等级并不直接关系到一个权限。
发布于 2011-11-07 06:56:21
记住贝尔-拉帕杜拉模型的简单方法是:不读,不写.
分类是标签,控制主体(人)是否能够读取对象(文档、文件等)。对于这个例子,我将忽略隔间。
让我们创造四个人,爱丽丝,鲍勃,查理,戴安娜和伊芙。现在让我们给每个人贴上标签:爱丽丝是机密,鲍勃是机密,查理是机密,戴安娜是秘密,夏娃是绝密。每个人创建一个文档,当他们创建文档时,文档得到与创建文档的人相同的标签。爱丽丝创建文件A,鲍勃创建文档B,查理创建文档C,戴安娜创建文档D,夏娃创建文档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 | https://security.stackexchange.com/questions/8683
复制相似问题