分布式系统包括存储存储系统(如文件系统、数据库),处理系统(如操作系统)和传输系统(通信网络)。它的安全是一个错综复杂的问题,涉及面非常广,威胁它的安全因素也很多,比如自然灾害、各种故障以及各种有意或者无意的破坏等。为了确保分布式系统安全,需要从多方面着手,采取各种措施,例如物理措施、管理措施和技术措施等。分布式系统作为互联网企业最重要的基础设置,如果它的安全性解决不好,一旦出现问题,将直接影响到整个企业的生存。分布式系统安全定义为:系统抵御意外事件或者恶意行为的能力,这些事件和行为将危及所存储、处理或者传输的数据以及经由这些系统所系统的服务的可用性、机密性、完整性、非否认性和可控性。
二、安全属性
安全属性的具体含义如下:
可用性:尽管存在可能的突发事件如供电中断、自然灾害、事故或者攻击等,但用户依然可以得到或者使用数据,服务也处于正常运转状态;
机密性:保护数据不受非法截获和未经授权浏览。这一点对于敏感数据的传输尤为重要,同时也是通信网络中处理用户的私人信息所必须的;
完整性:能够保证被传输、接收或者存储的数据是完整的和未经篡改的。这一点对于保证一些重要数据的精确性尤为关键;
非否认性:能够保证信息行为人不能否认其信息行为。这一点可以防止参与某次通信交换的一方事后否认本次交换曾经发生过;
可控性:保证信息和信息系统的授权认证和监控管理。这一点可以确保某个实体的身份的真实性。
三、安全威胁
所谓安全威胁是指某个实体(人、事、物)对某一资源的安全属性造成的危害。某种攻击就是某种安全威胁的具体表现。目前还没有统一的方法对各种安全威胁加以区别和进行分类,也很难搞清各种威胁之间的相互关系。不同威胁的存在及其重要性是随着环境的变化而变化。要实现信息的机密性、完整性、可用性以及资源的合法使用这四个基本安全目标,必须采取措施对抗下面四个基本安全威胁:
信息泄漏:信息被泄漏给某个未授权实体。这种威胁主要来自诸如窃听、搭线或者其他更加错综复杂的信息探测攻击;
完整性破坏:数据一致性通过未授权的创建、修改或破坏而受到损坏;
拒绝服务:对信息或其他资源的合法访问被无条件地阻止。这可能是攻击所致,也可能是系统在物理或逻辑上受到破坏而中断;
非法使用:某一资源被某个未授权的人或以某一未授权的方式使用,这种威胁的主要例子有:侵入计算机系统的攻击者以此系统作为侵入其他系统的出发点;
下面将列出典型的安全威胁:
四、安全服务
前文定义了分布式系统安全,描述了系统安全五大属性,总结了四大类基本安全威胁并举例说明了典型安全威胁。下面介绍实现安全属性、避免安全威胁的安全防护措施,我们称之为安全服务,当前有五种通用的安全服务。
认证服务
认证是最重要的安全服务之一,因为所有其它安全服务都依赖于该服务。认证可以用来对抗假冒攻击和确保用户身份。它是用来获取对谁或者对什么事情信任的一种方法。身份的合法拥有者被称为实体。认证主要分为以下两种情形:
实体认证:身份由参与通信链路或会话的远程参与者提交。实体认证既可以是单向的,也可以是双向的。所谓单向认证是指通信双方只有一方向另一方认证。所谓双向是指通信双方互相进行认证;
数据起源认证:身份和数据一起被提交,并且声称数据项来源于身份所代表的那个主体;
在具体实现上,认证服务可以基于非密码的认证机制,例如基于地址的认证(白名单),也可以基于密码的认证机制,例如对称加密和非对称加密。一般地,某一个成员(声称者)提交一个主体的身份并声称它是那个主体。认证可使别的成员(验证者)获得对声称者所声称的事实的信任,其认证方法可能是基于下列原理的任何一种:
声称者证明他知道某事,例如口令;
声称者证明他拥有某物,例如物理密钥卡;
声称者展示他具有某些必备的不变特性,例如指纹;
声称者在某一特定场所提供证据;
验证者认可某一已经通过认证的可信方;
访问控制服务
访问控制的目标是防止对任何资源(如计算资源、通信资源和信息资源)进行未授权的访问。所谓未授权的访问包括未经授权的使用、泄露、修改、销毁。访问控制的一般模型假定了一些主动的实体,称为发起者,他们试图访问一些被动的资源,称为目标。而实现访问控制核心功能的组件则是发起者和目标之间的访问控制策略。任何访问控制策略最终均可被模型化为访问矩阵的形式,入下表给出的实例。在这个例子中四个用户可以潜在地去访问三个存储信息资源(即目标)中的任何一个。可能的行为有读、写、执行。
在实际应用时,由于访问矩阵过大且元素稀疏,访问矩阵很少直接使用,而是采用符合使用场景的以下几类访问控制策略(基于访问矩阵):
基于个体的策略:根据哪些用户可对一个目标实施哪一种行为的列表来表示;基本等价于访问矩阵;
基于分组的策略:在基于个体策略的基础上,对个体进行分组,减小访问矩阵,例如上表中的用户c和用户d拥有相同权限,可以归为一组;
基于分级的策略:分级策略通过分配给每个目标一个密级(如:绝密、秘密、机密、无密级),每个用户从相同的层次中分配一个等级,不同等级对应不同密级;
基于角色的策略:可以视为基于组策略的一种变形,一个角色对应一个组,例如银行环境中,用户角色可定义为出纳员、顾客、系统管理员、审计员;
机密性服务
机密性的目的是保护数据以免泄露或暴露给那些未经授权获取这个信息的人。要达到保密的目的,我们必须完成两种类型的机密性服务:
数据机密性服务:使得攻击者想要从某个数据项中推出敏感信息是十分困难的;
业务流机密性服务:使得攻击者想要通过观察网络的业务流来获得敏感信息是十分困难的;
实现以上机密性服务主要可以采用以下三种机密性机制:
加密机制:提供了从明文到密文流的一种变换方法,其基础在于加密和解密所用到的密钥,加密机制需要考虑的因素包括“密码体制的类型”、“算法的选择”、“工作模式”、“填充需要”、“初始化需要”、“同步需要”、“密钥管理”;
数据填充:为了防止通过监视传送数据的长度来获取信息,一般采用数据填充技术。数据填充和加密机制往往结合在一起使用来保护数据不被泄露,通常的做法是在加密前把明文的长度填充为规定的长度;
业务流填充:业务流的机密性是为了防止通过观察网络业务流而使敏感信息泄露,可以通过伪造通信实例,伪造数据单元等方式产生无关网络业务流;
完整性服务
完整性的目的是保护数据以免被未授权的改变、删除、替换。一些加密机制能通过提供机密性和完整性两种服务。当这两种服务用最小的密码复杂度和最小的密钥管理负担获得时,是很有价值的。有两种方法来保证数据的完整性:
访问控制方法:用于避免入侵者有机会损坏数据;
损坏检测方法:承认数据有可能顺坏,但能确保这些损坏能够被检测出来,并且能纠正并提出警告;
在实际使用中,我们通过会提供以下方法来确保数据完整性:
提供数据的同时,在权威站点声明数据的(md5、sha、mac等),这在软件下载时很常见,能有效检测到所下载的软件被第三方植入恶意代码;
非否认服务
非否认性为一个通信用户提供保护以便另一个用户后来否认所发生的一些通信交换。这就必须确保可获得无可辩驳的证据以支持任何类似纠纷的迅速解决。通常,这样的证据必须能说服一个第三方仲裁者。在网络环境中,否认可分为两种不同的情况。
起源的否认:存在着关于是否某方产生了关于某个特定数据项的纠纷;
传递的否认:存在着关于是否某个特定数据项传递给了某方的纠纷;
在实际使用中,“数字签名”是最常见的提供非否认服务的方法,所谓,即:发信息的人用自己的私钥对所发信息进行加密( encryption ),接收信息者用发信者的公钥来解密( decryption ),就可以保证信息的真实性、完整性和不可否认性。发信者不能抵赖、否认自己曾经发过这份信息;另外,信息在传输当中不可能被篡改,因为如果有人试图篡改,密文就解不出来。这样,用私钥加密,公钥解密的技术方法就可以代替传统签名、盖章,保证了信息的真实性、完整性和不可否认性。下图为“数字签名”的整个过程。