预计阅读本页时间:-
9.3.4 可信系统
人们总是可以从各种渠道中获得关于病毒、蠕虫以及其他相关的消息。天真的人可能会问下面两个问题:
1)建立一个安全的操作系统有可能吗?
2)如果可能,为什么不去做呢?
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
第一个问题的答案原则上是肯定的。如何建立安全系统的答案人们数十年前就知道了。例如,在20世纪60年代设计的MULTICS就把安全作为主要目标之一而且做得非常好。
为什么不建立一个安全系统是一个更为复杂的问题,主要原因有两个。首先,现代系统虽然不安全但是用户不愿抛弃它们。假设Microsoft宣布除了Windows外还有一个新的SecureOS产品,并保证不会受到病毒感染但不能运行Windows应用程序,那么很少会有用户和公司把Windows像个烫手山芋一样扔掉转而立即购买新的系统。事实上Microsoft的确有一款SecureOS(Fandrich等人,2006),但是并没有投入商业市场。
第二个原因更敏感。现在已知的建立安全系统仅有的办法是保持系统的简单性。特性是安全的大敌。系统设计师相信(无论是正确还是错误的)用户所想要的是更多的特性。更多的特性意味着更多的复杂性,更多的代码以及更多的安全性错误。
这里有两个简单的例子。最早的电子邮件系统通过ACSII文本发送消息。它们是完全安全的。ASCII文本不可能对计算机系统造成损失。然后人们想方设法扩展电子邮件的功能,引入了其他类型的文档,如可以包含宏程序的Word文件。读这样的文件意味着在自己的计算机上运行别人的程序。无论沙盒怎么有效,在自己的计算机上运行别人的程序必定比ASCII文本要危险得多。是用户要求从过去的文本格式改为现在的活动程序吗?大概不是吧,但系统设计人员认为这是个极好的主意,而没有考虑到隐含的安全问题。
第二个例子是关于网页的。过去的HTML网页没有造成大的安全问题(虽然非法网页也可能导致缓冲溢出攻击)。现在许多网页都包含了可执行程序(Applet),用户不得不运行这些程序来浏览网页内容,结果一个又一个安全漏洞出现了。即便一个漏洞被补上,又会有新的漏洞显现出来。当网页完全是静态的时候,是用户要求增加动态内容的吗?可能动态网页的设计者也记不得了,但随之而来是大量的安全问题。这有点像负责说“不”的副总统在车轮下睡着了。
实际上,确实有些组织认为,与非常漂亮的新功能相比,好的安全性更为重要。军方组织就是一个重要的例子。在接下来的几节中,我们将研究相关的一些问题,不过这些问题不是几句话便能说清楚的。要构建一个安全的系统,需要在操作系统的核心中实现安全模型,且该模型要非常简单,从而设计人员确实能够理解模型的内涵,并且顶住所有压力,避免偏离安全模型的要求去添加新的功能特性。