4.1.2 安全机制的设计原则
Saltzer和Schroeder研究了信息系统的信息保护问题,重点研究了访问控制列表实现结构和能力表实现结构,给出了实现安全机制的设计原则。
(1)最小权限原则
分配给系统中的每一个程序和每一个用户的权限应该是它们完成工作所必须享有的权限的最小集合,这和“需要知道”原则类似。如果主体不需要访问特定客体,则主体就不应该拥有访问这个客体的权限。
(2)失败-保险默认原则
访问判定应建立在显式授权而不是隐式授权的基础上。显式授权指定的是主体应该拥有的权限,隐式授权指定的是主体不应该拥有的权限。在默认情况下,没有明确授权的访问方式,应该视为不允许的访问方式。如果主体打算以该方式进行访问,结果将是失败的,这对于系统来说是保险的。
(3)机制经济性原则
保护机制应设计得尽可能的简单和短小。如果设计和实现机制简单,则存在错误的可能性就更小,进程的测试也就越简单。有些设计和实现错误可能产生意想不到的结果,而这些错误在常规使用中察觉不到。简单而短小的设计是这类工作成功的关键。
(4)完全仲裁原则
对每一个客体的每一次访问都必须经过检查,以确认是否已经得到授权。只要主体发出对某客体的访问请求,操作系统都对该操作进行仲裁。操作系统需要检查该主体是否允许访问该客体。如果允许,操作系统将提供访问所需的资源。如果这个主体再次请求对该客体的访问,操作系统必须再次检查这个主体是否还被允许执行这种访问。
(5)开放式设计原则
不应该把保护机制的抗攻击能力建立在设计的保密性基础之上,应该在设计公开的环境中设法增强保护机制的防御能力。
(6)权限分离原则
为一项权限划分出多个决定因素,仅当所有决定因素均具备时,才能行使该项特权。例如,一个档案柜设有两把钥匙,由两个人掌管,仅当两个人都提供钥匙时,档案柜才能打开。同样,系统和程序在对资源访问授权时也应该至少满足两个条件。这种方法提供了一种资源的细粒度访问控制,同时也保证了访问的合法性。
(7)最小公共机制原则
把由两个以上用户共用和被所有用户依赖的机制数量减到最小。每个共享机制都是一条潜在的用户间的信息通路,要谨慎设计,避免无意中破坏安全性。应证明为所有用户服务的机制能满足每一个用户的要求。
(8)心理可接受性原则
为了使用户方便自如地正确运用保护机制,用户界面应设计得易于使用。可以理解为安全机制可能给系统增加了额外的负担,但这种负担必须是最小的而且是合理的。