分享

X.509标准简介

 浮石 2010-04-01

PKI是遵循标准的公钥基础设施,国内外有很多标准化组织为PKI的实施和应用制定了一系列的有关标准。这些标准互相关联,其中包括国际标准:X.509标准信息技术-开放系统互连-目录-第8部分:鉴别框架,编号为idt ISO/IEC 9594-8:1998 ITU-T Rec.X.509:1997。X.509标准是定义证书格式的,此外有关定义证书格式的标准还有SPKI、OrenPG及EDIFACT,它们在很大程度上是独立制定的。此外,还有为专门环境和用途制定的描述性证书标准,包括PKIX、TC68、S/MIME、IPec和TLS等,它们在某些程度上有重叠。还有证书撤销列表存储的X.500和目录服务标准。

PKI的标准规定了PKI的设计、实施和运营,规定了PKI各种角色的“游戏规则”。如果两个PKI应用程序之间要想进行交互,只有相互理解对方的数据含义,标准就提供了数据语法和语义的共同约定。其中最重要的流行标准是X.509标准,因为它定义了公钥证书的基本结构;其次是PKCS标准,它定义了数据通信协议的主要标准。这些标准定义了如何恰当地格式化私钥或者公钥。其他重要标准包括PKIX证书和CRL概要文件、IEEE P1363项目对密码算法的定义,以及IETF工作组研究的XML数字签名等。

  X.509标准

X.509是国际电信联盟-电信(ITU-T)部分标准和国际标准化组织(ISO)的证书格式标准。作为ITU-ISO目录服务系列标准的一部分,X.509是定义了公钥证书结构的基本标准。1988年首次发布,1993年和1996年两次修订。当前使用的版本是X.509 V3,它加入了扩展字段支持,这极大地增进了证书的灵活性。X.509 V3证书包括一组按预定义顺序排列的强制字段,还有可选扩展字段,即使在强制字段中,X.509证书也允许很大的灵活性,因为它为大多数字段提供了多种编码方案。X.509 V4版已经推出。

X.509标准在PKI中起到了举足轻重的作用,PKI由小变大,由原来网络封闭环境到分布式开放环境,X.509起了很大作用,可以说X.509标准是PKI的雏形。PKI是在X.509标准基础上发展起来的,研究、学习PKI的人,首先必须学习X.509标准。

X.509标准内容庞大,共分3篇13章。在此,仅就有关重要的内容加以简介,对读者学习PKI是大有裨益的。

11.1.1  综述

X.509标准综述主要介绍标准范围、引用标准、定义、约定及缩略语。

1.范围

该标准范围有如下4个方面:

— 具体说明了目录拥有的鉴别信息的形式;

— 描述如何从目录中获得鉴别信息;

— 说明如何在目录中构成和存放鉴别信息的假设;

— 定义各种应用使用请鉴别信息执行鉴别的3种方法,并描述鉴别。

该标准主要描述了两级鉴别:简单鉴别,使用口令作为自称身份的一个验证;强鉴别,包括使用密码技术形成证书。简单鉴别只提供一些有限的保护,以避免非授权的访问,只有强鉴别才可用做提供安全服务的基础。

2.引用标准

引用标准主要包括:ITU-T X.500系列标准、ISO/IEC 9594-1~10 1997、信息技术-开放系统互连-目录:

TIU-T X.600系列标准,ISO/IEC 8824-1~41994。

信息技术-抽象语法记法1(ASN.1)。

ITU-T X.800系列标准,ISO/IEC 13712-1~21994。

信息技术-远程操作:概念、模型和记法等。

3.定义

该标准定义包括:

— OSI参考模型安全体系结构定义;

— 目录模型定义;

— 鉴别框架定义。

该标准定义了下列技术术语。

(1)属性证书(Attribute Certificate):将用户的一组属性和其他信息,通过认证机构的私钥进行数字签名,使其成为不可伪造的,用于证书的扩展。

(2)鉴别令牌(Authentication Token):在强鉴别交换期间运行的信息,用于鉴别其发送者。

(3)用户证书、公钥证书、证书(User Certificate、Public key Certificate、Certificate):用户的公钥和一些其他信息,通过颁发证书机构的私钥加密,使之成为不可伪造的。

(4)CA证书(CA-Certificate):由一个CA颁发给另一个CA的证书。

(5)证书策略(Certificate Policy):已命名的一组规则,它指出证书对特定集团和具有公共安全要求的应用类别的适用性。

(6)证书用户(Certificate User):需要确切地知道另一个实体公钥的某一个实体。

(7)证书使用系统(Certificate-Using System):在本目录规范定义的并由证书用户所使用的那些功能的实现。

(8)认证机构(Certificate Authority):受用户信任的机构,以创建和分配证书。认证机构可以任意地创建用户的密钥。

(9)认证路径(Certification Path):DIT中客体证书的有序系列,它和在该路径的最初客体的公钥一起,可以被处理以获得该路径的最终客体的公钥。

(10)CRL分布点(CRL Distribution Point):通过CRL分布点所分布的CRL,可以含有某个CA颁发的证书全集中的某个子集的撤销项,或者含有多个CA的撤销项。

(11)密码体制(Cryptographic System):从明文到密文和从密文到明文的变换汇集,使用的特定变换由密钥来选定。通常用一个数学算法来定义这些变换。

(12)△-CRL(delta-CRL):仅指示自CRL颁发以来变更的一部分CRL。

(13)端实体(End Entity):不是为签署证书的目的而使用其公钥的证书主体。

(14)散列函数(Hash Function):将值从一个大的域映射到一个较小范围的一个数学函数,而且是不可逆的。

(15)密钥协定(Key Agreement):无须传送甚至是加密形式的密钥,在线协商密钥值的一种方法。

(16)单向函数(One-way Function):易于计算的一个数学函数f,但对于区域中的一个普通值y来说,要在该区域中找到满足函数f(x)=yx值,在计算上是很困难的。

(17)策略映射(Policy Mapping):当某个域中的一个CA认证了另一个域中的一个CA时,对在第二个域中的一个特定证书策略,可能被第一个CA域中的认证机构认为是等价于第一个域中的一个特定证书政策的认可。

(18)公钥(Public Key):在公开密钥体制中,用户密钥对中只有让所有用户都知道的那个密钥。

(19)私钥(Private Key):在公开密钥体制中,用户密钥对中只有用户自己所知道的密钥。

(20)简单鉴别(Simple Authentication):借助简单口令分配方法进行的鉴别。

(21)强鉴别(Strong Authentication):借助密码派生凭证方法进行的鉴别。

(22)安全策略(Security Policy):由管理安全服务和设施的使用和提供的安全机构所拟定的一组规则。

(23)信任(Trust):当第一个实体假设第二个实体完全按照第一个实体的期望进行动作时,则称第一个实体“信任”第二个实体。在鉴别框架中,“信任”的关键作用是描述鉴别实体和认证机构之间的关系;一个鉴别实体应确信它 “信任”的认证机构可以创建有效、可靠的证书。

(24)证书序列号(Certificate Serial Number):在颁发证书的CA范围内的唯一数值,该整数值无歧义地与那个CA所颁发的一个证书相关联。

对初学PKI的人来说,对上述术语概念的理解非常重要,也是以后学习PKI知识的基础。

4.约定和缩略语

(1)适用该标准的缩略语

—  CA:认证机构。

—  CRL:证书撤销列表。

—  DIB:目录信息库。

—  DIT:目录信息树。

—  DUA:目录用户代理。

—  PKCS:公开密钥密码体制。

—  DSA:数字签名算法。

(2)约定

约定证书的描述语言用9号字体的粗体Times Roman来表示ASN.1记法。该目录规范中所使用的记法定义如表11-1所示。

表11-1  记法定义及含义

   

   

Xp

用户X的公钥

Xs

用户X的私钥

Xp[I]

X的公开密钥,对信息I进行加密

Xs[I]

X的秘密密钥,对信息I进行加密

X{I}

由用户X对信息I签字,它包含信息I和附加加密摘要

CA(X)

用户X的认证机构

CAn(X)

(这里n>1CA(CA(..n次..(X)))

X1X2

由认证机构X1颁发的用户X2的证书

X1X2X2X3

一个(任意长度的)证书链,其中每一项都是一个证书,并且其认证机构产生下一个证书。该式等价于下一个证书X1Xn+1》。例如:ABBC》提供与AC》相同的能力,即给定Ap,可以从中找到Cp

X1p.X1X2

一个证书(或证书链)的拆封操作,以便从中获得一个公开密钥。这是一个中缀操作,其左操作数为一个认证机构的公开密钥,右操作数则为该认证机构颁发的一个证书。输出结果为用户的公开密钥,它们的证书为右操作数。例如:Ap·ABBC》指出一个操作,该操作使用A的公开密钥,从B的证书中获得B的公开密钥Bp,然后再通过Bp来解封C的证书。操作的最终结果即为C的公开密钥Cp

A→B

AB的认证路径由一个证书链构成,以CA(A)CA2(A)》开始,以CA(B)B》结束

注:在该表中出现的符号X、X1、X2等代替用户名,而出现的符号I则代替任意信息。

11.1.2  简单鉴别

简单鉴别提供建立在用户可辨别名、双方同意的口令,以及某个单一区域中双方有理解的口令的使用和处理方法之上的本地鉴别。简单鉴别一般只用于本地的对等实体,即一个DUA和一个DSA之间,或一个DSA与另一个DSA之间的鉴别。通常可以采用以下3种方法实现简单鉴别。

文本框:  
图11-1  无保护的简单鉴别过程

第一种方法是以清楚明确(即无保护)的方法将用户的可辨别名和口令传送给接收方,以待考察。图11-1显示了进行简单鉴别的一般过程。

目录

 
简单鉴别过程一般包括以下几个步骤。

 

 

B

 

A

 

 
① 发送方用户A将其可辨别名和口令发送给接收方用户B。

 
② 用户B将用户A声明的可辨别名和口令发送给目录,然后目录用比较操作,对照检查与用户A有关的目录项的用户口令。

③ 目录向用户B返回证实(或否认)该凭证是否有效的信息。

④ 可以向用户A发送鉴别的结果,即成功或失败信息。

第二种方法是将用户的可辨别名、口令,以及一个随机数和/或时间标记通过使用单向函数进行保护并传送。

图11-2显示了可以生成的保护标识信息的两种方法。其中,fl和f2为单向函数,它们可以相同也可以不同,并且时间标记与随机数为可选项,并服从双向协定。

A:用户的可辨别名

tA:时间标记

passwA:A的口令

qA:  随机数,可选的,带有所包含的计数

图11-2  有保护的简单鉴别信息

第三种方法是将图11-2中描述的保护信息连同一个随机数和/或时间标记一起通过使用单向函数进行保护,然后再传送。图11-3显示了有保护的简单鉴别过程。

图11-3  有保护的简单鉴别过程

简单鉴别过程包含以下步骤(最初只使用f1)。

① 发送方用户A,向用户B发送其已保护的标识信息(鉴别1),并通过使用图11-2中的单向函数f1获得保护。其中时间标记和/或随机数(当使用时)主要用于减少重放和隐藏口令。

A的口令保护形式如下:

保护1=fl(t1Aq1A,A,passwA)

传送给B的信息形式如下:

鉴别1=t1Aq1A,A,保护1

② 用户B通过使用A所提供的可辨别名、有选择的附加时间标记和/或随机数,以及ID口令的本地副本,生成保护1形式的A的口令的一个本地副本来对A提供的保护标识信息进行核对,并将此标识信息(保护1)与本地生成的值进行比较,检查是否相等。

③ 用户B核对已保护标识信息(证实或否认)并返回给用户A。

11.1.3  强鉴别

1.强鉴别的基础

X.509目录规范中采用的强鉴别方法是利用密码体系的特性,即通常所知的公钥密码体制(PKCS)来实现的。对于在该鉴别框架中使用的PKCS,必须具备这样的特性,即在密钥对中,当其中任何一个密钥作为私钥用于加密时,另一个密钥可作为公钥用于解密。它们必须满足Xp·Xs=Xs·Xp,这里Xp和Xs分别为用户X的公钥和私钥的加密和解密函数。

该鉴别框架并不强制使用某个特殊的密码体制,它适用于任何公开密码体制,并能支持今后对密码技术、数学技术或可计算能力的更新。但是,两个想要互相鉴别的用户必须支持相同的密码算法。

每个用户都可用其所拥有的私钥来标识。一个用户则可根据其通信对方是否拥有这个私钥来确定他是否确实为授权用户。这种合作的有效性取决于只有用户才拥有该私钥。

一个用户若要确定其通信对方是否拥有其用户的私钥,他自己就必须拥有该用户的公钥。用户的公钥值可以直接从目录的用户项中获得。

2.用户公钥的获得

对一个用户来说,为了信任该鉴别过程,则应从一个他信任的机构获得其他用户的公钥。

这个可被公众信任的机构,即为认证机构CA,通过使用公开密钥算法产生一个证书,并对公开密钥给予认证。

证书也称做公钥证书,具有以下特征:

— 任何访问认证机构的公钥用户,都可以得到已被认证的公钥;

— 除认证机构外,没有任何其他组织能够修改这个证书而不被查出。

由于证书本身的不可伪造性,因此可以在目录中公布,而无需对目录做任何要求,以保护这些证书。

3.数字签名

在本规范中不为数字签名规定一种通用标准,只规定在目录中用于签名权标的方法。

信息通常是将加密的信息摘要附加在该信息的后面来实现签名。信息的摘要则用一个单向散列函数产生,而加密则是用签名者私钥来执行,如图11-4所示。因此:

X{Info}=Info.Xs[h(Info)]

图11-4  数字签名

使用私钥进行加密可以保证签名不被伪造;而散列函数的单向特性则可保证信息不被调换。

已签名的信息接收方可通过以下方法来验证签名。

— 使用单向散列函数对信息进行校验。

— 将该结果与通过使用签名者的公钥对签名进行解密的结果做比较。

本鉴别框架不强求在签名时使用某种单向散列函数,但两个想要鉴别的用户应支持相同的散列函数,以确保正确地执行鉴别。

4.强鉴别规程

鉴别的基本方法在前面已论述,主要是通过出示所拥有的私钥来验证其身份。这样就可以出现多种鉴别规程,本规范定义3种规程。

(1)单向鉴别

单向鉴别应包含以下步骤,如图11-5所示。

图11-5  单向鉴别

现对各步骤说明如下。

① A产生一个不重复的随机数rA,用于检测重放攻击并防止伪造签名。

② A向B发送以下消息:

B→A, A{tA, rA, B}

这里,tA是一个时间标记,一般由两个日期组成:权标的生成时间和期满日期。另外,如果“Sgn Data”的数据为原发鉴别由数字签名者提供,则发送:

B→A, A{tA, rA, B, Sgn Data}

③ B执行下列动作:

— 获得从B→A的Ap,并检查A的证书是否过期;

— 核实签名,以保证被签名信息的完整性;

— 检查B自己是否就是潜在的接收者;

— 检查时间标记tA是否为“当前”;

— (可选)检查rA是否已被重放。

(2)双向鉴别

双向鉴别包含以下步骤,如图11-6所示。

图11-6  双向鉴别

现对各步骤说明如下。

①~③ 同“单向鉴别”。

④ B产生一个非重复的随机数rB,使用目的与rA类似。

⑤ B向A发送以下鉴别权标:

B{tB, rB, A, rA}

这里,tB“是一个与tA定义相同的时间标记。

如果“Sgn Data”的数据原发鉴别由数字签名提供,则发送:

B{tB, rB, A, rA,Sgn Data}

⑥ A执行下列动作:

— 核实签名,以保证被签名信息的完整性;

— 检查A自己是否就是潜在的接收者;

— 检查时间标记tB是否为“当前”;

 

 

 
文本框:  
图11-7  三向鉴别

— (可选)检查rB是否已被重放。

 

A

 

 

B

 
(3)三向鉴别

 

 
三向鉴别包含以下步骤,如图11-7所示。

 
现对各步骤说明如下。

 
①~⑥ 同“双向鉴别”。

⑦ 检查接收的rA是否与发送的rA相等。

⑧ A向B发送下面鉴别权标:

A{rB, B}

⑨ B执行下列动作:

— 检查签名,以保证被签名信息的完整性;

— 检查接收的rB是否与B所发送的rB相等。

5.密钥和证书的管理

(1)密钥对的生成

定义3种产生用户密钥对的方法。

— 用户自己生成密钥对。优点是用户私钥不会传播给其他实体,但这种方法要求用户有一定级别的权限。

— 密钥对由第三方生成。第三方应保证以一种安全的方式将私钥发放给用户,然后他必须销毁私钥和与密钥对生成有关的所有信息。必须采用合适的物理安全手段,以保证第三方及数据操作不被擅自篡改。

— 密钥对由CA产生。认证机构是用户所期望的可以信赖的功能实体,并且具有必要的、安全的物理安全手段。这是一种合适的选择。

(2)证书的管理

一个证书与其所描述的用户公钥的唯一的可辨别名有关。因此:

— 认证机构在为用户创建证书之前,必须要对用户的身份感到满意;

— 认证机构应保证不会向两个具有相同名字的用户颁发证书。

认证是一组可公开获得的信息,并且不需要采取什么特殊的安全手段将其传递给目录。

证书本身存在一个生命周期,当生命周期结束时,则为期满。为了提供连续的服务,CA应保证对已经或正要期满的证书进行定期更新。有如下两种做法:

— 可以设计证书的有效性,每个证书在其到达期满时,仍能有效,也允许在时间上重叠。后者可以使CA不必在许多证书同时到达期满时,再安装和分发大量的证书。

— 期满的证书通常可从目录中删除。

如果用户的私钥受到损坏,或者CA不再认证这个用户,或者CA的证书受到损害,则证书可在期满之前撤销。有4种做法:

— 撤销一个用户的证书应该让CA知道,如果合适,则应提供一个新的证书。然后CA以离线方式通知证书拥有者证书已被撤销。

—  CA必须维护以下信息:

¡ 颁发被撤销的带时间标记的证书列表;

¡ CA所知道的并由CA认证的全部撤销证书的带时间标记的列表。

— 受CA撤销列表影响的目录项的维护由目录和其用户负责。

— 在目录项中,被撤销的列表是以类型“Certificate Revocation List”和“Authority Revocation List”的属性存放的。

6.证书和CRL扩充

本节规定以下领域的扩充。

— 密码和政策信息:这些证书和CRL扩充传送关于所涉及的密钥的附加信息,包括主体密钥和颁发者密钥的密钥标识符、预期的或受限的密钥用法的指示符和证书策略的指示符。

— 主体属性和颁发者属性:这些证书和CRL扩充支持证书主体、证书颁发者或CRL颁发者不同名字形式的可替换名字。这些扩充也可传送关于证书主体的附加属性信息,以帮助证书用户确信证书主体是一个特定的个人或实体。

— 认证路径限制:这些证书扩充允许在CA证书中被包括的限制规范,即由另一CA颁发给某一个CA的证书,当包括多个证书策略时,以便于自动化处理证书路径。当对于某一环境中的不同应用而言策略不同时,或者当与外部环境发生互操作时,则多个证书策略出现了。这些限制可以限制由CA主体所颁发的证书类型,或者在认证路径上后续可以出现的证书类型。

— 基本的CRL扩充:这些CRL扩充允许CRL包括撤销原因的指示,提供一个证书的临时暂停和包括CRL颁布序列号,而该序列号允许证书的用户在来自某一个CRL颁发者的序列中检测到丢失的CRLs。

—  CRL.分布点和△-CRLs:这些证书和CRL扩充允许把来自某一个CA的完整的撤销信息集合被分配到若干独立的CRL,并且允许把来自多个CA的撤销信息被合并到某一个CRL。这些扩充还支持自先前的CRL颁发以来仅指示变化的部分CRLs的使用。

包含在证书或CRL中的任何扩充都是颁发该证书或CRL的认证机构的选项。

在证书或CRL中,扩充被标志为关键的或非关键的。如果扩充被标志为关键的,并且证书使用系统不能识别出该扩充字段类型,或者不实现扩充的语义,则那个系统应认为该证书无效。如果扩充被标志为非关键的,则不能识别出或实现那个扩充类型的证书使用系统可以处理不理睬该扩充的证书的其余部分。

在本目录规范中的扩充类型定义指出该扩充是否总是关键的、是否总是非关键的,或者是否由证书或CRL颁发者决定其关键性。要求总是非关键性的某些扩充的原因,是为了允许证书使用实现不需要使用这样的扩充,以省略对它们的支持,而不会危及所有认证机构互操作的能力。

7.获得认证的属性

用户身份被束缚在为了鉴别和标识目的公钥证书上。每个公钥证书载荷了执行某些密码函数所需的信息。被认证的与主体相关的属性,可以按独立结构来运载,并定义为属性证书(Attribute Certificate)。

(1)属性证书

属性证书是由主体的X.509公钥证书产生的一种独立结构。主体可以拥有与每个公钥证书相关的多个属性证书。不要求同一认证机构对某用户同时建立公钥证书和属性证书。其实,在很多情况下,二者经常分开责任。属性证书的格式与公钥证书的格式类似。

(2)属性证书属性

属性证书可以用来认证某些属性值,并且将它们与X.509证书进行联编,或者直接与主体的名字进行联编。

(3)属性证书匹配规则

属性证书匹配规则把所提供的值与类型Attribute Certificate的属性值做比较,该匹配规则允许比Certificate Exact Match更复杂的匹配。

(4)属性证书路径

用户可以从一个或多个认证机构获得一个或多个属性证书。每个属性证书承载了颁发证书的认证机构的名字。

(5)属性证书撤销列表

如果这些属性不再相关,则在它们期满之前,可以撤销属性证书。属性证书可以被撤销,而不影响用户的公钥证书。

以上我们简要地介绍了X.509标准的主要内容,其中关于证书标准的有关部分,请见第10章中详细论述。

11.1.4  X.509的发展

X.509是一个国际标准[X.509],在ISO/ITU-T中已经达到了标准化的最高水平,被认为是非常稳定的。然而,仍然有一些修订程序,可以对标准进行文档变更和错误修订。如今,这种修订依然还在继续,但主要是一些材料更新和对证书及证书撤销列表基础文本的最为细微的文字修订。

除了那些相对稳定的标准之外,还有很多PKI标准化工作正在开展,如特权管理基础设施PMI,对用于属性证书有关域的应用进行完善和描述。

由以上所述可见,X.509标准是PKI的雏形,PKI由局域到广域的应用,由于X.509的制定,促进了PKI的发展与完善。若想全面了解PKI的内容,首先要掌握X.509标准的全部内容,这是学习PKI技术的基础。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多