摘要
本文简要介绍了(采用直观的图表形式)两种典型的基于不同密钥基础的认证体系——私钥认证协议Kerberos和分层化的公钥认证协议,剖析了各自的主要步骤和思想,进行了相应的分析和比较,提出了一定的建议,并做了未来的展望。
关键词
Kerberos 分层化的公钥认证协议 认证域 认证中心 公钥证件链
认证 票据 长票 短票 服务认证票 信息安全体系结构
一. 引言及其背景
近二十年来,随着计算机技术、通信技术、网络技术等的飞速发展,计算机系统已经普遍地进入到分布式网络系统阶段,越来越多的人力、物力和财力投入到这个必将有良好前景的领域之中,毕竟,分布式网络系统模式相对于传统的集中式、单机式系统模式,具有极其明显的优势(如高性能,资源共享,通信便捷,实时控制,风险分散等等),完全适应了信息社会的发展趋势,所以,对分布式网络系统的研究和应用理所当然地成为当今IT业的一大热点。
但我们同时应该冷静地看到,现有的许多分布式网络系统或是单纯出于方便用户使用,或是没有经过认真、充分的理论论证,都或多或少地存在这样或那样的安全隐患。对分布式网络系统的各种攻击(大致可分为攻击联网主机和攻击网络通信两种手段,也有分为主动攻击和被动攻击之说)一直都屡见不鲜,几乎所有的攻击都是利用了目前分布式网络系统的各种安全漏洞,其恶性攻击的损失也越来越大。
也正是这些原因,ISO公布的基于OSI参考模型上的“信息安全体系结构”(1989年)较完整地定义了五大类安全服务(认证+访问控制+保密性+完整性+抗否认性),其中的认证服务可以说是整个安全系统的重点和难点所在,它不仅有信源识别的基本作用,而且有验证信息完整性的副作用。建立一个较理想的认证系统,这一直是人们关心的热点。
针对现有的分布式网络系统,进行严格、反复的安全分析和测试(模拟攻击),从建立起新型的、更加安全的理论分布式网络系统模型开始,逐步构筑实用的分布式网络环境中的安全认证体系,无疑是一种必要、有效的途径。我们以下就以现今较通用的安全认证体系出发,构筑一个相对可靠、简便的分层安全认证体系。
二. 基于对称密钥的安全认证
Kerberos是一种典型的常用的用于客户机和服务器认证的私钥认证体系协议,其一大优点就是使用方便、易于实施。它是MIT(美国麻省理工学院)的Athena计划的一个部分,原义为希腊神话中守护地狱之门的一只凶猛的三头狗,意喻该协议具有及其强大的安全性能。在此我们只涉及该协议的认证(Authentication)部分(其它两大部分为Accounting和Audit)。
Kerberos解决的问题是普遍的,它通过提供中心认证服务,并应用传统的加密方法,在客户机和服务器之间构造起了一个安全桥梁(即通过要求用户对每个向服务器所要求的服务及其权限,预先经过认证中心服务器的认证合格后,才能被指定服务器所执行),在很大程度上能够消除常规的许多潜在安全问题。而且,它自身的调整和发展也是比较迅速和及时的,现在的最新版本已经达到了V5。0。
Kerberos的主要认证模型简介如下:
出于对用户实现和安全分析的考虑,Kerberos的认证中心服务任务被分配到两个相对独立的服务器——AS(认证服务器,它同时应该连接并维护一个中央数据库存放用户口令、标识等重要信息)和TGS(Ticket Granting Server)。因此整个系统将由四部分组成:AS,TGS,Client,Server。由于管理控制、政治经济和其它的因素,导致不太可能在世界范围内实现统一的Kerberos的认证中心,而每一个Kerberos的认证中心都具有或大或小的一定监管区域(不妨称为该Kerberos的认证域),所以出现了以下两种最典型的认证模式(由于Kerberos比较熟悉,所以没有以下进行详尽说明)。
1. 域内认证:
Client向本Kerberos的认证域以内的Server申请服务的过程分为三阶段6个步骤:
(以下ID **指**的系统代号,K **指**的密钥,ADc是指Client的地址)
(一)Client AS:
① Client AS: 【 ID Client || IDTGS || 时间戳a 】
其中的时间戳a是用来防回放攻击的;
② Client AS:
【 Kc加密 [ Ktgs || IDTGS || 时间戳b || 生存期长票 || 长票 ] 】
注:“长票”——
Ktgs加密 [ Ktgs || ID Client || ADc || IDTGS || 时间戳b || 生存期长票 ]
(二)Client TGS:
③ Client TGS: 【 IDServer || 长票 || 服务认证票A 】
注:“服务认证票A”—— Ktgs加密 [ ID Client || ADc || 时间戳c]
④ Client TGS:
【 Ktgs加密 [ Ks || IDServer || 时间戳d || 短票 ] 】
其中的Ks是指TGS为Client和 Server随机分配的会话密钥;
注:“短票”——
Kserver加密 [ Ks || ID Client || ADc || IDTGS || 时间戳b || 生存期长票 ]
(三)Client Server:
⑤ Client Server:
【 短票 || 服务认证票B 】
Server接收消息,解密验证Client的正确性,通过服务认证票B得到Client的有关信息,并将时间戳e + 1送回Client,供其验证之用。
注:“服务认证票B”—— Ktgs加密 [ ID Client || ADc || 时间戳e]
⑥ Client Server:
【 Ks加密 [时间戳e + 1 ] 】
2. 域间认证:
Client向本Kerberos的认证域以外的Server’’(以下都用’’代表其它Kerberos的认证域的意思)申请服务的过程分为四阶段8个步骤:
(一)Client AS: 两者之间共享Client的密钥Kc,密钥Ktgs是AS和TGS共享的,由AS传递给合法的Client
① Client AS:
【 ID Client | IDTGS || 时间戳a 】
② Client AS:
【 Kc加密 [ Ktgs || IDTGS || 时间戳b || 生存期长票 || 长票 ] 】
注:“长票”—— Ktgs加密 [ Ktgs || ID Client || Adc || IDTGS ||
时间戳b || 生存期长票 ]
(二)Client TGS:
③ Client TGS:
【 IDTGS” || 长票 || 服务认证票 】
④ Client TGS:
【 Ktgs加密 [ Ktgs” || IDTGS” || 时间戳d || 长票” ] 】
其中, Ktgs” 是认证域B和认证域A基于一定的信任关系,由TGS共享TGS’’的密钥,但这也同时导致了密钥的信任和存储问题。
(三)Client TGS’’:
⑤ Client TGS’’:
【 IDServer” || 长票” || 服务认证票 ] 】
⑥ Client TGS’’:
【 Ktgs”加密 [ KServer” || IDServer” || 时间戳e || 短票” ] 】
(四)Client Server’’:
⑦ Client Server’’:
【短票” || 服务认证票 】
Kerberos的局限性也是比较明显的,从攻击的角度来看,大致有以下几个方面(每个问题都附一些可行的解决方式):
1.时间同步问题: 这恐怕是Kerberos的最头疼的问题,因为整个Kerberos的协议都严重地依赖于时钟,而实际证明,要求在分步式系统环境中实现良好的时钟同步,是一个很难的课题。但这并不是说Kerberos没有出路可言。我们可以大胆地假定,如果能够实现一种基于安全机制的时间服务,或是研制一种相对独立于计算机和网络环境、且基于一种或几种世界标准时钟的,能够准确进行时间转化和时间服务的联机物理时钟,这种问题将得到较好的解决;
2.口令猜测问题:Kerberos的口令没有进行额外的特殊处理,以至于即使用强力攻击(即穷举法)的时间复杂度仅和口令的长度成比例,这将形成一个两难的局面:或是增加密钥长度换取更高的安全,但这会造成用户的使用困难(可以参照口令短语方式解决此困难)和增加系统加/解密开销。
3.认证域之间的信任问题:认证域之间的多级跳跃过程复杂且不明确,相互信任和协调不方便。若各Kerberos区域形成复杂或不规则的网状结构,则要求方便的域间服务,将付出极大的代价,即系统的可扩充性不强。针对这种无序的状况,应有规划有目的地建立起全球一体化的分层(树状)结构,形成良好的信任链条。
4.重放攻击的问题:
长票的生存期较长,容易被重放攻击;对短票而言,如果攻击者技术高明,任有机会重放攻击,况且攻击者可以着手破坏系统的时钟同步性。我们建议,在Kerberos引入序列号循环机制,即让传送的消息带上一定的序列号,这些序列号在由系统循环地赋予消息,再结合系统原有的生存期控制,将有效地保证一定的时间段里只能存在唯一的合法消息,从而消除了重放的可能性。当然,这必须付出一定的系统开销代价。
5.密钥的存储问题:
Kerberos认证中心要求保存大量的共享私钥,无论是管理还是更新都有很大的困难,需要特别细致的安全保护措施(甚至应采用硬件/物理方法),将付出极大的系统代价。
6.系统程序的安全性、完整性问题:
对Kerberos系统程序进行攻击,特别是恶意篡改登录程序,是有效的攻击方法。所以,必须花一定的系统代价去防范对认证系统本身的集中攻击。其中,建立高性能的防火墙和进行日志是必要的。
RSS订阅






收 藏
推 荐