公钥基础设施:它没有死,只是休息一会外文翻译资料

 2022-11-22 11:11

英语原文共 19 页,剩余内容已隐藏,支付完成后下载完整资料


公钥基础设施:它没有死,只是休息一会

彼得·古特曼---奥克兰大学

文摘

尽管在贸易媒体上有热情的预测,但X.509风格的PKI到目前为止还没有达到任何显著的程度。本文着眼于这背后的一些原因,研究为什么纯粹的X.509风格的PKI可能永远不会出现在一些封闭的、高度受控的环境中,比如政府机构。另一方面,在许多情况下,证书的使用情况和应用程序的特定用途可以避免X.509的一种(错误)方法的缺点。本文研究了一些特定情况下证书的使用方法,并总结了在开始PKI项目之前要考虑的一些有用的设计规则。

1、引言

经过一些错误的开始,X.509作为一个非常灵活的PKI模型已经慢慢地发展成它现在的化身,特别是当它的功能被X.509的支持者描述的时候。但是,像其他灵活的对象一样,橡胶螺丝刀和聚苯乙烯泡沫塑料广口刀,它在试图成为所有人的东西时牺牲了一点实用性。它的主要问题是,一般来说,主要问题是由第三方CA颁发的通用身份证书市场要求通常不是很高。相反,市场已经开发并且继续发展更经济、高效、实用和富有想象力的商业模式。

不幸的是,X.509证书要解决的原始问题,对X.500目录的访问控制,

与今天需要解决的问题无关。这就造成了真实世界的业务需求和传统的X.509模型之间的严重的阻抗不匹配,因为实际的使用必须被硬塞进X.509模型中,以便使用证书。另一个复杂因素是与X.509模型相关的事实是X.500 / LDAP目录,分层结构(带有交叉认证和桥接认证),脱机撤销,以及源自其X.500起源的其他设计决策,不适合现实世界使用[1] [2] [3] [4],它们通常会使用或要求使用标准的业务工具和方法,例如关系数据库,非等级组织以及在线有效性/授权检查。

这个问题的解决方案(或者解决方案,因为有很多可能性)是将PKI设计调整到真实的世界,而不是试图约束现实世界来匹配PKI。解决问题的文献是有区别的这两种方法称为“强”和“弱”方法,其中强方法是设计用于解决特定类型的方法的问题,而弱方法是通用的,单一规格的 - 所有的方法:“一个强大的方法,像一个特定的大小扳手,旨在适应和做一种问题的最佳工作; 一个弱方法,就像一只猴子扳手一样旨在适应多种问题,但不能解决任何问题”[5]。一个相关的概念是认知契合度,匹配用于完成任务的工具和技术[6][7]。

本文的其余部分讨论了标准X.509所采用的弱方法固有的一些问题PKI模型,并提出了从简单的解决方案到设计应用程序来完全回避问题的替代方法。虽然有时声称这些问题许多是已知的,这种说法主要是存在于PKI理论家之间的民间传说。 没有PKI标准,没有RFC,没有供应商白皮书曾经提到过这些问题。 对那些没有深入PKI知识(和民间传说)的人来说,他们几乎是未知的。 这篇沦为就是为了纠正这种情况。

2.背景

PKI的前历史可以追溯到迪菲和海尔曼关于公钥加密的重要论文[8],该论文提出了一个名为公共文件的密钥目录,用户可以参考该文件来查找其他用户的公钥。公共文件通过签名保护所有与用户的通信,并且现在被称为可信目录。认识到这种方法的一些缺点(包括潜在的性能瓶颈),它为攻击者提供了一个非常吸引人的目标,而且禁用访问目录也会禁用用户通信的能力,Kohnfelder在1978年提出了证书的概念[9]。通过允许CA通过数字签名将名称绑定到密钥,然后将生成的证书存储在存储库中,从而将签名和查找功能分开。由于存储库不再需要被信任并且可以被复制,实现容错,并给出各种其他所需的属性,这消除了许多与可信目录相关的问题。

2.1 X.509

Kohnfelder的论文发表几年后,证书的使用被纳入全球X.500由垄断电信公司管理的命名实体目录。X.500目录提出了层次数据库模型(当时世界其他国家已经放弃了这种方法更强大的关系模型),通过目录的路径被定义为一系列相对专有名称(RDN)组件在一起形成一个专有名称(DN)。在路径的末尾是一个包含一个或多个包含实际数据的属性的条目。为了保护对目录的访问,提出了各种各样的访问控制机制,从简单的基于密码的措施(无论是否使用哈希来保护密码)到使用数字签名进行访问控制的相对新颖的方法。在基于签名的访问控制方面,这是设想的目录的每个部分都会附加CA,以便为访问控制创建证书

目的。 图1显示了此配置的一个示例。

最初的X.509v1证书结构非常清楚地显示了这些起源。有一个发行者DN和一个主体DN(将证书放在目录中)、一个有效期和一个公钥。没有迹象表明是否证书属于一个CA或一个最终实体(因为这个信息是从目录隐含的),密钥是什么证书可用于(只有一个用途,目录认证),证书颁发的策略根据(再次,只有一个策略,用于认证)或任何其他信息,没有它当前证书可以完整。该信息被显式地排除在证书之外,因为唯一的用途是用于目录访问控制[10]。虽然没有真正的这种类型的目录被认真部署,PKI设计师和用户从此一直不得不接受这种方法的传统。

这种方法的主要概念问题之一是,它将简单的公共密钥变成了功能、控制访问权限的票据,以及一个终端实体可以用来显示对对象的访问。功能有一个问题,即他们进行访问审查(决定谁有权访问什么,因为一个功能可以很容易地传递给其他人)和撤销非常棘手[11]。处理这个问题的一个标准(如果笨拙)的方法是更改在功能中引用的对象的名称,以使其无效。如果需要选择性撤销,则可以使用多个别名来执行对象,即每个能力。

X.500试图通过证书撤销列表(CRLs)来解决撤销问题,这是一种类似于1970年代信用卡黑名单的数字类似物,而这些黑名单又在更早的支票黑名单中被模仿。这个标准对于如何工作是相当模糊的,并且把所有的细节都留给了CA和/或目录。提供的其他选项包括简单地用新证书替换被撤销的证书,通知证书所有者“通过一些脱机程序”和各种其他方法[12]。撤销功能/证书的问题实际上非常棘手,因此本文的整个部分都致力于此。

图2显示了X.509证书使用模型的最终形式,在这种情况下,一般的数字签名验证而不是直接的目录身份验证。依赖方希望验证签名,从存储库中获取证书,从相同或另一个存储库中获取CRL,检查证书与CRL之间的关系,最后检查证书上的签名。最初,该存储库的目的是作为X.500目录,在实践中应用中,它可应用与任何文件,关系数据库,Berkeley DB,和Windows注册表,到一个硬编码的本地证书或包含在它认证的数据中的证书。有时候,它确实是从一个目录中获取的。

2.2身份与授权证书

一个证书(或者更一般的术语是一个能力)通常用于解决分布式环境中的授权问题,需要回答“用户U允许在资源R上执行操作吗?”这类问题的一个具体例子是“用户Bob允许将1000美元从银行账户中转移到123-456-789吗?”实现这种类型的操作需要三种不同的机制:身份验证、授权和审计,通常称为AAA。Kerberos已经解决了第一个问题,在第二个问题上,正如一位作者所说的,“公钥加密出现了”。然后我们都在一个兔子洞里消失了20年,我们现在才刚刚出现。公钥的影响是,我们重新进行了身份验证,但从未重新进行授权[13]。因此,传统的X.509 PKI提供了身份验证,但既没有授权也没有审计,即使在20年的工作之后,仍然没有迹象显示这两种要求甚至出现在X.509雷达上。

在抽象的术语中,X.509证书可以被看作是一个签名的n元组,它在它包含的字段上断言一个谓词p(x1, x2, x3,hellip;xn)。不幸的是,没有办法精确地指明该谓词是什么。所需谓词的一些示例可能包括has_read_access_to或can__money_from,而惟一真正的谓词是X.509证书可以提供的是tautological is_an_X509_certificate[14]。相反,SPKI证书断言由证书发行者指定的用户定义的谓词,这样依赖方就可以根据证书的内容进行有意义的授权决策[18][19]。这些谓词可能是任意复杂的,超出了上面给出的基本can__money_from示例的范围,用更专业例如can__money_from_account_x_up_to_ $Y_per_day这样的方式,这是一个用于处理ATM取款的谓词。此外,SPKI还包含了自动评估和处理这些授权决策的必要机制(SPKI甚至不需要公钥加密,也可以完全使用对称密码术实现它[15])。在X.509的世界里,仅由身份证书组成,不提供与此功能对等的功能。

2.3身份证明的问题

第2.1节给出的抽象模型虽然简单,但隐藏了许多问题。其中最大的一个反映在简单的短语“从存储库中获取证书”。由于没有实现全球分布式目录(甚至更不具有雄心的本地目录)的概念,因此也不清楚从哪里获取证书,如果您有证书,就不知道从哪里提取它的CRL。这是一个众所周知的PKI问题,被称为“哪个目录?”问题,采用的解决方案在实践中运行良好,其中包括任何可能需要的证书。例如,通常是一个S / MIME签名包括验证它所需的所有证书,并且SSL服务器与客户端的通信通常包括在内与它一起保护这些通信所需的证书。 获得一个新的证书是通过外部处理来处理的,乐队意味着(例如邮寄用户并要求提供证书)或者通过其中的懒惰更新机制应用程序会保留它们可能遇到的任何证书的副本,以防将来有用。这种方法很好地解决了证书分发问题,代价是将负载转移到更难的问题上,证书撤销问题,这在第3节中有介绍。

即使用户知道要查找哪个目录,也无法确定应使用哪个DN来查找证书,或者您搜索的许多相同名称中的哪一个属于您的密钥感兴趣。这是另一个标准的PKI问题,即“哪个John Smith?”问题。结果,后X.500形式今天正在使用的X.509将一个关键分配问题变成了一个同样棘手的名称分配问题。虽然可以通过临时措施来消除歧义,例如添加用户的最后四位数字社会安全号码到DN(正如在一个项目中使用的那样,它发现首先有相同的人,中间和姓氏),结果就是一个唯一的DN,因为没有第三个名字,所以名称查找没用党会知道如何构建它。 X.501的名称设计标准会让事情变得更加困难或更少的不允许使用自动化处理的名称形式[16],但这个问题已经在一个解决方案中得到了解决,友好的态度被大家无视设计标准。

命名问题已经在X.509框架内以类似的方式解决,并在其他框架之外解决证书设计,如PGP和SPKI / SDSI。 SDSI认识到,全球唯一的名称将永远不会工作,除了在一些特殊情况,并且所需要的只是一个在有限的社区内有意义的名称[17]。 对于例如,当社区是“美国”时,名称“约翰史密斯”是毫无意义的,但是当它是有意义的时候,社区仅限于“允许登录到此文件服务器的人员”。 然后SPKI将SDSI名称与使用公钥作为标识符来提供全球唯一性的概念[18] [19]。

PGP以较不严谨但同样有效的方式解决了问题。 用户被允许选择任何类型的标识符,他们想要的证书,通常包括一个电子邮件地址和一个用户名随附地址。 由于电子邮件地址是唯一的,并且PGP主要用于电子邮件通信,所以这个解决了相当好。 为了在内部识别密钥,PGP也使用了公钥。

实际上,PGP和SPKI都采用相同的概念模型,在特定范围内使用本地有意义的标识符域。 如果PGP的情况下该域名被隐式设置为“电子邮件地址”,那么SPKI就可以隐含该域名使用证书的社区,例如向特定服务器进行身份验证。 其他例子计划是信用卡号码,银行帐号和社会保险/税收标识符,尽管它们可能是在没有任何歧义的情况下容易混淆,在特定领域有意义应用。

另一方面,X.509不能采用这样一种简单的解决方案。由于X.509旨在成为所有的东西人们采用受限制的应用程序域并为其创建应用程序特定的解决方案题。另一方面,X.500 DNs没有适合现实世界的领域,并且绝大多数领域都没有理解使用它们的人。其结果是,除了一些精心管理的,集中控制的计划,用户采用了一种事实上的本地命名方案,他们将任何他们感觉到的东西塞进DN中,以便它变成一个(主要)没有意义的blob,其唯一目的是唯一地识别一个公钥(唯一通常有意义的元素可能与PGP一样,是电子邮件地址或URL和用户名)。作为一个有点极端的例子,在瑞典作者最近遇到了一系列看起来源于瑞典的证书,建立系统的管理员已经从其他可能的东西(大概是)复制了一个神奇的DN公式。在生成的证书中,只有通用名称和电子邮件地址才有意义。

X.509v3还添加了一个替代标识符,同样基于公钥。

所有这三种方法,其中两种通过设计和一种巧合,因此最终找到了使用a的相同解决方案本地唯一标识符,例如(隐式或显式)特定域中的电子邮件地址和用户名,以及a(概率上)从公钥导出的全局唯一blob。 鉴定问题因此大多数解决,导致下一个问题:撤销。

6.PKI设计建议

现在可以将前面各节中涉及的各种公钥基础设施问题简化为一组建议与证书一起工作。

6.1身份

选择本地有意义(在特定领域内)和全局唯一标识信息的组合。作为用户名、电子邮件地址、帐户或员工编号,或类似的值和从公钥派生的值。(2.3节)。尝试用DNs做任何有意义的事情,或多或少注定要失败。“本地有意义”这并不一定意味着对人类有意义,例如,如果你有一个授权机制。然后,这是作为本地标识符使用的逻辑选择。另一方面,如果你能工作。有了纯粹的门票,根本就没有必要为身份而烦恼。

6.2撤销

如果可能的话,设计您的PKI,以便不会被直接要求吊销证书。 撤销是非常重要又困难的问题,并且完全避免这个问题就是处理它的最简单的方法。 SET,AADS,ssh和SSL这种方法的例子(3.2节)。

如果无法完全通过设计来避免撤销,请考虑使用允许的PKI机制

证书新鲜度保证,避免了显式证书撤销的需要。 仅返回的存储库

已知良好的证书就是这种方法的一个例子(5.1节)。

如果不可能避免显式撤销,请使用在线状态查询机制。最好的机制是a。直接指示证书是否有效(第3.4条),稍微不那么有

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[22833],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。