证书授权CA由RA(Registration Authority)和CP(Certificate Processor)两部分组成,RA负责对证书申请者的资格审查,决定是否同意发给证书,并承担由此引起错误的一切后果。它由能承担此责任的机构担任。CP为已授权的申请者制作、发放及管理证书。承担由证书操作错误所产生的一切后果,包括失密和给非授权的用户发放证书等。
1.X.509证书的签发
X.509中采用以下符号表示CA对用户A签发的证书:
CA《A》=CA{V,SN,AI,CA,TA,A,AP}其中,V为版本;SN为序号;AI为算法标识符;CA为发放证书的机构;TA为有效期;A为证书的拥有者;AP为公钥信息。
CA为用户A签发的证书应有以下特征:
1)除A以外的任一用户只要得到CA的公钥,就能由此得到CA为该用户A签署的公钥。
2)除CA以外,任何其他人都不能以不被察觉的方式修改用户A的证书内容。
如果所有用户都由同一CA为自己签署证书,则这一CA就必须取得所有用户的信任。用户证书除了能放在目录中供他人访问外,还可以由用户直接发给其他用户。
如果用户数量极多,则仅一个CA负责为用户签署证书是不现实的,因为每一用户都必须以绝对安全的方式得到CA的公钥,以验证CA签署的证书。在用户数目极多的情况下,应有多个CA,每一CA仅为一部分用户签署证书。
设用户A已从证书发放机构W处获取了公钥证书,用户B已从V处获取了证书。如果A不知V的公钥,则B虽然能读取他的证书,但却无法验证V的签名,因此B的证书对A来说是没有用的。然而,如果W和V彼此间已经安全地交换了公钥,则A可通过以下过程获取B的公钥:
1)A从目录中获取W签署的V的证书,因A知道W的公钥,所以能验证V的证书,并从中得到V的公钥。
2)A再从目录中获取由V签署的B的证书,并由V的公钥对此验证,然后从中得到B的公钥。
这样,A通过一个证书链来获取B的公钥,证书链可表示为
W《V》V《B》
类似的,B能通过相反的证书链获取A的公钥:
V《W》W《A》
下面是一个有多个证书的证书链的例子:
X《W》W《V》V《Y》Y《Z》Z《B》
当用户A通过证书链路径取得B的公钥并通过认证,那么他就可以用B的公钥与B通信了。
2.X.509证书的吊销
当用户的证书有效期超过,或者有些用户的证书还未到截止日期就被该证书的CA吊销时,必须签发新的证书。证书未到截止日期却被吊销,可能出现了如下情况:
1)用户的私钥已泄露,或者该用户有欺诈行为。
2)用户已不再需要证书。
3)CA为该用户签署证书的私钥已泄露。
每一个CA维护着一个证书吊销列表CRL(Certificate Revocation List),如图8-8所示,其中存放所有未到期而被提前吊销的证书,包括该CA发放给用户和发放给其他CA的证书。CRL还必须经该CA签字,然后存放于目录以供他人查询。
(www.xing528.com)
图8-8 证书吊销列表
对一个CA来说,他发放的每一证书的序列号是唯一的,所以可用序列号来识别每一证书。被吊销的证书数据域就包括该证书的序列号和被吊销的日期。每一用户收到他人消息中的证书时,都必须通过目录检查这一证书是否已被吊销,以防欺骗,证书吊销牵涉的问题十分复杂。
3.X.509的认证过程
X.509认证业务有单向认证、双向认证和三向认证方式,这三种认证方式适用于不同的应用环境。下面详细介绍双向认证方式,单向认证和三向认证可在双向认证的基础上减少或添加认证步骤来完成。
(1)双向认证
设A是通信的发送者,B是通信的接收者。假定IDa、Certa、PKa、SKa分别表示A的身份、公钥证书、公钥和私钥,IDb、Certb、PKb、SKb分别表示B的身份、公钥证书、公钥和私钥。X.509中双向认证过程如图8-9所示。
图8-9 双向认证
1)用户A选择时间戳Ta和一次性随机数Na,向用户B发送使用自己的私钥SKa签名的SSKa[Ta‖Na‖IDb‖EPKb(Kab)]和公钥证书Certa,其中EPKb(Kab)表示使用B的公钥PKb对会话密钥Kab进行加密操作。
A→B:SSKa[Ta‖Na‖IDb‖EPKb(Kab)]‖Certa
2)用户B验证用户A的公钥证书Certa及签名SSKa[Ta‖Na‖IDb‖EPKb(Kab)]。验证成功后,用私钥SKb解密EPKb(Kab)得到Kab并保存。用户B选取自己的时间戳Tb和随机数Nb,并向用户A发送Certb和SSKb[Tb‖Nb‖Na‖IDa‖EPKa(Kab)]。
B→A:SSKb[Tb‖Nb‖Na‖IDa‖EPKa(Kab)]‖Certb
A收到消息后,也验证Certb和SSKb[Tb‖Nb‖Na‖IDa‖EPKa(Kab)],并核实收到的Na与1)中自己发出的Na的一致性。如果验证通过,核实无误,通信双方A和B都认证了对方,并共享了会话密钥Kab。
(2)单向认证
单向认证过程如图8-10所示,是在图8-9双向认证基础上去掉步骤2)实现的。单向认证过程中,消息是由用户A产生,并发往用户B,A向B证明了自己的身份。认证过程中也使用了时间戳以处理消息传送过程中可能出现的延迟,使用一次性随机数用以防止重放攻击,保证了消息的完整性和时效性。
图8-10 单向认证
(3)三向认证
三向认证过程如图8-11所示,是在图8-9双向认证完成后,又加上一个步骤:
3)A再对从B发来的一次性随机数Nb签名后发往B。
A→B:SSKa[Nb]
B收到签名,验证签名的有效性,并将收到的Nb与自己在第2)步送给A的Nb比较,如果相同,才完成了三向认证。
三向认证的目的是双方将收到的对方发来的一次性随机数又都返回给对方,因此双方不需检查时间戳,只需检查对方的一次性随机数即可检查出是否有重放攻击。在通信双方无法建立时钟同步时,就需使用这种方法。
图8-11 三向认证
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。