单点登录技术谈.docx
- 文档编号:25704417
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:19
- 大小:93.64KB
单点登录技术谈.docx
《单点登录技术谈.docx》由会员分享,可在线阅读,更多相关《单点登录技术谈.docx(19页珍藏版)》请在冰豆网上搜索。
单点登录技术谈
SingleSign-On
单点登录技术谈
金辉 (wavelanj@),研发总监,北京信威时代信息技术有限责任公司
简介:
单点登录简单说,就是通过用户的一次性鉴别登录,即可获得需访问系统和应用软件的授权,在此条件下,管理员无需修改或干涉用户登录就能方便的实施希望得到的安全控制。
这是一个为了能够在分布式计算机环境中,安全和方便的鉴别用户而产生的课题。
本文将讨论单点登录的不同模型,提出真实可行的方案,并且评估这些模型和方案。
介绍
1.1背景
随着信息技术和网络技术的发展,各种应用服务的不断普及,用户每天需要登录到许多不同的信息系统,如网络、邮件、数据库、各种应用服务器等。
每个系统都要求用户遵循一定的安全策略,比如要求输入用户ID和口令。
随着用户需要登录系统的增多,出错的可能性就会增加,受到非法截获和破坏的可能性也会增大,安全性就会相应降低。
而如果用户忘记了口令,不能执行任务,就需要请求管理员的帮助,并只能在重新获得口令之前等待,造成了系统和安全管理资源的开销,降低了生产效率。
为避免这种尴尬,牢记登录信息,用户一般会简化密码,或者在多个系统中使用相同的口令,或者创建一个口令"列表"--这些都是会危及公司信息保密性的几种习惯性做法。
当这些安全风险逐步反映出来,管理员增加一些新的安全措施的时候,这些措施却在减少系统的可用性,并且会增大系统管理的复杂度。
因此,在市场上提出了这样的需求:
网络用户可以基于最初访问网络时的一次身份验证,对所有被授权的网络资源进行无缝的访问。
从而提高网络用户的工作效率,降低网络操作的费用,并提高网络的安全性。
下图,表现了安全市场中不断出现的新需求及其市场空间。
1.2研究对象
本文将介绍和总结几种不同类型的"SingleSign-On"的技术模型和方案。
1.3范围
本文的内容将限制于单点登录的技术模型和实现,涉及一些诸如加密,智能卡等技术,但不作为重点,而是希望读者已经有所了解。
回页首
理想的单点登录
在介绍实际的方案和模型前,我们先设想一个理想的系统。
从用户的视角看,虽然是在复杂的企业应用环境中,单点登录不会影响到诸如业务过程,响应效率,网络吞吐量等事情,并将互操作性方面的问题减至最少,任何事情都在顺利工作。
当一个单点登录系统被加入使用,迁移应该容易。
所有的用户能够立即学会使用这个工具。
从管理员的角度看,计算和网络环境在各个方面必须能被管理,而管理应该不引起额外的工作或安全漏洞。
管理过程应该适合组织的结构和政策。
这意味着权利和控制需要有一定的层次结构。
认证和用法的方法应能在分布式的组织环境中得到全部的贯彻而不用付出额外的努力。
所有的应用程序,无论新旧,可以不需要或只需很少的改动即可适应新的认证方式。
回页首
实现问题
上一节里,描述的是一个理想的状态,而在实际应用中,一些理论上不错的方案却在实际中无法实现,这里总结三个主要的方面:
计算环境相关的问题;组织结构的问题和电子身份认证方法的问题。
3.1与计算环境相关的问题
当前计算机环境的主要问题是,很少有系统在进行安全设计的时候参考了那些普遍通用的认证方法。
所以当新的系统实现了自己的认证和访问控制后,与旧有的认证和访问控制机制毫无什么互操作性可言。
在所有的安全解决方案里"信任"是主要的元素。
不幸地,当前的计算机系统不能被信任。
他们要么有严重的安全漏洞和错误,要么不能经受恶意攻击。
在这些不可靠的部件上运行安全软件,构筑安全的平台,是一个挑战。
另外一个问题是,系统管理员往往缺乏对复杂的网络环境中所有的服务和配置缺乏足够的认识。
3.2与组织结构相关的问题
访问授权的规则需要规定那些资源是个体用户可以或不能访问。
为简化,用户中类似的需要和权利被划分成组。
管理不同组的用户是件费力的事情,比如用户转移到别的部门,那么他的访问控制的权限也应得到及时的反映。
尤其在一些基于小组进行活动的组织中,工作上的频繁变动时有发生,但是,部门中组与组间的界定,往往是模糊的。
而当有组织结构上的模糊与计算机环境的繁复相结合时,结果是显然的。
系统安全主管必须应付一个异常复杂的情况。
3.3与电子身份相关的问题
登录到一个系统的基础是电子身份的认证。
基本上每种解决方案都有一些利弊存在。
传统的方式也是运用最为广泛的是基于口令的认证,既passwordauthentication。
而这种方式的弱点是被猜测和监听。
甚至有很多口令被记在笔记本上或就在计算机附近。
对于口令认证的改进是一次性口令。
顾名思义,仅使用一次性的口令,可以极大的降低监听带来的危险。
电子身份也可以基于智能卡,或加密算法如RSA。
卡和私钥将被口令加密保护。
一旦实施了安全认证,下一个挑战是使每个系统接受一样电子的身份。
为用户产生凭证并且自动地把它些传递给所有需要的服务。
这是可能需要实现的最艰巨的部分。
回页首
单点登录的模型和实现
这里将介绍一些关于实现单点登录的不同方法和可能。
首先,是一些常规的标准解决方案,然后,介绍一些现实中的方案。
4.1通用的标准解决方案
4.1.1通用安全服务应用程序接口(GSS-API)
关于认证和密钥分配系统的一个经常遇到的问题是,由于它要求对应用系统本身做出改动,所以经常受到的冷遇。
考虑到这一点,对一个认证和密钥分配系统来说,提供一个标准化的安全API就显得格外重要。
能做到这一点,开发人员就不必再为增加很少的安全功能而对整个应用程序动大手术了。
因此,认证系统设计领域内最主要的进展之一就是制定了标准化的安全API,即通用安全服务API(GSS-API)。
德州Austin大学的研究者们开发的安全网络编程(SNP),对GSS-API接口进行了进一步的封装,使同网络安全性有关的编程更加方便。
"GenericSecurityServiceApplicationProgramInterface"简写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(TrustedComputingBase)范围内;安全服务被以一种既适应intra-TCB调用,又适用extra-TCB调用的方式说明。
关于GSS-API的更细节的定义,可以参看RFC2025和2078。
4.1.2OSF[开放软件基金会]分布式计算环境DCE
开放软件基金会(OSF)的分布式计算环境。
DCE是一个被广泛接受的解决方案,用于开发和部署安全的、企业级的分布式计算应用,提供网络安全、透明的服务分配和跨平台通信的能力,允许在一个异构的环境中快速设计基于"主/从"或"对等"结构的应用。
它能方便地对网络提供最佳的性能和可靠的保护。
因为DCE是由主流操作系统厂商的行业协会所支持的,所以这个标准在很多计算平台上都得到了广泛的支持。
DCE核心功能现在已经被几乎所有的UNIX系统及其变种所支持,并且,在PC操作系统日益普及的今天,DCE核心服务也在PC机上变得越来越普遍。
DCE的认证管理服务是集成了基于DES私人密钥加密技术和MIT开发的Kerberos技术的身份验证。
这是一种企业级的安全解决方案,它使企业能为网络资源的使用提供安全。
保管理护和通过企业Intranet的用户和通过Internet的远程用户都可以有控制地访问这些资源。
DCE对于安全涉及到4个方面:
1.认证(authentication),
2.安全通讯(securecommunications),
3.授权(authorization),
4.和审计(auditing)。
4.1.3嵌入式认证模块,PAM
PAM(PluggableAuthenticationModules)是由Sun提出的一种用于实现应用程序的认证机制。
其核心是一套共享库,目的是提供一个框架和一套编程接口,将认证工作由程序员交给管理员,PAM允许管理员在多种认证方法之间作出选择,它能够改变本地认证方法而不需要重新编译与认证相关的应用程序,同时也便于向系统中添加新的认证手段。
PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX9.0等,并在Linux中得到广泛的应用。
一、PAM的结构
PAM的整个框架结构如下图所示:
PAM的设计目标是:
∙管理员可以选择认证方式,从简单的密码到智能卡系统。
∙可以为不同的程序配置不同的认证机制。
如使telnet使用S/Key认证。
而本机的login缺省使用一般的UNIXpassword。
∙支持程序的显示方式的需求。
如login需要基于终端的显示,而dtlogin需要X显示,而`ftp'和`telnet'需要透过网络来认证。
∙支持为一个程序配置同时使用多种认证机制。
∙可是用户在使用多种认证机制时,不必为同一个密码敲入多次。
∙可是用户在认真时需要输入多个密码。
∙当底层的认证机制改变时上层软件不需要修改。
∙结构为systemauthentication提供一个pluggable_model。
∙必须能满足现有的服务需要。
PAM的功能包括:
∙●加密口令(包括DES以外的算法);
∙●对用户进行资源限制,防止DoS攻击;
∙●允许随意Shadow口令;
∙●限制特定用户在指定时间从指定地点登录;
∙●引入概念"clientplug-inagents",使PAM支持C/S应用中的机器--机器认证成为可能。
PAM为更有效的认证方法的开发提供了便利,在此基础上可以很容易地开发出替代常规的用户名加口令的认证方法,如智能卡、指纹识别等认证方法。
4.2Broker-BasedSSO的方案
在一个基于经纪人的SSO解决方案中,有一个集中的认证和用户帐号管理的服务器。
经纪人给能被用于进一步请求的电子的身份存取。
中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的"第三方"。
4.2.1Kerberos
Kerberosv5是业界的标准网络身份验证协议,该协议是在麻省理工学院起草的,旨在给计算机网络提供"身份验证"。
Kerberos协议的基础是基于信任第三方,如同一个经济人(broker)集中的进行用户认证和发放电子身份凭证,它提供了在开放型网络中进行身份认证的方法,认证实体可以是用户或用户服务。
这种认证不依赖宿主机的操作系统或主机的IP地址,不需要保证网络上所有主机的物理安全性,并且假定数据包在传输中可被随机窃取篡改。
Kerberos协议具有以下的一些优势:
1.与授权机制相结合;
2.实现了一次性签放的机制,并且签放的票据都有一个有效期;
3.支持双向的身份认证,既服务器可以通过身份认证确认客户方的身份,而客户如果需要也可以反向认证服务方的身份;
4.支持分布式网络环境下的认证机制,通过交换"跨域密钥"来实现。
Kerberos机制的实现要求一个时钟基本同步的环境,这样需要引入时间同步机制,并且该机制也需要考虑安全性,否则攻击者可以通过调节某主机的时间实施重放攻击(ReplayAttack)。
Kerberos使用两类凭证:
票据(ticket)和鉴别码(authenticator)。
Kerberosv5票据的格式:
Tc,s=s,{c,a,v,Kc,s}Ks
Kerberosv5鉴别码的格式:
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由时间戳实现,这就带来了时间同步问题。
即使利用网络时间协议(NetworkTimeProtocol)或国际标准时间(Coordinateduniversaltime)能在一定程度上解决时间同步问题,但网络上关于时间的协议并不安全。
V5版允许nonce可以是一个数字序列,但要求它唯一。
由于服务器无法保证不同用户的nonce不冲突,偶然的冲突可能将合法用户的服务器申请当作重放攻击而拒之门外。
4.2.2Sesame
Sesame,代表欧洲安全多环境应用系统(SecureEuropeanSystemforApplicationinMultivendorEnvironment)。
是一个欧洲团体安全项目,被认为是一种欧洲版本的Kerberos。
Sesame是建造在GSS-API上,提供单点登录服务和的在分布式环境中的数据安全性。
尽管Sesame与Kerberos基于同样范例,但它们不是一对一的复制,而是在原有的设计中增加了一些新的特性。
这些包括
1.异种环境,
2.访问控制,
3.可扩展的公钥系统,
4.更好的可管理性,
5.审计,
6.委托授权。
在Kerberos中,用户首先到一个认证服务器认证自己。
从认证服务器获得标识在呈现给其他服务器以获得访问最终应用系统的授权。
而在Sesame中,这些服务器被统称为特权属性服务器。
从一个特权属性服务器,用户获得特权属性证书,最后把访问权利给需要的服务。
4.2.3IBMKryptoKnight
KryptoKnight是IBM公司的一种类似于Kerberos的鉴别和密钥分配系统。
它是一种秘密密钥协议并使用DES-CBC模式或MD5增加版。
支持四项保密功能:
∙用户鉴别
∙双方鉴别
∙密钥分配
∙数据源和数据内容的鉴别。
它和Kerberos的区别在于
∙采用单向散列函数鉴别和加密票据
∙不依靠同步时钟,而使用当前时间
∙如果甲试图和乙通信,可以允许甲发一条消息给乙,然后乙初始化密钥交换协议。
KryptoKnight极大的优化了消息数量,长度和加密的数量,而且不仅支持IP协议也支持其他通信协议如NetBIOS协议。
4.3Agent-BasedSSO方案
在一个基于代理人的解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。
这个代理程序需要设计有不同的功能。
比如,它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。
代理人能也被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个"翻译"。
一个基于代理人的解决方案的一个例子是SSH。
SSH的英文全称是SecureShell。
通过使用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
密钥交换(KeyExchange)
Diffie-Hellman
公钥(PublicKey)
SSH-DSS
X509-v3
SPKI
pgp
利用个性化的安全代理来实现时,每个运行SSH的主机(不管是服务器还是客户端)必须有一个安全代理程序在上面运行。
例如,要获得主机密码和服务器密码,个性化代理参与如下的两部分:
密钥生成和存储:
当服务器需要生成主机密码和服务器密码时,它会要求本地的安全代理来完成这一工作。
本地安全代理或是自己生成密钥对,或是要求另一个安全代理来生成。
SSH协议并不区分这两种情况。
生成的密钥由安全代理保管,在需要时使用。
身份认证:
当客户端得到主机密码或服务器密码,它要传给自己的安全代理,由安全代理负责对密码进行认证。
作为认证结果,安全代理会返回"成功"或"失败"。
SSH协议本身不关心有关密码的细节。
稍后,如果有新的公钥算法引入SSH,只需要替换安全代理的部分。
4.4Token-BasedSSO的方案
现在被广泛使用的口令认证,比如FTP,邮件服务器的登陆认证,都可被称为"single-factor"口令的认证。
这是一种简单易用的方式,同时也是一种会带来很多安全隐患的方式。
比如:
易于猜测,很少进行更换,一个口令在多种应用当中使用等等一会危及安全的习惯。
再如,在明文传输的网络环境里,经常使用并很少更换的口令,更易于被窃取和造成危害。
RSA公司提出的一种称为SecurID的解决方案。
与"single-factor"不同是是它被称之为"two-factor"双因素的认证。
构成认证的第一个因素是PersonnelIdentificationNumber(PIN),即用户身份识别码,这是一串保密的数字,可由系统管理员订制。
第二个要素是SecurIDtoken,一个小型的数字发生器,这个发生器的时钟将与网络环境中提供身份鉴别的服务器(ACE)保持同步,并且与ACE上的用户数据库保持映射。
数字发生器每隔一段时间(比如一分钟)产生新的数字,PIN+同步时钟数字就是用户的登录代码。
解决方案中也有种被称为WebID的模块。
在Web服务器上安装一个ACE服务器的代理程序,用来接受SecurID。
当访问第一个需要认证的URL时,WebID会软件产生并加密一个标识,这个标识将在访问其他资源的时候被用到。
4.5AgentandBroker-BasedSSO解决方案
当Agent-Base的解决方案和Broker-Base的解决方案被相结合时,就结合前者的灵活性和后者的中央式管理两方面的优势。
Agent-Base的好处还在于是减少了改变网络应用程序的的代价。
这样,与Kerberos相比,就不需要"kerberize"化的应用程序。
这里演示一个图例:
4.6基于网关的SSO解决方案
在broker-based的方案中,会在网络中放置一个"看门狗"的模型。
而Gateway-Based则是另一种单点登录的方法,具体的做法是提供类似象"门"一样的网关用以安全的接入到可信的网络服务。
网关可以是防火墙,或者是专门用于通讯加密的服务器。
下图是解决方案的一个模型。
在这种方案,所有的响应服务都需要放在被网关隔离的受信网段里。
Client通过网关进行认证后获得接受服务的受权。
如果在网关后的服务能够通过IP地址进行识别,并在网关上建立一个基于IP的规则,而这个规则如果与在网关上的用户数据库相结合,网关就可以被用于单点登录。
网关将记录Client的身份不再需要冗余的认证请求,便可授权所要求的服务。
由于网关可以监视并改变应用服务的数据流,所以在不修改应用服务的同时,改变认证信息,并能提供合适的访问控制。
回页首
评估当前的解决方案
呈现出的解决方案能够并且应该从若干方面来评价。
最重要的是可实施性,管理,安全,和易用性。
可实施性是系统的复杂性的功能并且测量现有计算系统如何能够方便的被修改成使用SSO解决方案。
管理是系统在怎么容易上被使用的主管的看法。
安全是估量系统是否易受攻击。
使用性是系统的最终用户的观点。
5.1Broker-based(基于经纪人)
可实施性
Broker-based解决方案的主要的问题,例如Kerberos,是确定现有哪些应用程序需要被修改的,或"kerberized"以接受票据,而对于旧系统的改造,是项艰巨的工作。
管理
集中式的管理是在Broker-based解决方案的主要好处,一个中央数据库易于进行管理。
安全性
一个Broker-base的解决方案的设计实现安全的实际水平,取决于实施。
Kerberos存在有若干
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单点 登录 技术