引出:
Needham-Schroeder协议提出就是为了解决对称密钥的密钥分发问题(可扩展性( Scalability)问题)
任意通信两方需要共享不同的密钥
1.随着通信的参与者数量的增加
2.密钥如何分发,如何管理?
思路:
选定某个参与者作为可信第三方,为其他参与者协商对称密钥。
设有n个通信参与者
没有可信第三方,需要事先共享n(n-1)2个对称密钥
有可信第三方,只要每个参与者事先与可信第三方共享一个对称密钥即可,只需要n-1个对称密钥
其余对称密钥(称为会话密钥, session key),在需要的时候,由可信第三方为他们协商
Needham-Schroeder协议
基于可信第三方实现密钥分发与身份认证的协议
协议中,可信第三方记作 Trent
Trent又被称作是密钥分发中心(KDC, key distribution center)
Trent可以服务大量用户,他与这些用户事先共享对称密钥,这些密钥是相对长期的密钥。例如, Trent与A的对称密钥KAT, Trent与B的对称密钥KBT,等等
用户有通信需求时, Trent为他们生成随机的会话密钥,例如,KAB会话密钥:短期密钥(一次一密),仅对当前会话有效
使用 Trente的服务,可以实现任何两个最终用户之间的安全通信,而无需他们进于物理会面;他们可以运行身份认证协议来建立共享的
会话密钥话结束后,最终用户甚至可以互相忘记对方,会话密钥扔掉
前提
Alice和Trent有共享的对称密钥KAT
Bob和Trent有共享的对称密钥KBT
安全服务(协议运行后)
完成参与者 Alice,Bob,Trent相互之间的身份认证
Aice和Bob建立新的他们共享的会话密钥K
协议过程:
1 . Alice creates NA, at random and sends to Trent:Alice , Bob , NA
2 . Trent generates K at random and sends to Alice : {NA , K , Bob ,{K , Alice}KBT } KAT
3 . Alice decrypts , checks he nonce N , checksBob's ID and sends to Bob : Trent,{K , Alice}KBT
4 . Bob decrypts , checks Allice's ID , creates random N ; and sends to Alice :{I ' m Bob ! NB} K
5 . Alice sends to Bob : {I'm Alice ! NB-1}K
对Needham- Schroeder协议的一种攻击:(中间人攻击)
1.and 2.(same as in a normal run)
3. Alice sends to Malice("Bob")...
3'. Malice("Alice") sends to Bob: {K', Alice}KBT;
4. Bob decrypts, checks Alices ID and sends to Malice(Alice ) :{I'm Bob! NB}K'
5. Malice("Alice")sends toBob: {I'm Alice! NB-1}K'
对 Needham-Schroeder攻击的分析:
攻击解释:Bob认为他正在与Alice共享一个新的会话密钥,而实际上该密钥是一个旧密钥,而且可能会被Malice知道了。
改进措施: Using Timestamp (使用时间戳,保证消息的鲜活性)
1.4.5 Same as in the Needham-schroeder
2. Trent sends to Alice: {bob,K,T, (Alice,K,T)KBT}KAT
3. Alice sends to Bob: {alice,K,T}KBT
A,B均检验 |Clock-T1|<△t1+△t2