近几个世纪以来人们使用锁、栅栏、签名、封印、账册和仪表等来保护自己的财产和隐私,并得到从国际条约到国际法到礼节和风俗等的大量社会结构的支持。
这一切处于快速的变革中。大多数记录现在都实现了电子化,从银行账号到土地财产登记册都如此;随着Internet购物的流行,交易也日趋电子化。还有很多也很重要但不那么明显的是,很多日常系统也已经悄悄地实现了自动化处理。防盗自动警铃不再会惊醒邻居的美梦,而是悄悄地向警察发送消息;学生们不再需要使用硬币来为其宿舍内的洗衣机和干衣机付费,而是用可在大学书店充值的智能卡进行记账;锁不再是简单的机械设施,而是可以通过远程电子控制或刷卡进行操纵;数百万的人们不再需要租赁录像带,而是通过卫星或电缆来观看电影。甚至普通钞票也不再只是纸上印着墨汁,而是包含了数字水印信息,以便机器检测很多伪造行为。
那么,这些新的安全技术效果如何?遗憾的是,真实的答案是“与预期的良好作用相距甚远”。新系统通常很快就被攻破,同样的基础性错误在不同的应用程序中不断重复出现。通常需要经过四五次尝试才能实现安全的设计,而这实在太多了。
媒体经常报告Internet上的安全漏洞,银行为取款机上的“错误提款”与客户争论不休,VISA报告了Internet上有争议的信用卡交易数量的显著增长,卫星电视公司追索复制其智能卡的盗版者,执法机构试图通过控制加密机制使用的法律来监视计算机领域的恐怖主义行为。更糟糕的是,各种功能之间存在很多交互—— 偶然按到了移动电话的重拨键只是一个小小的麻烦,而在发明了一种机器且该机器在每次电话号码被呼叫时就提供一罐软饮料时,情况就不那么简单了,当你突然发现你的电话账单上有50罐可乐时,谁应该对此负责?电话公司?手持设备制造商?还是销售机操作员?一旦几乎所有影响生活的电子设备都连接到Internet上(Microsoft预计这将在2010年出现),“Internet安全”对个人意味着什么,怎样应付这个问题?
除系统故障外,还有很多系统不能有效工作。医疗记录系统不允许医生按需共享个人健康信息,但仍不能防止这些信息被不择手段的私家侦探获取。Zillion-dollar军事系统阻止不具备绝密级许可权限的任何人获取情报数据,但通常在设计上几乎要求所有人都具备绝密级许可权限才能完成任何工作。乘客售票系统在设计上试图防止客户欺骗,但当反垄断官员打破了铁路的统一后,无法阻止新的铁路公司彼此之间的欺骗。如果设计者知道其他地方有哪些做法已经被尝试过并失败过,就可以预见其中很多失败。
安全工程是从这些混乱中涌现出的一门新学科。
尽管大多数底层技术(如加密学、软件可靠性、防篡改、安全打印和审计等)较容易理解,但如何有效应用这些技术则更难。由于从机械机制向数字机制的转变几乎无处不在,使得很多经验教训没有足够的时间在工程团体内被学习和接受。我们一次又一次地看到很多做法在不同场合重复。
最有能力应对变迁的行业通常是那些从其他领域学习了适当技术的行业,比如,银行取款机(甚至预付费煤气表)就重用了军事领域敌我识别装备中的技术。因此,即便某位安全设计人员在某个特定领域拥有出色的技能——不管是操纵密码的数学家还是开发钞票墨水的化学家——?对整个主题有全局的理解还是有意义的。良好的安全工程的实质是理解系统面临的潜在威胁,之后运用技术上和组织上合适的混合防护措施,来对这些威胁进行控制。了解在其他应用中哪些措施是有效的,更重要的是了解哪些措施是无效的,这对开发会很有帮助,并且可以省下一大笔钱。