1认证协议吴汉炜2使用共享密钥密码的认证与密钥建立协议3使用对称密码的认证Alice,KABBob,KAB“I’mAlice”EKAB(R)对Bob来说,这是验证Alice的一种安全方法Alice不能验证Bob我们能否实现相互认证?R4相互认证?AliceBob“I’mAlice”,REKAB(R)EKAB(R)有什么问题?“Alice”可以是Trudy(或其他任何人)!5相互认证既然我们有一个安全的单向认证协议…最明显的事情是使用两次协议一次用于Bob认证Alice一次用于Alice认证Bob6相互认证AliceBob“I’mAlice”,RARB,EKAB(RA)EKAB(RB)提供了相互认证……还是没有呢?7对相互认证的攻击Bob1.“I’mAlice”,RA2.RB,EKAB(RA)TrudyBob3.“I’mAlice”,RB4.RC,EKAB(RB)Trudy8对相互认证的攻击Bob1.“I’mAlice”,RA2.RB,EKAB(RA)TrudyAlice3.“I’mBob”,RB4.RC,EKAB(RB)Trudy9相互认证我们的单向认证协议是不安全的协议是微妙的在“显而易见”的事情可能是不安全的另外,如果假设或环境的变化,协议可能无法工作这是一个常见的安全故障例如,互联网协议10使用对称密码的认证AliceBob“I’mAlice”,RARB,EKAB(“Bob”,RA)EKAB(“Alice”,RB)做这些“微不足道”的变化会有帮助吗?是的!11引言讨论基于对称密码的双方密钥建立与认证协议分类准则预先有密钥可用:参与者之间共享,参与者与服务器共享(在线),离线服务器-证书(公钥)会话密钥生成的方法:密钥传输,协商,混合记号A,B:期望共享会话密钥的两个用户S:可信服务器{M}K:使用密钥K加密信息M,提供机密性与完整性12实体认证协议1.AB:NA2.BA:NB,u(KAB,NA,…)3.AB:v(KAB,NB,…)Bird等人的协议1.IAB:NI2.BIA:NB,u(KAB,NI,…)1’.IBA:NB(I为了回答B,开始一个新会话,询问A)2’.AIB:NA,u(KAB,NB,…)3.IAB:u(KAB,NB,…)(I假冒A与B建立会话)u,v相同时,存在Oracle攻击131.AB:NA2.BA:NB,[B,A,NA,NB]KAB3.AB:[A,NB]KABBellare-RogawayMAP1协议1.AIB:NA(I假冒B,开始一个MAP1会话)1’.IBA:NA(I为了回答A,开始一个会话,询问A)2’.AIB:N’A,[B,A,NA,N’A]KAB2.IBA:N’A,[B,A,NA,N’A]KAB(I假冒B完成MAP1会话)3.AIB:[A,N’A]KAB选择协议攻击,A被I用作Oracle攻击AA和B次序问题只保留B破坏结构14AB:{TA,B}KABISO/IEC9798-2协议1路单向认证(时间戳)2路单向认证(一次性随机数)1.BA:NB2.AB:{NB,B}KAB3路双向认证(一次性随机数)2路双向认证(时间戳)AB:{TA,B}KABBA:{TB,A}KAB1.BA:NB2.AB:{NA,NB,B}KAB3.BA:{NB,NA}KAB151.AB:A2.BA:NB3.AB:{NB}KAS4.BS:{A,{NB}KAS}KBS5.SB:{NB}KBSWoo-Lam认证协议BAS1.A2.NB3.{NB}KAS4.{A,{NB}KAS}KBS5.{NB}KBS单向认证A161.IAB:A1’.IB:I2.BIA:NB2’.BI:N’B3.IAB:R(随便的数)3’.IB:{NB}KIS4.BS:{A,R}KBS4’.BS:{I,{NB}KIS}KBS5.SB:{NB}KBSAbadi的攻击BI(IA)S1.1’2.2’3.3’4.4’5.{NB}KBSI开启2个会话,其中一个假冒A,最后IA-B会话成功,I-B会话成功。注意:这里的5实际上是5‘的数据。对3和4里面的R,S会有一个响应,不过5被I在网络上中断了!用5’冒充517无服务器的密钥建立额外的记号KAB:A与B初始时共享的长期密钥,反复使用K’AB:利用长期密钥建立的新的会话密钥,当前会话中使用181.AB:A,NA2.BA:AUTH,MASK3.AB:[NA,K’AB,A]KABJanson-Tsudik2PKDP协议2.B生成新会话密钥K’AB,然后计算:AUTH=[NA,K’AB,B]KAB(加密)MASK=[[AUTH]]K’AB(单向函数)3.A利用AUTH计算K’AB,再利用K’AB验证AUTH的正确性191.AB:NA2.BA:NBK’AB=f(NA,NB,KAB)Boyd两路协议20AB:{TA,B}KABK’AB=f(KAB,TA)ISO/IEC11770-2无服务器的密钥建立协议机制2AB:{K’AB}KAB机制3AB:{TA,B,K’AB}KAB1.BA:NB2.AB:{NB,B,K’AB}KAB机制41.AB:{TA,B,FAB}KAB2.BA:{TB,A,FBA}KABK’AB=f(FAB,FBA)密钥材料F机制51.BA:NB2.AB:{NA,NB,B,FAB}KAB2.BA:{NB,NA,FBA}KABK’AB=f(FAB,FBA)机制6{}KAB提供机密性与完整性机制121基于服务器的密钥建立额外的记号A,B:期望建立会话密钥的两个用户S:可信服务器KAS,KBS:A与S,B与S初始时共享的长期密钥KAB:会话密钥221.AS:A,B,NA2.SA:{NA,B,KAB,{KAB,A}KBS}KAS3.AB:{KAB,A}KBS4.BA:{NB}KAB5.AB:{NB-1}KABNeedham-Schroeder协议ABS12345231.AS:A,B2.SA:{B,KAB,TS,{A,KAB,TS}KBS}KAS3.AB:{A,KAB,TS}KBSDenning-Sacco协议Denning-Sacco攻击:在Needham-Schroeder协议消息3中使用破解的会话密钥,假冒A.ABS123•保证会话密钥的新鲜性,会话密钥与时间戳绑定241.AB:A,NA2.BS:A,NA,B,NB3.SB:{KAB,A,NB}KBS,{KAB,B,NA}KAS4.BA:{KAB,B,NA}KASBauer-Berson-Feiertag协议Bauer攻击:在Needham-Schroeder协议中,如果A与S使用长期密钥泄漏了,即使再更换,也可假冒A(同Denning-Sacco攻击).ABS•保证会话密钥的新鲜性,会话密钥与nonce绑定25使用多服务器的密钥建立好处当一个或多个服务器不可用时,用户仍可以建立会话密钥当一个或多个服务器不可信时,用户仍可以建立好的会话密钥26KA,i,KB,i:A,B与服务器Si共享的长期密钥秘密共享:A持有x,x可以从x1,x2,…,xn中的t个恢复;B持有y,y可以从y1,y2,…,yn中的t个恢复ABSi12345会话密钥为KAB=h(x,y)cc(x)=(h(x1),h(x2),…,h(xn))Gong的多服务器协议:服务器至少t个可信,A与B选择密钥材料1.AB:A,B,NA,{A,B,xi,cc(x)}KA,i2.BSi:A,B,NA,NB,{A,B,xi,cc(x)}KA,i,{B,A,yi,cc(y)}KB,i3.SiB:{B,NA,yi,cci(y)}KA,i,{A,NB,xi,cci(x)}KB,i4.BA:{B,NA,y1,cc1(y)}KA,1,…{B,NA,yn,ccn(y)}KA,n,{NA}KAB,NB5.AB:{NB}KAB