重放攻擊的概念 根據百科的解釋:重放攻擊(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次),則可以鎖定該賬號 |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信