0%

安全性和保密性设计(六)身份认证与访问控制

访问控制是通过某种途径限制和允许对资源的访问能力及范围的一种方法。它是针对越权使用系统资源的保护措施,通过限制对文件等资源的访问,防止非法用户的侵入或者合法用户的不当操作造成的破坏,从而保证信息系统资源的合法使用

访问控制技术可以通过对计算机系统的控制,自动、有效地防止对系统资源进行非法访问或者不当地使用,检测出一部分安全侵害,同时可以支持应用和数据的安全需求

访问控制技术并不能取代身份认证,它是建立在身份认证的基础之上的。

问控制技术包括如下几方面的内容

(1) 用户标识与认证。用户标识与认证是一种基于用户的访问控制技术,它是防止未经授权的用户进入系统的一种常规技术措施。用户标识用于向系统声明用户的身份。用户标识一般应当具有唯一性,其最常见的形式就是用户 ID。系统必须采用一定的策略来维护所有的用户标识。验证用户标识的有效性、真实性,通常有三种类型的认证方式:一是用户个人掌握的秘密信息,例如,口令、密钥、PIN 码等;二是用户个人所拥有的带有认证信息的特定物品,例如,磁卡、IC 卡等;三是用户个人的特定生理、生物学特征,例如,声音指纹等。在同一种系统中可以单独采用一种认证方法,也可以联合采用多种认证方法。

(2) 逻辑访问控制。逻辑访问控制是基于系统的访问控制技术,用来控制特定的用户对特定资源的访问。通常,把用户分成不同的组,再对组授予不同的访问权限来实现对用户的逻辑访问控制,防止用户访问他所不需要访问的资源、或者进行与工作无关的访问

(3) 审计与跟踪。审计与跟踪系统的一个或多个运行记录,在事件发生后对事件进行调査,分析其时间、原因、活动内容、引发的相关事件、涉及的用户等。

(4) 公共访问控制。如果一个应用系统是面向公众开放,允许公众进行访问时,面临的主要威胁是来自外部的匿名攻击,必须采取访问控制等措施以保护系统数据的完整性和敏感信息的保密性。

一、身份认证技术

身份认证是对系统的用户进行有效性、真实性验证。

1.口令认证方式

使用口令认证方式,用户必须具有一个唯一的系统标识,并且保证口令在系统的使用和存储过程中是安全的,同时口令在传输过程中不能被窃取、替换。另外特别要注意的是在认证前,用户必须确认认证者的真实身份,以防止把口令发给冒充的认证者。

使用口令的单向身份认证过程一般是:请求认证者和认证者之间建立安全连接、并确认认证者身份等;然后请求认证者向认证者发送认证请求,认证请求中必须包括请求认证者的 ID 和口令;认证者接受 ID 和口令,在用户数据库中找出请求认证的 ID 和口令;査找是否有此用户并比较两口令是否相同;最后向请求认证者发回认证结果。如果请求认证者的 ID 在认证者的用户数据库中,并且请求认证者发送的口令与数据库中相应的口令相同,则允许请求认证者通过认证

2.基于公钥签名的认证方式

公开密钥签名算法的身份认证方式,是通过请求认证者与认证者(对于双向身份认证而言,双方互为请求认证者和认证者)之间对于一个随机数做数字签名与验证数字签名来实现的。这种方式中认证双方的个人秘密信息不用在网络上传送,从而减少了口令等秘密信息泄漏的风险。

采用数字签名技术认证与口令认证方式有一个很大的不同:口令认证通常在正式数据交换开始之前进行。认证一旦通过,双方即建立安全通道进行通信,此后的通信被认为是安全的,不再进行身份认证;而数字签名认证在每一次的请求和响应中进行,即接收信息的一方先从接收到的信息中验证发送者的身份信息,验证通过后才对收到的信息进行相应处理

使用公钥加密算法进行身份认证要求:请求认证者必须具有私钥实现数字签名的功能;认证者必须具有使用公钥验证数字签名的功能;认证者必须具有产生随机数的功能,而且随机数的质量必须达到一定要求

使用公钥加密算法进行身份认证的方式,对用于数字签名的私钥由参与通信的认证者自己保密,而用于验证数字签名的公钥则需要采用可靠的方式进行安全分发。一般可以采用公钥数据库方式或者使用认证机构签发数字证书的方式(认证机构与数字证书的内容参见前文 PKI 部分)

如果使用公钥数据库的方式管理公钥,则请求认证者 1D 就包含在认证请求中发给认证者,认证者使用该 ID 从公钥数据库中获得请求认证者的公钥。

如果使用认证机构签发数字证书的方式管理公钥,则请求认证者的数字证书包含在认证请求中发给认证者,认证者验证请求认证者的数字证书后,从数字证书中获取请求认证者的公钥。

3.持卡认证方式

持卡认证方式最早采用磁卡。磁卡中最重要的部分是磁道,不仅存储数据,而且还存储用户的身份信息。目前所用的卡是 IC 卡,与磁卡相比,它除了存储容量大之外,还可一卡多用,同时具有可靠性高,寿命长,读写机构简单可靠,造价便宜,维护方便,容易推广等诸多优点。正由于上述优点,使得 IC 卡在世界各地广泛使用。IC 卡上一般分为不加密的公共区、加密的数据区等,有些还有自己的操作系统和微处理器。IC 卡已被广泛应用于身份认证领域。

一般 IC 卡与用户的个人 PIN 一起使用。在脱机系统中,PN 以加密的形式存在卡中识别设备读出 C 卡中的身份信息,然后将其中的 PIN 解密,与用户输入的 PIN 比较,以决定 IC 卡持有者是否合法。在联机系统中,PIN 可不存在 IC 卡上,而存在主机系统中,鉴别时,系统将用户输入的 PIN 与主机的 PIN 比较,而由此认证其身份的合法性。

4.基于人体生物特征的认证方式

这种方式是指通过计算机,利用人体固有的生理特征或行为特征进行个人身份鉴定。与传统的身份鉴别手段相比,基于生物特征的认证技术具有突出的优点:一是不会遗忘或丢失二是防伪性能好,无法伪造;三是随时随地可用。能够用来鉴别身份的生物特征一般具有广泛性(每个人都应该具有这种特性)、唯一性(每个人拥有的特征应各不相同)、稳定性(所选择的特征应该不随时间变化而发生变化)和可采集性(所选择的特征应该便于采集、测量)。前,可用于身份鉴别的生物特征主要有指纹、笔迹、脸像、红外温、视网膜、手形、掌纹等。

由于生物特征识别的设备比其他身份认证的设备要复杂,所以一般用在非常重要的机密场合,如军事等。生物特征识别主要采用模式识别技术。身份识别系统工作方式分为识别模式和鉴定模式,其性能指标主要有错误拒绝率和错误接受率等。在选择这种认证方式时需要对这些参数作认真的考虑。

5.动态口令技术(一次性口令技术)

般情况下,所使用的计算机口令都是静态的,也就是说在一定的时间内是相对不变的,而且可重复使用。这种口令很容易被系统中的嗅探程序所劫持,而且很容易受到基于字典的暴力攻击

针对这种静态口令认证方式的缺陷,人们提出了利用散列函数产生一次性口令的方法,即用户每次登录系统时使用的口令都是变化的。一次性口令是动态变化的密码,其变化来源于产生密码的运算因子。一次性口令的产生因子一般都采用双运算因子:一是用户的私钥,它代表用户身份的识别码,是固定不变的。二是变动因子,正是变动因子的不断变化,才能够产生动态的一次性口令

动态口令技术认证方式中要用到动态口令密码卡,这是一种便于携带的智能化硬件产品。这种密码卡内置的构件和程序能通过密码卡内的密钥加上其他因子动态地计算出新的口令

当密码卡持有者将这个口令输入计算机时,系统中的认证服务器会根据相同的算法和动态因子计算出对应于该密码卡的认证口令,并把这个口令与密码卡产生的口令比对,进行身份认证。

6.PPp中的认证协议

点到点协议(Point-to- Point Protocol, PPp)提供了一种在点到点链路上封装网络层协议信息的标准方法。PP 也定义了可扩展的链路控制协议。链路控制协议使用验证协议磋商机制,在链路层上传输网络层协议前验证链路的对端。

PPP 包含如下几个部分:在串行链路上封装数据报的方法;建立、配置和测试数据链路连接的链路控制协议(Link Control Protocol, LC);建立和配置不同网络层协议的一组网络控制协议(Network Control Protocol, NCP)。

PPP 协议定义了两种验证协议:密码验证协议(Password Authentication Protocol, PAP)和挑战一握手验证协议(Challenge- Handshake Authentication Protocol, CHAP),此外还有扩展认证协议(Extensible Authentication Protocol, EAP)。

一个典型的 PPP 链路建立过程分为三个阶段:创建阶段、认证阶段和网络层协商阶段。(1) 创建阶段。在这个阶段,将对基本的通信方式进行选择。链路两端设备通过 LCP 向对方发送配置信息,建立链路。在链路创建阶段,只是对验证协议进行选择,具体的用户验证过程在认证阶段实现。

(2) 认证阶段。在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全的验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。认证成功,则转到网络层协商阶段。如果认证失败,则链路终止。

(3) 网络层协商阶段。认证阶段完成之后,PPP 将调用在链路创建阶段选定的各种 NC 协商高层协议问题,例如,在该阶段 IP 控制协议可以向拨入用户分配动态地址。这样,经过三个阶段以后,一条完整的 PP 链路就建立起来了。

最常用的认证协议有 PAP 和 CHAP,此外还有 EAP。

7.RADIUS 协议

RADIUS (Remote Authentication Dial- in User Service)协议是由朗讯公司提出的客户/服务器方式的安全认证协议,它能在拨号网络中提供注册、验证功能,现已成为 Internet 的正式协议标准,是当前流行的 AAA (Authentication、Authorization、Accountion)协议 RADIUS 协议可以把拨号和认证这两种功能放在两个分离的服务器一一网络接入服务器(NAS)和后台认证服务器(RADIUS 服务器)上。在 RADIUS 服务器上存放有用户名和它们相应的认证信息的一个大数据库,来提供认证用户名和密码及向用户发送配置服务的详细信息等。

二、访问控制技术

访问控制是在身份认证的基础上,根据不同身份的用户对用户的访问请求加以限制。身份认证关心的是“你是谁,你是否拥有你所声明的身份”这个问题;而访问控制则关心“你能做什么,不能做什么”的问题。

在访问控制过程中,一般把发出访问、存取请求的一方,例如,用户、程序、进程等叫作主体;而把被访问的对象和资源,例如,文件、数据库、设备、内存区域等叫作客体。另外还有一套定义主体与客体之间相互关系,确定不同主体对不同客体的访问能力与权限的规则,叫作访问规则。一个完整的访问控制体系就是由上述三方面共同构成的。

1.访问控制策略

访问控制策略一般可以划分为三类:自主访问控制(Discretionary Access Control, DAC)强制访问控制(Mandarory Access Control, MAC),基于角色的访问控制(Roal Based Access Control, RBAC)。其中 DAC、MAC 是属于传统的访问控制策略,而 RBAC 则是后来出现的种访问控制策略,被认为具有很大的优势,具有很好的发展前景。

(1) DAC。自主访问控制是目前计算机系统中实现最多的访问控制机制,它使主体可以自主地进行配置以决定其他的主体可以采取什么样的方式来访问其所拥有的一些资源,即个拥有一定权限范围的主体可以直接或者间接地把权限授予其他的主体

常见的操作系统如 Windows、UNⅨ等都是采用自主访问控制策略来实施访问控制的其常见的方式是由某个用户(一般为某个文件或资源的拥有者或超级管理员)采用某种方式指定不同类型、不同分组的其他用户对其名下的资源的访问许可和访问方式

自主访问控制策略中,由用户自己决定其他用户对系统中某些资源的访问权限,这样虽然方便,但是却很难保证这种类型的授权对于整个系统来说是安全的。首先,用户往往不知道或者难以确定其他的用户是否适合具有对某些资源的访问权限;其次,如果不是所有的用户都有很强的安全意识,可能随意授权,那么这对于系统安全就是一个潜在的威胁;再次,由用户自己决定访问权限的分配,不利于系统管理员实施统一的全局访问控制;另外,许多组织中往往希望对于信息系统采取的授权与控制结构能够与该组织的行政结构一致。总之自主访问控制策略容易使系统失控,容易给非法入侵者留下可乘之机。所以,自主访问控制策略的安全性不是很高。

随着网络规模的扩大,用户对访问控制服务的质量也提出了更高的要求,采用自主访问控制策略已经很难满足一个安全性要求比较高的系统的需要。

(2) MAC。强制访问控制是系统统一采用某种访问权限的授予和撤销的策略,而且强制所有主体都必须服从这种访问权限的分配。

MAC 一般用在安全级别层次比较多的军事、安全等特殊应用领域中。它预先为系统中接受的所有主体、客体根据可以信任的程度、所处的岗位和承担的任务、信息的敏感程度时间发展的阶段等划分成若干级别,例如,信息可以分为绝密、机密、秘密和无密级等不同的级别。然后再根据主体和客体的级别标记来决定访问模式,任何用户对任何客体的访问请求都由这种安全级别的划分及相应的权限配置来控制

强制访问控制由于过于强调系统的安全性能,虽然能够很好地控制系统的安全,但是它管理起来比较麻烦,工作量很大,也不够灵活。

(3) RBAC。DAC 和 MAC 访问控制策略都各有其特点,但是也各有它们的不足。而基于角色的访问控制则可以在克服以上两者的缺点的同时,提供一个良好的安全的系统环境,因而是面向企业的系统中一种十分有效的访问控制策略。

DAC 系统中,有一种常见的情况,就是在一个组织中,最终用户能够使用某些资源但是它并不是该资源的拥有者,资源的拥有者是这个组织或组织中的所有用户。这时,就应该基于用户的职务来进行访问权限的设置和分配,而不应该基于资源的拥有者来进行。

例如,在图书馆中,应该根据某一个用户是流通人员、文献编目人员,还是分馆的管理员等不同的角色来分配和设置权限。如果是文献编目人员,那么他对系统中流通的图书这种资源就只能有看的权限,而对未进行典藏的图书等资源就有比较高的访问权限;如果是分馆的管理员,那么他相应地就具有对该分馆的读者、文献等资源有较高的访问权限,而对其他用户则没有。也就是说,用户具有什么样的访问权限,不直接取决于用户自己,而是取决于他所属的角色,有什么样的角色就有什么样的权限。

角色的种类和访问权限由系统管理员来定义,每一个成员属于哪种类型的角色也由系统管理员来规定,即只有系统管理员才有权定义和分配角色,而且对于用户来说只能服从系统中的这一系列规定,而不能有自主的配置,因此这是一种非自主型访问控制策略。

2.访问许可的授权对访问许可的授权有三种类型

(1) 等级型。把对客体的存取控制权限的修改能力划分成不同的等级,拥有高级别修改能力的主体可以把这种权限分配给比其级别低的主体。依此类推,从而将访问许可的授权关系组成一个树型结构。

例如,超级管理员可以作为这个等级树的根,具有修改所有客体的存取控制表的能力且可以向任意一个主体分配这种修改权。系统管理员把用户根据部门划分成多个子集,并对部门领导授予相应存取控制权限的修改权和对修改权的分配权。部门领导又可以把自己所拥有的权力按照同样的方法向下授权。

这种方式的优点是树型结构与实际组织机构类似,并且可以由领导根据日常实际工作需要进行授权来对各级用户进行控制与管理。但这种方式也有一个缺点,就是对同一个客体来说,可能存在多个主体有能力修改其存取控制权限

(2) 拥有型。这种类型对每一个客体都有一个拥有者(一般情况下就是该客体的创建者),拥有者具有对所拥有的客体的全部的控制权,并且可以任意修改其拥有的客体的访问控制表,并可对其他主体授予或销对其客体的任何一种访问权限。但是拥有者无权将其对客体的访问控制权的分配权予其他主体

在 UNX 系统中就是用这种方式来进行授权控制的

(3) 自由型。自由型的特点是一个客体的拥有者可以对任何主体授予对他所拥有的客体的访问权限,同时还可以把这种分配权授予其他主体而不受任何限制。这样,获得了这种授权的主体就可以把这种分配权授予更多的主体而不受该客体拥有者的限制。这样,一旦访问控制的分配权被授予出去,就很难控制对客体的访问了。显然,这样做安全性比较差,般的系统中很少采用这种方式