设计认证系统:四个场景中的对话

2020-05-30 01:54:04

由Theodore TS&39;o清理并转换为HTML,1997年2月。还添加了描述Kerberos协议版本5的更改的后记。

这段对话虚构了一个名为Charon的开放网络认证系统的设计。随着对话的进行,角色雅典娜和欧里庇得斯发现了开放网络环境中固有的安全问题。在Charon的设计中,每个问题都必须解决,设计也会相应地发展。雅典娜和欧里庇得斯直到对话结束才完成他们的工作。

当他们完成系统设计后,雅典娜将系统的名字改为Kerberos,巧合的是,这也是麻省理工学院雅典娜项目设计和实现的认证系统的名称。该对话系统与在德克萨斯州达拉斯举行的1988年冬季USENIX大会上展示的Kerberos:a Authentication Service for Open NetworkSystems中描述的系统有惊人的相似之处。

隔间区域雅典娜和欧里庇得斯在附近的航站楼工作。雅典娜:嗨,里普,这个分时系统太累人了。我无法完成任何工作,因为其他所有人都登录了。

雅典娜:你知道我们需要什么吗?我们需要给每个人提供他们自己的工作站,这样他们就不必担心共享计算机周期的问题。我们将使用一个网络来连接所有的工作站,这样人们就可以互相交流了。

欧里庇得斯:你见过一个典型工作站的磁盘驱动器的大小吗?分时机器上的所有软件都没有足够的空间容纳。

雅典娜:我已经想出来了。我们可以在各种服务器机器上保存系统软件的副本。当您登录到工作站时,工作站通过与其中一台服务器建立网络连接来访问系统软件。此设置允许一整组工作站使用相同的系统软件副本,并使软件更新变得方便。你不必到处跑到每个工作站。只需修改系统软件服务器即可。

欧里庇得斯:好的。你打算怎么处理个人档案?使用分时系统,我可以从任何连接到该系统的终端登录并访问我的文件。我是否可以走到任何工作站并自动获取我的文件?或者我必须像PC用户一样把我的文件保存在软盘上?我真希望不是这样。

雅典娜:我想我们可以使用其他机器来提供个人文件存储。您可以登录到任何工作站并访问您的文件。

欧里庇得斯:那印刷品呢?是不是每个工作站都有自己的打印机?你到底在花谁的钱?那电子邮件呢?您打算如何将邮件分发到所有这些工作站?

雅典娜:啊。。。很明显,我们没有钱给每个人一台打印机,但是我们可以有专门用于打印服务的机器。您将作业发送到打印服务器,打印服务器会为您打印该作业。你可以对邮件做同样的事情。有一台专门提供邮件服务的机器。你想要你的邮件,你可以联系邮件服务器并取走你的邮件。

欧里皮德斯:你的工作站系统听起来真不错,蒂娜。当我拿到我的,你知道我要做什么吗?我要找出您的用户名,让我的工作站认为我就是您。那么我会联系邮件服务器,取走您的邮件。我将联系您的文件服务器并删除您的文件,然后--。

第二天早上,欧里庇得斯的办公室。欧里庇得斯坐在他的办公桌前,看着他的邮件。雅典娜敲门。雅典娜:嗯,我已经想出了如何保护一个开放的网络环境,这样像你这样不择手段的人就不能假借他人的名义使用网络服务。

雅典娜:嗯,假设我这样说:我想要我的电子邮件,所以我联系邮件服务器,让它把邮件发送到我的工作站。实际上,我不是联系邮件服务器的实体。我正在使用一个程序联系邮件服务器并检索我的邮件,该程序是邮件服务程序的客户端。

但我不想说,每当我提到用户和网络服务器之间的交易时,客户都会做某事。我只想说我做某事,当然要记住客户程序是代表我做事情的。你觉得可以吗?

雅典娜:很好。好的,我将从陈述我已解决的问题开始。在开放的网络环境中,提供服务的机器必须能够确认请求服务的人的身份。如果我联系邮件服务器,并要求我的邮件,服务程序必须能够验证我是我声称的那个人,对吗?

雅典娜:你可以笨拙地解决这个问题,方法是要求邮件服务器在我使用密码之前要求它输入密码。我通过向服务器提供我的密码来向它证明我是谁。

欧里庇得斯:那的确很笨拙。在这样的系统中,每个服务器都必须知道您的密码。如果网络有一千个用户,那么每台服务器必须知道一千个密码。如果您想更改密码,您必须联系所有服务器并将更改通知它们。我想你的系统不会这么蠢吧。

雅典娜:我的系统并不愚蠢。它的工作原理是这样的:不仅人们有密码,服务也有密码。每个用户都知道她或他的密码,每个服务程序都知道它的密码,还有一个身份验证服务知道所有密码--每个用户的密码和每个服务的密码。身份验证服务将密码存储在单个集中式数据库中。

欧里庇得斯:是的,就是他。除非你能证明你的身份,否则他不会带你过河。

雅典娜:你又来了,瑞普,试图再次改写希腊神话。卡隆并不在乎你的身份。他只想确认你已经死了。

雅典娜:比方说你想使用一项服务,那就是邮件服务。在我的系统中,你不能使用服务,除非,啊,Charon告诉服务你就是你声称的那个人。而且,除非您已经向Charon进行了身份验证,否则您无法获得使用服务的许可。当您向Charon请求身份验证时,您必须告诉Charon您希望获得许可的服务。如果你想使用邮件服务器,你必须告诉查隆。

卡隆要求你证明你的身份。您可以通过提供您的加密密码来执行此操作。Charon获取您的密码,并将其与Charon数据库中为您注册的密码进行比较。如果两个密码匹配,Charon会认为您的身份已被证明。

Charon现在必须让邮件服务器相信您就是您所说的那个人。因为Charon知道所有的服务密码,所以它也知道邮件服务的密码。可以想象,Charon可以给您密码,您可以将其转发给邮件服务,以证明您已向Charon认证了自己。

问题是,Charon不能直接给您密码,因为这样您就知道了。下次您想要邮件时,您可以绕过Charon并使用邮件服务器,而无需正确标识您的身份。你甚至可以假扮成别人,用那个人的名字使用邮件服务器。

因此,Charon没有给你邮件服务器的密码,而是给了你一张邮件服务票。此票证包含已使用邮件服务器密码加密的用户名版本。

拿着票,您现在可以向邮局索要您的邮件了。你通过告诉邮件服务器你是谁,并提供票证来证明你就是你所说的那个人,从而提出你的请求。

服务器使用其密码解密票证,如果票证解密正确,服务器最终将使用Charon放在票证中的用户名。

服务会将此名称与您随票证一起发送的名称进行比较。如果名称匹配,邮件服务器会认为您的身份已验证,并继续向您发送邮件。

Euripides:当服务程序解密票证时,它怎么知道它已经正确解密了票证呢?

欧里庇得斯:也许你应该把服务的名字包括在机票上。这样,当服务解密票证时,它可以通过是否能在解密的票证中找到自己的名字来判断其成功与否。

欧里庇得斯:让我们假设你向查隆要一张邮件服务器票证。Charon会准备该票证,以便其中包含您的用户名Tina&34;。假设我复制该票证,因为它正在通过网络从Charon传给您。假设我让我不安全的工作站相信我的用户名是Tina。我工作站上的邮件客户端程序认为我是您。程序会以您的名义将偷来的票转发到邮件服务器。服务器对票证进行解密,并确认它是有效的。票证中的用户名与发送票证的用户名匹配。邮件服务器把您的邮件给我。。。

欧里庇得斯:但是我想我知道解决这个问题的方法。或者至少提供部分修复。我认为Charon应该在它生产的服务票中包含更多的信息。除了用户名之外,票证还应该包括用户向Charon索要票证的网络地址。这为您提供了额外的安全级别。

我来说明一下。假设我现在偷了你的邮票。票证中有您工作站的网络地址,此地址与我的工作站地址不匹配。我以你的名义把偷来的票转寄到邮件服务器。服务器程序从票据中提取用户名和网络地址,并尝试将该信息与发送票据的实体的用户名和网络地址进行匹配。用户名匹配,但网络地址不匹配。服务器拒绝了这张票,因为它显然是被偷的。

欧里庇得斯:听起来我每次想使用某项服务都得买张新票。如果我把一整天的工作都投入到工作中去,我可能会想要不止一次地收到我的邮件。我每次要取邮件都要换新票吗?如果那是真的,我不喜欢你的系统。

雅典娜:啊。。。我不明白为什么门票不能重复使用。如果你买了一张邮件服务器的票,你应该可以反复使用。例如,当邮件客户端程序以您的名义请求服务时,它会将票证副本转发到邮件服务器。

欧里庇得斯:那好多了。但我还是有问题。你似乎是在暗示,每当我想使用一项我没有门票的服务时,我都必须给查隆我的密码。我登录并想要访问我的文件。我向Charon发出了一个请求,要求提供正确的门票,这意味着我必须使用我的密码。那我想看看我的邮件。另一个对Charon的请求,我必须再次输入我的密码。现在假设我想要将我的一条邮件消息发送到打印服务器。再提出一个卡隆请求,你就会明白了。

欧里庇得斯:如果这还不够糟糕的话,考虑一下这一点:这听起来就像当你向Charon认证自己时,你以明文形式在网络上发送你的秘密密码。像你们这样的聪明人真的可以监控网络,窃取人们密码的副本。如果我有你的密码,我可以使用你名下的任何服务。雅典娜叹了口气。

第二天早上,雅典娜在咖啡区抓住了欧里庇得斯,她在他倒满杯子时拍了拍他的肩膀。雅典娜:我会先把问题再说一遍,但我会把它们颠倒过来,这样它们就会成为系统的要求。

雅典娜:第一个要求:用户只需在工作站会话开始时输入一次密码。这一要求意味着您不必在每次需要新服务票证时都输入密码。第二个要求:密码不应以明文形式通过网络发送。雅典娜:我将从第一个要求开始:你应该只用你的密码一次。我发明了一种新的网络服务,从而满足了这一要求。它被称为门票发放服务,这项服务向已经向查隆证明身份的用户发放卡隆门票。如果您有票证,您可以使用此票证授予服务,票证授予票证。

票证授予服务实际上只是Charon的一个版本,因为它可以访问Charon数据库。它是Charon的一部分,可以让您使用票证而不是密码来验证您的身份。

无论如何,身份验证系统现在的工作方式如下:您登录到一个工作站,并使用一个名为kinit的程序联系Charon服务器。你向Charon证明你的身份,Kinit程序就会给你一张罚单。

现在假设您想从邮件服务器获取邮件。您还没有邮件服务器票证,因此您可以使用票证授予为您获取邮件服务器票证。你不必使用密码来领取新机票。

欧里庇得斯:每次我需要使用另一个网络服务时,我都必须拿到一张新的门票吗?

雅典娜:不。记住,我们上次都同意门票可以重复使用。一旦你获得了一张授票门票,你就不需要再买一张了。您可以使用授予票证来获得您需要的其他票证。

欧里庇得斯:好的,这是有道理的。而且,由于您可以重复使用票证,一旦票证发放服务为您提供了特定服务的票证,您就不需要再次获得该特定票证。

欧里庇得斯:好的,到目前为止我都买了。。。只要你拿到票证时,就不必在网络上以明文形式发送你的密码。

雅典娜:就像我说的,我也解决了这个问题。问题是,当我说您必须联系Charon才能获得票证授予票证时,听起来好像您必须通过网络将密码以明文形式发送到Charon服务器。但它不一定非得是那样的。

以下是实际发生的情况。当您使用kinit程序获取票证授予票证时,kinit不会将您的密码发送到charon服务器,kinit只发送您的用户名。

雅典娜:查隆使用用户名查找你的密码。接下来,Charon构建一个包含票证授予票证的数据包。在向您发送数据包之前,Charon会使用您的密码对数据包的内容进行加密。

您的工作站收到票包。您可以输入您的密码。Kinit尝试使用您输入的密码解密票证。如果kinit成功,则您已成功向charon验证了您的身份。您现在拥有一张授予票证,该票证可以为您获得所需的其他票证。

欧里庇得斯:我不知道。。。我在试着想一想我自己。你知道,我认为你刚才描述的系统的各个部分都运行得很好。您的系统只要求我验证自己一次。此后,卡隆可以在我不知情的情况下给我开服务票。天衣无缝,在这方面天衣无缝。但是服务票的设计有一些让我感到困扰的地方。这与门票可重复使用的事实有关。现在我同意它们必须是可重复使用的,但可重复使用的票证本质上是非常危险的。

欧里庇得斯:这样看吧。假设您使用的是不安全的工作站。在登录过程中,您将获得一张邮件服务票证、一张打印服务票证和一张文件服务票证。假设您在注销时无意中将这些票证留在了工作站上。

现在假设我登录到工作站并找到那些票。我想惹麻烦,所以我让工作站以为我就是你。因为票是以您的名字开具的,我可以使用邮件客户端程序访问您的邮件,我可以使用文件服务客户端访问和删除您的文件,我可以使用打印命令在您的帐户上运行巨额账单。这一切都是因为这些票被不小心落在地上了。

没有什么能阻止我把这些票复制到我自己的地方。我可以永远继续使用它们。

雅典娜:但那是个很容易解决的问题。我们只需编写一个程序,在每次登录会话后销毁用户的票证。你不能使用已经被销毁的票。

欧里庇得斯:很明显,你们的系统肯定有一个票证销毁程序,但是让用户依赖这样的程序是愚蠢的。您不能指望用户每次完成工作站会话时都会记得销毁他们的票证。即使您依赖您的用户销毁他们的票证,也要考虑以下情况。

我有一个程序,它可以监视网络,并在服务票快速通过网络时复制它们。假设我想让你成为牺牲品。我等着你开始工作站会话,我打开我的程序,复印了一堆你的票。

我等着你完成你的会话,最终你注销并离开。我摆弄着我的工作站的网络软件,更改了它的地址,使其与您获得我复制的票时正在使用的工作站的地址相匹配。我让我的工作站相信我就是你。我有您的机票、用户名和正确的网络地址。我可以重播这些票,并以您的名义使用服务。

你在结束你的工作站课程之前销毁了你的票,这都无关紧要。我偷的票只要我愿意使用就一直有效,因为您目前的票证设计没有限制您可以重复使用票证的次数,也没有限制票证的有效期。

雅典娜:哦,我明白你的意思了!车票不可能永远有效,因为那样会构成巨大的安全风险。我们必须限制车票的使用期限,或者给每张车票一定的有效期。

欧里庇得斯:没错。我认为每张票都需要两条额外的信息:指示机票有效期的寿命,以及指示Charon签发机票的日期和时间的时间戳。因此,票证应该是这样的:

Euripides:现在,当服务解密票证时,它会根据票证发送者的姓名和地址检查票证的用户名和地址,并使用时间戳和寿命信息来查看票证是否过期。

雅典娜:所以如果我在我的工作台上坐超过八个小时,我所有的票都会过期。那包括我的授票门票。所以我必须在8小时后向Charon重新认证自己的身份。

雅典娜:我想不会。所以我们和解了--票8小时后就过期了。现在我有个问题要问你。假设我从网络上复制了你们的门票--。

雅典娜:这只是为了争辩。我已经复印了你们的机票。现在我等你注销。假设你有一个医生的预约或一堂课要参加,那么你在几个小时后就结束了你的工作站课程。你真是个聪明人,在注销前把票的复印件都销毁了。但是我偷了你的票,它们的有效期大约是六个小时。这样我就有充裕的时间掠夺你的档案,打印一千份你名下的任何东西。

看,如果盗票者选择在车票过期后重播车票,终身时间戳业务运行良好。如果小偷能在那之前重播彩票的话。。。

雅典娜:和往常一样,我觉得有必要再说一遍这个问题。门票可以在有限的时间跨度内重复使用,比如8小时。如果有人偷了你的票,并选择在到期前重播,我们不能这样做。

..