您应该熟悉许多通用的安全原则;信息安全通用信息的一个好地方是信息保障技术框架 (IATF) [NSA 2000]。 NIST 已经确定了高层次的“普遍接受的原则和实践”[Swanson 1996]。您也可以查阅计算机安全方面的通用教科书,例如 [Pfleeger 1997]。 NIST 特别出版物 800-27 描述了许多良好的工程原则(尽管由于它们是抽象的,因此不足以实际构建安全程序 - 因此有了本书);您可以在以下网址获取副本:http://csrc.nist.gov/publications/nistpubs/800-27/sp800-27.pdf。 这里总结了一些安全原则。
通常,计算机安全目标(或目的)从三个总体目标来描述
机密性(也称为保密性),意味着只有授权方才能读取计算系统的资产。
完整性,意味着只有授权方才能以授权方式修改或删除资产。
可用性,意味着授权方可以及时访问资产(由系统需求确定)。 未能实现此目标称为拒绝服务。
无论如何,重要的是确定您程序的总体安全目标,无论您如何将它们组合在一起,这样您才能知道何时实现了这些目标。
有时这些目标是对已知威胁集的回应,有时其中一些目标是法律要求的。 例如,对于美国银行和其他金融机构,有一项新的隐私法,称为“格雷姆-里奇-比利雷”(GLB)法案。 该法律强制披露共享的个人信息和保护该数据的方式,要求披露将与第三方共享的个人信息,并指示机构让客户有机会选择退出数据共享。[Jones 2000]
安全有时会与一些其他通用系统/软件工程原则发生冲突。 例如,安全有时会干扰“易用性”,安装安全配置可能比“简单”但工作但不安全的安装需要更多精力。 通常,这种明显的冲突可以得到解决,例如,通过重新思考问题,通常可以使安全系统也易于使用。 安全和抽象(信息隐藏)之间有时也存在冲突; 例如,一些高级库例程可能以安全或不安全的方式实现,但它们的规范不会告诉您。 最终,如果您的应用程序必须是安全的,如果您不能确定其他方式,您必须自己做 - 是的,应该修复库,但您的用户会因您对库例程的不良选择而受到伤害。
一个好的通用安全原则是“纵深防御”; 您应该部署许多防御机制(“层”),这些机制的设计应使攻击者必须击败多种机制才能执行成功的攻击。