《Kerberos权威指南》中文精读系列:第1章 - 概述

自己的一点说明:

《Kerberos: The Definitive Guide(Kerberos权威指南)》一书,由O’Reilly出版社于2003年9月5日出版。距今已经过去了17年的时间。查看这本书在外网的评论,非常有意思,在这本书出版的头几年中(2010年之前)的评论数量,反而是少于2010年后的评论数的。曾经Kerberos对于大部分的开发人员来说都是不必关心的东西,很多人甚至都不知道这个东西的存在,通常只有服务器的运维管理人员在配置Active Directory之类的东西时才会接触到;但是随着大数据的流行,由于整个Hadoop生态圈在安全方面对于Kerberos的依赖,以及Kerberos认证必须入侵式改造代码的特点,使得其在最近十年内走进了开发人员(特别是企业级应用的开发人员)的视野,折磨了无数刚入门的大数据开发人员。

对于这样的基础软件设施的介绍书籍,这么多年过去,仍然只有这一本讲解的最系统的书籍,实在是有些尴尬。虽然这本书已经出版多年,但是Kerberos 5的协议规范早在上个世纪末就已经大致定型,这本书中大部分的章节仍然对如今的Kerberos 5非常有用。在接下来的文章中,将会对这本书中的有用章节进行中文化的翻译,对于大数据开发人员不必关心的部分,会直接进行删减。其中有些描述已经不符合现在情况的部分,本人会进行一定的注解说明,请留意。

另外本人虽然已经阅读完毕这本书,但是翻译表达实际上又是另外一码事了…翻译的蹩脚的地方,请多包涵。



第1章. 概述

你是谁?这个问题的答案很明显,至少对人类来说是这样。人类有能力通过几种感官来区分彼此;最常见的是我们通过视觉来识别我们以前见过的人。我们还可以通过其他方式来区分彼此,比如肢体语言、说话方式和口音,以及人们之间分享的秘密。甚至有研究表明,新生儿仅通过气味就能辨别母亲和其他女性。我们识别周围环境模式的能力,使得我们有能力确定或认证我们所认识的人的身份。

然而,当你把计算机代入这个画面时,情况就发生了戏剧性的变化。计算机(至少是今天的计算机)没有眼睛、耳朵或鼻子。即使它们有,目前最先进的模式识别在广泛应用下仍然是非常不准确的。虽然在这方面有很多研究,但目前最常见的人对计算机的身份验证方式,还是通过密码。密码,也被称为共享秘密,是决定“键盘后面的人是否真的是他们声称的那个人”的关键信息。虽然人类有时也使用这种共享秘密的方法——例如,一次秘密握手,或者可能是了解到鲜为人知的琐事——但计算机几乎完全使用共享秘密来验证人的身份。

目前用于身份验证的密码存在两个问题。首先是人的问题。我们不喜欢记住一长串复杂的数字、字母,甚至是组成安全密码的符号。如果让我们使用自己的设备,我们会使用简单的字典单词,甚至可能是我们配偶的名字或生日作为密码。不幸的是,一个真的不是秘密的“共享秘密”(比如你配偶的名字)很容易被想要在计算机上冒充你的攻击者猜到。更严重的问题是,即便是在公司网络中,每个人也都可以访问数十台机器,每台机器都需要自己的密码。一般来说,随着密码数量的增加,每个密码的质量都会随着下降。

第二个问题是技术问题。当你输入密码时,计算机会给你一种很安全的错觉,在屏幕上打印星号,或者什么都不打印,有时这些信息必须通过通信网络传到另一端的电脑上。计算机通过网络发送密码最常用的方法是发送“明文”密码,即未经修改的密码。如果每台计算机与它希望通信的其他计算机都有一个完全独立的、专用的连接,那没什么问题;但实际上,计算机网络是一个共享资源。在透明状态下通过网络发送密码,类似于站在一个拥挤的房间里对站在另一边的朋友大喊大叫。

Kerberos是一个网络身份验证系统,可以帮助解决这两个问题。它减少了每个用户使用整个网络时必须记住的密码数量——只需记住Kerberos密码。此外,Kerberos结合了加密和消息完整性来解决第二个问题,确保敏感的身份验证数据不会在网络上透明地发送。Kerberos是整个网络安全计划的重要组成部分,通过提供安全的身份验证机制,为最终用户和管理员提供了明显的好处。

但在进一步讨论之前,让我们先回顾一下Kerberos的历史。


起源

Kerberos一词源于希腊神话,其中包含了Cerberus的传说。Cerberus守护着冥王哈迪斯和他的妻子珀尔塞福涅统治的冥界。Cerberus长什么样取决于你问谁;赫西俄德声称Cerberus有五十个头,而阿波罗多罗斯描述他是一种奇怪的生物的混合体,有三个狗形的头,一条蛇一样的尾巴,并且背上有蛇的头。Cerberus通常被描绘成一个有三个头的生物。不管怎样,Cerberus是一个很少有人敢挑战的邪恶生物。

希腊人相信当一个人死后,他的灵魂会被送到地狱度过永恒。当所有的灵魂都被送到地狱,那些灵魂美好的人将免于遭受永恒的惩罚。Cerberus,作为地狱的守门人,确保只有死者的灵魂进入地狱,他确保灵魂一旦进入地狱就无法逃脱。

作为通往地狱的守门人,Cerberus对那些试图进入的人进行身份验证(以确定他们是死是活),并使用这种身份验证来确定是否允许进入。与古代的Cerberus一样,现代的Kerberos对那些试图访问网络资源的用户进行身份验证。

像神话中的其他伟大人物一样,Cerberus有一个致命的缺陷,使一些聪明的人能够通过Cerberus进入地狱。我们将在第6章中回顾这个传说并讨论一个这样的故事和它的现代版本。

最后,如果这个古老的神话角色被命名为Cerberus,那么为什么现代的身份验证系统称为Kerberos?简单地说,它们只是同一个单词的不同拼写。为了区分古代神话和现代软件系统,我们将把神话角色称为Cerberus,把现代软件系统称为Kerberos。

现代历史

Kerberos网络身份验证系统的现代起源要比Cerberus的古老神话更加平凡。Kerberos是20世纪80年代早期麻省理工学院(MIT)的一个研究项目。当时,麻省理工学院的教员们认识到,广泛使用并且价格低廉的计算机将会改变计算机行业。

分时模型

传统的计算机是一种大型的、昂贵的、集中的资源,终端用户可以通过串行线连接的哑终端访问它。这被称为分时模型(图1-1)。

分时模型

图1-1 分时模型

分时模型具有明显的管理优势。由于只有一台计算机(尽管很大),维护用户帐户和权限很容易。要添加用户帐户,管理员只需在计算机的密码文件中创建一个条目,用户就可以立即访问。删除帐户或更改密码也同样容易;根据定义,只有一个管理点,因为只涉及一台机器。

此外,分时模型在传输过程中不需要对密码进行加密。用户通过专用串行线连接到机器,每个用户都有自己的哑终端连接到自己的串行线。由于通信媒介不是共享的,因此一个用户无法监听另一个用户的通信,除非亲自窃听他们的串行线路。

客户端-服务器模型

分组交换计算机网络的出现极大地改变了用户与计算机的交互方式。有了计算机网络,用户在他们的桌子上都有一台便宜的计算机,通过网络连接到组织中的所有其他计算机。由于台式计算机还不是非常强大、专门的,功能更强大的服务器计算机被用来为用户提供诸如文件存储、打印和电子邮件等服务。

这种被广泛称为客户端-服务器的新计算模型为用户和管理员提供了一些独特的优势(图1-2)。终端用户的可用性得到了提高,因为桌面计算机虽然性能不是很强大,但功能上足够为服务器计算机的资源提供菜单驱动的接口;与在哑终端或行打印机上键入密码命令相比,有了显著的进步。

客户端-服务器模型

图1-2 客户端-服务器模型

然而,麻省理工学院的教师们认识到,这种新模式需要一个引人注目的新软件架构和一种新的计算思维方式:一种认识到计算能力不是集中在整个校园中的思维方式。

个人计算机和网络的出现带来的一个主要问题是终端用户客户端不再受信任。在传统的分时模型中,终端用户只有一个哑终端,根本没有处理能力。由于共享的所有用户的计算机都在系统管理员的完全控制之下,因此可以信任它。

现在,由于所有终端用户的桌子上都有价格低廉的个人电脑,系统管理员不再能够完全控制所有的计算能力;实际上,终端用户可以在他们的个人电脑上修改软件的任何部分,甚至可以替换操作系统本身。由于终端用户现在控制自己的计算机,他们可以向其他计算机发送假消息,监听网络上其他计算机之间的连接,并模拟其他用户的身份。

雅典娜项目

来说说雅典娜项目。雅典娜项目是在1983年5月一个计算机供应商联盟的支持下建立的,为期五年。雅典娜的重点是开发将计算机整合到麻省理工课程中的策略和软件。特别是,雅典娜从一开始就被设计成一个网络化的客户端-服务器系统。虽然“雅典娜项目”有一个明确的教育用途重点,但最终产生了至今仍在广泛使用几个软件包。

如前文所述,在网络上以明文传递密码类似于在拥挤的房间里大喊大叫。然而,这正是当时软件的工作方式:标准的远程登录协议(如Telnet和rlogin)通过网络以明文发送用户凭证。更糟糕的是,其他服务器软件,如rlogin,盲目地相信客户端计算机发送给它的身份。因此,不道德的用户可以(很容易地)编写假冒的rlogin客户端,以便能够冒充网络上的任何其他人。这在学术环境中是不可接受的,因为不诚实的用户可以监听网络信息来获取其他用户的密码或窃取他人的工作。

此外,现在计算资源的分散性带来了一个问题,即每个用户都可以访问网络上的多台计算机,每台计算机都需要自己的用户名和密码。这种模式与旧的分时模型形成了对比,在分时模型中,终端用户的机器通过专用的串行线连接到一台中央计算机上,只需要登录一次。

为了解决这些问题,雅典娜项目开发了用于网络身份验证的Kerberos协议。雅典娜项目的技术计划部分概述了新服务的主要目标;也就是说,将通常在大型分时模型中常见的身份验证服务,扩展到由服务器和不受信任的终端用户客户机组成的分布式网络。新的身份验证系统必须将信任集中于受到严格控制和监视的机器中,并加密这些身份验证服务器与网络上其他机器之间的任何敏感事务。

许多其他的包也来自于雅典娜项目的努力。雅典娜项目开发了X Window系统,该系统现在是每个Unix系统的图形用户界面的基础。还有与分布式计算相关的其他包,包括Hesiod分布式名称服务和Moira分布式网络管理系统。

雅典娜项目和美国及世界其他大型大学的类似项目的结合,为这些机构提供了跨越所有主要网络协议的先进的单点登录网络基础设施,包括电子邮件、文件共享、甚至即时消息传递。在您自己的网络中,通过使用Kerberos和支持Kerberos身份验证的应用程序,您也可以实现这个目标。


什么是Kerberos?

Kerberos提供的完整定义是安全的、单点登录的、可信的第三方相互身份验证服务。这是什么意思?让我们把这个定义分解一下,然后快速地描述下每个部分。

安全的

Kerberos是安全的,因为它从不在网络上明文传输密码。Kerberos的独特之处在于它使用票据、有时间限制的加密消息,这些消息可以向给定的服务器证明用户的身份,而不需要通过网络发送密码或在本地用户的硬盘上缓存密码。

单点登录的

单点登录意味着最终用户只需登录一次,就可以访问支持Kerberos的所有网络资源。一旦用户在登录会话开始时对Kerberos进行了身份验证,那么他的凭证就会透明地传递到他当天访问的所有其他资源。

可信的第三方

可信的第三方指的是Kerberos通过一个集中式身份验证服务器工作,网络中的所有系统本质上都信任这个服务器。所有身份验证请求都通过集中式Kerberos服务器路由。

相互身份验证

相互身份验证不仅确保键盘后面的人是他声称的人,而且还证明了与他通信的服务器是他声称的那个人。相互身份验证通过确保与用户通信的服务是真实的,保护了敏感信息的机密性。

这三个概念描述了Kerberos网络身份验证服务的基础。在下一章中,我们将进一步研究这些概念和相关术语。


目标

Kerberos系统有几个目标。它力求同时提高安全性和方便性。首先是将身份验证集中到一个服务器(或一组服务器)的目标。Kerberos系统通过一组集中的密钥分发中心(KDCs)进行操作。网络上的每个KDC都包含一个数据库,其中包含用户名和密码以及支持Kerberos的服务。集中这些信息可以减轻管理员的负担,因为他们现在只需要维护这个单一的用户名/密码数据库。此外,它还为安全管理员提供了一个优势,他们现在只有一小部分机器可以存储用户名和密码,因此可以对这些机器进行相应的加固和保护。

Kerberos在不安全的网络上提供了一种安全的身份验证方法。Kerberos使用加密的票据来证明终端用户和网络服务器的身份,而不是通过网络发送明文密码。这些票据由中央密钥分发中心代表希望对网络进行身份验证的用户进行生成。当使用Kerberos时,用户密码不会在网络上以明文发送。

此外,使用Kerberos可以更容易地实现“三个A”中的其他两个元素{三个A:授权(authorization)、审计(auditing)、身份验证(authentication)}。虽然Kerberos并不直接提供授权或审计服务,但是Kerberos准确识别用户和服务的能力允许程序员和管理员提供授权和审计,从而进一步增强网络的安全性。在下一章中,我们将详细讨论授权和审计到底是什么。


进化

自从作为雅典娜项目的一部分首次提出以来,现代Kerberos协议经历了几次重大修改。在每个版本中,可用性、可扩展性和安全性方面都有了很大的改进。

早期的Kerberos (v1、v2、v3)

Kerberos的早期版本(版本4之前)是在MIT内部创建和使用的,用于测试目的。这些实现包含重要的限制,并且只对检查新想法和观察开发和测试期间出现的实际问题有用。

Kerberos 4

在MIT之外分发的第一个Kerberos版本是Kerberos 4。Kerberos 4于1989年1月24日首次向公众发布,一些供应商采用了Kerberos 4,并将其包含在他们的操作系统中。此外,其他大型分布式软件项目(如Andrew文件系统)采用Kerberos 4背后的理念作为它们自己的身份验证机制。

雅典娜的技术计划中记录了Kerberos 4协议的基础。最终,协议的细节通过MIT发布的参考实现中的源代码被记录下来。

但是,由于美国政府对加密软件的出口管制限制,Kerberos 4不能出口到美国以外的地方。因为Kerberos 4使用DES加密,所以美国以外的组织不能合法地从MIT下载Kerberos 4软件。作为回应,MIT开发团队剥离了Kerberos 4中的所有加密代码,以创建一个专门的、可出口的版本。澳大利亚邦德大学的Eric Young采用了Kerberos 4的简化版本,并添加了他自己的DES实现创建了“eBones”。由于eBones包含在美国以外开发的加密软件,因此不受美国加密出口管制的限制,可以在世界任何地方合法使用。

今天,Kerberos 4仍然有几种实现。原来的MIT Kerberos 4实现现在处于维护模式,并被正式认为是“已死亡”的。在瑞典开发的kth-krb发行版仍在积极开发中,强烈建议新用户安装和使用更高级的Kerberos 5。在本书中,Kerberos 4的讨论仅限于第3章中对协议的讨论。本书的大部分内容涉及的是Kerberos的下一个版本Kerberos 5。

【译注:Kerberos 4的生命周期在2006/10/19已经宣告完全终止,详情可参阅https://web.mit.edu/kerberos/krb4-end-of-life.html

Kerberos 5

Kerberos 5是为了添加协议版本4中没有的特性和安全性增强而开发的。Kerberos 5是Kerberos协议的最新版本,并被记录在RFC 1510中。
为了纠正Kerberos 4协议中的缺陷,添加了几个新特性。包括:

  • 一个基于ASN.1的,更好的连线协议
  • 凭证转发和委托
  • 缓存重播
  • 更灵活的跨域身份验证
  • 可扩展的加密类型
  • 预身份验证

(不要担心,我们稍后将在第3章、第6章和第8章中更详细地讨论这些特性。)

除了由MIT提供的参考实现之外,还有许多其他Kerberos 5实现被开发出来,有些是商业实现,有些是开源实现。本书涉及的实现包括MIT、Heimdal、Microsoft (Windows 2000及以上)和Apple (Mac OS X及以上)。

不幸的是,尽管从2000年1月开始,围绕美国加密出口的规则在开源软件上已经放宽,但MIT的分发版仍然只对美国居民开放。

【译注:目前MIT的分发版已经对美利坚合众国出口管制条例明确规定禁止出口的国家和个人以外的用户开放,被禁止出口的国家包括但不限于古巴、伊朗、朝鲜、苏丹、叙利亚等国以及这些国家的居民和国民。详情请参考United States Export Administration Regulations (EAR), 15 CFR 730-774】

由于MIT的律师的过分谨慎,瑞典的一个小组正在开发和分发Heimdal Kerberos 5发行版,它不受任何出口管制法律的限制。

【译注:在Debian、FreeBSD和Samba中默认使用的就是Heimdal Kerberos 5,而在Red Hat中默认使用的都是MIT Kerberos】

新方向

Kerberos协议正在不断地变化和发展,以结合最新的技术和从实际实现经验中吸取的经验教训,来面对可用的计算能力不断提高而成本不断降低的新挑战。目前,Internet Engineering Task Force (IETF) Kerberos工作组的一组开发人员正在开发一组新的规范。撰写本文时,Kerberos工作组正处于编写名为Kerberos澄清文档的最后阶段,该文档将取代RFC 1510,成为新的Kerberos 5标准文档。Kerberos澄清文档还包括几个扩展Kerberos协议的新特性,为当前Kerberos 5实现的未来发展和互操作性提供了支持。

除了Kerberos澄清文档之外,Kerberos工作组还研究了Kerberos协议的几个附加扩展,这些扩展作为独立的Internet草案文档发布。其中一些扩展已经基于草案的早期版本实现了,比如微软在Windows 2000、XP和2003中包含的公钥扩展。我们将在第10章中讨论Kerberos的这些未来方向以及一些作为Internet标准提出的新扩展。

Kerberos协议的这些附加特性和改进,确保了它作为最广泛实现的单点登录身份验证协议的持续成功。此外,通过在最新版本的Microsoft Windows中采用Kerberos, Kerberos现在在中小型网络中得到了更广泛的普及。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值