实体鉴别GB/T 15843研究(二)——GB/T 15843.2采用对称加密算法
1. 范围
- 无可信第三方(四种方案) = 两种单向鉴别方案 + 两种双向鉴别方案
表1 传递信息次数表
传递信息次数表 |
时间戳/序号 |
随机数(挑战-应答) |
单项鉴别 |
一次 |
两次 |
双向鉴别 |
两次 |
三次 |
- 有可信第三方参与(见第6章)
- 每个实体与第三方的任何一次附加通信:需增加两次消息传递
4. 要求
-
要求d):对加密算法EK和解密算法DK的要求:DK(EK(X))时能使得解密者检出数据是否被篡改。两种常用做法如下:
- 方法1:原始数据X中有足够的冗余信息;冗余信息验证通过才被接受。
- 方法2:**K推导出K1和K2,分别用于计算鉴别码T和密文C
T = MACK(1)(X), C = EK(2)( X || T)
5. 无可信第三方
准备:
- 声称方A。
- 验证方B。
- 单向**KAB(A向B发送消息时的**,B用来鉴别A)。
- 单向**KBA(B向A发送消息时的**,A用来鉴别B)。
- 这两个**KAB和KBA可以是相同的,此时为双向**,简记为KAB。
- T/NA表示A使用的时变参数,可为***NA或者时间戳TA。
- T/NB表示B使用的时变参数,可为***NB或者时间戳TB。
- 传递信息次数见表1
5.1 单向鉴别
5.1.1 单向鉴别之一次传递鉴别
步骤
步骤1:声称方A发送权标TokenAB = Text2 || EKAB(T/NA || B || Text1) 。
步骤2:B对权标TokenAB解密(需满足第4章的要求d),并验证T/NA(***NA或时间戳TA)正确性。
说明
-
-
权标TokenAB中的标识符B:
- 可选。
- 作用是防止反射攻击,敌手假冒B向A重用TokenAB。
- 不存在此种攻击的环境中可省去。
- 使用单向**时可省去。
-
权标TokenAB中的标识符B:
5.1.2 单向鉴别之两次传递鉴别
步骤
步骤1:验证方B启动鉴别过程:RB || Text1,RB为随机数,Text1可选。
步骤2:A发送权标TokenAB = Text3 || EKAB(RB || B || Text2)
-
-
- (可选)Text2可以包含随机数RA,防止可能的已知明文攻击
-
步骤3:B对TokenAB解密(需满足第4章的要求d),并验证RB是否匹配。
说明
-
-
权标TokenAB中的标识符B:
- 可选。
- 作用是防止反射攻击,敌手假冒B向A重用TokenAB。
- 不存在此种攻击的环境中可省去。
- 使用单向**时可省去。
-
权标TokenAB中的标识符B:
5.2 双向鉴别
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正确性。
说明
-
-
权标TokenAB(TokenBA)中的标识符B(A):
- 可选。
- 作用是防止反射攻击,敌手假冒B(A)向A(B)重用此权标。
- 不存在此种攻击的环境中可省去。
- 使用单向**时可省去。
- 本方案两次独立使用单向一次传递鉴别(见5.1.1),可通过适当的文本字段来进一步绑定这两次之间的信息。
-
权标TokenAB(TokenBA)中的标识符B(A):
5.2.2 双向鉴别之三次传递鉴别
本方案两次独立使用单向两次传递鉴别(见5.1.2),因此增加一次消息传递。
步骤
步骤1:B发送:RB || Text1,RB为随机数,Text1可选。
步骤2:A发送权标TokenAB = Text3 || EKAB(RA || RB || B || Text2)。
-
-
- 由于有随机数RA,因此Text2无需再引入随机数。
-
步骤3:B对TokenAB解密(需满足第4章的要求d),并验证RB是否匹配。
步骤4:B发送权标TokenBA = Text5 || EKAB(RB || RA || Text4)。
-
-
- 由于此处不可能出现反射攻击,因此不再使用标识A。
-
步骤5:A对TokenBA解密(需满足第4章的要求d),并验证RA是否匹配。
说明
-
-
权标TokenAB(TokenBA)中的标识符B(A):
- 可选。
- 作用是防止反射攻击,敌手假冒B(A)向A(B)重用此权标。
- 不存在此种攻击的环境中可省去。
- 使用单向**时可省去。
-
权标TokenAB(TokenBA)中的标识符B(A):
6. 有可信第三方
准备阶段
- A与可信第三方TP共享**KAT
- B与可信第三方TP共享**KBT
- 鉴别中先由一方向第三方申请**KAB,然后再采用5.2.1(5.2.2)的机制
6.1 四次传递双向鉴别
6.1.1 方案描述
本方案是两次普通鉴别方案的综合使用。
记号
- TVPA是A的时变参数,与通常的时变参数略有不同。它将消息1和消息2联系在一起,因此要求不可重复。要求是随机数,不重复,无需不可预测。
步骤
步骤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和步骤7,即可退化为B对A的单向鉴别。
6.1.3 方案分析(增加)
四次传递双向鉴别是普通鉴别方案的组合
-
- 步骤1—3是采用两次传递的A对TP的单向鉴别(见5.1.2)。
- 步骤4—7是采用两次传递的A和B双向鉴别(见5.2.1)。
步骤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)
其中
- EKAT (TVPA || KAB || B || Text3)中的TVPA相当于RB,KAB 是A和B的**
- EKBT (T/NTP || KAB || A || Text2)是给后面的A和B双向鉴别做准备。
步骤3:用户A验证TokenTA,提取KAB,计算TokenAB。
- 3.1 对TokenTA的EKAT(...)解密(需满足第4章的要求d),并验证时变参数TVPA的正确性,从而验证TokenTA。
这是对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 五次传递双向鉴别
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 退化为单向鉴别
-
- 去除步骤7和步骤8,即可退化为B对A的单向鉴别。
6.2.3 方案分析(增加)
五次传递双向鉴别是普通鉴别方案的组合
-
- 步骤1—6是采用两次传递的B对TP的单向鉴别(见5.1.2)。
- 步骤1和4—8是采用三次传递的A和B双向鉴别(见5.2.2)。
步骤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。
附录A 文本字段的使用
如果权标不包括(足够的)冗余,已加密的文本字段可用于提供附加冗余。
要求保密性或者数据源鉴别的任何信息都应放在该权标的加密部分。