鉴别协议指在声称方与验证方之间定义的消息序列,使得验证方能够执行对声称方的鉴别,其中声称方指被鉴别的本体本身或者是代表本体的实体,验证方指要求鉴别其他实体身份的实体本身或者其代表。实体鉴别指通过鉴别协议来证实一个实体就是所声称的实体。

        实体鉴别机制主要有两种模型,一种是通过声称方与验证方的直接通信确认声称方身份,另外一种模型是通过可信第三方来证实声称方身份。实体鉴别协议的选择基于系统的安全需求,主要包括以下基地几点。

  1. 是否抗重放攻击;
  2. 是否抗反射攻击;
  3. 是否抗暴力延迟;
  4. 单向或相互鉴别;
  5. 是否存在预设的秘密消息可以使用,  或者是否需要科信第三方帮助建立共享秘密消息等。

        实体鉴别机制的一般模型如图1  所示,其中,TTP表示可信第三方,即参与协议的相关实体均信任的安全机构或代理;A、B表示两个实体,连线表示潜在的消息流,实体A与B可以直接交互消息,也可以通过TTP交互消息,以及单向发送消息等。            

        实体鉴别需使用时变参数来确保消息的唯一性和时效性,以抵抗重放等攻击。常用的时变参数有时间戳、序号和随机数。其中时间戳代表公共时间基准下的某一个时间点,通过验证时间差来控制时效性;序号取自在一定时期内不重复出现的特定序列,用于验证方检测消息是否重放,从而控制唯一性;随机性选自一个足够大的范围,使同一密钥重复的概率很小,第三方预测正确特定值的概率也很小。

        实体鉴别协议可以大致分为单向实体鉴别协议和相互实体鉴别协议。单向实体鉴别协议是一种确保第二方身份得到证实的协议,并且该方在协议运行时是活跃的。相互实体鉴别协议是一种确保协议双方的是身份得到证实并在协议运行时处于活动状态的协议,通过两次运行任意单边验证机制,可以获得相互验证。

        实体鉴别常使用挑战——响应的方式完成鉴别。挑战(Challenge )指有验证方随机产生并发送给声称方的数据项,声称方用该数据项和其拥有的秘密消息产生一个响应发送给验证方。数据项通常被称为“令牌”(token)。令牌指由与特定通信相关大的数据字段构成的消息,包含经过密码技术变换后的消息。令牌中包含的文本字段依赖于具体的应用 实例,文本字段可以包含附加的时变参数,例如,实体鉴别机制使用序号,那么在其令牌的文字字段中就包含时间戳,从而消息接收者可通过验证消息中的任何时间戳是否都在一个预先规定的时间窗口内 来检测受迫延迟。

1.1 基于对称加密技术的鉴别技术

        对于不涉及可信第三方的机制,实体A与实体B在开始具体运行鉴别机制之前需共享一个公共的秘密密钥K_{AB},或者两个单项秘密密钥K_{AB}K_{BA}。在后一种情况中,实体A总是使用单项密钥K_{AB}进行加密,实体B总是使用其进行解密;反过来,密钥K_{BA}的使用也类型。对于涉及可信第三方的机制,实体A和实体B通过可信第三方(TTP)完成鉴别,其中实体A和实体B分别与TTP共享秘密密钥K_{AP}K_{BP},并由一个实体项TTP申请密钥K_{AB},然后再采用与无可信第三方的鉴别中类似的方法实现鉴别。

1. UNI.TS——单项传递鉴别

        这种鉴别机制有声称方A发起鉴别流程,并有验证方B进行鉴别。该鉴别机制通过生成和检查时间戳或序号来控制唯一性和时效性。鉴别机制如图,协议如下。

        1). A产生并向B发送Token_{AB}=Text_{2}||e_{K_{AB}}(SID^{1}_{UNI.TS}||TN_{A}||I_{B}||Text_{1})

        2).B接收到Token_{AB},解密并验证SID

        注:Token_{AB}中的表示符I_{B}可选。SID^{1}_{UNI.TS}表示鉴别机制UNI.TS的标识符,TN_{A}表示实体A产生的时变参数(如时间戳或序号),I_{A}表示A的标识符,Text_{1}Text_{2}表示文本字段,后面相关的符号都是其表示文本字段。                                                                                 

2. UNI.CR——两次传递鉴别

         这种鉴别机制有验证方B启动鉴别流程,并对声称方A进行鉴别。鉴别机制通过产生和检验随机数R_{B}来控制唯一性和时效性,。鉴别机制如下图,协议如下:                

        1). B产生一个随机数R_{B}并向A发送,且可选地发送一个文本字段Text_{1}给A。

        2). A产生并向B发送Token_{AB}=Text_{3}||e_{K_{AB}}(SID^{1}_{UNI.CR}||R_{B}||I_{B}||Text_{2})

        3). B收到Token_{AB},解密并验证SIDI_{B}R_{B}

        注:为防止可能的选择明文攻击,实体A可在Text_{2}中包含一个随机数R_{A}Token_{AB}中的标识符I_{B}是可选的。

3. MUT.TS——两次传递鉴别

        这种鉴别机制通过两次消息传递实现相互鉴别。改鉴别机制通过产生校验时间戳或序号来控制唯一性和时效性。鉴别机制如下图,协议如下:

        1). A产生并向B发送Token_{AB}=Text_{2}||e_{K_{AB}}(SID^{1}_{MUT.TS}||TN_{A}||I_{B}||Text_{1})

        2).B接收到Token_{AB},解密并验证SIDI_{B}

        3). B产生并向A发送Token_{BA}=Text_{4}||e_{K_{AB}}(SID^{2}_{MUT.TS}||TN_{A}||I_{A}||Text_{3})

        4).A接收到Token_{BA},解密并验证SIDI_{A}TN_{A}

        注:Token_{AB}中的标识符I_{B}Token_{BA}中标识符的I_{A}是可选的。如果使用单向密钥,Token_{BA}中的密钥使用K_{BA}代替,并在步骤4)中使用对应的密钥。

4.MUC.TC——三次传递鉴别

这种鉴别机制通过三次消息传递实现互相鉴别。该鉴别机制通过产生并校验随机数来控制唯一性和时效性。鉴别机制如图,协议如下:

1). B产生一个随机数R_{B}并向A发送,且可选地发送一个文本字段Text_{1}给A。

2). A产生一个随机数R_{A},并向B发送Token_{AB}=Text_{3}||e_{K_{AB}}(SID^{1}_{MUT.CR}||R_{A}||R_{B}||I_{B}||Text_{2})

3). B收到Token_{AB},解密并验证SIDI_{B}R_{B}

4).B产生并向A发送Token_{BA}=Text_{5}||e_{K_{AB}}(SID^{2}_{MUT.CR}||R_{A}||I_{A}||Text_{4})

5).A接收到Token_{BA},解密并验证SIDR_{A}

注:Token_{AB}中的标识符I_{B}是可选的。如果使用单向密钥,Token_{BA}中的密钥使用K_{BA}代替,并在步骤5)中使用对应的密钥。

5.TP.TS——四次传递鉴别

在这种鉴别机制中,实体A与实体B分别与可信第三方TTP共享秘密密钥,通过可信第三方的辅助实现双向鉴别或实体B对实体A的单向鉴别。该鉴别机制通过产生由时间戳或序号构成的时变参数来控制唯一性和时效性。鉴别机制如图,协议如下。 

1). A产生并向P发送一个时变参数TVP_{A}、标识符I_{B}与可选的字段Text_{1}

2).P生成随机数密钥K_{AB},并产生并向A发送Token_{PA}=Text_{4}||e_{K_{AP}}(SID^{1}_{TP.TS}||TVP_{A}||K_{AB}||I_{B}||Text_{3})||e_{K_{BP}}(SID^{2}_{TP.TS}||TN_{P}||K_{AB}||I_{A}||Text_{2})

3). A 收到Token_{PA},解密使用K_{AP}加密的字段并验证SID_{TP.TS}^{1}I_{B}TVP_{A},提取秘密密钥K_{AB},然后根据K_{PA}构造Token_{AB}=Text_{6}||e_{K_{BP}}(SID^{2}_{TP.TS}||TN_{P}||K_{AB}||I_{A}||Text_{2})||e_{K_{AB}}(SID^{3}_{TP.TS}||TN_{A}||Text_{5})

4). A向B发送Token_{AB}

5). B收到Token_{AB},解密使用K_{BP}加密的字段并验证SID_{TP.TS}^{2}I_{A}TN_{P},提前密钥K_{AB}

6). B产生并向A发送Token_{BA}=Text_{8}||e_{K_{AB}}(SID^{4}_{TP.TS}||TN_{B}||Text_{7})

7). A收到Token_{BA},解密并验证SIDTN_{B}

注:在本机制中,选择时间戳还是序号取决于相关实体的技术能力和环境,如果只要求B对A进行单向鉴别,步骤6)和7)可省去。

6.TP.CR——五次传递鉴别

在这种鉴别机制中,实体A与实体 B分别与可信第三方TTP共享秘密密钥,通过可信第三方的辅助实现双向鉴别或实体B对实体A 的单项鉴别。该鉴别机制通过产生和检测随机数来控制唯一性和时效性。鉴别机制如图,协议如下。

1). B产生向A发送一个随机数R_{B},可选地发送一个文本字段Text_{1}

2).A生产随机数R_{A},并向TTP发送R_{A}R_{B}I_{B},以及可选地发送一个文本字段Text_{2}

3). TTP生产随机数密钥K_{AB},产生并向A 发送Token_{PA}=Text_{5}||e_{K_{AP}}(SID^{1}_{TP.CR}||R_{A}||K_{AB}||I_{A}||Text_{3})||e_{K_{BP}}(SID^{3}_{TP.CR}||R_{A}^{'}||R_{B}|||Text_{6})

4).A收到Token_{PA},解密使用K_{AP}加密的字段并验证SID^{1}_{TP.CR}R_{A}I_{B},提取秘密密钥K_{AB},然后生产第二个随机数R_{A}^{'},并根据Token_{PA}构造Token_{AB}=Text_{7}e_{K_{BP}}||(SID^{2}_{TP.CR}||R_{B}||K_{AB}||I_{A}||Text_{3})||e_{K_{AB}}||(SID^{3}_{TP.CR}||R_{A}^{'}|R_{B}||Text_{6})

5).A向B发送Token_{AB}

6).B收到Token_{AB},解密使用Token_{BP}加密的字段并验证SID^{2}_{TP.CR}I_{A}R_{B},提取密钥K_{AB}

7).B产生并向发送Token_{BA}=Text_{9}||e_{K_{AB}}(SID_{TP.CR}^{4}||R_{A}^{'}||Text_{8})

8). A收到Token_{BA},解密并验证SID^{4}_{TP.CR}R_{A}^{'}

注:如果只要求B对A单向鉴别,步骤7)和8)可省去。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐