2.2. 安全原则

您应该熟悉许多通用的安全原则;信息安全通用信息的一个好地方是信息保障技术框架 (IATF) [NSA 2000]。 NIST 已经确定了高层次的“普遍接受的原则和实践”[Swanson 1996]。您也可以查阅计算机安全方面的通用教科书,例如 [Pfleeger 1997]。 NIST 特别出版物 800-27 描述了许多良好的工程原则(尽管由于它们是抽象的,因此不足以实际构建安全程序 - 因此有了本书);您可以在以下网址获取副本:http://csrc.nist.gov/publications/nistpubs/800-27/sp800-27.pdf。 这里总结了一些安全原则。

通常,计算机安全目标(或目的)从三个总体目标来描述

有些人定义了额外的主要安全目标,而另一些人则将这些额外的目标归为这三个目标的特例。 例如,有些人单独将不可否认性确定为一个目标; 这是“证明”发送者发送或接收者接收到消息(或两者都接收到)的能力,即使发送者或接收者稍后希望否认它。 隐私有时与机密性分开讨论; 有些人将其定义为保护用户(例如,他们的身份)而不是数据的机密性。 大多数目标都需要身份识别和身份验证,有时将其列为单独的目标。 通常,审计(也称为问责制)被认为是理想的安全目标。 有时“访问控制”和“真实性”也单独列出。 例如,美国国防部 (DoD) 在 DoD 指令 3600.1 中将“信息保障”定义为“信息作战 (IO),通过确保其可用性、完整性、身份验证、机密性和不可否认性来保护和防御信息和信息系统。 这包括通过整合保护、检测和反应能力来为信息系统的恢复提供保障。”

无论如何,重要的是确定您程序的总体安全目标,无论您如何将它们组合在一起,这样您才能知道何时实现了这些目标。

有时这些目标是对已知威胁集的回应,有时其中一些目标是法律要求的。 例如,对于美国银行和其他金融机构,有一项新的隐私法,称为“格雷姆-里奇-比利雷”(GLB)法案。 该法律强制披露共享的个人信息和保护该数据的方式,要求披露将与第三方共享的个人信息,并指示机构让客户有机会选择退出数据共享。[Jones 2000]

安全有时会与一些其他通用系统/软件工程原则发生冲突。 例如,安全有时会干扰“易用性”,安装安全配置可能比“简单”但工作但不安全的安装需要更多精力。 通常,这种明显的冲突可以得到解决,例如,通过重新思考问题,通常可以使安全系统也易于使用。 安全和抽象(信息隐藏)之间有时也存在冲突; 例如,一些高级库例程可能以安全或不安全的方式实现,但它们的规范不会告诉您。 最终,如果您的应用程序必须是安全的,如果您不能确定其他方式,您必须自己做 - 是的,应该修复库,但您的用户会因您对库例程的不良选择而受到伤害。

一个好的通用安全原则是“纵深防御”; 您应该部署许多防御机制(“层”),这些机制的设计应使攻击者必须击败多种机制才能执行成功的攻击。