引出:
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