[轉]重放攻擊的概念


根據百科的解釋:

重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發送一個目的主機已接收過的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的正確性。 它是一種攻擊類型,這種攻擊會不斷惡意或欺詐性地重復一個有效的數據傳輸,重放攻擊可以由發起者,也可以由攔截並重發該數據的敵方進行。攻擊者利用網絡監聽或者其他方式盜取認證憑據,之后再把它重新發給認證服務器。從這個解釋上理解,加密可以有效防止會話劫持,但是卻防止不了重放攻擊。重放攻擊任何網絡通訊過程中都可能發生。重放攻擊是計算機世界黑客常用的攻擊方式之一,它的書面定義對不了解密碼學的人來說比較抽象。

概念性的幾個防御手段

時間戳

“時戳”──代表當前時刻的數 基本思想──A接收一個消息當且僅當其包含一個對A而言足夠接近當前時刻的時戳 原理──重放的時戳將相對遠離當前時刻 時鍾要求──通信各方的計算機時鍾保持同步 處理方式──設置大小適當的時間窗(間隔),越大越能包容網絡傳輸延時,越小越能防重放攻擊 適用性──用於非連接性的對話(在連接情形下雙方時鍾若偶然出現不同步,則正確的信息可能會被誤判為重放信息而丟棄,而錯誤的重放信息可能會當作最新信息而接收)

序號

通信雙方通過消息中的序列號來判斷消息的新鮮性 要求通信雙方必須事先協商一個初始序列號,並協商遞增方法

提問與應答

“現時”──與當前事件有關的一次性隨機數N(互不重復即可) 基本做法──期望從B獲得消息的A 事先發給B一個現時N,並要求B應答的消息中包含N或f(N),f是A、B預先約定的簡單函數 原理──A通過B回復的N或f(N)與自己發出是否一致來判定本次消息是不是重放的 時鍾要求──無 適用性──用於連接性的對話 重放攻擊是對協議的攻擊中危害最大、最常見的一種攻擊形式。

以登陸為例看具體的例子

常規流程

  1. 前端web頁面用戶輸入賬號、密碼,點擊登錄。
  2. 請求提交之前,web端首先通過客戶端腳本如javascript對密碼原文進行md5加密。
  3. 提交賬號、md5之后的密碼
  4. 請求提交至后端,驗證賬號與密碼是否與數據庫中的一致,一致則認為登錄成功,反之失敗。

有什么問題呢?

上述流程看似安全,認為傳輸過程中的密碼是md5之后的,即使被監聽截取到,由於md5的不可逆性,密碼明文也不會泄露。其實不然!監聽者無需解密出密碼明文即可登錄!監聽者只需將監聽到的url(如:http://****/login.do?method=login&password=md5之后的密碼&userid=登錄賬號)重放一下,即可冒充你的身份登錄系統。

稍微安全點的方式

  1. 進入登陸頁面時,生成一個隨機碼(稱之為鹽值),在客戶端頁面和session中各保存一份。
  2. 客戶端提交登錄請求時,將md5之后的密碼與該隨機碼拼接后,再次執行md5,然后提交(提交的密碼=md5(md5(密碼明文)+隨機碼))。
  3. 后端接收到登錄請求后,將從數據庫中查詢出的密碼與session中的隨機碼拼接后,md5運算,然后與前端傳遞的結果進行比較。

為何要這樣?

該登錄方式,即使登錄請求被監聽到,回放登錄URL,由於隨機碼不匹配(監聽者的session中的隨機碼與被監聽者的session中的隨機碼相同概率可忽略),無法登錄成功。 該登錄方式,由於傳輸的密碼是原密碼md5之后與隨機碼再次md5之后的結果,即使監聽者采用暴力破解的方式,也很難解密出密碼明文。

更進一步

考慮到密碼輸入的方便性,好多用戶的密碼都設置的很短,並且不夠復雜,往往是6位數字字母組合,這樣的密碼md5之后保存到數據庫,一旦數據庫數據泄露,簡單密碼的md5結果很容易通過暴力破解的方式給解密出來,何況md5出現了這么多年,可能已經有不少字典了!同時為了方便用戶登錄的方便性,我們的系統一般不可能要求用戶設置很長、很復雜的密碼!怎么辦?加固定鹽值。

  1. 系統設置一個固定的鹽值,該鹽值最好足夠復雜,如:1qaz2wsx3edc4rfv!@#$%^&qqtrtRTWDFHAJBFHAGFUAHKJFHAJHFJHAJWRFA
  2. 用戶注冊、修改密碼時,將用戶的原始密碼與我們的固定鹽值拼接,然后做md5運算。
  3. 傳遞至后端,保存進數據庫(數據庫中保存的密碼是用戶的原始密碼拼接固定鹽值后,md5運算后的結果)。
  4. 登錄時,將用戶的原始密碼與我們的固定鹽值進行拼接,然后做md5運算,運算后的結果再拼接上我們的隨機碼,再次md5運算,然后提交。
  5. 后端接收到登錄請求后,將從數據庫中查詢出的密碼與session中的隨機碼拼接后,md5運算,然后與前端傳遞的結果進行比較。

再再進一步

  1. 加登錄驗證碼,可預防人為地暴力登錄破解
  2. 賬戶鎖定,如果用戶密碼輸入錯誤次數達到一定量后(如6次),則可以鎖定該賬號

 

原文:https://cnodejs.org/topic/557c354d16839d2d539362b6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM