近几个世纪以来人们使用锁、栅栏、签名、封印、账册和仪表等来保护自己的财产和隐私,并得到从国际条约到国际法到礼节和风俗等的大量社会结构的支持。 这一切处于快速的变革中。大多数记录现在都实现了电子化,从银行账号到土地财产登记册都如此;随着Internet购物的流行,交易也日趋电子化。还有很多也很重要但不那么明显的是,很多日常系统也已经悄悄地实现了自动化处理。防盗自动警铃不再会惊醒邻居的美梦,而是悄悄地向警察发送消息;学生们不再需要使用硬币来为其宿舍内的洗衣机和干衣机付费,而是用可在大学书店充值的智能卡进行记账;锁不再是简单的机械设施,而是可以通过远程电子控制或刷卡进行操纵;数百万的人们不再需要租赁录像带,而是通过卫星或电缆来观看电影。甚至普通钞票也不再只是纸上印着墨汁,而是包含了数字水印信息,以便机器检测很多伪造行为。 那么,这些新的安全技术效果如何?遗憾的是,真实的答案是"与预期的良好作用相距甚远"。新系统通常很快就被攻破,同样的基础性错误在不同的应用程序中不断重复出现。通常需要经过四五次尝试才能实现安全的设计,而这实在太多了。 媒体经常报告Internet上的安全漏洞,银行为取款机上的"错误提款"与客户争论不休,VISA报告了Internet上有争议的信用卡交易数量的显着增长,卫星电视公司追索复制其智能卡的盗版者,执法机构试图通过控制加密机制使用的法律来监视计算机领域的恐怖主义行为。更糟糕的是,各种功能之间存在很多交互-- 偶然按到了移动电话的重拨键只是一个小小的麻烦,而在发明了一种机器且该机器在每次电话号码被呼叫时就提供一罐软饮料时,情况就不那么简单了,当你突然发现你的电话账单上有50罐可乐时,谁应该对此负责?电话公司?手持设备制造商?还是销售机操作员?一旦几乎所有影响生活的电子设备都连接到Internet上(Microsoft预计这将在2010年出现),"Internet安全"对个人意味着什么,怎样应付这个问题? 除系统故障外,还有很多系统不能有效工作。医疗记录系统不允许医生按需共享个人健康信息,但仍不能防止这些信息被不择手段的私家侦探获取。Zillion-dollar军事系统阻止不具备绝密级许可权限的任何人获取情报数据,但通常在设计上几乎要求所有人都具备绝密级许可权限才能完成任何工作。乘客售票系统在设计上试图防止客户欺骗,但当反垄断官员打破了铁路的统一后,无法阻止新的铁路公司彼此之间的欺骗。如果设计者知道其他地方有哪些做法已经被尝试过并失败过,就可以预见其中很多失败。 安全工程是从这些混乱中涌现出的一门新学科。 尽管大多数底层技术(如加密学、软件可靠性、防篡改、安全打印和审计等)较容易理解,但如何有效应用这些技术则更难。由于从机械机制向数字机制的转变几乎无处不在,使得很多经验教训没有足够的时间在工程团体内被学习和接受。我们一次又一次地看到很多做法在不同场合重复。 最有能力应对变迁的行业通常是那些从其他领域学习了适当技术的行业,比如,银行取款机(甚至预付费煤气表)就重用了军事领域敌我识别装备中的技术。因此,即便某位安全设计人员在某个特定领域拥有出色的技能--不管是操纵密码的数学家还是开发钞票墨水的化学家-- 对整个主题有全局的理解还是有意义的。良好的安全工程的实质是理解系统面临的潜在威胁,之后运用技术上和组织上合适的混合防护措施,来对这些威胁进行控制。了解在其他应用中哪些措施是有效的,更重要的是了解哪些措施是无效的,这对开发会很有帮助,并且可以省下一大笔钱。 本书旨在为安全工程奠定坚实的基础,这也是我们在21世纪初对安全工程的理解。希望本书可以起到以下四个层面的作用: (1) 作为一本教科书,可作为本主题的入门读物,可在数天内全部读完。本书主要面向需要了解这一主题的IT专业人士,也可作为大学教材(一学期课程)。 (2) 作为一本参考书,用于大致了解某特定类型系统的工作原理和过程。这些系统包括取款机、出租车计价表、雷达干扰器和匿名医疗记录数据库等。 (3) 作为介绍底层技术的入门书籍,如加密、访问控制、推理控制、防篡改和封印等技术。由于篇幅所限,无法进行特别深入的探讨,但对于每个主题都给出了基本的路线图,并为感兴趣的读者给出了参考读物列表(对未来的毕业生,还给出了开放研究问题列表)。 (4) 作为一本原创的科学文献,在其中,我试图勾勒出作为安全工程基础的通用原理,以及人们在构建某种类型系统时应该从其他系统中吸取的教训。在我从事安全工作的多年经历中,我一直试图说出这些。比如,设计通用防空火力控制雷达的人不知道对流密码的简单攻击方法,使得雷达很容易受到干扰;而雷达社区中人们熟悉的技巧也没有被印钞机和设计版权标记框架的人所理解,从而导致对大多数数字水印的非常常见的攻击。 本书源于我在剑桥所教授的安全工程课程,但我重新撰写了教案,使其更容易理解,并添加了一些必要的素材。对专业安全管理人员或顾问来讲,本书是一本极富价值的最前沿的参考书;对从事密码学研究的计算机科学教授、试图了解最新计算机骗术的警察侦探、想要清除密码学与匿名性立法方面冲突的政策人员来讲,本书应该都是有用的。最重要的是,本书的主要读者群是在职的程序员或工程师,他们正在试图设计实际系统,并努力保证系统在客户、管理人员和任何其他人的操作下都能正常运行。 本书分为三个部分: ●第I部分介绍一些基本概念,从安全协议的一些中心概念开始,到人机界面问题、访问控制、密码学与分布式系统问题。该部分不要求读者具备特定的技术背景,只要求掌握计算机基础知识。本部分是以我给二年级学生所教授的安全课程为基础的。 ●第II部分较详细地讲述了大量重要的应用,比如军事通信、医疗记录系统、取款机、移动电话以及付费电视等,这些系统用于引入更多高级技术和概念。本部分还从公司、消费者、犯罪分子、警察、间谍等大量不同团体的视点分析了信息安全问题。这些素材源于我在安全方面的高级课程讲义、研究工作和咨询工作等。 ●第III部分讲述了组织与策略问题:计算机安全怎样与法律、证据和公司政治生态交互作用;怎样确保系统可以按照设计的目标工作;怎样对安全工程的整个过程进行最有效的管理。 我相信,构建在面对恶意行为时仍能可靠运行的系统是工程师们在21世纪面临的最重要、最有趣、最困难的任务之一。 参考文献 在阅读过程中,你会发现正文中的一些地方出现了用方括号括住的编号,即[*],这些代表参考文献号,你可以在书末的"参考文献"查阅书名。