一个安全的系统是需要根据可信计算基础(TCB)的原则搭建的,它集成了用户识别和验证(I&A)、对系统对象的访问控制,以及审查用户动作等机制。TCB的目标是保证系统的完整性、保密性、可用性、可叙述性和保障性。它还要保证系统所有的安全机制都要相互协作补充以保证其资源的安全。TCB被设计用来增强安全要求,后者由针对特定系统的安全策略所指导。(注意:这个安全策略应该在软件开发生命周期的初始阶段就已经开发好了。它是驱动安全工程过程的文档之一。)
正确设计安全系统有五个初始步骤:
在第一步里,安全需求会是事务模型所限定的功能要求,或者是公众法规所限定的政府指导要求。例如,想要保存用户个人信息(比如社会安全号、工作史和医疗记录等)就必须遵守《1974年隐私法案》。这个法案所规定的要求是源于公共法律——5 USC 552要求的好例子。如果系统安全的要求没有得到满足,或者系统数据遭到破坏,那么这将引起极其严重的反响,尤其是在违反公共法律的情况下。
要记住的是,安全系统要做的不仅仅是保护系统的数据。而这一点常常遭到了错误的理解。这个错误理解常常声明安全解决方案只需要将注意力集中保护数据上。保护数据的确重要,但这只是安全方案的一方面。设计优良的安全解决方案要保证:
第二个步骤需要系统结构和安全要求的知识。专门的解决方案包并不需要获得完全的确认,但是要使用的组件类型必须要可知。这一步骤对于安全设计的成功是至关重要的——可用的信息越多,这个设计就会越好。例如,我正在为一家小公司设计用户忠诚度追踪系统。表A提供了一个图形概要。
忠诚度追踪系统(LTS)为客户/服务器结构,它使用MySQL 4.0数据库和一个使用Java编写的程序。它有三种不同类型的用户:LTS客户、LTS经理和系统管理员。所有的用户都会通过Internet连接到LTS服务器;因为Internet会延续很长时间,所以这将有助于保证系统的可用性。
表A
安全要求 |
TCB 元素 |
硬件(PC/PDA) |
操作系统(Win2K) |
数据库引擎(MS SQL服务器) |
应用程序(CusSat) |
数值不能被更改 |
DAC |
|
|
数据行许可 |
|
只能查看自己的数值 |
DAC,对象重复使用 |
|
对象重复使用内置进Win2K |
数据行许可 |
|
所有的回应都必须能够回溯到负责者 |
审查 |
|
|
SQL服务器审查 |
|
所有的用户都能够登录进 |
I&A |
|
|
SQL服务器提供I&A |
|