重放攻擊(Replay Attacks)[轉載]
阿新 • • 發佈:2019-02-07
重放攻擊(Replay Attacks)
1.什麼是重放攻擊
顧名思義,重複的會話請求就是重放攻擊。
可能是因為使用者重複發起請求,也可能是因為請求被攻擊者獲取,然後重新發給伺服器。
2.重放攻擊的危害
請求被攻擊者獲取,並重新發送給認證伺服器,從而達到認證通過的目的。
我們可以通過加密,簽名的方式防止資訊洩露,會話被劫持修改。但這種方式防止不了重放攻擊。
3.重放攻擊的防禦
1)時間戳驗證
請求時加上客戶端當前時間戳,同時簽名(簽名是為了防止會話被劫持,時間戳被修改),服務端對請求時間戳進行判斷,如超過5分鐘,認定為重放攻擊,請求無效。
時間戳無法完全防止重放攻擊。
2)序號
顧名思義,在客戶端和服務端通訊時,先定義一個初始序號,每次遞增。這樣,服務端就可以知道是否是重複傳送的請求。
3)挑戰與應答的方式
我們一般採用這種方式來防禦重放攻擊。
客戶端請求伺服器時,伺服器會首先生成一個隨機數,然後返回給客戶端,客戶端帶上這個隨機數,訪問伺服器,伺服器比對客戶端的這個引數,若相同,說明正確,不是重放攻擊。
這種方式下,客戶端每次請求時,服務端都會先生成一個挑戰碼,客戶端帶上應答碼訪問,服務端進行比對,若挑戰碼和應答碼不對應,視為重放攻擊。
4)Https防重放攻擊
對於https,每個socket連線都會驗證證書,交換金鑰。攻擊者截獲請求,重新發送,因為socket不同,金鑰也不同,後臺解密後是一堆亂碼,所以https本身就是防止重放攻擊的,除非能複製socket,或者進行中間人攻擊。