APP下载

一种改进的基于SAML的安全单点登录模型研究

2011-12-20叶茂枝

中原工学院学报 2011年3期
关键词:令牌单点密钥

郭 磊,叶茂枝

(1.武夷学院,福建 武夷山354300;2.宁德师范学院,福建 宁德 352100)

近年来,随着电子政务的广泛应用和企业信息化建设的飞速发展,信息系统及各种应用已经渗透到政府、企业的方方面面,许多部门也开始了对原有工作流的改造.与此同时,大量以数据为基础,以联机分析为特点的信息系统开始出现,而这些系统之间不可避免地存在着大量的业务交叉和流程互动,在这样的背景下,就急需建立一个统一的平台,对用户和分散的业务系统进行集中管理.该平台能提供一个方便快捷、安全保障的机制来对Web资源进行统一认证授权,实现单点登录.本文结合现有单点登录模型的优点,并与SAML技术结合,提出了一个更安全、易构建的单点登录模型.

1 单点登录实现技术

1.1 单点登录

单点登录是目前政府、企业、学校使用的一种主要的资源统一管理解决方案,国外许多软件公司与组织,如CA公司、Microsoft公司等在该方面都有一些产品和标准.

电子商务的领航厂商CA公司推出了eTrust安全解决方案,为电子商务企业级平台提供单点登录.它将现有的C/S架构和B/S架构系统的访问集中处理,为现有的电子商务企业联盟的建立提供便利.

2001年 9月,SunMicrosystems与其他13家公司建立了自由联盟计划(LibertyAllianceProject),并制定了定义联盟标识的一种规范,提倡一种开放的、能够容纳多种身份认证机制的分散系统.联盟表示可以在一组信任的对等实体间共享身份认证信息,从而实现SSO.LibertyAlliance认证规范是建立在OASIS SAML规范的基础上,并扩充了OASISSAML规范.

Microsoft公司也推出了它的单点登录平台.NETPassport[1-3].用户通过Passport服务器进行身份认证,完成认证后,Passport服务器会向用户发送一个含有该用户全局认证信息的加密Cookie,然后根据用户请求生成一个与之相关的加密票据,并将票据附加在HTTP请求中,最后将用户重定向到目标站点,目标站点通过票据确认用户身份认证信息.

CAS(CentralAuthenticationServeice)是最初由Yale大学的ITS开发的一套JAVA实现的开发源代码的SSO服务.该服务使用一个JAVAWeb应用程序来实现,使用时需要将这个Web应用程序发布到一个Servlet2.3兼容的服务器上,并且服务器需要支持SSL.CAS认证的结果以XML的格式返回,能够被各种客户端读取.

Oracle9iASSSO则为多种Web平台提供统一用户身份认证框架[4].其实现单点登录的核心组件是SSOServer,它将需要整合的Web应用分为2类:伙伴应用(PartnerApplication)和外部应用(External Application).伙伴应用与SSOServer紧密结合,委托SSOServer完成用户身份认证.外部应用拥有独立的身份认证模块.SSOServer将用户登录凭证自动交到外部应用,模拟用户手工登录过程.

1.2 现有单点登录模型

现有的单点登录模型种类繁多,主要有以下3种:基于经纪人的单点登录模型(Broker-BasedSSO)、基于代理的单点登录模型(Agent-BasedSSO)、基于网关的单点登录模型(GateWay-BasedSSO).

(1)基于经纪人的单点登录模型(Broker-Based SSO).该模型均设有一个集中的认证和用户账户管理服务器,所有的客户端在访问应用系统之前,需在该服务器上进行身份认证.认证完成后,服务器会给客户端一个保护身份信息的电子凭证.客户凭此凭证即可在该认证服务器范围内的应用系统实现单点登录.该模型结构简单,但应用系统需要解析用户的电子身份凭证,这就需要对现有的应用系统进行改造,工作量大.目前采用这种模式的产品很多,如Kerberos、sesame、IBMKryptoKnight等.

(2)基于代理的单点登录模型(Agent-Based SSO).在该模型中,有一个自动为不同的应用程序认证用户身份的代理程序,这个代理程序需要根据应用设计不同功能,如它可以利用口列表或USBKEY来自动认证,从而减轻用户负担.代理程序在服务器的认证系统和客户端认证方法之间充当一个“翻译”的角色.该模型保证了通道的安全和单点登录,具有较好的灵活性和可实施性,但其需要本机存储用户凭证,这样就增加了口令泄漏的危险.该模型的典型实例是SSH.

(3)基于网关的单点登录模型(GateWay-Based SSO).在基于网关的单点登录模型中,网关是一个隔离设备,它一端连着所有的客户端,另一端连着所有的应用系统,它将外部的客户端和内部的系统资源完全地隔离开.由于网关后的各种应用系统处在同一个可信任的网络中,可使用IP地址来表示各应用系统.网关连接的用户信息数据库中建立了用户的身份标识和其被授权访问的应用系统IP地址之间的映射关系.网关只需要知道用户的身份标识,便可授权其访问相应系统,不需多余认证.该模型将所有的安全和身份认证都集中于网关,它的性能制约着单点登录系统的效率.

1.3 SAML

安全声明标记语言(SecurityAssertionMarkup Language,SAML)是由结构化信息标准促进组织(OASIS)的安全服务委员会(SSTC)提出的,用来在不同信任域之间交换安全信息.SAML为认证和授权服务提供了标准的描述,基于XML具有跨平台性,提供强大的断言(Assertion)机制,使得跨域的系统可以通过断言来进行验证,适用于Web服务的松耦合环境.

1.4 XKMS

XKMS是由 W3C 提议 ,由 Microsoft、Versign和WebMethods共同发起的一项技术,其关键目的是支持基于XML的信任Web服务的开发,该服务可用于处理和管理基于PKI的加密密钥.通过XKMS可消除使用PKI时的复杂性,使各种Web服务更加容易地与安全机制结合.

2 基于SAML的安全单点登录模型

2.1 模型设计

通过对现有模型进行分析,可见现有的单点登录模型均有一些缺陷.本文拟结合基于代理的单点登录模型与基于经纪人的单点登录模型,并采用SAML体系,设计一个可方便实现的单点登录模型.

本模型采用一个层式结构,同时支持分布式系统的授权管理和异构系统的通用型平台.在模型中的接口使用开发标准以支持各种应用,并提供用户管理、授权管理等服务,同时提供各种外部应用系统的访问接口,方便集成.模型结构如图1所示.

在模型中设置了一个权限管理数据库,它是系统权限集中管理的关键,它提供了访问控制策略的管理.访问控制策略采用基于角色的权限控制体系,实现了用户身份信息提供、协助用户产生用于身份认证的SAML认证声明等功能,并提供用户登录的应用系统授权策略.

统一认证模块是本模型的核心,它实现用户的身份认证与跨域、跨应用登录.本模块提供一个面向各种应用平台的统一认证授权接口.该接口采用基于WS-Security协议和SAML规范,为各种平台下的前端客户端提供一个统一认证授权接口API,其中包含用户信息认证与凭证生成,接收和回应认证请求,对安全令牌的组装、发送和管理等.此外,本模块还为各种应用提供验证安全令牌和提取权限信息的接口API.

图1 模型结构图

2.2 单点登录流程

在模型中,采用SAML断言为会话令牌,令牌中含有用户的身份信息和属性信息,为防篡改和冒用,对这些信息均进行了加密和数字签名,以此形成了安全的SAML令牌.接受到此令牌的服务可通过对签名的验证确认令牌发行者身份,同时也认证了访问者身份.在令牌中含有访问者的身份和属性信息.可根据这些信息与权限管理数据库联系,并获得用户访问权限.用户登录系统后,用户代理会协助用户完成以上认证过程,并在用户跨应用时实现自动登录与退出.具体登录过程如图2所示.

图2 登录流程图

(1)用户访问某个Web服务,服务向用户代理(Agent)索取用户的SAML令牌.用户代理若能提供令牌并且合法,则成功登录;若无令牌或不合法,则将用户重定向到登录界面.

(2)用户登录过程完成后,认证服务器在一定规则下,颁发给用户一个身份认证令牌,将用户重定向至用户所申请的服务.

(3)用户代理向服务提供用户身份令牌,服务向认证服务器确认用户身份后,完成登录.

在本模型中,统一认证模块是关键功能模块.在认证过程中,必须让用户跨域、跨服务时,无需重复输入用户名与密码,可实现自动登录,而这个过程可由用户代理完成.统一认证过程如下:

(4)客户代理根据用户的用户名、密码生成用户令牌UT(UserToken),并持用户令牌向认证中心认证,索取安全令牌ST(SecurityToken),在认证中心生成的ST中包含有UT及认证相关信息.为保证二者传输过程的安全性与完整性,传输过程全部使用数字签名.客户端用私钥对UT进行加密,并随机产生一对密钥,使用认证中心的公钥进行加密,使得只有通过认证中心才可以查看该密钥,保证对称密钥的安全,这个密钥将用于之后用户与认证中心之间的消息传递加密.

(5)认证中心用自己的私钥解开用户申请,获得对称密钥,并利用用户公钥对对UT进行验证,查看用户合法性.

(6)通过校验后,认证中心发放ST,ST采用认证中心自身私钥签名,而后用用户代理与认证中心之间的对称密钥进行加密.用户代理获得信息后进行解密,验证签名后得到ST.

(7)用户访问别的服务时,用户代理只需持ST即可向对应服务发起申请,服务向认证中心确认用户身份后,确认登录,实现了单点登录.

授权与认证是紧密联系的两个过程,在用户身份验证完成后,即可实现授权.在统一授权的过程中,主要是将用户的权限信息发送给服务,权限的控制则由服务实现.

本模型将将授权模块与认证模块放在同一台服务器上,这主要是考虑将权限模型进行集中描述.用户访问服务时,需持ST至中心的授权模块请求授权决策声明,而后再返回目标服务站点,通过声明申请权限授予.同样,采用数字签名保证声明的安全性.

2.3 模型安全设计

在现有的单点登录模型中,绝大部分均使用PKI是为了保证安全,但其部署十分繁琐.本文拟采用一个基于XKMS的密钥管理模型,将XML与PKI结合,使用户与复杂的PKI体系结构分离,又方便使用PKI提供的密钥服务.在本模型中,使用了XML数字签名技术让发送方提供SAML消息签名,保证ST的完整性和私密性.具体流程如下:

发送方:

(1)发送方与接收方均生成RSA密钥对,其中公钥在 XMKS服务注册处进行注册,私钥用于生成SAML数字签名.

(2)发送方将用户信息等生成散列消息,并利用私钥与散列消息生成SAML数字签名.

(3)发送方将公钥、原始消息与SAML数字签名组成签名消息并发送给接收方.

(4)发送方再生成一对对称密钥,用密钥将SAML信息加密,再用接收方的公钥加密对称密钥与SAML信息,将加密的SAML信息与对称密钥发送给接收方.

接收方:

(1)接收方收到SAML签名消息后首选验证数字签名,通过后解密声明消息,而后用原始消息计算散列消息.

(2)到XKMS处获得发送方公钥,解密SAML签名并与计算得到的散列消息进行匹配,验证散列消息的完整性.

(3)接收方用自己私钥解密得到对称密钥,用对称密钥解密得到SAML原始信息,用户认证完成.

3 安全性分析

本模型在现有模型的基础上进行改进,利用XML数字签名与加密技术来构建用户、认证服务器、Web服务三方的安全通道,引入XKMS来提供密钥管理,在较大程度地提高安全性的同时,还让整个模型更易部署.主要分析有:

(1)采用数字证书进行双向认证,使用户、认证服务器和Web服务器的合法性均得到保证.

(2)在模型中采用XML加密实现端到端的安全,并可采用时间标识来保证声明期限,可有效防止中间人攻击.

(3)为了防止信息窜改,在模型中使用散列函数进行验证,用XML签名进行保护,保证数据的完整性.

4 结 语

本文提出了一种基于SAML的改进型的单点登录模型,弥补了传统的单点登录系统与平台结合的不足,并在灵活性、可扩展等方面均有较大改善.同时,本文还提出了统一授权模型,使各种服务可更灵活地进行访问控制与权限管理.最后,本文对认证过程进行分析,让认证过程更易实现的同时,在一定程度上提高了系统安全性.

[1]戴宗坤,唐三平.VPN与网络安全[M].北京:电子工业出版社,2002.

[2]张升平,曾理.数字化校园网的构架[J].计算机工程与设计,2008(11):5137-5143.

[3]韩涛,郭荷清.Web服务安全模型的研究与实现[J].计算机工程,2006,32(10):130-134.

[4]董亮卫,汪文勇,黄鹂声.支持单点登录的统一资源管理体系研究[J].计算机应用,2006,26(5):1146-1147.

[5]万灿军,李长云.开放网络环境中面向信任的单点登录[J].计算机工程,2010,36(3):148-151.

[6]孟凡荣.网格中单点登录的研究[J].通信学报,2007,28(11):81-86.

猜你喜欢

令牌单点密钥
称金块
幻中邂逅之金色密钥
密码系统中密钥的状态与保护*
历元间载波相位差分的GPS/BDS精密单点测速算法
基于路由和QoS令牌桶的集中式限速网关
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
数字电视地面传输用单频网与单点发射的效果比较
企业信息门户单点登录方案设计
前后向平滑算法在精密单点定位/ INS 紧组合数据后处理中的应用