1. 程式人生 > >身份認證防止重放攻擊的challenge-response方法

身份認證防止重放攻擊的challenge-response方法

產生 是否 分鐘 lar 字串 無法 時間間隔 網絡上傳 產生一個隨機數

或者叫詢問-應答機制。

基於挑戰/應答(Challenge/Response)方式的身份認證系統就是每次認證時認證服務器端都給客戶端發送一個不同的"挑戰"字串,客戶端程序收到這個"挑戰"字串後,做出相應的"應答",以此機制而研制的系統.認證過程為:

1) 客戶端向服務器發出認證請求;
2) 認證服務器從用戶數據庫中查詢用戶是否是合法的用戶,若不是,則不做進一步的處理;
3) 認證服務器內部產生一個隨機數,作為Challenge,發送給用戶;
4) 客戶將口令和隨機數合並,使用單向Hash函數 ( 例如MD5算法 ) 生成一個字節串作為Response;
5) 認證服務器將Response與自己的計算結果比較,如兩者相同,則通過一次認證,反之認證失敗;


6) 認證服務器通知客戶端認證成功或失敗。

以後的認證由客戶不定時發起,過程中沒有了客戶認證請求一步。兩次認證的時間間隔不能太短,否則就給網絡、客戶和認證服務器帶來太大的開銷;但也不能太長,否則不能保證用戶不被他人盜用IP地址,一般定為1-2分鐘。

以後的認證由客戶不定時發起,過程中沒有了客戶認證請求一步。兩次認證的時間間隔不能太短,否則就給網絡、客戶和認證服務器帶來太大的開銷;但也不能太長,否則不能保證用戶不被他人盜用IP地址,一般定為1-2分鐘。

密鑰的分配和管理:

密鑰的分配由維護模塊負責,當用戶進行註冊時,自行設定自己的口令。用戶的密鑰由口令生成。

一個口令必須經過兩次口令檢查。第一次由註冊程序檢查,強制口令必須有足夠的長度。口令被加密後送入數據庫,這個口令標記為“未檢查的”。第二次,由離線的口令檢查工具進行檢查,將弱口令進行標記,當下次用戶認證時,認證服務器將強制用戶修改口令。

密鑰的在線修改由認證服務器完成,其過程與認證過程基本類似。

Challenge/Response認證的安全性分析:

下面就常見的對認證服務器攻擊方法來分析其安全性。

1) 網絡偵聽 ( sniffer )
認證過程中,密鑰和口令不是明文不在網絡上傳輸,所以sniffer很難從聽到的報文中得到用戶的口令。在密鑰在線修改過程中,新口令使用舊密鑰加密傳送,sniffer攻擊仍然無效。

2) replay attack
每次challenge不同,所以replay attack無效。

3) password guessing

在知道了認證算法後,偵聽者可以對用戶的口令進行猜測。這種攻擊方法直接有效,特別是當用戶的口令有缺陷時。解決方法是使用合適的口令。

4) 跟蹤地址攻擊
攻擊者在看到用戶認證後,設法將自己的機器地址改為用戶的IP地址,從而冒充用戶。但由於攻擊者無法完成後續的認證,在1-2分鐘內,攻擊失效。

身份認證防止重放攻擊的challenge-response方法