重放攻擊的概念 根據(jù)百科的解釋:重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發(fā)送一個(gè)目的主機(jī)已接收過(guò)的包,來(lái)達(dá)到欺騙系統(tǒng)的目的,主要用于身份認(rèn)證過(guò)程,破壞認(rèn)證的正確性。 它是一種攻擊類型,這種攻擊會(huì)不斷惡意或欺詐性地重復(fù)一個(gè)有效的數(shù)據(jù)傳輸,重放攻擊可以由發(fā)起者,也可以由攔截并重發(fā)該數(shù)據(jù)的敵方進(jìn)行。攻擊者利用網(wǎng)絡(luò)監(jiān)聽(tīng)或者其他方式盜取認(rèn)證憑據(jù),之后再把它重新發(fā)給認(rèn)證服務(wù)器。從這個(gè)解釋上理解,加密可以有效防止會(huì)話劫持,但是卻防止不了重放攻擊。重放攻擊任何網(wǎng)絡(luò)通訊過(guò)程中都可能發(fā)生。重放攻擊是計(jì)算機(jī)世界黑客常用的攻擊方式之一,它的書面定義對(duì)不了解密碼學(xué)的人來(lái)說(shuō)比較抽象。 概念性的幾個(gè)防御手段 時(shí)間戳 “時(shí)戳”──代表當(dāng)前時(shí)刻的數(shù) 基本思想──A接收一個(gè)消息當(dāng)且僅當(dāng)其包含一個(gè)對(duì)A而言足夠接近當(dāng)前時(shí)刻的時(shí)戳 原理──重放的時(shí)戳將相對(duì)遠(yuǎn)離當(dāng)前時(shí)刻 時(shí)鐘要求──通信各方的計(jì)算機(jī)時(shí)鐘保持同步 處理方式──設(shè)置大小適當(dāng)?shù)臅r(shí)間窗(間隔),越大越能包容網(wǎng)絡(luò)傳輸延時(shí),越小越能防重放攻擊 適用性──用于非連接性的對(duì)話(在連接情形下雙方時(shí)鐘若偶然出現(xiàn)不同步,則正確的信息可能會(huì)被誤判為重放信息而丟棄,而錯(cuò)誤的重放信息可能會(huì)當(dāng)作最新信息而接收) 序號(hào) 通信雙方通過(guò)消息中的序列號(hào)來(lái)判斷消息的新鮮性 要求通信雙方必須事先協(xié)商一個(gè)初始序列號(hào),并協(xié)商遞增方法 提問(wèn)與應(yīng)答 “現(xiàn)時(shí)”──與當(dāng)前事件有關(guān)的一次性隨機(jī)數(shù)N(互不重復(fù)即可) 基本做法──期望從B獲得消息的A 事先發(fā)給B一個(gè)現(xiàn)時(shí)N,并要求B應(yīng)答的消息中包含N或f(N),f是A、B預(yù)先約定的簡(jiǎn)單函數(shù) 原理──A通過(guò)B回復(fù)的N或f(N)與自己發(fā)出是否一致來(lái)判定本次消息是不是重放的 時(shí)鐘要求──無(wú) 適用性──用于連接性的對(duì)話 重放攻擊是對(duì)協(xié)議的攻擊中危害最大、最常見(jiàn)的一種攻擊形式。 以登陸為例看具體的例子 常規(guī)流程 1.前端web頁(yè)面用戶輸入賬號(hào)、密碼,點(diǎn)擊登錄。 2.請(qǐng)求提交之前,web端首先通過(guò)客戶端腳本如javascript對(duì)密碼原文進(jìn)行md5加密。 3.提交賬號(hào)、md5之后的密碼 4.請(qǐng)求提交至后端,驗(yàn)證賬號(hào)與密碼是否與數(shù)據(jù)庫(kù)中的一致,一致則認(rèn)為登錄成功,反之失敗。 有什么問(wèn)題呢? 上述流程看似安全,認(rèn)為傳輸過(guò)程中的密碼是md5之后的,即使被監(jiān)聽(tīng)截取到,由于md5的不可逆性,密碼明文也不會(huì)泄露。其實(shí)不然!監(jiān)聽(tīng)者無(wú)需解密出密碼明文即可登錄!監(jiān)聽(tīng)者只需將監(jiān)聽(tīng)到的url(如:http://****/login.do?method=login&password=md5之后的密碼&userid=登錄賬號(hào))重放一下,即可冒充你的身份登錄系統(tǒng)。 稍微安全點(diǎn)的方式 1.進(jìn)入登陸頁(yè)面時(shí),生成一個(gè)隨機(jī)碼(稱之為鹽值),在客戶端頁(yè)面和session中各保存一份。 2.客戶端提交登錄請(qǐng)求時(shí),將md5之后的密碼與該隨機(jī)碼拼接后,再次執(zhí)行md5,然后提交(提交的密碼=md5(md5(密碼明文)+隨機(jī)碼))。 3.后端接收到登錄請(qǐng)求后,將從數(shù)據(jù)庫(kù)中查詢出的密碼與session中的隨機(jī)碼拼接后,md5運(yùn)算,然后與前端傳遞的結(jié)果進(jìn)行比較。 為何要這樣? 該登錄方式,即使登錄請(qǐng)求被監(jiān)聽(tīng)到,回放登錄URL,由于隨機(jī)碼不匹配(監(jiān)聽(tīng)者的session中的隨機(jī)碼與被監(jiān)聽(tīng)者的session中的隨機(jī)碼相同概率可忽略),無(wú)法登錄成功。 該登錄方式,由于傳輸?shù)拿艽a是原密碼md5之后與隨機(jī)碼再次md5之后的結(jié)果,即使監(jiān)聽(tīng)者采用暴力破解的方式,也很難解密出密碼明文。 更進(jìn)一步 考慮到密碼輸入的方便性,好多用戶的密碼都設(shè)置的很短,并且不夠復(fù)雜,往往是6位數(shù)字字母組合,這樣的密碼md5之后保存到數(shù)據(jù)庫(kù),一旦數(shù)據(jù)庫(kù)數(shù)據(jù)泄露,簡(jiǎn)單密碼的md5結(jié)果很容易通過(guò)暴力破解的方式給解密出來(lái),何況md5出現(xiàn)了這么多年,可能已經(jīng)有不少字典了!同時(shí)為了方便用戶登錄的方便性,我們的系統(tǒng)一般不可能要求用戶設(shè)置很長(zhǎng)、很復(fù)雜的密碼!怎么辦?加固定鹽值。1.系統(tǒng)設(shè)置一個(gè)固定的鹽值,該鹽值最好足夠復(fù)雜,如:1qaz2wsx3edc4rfv!@#$%^&qqtrtRTWDFHAJBFHAGFUAHKJFHAJHFJHAJWRFA 2.用戶注冊(cè)、修改密碼時(shí),將用戶的原始密碼與我們的固定鹽值拼接,然后做md5運(yùn)算。 3.傳遞至后端,保存進(jìn)數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)中保存的密碼是用戶的原始密碼拼接固定鹽值后,md5運(yùn)算后的結(jié)果)。 4.登錄時(shí),將用戶的原始密碼與我們的固定鹽值進(jìn)行拼接,然后做md5運(yùn)算,運(yùn)算后的結(jié)果再拼接上我們的隨機(jī)碼,再次md5運(yùn)算,然后提交。 5.后端接收到登錄請(qǐng)求后,將從數(shù)據(jù)庫(kù)中查詢出的密碼與session中的隨機(jī)碼拼接后,md5運(yùn)算,然后與前端傳遞的結(jié)果進(jìn)行比較。 再再進(jìn)一步 1.加登錄驗(yàn)證碼,可預(yù)防人為地暴力登錄破解 2.賬戶鎖定,如果用戶密碼輸入錯(cuò)誤次數(shù)達(dá)到一定量后(如6次),則可以鎖定該賬號(hào) |
免責(zé)聲明:本站部分文章和圖片均來(lái)自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!
掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信