实体鉴别
《GBT 15843.1-2017 信息技术 安全技术 实体鉴别 第1部分: 总则》
《GBT 15843.2-2017 信息技术 安全技术 实体鉴别 第2部分: 采用对称加密算法的机制》
《GBT 15843.3-2016 信息技术 安全技术 实体鉴别 第3部分: 采用数字签名技术的机制》
《GBT 15843.4-2008 信息技术 安全技术 实体鉴别 第4部分: 采用密码校验函数的机制》
概述
鉴别,英语为Authentication,也经常翻译为“认证”,表示“确认一个实体所声称身份的过程”,鉴别是一个证明的过程
标识,英语为Identification,表示“标识一个实体在系统中的身份”,比如系统分配ID号,用户名等
鉴别的几种类型:所知道的(Something you know)、所拥有的(Something you own)、所具有的(Something you are)
实体鉴别标准主要基于密码学方案,属于“something you know”类型
多因素(Multi-factors)鉴别即同时采用两种以上类型的鉴别方法,常见的包括U盾+password等
单向鉴别unilateral authentication:一个实体向另一个实体证明其身份,本标准中规定A为声称方(claimant),B为验证方(verifier)
相互鉴别mutual authentication:双方相互向对方证明自身身份
涉及的攻击方式
名称 | 定义 | 抵御思路 |
---|---|---|
插空攻击(interleaving attack) | 使用从一个或多个正在进行的或先前进行的鉴别交换导出的信息进行冒充 | 参见第三部分方案4的攻击案例(无可信第三方参与-相互鉴别-三次传递鉴别) |
反射攻击(reflection attack) | 将以前发送的消息发回给其原发者的一种冒充攻击 | 在权标(Token)中包含消息接受者的身份标识符、使用单向密钥 |
重放攻击(replay attack) | 使用以前发送的消息进行冒充 | 采用时变参数控制唯一性和时效性:时间戳 – 需要同步时钟的配合、序号、随机数 |
暴力攻击(brute force attack) | 采用穷举法直接猜测密钥 | 密钥长度和质量符合密码学安全要求 |
采用对称加密算法的机制
定义了6中鉴别方案
第一种:无可信第三方参与-单向鉴别-一次传递鉴别
其中, e k A B e_{k_{AB}} ekAB表示用A和B的预先共享密钥 k A B k_{AB} kAB加密
时变参数可以二选一,T_A表示采用时间戳作为时变参数、 N A N_A NA表示采用序号作为时变参数
B表示实体B的可区分标识符,主要为了防止敌手假冒实体B对实体A重用 T o k e n A B Token_{AB} TokenAB,如果不存在攻击场景,或者采用了单向密钥( k A B ≠ k B A k_{AB}\not =k_{BA} kAB=kBA)则可省略B
文本字段使用取决于应用背景
注意:时间戳或序号不能重复;选择时间戳还是序号取决于相关实体的技术能力和环境。
第二种:无可信第三方参与-单向鉴别-两次传递鉴别
其中, e k A B e_{k_{AB}} ekAB表示用A和B的预先共享密钥 k A B k_{AB} kAB加密
R B R_B RB表示采用随机数作为时变参数
B表示实体B的可区分标识符,主要为了防止任何第三方将 T o k e n A B Token_{AB} TokenAB用作 T o k e n B A Token_{BA} TokenBA,如果不存在攻击场景,或者采用了单向密钥( k A B ≠ k B A k_{AB}\not =k_{BA} kAB=kBA)则可省略B
文本字段使用取决于应用背景,为了防止可能的选择明文攻击,可以在 T e x t 2 Text_2 Text2中包含一个随机数 R A R_A RA
注意:随机数重复概率应极低,意味着必须要有足够的长度且随机数生成质量符合要求
第三种:无可信第三方参与-相互鉴别-两次传递鉴别
其中,
e k A B e_{k_{AB}} ekAB表示用A和B的预先共享密钥 k A B k_{AB} kAB加密,如果使用的不是单向密钥,则 k A B = k B A k_{AB}= k_{BA} kAB=kBA
时变参数二选一(这种机制中,唯一性和时效性是通过产生并校验时间戳或序号来控制的)
B表示实体B的可区分标识符, A表示实体A的可区分标识符。是为了防止敌手假冒实体B对实体A重用 T o k e n A B Token_{AB} TokenAB,如果不存在攻击场景,或者采用了单向密钥( k A B ≠ k B A k_{AB}≠k_{BA} kAB=kBA)则可省略B、A。
文本字段使用取决于应用背景
相当于分别使用方案一,来完成相互之间的鉴别
注意:时间戳和序号不能重复
另外: T e x t 2 Text_2 Text2可包含实体A产生的随机数 R A R_A RA,以防止已知明文攻击;选择时间戳还是序号取决于相关实体的技术能力和环境。
第四种:无可信第三方参与-相互鉴别-三次传递鉴别
其中,
e k A B e_{k_{AB}} ekAB表示用A和B的预先共享密钥k_AB加密,如果使用的不是单向密钥,则 k A B = k B A k_{AB}= k_{BA} kAB=kBA
R B R_B RB、 R A R_A RA表示采用随机数作为时变参数
B表示实体B的可区分标识符。主要为了防止所谓的反射攻击(这种攻击特征是入侵者假冒A将挑战随机数 R B R_B RB"反射"给B),如果不存在攻击场景,或者采用了单向密钥( k A B ≠ k B A k_{AB}≠k_{BA} kAB=kBA)则可省略B、A。
文本字段使用取决于应用背景
注意:随机数重复概率应极低,并注意 T o k e n B A Token_{BA} TokenBA 中随机数顺序
第五种:有可信第三方参与-相互/单向鉴别-四次/三次传递鉴别
其中, k A T k_{AT} kAT和 k B T k_{BT} kBT是A和TP、B和TP之间分别预先共享好的密钥; k A B k_{AB} kAB是由TP下发的A和B之间共享密钥
A和B分别表示实体A、B的可区分标识符,不能省略!
时变参数, T V P A TVP_A TVPA可以是随机数,但无需满足不可预测性,只需满足不重复性即可,因此,也可以采用不重复的计数器,而不必是严格意义上的随机数。 T x T_x Tx和 N x N_x Nx分别标识实体X产生的时间戳和序号,和前述方案类似,两者可选用一种作为时变参数。
文本字段使用取决于应用背景
注意:A和B不能省去;时变参数不能重复
另外:如果只要求B对A的单向鉴别,步骤(6)和(7)可省去;选择时间戳还是序号取决于相关实体的技术能力和环境。
第六种:有可信第三方参与-相互/单向鉴别-五次/四次传递鉴别
其中, k A T k_{AT} kAT和 k B T k_{BT} kBT是A和TP、B和TP之间分别预先共享好的密钥; k A B k_{AB} kAB是由TP下发的A和B之间共享密钥
A和B分别表示实体A、B的可区分标识符,不能省略!
R x R_x Rx表示采用随机数作为时变参数
注意:A和B不能省去;随机数长度和质量;注意 R A ′ R_A' RA′和 R A R_A RA不能使用同一随机数;严格按照流程规定进行检验
另外:如果只要求B对A的单向鉴别,步骤(7)和(8)可以被省去
采用数字签名技术的实体鉴别机制
共有7中方案
第一种:无可信第三方参与-单向鉴别-一次传递鉴别
其中,CertA是指A的证书,是可选的
s S A ( ) sS_A() sSA()的指使用A的私钥进行数字签名
序号 N A N_A NA或时间戳 T A T_A TA,作为时变参数
注意:为了防止预期的验证方之外的任何实体接受权标,在 T o k e n A B Token_{AB} TokenAB的签名数据中需包含标识符B。
另外:这种机制的一种可能的应用是密钥分发;时变参数具体选用哪一个取决于声称方与验证方的能力以及环境;在一般情况下,Text2不由这个过程鉴别。CertA应使用双证书中的“签名证书”(国密要求)
第二种:无可信第三方参与-单向鉴别-两次传递鉴别
其中,
证书CertA是可选的,Cert应使用双证书中的“签名证书”(国密要求)。Cert可选,但如果不采用Cert的方式,应有可信的方式使得验证方拥有声称方的公钥。(公钥的传输没啥要求吧应该,又不是啥秘密?)
可区分标识符B是可选的.是否使用依赖于鉴别机制的应用环境,在 T o k e n A B Token_{AB} TokenAB的签名数据中可选地包含可区分标识符B是为了防止信息被预期的验证方之外的实体所接受(例如,发生中间人攻击时)。
在 T o k e n A B Token_{AB} TokenAB的签名数据中包含随机数 R A R_A RA可以防止B在鉴别机制启动之前获得A对由R选择的数据的签名。(例如当A为了实体鉴别之外的其他目的使用同一密钥时。)
第三种:无可信第三方参与-相互鉴别-两次传递鉴别
其中,在 T o k e n A B Token_{AB} TokenAB和 T o k e n B A Token_{BA} TokenBA的签名数据中包含标识符A和标识符B是必要的,这可以防止权标被预期的验证方之外的实体所接受。
这种机制中两条消息之间除了时效性上右隐含关系外,没有任何联系;该机制独立地两次使用第一种方案。如果希望这两条消息进一步发生联系,可适当使用文本字段来实现。
第四种:无可信第三方参与-相互鉴别-三次传递鉴别
其中,
在 T o k e n A B Token_{AB} TokenAB的签名数据中包含随机数 R A R_A RA可以防止B在鉴别机制启动之前获得A对由B选择的数据的签名。这种保护手段是需要的,例如当A为了实体鉴别之外的其他目的使用同一密钥时。
在 T o k e n B A Token_{BA} TokenBA中包含 R B R_B RB,也是需要的,它指示A应检查其值是否与第一条消息中发送的值相同,但是在 T o k e n B A Token_{BA} TokenBA中包含 R B R_B RB可能不会提供类似于上述的在 T o k e n A B Token_{AB} TokenAB中包含 R A R_A RA所实现的保护,因为在产生 R A R_A RA之前A已经知道了 R B R_B RB,如果确实需要实行这类保护B可以在文本字段Text4和Text5之间插入另外一个随机数 R B ′ R_B' RB′。
第五种:无可信第三方参与-相互鉴别-两次传递并行鉴别
其中,这四个消息并不需要依次发送,鉴别过程可以加快;
标识符A和B在本方案中是可选的;
随机数 R A R_A RA应包含在 T o k e n A B Token_{AB} TokenAB中,以防止B在鉴别机制启动之前获得A对由B选择的数据的签名。这种保护手段是需要的,例如当A为了实体鉴别之外的其他目的使用同一密钥时。出于类似的理由. T o k e n B A Token_{BA} TokenBA中也包含随机数 R B R_B RB。
依赖于步骤(1)和步骤(1’)中发送的消息到达接收端的相对时差,当一方选择随机数时可能会已经知道了另一方的随机数。如果不希望如此,则双方可以分别在 T o k e n A B Token_{AB} TokenAB的Text3和Text4之间以及TokenBA的Text5和Text6之间插入另一个随机数 R A ′ R_A' RA′和 R B ′ R_B' RB′。
方案五的一种替代方案是将方案二的机制双向运行。在方案五的第一个消息中包含证书将允许更早的验证证书.因而能够加速鉴别的过程。
第六种:有可信三方参与-相互鉴别-五次传输鉴别(由A发起)
其中, I A = A I_A = A IA=A 或 CertA; I B = B I_B = B IB=B 或 CertB
R e s A = ( C e r t A ∣ ∣ S t a t u s ) , ( A ∣ ∣ P A ) 或 F a i l u r e ResA=(CertA||Status),(A||P_A)或 Failure ResA=(CertA∣∣Status),(A∣∣PA)或Failure; R e s B = ( C e r t B ∣ ∣ S t a t u s ) , ( B ∣ ∣ P B ) 或 F a i l u r e ResB=(CertB|| Status) ,(B||P_B)或 Failure ResB=(CertB∣∣Status),(B∣∣PB)或Failure
S t a t u s = T r u e 或 F a l s e Status=True或False Status=True或False,如果证书是被撤销的.该字段的值应为False;否则该字段的值应为True。
Failure:当公钥或实体X的证书不能被TP获得, R e s X ( X = A , B ) ResX(X={A, B}) ResX(X=A,B)应为Failure。如果TP确认 X ( X = A , B ) X(X={A,B}) X(X=A,B)的身份和公钥 P x P_x Px的映射,则I x = X x = X x=X;否则K = CertX,旦X应等于CertX的可区分标识符字段值;如果X或CertX允许被用于作为一种身份.则应有一种预安排的方式允许TP区分这两种类型的身份标识。
第七种:有可信三方参与-相互鉴别-五次传输鉴别(由B发起)
其中, I A = A I_A=A IA=A或CertA; I B = B I_B = B IB=B或CertB
R c s A = ( C e r t A ∣ ∣ S t a t u s ) , ( A ∣ ∣ P A ) 或 F a i l u r e RcsA=(CertA||Status), (A||P_A)或Failure RcsA=(CertA∣∣Status),(A∣∣PA)或Failure; R e s B = ( C e r t B ∣ ∣ S t a t u s ) , ( B ∣ ∣ P Q ) 或 F a i l u r e ResB= (CertB||Status), (B||P_Q)或Failure ResB=(CertB∣∣Status),(B∣∣PQ)或Failure
S t a t u s = T r u e 或 F a l s e Status=True或False Status=True或False
采用密码校验函数的实体认证机制
共定义了4种鉴别方案
第一种:无可信第三方参与-单向鉴别-一次传递鉴别
其中, f k A B f_{k_{AB}} fkAB表示使用密码校验函数,采用A和B的预先共享密钥 k A B k_{AB} kAB对数据计算密码校验值
分标识符B是可选的,在 T o k e n A B Token_{AB} TokenAB中包含可区分标识符B是为了防止敌手假冒实体B来对实体A重用 T o k e n A B Token_{AB} TokenAB。在不会出现这类攻击的环境中可将标识符B省去,如果使用单向密钥,那么可区分标识符B也可省去。
第二种:无可信第三方参与-单向鉴别-两次传递鉴别
其中,一旦收到包含 T o k e n A B Token_{AB} TokenAB的消息,B就计算 f k A B ( R B ∣ ∣ B ∣ ∣ T e x t 2 ) f_{k_{AB}}(R_B|| B || Text2) fkAB(RB∣∣B∣∣Text2),且将其与权标的密码校验值进行比较,并验证可区分标识符B(如果有)的正确性以及在步骤(1)中发送给A的随机数RB是否与 T o k e n A B Token_{AB} TokenAB中所含的随机数相符,从而验证 T o k e n A B Token_{AB} TokenAB。
第三种:无可信第三方参与-相互鉴别-两次传递鉴别
其中, f k A B f_{k_{AB}} fkAB表示使用密码校验函数,采用A和B的预先共享密钥 k A B k_{AB} kAB对数据计算密码校验值
这种机制中两条消息之间除了时效性上有隐含关系外,没有任何联系;
选择时间戳还是序号取决于声称方与验证方的能力及环境;
第四种:无可信第三方参与-相互鉴别-三次传递鉴别
其中, T o k e n A B Token_{AB} TokenAB中包含可区分标识符B是为了防止所谓的反射攻击。这种攻击的特性是入侵者假冒A将激励随机数R_B反射给B。包含可区分标识符B之所以作为可选项,是因为在不会出现这类攻击的环境中可将标识符B省去。
如果使用的不是单向密钥,那么 T o k e n B A Token_{BA} TokenBA中的密钥 K A B = K B A K_{AB}=K_{BA} KAB=KBA,并在步骤(5)使用相应的密钥。
存在问题:
未解决:
问题:”反射攻击“是否应为”反射重放攻击“?
问题:中间人攻击时,可区分标识符B是如何防止信息被预期的验证方之外的实体所接受的?
问题:采用密码校验函数的几种机制与采用对称加密算法的机制有何不同?
已解决:
问题:以第四种方案为例,随机数 R B R_B RB的存在是如何避免Wiener攻击(加拿大人攻击)
为了防止一个实体对其签名的数据块是由第二个实体蓄意构造的,第一个实体可在其签名的数据块中包含它自己的随机数。在这种情况下,随机数的加入使得签名值具有了不可预测性,从而防止了对预定义数据的签名。