1.4 信息安全经典要素
机密性、完整性和可用性是信息安全的三个经典要素,这三个经典要素对应着信息安全的三种基本的安全服务。对这三种安全服务的解释随着它们所处环境的不同而不同。在某种特定环境下,对其中某种安全服务的解释也是由个体需求、习惯和特定组织的法律所决定的。
1.4.1 机密性
机密性是指对信息或资源的隐藏。信息保密的需求源自计算机在敏感领域的使用,如政府或企业。政府中的军事、民事机构经常对需要获得信息的访问人群设定限制。由于军事部门试图实现控制机制以体现“需要知道(need to know)”原则,这就导致了计算机安全领域中最早的形式化研究工作的出现。这一原则同时也适用于产业公司,它可保护公司的专利设计的安全,避免竞争者窃取设计成果。进一步的例子是:所有不同类型的机构中都会对机构中的人事记录进行保密处理。
访问控制机制支持机密性。其中,密码技术就是一种保护机密性的访问控制机制,这种技术通过编码数据,使数据内容变得难以理解。密钥控制着非编码数据的访问权,然而这样使得密钥本身又成为另一个有待保护的数据对象。
例1.1 加密一份退税单可防止任何人阅读它。如果税务申报人需要查看它,必须通过解密。只有密钥的拥有者才能够将密钥输入解密程序。然而,如果在密钥输入解密程序时,其他人能读取该密钥,则这份退税单的机密性就将被破坏。
其他一些依赖于系统的机制能够防止信息的非法访问。不同于加密数据的是:受这些机制保护的数据只有在机制失效或机制被旁路时才可以被读取,因此它们的优点中也存在相应的缺点。这些机制能比密码技术更完全地保密数据,但如果机制失效或被攻破,则数据就变为可读的了。
机密性也同样适用于保护数据的存在性,存在性有时比数据本身更能暴露信息。精确地知道有多少人不信任某个政客,可能还不如知道该政客的参谋人员曾经举办过这样一次民意测验更重要;准确地知道某个特定的政府情报局是如何骚扰其国民的,也可能不会比知道这样的骚扰曾经发生过更重要。访问控制机制有时仅隐藏数据的存在性,以免存在性本身暴露了应该受到保护的信息。
资源隐藏是机密性的另一个重要课题。某个站点通常希望隐藏其配置信息及其正在使用的系统。机构也不希望别人知道他们的某些特有设备(否则这些设备会被非法使用或被误用);同样,从服务提供商处获取计时租借服务的公司不希望别人知道他们正在使用哪些资源。访问控制机制能提供这些功能。
所有实施机密性的机制都需要来自系统的支持服务。其前提条件是:安全服务可以依赖于内核或其他代理服务来提供正确的数据,因此,假设和信任就成为保密机制的基础。
1.4.2 完整性
完整性指的是数据或资源的可信度,通常使用“防止非法的或未经授权的数据改变”来表达完整性。完整性包括数据完整性(即信息的内容)和来源完整性(即数据的来源,常通过认证来确保)。信息来源可能会涉及来源的准确性和可信性,也涉及人们对此信息所赋予的信任性。这种二分法显示了这样的原则:完整性中的可信性对系统的固有功能起到重要作用。
例1.2 某份报纸可能会刊登从白宫泄露出来的信息,却声称信息来自于另一个信息源。信息按原样刊登(即保持数据完整性),但是信息的来源不正确(即破坏了来源完整性)。
完整性机制可分为两大类:预防机制和检测机制。
预防机制通过阻止任何未经授权的改写数据的企图或任何使用未经授权的方法来改写数据的企图,来确保数据的完整性。区分这两类企图是重要的,前者发生在当用户企图改写其未经授权修改的数据时,而后者发生在已授权对数据做特定修改的用户试图使用其他手段来修改数据时。例如,假设有人入侵一个计算机财务系统,并试图修改账目上的数据,即一个未经授权的用户试图破坏财务数据库的完整性。但如果是被公司雇用来维护账簿的会计想挪用公司的钱款,他把钱款寄到海外,并隐瞒这次交易过程,即用户(会计员)企图用未经授权的方法(把钱款转移到海外账户上)来改变数据(财务数据)。适当的认证与访问控制一般都能够阻止外部入侵,但要阻止第二类企图就需要一些截然不同的控制方法。
检测机制并不试图阻止对完整性的破坏,它只是报告数据的完整性已不再可信。检测机制可以通过分析系统事件(用户或系统的行为)来检测问题,或者(更常见的是)通过分析数据本身来查看系统所要求或期望的约束条件是否依然满足。检测机制可以报告数据完整性遭到破坏的实际原因(某个文件的特定部分被修改),或者仅报告文件现在已被破坏。
处理机密性与处理完整性有很大差别。对机密性而言,数据或者遭到破坏,或者没有遭到破坏;但是完整性则要同时包括数据的正确性和可信性。数据的来源(即如何获取数据及从何处获取数据)、数据在到达当前机器前所受到的保护程度、数据在当前机器中所受到的保护程度等都将影响数据的完整性,因此,评价完整性通常是很困难的,因为这依赖于关于数据源的假设及关于数据源的可信性的假设,这是两个常常被忽视的安全基础。
1.4.3 可用性
可用性是指对期望的信息或资源的使用能力。可用性是系统可靠性与系统设计中的一个重要方面,因为一个不可用的系统所发挥的作用还不如没有系统。可用性之所以与安全相关,是因为有人可能会蓄意使数据或服务失效,以此来拒绝对数据或服务的访问。系统设计经常采用一个统计模型来分析期望的系统使用模式,当该统计模型起作用时,有多种机制能确保系统的可用性。有人也许可以操控系统的使用(或者操控用以控制系统使用的参数,如网络通信量),使得现有统计模型的假设不再有效。这意味着用于保证资源和数据可用性的机制没有工作在它们的设定环境中,其结果通常是这些机制将失效。
例1.3 假设Anne攻破了某家银行用于提供银行账目结算服务的辅服务器,那么当任何人向该服务器查询信息时,Anne可以响应任意信息。通过和银行的结算主服务器联系,可使商户的支票生效。如果商户得不到响应,就会要求辅服务器提供数据。Anne的同伙阻断了商户与结算主服务器之间的通信,所以商户的所有服务请求都会转到辅服务器。无论Anne的实际账目余额为多少,她都绝不会拒绝处理商户的这些支票。注意:若银行只有一台服务器(主服务器),那么这样的方案是行不通的,商户将无法使其支票生效。
企图破坏系统的可用性称为拒绝服务攻击,这可能是最难检测的攻击,因为这要求分析者能够判断异常的访问模式是否可以归结于对资源或环境的蓄意操控。统计模型的本质注定使得这种判断非常复杂。即使模型精确地描述了环境,异常事件也仅仅对统计学特性起作用。蓄意使资源失效的企图可能仅仅看起来像异常事件,或者可能就是异常的事件。但在有些环境下,这种企图甚至可能表现为正常事件。