密鑰分發的可能方式
1、A選擇一個密鑰后以物理的方式傳遞給B
2、第三方選擇密鑰后物理地傳給A和B
3、如果A和B先前或最近使用過一個密鑰,則一方可以將 新密鑰用舊密鑰發送給另一方
4、如果A和B到第三方C有加密連接,則C可以在加密連接上發送密鑰給A、B
分析:
1和2都需要人工交付,對鏈路加密(設備一對一連接)可行,對網絡通信則不可行,因為網絡通信涉及大量密鑰
對於3,一旦攻擊者獲得一個密鑰,則后序所有密鑰便都不再安全。
4需要第三方即密鑰分發中心,在網絡通信中得到了廣泛的應用。
密鑰分發方案
基本原理:密鑰分發中心KDC和每個終端用戶都共享一對唯一的主密鑰(用物理的方式傳遞,如U盾)。終端用戶之間每次會話,都要向KDC申請唯一的會話密鑰,會話密鑰通過與KDC共享的主密鑰加密來完成傳遞。
典型方案描述
1、A以明文形式向KDC發送會話密鑰請求包。包括通話雙方A、B的身份以及該次傳輸的唯一標識N1,稱為臨時交互號(nonce)。
臨時交互號可以選擇時間戳、隨機數或者計數器等。KDC可根據臨時交互號設計防重放機制。
2、KDC返回的信息包括兩部分。
第一部分是A想獲取的信息,用A的主密鑰KA加密,包括通話密鑰Ks和KDC收到的請求包內容用以驗證消息到達KDC前是否被修改或者重放過。
第二部分是B想獲取的信息,用B的主密鑰KB加密,包括通話密鑰Ks和A的身份。A收到后這部分消息便原樣發給B。
3、為保證A發給B的會話密鑰信息未被重放攻擊,A、B使用會話密鑰進行最后的驗證。
B使用新的會話密鑰Ks加密臨時交互號N2並發給A。A對N2進行一個函數變換后,用會話密鑰發給B驗證。
對於大型網絡,可以建立KDC的層次體系來使得主密鑰分發的開銷最小化。
透明的密鑰控制方案
其中心思想是通過設定專門的會話安全單元(SSM)來完成代表主機、獲取會話密鑰和加密會話消息的功能
分布式的密鑰控制方案
該方案的核心思想是將每個終端都兼職干KDC的活。這顯然大大增加了主密鑰的數量(N(N-1)/2個),適合一些對KDC安全性要求高的中小系統。
Km是AB共享的主密鑰。
會話密鑰生命周期
對於面向對象的協議,在會話整個生命周期中使用同一個會話密鑰,為每次新的會話使用新的會話密鑰。若一個會話的生命周期很長,則周期性改變會話密鑰。
對於無連接的協議如面向事務的協議,則可約定時間或者數量分配不同的會話密鑰
控制密鑰的使用
目的:
1、通過某種標識區分密鑰的種類及使用范圍
2、避免主密鑰作為數據加密密鑰帶來的安全風險
控制向量解決方案:
1、KDC生成會話密鑰Ks,同時使用一個控制向量CV,根據約定的規范描述會話密鑰的用法和限制。然后用以下公式生成消息返回給用戶。
C = E([Km⊕h(CV)] , Ks) || CV h為Hash函數 Km是用戶主密鑰
2、用戶可直接通過逆操作還原會話密鑰 Ks = D([Km⊕h(CV)] , E([Km⊕h(CV)] , Ks))
這樣,通過將主密鑰與CV異或避免了主密鑰可能的暴露,同時也規范了會話密鑰的使用。