对于机密性要求,BLP模型一直都是很理想的模型,在BLP中,信息的操作者分为了若干等级,信息单向地只能从低等级流向高等级,促使信息流动的动作有两个,一个是读,一个是写,对于读,信息从被读的一方流向读者,对于写,信息从写者流向被写的一方,在BLP模型中,通过两个约束保证了保密性,一个是禁止上读,一个是禁止下写,另外一个理解就是允许上写允许下读,我们看到信息是推入高级别的这个黑匣子的,避免了任何低级别的人偷看到信息,我们看一下这有什么意义。设想有一个模型,允许下读,又允许下写,一个高级别的操作者书写了一份密文,然后将内容拷贝了一份,作为低级别的密文回写,这样的话,低级别的响应级别的操作者就会偷看到本来高级别的密文,而这是不希望发生的,这其中的问题就在于下读和下写产生了双向信息流。这个BLP禁止了由于操作者本身除了问题导致信息泄露的可能性。其实这个模型仅仅是理想模型,对于信息系统是有用的,对于人则没有意义,试想人是有记忆的,规则能制止人的行为可是制止不了人的思维。允许上写并没有什么问题,就是说任何级别的操作实体都可以签署密文,只要你签署了,那这个密文就是保密的,你就不能再看了。禁止上读避免了低级别用户获取敏感信息,而禁止下写则避免了一旦高级别用户本身出了问题造成信息的泄露。
对于完整性需求,正好和BLP模型相反,叫做BIBA模型,也就是禁止下读,禁止上写模型,另一种理解就是允许下写,允许上读,数据是从高级别的黑匣子拉到低级别的用户的,信息流的流动方向和BLP模型的正好相反,因为禁止了上写,所以避免了信息被低级别用户更改,如果允许了下读,那么高级别用户如果出了问题,那么它完全可以读入一个低级别的信息,然后更改后下写到低级别的用户,因而完整性得不到保证。这个模型也给过滤模型留下了空间,任何合法的钩子都是可以安插在黑匣子和最终的低级别用户之间实现拦截,注意这种拦截是严格意义上的有意识拦截,而不是非法的欺骗性拦截和篡改式拦截。
在安全模型中,中国墙模型也很著名,它是以责任共同体来界定访问控制的,原则上很安全,但是从设计上来讲,我感觉真的没有BLP和BIBA模型好。我们现在都可以看到很多安全访问控制的实例,比如Intel的特权环,比如Unix的能力模型和访问控制矩阵,比如Windows NT的基于角色的访问控制,所有这些都可以用单向信息流和访问控制列表来表述。总之记住一点,计算机永远比人乖,不过有时候,人杀人的时候会流泪,但是计算机杀人的时候会很干脆。
原文链接: https://blog.csdn.net/dog250/article/details/5302840
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/410679
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!