第1章 基础

诚信是基础,而且往往是坚实的基础。哪怕我说过的话让我身陷困境,诚信依旧是我立足的基石。——古德

实现软件安全既需要运用逻辑,又是一项艺术——一项仰赖直觉来做出判断的艺术。它既需要践行者对当代数字系统有所掌握,又需要他们对人与系统之间的交互有所体悟。如果这样说让你感到前路维艰,那么你就已经体会到了本书想要诠释的难点所在。这也解释了为什么实现软件安全自始至终都是一项艰巨的任务,以及为什么在这个领域的任何斩获都需要人们付出艰苦卓绝的努力——哪怕后面的路依然很长。好消息是,因为我们每个人都可以提升自己的认知水平,也都可以切实地参与其中,所以我们的每一分努力都会给软件安全带来实质性的改善。

首先,我们需要准确地思考一下何谓安全。安全定义的主观性颇强,因此厘清安全的基本概念就显得至关重要。本书是我在个人经验基础上进行深入思考的结果。信任是一切安全的基本要素,因为每个人都需要使用别人的劳动成果:当代数字系统已经过于复杂,没有人可以凭一己之力从硅元素开始打造自己的“数字王国”。我们必须信任别人提供的成果(包括硬件、固件、操作系统和编译器),信任这些并不是由我们亲手设计和制造的组件。在这样的基础上,下面将介绍安全的六大经典原则,其中包括信息安全的三大基本原则,以及实现信息安全三元素的三个“黄金标准”。最后,鉴于数字产品和服务正在越来越多地渗透到现代日常生活中最敏感的领域,本章在信息隐私方面增加了一些应该考量的重要因素——其中包括人类因素和社会因素。

虽然本书的读者无疑都对安全、信任和机密性的含义有所了解,但是在本书中,这些词采用了具体的技术表意,其含义值得仔细品味。鉴于此,我建议读者认真阅读本章的内容。至于那些基础更好的读者,请大家试着写出自己对这些术语的定义——每位读者未来都应该尝试做一做这份家庭作业。