记号
- CertX:可信第三发签发给实体X的证书。
- SSA(M):签名,使用签名密钥SA对消息M签名。
- T/NX表示X使用的时变参数,可为序列号NX或时间戳TX。X为A或B。
4. 要求
- 验证方拥有声称方的有效公钥。
- 声称方拥有仅有自己知道的私钥。
5. 机制
5.1 单向鉴别
5.1.1 一次传递鉴别
步骤
步骤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启动验证流程。
步骤
步骤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(单向鉴定的单次传递鉴别)。
步骤
步骤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(单向鉴定的单次传递鉴别)。
- 两条消息之间除了时效性上有隐含关系外,没有任何关系。如果希望两条消息有进一步的联系,可适当使用文本字段来实现。
- TokenAB和TokenBA中的可区分标识A、B必需,防止权标被期望的验证方之外的实体接受。
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正确。
说明
- TokenAB中的可区分标识B可选,TokenBA中的可区分标识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. 验证签名正确性、随机数匹配、标识字段正确。
说明
- TokenAB中的可区分标识B可选,TokenBA中的可区分标识A可选。