人性这根曲木,绝对造不出任何笔直的东西。
——Immanuel Kant
世界永远不会尽善尽美,无论在线还是离线,因此,我们对在线的要求不要太高。
——Esther Dyson
1.1 简介
安全工程研究如何构建安全的系统,使系统在面对恶意攻击、错误以及灾难时仍保持可靠性。作为一门学科,安全工程着重研究一些工具、过程和方法——?在设计、实现与测试完备的系统,并且随着外部环境的改变而自适应地调整现有系统时,这些都是必需的。
安全工程需要跨学科的专业知识——?从密码学与计算机安全,到硬件防篡改与正式方法,以及经济学、应用心理学、组织行为学、法律等广泛的学科领域。系统工程技能,如业务流程分析、软件工程以及评估与测试也都是很重要的组成部分,但仅有这些还不够,因为它们只应对错误和灾难,并不包括恶意攻击。
很多安全系统有严格的保证要求,其失效可能会危及人类生活与环境(比如核安全与控制系统),对主要的经济基础结构造成严重危害(自动取款机及其他银行信息系统),危及个人隐私(医疗记录系统),破坏整个行业的生存能力(付费电视),促进犯罪行为(防盗报警和汽车报警)。甚至将系统看得比实际情况更加脆弱(通过Internet用信用卡支付)也会显著阻碍经济的发展。
一般认为,软件工程旨在确保某些事情能够发生(“约翰可以阅读这份文件”),而安全工程则确保某些事情不能发生,而现实更加复杂。不同系统的安全要求差别很大。典型系统的安全要求包括用户身份验证、事务完整性与问责制、容错、消息保密以及隐蔽性等安全机制的某些组合,但很多系统都会失效,这或者是因为设计者对错误的目标实施保护,或者因为以错误的方式对正确的目标进行保护而导致的。
要对正确的目标实施正确的保护,需要几个不同类型的过程。需要规划保护哪些内容,以及如何对其进行保护。还需要确保对系统进行保护和维护的人员有正确的动机。下一节将给出一个框架。之后,为举例说明安全系统必须处理的不同事物的范畴,我们将快速浏览四个应用领域:银行、空军基地、医院和家庭。在展示了安全工程师必须理解和构建的某些具体实例之后,我们将尝试给出一些相关的定义。