Single Sign-On http://www.ibm.com/developerworks/cn/security/se-sso/index.html

Single Sign-On

单点登录技术谈

文档选项
将打印机的版面设置成横向打印模式

打印本页

将此页作为电子邮件发送

将此页作为电子邮件发送


级别: 初级

金辉 ([email protected]), 研发总监, 北京信威时代信息技术有限责任公司

2002 年 4 月 01 日

单点登录简单说,就是通过用户的一次性鉴别登录,即可获得需访问系统和应用软件的授权,在此条件下,管理员无需修改或干涉用户登录就能方便的实施希望得到的安全控制。这是一个为了能够在分布式计算机环境中,安全和方便的鉴别用户而产生的课题。本文将讨论单点登录的不同模型,提出真实可行的方案,并且评估这些模型和方案。

介绍

 

1.1 背景

随着信息技术和网络技术的发展,各种应用服务的不断普及,用户每天需要登录到许多不同的信息系统,如网络、邮件、数据库、各种应用服务器等。每个系统都要求用户遵循一定的安全策略,比如要求输入用户ID和口令。随着用户需要登录系统的增多,出错的可能性就会增加,受到非法截获和破坏的可能性也会增大,安全性就会相应降低。而如果用户忘记了口令,不能执行任务,就需要请求管理员的帮助,并只能在重新获得口令之前等待,造成了系统和安全管理资源的开销,降低了生产效率。为避免这种尴尬,牢记登录信息,用户一般会简化密码,或者在多个系统中使用相同的口令,或者创建一个口令"列表"--这些都是会危及公司信息保密性的几种习惯性做法。

当这些安全风险逐步反映出来,管理员增加一些新的安全措施的时候,这些措施却在减少系统的可用性,并且会增大系统管理的复杂度。

因此,在市场上提出了这样的需求:网络用户可以基于最初访问网络时的一次身份验证,对所有被授权的网络资源进行无缝的访问。从而提高网络用户的工作效率,降低网络操作的费用,并提高网络的安全性。

下图,表现了安全市场中不断出现的新需求及其市场空间。



1.2 研究对象

本文将介绍和总结几种不同类型的"Single Sign-On"的技术模型和方案。

1.3 范围

本文的内容将限制于单点登录的技术模型和实现,涉及一些诸如加密,智能卡等技术,但不作为重点,而是希望读者已经有所了解。





回页首


理想的单点登录

在介绍实际的方案和模型前,我们先设想一个理想的系统。

从用户的视角看,虽然是在复杂的企业应用环境中,单点登录不会影响到诸如业务过程,响应效率,网络吞吐量等事情,并将互操作性方面的问题减至最少,任何事情都在顺利工作。

当一个单点登录系统被加入使用,迁移应该容易。所有的用户能够立即学会使用这个工具。

从管理员的角度看,计算和网络环境在各个方面必须能被管理,而管理应该不引起额外的工作或安全漏洞。管理过程应该适合组织的结构和政策。这意味着权利和控制需要有一定的层次结构。

认证和用法的方法应能在分布式的组织环境中得到全部的贯彻而不用付出额外的努力。所有的应用程序, 无论新旧,可以不需要或只需很少的改动即可适应新的认证方式。





回页首


实现问题

上一节里,描述的是一个理想的状态,而在实际应用中,一些理论上不错的方案却在实际中无法实现,这里总结三个主要的方面:计算环境相关的问题;组织结构的问题和电子身份认证方法的问题。

3.1与计算环境相关的问题

当前计算机环境的主要问题是,很少有系统在进行安全设计的时候参考了那些普遍通用的认证方法。所以当新的系统实现了自己的认证和访问控制后,与旧有的认证和访问控制机制毫无什么互操作性可言。

在所有的安全解决方案里"信任"是主要的元素。不幸地,当前的计算机系统不能被信任。他们要么有严重的安全漏洞和错误,要么不能经受恶意攻击。在这些不可靠的部件上运行安全软件,构筑安全的平台,是一个挑战。

另外一个问题是,系统管理员往往缺乏对复杂的网络环境中所有的服务和配置缺乏足够的认识。

3.2 与组织结构相关的问题

访问授权的规则需要规定那些资源是个体用户可以或不能访问。为简化,用户中类似的需要和权利被划分成组。管理不同组的用户是件费力的事情,比如用户转移到别的部门,那么他的访问控制的权限也应得到及时的反映。尤其在一些基于小组进行活动的组织中,工作上的频繁变动时有发生,但是,部门中组与组间的界定,往往是模糊的。

而当有组织结构上的模糊与计算机环境的繁复相结合时,结果是显然的。系统安全主管必须应付一个异常复杂的情况。

3.3与电子身份相关的问题

登录到一个系统的基础是电子身份的认证。基本上每种解决方案都有一些利弊存在。传统的方式也是运用最为广泛的是基于口令的认证,既password authentication。而这种方式的弱点是被猜测和监听。甚至有很多口令被记在笔记本上或就在计算机附近。对于口令认证的改进是一次性口令。顾名思义,仅使用一次性的口令,可以极大的降低监听带来的危险。

电子身份也可以基于智能卡,或加密算法如RSA。卡和私钥将被口令加密保护。

一旦实施了安全认证,下一个挑战是使每个系统接受一样电子的身份。为用户产生凭证并且自动地把它些传递给所有需要的服务。这是可能需要实现的最艰巨的部分。





回页首


单点登录的模型和实现

这里将介绍一些关于实现单点登录的不同方法和可能。首先,是一些常规的标准解决方案,然后,介绍一些现实中的方案。

4.1通用的标准解决方案

4.1.1 通用安全服务应用程序接口(GSS-API)
关于认证和密钥分配系统的一个经常遇到的问题是,由于它要求对应用系统本身做出改动,所以经常受到的冷遇。考虑到这一点, 对一个认证和密钥分配系统来说, 提供一个标准化的安全API就显得格外重要。能做到这一点, 开发人员就不必再为增加很少的安全功能而对整个应用程序动大手术了。因此, 认证系统设计领域内最主要的进展之一就是制定了标准化的安全API, 即通用安全服务API(GSS-API)。德州Austin大学的研究者们开发的安全网络编程(SNP), 对GSS-API接口进行了进一步的封装, 使同网络安全性有关的编程更加方便。

"Generic Security Service Application Program Interface"简写GSS-API,译为通用安全服务应用程序接口,一个典型的GSS-API调用者是通讯协议本身,调用GSS-API,用可信性、完整性和机密性的安全服务来保护他的通讯。例如Kerberos。这就是GSS-API可以在不同的安全服务和应用程序被使用的原因,包括SSO。GSS-API 的目的是提供隐蔽特定的内在安全机制的一个接口。这可以帮助不同应用程序之间有更好的互操作性。



GSS-API的设计假定和强调以下几个基本目标:

  • 机制独立:GSS-API定义了一个接口来使用密码技术实现强壮的认证和其他安全服务--在独立于特定的底层机制的通用层上。例如,GSS-API提供的服务可以用密钥技术实现(例如,Kerberos)或者使用公钥技术实现(例如 X.509)。
  • 协议环境独立:GSS-API独立于使用它的通讯协议组,允许在多种协议环境中使用。在进行调用的协议和GSS-API的应用中间,加入一个面向特定的通讯协议(如RPC)的中介,可以保持GSS-API功能的起用和协议通讯的起用之间的同步。
  • 协议联合的独立:GSS-API安全上下文构造是独立于通讯协议相关的构造的。这个特点允许单独的GSS-API实现可以被多种协议模块使用,以利于调用这些模块的应用程序。同时GSS-API服务也可以被应用程序直接调用,完全独立于协议关联。
  • 适应多种实现:GSS-API客户不是被限制存在于实现GSS-API的系统定义的TCB(Trusted Computing Base)范围内;安全服务被以一种既适应intra-TCB调用,又适用extra-TCB调用的方式说明。

关于GSS-API的更细节的定义,可以参看RFC2025和2078。

4.1.2 OSF [ 开放软件基金会 ] 分布式计算环境 DCE
开放软件基金会(OSF)的分布式计算环境。DCE是一个被广泛接受的解决方案,用于开发和部署安全的、企业级的分布式计算应用,提供网络安全、透明的服务分配和跨平台通信的能力,允许在一个异构的环境中快速设计基于"主/从"或"对等"结构的应用。它能方便地对网络提供最佳的性能和可靠的保护。因为DCE是由主流操作系统厂商的行业协会所支持的,所以这个标准在很多计算平台上都得到了广泛的支持。DCE核心功能现在已经被几乎所有的UNIX系统及其变种所支持,并且,在PC操作系统日益普及的今天,DCE核心服务也在PC机上变得越来越普遍。

DCE的认证管理服务是集成了基于DES私人密钥加密技术和MIT开发的Kerberos技术的身份验证。这是一种企业级的安全解决方案,它使企业能为网络资源的使用提供安全。保管理护和通过企业Intranet的用户和通过Internet的远程用户都可以有控制地访问这些资源。

DCE对于安全涉及到4个方面:

  1. 认证(authentication),
  2. 安全通讯(secure communications),
  3. 授权(authorization),
  4. 和审计(auditing)。

4.1.3 嵌入式认证模块,PAM
PAM(Pluggable Authentication Modules )是由Sun提出的一种用于实现应用程序的认证机制。其核心是一套共享库,目的是提供一个框架和一套编程接口,将认证工作由程序员交给管理员,PAM允许管理员在多种认证方法之间作出选择,它能够改变本地认证方法而不需要重新编译与认证相关的应用程序,同时也便于向系统中添加新的认证手段。

PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX 9.0等,并在Linux中得到广泛的应用。

一、PAM的结构

PAM的整个框架结构如下图所示:



PAM的设计目标是:

  • 管理员可以选择认证方式,从简单的密码到智能卡系统。
  • 可以为不同的程序配置不同的认证机制。如 使telnet使用 S/Key认证。而本机的 login 缺省使用一般的 UNIX password。
  • 支持程序的显示方式的需求。如login 需要基于终端的显示,而dtlogin需要X显示, 而`ftp' 和 `telnet'需要透过网络来认证。
  • 支持为一个程序配置同时使用多种认证机制。
  • 可是用户在使用多种认证机制时,不必为同一个密码敲入多次。
  • 可是用户在认真时需要输入多个密码。
  • 当底层的认证机制改变时上层软件不需要修改。
  • 结构为system authentication提供一个pluggable_ model。
  • 必须能满足现有的服务需要。

PAM的功能包括:

  • ● 加密口令(包括DES以外的算法);
  • ● 对用户进行资源限制,防止DoS攻击;
  • ● 允许随意Shadow口令;
  • ● 限制特定用户在指定时间从指定地点登录;
  • ● 引入概念"client plug-in agents",使PAM支持C/S应用中的机器--机器认证成为可能。

PAM为更有效的认证方法的开发提供了便利,在此基础上可以很容易地开发出替代常规的用户名加口令的认证方法,如智能卡、指纹识别等认证方法。

4.2 Broker-Based SSO的方案

在一个基于经纪人的SSO解决方案中,有一个集中的认证和用户帐号管理的服务器。经纪人给能被用于进一步请求的电子的身份存取。中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的"第三方"。

4.2.1 Kerberos
Kerberos v5 是业界的标准网络身份验证协议,该协议是在麻省理工学院起草的,旨在给计算机网络提供"身份验证"。Kerberos协议的基础是基于信任第三方,如同一个经济人(broker)集中的进行用户认证和发放电子身份凭证,它提供了在开放型网络中进行身份认证的方法,认证实体可以是用户或用户服务。这种认证不依赖宿主机的操作系统或主机的IP地址,不需要保证网络上所有主机的物理安全性,并且假定数据包在传输中可被随机窃取篡改。

Kerberos协议具有以下的一些优势:

  1. 与授权机制相结合;
  2. 实现了一次性签放的机制,并且签放的票据都有一个有效期;
  3. 支持双向的身份认证,既服务器可以通过身份认证确认客户方的身份,而客户如果需要也可以反向认证服务方的身份;
  4. 支持分布式网络环境下的认证机制,通过交换"跨域密钥"来实现。

Kerberos机制的实现要求一个时钟基本同步的环境,这样需要引入时间同步机制,并且该机制也需要考虑安全性,否则攻击者可以通过调节某主机的时间实施重放攻击(Replay Attack)。

Kerberos使用两类凭证:票据(ticket)和鉴别码(authenticator)。
Kerberos v5票据的格式:Tc,s = s, {c, a, v, Kc,s } Ks
Kerberos v5鉴别码的格式:Ac,s = {c, t, key} Kc,s

Kerberos的缩写
c 客户(机)
s 服务器
a 客户的网络地址
v 票据的有效起止时间
t 时间标记
Kx x的秘密密钥
Kx,y x与y的会话密钥
{m} Kx 以x的秘密密钥加密的m
Tx,y 使用y的x的票据
Ax,y 从x到y的鉴别码


Kerberos的消息 V5 V4
Client 到 Kerberos c, tgs c, tgs
Kerberos 到 Client {Kc,tgs}Kc, {Tc,tgs}Ktgs {Kc,tgs, {Tc, tgs}Ktgs}Kc
Client 到 TGS {Ac,s} Kc,tgs, {Tc,tgs} Ktgs {Ac,s}Kc,tgs, {Tc,tgs}Ktgs
TGS 到 Client {Kc,s}Kc,tgs, {Tc,s}Ks {Kc,s, {Tc,s}Ks}Kc,tgs
Client 到 Server {Ac,s}Kc,s, {Tc,s}Ks {Ac,s}Kc,s, {Tc,s}Ks

消息1、3、5在两个版本中是相同的。第5版删除了v4中消息2、4的票据双重加密;增加了多重地址;用开始可结束时间替代有效时间;并在鉴别码里增加了包括一个附加密钥的选项;V4只支持DES(数据加密标准)算法,V5采用独立的加密模块,可用其它加密算法替换;V4版里,为防止"重放"攻击,nonce由时间戳实现,这就带来了时间同步问题。即使利用网络时间协议(Network Time Protocol)或国际标准时间(Coordinated universaltime)能在一定程度上解决时间同步问题,但网络上关于时间的协议并不安全。V5 版允许nonce可以是一个数字序列,但要求它唯一。由于服务器无法保证不同用户的nonce不冲突,偶然的冲突可能将合法用户的服务器申请当作重放攻击而拒之门外。

4.2.2 Sesame
Sesame, 代表欧洲安全多环境应用系统(Secure European System for Application in Multivendor Environment)。是一个欧洲团体安全项目,被认为是一种欧洲版本的Kerberos。Sesame是建造在GSS-API上,提供单点登录服务和的在分布式环境中的数据安全性。尽管Sesame与Kerberos基于同样范例,但它们不是一对一的复制,而是在原有的设计中增加了一些新的特性。这些包括

  1. 异种环境,
  2. 访问控制,
  3. 可扩展的公钥系统,
  4. 更好的可管理性,
  5. 审计,
  6. 委托授权。

在Kerberos中,用户首先到一个认证服务器认证自己。从认证服务器获得标识在呈现给其他服务器以获得访问最终应用系统的授权。而在Sesame中,这些服务器被统称为特权属性服务器。从一个特权属性服务器,用户获得特权属性证书,最后把访问权利给需要的服务。

4.2.3 IBM KryptoKnight
KryptoKnight是IBM公司的一种类似于Kerberos的鉴别和密钥分配系统。它是一种秘密密钥协议并使用DES-CBC模式或MD5增加版。支持四项保密功能:

  • 用户鉴别
  • 双方鉴别
  • 密钥分配
  • 数据源和数据内容的鉴别。

它和Kerberos的区别在于

  • 采用单向散列函数鉴别和加密票据
  • 不依靠同步时钟,而使用当前时间
  • 如果甲试图和乙通信,可以允许甲发一条消息给乙,然后乙初始化密钥交换协议。

KryptoKnight极大的优化了消息数量,长度和加密的数量,而且不仅支持IP协议也支持其他通信协议如NetBIOS协议。

4.3 Agent-Based SSO方案

在一个基于代理人的解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如, 它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人能也被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个"翻译"。 一个基于代理人的解决方案的一个例子是SSH。

SSH的英文全称是Secure Shell。通过使用SSH,你可以把所有传输的数据进行加密,这样就能够防止DNS和IP欺骗。这是一个为在网上进行安全连接的客户/服务器类型加密软件,实现了一个密钥交换协议,以及主机及客户端认证协议。SSH的用户可以使用包括RSA算法的不同认证方法。当使用RSA认证时,代理程序可以被用于单点登录。代理程序可以在PC,便携机,或终端上运行,当被认证身份加入到代理程序中,如果该代理程序有新的子连结产生,则继承原有连结的认证。远程系统往往需要一个SSH服务器,用以与代理程序通信。

SSH包括如下的层次结构:

SSH-CONN 连接协议
SSH-USERAUTH 用户认证协议
SSH-TRANS 传输层协议
TCP/IP TCP/IP

TCP/IP:为上层提供底层(不安全的)可靠的数据流;
SSH-TRANS:提供服务器身份认证和完整性;
SSH-USERAUTH:为服务器鉴别客户端用户;
SSH-CONN:把加密通道分化成多个逻辑通道。

TCP/IP在具体的SSH协议中,主机密码是一个RSA私钥,用于确认主机;服务器密码也是一个RSA私钥,每小时更新。主机可以拥有多个用不同算法产生的主机密码。多个主机也可以共享同一主机密码。每个主机必须至少用每个必须的公钥算法产生一个私钥。

目前SSH使用的算法分为必需的、推荐使用的和可选用的,分别列在下面的表格中。

算法(Algorithm) 必需的(Required) 推荐(Recommended) 可选(Optional)
加密(Encryption) 3DES-CBC Blowfish-cbc
Twofish-cbc
Arcfour
Idea-cbc
Cast128-cbc
信息摘要(MAC) Hmac-SHA1 Hmac-sha-96 Hmac-md5
Hmac-md5-96
密钥交换(Key Exchange) Diffie-Hellman    
公钥(Public Key) SSH-DSS X509-v3 SPKI
pgp

利用个性化的安全代理来实现时,每个运行SSH 的主机(不管是服务器还是客户端)必须有一个安全代理程序在上面运行。例如,要获得主机密码和服务器密码,个性化代理参与如下的两部分:

密钥生成和存储:当服务器需要生成主机密码和服务器密码时,它会要求本地的安全代理来完成这一工作。本地安全代理或是自己生成密钥对,或是要求另一个安全代理来生成。SSH协议并不区分这两种情况。生成的密钥由安全代理保管,在需要时使用。
身份认证:当客户端得到主机密码或服务器密码,它要传给自己的安全代理,由安全代理负责对密码进行认证。作为认证结果,安全代理会返回"成功"或"失败"。SSH协议本身不关心有关密码的细节。稍后,如果有新的公钥算法引入SSH,只需要替换安全代理的部分。

4.4 Token-Based SSO的方案

现在被广泛使用的口令认证,比如FTP,邮件服务器的登陆认证,都可被称为"single-factor "口令的认证。这是一种简单易用的方式,同时也是一种会带来很多安全隐患的方式。比如:易于猜测,很少进行更换,一个口令在多种应用当中使用等等一会危及安全的习惯。再如,在明文传输的网络环境里,经常使用并很少更换的口令,更易于被窃取和造成危害。

RSA公司提出的一种称为SecurID的解决方案。与"single-factor "不同是是它被称之为"two-factor"双因素的认证。构成认证的第一个因素是Personnel Identification Number (PIN),即用户身份识别码,这是一串保密的数字,可由系统管理员订制。第二个要素是SecurID token,一个小型的数字发生器,这个发生器的时钟将与网络环境中提供身份鉴别的服务器(ACE)保持同步,并且与ACE上的用户数据库保持映射。数字发生器每隔一段时间(比如一分钟)产生新的数字,PIN + 同步时钟数字就是用户的登录代码。

解决方案中也有种被称为WebID的模块。在Web服务器上安装一个ACE服务器的代理程序,用来接受SecurID。当访问第一个需要认证的URL时,WebID会软件产生并加密一个标识,这个标识将在访问其他资源的时候被用到。

4.5 Agent and Broker-Based SSO解决方案

当Agent-Base的解决方案和Broker-Base的解决方案被相结合时,就结合前者的灵活性和后者的中央式管理两方面的优势。Agent-Base的好处还在于是减少了改变网络应用程序的的代价。这样,与Kerberos相比,就不需要"kerberize"化的应用程序。

这里演示一个图例:



4.6 基于网关的 SSO 解决方案

在broker-based的方案中,会在网络中放置一个"看门狗"的模型。而Gateway-Based则是另一种单点登录的方法,具体的做法是提供类似象"门"一样的网关用以安全的接入到可信的网络服务。网关可以是防火墙, 或者是专门用于通讯加密的服务器。下图是解决方案的一个模型。



在这种方案,所有的响应服务都需要放在被网关隔离的受信网段里。Client通过网关进行认证后获得接受服务的受权。如果在网关后的服务能够通过IP地址进行识别,并在网关上建立一个基于IP的规则,而这个规则如果与在网关上的用户数据库相结合,网关就可以被用于单点登录。网关将记录Client的身份不再需要冗余的认证请求,便可授权所要求的服务。由于网关可以监视并改变应用服务的数据流,所以在不修改应用服务的同时,改变认证信息,并能提供合适的访问控制。





回页首


评估当前的解决方案

呈现出的解决方案能够并且应该从若干方面来评价。最重要的是可实施性,管理,安全,和易用性。可实施性是系统的复杂性的功能并且测量现有计算系统如何能够方便的被修改成使用SSO解决方案。管理是系统在怎么容易上被使用的主管的看法。安全是估量系统是否易受攻击。使用性是系统的最终用户的观点。

5.1 Broker-based(基于经纪人)

可实施性
Broker-based解决方案的主要的问题,例如Kerberos,是确定现有哪些应用程序需要被修改的,或"kerberized"以接受票据,而对于旧系统的改造,是项艰巨的工作。

管理
集中式的管理是在Broker-based解决方案的主要好处,一个中央数据库易于进行管理。

安全性
一个Broker-base的解决方案的设计实现安全的实际水平,取决于实施。Kerberos存在有若干安全上的争论。

旧的鉴别码有可能被存储和重用。尽管时间标记可用于防止这种攻击,但在票据有效时间内仍有风险。典型的票据有效时间是八小时。

鉴别码还基于一个假设,即网络中的所有时钟基本是同步。如果能够欺骗主机,使它的正确时间发生错误,就的鉴别码则能够被重放。大多数网络时间协议是不安全的,因此将可能导致严重问题。

在Kerberos中的认证仅仅基于口令, 这样使系统在口令猜测面前显得很脆弱。攻击者收集到大量的票据,则会有很大的可能性找到口令。

最严重的是,Kerberos假设Client已被信任,而恶意的Kerberos软件可以完成Kerberos协议并记录口令来替代所有客户的Kerberos应用。任何一种安装在不安全的计算机环境中的密码软件都会面临这样的问题。

和Kerberos一样,Sesame有一样的脆弱, 也就是口令猜测攻击的危险。

KryptoKnight在密码技术上的改进应该使了它比 Kerberos 更安全。

加强Kerberos的工作包括使用PKI技术和密钥管理中心的智能卡接口。

使用性
在集中式的模型管理中,容易受到批评的是如果认证服务器宕掉,则所有的应用,所有的用户都会受到影响。

5.2 Agent-based(基于代理人)

可实施性
基于代理人的方式能够使移植变得容易,但代理程序的软件供应商需要设计和实现与原有应用程序协议的交互。

管理
单纯的代理方式不能够帮助管理,甚至使管理更难控制和分配代理软件的权利。

安全性
有强密码技术的保证,代理程序的通信应该是安全的,但问题可能出在恶意软件方面

使用性
也许象SSH一样的代理软件学习身份加载是的一个困难的概念。也可能是公钥密码学的概念本身就难以掌握,而用户往往并不具备这方面的知识更没有耐心。

5.3 Token-based

可实施性
这种方案比如WebID,因为需要在系统上增加一些新的组件,增加了管理员管理的负担。

安全性
增强了系统的安全性。

5.4 基于网关

可实施性
在确定的环境中,安装和设置一道网关是方便的。作为一个分开的部件,需要注意它的网络通信能力,而基本不会有太多的互操作性问题。唯一的问题可能是,应用程序和网关客户端软件和需要安放在网关同一侧的一台计算机上。

管理
比较而言,网关的中央用户数据库比一个broker-based的解决方案更易于管理。带来的问题是,如果若干网关被使用,那么用户数据库不能自动地被同步。

安全性
一个通讯加密服务器应该是安全,但是也可能被攻击,可能的攻击点是其操作系统,而当网关放在防火墙上,则攻击防火墙,如SYN-flooding。推荐的方式是,用分开的防火墙保护网关。

使用性
网关作为一个中心组件,它的状态同样会受到影响到整个服务的运行。

5.5 Agent and Broker-based

可实施性
使用基于代理方式,将可以简化一些在纯粹的broker-based方案中的修改。

管理
应比单纯的broker-based方案更易于管理。

安全性
代理软件需要增加安全和本地验证的功能。

使用性
方案中同样保留有中心组件。





回页首


实践应用和前景

这里介绍了一些关于SSO的模型和实现的方式,这些模型和方案将会继续的被加以改进,同样,也会有越来越多的系统将在设计的时候将一些通用的API如GSS-API或PAM等考虑进去。比如微软公司,也在他新服务器软件windows2000上,加入了对于MIT Kerberos 版本5的一些支持,当然他与一些异构的Kerberos软件之间也存在一些互操作性方面的限制,这些资料和问题的解决可以在微软公司提供的技术白皮书中找到。SUN公司也开始在其广为流传的JDK中封装对Kerberos服务的支持,在其JDK1.4(Beta release)中可以了解。

针对微软的"Passport",Sun联盟成立了旨在实现利用因特网进行交易时必需的Ubiquitous(随时随地)的单点登录(Single Sign-On)认证,进行有关标准的制订的开放性业界团体"Liberty Alliance Project"。可以预计,单点登录技术将逐步在标准的制定和竞争中逐步显示完善起来。





回页首


总结

本文介绍了关于SSO问题产生的背景,问题的范围,模型和实现。并评估了几种模型的特点和限制,希望对读者了解"单点登录"技术框架能起到帮助作用。



参考资料

  • 《Windows 2000 网络中的单次登录(简述)》
  • 《rfc2078:Generic Security Service Application Program Interface, Version 2》
  • 《SecurID: A Secure Two-Factor Authentication》
  • 《SecurID Tokens Datasheet》RSA documentation
  • 《Single Sign-On》Jani Hursti Department of Computer Science Helsinki University of Technology
  • 《PAM入门介绍》绿盟月刊
  • 《Pluggable Authentication Modules》redhat documentation


关于作者

 

本文作者金辉,曾就职于中网信息技术有限公司,人民日报《网络版》诺方信息技术有限公司,目前是北京信威时代信息技术有限责任公司的研发总监,主要从事通信和网络技术的信息安全领域的产品研究和开发和理论探索。欢迎通过 [email protected]与其联系。

文档选项
将打印机的版面设置成横向打印模式

打印本页

将此页作为电子邮件发送

将此页作为电子邮件发送


级别: 初级

金辉 ([email protected]), 研发总监, 北京信威时代信息技术有限责任公司

2002 年 4 月 01 日

单点登录简单说,就是通过用户的一次性鉴别登录,即可获得需访问系统和应用软件的授权,在此条件下,管理员无需修改或干涉用户登录就能方便的实施希望得到的安全控制。这是一个为了能够在分布式计算机环境中,安全和方便的鉴别用户而产生的课题。本文将讨论单点登录的不同模型,提出真实可行的方案,并且评估这些模型和方案。

介绍

 

1.1 背景

随着信息技术和网络技术的发展,各种应用服务的不断普及,用户每天需要登录到许多不同的信息系统,如网络、邮件、数据库、各种应用服务器等。每个系统都要求用户遵循一定的安全策略,比如要求输入用户ID和口令。随着用户需要登录系统的增多,出错的可能性就会增加,受到非法截获和破坏的可能性也会增大,安全性就会相应降低。而如果用户忘记了口令,不能执行任务,就需要请求管理员的帮助,并只能在重新获得口令之前等待,造成了系统和安全管理资源的开销,降低了生产效率。为避免这种尴尬,牢记登录信息,用户一般会简化密码,或者在多个系统中使用相同的口令,或者创建一个口令"列表"--这些都是会危及公司信息保密性的几种习惯性做法。

当这些安全风险逐步反映出来,管理员增加一些新的安全措施的时候,这些措施却在减少系统的可用性,并且会增大系统管理的复杂度。

因此,在市场上提出了这样的需求:网络用户可以基于最初访问网络时的一次身份验证,对所有被授权的网络资源进行无缝的访问。从而提高网络用户的工作效率,降低网络操作的费用,并提高网络的安全性。

下图,表现了安全市场中不断出现的新需求及其市场空间。



1.2 研究对象

本文将介绍和总结几种不同类型的"Single Sign-On"的技术模型和方案。

1.3 范围

本文的内容将限制于单点登录的技术模型和实现,涉及一些诸如加密,智能卡等技术,但不作为重点,而是希望读者已经有所了解。





回页首


理想的单点登录

在介绍实际的方案和模型前,我们先设想一个理想的系统。

从用户的视角看,虽然是在复杂的企业应用环境中,单点登录不会影响到诸如业务过程,响应效率,网络吞吐量等事情,并将互操作性方面的问题减至最少,任何事情都在顺利工作。

当一个单点登录系统被加入使用,迁移应该容易。所有的用户能够立即学会使用这个工具。

从管理员的角度看,计算和网络环境在各个方面必须能被管理,而管理应该不引起额外的工作或安全漏洞。管理过程应该适合组织的结构和政策。这意味着权利和控制需要有一定的层次结构。

认证和用法的方法应能在分布式的组织环境中得到全部的贯彻而不用付出额外的努力。所有的应用程序, 无论新旧,可以不需要或只需很少的改动即可适应新的认证方式。





回页首


实现问题

上一节里,描述的是一个理想的状态,而在实际应用中,一些理论上不错的方案却在实际中无法实现,这里总结三个主要的方面:计算环境相关的问题;组织结构的问题和电子身份认证方法的问题。

3.1与计算环境相关的问题

当前计算机环境的主要问题是,很少有系统在进行安全设计的时候参考了那些普遍通用的认证方法。所以当新的系统实现了自己的认证和访问控制后,与旧有的认证和访问控制机制毫无什么互操作性可言。

在所有的安全解决方案里"信任"是主要的元素。不幸地,当前的计算机系统不能被信任。他们要么有严重的安全漏洞和错误,要么不能经受恶意攻击。在这些不可靠的部件上运行安全软件,构筑安全的平台,是一个挑战。

另外一个问题是,系统管理员往往缺乏对复杂的网络环境中所有的服务和配置缺乏足够的认识。

3.2 与组织结构相关的问题

访问授权的规则需要规定那些资源是个体用户可以或不能访问。为简化,用户中类似的需要和权利被划分成组。管理不同组的用户是件费力的事情,比如用户转移到别的部门,那么他的访问控制的权限也应得到及时的反映。尤其在一些基于小组进行活动的组织中,工作上的频繁变动时有发生,但是,部门中组与组间的界定,往往是模糊的。

而当有组织结构上的模糊与计算机环境的繁复相结合时,结果是显然的。系统安全主管必须应付一个异常复杂的情况。

3.3与电子身份相关的问题

登录到一个系统的基础是电子身份的认证。基本上每种解决方案都有一些利弊存在。传统的方式也是运用最为广泛的是基于口令的认证,既password authentication。而这种方式的弱点是被猜测和监听。甚至有很多口令被记在笔记本上或就在计算机附近。对于口令认证的改进是一次性口令。顾名思义,仅使用一次性的口令,可以极大的降低监听带来的危险。

电子身份也可以基于智能卡,或加密算法如RSA。卡和私钥将被口令加密保护。

一旦实施了安全认证,下一个挑战是使每个系统接受一样电子的身份。为用户产生凭证并且自动地把它些传递给所有需要的服务。这是可能需要实现的最艰巨的部分。





回页首


单点登录的模型和实现

这里将介绍一些关于实现单点登录的不同方法和可能。首先,是一些常规的标准解决方案,然后,介绍一些现实中的方案。

4.1通用的标准解决方案

4.1.1 通用安全服务应用程序接口(GSS-API)
关于认证和密钥分配系统的一个经常遇到的问题是,由于它要求对应用系统本身做出改动,所以经常受到的冷遇。考虑到这一点, 对一个认证和密钥分配系统来说, 提供一个标准化的安全API就显得格外重要。能做到这一点, 开发人员就不必再为增加很少的安全功能而对整个应用程序动大手术了。因此, 认证系统设计领域内最主要的进展之一就是制定了标准化的安全API, 即通用安全服务API(GSS-API)。德州Austin大学的研究者们开发的安全网络编程(SNP), 对GSS-API接口进行了进一步的封装, 使同网络安全性有关的编程更加方便。

"Generic Security Service Application Program Interface"简写GSS-API,译为通用安全服务应用程序接口,一个典型的GSS-API调用者是通讯协议本身,调用GSS-API,用可信性、完整性和机密性的安全服务来保护他的通讯。例如Kerberos。这就是GSS-API可以在不同的安全服务和应用程序被使用的原因,包括SSO。GSS-API 的目的是提供隐蔽特定的内在安全机制的一个接口。这可以帮助不同应用程序之间有更好的互操作性。



GSS-API的设计假定和强调以下几个基本目标:

  • 机制独立:GSS-API定义了一个接口来使用密码技术实现强壮的认证和其他安全服务--在独立于特定的底层机制的通用层上。例如,GSS-API提供的服务可以用密钥技术实现(例如,Kerberos)或者使用公钥技术实现(例如 X.509)。
  • 协议环境独立:GSS-API独立于使用它的通讯协议组,允许在多种协议环境中使用。在进行调用的协议和GSS-API的应用中间,加入一个面向特定的通讯协议(如RPC)的中介,可以保持GSS-API功能的起用和协议通讯的起用之间的同步。
  • 协议联合的独立:GSS-API安全上下文构造是独立于通讯协议相关的构造的。这个特点允许单独的GSS-API实现可以被多种协议模块使用,以利于调用这些模块的应用程序。同时GSS-API服务也可以被应用程序直接调用,完全独立于协议关联。
  • 适应多种实现:GSS-API客户不是被限制存在于实现GSS-API的系统定义的TCB(Trusted Computing Base)范围内;安全服务被以一种既适应intra-TCB调用,又适用extra-TCB调用的方式说明。

关于GSS-API的更细节的定义,可以参看RFC2025和2078。

4.1.2 OSF [ 开放软件基金会 ] 分布式计算环境 DCE
开放软件基金会(OSF)的分布式计算环境。DCE是一个被广泛接受的解决方案,用于开发和部署安全的、企业级的分布式计算应用,提供网络安全、透明的服务分配和跨平台通信的能力,允许在一个异构的环境中快速设计基于"主/从"或"对等"结构的应用。它能方便地对网络提供最佳的性能和可靠的保护。因为DCE是由主流操作系统厂商的行业协会所支持的,所以这个标准在很多计算平台上都得到了广泛的支持。DCE核心功能现在已经被几乎所有的UNIX系统及其变种所支持,并且,在PC操作系统日益普及的今天,DCE核心服务也在PC机上变得越来越普遍。

DCE的认证管理服务是集成了基于DES私人密钥加密技术和MIT开发的Kerberos技术的身份验证。这是一种企业级的安全解决方案,它使企业能为网络资源的使用提供安全。保管理护和通过企业Intranet的用户和通过Internet的远程用户都可以有控制地访问这些资源。

DCE对于安全涉及到4个方面:

  1. 认证(authentication),
  2. 安全通讯(secure communications),
  3. 授权(authorization),
  4. 和审计(auditing)。

4.1.3 嵌入式认证模块,PAM
PAM(Pluggable Authentication Modules )是由Sun提出的一种用于实现应用程序的认证机制。其核心是一套共享库,目的是提供一个框架和一套编程接口,将认证工作由程序员交给管理员,PAM允许管理员在多种认证方法之间作出选择,它能够改变本地认证方法而不需要重新编译与认证相关的应用程序,同时也便于向系统中添加新的认证手段。

PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX 9.0等,并在Linux中得到广泛的应用。

一、PAM的结构

PAM的整个框架结构如下图所示:



PAM的设计目标是:

  • 管理员可以选择认证方式,从简单的密码到智能卡系统。
  • 可以为不同的程序配置不同的认证机制。如 使telnet使用 S/Key认证。而本机的 login 缺省使用一般的 UNIX password。
  • 支持程序的显示方式的需求。如login 需要基于终端的显示,而dtlogin需要X显示, 而`ftp' 和 `telnet'需要透过网络来认证。
  • 支持为一个程序配置同时使用多种认证机制。
  • 可是用户在使用多种认证机制时,不必为同一个密码敲入多次。
  • 可是用户在认真时需要输入多个密码。
  • 当底层的认证机制改变时上层软件不需要修改。
  • 结构为system authentication提供一个pluggable_ model。
  • 必须能满足现有的服务需要。

PAM的功能包括:

  • ● 加密口令(包括DES以外的算法);
  • ● 对用户进行资源限制,防止DoS攻击;
  • ● 允许随意Shadow口令;
  • ● 限制特定用户在指定时间从指定地点登录;
  • ● 引入概念"client plug-in agents",使PAM支持C/S应用中的机器--机器认证成为可能。

PAM为更有效的认证方法的开发提供了便利,在此基础上可以很容易地开发出替代常规的用户名加口令的认证方法,如智能卡、指纹识别等认证方法。

4.2 Broker-Based SSO的方案

在一个基于经纪人的SSO解决方案中,有一个集中的认证和用户帐号管理的服务器。经纪人给能被用于进一步请求的电子的身份存取。中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的"第三方"。

4.2.1 Kerberos
Kerberos v5 是业界的标准网络身份验证协议,该协议是在麻省理工学院起草的,旨在给计算机网络提供"身份验证"。Kerberos协议的基础是基于信任第三方,如同一个经济人(broker)集中的进行用户认证和发放电子身份凭证,它提供了在开放型网络中进行身份认证的方法,认证实体可以是用户或用户服务。这种认证不依赖宿主机的操作系统或主机的IP地址,不需要保证网络上所有主机的物理安全性,并且假定数据包在传输中可被随机窃取篡改。

Kerberos协议具有以下的一些优势:

  1. 与授权机制相结合;
  2. 实现了一次性签放的机制,并且签放的票据都有一个有效期;
  3. 支持双向的身份认证,既服务器可以通过身份认证确认客户方的身份,而客户如果需要也可以反向认证服务方的身份;
  4. 支持分布式网络环境下的认证机制,通过交换"跨域密钥"来实现。

Kerberos机制的实现要求一个时钟基本同步的环境,这样需要引入时间同步机制,并且该机制也需要考虑安全性,否则攻击者可以通过调节某主机的时间实施重放攻击(Replay Attack)。

Kerberos使用两类凭证:票据(ticket)和鉴别码(authenticator)。
Kerberos v5票据的格式:Tc,s = s, {c, a, v, Kc,s } Ks
Kerberos v5鉴别码的格式:Ac,s = {c, t, key} Kc,s

Kerberos的缩写
c 客户(机)
s 服务器
a 客户的网络地址
v 票据的有效起止时间
t 时间标记
Kx x的秘密密钥
Kx,y x与y的会话密钥
{m} Kx 以x的秘密密钥加密的m
Tx,y 使用y的x的票据
Ax,y 从x到y的鉴别码


Kerberos的消息 V5 V4
Client 到 Kerberos c, tgs c, tgs
Kerberos 到 Client {Kc,tgs}Kc, {Tc,tgs}Ktgs {Kc,tgs, {Tc, tgs}Ktgs}Kc
Client 到 TGS {Ac,s} Kc,tgs, {Tc,tgs} Ktgs {Ac,s}Kc,tgs, {Tc,tgs}Ktgs
TGS 到 Client {Kc,s}Kc,tgs, {Tc,s}Ks {Kc,s, {Tc,s}Ks}Kc,tgs
Client 到 Server {Ac,s}Kc,s, {Tc,s}Ks {Ac,s}Kc,s, {Tc,s}Ks

消息1、3、5在两个版本中是相同的。第5版删除了v4中消息2、4的票据双重加密;增加了多重地址;用开始可结束时间替代有效时间;并在鉴别码里增加了包括一个附加密钥的选项;V4只支持DES(数据加密标准)算法,V5采用独立的加密模块,可用其它加密算法替换;V4版里,为防止"重放"攻击,nonce由时间戳实现,这就带来了时间同步问题。即使利用网络时间协议(Network Time Protocol)或国际标准时间(Coordinated universaltime)能在一定程度上解决时间同步问题,但网络上关于时间的协议并不安全。V5 版允许nonce可以是一个数字序列,但要求它唯一。由于服务器无法保证不同用户的nonce不冲突,偶然的冲突可能将合法用户的服务器申请当作重放攻击而拒之门外。

4.2.2 Sesame
Sesame, 代表欧洲安全多环境应用系统(Secure European System for Application in Multivendor Environment)。是一个欧洲团体安全项目,被认为是一种欧洲版本的Kerberos。Sesame是建造在GSS-API上,提供单点登录服务和的在分布式环境中的数据安全性。尽管Sesame与Kerberos基于同样范例,但它们不是一对一的复制,而是在原有的设计中增加了一些新的特性。这些包括

  1. 异种环境,
  2. 访问控制,
  3. 可扩展的公钥系统,
  4. 更好的可管理性,
  5. 审计,
  6. 委托授权。

在Kerberos中,用户首先到一个认证服务器认证自己。从认证服务器获得标识在呈现给其他服务器以获得访问最终应用系统的授权。而在Sesame中,这些服务器被统称为特权属性服务器。从一个特权属性服务器,用户获得特权属性证书,最后把访问权利给需要的服务。

4.2.3 IBM KryptoKnight
KryptoKnight是IBM公司的一种类似于Kerberos的鉴别和密钥分配系统。它是一种秘密密钥协议并使用DES-CBC模式或MD5增加版。支持四项保密功能:

  • 用户鉴别
  • 双方鉴别
  • 密钥分配
  • 数据源和数据内容的鉴别。

它和Kerberos的区别在于

  • 采用单向散列函数鉴别和加密票据
  • 不依靠同步时钟,而使用当前时间
  • 如果甲试图和乙通信,可以允许甲发一条消息给乙,然后乙初始化密钥交换协议。

KryptoKnight极大的优化了消息数量,长度和加密的数量,而且不仅支持IP协议也支持其他通信协议如NetBIOS协议。

4.3 Agent-Based SSO方案

在一个基于代理人的解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如, 它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人能也被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个"翻译"。 一个基于代理人的解决方案的一个例子是SSH。

SSH的英文全称是Secure Shell。通过使用SSH,你可以把所有传输的数据进行加密,这样就能够防止DNS和IP欺骗。这是一个为在网上进行安全连接的客户/服务器类型加密软件,实现了一个密钥交换协议,以及主机及客户端认证协议。SSH的用户可以使用包括RSA算法的不同认证方法。当使用RSA认证时,代理程序可以被用于单点登录。代理程序可以在PC,便携机,或终端上运行,当被认证身份加入到代理程序中,如果该代理程序有新的子连结产生,则继承原有连结的认证。远程系统往往需要一个SSH服务器,用以与代理程序通信。

SSH包括如下的层次结构:

SSH-CONN 连接协议
SSH-USERAUTH 用户认证协议
SSH-TRANS 传输层协议
TCP/IP TCP/IP

TCP/IP:为上层提供底层(不安全的)可靠的数据流;
SSH-TRANS:提供服务器身份认证和完整性;
SSH-USERAUTH:为服务器鉴别客户端用户;
SSH-CONN:把加密通道分化成多个逻辑通道。

TCP/IP在具体的SSH协议中,主机密码是一个RSA私钥,用于确认主机;服务器密码也是一个RSA私钥,每小时更新。主机可以拥有多个用不同算法产生的主机密码。多个主机也可以共享同一主机密码。每个主机必须至少用每个必须的公钥算法产生一个私钥。

目前SSH使用的算法分为必需的、推荐使用的和可选用的,分别列在下面的表格中。

算法(Algorithm) 必需的(Required) 推荐(Recommended) 可选(Optional)
加密(Encryption) 3DES-CBC Blowfish-cbc
Twofish-cbc
Arcfour
Idea-cbc
Cast128-cbc
信息摘要(MAC) Hmac-SHA1 Hmac-sha-96 Hmac-md5
Hmac-md5-96
密钥交换(Key Exchange) Diffie-Hellman    
公钥(Public Key) SSH-DSS X509-v3 SPKI
pgp

利用个性化的安全代理来实现时,每个运行SSH 的主机(不管是服务器还是客户端)必须有一个安全代理程序在上面运行。例如,要获得主机密码和服务器密码,个性化代理参与如下的两部分:

密钥生成和存储:当服务器需要生成主机密码和服务器密码时,它会要求本地的安全代理来完成这一工作。本地安全代理或是自己生成密钥对,或是要求另一个安全代理来生成。SSH协议并不区分这两种情况。生成的密钥由安全代理保管,在需要时使用。
身份认证:当客户端得到主机密码或服务器密码,它要传给自己的安全代理,由安全代理负责对密码进行认证。作为认证结果,安全代理会返回"成功"或"失败"。SSH协议本身不关心有关密码的细节。稍后,如果有新的公钥算法引入SSH,只需要替换安全代理的部分。

4.4 Token-Based SSO的方案

现在被广泛使用的口令认证,比如FTP,邮件服务器的登陆认证,都可被称为"single-factor "口令的认证。这是一种简单易用的方式,同时也是一种会带来很多安全隐患的方式。比如:易于猜测,很少进行更换,一个口令在多种应用当中使用等等一会危及安全的习惯。再如,在明文传输的网络环境里,经常使用并很少更换的口令,更易于被窃取和造成危害。

RSA公司提出的一种称为SecurID的解决方案。与"single-factor "不同是是它被称之为"two-factor"双因素的认证。构成认证的第一个因素是Personnel Identification Number (PIN),即用户身份识别码,这是一串保密的数字,可由系统管理员订制。第二个要素是SecurID token,一个小型的数字发生器,这个发生器的时钟将与网络环境中提供身份鉴别的服务器(ACE)保持同步,并且与ACE上的用户数据库保持映射。数字发生器每隔一段时间(比如一分钟)产生新的数字,PIN + 同步时钟数字就是用户的登录代码。

解决方案中也有种被称为WebID的模块。在Web服务器上安装一个ACE服务器的代理程序,用来接受SecurID。当访问第一个需要认证的URL时,WebID会软件产生并加密一个标识,这个标识将在访问其他资源的时候被用到。

4.5 Agent and Broker-Based SSO解决方案

当Agent-Base的解决方案和Broker-Base的解决方案被相结合时,就结合前者的灵活性和后者的中央式管理两方面的优势。Agent-Base的好处还在于是减少了改变网络应用程序的的代价。这样,与Kerberos相比,就不需要"kerberize"化的应用程序。

这里演示一个图例:



4.6 基于网关的 SSO 解决方案

在broker-based的方案中,会在网络中放置一个"看门狗"的模型。而Gateway-Based则是另一种单点登录的方法,具体的做法是提供类似象"门"一样的网关用以安全的接入到可信的网络服务。网关可以是防火墙, 或者是专门用于通讯加密的服务器。下图是解决方案的一个模型。



在这种方案,所有的响应服务都需要放在被网关隔离的受信网段里。Client通过网关进行认证后获得接受服务的受权。如果在网关后的服务能够通过IP地址进行识别,并在网关上建立一个基于IP的规则,而这个规则如果与在网关上的用户数据库相结合,网关就可以被用于单点登录。网关将记录Client的身份不再需要冗余的认证请求,便可授权所要求的服务。由于网关可以监视并改变应用服务的数据流,所以在不修改应用服务的同时,改变认证信息,并能提供合适的访问控制。





回页首


评估当前的解决方案

呈现出的解决方案能够并且应该从若干方面来评价。最重要的是可实施性,管理,安全,和易用性。可实施性是系统的复杂性的功能并且测量现有计算系统如何能够方便的被修改成使用SSO解决方案。管理是系统在怎么容易上被使用的主管的看法。安全是估量系统是否易受攻击。使用性是系统的最终用户的观点。

5.1 Broker-based(基于经纪人)

可实施性
Broker-based解决方案的主要的问题,例如Kerberos,是确定现有哪些应用程序需要被修改的,或"kerberized"以接受票据,而对于旧系统的改造,是项艰巨的工作。

管理
集中式的管理是在Broker-based解决方案的主要好处,一个中央数据库易于进行管理。

安全性
一个Broker-base的解决方案的设计实现安全的实际水平,取决于实施。Kerberos存在有若干安全上的争论。

旧的鉴别码有可能被存储和重用。尽管时间标记可用于防止这种攻击,但在票据有效时间内仍有风险。典型的票据有效时间是八小时。

鉴别码还基于一个假设,即网络中的所有时钟基本是同步。如果能够欺骗主机,使它的正确时间发生错误,就的鉴别码则能够被重放。大多数网络时间协议是不安全的,因此将可能导致严重问题。

在Kerberos中的认证仅仅基于口令, 这样使系统在口令猜测面前显得很脆弱。攻击者收集到大量的票据,则会有很大的可能性找到口令。

最严重的是,Kerberos假设Client已被信任,而恶意的Kerberos软件可以完成Kerberos协议并记录口令来替代所有客户的Kerberos应用。任何一种安装在不安全的计算机环境中的密码软件都会面临这样的问题。

和Kerberos一样,Sesame有一样的脆弱, 也就是口令猜测攻击的危险。

KryptoKnight在密码技术上的改进应该使了它比 Kerberos 更安全。

加强Kerberos的工作包括使用PKI技术和密钥管理中心的智能卡接口。

使用性
在集中式的模型管理中,容易受到批评的是如果认证服务器宕掉,则所有的应用,所有的用户都会受到影响。

5.2 Agent-based(基于代理人)

可实施性
基于代理人的方式能够使移植变得容易,但代理程序的软件供应商需要设计和实现与原有应用程序协议的交互。

管理
单纯的代理方式不能够帮助管理,甚至使管理更难控制和分配代理软件的权利。

安全性
有强密码技术的保证,代理程序的通信应该是安全的,但问题可能出在恶意软件方面

使用性
也许象SSH一样的代理软件学习身份加载是的一个困难的概念。也可能是公钥密码学的概念本身就难以掌握,而用户往往并不具备这方面的知识更没有耐心。

5.3 Token-based

可实施性
这种方案比如WebID,因为需要在系统上增加一些新的组件,增加了管理员管理的负担。

安全性
增强了系统的安全性。

5.4 基于网关

可实施性
在确定的环境中,安装和设置一道网关是方便的。作为一个分开的部件,需要注意它的网络通信能力,而基本不会有太多的互操作性问题。唯一的问题可能是,应用程序和网关客户端软件和需要安放在网关同一侧的一台计算机上。

管理
比较而言,网关的中央用户数据库比一个broker-based的解决方案更易于管理。带来的问题是,如果若干网关被使用,那么用户数据库不能自动地被同步。

安全性
一个通讯加密服务器应该是安全,但是也可能被攻击,可能的攻击点是其操作系统,而当网关放在防火墙上,则攻击防火墙,如SYN-flooding。推荐的方式是,用分开的防火墙保护网关。

使用性
网关作为一个中心组件,它的状态同样会受到影响到整个服务的运行。

5.5 Agent and Broker-based

可实施性
使用基于代理方式,将可以简化一些在纯粹的broker-based方案中的修改。

管理
应比单纯的broker-based方案更易于管理。

安全性
代理软件需要增加安全和本地验证的功能。

使用性
方案中同样保留有中心组件。





回页首


实践应用和前景

这里介绍了一些关于SSO的模型和实现的方式,这些模型和方案将会继续的被加以改进,同样,也会有越来越多的系统将在设计的时候将一些通用的API如GSS-API或PAM等考虑进去。比如微软公司,也在他新服务器软件windows2000上,加入了对于MIT Kerberos 版本5的一些支持,当然他与一些异构的Kerberos软件之间也存在一些互操作性方面的限制,这些资料和问题的解决可以在微软公司提供的技术白皮书中找到。SUN公司也开始在其广为流传的JDK中封装对Kerberos服务的支持,在其JDK1.4(Beta release)中可以了解。

针对微软的"Passport",Sun联盟成立了旨在实现利用因特网进行交易时必需的Ubiquitous(随时随地)的单点登录(Single Sign-On)认证,进行有关标准的制订的开放性业界团体"Liberty Alliance Project"。可以预计,单点登录技术将逐步在标准的制定和竞争中逐步显示完善起来。





回页首


总结

本文介绍了关于SSO问题产生的背景,问题的范围,模型和实现。并评估了几种模型的特点和限制,希望对读者了解"单点登录"技术框架能起到帮助作用。



参考资料

  • 《Windows 2000 网络中的单次登录(简述)》
  • 《rfc2078:Generic Security Service Application Program Interface, Version 2》
  • 《SecurID: A Secure Two-Factor Authentication》
  • 《SecurID Tokens Datasheet》RSA documentation
  • 《Single Sign-On》Jani Hursti Department of Computer Science Helsinki University of Technology
  • 《PAM入门介绍》绿盟月刊
  • 《Pluggable Authentication Modules》redhat documentation


关于作者

 

本文作者金辉,曾就职于中网信息技术有限公司,人民日报《网络版》诺方信息技术有限公司,目前是北京信威时代信息技术有限责任公司的研发总监,主要从事通信和网络技术的信息安全领域的产品研究和开发和理论探索。欢迎通过 [email protected]与其联系。

你可能感兴趣的:(信息安全,服务器,authentication,网络,加密,sso,分布式计算)