1. 程式人生 > >老生常談重放攻擊的概念(必看篇)

老生常談重放攻擊的概念(必看篇)

根據百科的解釋:重放攻擊(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.系統設定一個固定的鹽值,該鹽值最好足夠複雜,如:[email protected]#$%^&qqtrtRTWDFHAJBFHAGFUAHKJFHAJHFJHAJWRFA

2.使用者註冊、修改密碼時,將使用者的原始密碼與我們的固定鹽值拼接,然後做md5運算。

3.傳遞至後端,儲存進資料庫(資料庫中儲存的密碼是使用者的原始密碼拼接固定鹽值後,md5運算後的結果)。

4.登入時,將使用者的原始密碼與我們的固定鹽值進行拼接,然後做md5運算,運算後的結果再拼接上我們的隨機碼,再次md5運算,然後提交。

5.後端接收到登入請求後,將從資料庫中查詢出的密碼與session中的隨機碼拼接後,md5運算,然後與前端傳遞的結果進行比較。

再再進一步

1.加登入驗證碼,可預防人為地暴力登入破解

2.賬戶鎖定,如果使用者密碼輸入錯誤次數達到一定量後(如6次),則可以鎖定該賬號

相關推薦

老生常談攻擊概念()

根據百科的解釋:重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者傳送一個目的主機已接收過的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的正確性。 它是一種攻擊型別,這種攻擊會不斷惡意或欺詐性地重複一個有效的資料傳輸,重放

老生常談Java虛擬機器垃圾回收機制()

二、垃圾收集 垃圾收集主要是針對堆和方法區進行。 程式計數器、虛擬機器棧和本地方法棧這三個區域屬於執行緒私有的,只存在於執行

如何有效防止API的攻擊(轉自阿裏雲)

機器 阿裏雲 replay 方式 有效 識別 頻率 驗證 所有 API重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊,這種攻擊會不斷惡意或欺詐性地重復一個有效的API請求。攻擊者利用網絡監聽或者其他方式盜取API請求,進行一定的處理後,再把它重新發給認證服務

攻擊(reply attacks)

666重放攻擊(Replay Attacks)重放攻擊(Replay Attacks)1.什麽是重放攻擊顧名思義,重復的會話請求就是重放攻擊。可能是因為用戶重復發起請求,也可能是因為請求被攻擊者獲取,然後重新發給服務器。2.重放攻擊的危害請求被攻擊者獲取,並重新發送給認證服務器,從而達到認證通過的目的。我們可

利用JS提交表單的幾種方法和驗證()

www contain 功能 ner ble 四種 利用 comm pac 第一種方式:表單提交,在form標簽中增加onsubmit事件來判斷表單提交是否成功 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Burp Suite攻擊

工作 下載jdk 版本 下載 工作方式 repeat 總結 界面 之一 1、重放攻擊 重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發送一個目的主機已接收過的包,來達到欺騙系統的目

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

產生 是否 分鐘 lar 字串 無法 時間間隔 網絡上傳 產生一個隨機數 或者叫詢問-應答機制。 基於挑戰/應答(Challenge/Response)方式的身份認證系統就是每次認證時認證服務器端都給客戶端發送一個不同的"挑戰"字串,客戶端程序收到這個"挑戰"字串後,做出相

《區塊鏈100問》第67集:攻擊是什麽?

wrap data- 雙向 form 發生 是什麽 per alt 導致 如果比特幣真的發生分叉,作為普通用戶,最大的風險就是重放攻擊。   重放攻擊是什麽呢?如果比特幣分裂為一種或多種比特幣,如BTC1/BTC2/BTC3等,每個比特幣賬戶內將根據他的比特幣余額,同時存

JWT+ASP.NET MVC 時間戳防止攻擊

font 例子 memory provider ide 進入 div get encode 時間戳作用 客戶端在向服務端接口進行請求,如果請求信息進行了加密處理,被第三方截取到請求包,可以使用該請求包進行重復請求操作。如果服務端不進行防重放攻擊,就會服務器壓

IETF批准新的網際網路標準 防止攻擊

網際網路工程任務組(IETF)是開發和推廣網際網路標準的組織,其在上週批准了三項新標準,旨在提高身份驗證令牌的安全性,防止“重放攻擊”。  目前,身份驗證令牌被用於所有網路訪問中。當一個人登入他的Google或Facebook帳戶時,會生成一個身份驗證令牌並存儲在使用者瀏覽器內的

Java程式設計師們你和資深架構師之間差的不僅僅是年齡(進階

導讀:閱讀本文需要有足夠的時間,這裡會由淺到深帶你一步一步瞭解一個資深架構師所要掌握的各類知識點,文末也會有一些相應的學習資料分享,你也可以按照文章中所列的知識體系對比自身,對自己進行查漏補缺,覺得本文對你有幫助的話,可以點贊關注收藏一下。 目錄: 一、基礎篇 二、進階篇 三、高階篇

基於timestamp和nonce的防攻擊

  以前總是通過timestamp來防止重放攻擊,但是這樣並不能保證每次請求都是一次性的。今天看到了一篇文章介紹的通過nonce(Number used once)來保證一次有效,感覺兩者結合一下,就能達到一個非常好的效果了。 重放攻擊是計算機世界黑客常用的攻擊方式之一,所

CBC加密模式本身不能抵禦攻擊

  一些文章書籍中講到,ECB、CFB加密模式不能抵禦重放攻擊,舉的例子是:用舊報文替換部分新報文達到欺騙接收者的目的。言外之意,似乎CBC模式可以抵禦這種攻擊。實際情況是不是這樣呢?網上一通翻騰竟然無果,那就自己試試吧。雖然小白,不明白大佬的高明,但單從示例類

在BCH硬分叉後防止攻擊-1

導致新加密貨幣的硬分叉為加密交換運營商帶來了獨特的機遇和挑戰。Poloniex在最近的Bitcoin Cash硬叉之後面臨的一個挑戰是保護我們的客戶免受重播攻擊。由於SV鏈後面的開發團隊選擇在分叉後近兩週才實施重放保護,因此Poloniex工程師的任務是設計解決方案。 社群中的許多人對Poloniex如何應

在BCH硬分叉後防止攻擊-2

重放攻擊原理和防範措施——如何安全分離BCH的分來源:巴位元018-11-18 16:49:37 熱度 12390 第0章 引言 即將面臨的比特幣分裂,如何保證你的幣在分裂後肯定留下兩種幣?一個重點要防範的風險就是重放攻擊。 第1章 重放攻擊原理 首先講明白,

PHP 檔案寫入和讀取()

文章提綱: 一.實現檔案讀取和寫入的基本思路 二.使用fopen方法開啟檔案 三.檔案讀取和檔案寫入操作 四.使用fclose方法關閉檔案 五.檔案指標的移動 六.Windows和UNIX下的回車和換行 一.實現檔案讀取和寫入的基本思路: 1.通過fopen方法開啟檔案:$fp =fopen(

線上MYSQL同步報錯故障處理方法總結()

前言在發生故障切換後,經常遇到的問題就是同步報錯,資料庫很小的時候,dump完再匯入很簡單就處理好了,但線上的資料庫都150G-200G,如果用單純的這種方法,成本太高,故經過一段時間的摸索,總結了幾種處理方法。生產環境架構圖目前現網的架構,儲存著兩份資料,通過非同步複製做的

包嗅探和包回 —tcpdump、tcpreplay--攻擊

攻擊方式:tcpdump 進行嗅探,獲取報文訊息;然後用tcpreplay回放攻擊 arp欺騙可以使用 arpspoof kali linux有這三個工具   轉載地址https://www.cnblogs.com/jiayy/p/3447027.html

攻擊(Replay Attacks)

重放攻擊(Replay Attacks)   1.什麼是重放攻擊 顧名思義,重複的會話請求就是重放攻擊。 可能是因為使用者重複發起請求,也可能是因為請求被攻擊者獲取,然後重新發給伺服器。   2.重放攻擊的危害 請求被攻擊者獲取,並重新發送給認證伺服器

EIP155Block 防攻擊

// ChainConfig is the core config which determines the blockchain settings. // // ChainConfig is stored in the database on a per block basis. This m