实体鉴别GB/T 15843研究(合集)

摘要:本文档对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概况

GB/T 15843系列包括

  1. GB/T 15843.1-2008 第1部份:概述;
  2. GB/T 15843.2-2008 第2部分:采用对称加密算法的机制;
  3. GB/T 15843.3-2008 第3部分:采用数字签名技术的机制;
  4. GB/T 15843.4-2008 第4部分:采用密码校验函数的机制;
  5. GB/T 15843.5-2005 第5部分:使用零知识技术的机制。

 

 

 

GB/T 15843.1 概述

给出实体鉴别机制的一般模型。权标,实体间通信鉴别的消息。

附录B

时变参数(验证消息非重放的数据)有三种类型:

  1. 时间戳
    • 确保双方时钟同步
    • 可检测到收迫延迟
    • 接受消息:| 接收到权标的时间-权标中的时间 | < 可容忍的时间窗口
    • 验证唯一性:在当前窗口中记录所有消息的日志,拒收后续出现在同一时间窗口内的相同消息。
  2. 序号
    • 基本策略:特定编号的消息只能接受一次(或在规定时间内只接受一次)
    • 可要求附加“簿记”:声称方维护先前使用过或者将来使用仍将有效的序号。
    • 专用程序来重置/重启序号计数器
    • 不一定能检测收迫延迟
  3. 随机数
    • 可防止重放或者插空攻击
    • 随机数选自一个足够大的范围
    • 声称方使用随机数不能保证验证方能检测受迫延迟。

 

 

 

 

GB/T 15843.2采用对称加密算法

1. 范围

  1. 无可信第三方(四种方案) = 两种单向鉴别方案 + 两种双向鉴别方案

表1 传递信息次数表

传递信息次数表

时间戳/序号

随机数(挑战-应答)

单项鉴别

一次

两次

双向鉴别

两次

三次

  1. 有可信第三方参与(见第6章)
    • 每个实体与第三方的任何一次附加通信:需增加两次消息传递

4. 要求

  1. 要求d):对加密算法EK和解密算法DK的要求:DK(EK(X))时能使得解密者检出数据是否被篡改。两种常用做法如下:
    • 方法1:原始数据X中有足够的冗余信息;冗余信息验证通过才被接受。
    • 方法2:密钥K推导出K1和K2,分别用于计算鉴别码T和密文C

T = MACK(1)(X),   C = EK(2)( X || T)

5. 无可信第三方

准备:

  1. 声称方A。
  2. 验证方B。
  3. 单向密钥KAB(A向B发送消息时的密钥,B用来鉴别A)。
  4. 单向密钥KBA(B向A发送消息时的密钥,A用来鉴别B)。
  5. 这两个密钥KABKBA可以是相同的,此时为双向密钥,简记为KAB
  6. T/NA表示A使用的时变参数,可为序列号NA或者时间戳TA
  7. T/NB表示B使用的时变参数,可为序列号NB或者时间戳TB
  8. 传递信息次数见表1

5.1 单向鉴别

5.1.1 单向鉴别之一次传递鉴别

步骤

步骤1:声称方A发送权标TokenAB = Text2 || EKAB(T/NA || B || Text1)

步骤2:B权标TokenAB解密(需满足4章的要求d,并验证T/NA(序列号NA或时间戳TA)正确性。

说明

    1. 权标TokenAB中的标识符B:
      • 可选。
      • 作用是防止反射攻击,敌手假冒B向A重用TokenAB
      • 不存在此种攻击的环境中可省去。
      • 使用单向密钥时可省去。

5.1.2 单向鉴别之两次传递鉴别

实体鉴别GB/T 15843研究(合集)_第1张图片

步骤

步骤1:验证方B启动鉴别过程RB || Text1RB为随机数,Text1可选

步骤2:A发送权标TokenAB = Text3 || EKAB(RB || B || Text2)

      • (可选)Text2可以包含随机数RA,防止可能的已知明文攻击

步骤3:BTokenAB解密(需满足4章的要求d,并验证RB是否匹配。

说明

    1. 权标TokenAB中的标识符B:
      • 可选。
      • 作用是防止反射攻击,敌手假冒B向A重用TokenAB
      • 不存在此种攻击的环境中可省去。
      • 使用单向密钥时可省去。

5.2 双向鉴别

5.2.1 双向鉴别之两次传递鉴别

本方案两次独立使用单向一次传递鉴别(见5.1.1),因此增加一次消息传递。

实体鉴别GB/T 15843研究(合集)_第2张图片

步骤

步骤1:A发送权标TokenAB = Text2 || EKAB(T/NA || B || Text1)

步骤2:BTokenAB解密(需满足4章的要求d,并验证T/NA正确性。

步骤3:B发送权标TokenBA = Text4 || EKBA(T/NB || A || Text3)

步骤4:ATokenBA解密(需满足4章的要求d,并验证T/NB正确性。

说明

    1. 权标TokenABTokenBA中的标识符B(A):
      • 可选。
      • 作用是防止反射攻击,敌手假冒B(A)向A(B)重用此权标
      • 不存在此种攻击的环境中可省去。
      • 使用单向密钥时可省去。
    2. 本方案两次独立使用单向一次传递鉴别(见5.1.1),可通过适当的文本字段来进一步绑定这两次之间的信息。

5.2.2 双向鉴别之三次传递鉴别

本方案两次独立使用单向两次传递鉴别(见5.1.2),因此增加一次消息传递。

实体鉴别GB/T 15843研究(合集)_第3张图片

步骤

步骤1:B发送:RB || Text1RB为随机数,Text1可选

步骤2:A发送权标TokenAB = Text3 || EKAB(RA || RB || B || Text2)

      • 由于有随机数RA,因此Text2无需再引入随机数。

步骤3:BTokenAB解密(需满足4章的要求d,并验证RB是否匹配。

步骤4:B发送权标TokenBA = Text5 || EKAB(RB || RA || Text4)

      • 由于此处不可能出现反射攻击,因此不再使用标识A

步骤5:ATokenBA解密(需满足4章的要求d,并验证RA是否匹配。

说明

    1. 权标TokenABTokenBA中的标识符B(A):
      • 可选。
      • 作用是防止反射攻击,敌手假冒B(A)向A(B)重用此权标
      • 不存在此种攻击的环境中可省去。
      • 使用单向密钥时可省去。

6. 有可信第三方

准备阶段

  1. A与可信第三方TP共享密钥KAT
  2. B与可信第三方TP共享密钥KBT
  3. 鉴别中先由一方向第三方申请密钥KAB,然后再采用5.2.1(5.2.2)的机制

6.1 四次传递双向鉴别

6.1.1 方案描述

本方案是两次普通鉴别方案的综合使用。

实体鉴别GB/T 15843研究(合集)_第4张图片

记号

  1. TVPAA的时变参数,与通常的时变参数略有不同。它将消息1和消息2联系在一起,因此要求不可重复。要求是随机数,不重复,无需不可预测。

步骤

步骤1:A向第三方发送TVPA || B || Text1Text1可选

步骤2:第三方向A发送TokenTA

TokenTA = Text4 || EKAT (TVPA || KAB || B || Text3) || EKBT (T/NTP || KAB || A || Text2)

步骤3:用户A验证TokenTA,提取KAB,计算TokenAB

3.1 验证TokenTA:对TokenTAEKAT(...)解密(需满足4章的要求d,并验证TVPA的正确性

3.2 利用解密信息中提取KABTokenTAEKBT(...)部分构造TokenAB

TokenAB = Text6 || EKBT (T/NTP || KAB || A || Text2) || EKAB(T/NA || B || Text5)

步骤4:A发送权标TokenAB

步骤5:用户B验证TokenAB,提取KAB,计算TokenBA

5.1 TokeTABEKBT(...)解密(需满足4章的要求d,并验证T/NTP的正确性。

5.2 利用解密信息中提取KAB构造TokenBA = Text8 || EKAB(T/NB || A || Text7)

步骤6:B发送权标TokenBA

步骤7:用户A验证TokenBAATokenBA解密(需满足4章的要求d,并验证T/NB的正确性,从而验证TokenBA

6.1.2 退化为单向鉴别

    1. 去除步骤6和步骤7,即可退化为B对A的单向鉴别。

6.1.3 方案分析(增加)

四次传递双向鉴别是普通鉴别方案的组合

    1. 步骤13是采用两次传递的ATP的单向鉴别(见5.1.2)。
    2. 步骤47是采用两次传递的AB双向鉴别(见5.2.1)。

 

步骤13是采用两次传递的ATP的单向鉴别(见5.1.2)。

两次传递的单向鉴别原方案:

1验证方B启动鉴别过程:RB || Text1RB为随机数,Text1可选

2A发送权标TokenAB = Text3 || EKAB(RB || B || Text2)

本方案

1A向第三方TP发送TVPA || B || Text1Text1可选

其中TVPA相当于RBB是为了说明另一方身份。

2第三方向A发送TokenTA

TokenTA = Text4 || EKAT (TVPA || KAB || B || Text3) || EKBT (T/NTP || KAB || A || Text2)

其中

  • EKAT (TVPA || KAB || B || Text3)中的TVPA相当于RBKAB AB的密钥
  • EKBT (T/NTP || KAB || A || Text2)是给后面的AB双向鉴别做准备

步骤3:用户A验证TokenTA,提取KAB,计算TokenAB

  • 3.1 TokenTAEKAT(...)解密(需满足4章的要求d,并验证时变参数TVPA的正确性,从而验证TokenTA

这是对TP的验证

 

步骤47是采用两次传递的AB双向鉴别(见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)

其中Text6EKAB(...)同原方案,EKBT (..)TPAB双向鉴别,照抄

步骤5:用户B验证TokenAB,提取KAB,计算TokenBA

其中验证流程同原方案。

步骤6:B发送TokenBA = Text8 || EKAB(T/NB || A || Text7)

其中发送信息与原方案完全一致。

步骤7:用户A验证TokenBA

其中验证流程同原方案。

6.2 五次传递双向鉴别

6.2.1 方案描述

本方案是两次普通鉴别方案的综合使用。

实体鉴别GB/T 15843研究(合集)_第5张图片

步骤

1BA发送RB || Text1Text1可选

2A向第三方发送R`A || RB || B || Text2Text2可选

3第三方向A发送TokenTA

TokenTA = Text5 || EKAT (R`A || KAB || B || Text4) || EKBT (RB || KAB || A || Text3)

4用户A验证TokenTA,提取KAB,计算TokenAB

4.1 验证TokenTA:对TokenTAEKAT(...)解密(需满足4章的要求d,并验证R`A的正确性

4.2 利用解密信息中提取KABTokenTAEKBT(...)部分构造TokenAB

TokenAB = Text7 || EKBT (RB || KAB || A || Text3) || EKAB(RA || RB || Text6)

5A发送权标TokenAB

6用户B验证TokenAB,提取KAB,计算TokenBA

6.1 TokeTABEKBT(...)解密(需满足4章的要求d,并验证RB的正确性。

6.2 解密信息中提取KAB构造TokenBA = Text9 || EKAB(RB || RA || Text8)

7B发送权标TokenBA

8用户A验证TokenBAATokenBA解密(需满足4章的要求d,并验证RA的正确性,从而验证TokenBA

6.2.2 退化为单向鉴别

    1. 去除步骤7和步骤8,即可退化为B对A的单向鉴别。

6.2.3 方案分析(增加)

五次传递双向鉴别是普通鉴别方案的组合

    1. 步骤16是采用两次传递的BTP的单向鉴别(见5.1.2)。
    2. 步骤148是采用三次传递的AB双向鉴别(见5.2.2)。

 

步骤16是采用两次传递的ATP的单向鉴别(见5.1.2)。

两次传递的单向鉴别原方案:

1验证方B启动鉴别过程:RB || Text1RB为随机数,Text1可选

2A发送权标TokenAB = Text3 || EKAB(RB || B || Text2)

本方案

这里A作为中间人转发BTP之间的信息。

步骤1:BA发送RB || Text1Text1可选

步骤2:A向第三方发送R`A || RB || B || Text2Text2可选

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)TPB的回复。

同时B完成对TP的验证。

 

步骤148是采用三次传递的AB双向鉴别(见5.2.1)。

两次传递的双向鉴别原方案:

步骤1:B发送:RB || Text1RB为随机数,Text1可选

步骤2:A发送权标TokenAB = Text3 || EKAB(RA || RB || B || Text2)

步骤3:BTokenAB解密(需满足4章的要求d,并验证RB是否匹配。

步骤4:B发送权标TokenBA = Text5 || EKAB(RB || RA || Text4)

步骤5:ATokenBA解密(需满足4章的要求d,并验证RA是否匹配。

 

本方案

步骤1:BA发送RB || Text1Text1可选

对应原方案的步骤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-4TokenBA与原方案相同。

步骤8:用户A验证TokenBAATokenBA解密(需满足4章的要求d,并验证RA的正确性,从而验证TokenBA

对应原方案的步骤5

附录A 文本字段的使用

如果权标不包括(足够的)冗余,已加密的文本字段可用于提供附加冗余。

要求保密性或者数据源鉴别的任何信息都应放在该权标的加密部分。

 

 

 

 

GB/T 15843.3 采用数字签名技术

记号

  1. CertX:可信第三发签发给实体X的证书。
  2. SSA(M):签名,使用签名密钥SA对消息M签名。
  3. T/NX表示X使用的时变参数,可为序列号NX或时间戳TXXAB

4. 要求

  1. 验证方拥有声称方的有效公钥。
  2. 声称方拥有仅有自己知道的私钥。

5. 机制

5.1 单向鉴别

5.1.1 一次传递鉴别

实体鉴别GB/T 15843研究(合集)_第6张图片

步骤

步骤1. A发送CertA(可选) || TokenAB

TokenAB = T/NA || B || Text2 || SSA(T/NA || B || Text1)

步骤2. B验证证书有效、T/NA正确性、标识字段B正确性、签名有效性。

说明

  • 为了防止预期的验证方之外的实体接受权标,TokenAB的签名数据中必须包含可区分标识B

5.1.2 两次传递鉴别

验证方B启动验证流程。

实体鉴别GB/T 15843研究(合集)_第7张图片

步骤

步骤1. B发送RB || Text1(可选)。

步骤2. A发送CertA(可选) || TokenAB

TokenAB = RA || RB || B || Text3 || SSA(RA || RB || B || Text2)

步骤3. B验证证书有效、RB相符、标识字段B正确。

说明

  • TokenAB中的可区分标识B可选。
  • TokenAB的签名数据SSA()中的B是为了防止信息被期望验证方之外的实体接受,如中间人攻击;RA是为了防止B在鉴别机制启动之前获得A对由B选择的数据的签名。

5.2 相互鉴别

5.2.1 两次传递鉴别

该机制独立地两次使用机制5.1.1(单向鉴定的单次传递鉴别)。

实体鉴别GB/T 15843研究(合集)_第8张图片

步骤

步骤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.1.1(单向鉴定的单次传递鉴别)。
  • 两条消息之间除了时效性上有隐含关系外,没有任何关系。如果希望两条消息有进一步的联系,可适当使用文本字段来实现。
  • TokenABTokenBA中的可区分标识A、B必需,防止权标被期望的验证方之外的实体接受。

5.2.2 三次传递鉴别

该机制两次使用机制5.1.2(单向鉴定的两次传递鉴别)。

实体鉴别GB/T 15843研究(合集)_第9张图片

步骤

步骤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正确。

说明

  • TokenAB中的可区分标识B可选,TokenBA中的可区分标识A可选。

5.2.3 两次传递并行鉴别

这是5.1.2机制的并行,但将证书Cert在第一条消息传出,以加快鉴别流程。

实体鉴别GB/T 15843研究(合集)_第10张图片

步骤

步骤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.      验证签名正确性、随机数匹配、标识字段正确。

说明

  • TokenAB中的可区分标识B可选,TokenBA中的可区分标识A可选。

 

 

 

GB/T 15843.4 采用密码校验函数

记号

  1. T/NAT/NB):AB)的时变参数,可为序列号NANB)或时间戳TATB)。
  2. fK(X):计算消息鉴别码的密码校验函数,密钥为K,消息为X

5. 机制

5.0 概述

声称方A和验证方B共享两个单向密钥KAB(A向B发送消息时使用,用于B对A进行鉴别)和KBA(B向A发送消息时使用,用于A对B进行鉴别)。这两个密钥相等时就退化为一个双向密钥,仍记为KAB

5.1 单向鉴别

5.1.1 一次传递鉴别

实体鉴别GB/T 15843研究(合集)_第11张图片

步骤

步骤1. A向B发送TokenAB

TokenAB = T/NA || Text2 || fKAB(T/NA || B || Text1)

步骤2. B计算并验证fKAB(T/NA || B || Text1),验证BT/NA的正确性。

说明

  • TokenAB中的可区分标识B可选。
  • 标识符B是为了防止敌手假冒实体B来对实体A重用TokenAB。在不会出现这种攻击的环境中可省略标识符B。
  • 如果使用单向密钥,则标识符B可省略。

5.1.2 两次传递鉴别

实体鉴别GB/T 15843研究(合集)_第12张图片

步骤(验证方B启动此流程并验证A

步骤1. B向A发送RB || Text1(可选)。

步骤2. A发送TokenAB = Text3 || fKAB(RB || B || Text2)

步骤3. B计算并验证fKAB(T/NA || B || Text1),验证BRB的正确性。

说明

  • TokenAB中的可区分标识B可选。
  • TokenAB中的B时为了防止反射攻击(入侵者假冒A将RB反射给B)。在不出现这种攻击的环境中可省略标识符B。
  • 如果使用单向密钥,可省略标识符B。

5.2 相互鉴别

5.2.1采用5.1.1的机制实现相互鉴别。5.2.2采用5.1.2的机制实现相互鉴别。

5.2.1 两次传递鉴别

实体鉴别GB/T 15843研究(合集)_第13张图片

步骤

步骤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),验证BT/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),验证AT/NB的正确性。

说明

  • TokenAB中的可区分标识B可选,TokenBA中的可区分标识A可选。
  • 标识符B是为了防止敌手假冒实体B来对实体A重用TokenAB。在不会出现这种攻击的环境中可省略标识符B。标识符A同理。
  • 如果使用单向密钥(即A和B共享的是两个不同的单向密钥KABKBA),则标识符A、B可省略。
  • 这种机制中两条消息间除了时效性上有隐含关系外没有任何联系。如果希望这两条消息有进一步的联系,可适当地使用文本字段来实现。

5.2.2 三次传递鉴别

验证方B启动此流程并验证A。

实体鉴别GB/T 15843研究(合集)_第14张图片

步骤

步骤1. B向A发送RB || Text1(可选)。

步骤2. A向B发送TokenAB = RA || Text3 || fKAB(RA || RB || B || Text2)

步骤3. B计算并验证fKAB(RA || RB || B || Text2),验证BRB的正确性。

步骤4. B向A发送TokenBA = Text5 || fKBA(RB || RA || Text4)

步骤5. A计算并验证fKBA(RB || RA || Text4),验证ARA的正确性。

说明

  • TokenAB中的可区分标识B可选。
  • TokenAB中的B时为了防止反射攻击(入侵者假冒A将RB反射给B)。在不出现这种攻击的环境中可省略标识符B。
  • 如果使用单向密钥,可省略标识符B。

 

你可能感兴趣的:(密码,国密,密码技术与应用)