重放攻擊-實例解析


主要講兩點,是么是重放攻擊?

                  ,怎么樣防止重放攻擊?

,重放攻擊:顧名思義,重:再次放的意思。

主機A要給主機B發送報文,中間重放攻擊的主人可以是A,或者是攻擊者C

:當是A時,表示A會重復發送相同的報文給B,

:當是C時,表示C截獲了A發送給B的報文,然后再偽裝成A給B發送其截獲的報文

重放攻擊的含義:主機A給主機B發送的報文被攻擊者C截獲了,然后C偽裝成A給B發送其截獲來的報文,而B會誤以為C就是A,就把回應報文發送給了C。

雖然A是加密的,但C根本不用破譯。

實例分析:登錄驗證

登錄驗證的基本流程:(4步)

1,前端:

     用戶輸入賬號,密碼,然后登錄

2,用戶在發送登錄請求之前,web端會首先對明文密碼進行md5加密(而加密后的密碼會儲存於后端的數據庫中)

3,提交賬號及md5加密后的密碼

4,請求到達后端,將 從數據庫中提取的賬號與密碼和現在提交的賬號與密碼進行比較,如果相同,則登錄成功。

那么在這中間會出現什么問題呢?

思考:這個過程安全嗎?

我們知道,在此過程中傳輸的是經過md5加密后的密碼,即使被監聽者截取到,而md5是不可逆的,明文密碼也不會泄露的 。

其實不然,監聽者無需解出密碼明文,即可登錄——因為監聽者只需將監聽到的URL(uniform )重放一下,即可冒充你的身份登錄系統。

下面我們講解一下稍微安全一點的登錄

關鍵是:進行了兩次加密,且攻擊者的session中的隨機碼與數據庫中的隨機碼相同的概率可以忽略。

1,進入前端用戶登陸界面時生成一個隨機碼(鹽值)(此隨機碼會在客戶端和后端session中各保存一個)

2,用戶在發送登錄請求之前,web端首先會對明文密碼進行md5加密,存於數據庫中,然后加密后的密碼再與鹽值連接,再進行md5加密

最后密碼=md5{[md5(明文密碼)]+隨機碼}

3,請求到達后端后,將 從數據庫中提取的md5加密后的密碼+后端session中的鹽值進行md5加密,與發送來的密文進行對比,若相同,則成功。

 更安全的登陸流程

1,系統隨機生成一個固定鹽值,uerooejioeueo%@*?.,*6hgk,>ikuolm 足夠復雜

2,當用戶注冊,修改密碼時,明文密碼會先於固定鹽值連接,進行md5加密,然后再與隨機碼連接再次進行md5加密

最后密碼=md5{【md5(明文密碼+固定鹽值)】+隨機碼}

最后更加完善的方式

1,設置登陸驗證碼、

2,錯誤達到一定次數,鎖定賬號幾分鍾

3,存數據庫前再加一次鹽,然后再md5一次,防止拖庫被猜密碼

,防御方案:

1,加隨機數:雙方只需要記住各自使用過的隨機數,不能有重復數,如果報文中有以前使用過的隨機數,則被認為是重放攻擊

                      優點:雙方不需要保持時間的同步,

                      缺點:需要額外保存使用過的隨機數,則需要保存和查詢開銷

2,加時間戳:時戳——代表當前時刻的數

                       而重放的時戳將相對遠離當前時刻

                      優點:不需要內存開銷

                      缺點:通信各方的計算機時鍾必須保持同步(同步越好,受攻擊的可能性越小)

3,加流水號:雙方在報文中添加一個逐步遞增的整數,則只要收到一個不連續的流水號報文(太大或者太小)就認為有重放威脅

                       優點:不需要時間同步,保存的信息量小

                       缺點:攻擊者如果對報文解密成功,就獲得了流水號進而會偽造數據


免責聲明!

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



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