赞
踩
一旦我们向一个系统表明了自己的身份,接下来就必须证明它。这就是认证发挥作用的地方。数字系统提供了许多不同的认证技术,使用户能够证明他们的身份。我们将看一下三种不同的认证因素:
除了这三个因素外,人们还使用其他认证技术。这些被称为认证属性的方法通常被认为是比三个主要认证因素更弱的认证形式,它们只应与至少一个主要认证因素结合使用。这些属性包括
一个重要的说明,如上提到的四个认证属性,即你所在的地方、你能做的事情、你表现出来的东西和你认识的人,通常不被认为是网络安全界知识体系的一部分。这些认证因素中的每一个所使用的技术的强度都可以通过它所产生的错误数量来衡量。在认证系统中,有两种基本类型的错误:
上述提到的三个主要的公认的认证因素是”你知道的东西“,如密码;”你是谁“,如指纹和”你拥有的东西“,如智能手机。当单独使用时,这些技术中的任何一个都能为系统提供一些安全性。然而,它们都有各自的缺点。例如,攻击者可能通过网络钓鱼攻击窃取用户的密码。
一旦他们得到密码,他们就可以用这个密码来冒充用户的身份。其他认证因素也不是万无一失的。如果我们使用智能卡认证来实现你拥有的东西,用户可能会丢失智能卡。碰到它的人就可能用它来冒充用户。
解决这个问题的方法是结合多种因素的认证技术,比如把”你知道的东西“和”你拥有的东西“结合起来。就拿我们刚才讨论的两种技术来说,密码和智能卡。当单独使用时,任何一个都会受到黑客的攻击,要么获得密码的知识,要么窃取智能卡。然而,如果一个认证系统同时需要密码(你知道的东西)和智能卡(你拥有的东西),它就会带来额外的安全性。
如果黑客偷了密码,他们就没有所需的智能卡,反之亦然。攻击者会变得更难获得账户的访问权,因为我们知道的东西和我们拥有的东西是不同的因素,这是一个多因素认证的例子。我们也可以结合其他因素。例如,一个指纹识别器,也就是“你的东西”,可能还需要输入一个“PIN码”,也就是你知道的东西。这也是多因素认证。
在评估多因素认证时,重要的是要记住,这些技术必须来自不同的因素。将密码和安全问题的答案结合起来的方法不是多因素认证,因为这里的两个因素都是“你知道的东西”。
我们了解到组织如何通过结合两个不同类别的认证方法来实现多因素认证。最常见的方法是将”你知道的东西“,如密码或密码与”你拥有的东西(如物理令牌)"结合起来。让我们来谈谈如何在用户拥有的东西(Something you have) 的基础上实现认证。
传统的方式,企业使用像这样的物理令牌(Physical tokens) 来实现所拥有的认证。当需要认证时,用户首先提供一个用户名和密码,以满足 "你知道"的标准。
然后系统提示用户提供一个认证码。用户掏出他们的令牌并按下按钮。然后,令牌显示一个代码,用户将其输入系统,证明令牌的实际所有权,并完成认证程序。但是,为数以千计的用户提供物理令牌会让成本会迅速增加,而且用户根本不喜欢一直带着令牌的负担。
智能手机的迅速普及导致了软令牌(Soft tokens) 技术的采用,它已经迅速取代了许多组织对物理令牌的使用。软令牌只是在用户智能手机上运行的应用程序,它产生一系列不断变化的代码。当认证系统提示用户从令牌中输入代码时,用户只需打开应用程序并读出当前的代码。
硬件和软件令牌上提供的代码,被称为一次性密码或OTPs。有两种不同的协议用于生成这些代码:
一些认证系统依靠使用短信和电话来实现你的因素。我们应该小心这些方法,因为安全专家通常认为它们并不安全。由于电话号码容易移动,特别是对于VoIP设备来说,这些技术容易受到攻击。用户认为方便的另一种方法是智能手机应用程序,它不生成密码,而是使用推送通知。当用户试图登录另一台设备时,智能手机应用程序会弹出一个通知,要求用户确认登录。这与使用基于密码的应用程序的安全性相同,但对用户来说要容易得多。最后,许多多因素认证系统,为用户提供了生成静态备份代码的机会,以便在他们失去对多因素设备或令牌的访问时使用。这种方法是危险的,因为它基本上把我们拥有的认证因素减少到"你知道的东西"。如果允许用户生成静态代码,就应该让他们意识到保护这些代码的重要性。另一种提供 "你有的东西 "认证的方法是通过使用智能卡,它包含嵌入式微芯片。将传统的基于知识的认证与“你所拥有的”因素相结合,会大大降低了账户被破坏的风险。
许多访问控制系统依靠基于密码的机制来实现"你知道的东西(Something you know) ",即安全性。密码安全最常见的应用之一是保护虚拟专用网络(V-P-N)和其他远程访问技术。如下是我们用来实现远程访问密码安全性的协议。
1.PAP
密码认证协议或PAP是这些协议中最早的一种。在这个协议中,客户希望对服务器进行认证,客户和服务器都知道用户的密码。客户端只需将用户名和密码传送给服务器,服务器就会验证密码。这是最简单的方法,并且成功地实现了密码认证,但这种方法有一个重大缺陷。PAP不使用任何加密技术来保护通信。任何能够窃听连接的人都可以从网络上读取用户名和密码。由于这个原因,除非是在传输被其他方式加密的情况下,否则绝对不应该使用PAP。
2.CHAP
挑战握手认证协议(CHAP)是PAP的一个安全替代方案,它通过一个更安全的机制实现了同样的目标。在CHAP中,客户和服务器都事先知道一个共享秘密(Shared secret)。两者都不想在网络上传输该秘密,因为这将危及系统的安全。相反,他们通过一个过程,向对方证明他们都知道这个秘密,而没有在网络上实际交换秘密值。以下是其工作原理:
一旦他们建立了链接,服务器就向客户端发送一个随机值。这就是所谓的挑战值。当客户端收到挑战值时,它将挑战值与秘密值结合起来,并计算出这两个值的加密哈希值。
然后,客户端将哈希值传回给服务器,这被称为响应。服务器收到响应并将其存储在内存中,然后通过使用相同的哈希函数对发送给客户端的挑战和他们都知道的共享秘密计算自己的哈希值。然后,服务器将计算出的响应与它从客户端收到的响应进行比较。如果这两个值相符,服务器就知道客户的秘密与它的秘密相同,它就会验证客户,而不必在网络上发送真实的密码。
CHAP是一个比PAP更安全的选择。目前,微软创建了他们自己的CHAP协议版本,并将其称为MS-CHAP,即微软CHAP。他们后来又发布了该协议的第二个版本,称为MS-CHAPv2。值得注意的是,这两个版本的MS-CHAP都已经被破解,现在被认为是不安全的。
身份识别和认证对终端用户来说是一个恼人的过程,对组织来说也很难管理。联合(federation)和单点登录(Single sign-on,或SSO) 的技术试图减少一些这种负担:
联合身份管理利用了这样一个事实,即一个人可能在各种各样的系统中拥有账户。当组织同意联合他们的身份管理系统时,他们就会在各系统中共享一些信息。这就减少了用户必须拥有的个人身份的数量,减轻了用户和组织的负担。我们可能已经熟悉一些联合身份管理系统了。当你使用你的谷歌账户、Wechat、或QQ账户登录网站时,就在使用联合身份管理。
单点登录则更进一步,在各系统间共享认证会话。许多组织在其组织内创建了单点登录解决方案,以帮助用户避免重复认证的负担。在单点登录方法中,用户登录到他们遇到的第一个支持单点登录的系统。然后,这个登录会话在其他系统中持续存在,直到它的有效期。如果组织将过期时间设置为一个工作日的长度,这意味着用户每天只需要登录一次,他们的单点登录将持续整整一天。
高等教育界对联合身份管理有很大的需求,因为教师和学生经常在不同机构之间流动和工作。不同认证领域之间的信任关系是以其方向(Drection) 和传递性(Transitivity) 来描述的。
信任可以是单向的也可以是双向的。如果存在从域一到域二的单向信任,域一将信任来自域二的认证会话,但域二不会信任来自域一的会话。如果信任关系是双向的,域一和域二将相互信任。域信任的第二个属性是它的传递性。
信任可以是传递性的,也可以是非传递性的。在传递性信任中,信任关系在域之间转移。例如,如果域一与域二有一个传递性信任,域二与域三有一个传递性信任,那么域一和域三也会有一个信任关系,而不需要管理员明确创建该信任。另一方面,在非传递性信任中,信任关系将不会被自动推断出来。域一不会信任域三,除非管理员明确地创建这种信任。
一个组织要有一个集中的网络和应用认证、授权和计费方法,这也是最常见的访问控制需求之一。RADIUS和TACACS协议为企业提供这种服务。
1. RADIUS
RADIUS是一个缩写,代表远程访问拨入用户服务(Remote Access Dial-In User Service)。顾名思义,早在 1980 年代和 1990 年代,RADIUS 就首次用于对基于调制解调器的孤岛服务的用户进行身份验证。一个集中的RADIUS服务器可以支持分布在全国各地的调制解调器池,为密码和账户管理提供一个单一的管理点,并在一个集中的位置整合会计记录。尽管拨入式调制解调器池已成为过去,RADIUS今天仍在使用。今天,它们被用来允许许多不同的应用程序依赖同一个认证源。例如,我们它在无线网络中是如何工作的:首先,终端用户试图连接到一个无线接入点。接入点在RADIUS请求中充当客户端,将认证请求传递给RADIUS服务器。然后,RADIUS服务器与外部认证源(如活动目录或LDAP服务器)检查,以确定用户的密码是否正确。
如果密码正确,RADIUS服务器就会向无线接入点发送一个访问许可信息,允许用户进入网络。
如果密码不正确,RADIUS服务器就会向无线接入点发送一个访问拒绝消息,拒绝用户访问网络。
在这个例子中,我们谈到了密码,但RADIUS也可以支持其他认证因素。我们要确保理解RADIUS客户端和RADIUS服务器的概念。当从应用的角度来看,RADIUS客户端实际上可能是一个应用服务器。在我们的无线网络的例子中,终端用户是无线客户端,但无线网络本身是执行RADIUS认证的主体。所以接入点就是RADIUS客户端(Wireless Access Point)。RADIUS确实有几个缺点。首先,它使用UDP,这降低了其可靠性。第二,虽然它确实为密码提供了加密保护,但RADIUS连接中发送的大部分数据都是未加密的,需要使用额外的安全措施。
2.TACAS
TACAS,终端访问控制器访问控制系统(Terminal Access Controller Access Control System)是RADIUS的一个替代方案,执行类似的功能,最早开发于1980年代。有两个早期版本的TACACS今天很少使用。最初的TACACS协议也使用UDP,现在很少在系统中出现。思科后来发布了他们自己的TACACS专有版本,即扩展的TACACS或XTACACS协议,它今天也很少使用。目前的TACACS标准是由思科开发的TACACs+协议,是一个专有标准。TACACS+的功能与RADIUS类似,但有两个改进:
1.Kerberos
Kerberos访问控制系统被广泛用于在Linux和Windows平台上实现认证和授权。它是微软活动目录的核心协议之一。Kerberos是一个基于票据(ticket-base)的认证系统,它允许用户对一个集中式服务进行认证,然后使用该认证过程中的票据来获得对支持Kerberos认证的分布式系统的访问。以下是Kerberos的工作方式:
2.LDAP
轻量级目录访问协议(The Lightweight Directory Access Protocol),即LDAP,是访问控制的一个重要协议。LDAP允许网络上的服务以标准化的开放格式共享有关用户及其授权的信息。活动目录将LDAP与Kerberos结合使用。当Kerberos处理认证时,LDAP提供了查询存储在目录服务中的信息的方法。Kerberos使用TCP端口88。LDAP使用TCP 389端口进行未加密的通信,它也可以以加密的形式运行,即通过636端口的安全LDAP。
NT LAN Manager或NTLM,被广泛使用Kerberos之前,NTLM认证是微软认证的标准。NTLM使用一种基于哈希的挑战-回应认证机制,但它有两个严重的安全问题。首先,旧版本的NTLM使用弱的加密,不符合现代标准。其次,即使是当前版本的NTLM,即NTLM v2,也容易受到一种被称为 "哈希传递(Pass the hash) "的攻击,即攻击者使用一台机器的哈希凭证来获得对另一台机器的访问。今天,NTLM仍然被安装在许多系统上,以提供向后的兼容性,但这不是一个好主意,也不是一个安全的做法。微软建议禁用NTLM,我们应该遵循这一建议。
现代认证经常通过网络进行,安全断言标记语言(Security Assertion Markup Language或SAML)允许基于浏览器的单点登录跨越各种系统。在一个SAML请求中,有三个角色。
首先,终端用户的委托人向服务提供商请求访问一个资源。服务提供者检查用户是否有一个登录的会话,如果有,就跳过并授予访问权。然而,让我们关注一下用户尚未登录的情况。在这种情况下,服务提供者将用户重定向到用户身份提供者的单点登录服务。
然后,用户试图使用用户名和密码或其他认证技术对身份提供者进行认证。这里的关键是,用户必须向身份提供者进行认证。
身份提供者然后创建一个为服务提供者定制的XHTML表格。用户必须使用这些信息来请求服务提供商提供所谓的安全断言(Security assertion)。该断言请求包括来自身份提供者的身份证明。
接着,服务提供者验证该请求,并与所需的服务创建一个安全上下文(Security context),并将用户重定向到该服务。然后,用户请求所需的资源,而资源服务通过授予访问权进行回应。
这种方法有两个好处:
OAuth和OpenID Connect协议为网络提供了联合的单点登录体验。许多流行的网络服务使用这些协议来依赖身份提供者,包括LinkedIn、谷歌、Facebook、亚马逊和其他公司。
OAuth和OpenID Connect是相关的协议,有不同的目的。OAuth是一个授权协议。它本身并不执行认证。OAuth中的Auth是指授权。当我们使用OAuth时,我们会看到下图,帮助我们澄清一个服务访问另一个服务的权限。一定要仔细阅读这些信息,因为它们包含了关于我们所授予的授权的重要信息。
OpenID Connect是一个与OAuth一起工作的认证协议。它是身份和认证提供者,帮助用户向其他服务证明其身份。 OAuth和OpenID Connect协议在网络上常用于认证。如果我们在一家使用它们的公司工作,无论是作为身份提供者还是消费者,都需要对它们了如指掌。即使我们不直接使用它们,也应该了解它们的功能,以便为用户提供良好的安全建议,让他们与服务提供商分享信息。
数字证书(Digital Certificates)可以作为一种认证技术,通过SSH连接到服务器,为智能卡供电,并将网络访问限制在特定设备上。当我们使用数字证书进行认证时,创建的证书与我们用来保护网站的证书类似。证书的目的是向第三方提供一个可信的公钥副本。保留相应的私钥以证明我们是是公钥的所有者。使用密钥进行认证如下所示:
首先,我们需要创建一个公钥和私钥对,并保留私钥,同时与我们想认证的服务器共享公钥。当我们试图使用基于密钥的加密方式登录服务器时,服务器会生成一个随机的挑战信息(Random Challenge Message)并将其发送给我们。我们用自己的私钥对该信息进行加密,然后将加密后的版本发回给服务器。服务器用接着的公钥对信息进行解密,如果它与原始挑战信息相匹配,就知道我们可以使用私钥,就可以证明我们的身份并为我们提供对服务器的访问。这基本上提供了与强密码相同的保护水平,但主要的好处是,它可以自动化。一台服务器可以使用基于证书的认证连接到另一台服务器,而无需有人输入密码。
我们也可以使用基于证书的认证机构,让公钥由受信任的CA签署。这不仅使远程系统确信我们有私钥,而且还确信我们就是所声称的人。基于证书的认证可用于服务器与服务器之间的连接,它也是基于PKI的智能卡背后的使能技术,还可以与IEEE802.1x标准一起用于网络认证。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。