摘要:本文档对GB/T 15843介绍的实体鉴别进行简要分析记录。GB/T 15843包括GB/T 15843.1-2008 第1部份:概述;GB/T 15843.2-2008 第2部分:采用对称加密算法的机制;GB/T 15843.3-2008 第3部分:采用数字签名技术的机制;GB/T 15843.4-2008第4部分:采用密码校验函数的机制;GB/T 15843.5-2005 第5部分:使用零知识技术的机制。
GB/T 15843系列包括
给出实体鉴别机制的一般模型。权标,实体间通信鉴别的消息。
时变参数(验证消息非重放的数据)有三种类型:
表1 传递信息次数表
传递信息次数表 |
时间戳/序号 |
随机数(挑战-应答) |
单项鉴别 |
一次 |
两次 |
双向鉴别 |
两次 |
三次 |
T = MACK(1)(X), C = EK(2)( X || T)
准备:
5.1.1 单向鉴别之一次传递鉴别
步骤
步骤1:声称方A发送权标TokenAB = Text2 || EKAB(T/NA || B || Text1) 。
步骤2:B对权标TokenAB解密(需满足第4章的要求d),并验证T/NA(序列号NA或时间戳TA)正确性。
说明
5.1.2 单向鉴别之两次传递鉴别
步骤
步骤1:验证方B启动鉴别过程:RB || Text1,RB为随机数,Text1可选。
步骤2:A发送权标TokenAB = Text3 || EKAB(RB || B || Text2)
步骤3:B对TokenAB解密(需满足第4章的要求d),并验证RB是否匹配。
说明
5.2.1 双向鉴别之两次传递鉴别
本方案两次独立使用单向一次传递鉴别(见5.1.1),因此增加一次消息传递。
步骤
步骤1:A发送权标TokenAB = Text2 || EKAB(T/NA || B || Text1) 。
步骤2:B对TokenAB解密(需满足第4章的要求d),并验证T/NA正确性。
步骤3:B发送权标TokenBA = Text4 || EKBA(T/NB || A || Text3) 。
步骤4:A对TokenBA解密(需满足第4章的要求d),并验证T/NB正确性。
说明
5.2.2 双向鉴别之三次传递鉴别
本方案两次独立使用单向两次传递鉴别(见5.1.2),因此增加一次消息传递。
步骤
步骤1:B发送:RB || Text1,RB为随机数,Text1可选。
步骤2:A发送权标TokenAB = Text3 || EKAB(RA || RB || B || Text2)。
步骤3:B对TokenAB解密(需满足第4章的要求d),并验证RB是否匹配。
步骤4:B发送权标TokenBA = Text5 || EKAB(RB || RA || Text4)。
步骤5:A对TokenBA解密(需满足第4章的要求d),并验证RA是否匹配。
说明
准备阶段
6.1.1 方案描述
本方案是两次普通鉴别方案的综合使用。
记号
步骤
步骤1:A向第三方发送TVPA || B || Text1,Text1可选。
步骤2:第三方向A发送TokenTA:
TokenTA = Text4 || EKAT (TVPA || KAB || B || Text3) || EKBT (T/NTP || KAB || A || Text2)
步骤3:用户A验证TokenTA,提取KAB,计算TokenAB。
3.1 验证TokenTA:对TokenTA的EKAT(...)解密(需满足第4章的要求d),并验证TVPA的正确性。
3.2 利用解密信息中提取KAB和TokenTA的EKBT(...)部分构造TokenAB。
TokenAB = Text6 || EKBT (T/NTP || KAB || A || Text2) || EKAB(T/NA || B || Text5)
步骤4:A发送权标TokenAB。
步骤5:用户B验证TokenAB,提取KAB,计算TokenBA。
5.1 对TokeTAB中EKBT(...)解密(需满足第4章的要求d),并验证T/NTP的正确性。
5.2 利用解密信息中提取KAB构造TokenBA = Text8 || EKAB(T/NB || A || Text7)
步骤6:B发送权标TokenBA。
步骤7:用户A验证TokenBA。A对TokenBA解密(需满足第4章的要求d),并验证T/NB的正确性,从而验证TokenBA。
6.1.2 退化为单向鉴别
6.1.3 方案分析(增加)
四次传递双向鉴别是普通鉴别方案的组合
步骤1—3是采用两次传递的A对TP的单向鉴别(见5.1.2)。
两次传递的单向鉴别原方案:
步骤1:验证方B启动鉴别过程:RB || Text1,RB为随机数,Text1可选。
步骤2:A发送权标TokenAB = Text3 || EKAB(RB || B || Text2)
本方案
步骤1:A向第三方TP发送TVPA || B || Text1,Text1可选。
其中TVPA相当于RB,B是为了说明另一方身份。
步骤2:第三方向A发送TokenTA:
TokenTA = Text4 || EKAT (TVPA || KAB || B || Text3) || EKBT (T/NTP || KAB || A || Text2)
其中
步骤3:用户A验证TokenTA,提取KAB,计算TokenAB。
这是对TP的验证
步骤4—7是采用两次传递的A和B双向鉴别(见5.2.1)。
两次传递的双向鉴别原方案:
步骤1:A发送权标TokenAB = Text2 || EKAB(T/NA || B || Text1) 。
步骤3:B发送权标TokenBA = Text4 || EKBA(T/NB || A || Text3) 。
本方案
步骤4:A发送TokenAB = Text6 || EKBT (T/NTP || KAB || A || Text2) || EKAB(T/NA || B || Text5)。
其中Text6和EKAB(...)同原方案,EKBT (..)是TP给A和B双向鉴别,照抄。
步骤5:用户B验证TokenAB,提取KAB,计算TokenBA。
其中验证流程同原方案。
步骤6:B发送TokenBA = Text8 || EKAB(T/NB || A || Text7)。
其中发送信息与原方案完全一致。
步骤7:用户A验证TokenBA。
其中验证流程同原方案。
6.2.1 方案描述
本方案是两次普通鉴别方案的综合使用。
步骤
步骤1:B向A发送RB || Text1,Text1可选。
步骤2:A向第三方发送R`A || RB || B || Text2,Text2可选。
步骤3:第三方向A发送TokenTA:
TokenTA = Text5 || EKAT (R`A || KAB || B || Text4) || EKBT (RB || KAB || A || Text3)
步骤4:用户A验证TokenTA,提取KAB,计算TokenAB。
4.1 验证TokenTA:对TokenTA的EKAT(...)解密(需满足第4章的要求d),并验证R`A的正确性。
4.2 利用解密信息中提取KAB和TokenTA的EKBT(...)部分构造TokenAB。
TokenAB = Text7 || EKBT (RB || KAB || A || Text3) || EKAB(RA || RB || Text6)
步骤5:A发送权标TokenAB。
步骤6:用户B验证TokenAB,提取KAB,计算TokenBA。
6.1 对TokeTAB中EKBT(...)解密(需满足第4章的要求d),并验证RB的正确性。
6.2 解密信息中提取KAB构造TokenBA = Text9 || EKAB(RB || RA || Text8)
步骤7:B发送权标TokenBA。
步骤8:用户A验证TokenBA。A对TokenBA解密(需满足第4章的要求d),并验证RA的正确性,从而验证TokenBA。
6.2.2 退化为单向鉴别
6.2.3 方案分析(增加)
五次传递双向鉴别是普通鉴别方案的组合
步骤1—6是采用两次传递的A对TP的单向鉴别(见5.1.2)。
两次传递的单向鉴别原方案:
步骤1:验证方B启动鉴别过程:RB || Text1,RB为随机数,Text1可选。
步骤2:A发送权标TokenAB = Text3 || EKAB(RB || B || Text2)
本方案
这里A作为中间人转发B和TP之间的信息。
步骤1:B向A发送RB || Text1,Text1可选。
步骤2:A向第三方发送R`A || RB || B || Text2,Text2可选。
A作为中间人向TP转发信息RB。
步骤3:第三方向A发送TokenTA:
TokenTA = Text5 || EKAT (R`A || KAB || B || Text4) || EKBT (RB || KAB || A || Text3)
步骤4:用户A验证TokenTA,提取KAB,计算TokenAB。
步骤5:A发送权标TokenAB。
步骤6:用户B验证TokenAB,提取KAB,计算TokenBA。
TokenTA 和中的TokenABEKBT (RB || KAB || A || Text3)是TP向B的回复。
同时B完成对TP的验证。
步骤1和4—8是采用三次传递的A和B双向鉴别(见5.2.1)。
两次传递的双向鉴别原方案:
步骤1:B发送:RB || Text1,RB为随机数,Text1可选。
步骤2:A发送权标TokenAB = Text3 || EKAB(RA || RB || B || Text2)。
步骤3:B对TokenAB解密(需满足第4章的要求d),并验证RB是否匹配。
步骤4:B发送权标TokenBA = Text5 || EKAB(RB || RA || Text4)。
步骤5:A对TokenBA解密(需满足第4章的要求d),并验证RA是否匹配。
本方案
步骤1:B向A发送RB || Text1,Text1可选。
对应原方案的步骤1。
步骤4:用户A验证TokenTA,提取KAB,计算TokenAB。
TokenAB = Text7 || EKBT (RB || KAB || A || Text3) || EKAB(RA || RB || Text6)
步骤5:A发送权标TokenAB。
EKAB(RA || RB || Text6)对应原方案的步骤2。
步骤6:用户B验证TokenAB,提取KAB,计算TokenBA。
TokenBA = Text9 || EKAB(RB || RA || Text8)
步骤7:B发送权标TokenBA。
对应原方案的步骤3-4。TokenBA与原方案相同。
步骤8:用户A验证TokenBA。A对TokenBA解密(需满足第4章的要求d),并验证RA的正确性,从而验证TokenBA。
对应原方案的步骤5。
如果权标不包括(足够的)冗余,已加密的文本字段可用于提供附加冗余。
要求保密性或者数据源鉴别的任何信息都应放在该权标的加密部分。
记号
5.1.1 一次传递鉴别
步骤
步骤1. A发送CertA(可选) || TokenAB。
TokenAB = T/NA || B || Text2 || SSA(T/NA || B || Text1)
步骤2. B验证证书有效、T/NA正确性、标识字段B正确性、签名有效性。
说明
5.1.2 两次传递鉴别
验证方B启动验证流程。
步骤
步骤1. B发送RB || Text1(可选)。
步骤2. A发送CertA(可选) || TokenAB。
TokenAB = RA || RB || B || Text3 || SSA(RA || RB || B || Text2)
步骤3. B验证证书有效、RB相符、标识字段B正确。
说明
5.2.1 两次传递鉴别
该机制独立地两次使用机制5.1.1(单向鉴定的单次传递鉴别)。
步骤
步骤1. A向B发送CertA(可选) || TokenAB :(本步骤同5.1.1步骤1)
TokenAB = T/NA || B || Text2 || SSA(T/NA || B || Text1)。
步骤2. B验证A的证书、签名、T/NA、签名数据中的B,来验证TokenAB。(本步骤同5.1.1步骤2)
步骤3. B向A发送CertB(可选) || TokenBA :(本步骤同5.1.1步骤1)
TokenBA = T/NB || A || Text4 || SSB(T/NB || A || Text3)(可选)。
步骤4. A验证B的证书、签名、T/NA、签名数据中的A,来验证TokenBA。(本步骤同5.1.1步骤2)
说明
5.2.2 三次传递鉴别
该机制两次使用机制5.1.2(单向鉴定的两次传递鉴别)。
步骤
步骤1. B向A发送RB || Text1(可选)。
步骤2. A发送CertA(可选) || TokenAB。
TokenAB = RA || RB || B || Text3 || SSA(RA || RB || B || Text2)
步骤3. B验证证书有效、RB相符、标识字段B正确。
步骤4. B发送CertB(可选) || TokenBA。
TokenBA = RB || RA || A || Text5 || SSB(RB || RA || A || Text4)
步骤5. A验证证书有效、RA相符、标识字段A正确。
说明
5.2.3 两次传递并行鉴别
这是5.1.2机制的并行,但将证书Cert在第一条消息传出,以加快鉴别流程。
步骤
步骤1 . A向B发送RA || CertA(可选) || Text1(可选)。
步骤1*. B向A发送RB || CertB(可选) || Text2(可选)。
步骤2. 验证对方证书有效。
步骤3 . A向B发送TokenAB
TokenAB = RA || RB || B || Text3 || SSA(RA || RB || B || Text2)
步骤3* B向A发送TokenBA。
TokenBA = RB || RA || A || Text5 || SSB(RB || RA || A || Text4)
步骤4. 验证签名正确性、随机数匹配、标识字段正确。
说明
记号
声称方A和验证方B共享两个单向密钥KAB(A向B发送消息时使用,用于B对A进行鉴别)和KBA(B向A发送消息时使用,用于A对B进行鉴别)。这两个密钥相等时就退化为一个双向密钥,仍记为KAB。
5.1.1 一次传递鉴别
步骤
步骤1. A向B发送TokenAB。
TokenAB = T/NA || Text2 || fKAB(T/NA || B || Text1)
步骤2. B计算并验证fKAB(T/NA || B || Text1),验证B、T/NA的正确性。
说明
5.1.2 两次传递鉴别
步骤(验证方B启动此流程并验证A)
步骤1. B向A发送RB || Text1(可选)。
步骤2. A发送TokenAB = Text3 || fKAB(RB || B || Text2)
步骤3. B计算并验证fKAB(T/NA || B || Text1),验证B、RB的正确性。
说明
5.2.1采用5.1.1的机制实现相互鉴别。5.2.2采用5.1.2的机制实现相互鉴别。
5.2.1 两次传递鉴别
步骤
步骤1. (同5.1.1步骤1)A向B发送TokenAB。
TokenAB = T/NA || Text2 || fKAB(T/NA || B || Text1)
步骤2. (同5.1.1步骤2)B计算并验证fKAB(T/NA || B || Text1),验证B、T/NA的正确性。
步骤3. (同5.1.1步骤1)B向A发送TokenBA。
TokenAB = T/NB || Text4 || fKBA(T/NB || A || Text3)
步骤4. (同5.1.1步骤2)A计算并验证fKBA(T/NB || A || Text3),验证A、T/NB的正确性。
说明
5.2.2 三次传递鉴别
验证方B启动此流程并验证A。
步骤
步骤1. B向A发送RB || Text1(可选)。
步骤2. A向B发送TokenAB = RA || Text3 || fKAB(RA || RB || B || Text2)
步骤3. B计算并验证fKAB(RA || RB || B || Text2),验证B、RB的正确性。
步骤4. B向A发送TokenBA = Text5 || fKBA(RB || RA || Text4)
步骤5. A计算并验证fKBA(RB || RA || Text4),验证A、RA的正确性。
说明