多少年以来,人们使用锁、围墙、签名、印章、账簿和计量仪器来定义和保护自己的财产及隐私。这些方式已经受到了人类社会的认可,从各国通用的国际条约到人们的风俗习惯。
时代是飞速变化的。现在,从银行账目到不动产登记,大部分记录都是电子化的;并且随着购物转移到网络上,各种交易也日益电子化。同样重要但并不那么显著的是,很多日常系统也悄然自动化了。报警器再也不会吵醒邻居,而是悄悄地向警察局发送消息;学生再也不用向宿舍的洗衣机、甩干机投硬币,而是使用能在学校书店充值的智能卡(smartcard);锁不再是简单的机械物,而是可以通过电子远程控制器或者刷卡来操纵;人们不再租借录像带,而是从人造卫星或者有线电视频道看电影。甚至连最小额的钞票也不再是简单地把油墨
印在纸上,它可能带有数字水印,这样很多假币都可以被机器检验出来。
这些安全技术到底有多好呢?很不幸的是,诚实的回答是: “一点也不像应该的那么好”。新系统经常很快就崩溃,同样的小错误在一个又一个应用软件上重复发生。要实现正确的安全设计,经常需要尝试四、五次,这些步骤实在是太多了。
媒体经常报道互联网上的安全漏洞;银行要阻止客户从提款机上“神不知鬼不觉地提款”(phantom withdrawal);VISA报道说网络信用卡交易产生的争议大幅增加;卫星电视公司追捕着复制智能卡的盗版者;执法部门试图用控制加密的法律监视网络空间。还有更糟糕的——设备的交互式特性。如果不小心按了手机的某个键,重播了上一个号码,这在原来可能只是小事——可是如果有人发明了一台机器,每一次它的号码被呼叫时就送出一罐软饮料。突然间你发现手机账单上有50瓶可乐时,谁来负责任?电话公司、手机制造商还是自动售
货机的经营者?一旦影响你生活的绝大部分电子设备都连网了(微软预期到2010年会这样),“网络安全”对你来说意味着什么,你又怎样应付它?
系统除了会出故障之外,很多系统还不能很好地工作。医疗记录系统不允许医生们随意共享个人健康信息,但是仍然不能防止好奇的私家侦探。预算很高的军事系统禁止没有“绝密”许可的任何人获得情报数据,但是却常常设计成几乎每个人工作时都需要这个许可。设计旅客票务系统是为了防止乘客作弊,但是当联邦反垄断检查官分拆了铁路部门以后,他们仍然不能阻止新的铁路公司彼此欺骗。只要设计者们当初多了解一点前人做过的努力和失败,这些问题都可以预见到。
安全工程学是一门新学科,它从所有这些混乱中孕育而生。
尽管人们很了解大部分基础技术(密码学、软件可靠性、防篡改、安全印刷和审计等),但是却缺乏有效应用它们的知识和经验。由于各领域都从机械机制一下子转换到了电子机制,工程界还来不及吸取以前的经验教训。我们反复地看到人们在发明同样的四方车轮。
转型最可能成功的行业通常是那些可以从其他学科借鉴到技术的领域。例如,把军事上鉴别敌友的设备重新应用到银行现金机上,甚至应用到汽油预付费仪表上。因此,即使一个安全设计者在某个领域有高深的技术(不管他是研究密码的数学家,还是研究钞票印制油墨的化学家),他在纵观整个学科领域时还是会很拘谨的。安全工程的本质在于了解系统的潜,在威胁,然后采用合适的混合保护措施(既有技术上的,也有组织上的),来控制这些威胁。
了解别人做过的工作,更重要的是了解经验教训,对进行决策是莫大的帮助,还可以节省很多开支。
本书的目的是,以21世纪的眼光对安全工程学进行完整的介绍。本书适用于以下四个方面:
·作为介绍安全工程学的教材,你可以花几天时间从头到尾读完它。本书主要是给需要了解这门学科的IT专业人员准备的,也可以做大学一个学期的教程。
·作为参考书,你可以寻找某类系统的操作概述。本书介绍的系统包括提款机、出租车仪表、雷达干扰发射机和匿名医疗记录数据库等。
·介绍一些基础技术,例如密码学、访问控制、推理控制、防篡改和印章。由于篇幅有限,我没有深入讲解;但是对每门学科做了基本说明,给有兴趣的读者提供了阅读列表(还给研究生提供了一个公开研究问题表)。
·作为一本有创新的科技作品,我尽力概括了安全工程学需要的基础原理,总结了人们建造系统时应该了解的经验教训。我多年来一直从事安全工作,对此印象深刻。
例如,设计者若不知道对于序列密码的简单攻击,他设计的普通防空火力控制雷达很容易受到干扰;同时,由于印制钞票和设计版权标志的人不了解雷达领域熟知的技巧,以至于大部分数字水印遭受到了非常普遍的攻击。
我已尽力使这本书保持中立风格;安全工程的书必须如此,因为很多基本技术都是美国的,而很多应用程序都是欧洲的(假如你了解美国大学和研究实验室具有更多的资金,欧洲有更多样化的民族和市场,这就不足为奇了)。此外,欧洲很多成功的革新(从智能卡到CSM移动电话,再到按次计费的电视服务),穿越了大西洋,现在在美国也已非常盛行。科学和案例研究都是必要的。
本书来自于我在剑桥大学讲授的安全工程学教程。我重新整理了笔记,使其具有完整的体系,并增加了许多材料。本书适合于专业的安全管理者和顾问参考;适用于研究密码学的计算机科学教授;适用于要侦破电脑骗局的警探;也适用于为了规范加密和匿名而冥思苦想的策略制定者。最重要的是,面向Dilbert。我的读者主要是程序员或者工程师,他们要设计不管客户、经理和其他任何人怎样做都能长久运转的实用系统。
本书分为三个部分:
. ·第一部分着眼于基本概念,由安全协议这个重要概念开始,继而介绍人机界面问题、 访问控制、密码学和分布式系统问题。除了具备基本的计算机知识以外,这部分不需要特别的技术背景。第一部分基于我给二年级大学生开的《安全入门》课程。
·第二部分更详细地介绍了许多重要的应用,比如军事通信、医疗记录系统、提款机、移动电话和付费电视。这些用来介绍更多的高级技术和概念。第二部分还从不同角度(比如公司、客户、罪犯、警察和间谍)考虑了信息安全问题。这些材料来源于我在安全方面开设的高级教程、研究工作和经验咨询。
·第三部分讲解机构和策略问题:计算机安全怎样与法律、证据和公司策略相互影响;我们怎样才能有信心让系统按照意图正常工作;如何最好地管理整个安全工程产业。
我相信,在21世纪,建立一个面对恶意攻击时稳健工作的系统是工程师们面临的最重要、最有趣,也是最艰巨的任务之一。
Ross J.Anderson
2001年1月于英国剑桥