随着要求开发者对计算机攻击造成的危害负责的立法已经摆上了日程,对系统工程师、体系设计师和分析员来说,理解如何建立安全系统变得越来越重要。尽管已经关于系统安全方面已经有了许多优秀可靠的建议,但是我发现它们大多都仅仅涉及特定环境、语言或工具,而没有综合考虑。
美国国家标准技术研究院(NIST)为此提供了通用意义上的指导标准。NIST把安全作为一个工程在整个系统的流程中加以通盘考虑而不是仅仅作为一个事后附加的开发过程。首要的一点就是安全工程必须建立在可靠计算基础(the trusted computing base 即TCB)上,TCB是所有安全机制的总和,即包括硬件也包括软件,这两者提供对系统数据安全的合理程度上的保证。
NIST在考虑系统安全性之前,必须要求该系统符合六个基本要求。这些基本要求如下:
TCB是由符合NIST要求的元素组成。它包括了四个主要的安全机制:安全策略、身份和身份验证、标示(如,Oracle的细粒度访问控制,即基于用户的访问控制)、以及审核。
为了帮助你理解TCB是如何工作的,我们可以找到真实生活中的对应物——银行,银行是当今社会中信赖与安全的标识。尽管仍有一些人会把钱藏在床垫下或者咖啡罐中然后埋到院子里,我们中的大多数人还是会毫不犹豫的把他们的薪水存入银行。我们信任银行,认为我们存入的钱的数目可以被准确的记录下来、钱是安全的,当我们需要时,可以随时支取。
虽然我无法对银行的所有安全机制全面考虑(因为我很信任我们的银行系统中的安全机制),所有的可靠计算基础机制都应用上了。例如,在从帐户支取资金之前,我必须递交附有我的帐号和签名的取款单,以便出纳员识别并确认我的身份——在这个过程中,我需要用到我的某种东西如银行水单,我知道的某样东西如帐号,以及某种我独有的东西如签名。这个过程也包含了为了防止对帐户非授权的任意访问控制,即在我的帐户下的标示说明了有哪些人经过授权从我的帐户下支取资金。我还相当确信记录极少会出错。由于所有的交易都会被审计,即使发生了错误,它也会被识别并在合理的时间内纠正过来。
作为一套清晰定义的系统,确保银行安全性的还有多种安全机制的交织。一个设计合理的系统应该包括身份识别、身份验证、任意访问控制和审核。银行安全性模型确保了上述机制得以实现,并提供了连续保护。在银行模型中,所有的安全机制同时作用,并且我们相信它们工作的正确性。一个按NIST标准建立的安全系统也是也是按银行的模式建立的。