重放攻擊(英語:replay attack,或稱為回放攻擊)是一種惡意或欺詐的重複或延遲有效數據的網絡攻擊形式。 這可以由發起者或由攔截數據並重新傳輸數據的對手英語Adversary (cryptography)來執行。這是「中間人攻擊」的一個較低級別版本。

這種攻擊的另一種描述是: 「從不同上下文將消息重播到安全協議的預期(或原始和預期)上下文,從而欺騙其他參與者,致使他們誤以為已經成功完成了協議運行。」[1]

重放攻擊工作原理

編輯
 
重播攻擊的示例圖。Alice(A)將她的哈希密碼發送給Bob(B)。Eve(E)嗅探並重新播放哈希。

假設Alice 想向Bob 證明自己的身份。 Bob 要求她的密碼作為身份證明,愛麗絲應盡全力提供(可能是在經過諸如哈希函數的轉換之後); 與此同時,Eve竊聽了對話並保留了密碼(或哈希)。交換結束後,Eve(冒充Alice)連接到Bob。當被要求提供身份證明時,Eve發送從Bob接受的最後一個會話中讀取的Alice的密碼(或哈希),從而授予Eve訪問權限。[1]

預防與對策

編輯

所有重放攻擊的一般對策

編輯

通過使用會話ID和組件編號標記每個加密的組件,可以防止重放攻擊。之所以可行,是因為為程序的每次運行創建了唯一的隨機會話ID,因此先前的結果更加難以複製。 由於每個會話的ID不同,攻擊者無法執行重放。[1]

關於會話標識符

編輯

會話標識符(也稱為會話ID、會話令牌)是一種可用來幫助避免重放攻擊的機制。 生成會話ID的方式如下。

  1. Bob將一次性令牌發送給Alice,Alice使用該令牌來轉換密碼並將結果發送給Bob。例如,她將使用令牌來計算會話令牌的哈希,並將其附加到要使用的密碼上。
  2. Bob使用會話令牌執行相同的計算。
  3. 當且僅當Alice和Bob的值都匹配時,登錄成功。
  4. 現在,假設攻擊者Eve已經捕獲了該值,並試圖在另一個會話中使用它。Bob將發送一個不同的會話令牌,當Eve用她捕獲的值進行答覆時,它將不同於Bob的計算,因此他將知道這不是Alice。

會話令牌應通過隨機函數選擇(通常使用偽隨機函數)。 否則,Eve可能可以冒充Bob,提出一些預測的未來令牌,並說服Alice在她的轉換中使用該令牌。 然後,Eve可以在稍後的時間重播她的答覆(當Bob實際上提供了先前預測的令牌時),Bob將接受身份驗證

一次性密碼

編輯

一次性密碼與會話令牌類似,因為一次性密碼在使用後(或在很短的時間內)就會過期。 除會話外,它們還可用於驗證單個交易,也可以在身份驗證過程中使用,以幫助在彼此通信的兩方之間建立信任。

隨機數和MAC

編輯

Bob還可以發送隨機數,但消息認證碼(MAC)應隨其後發送,Alice應檢查該消息。

時間戳

編輯

添加時間戳是防止重放攻擊的另一種方法。 同步應使用安全協議來實現。例如,Bob 定期廣播他的時間和MAC。當Alice要向Bob發送消息時,她會在消息中包含最佳的估計時間,這也是經過身份驗證的。 Bob僅接受時間戳在合理範圍內的消息。這種方案的優點是Bob不需要生成(偽)隨機數,而Alice不需要向Bob詢問隨機數。在單向或接近單向的網絡中,這可能是一個優勢。但是,如果重放攻擊執行得足夠快(即在該「合理」範圍內),則可以成功。

特定情況下的對策

編輯

Kerberos協議防護

編輯

Kerberos身份驗證協議包括一些對策。在重放攻擊的經典情況下,對手捕獲一條消息,然後在稍後的日期重放該消息以產生效果。例如,如果一個銀行計劃容易受到這種攻擊,那麼導致資金轉移的信息可以一遍又一遍地重放,以轉移比最初預期更多的資金。 但是,在Microsoft Windows Active Directory中實現的Kerberos協議包括使用涉及時間戳的方案來嚴重限制重放攻擊的有效性。 超過「生存時間(TTL)」的消息將被視為舊消息並被丟棄。[2]

已經提出了改進措施,包括使用三重密碼方案。這三個密碼與身份驗證服務器,票證授予服務器和TGS一起使用。這些服務器使用密碼在不同服務器之間使用秘密密鑰加密消息。這三個密鑰提供的加密有助於防止重放攻擊。[3]

Ad hoc網絡中的安全路由

編輯

無線隨意網絡也容易受到重放攻擊。在這種情況下,可以通過擴展AODV協議來改進身份驗證系統並使其更強大。這種改善Ad Hoc網絡安全性的方法以少量開銷增加了網絡的安全性。[4] 如果存在大量開銷英語Overhead (computing),則網絡將面臨變慢的風險,並且其性能將下降。因此,通過保持相對較低的開銷,網絡可以保持更好的性能,同時仍可以提高安全性。

質詢握手身份驗證協議

編輯

當使用密碼驗證協議(PAP)驗證其身份時,使用點對點協議(PPP)的客戶端進行的驗證和登錄很容易受到重放攻擊,因為進行身份驗證的客戶端會「明文」發送其用戶名和密碼, 然後,認證服務器響應此請求發送其確認;因此,攔截客戶端可以自由地讀取傳輸的數據,並將客戶端和服務器中的每一個模擬為彼此,以及隨後可以存儲客戶端憑據以供稍後模擬到服務器。 詢問握手認證協議(CHAP)通過使用來自身份驗證器的「質詢」消息代替客戶端使用基於共享機密(例如,客戶端密碼)的哈希計算值來響應,從而在身份驗證階段防止此類重播攻擊 ),身份驗證者將其與自己對挑戰和共享機密的計算進行比較,以對客戶端進行身份驗證。通過依靠自身尚未傳送的共享機密以及其他功能(例如,身份驗證器控制的挑戰的重複以及更改標識符和挑戰值),CHAP提供了針對重放攻擊的有限保護。[5]

重放攻擊敏感性的真實示例

編輯

有幾個真實的例子,說明如何使用重放攻擊以及如何檢測和修復問題以防止進一步的攻擊。

車輛遠程無鑰匙進入系統

編輯

為了方便用戶,道路上的許多車輛使用遠程無鑰匙系統或密鑰卡。 現代系統已針對簡單的重放攻擊進行了加固,但容易受到緩衝重放攻擊的影響。 通過在目標車輛的範圍內放置可以接收和發送無線電波的設備來執行此攻擊。 發送器將嘗試阻塞發送給它的任何RF車輛解鎖信號,同時將其放置在緩衝區中以備後用。 在進一步嘗試解鎖車輛時,發射器將阻塞新信號,將其緩存並播放舊信號,從而創建一個滾動緩衝,該緩衝比車輛領先一步。 稍後,攻擊者可能會使用此緩衝的代碼來解鎖車輛。[6][7]

文本相關的說話人驗證

編輯

各種設備使用說話者識別來驗證說話者的身份。 在依賴於文本的系統中,攻擊者可以記錄系統正確驗證的目標個人的語音,然後再次播放錄音以供系統驗證。 使用頻譜位圖從已驗證用戶的存儲語音中設計了一種對策。 在這種情況下,重放的語音具有不同的模式,然後將被系統拒絕。[8]

相關條目

編輯

參考文獻

編輯
  1. ^ 1.0 1.1 1.2 Malladi, Sreekanth. 关于防止对安全协议的重放攻击(英文). oai.dtic.mil. [2020-06-13]. (原始內容存檔於2016-12-20). 
  2. ^ Olsen, Geir. Kerberos身份验证101:了解Kerberos安全协议的要点(英文). Redmond Magazine. 1 February 2012 [2017-06-13]. (原始內容存檔於2019-03-31) (英語). 
  3. ^ Dua, Gagan. 使用三重密码在Kerberos身份验证协议中重播攻击防护(英文). International Journal of Computer Networks & Communications. 2013, 5 (2): 59–70. arXiv:1304.3550 . doi:10.5121/ijcnc.2013.5205. 
  4. ^ Zhen, Jane. Preventing Replay Attacks for Secure Routing in Ad Hoc Networks. 防止Ad Hoc网络中安全路由的重放攻击(英文). Lecture Notes in Computer Science 2865. 2003: 140–150. ISBN 978-3-540-20260-8. doi:10.1007/978-3-540-39611-6_13. 
  5. ^ Simpson, William Allen. RFC 1994 – PPP质询握手身份验证协议(CHAP)(英文). tools.ietf.org. [2018-09-12]. (原始內容存檔於2021-03-08) (英語). 
  6. ^ Beek, S. van de; Leferink, F. 远程无钥匙进入系统针对脉冲电磁干扰的脆弱性和可能的改进(英文). IEEE Transactions on Electromagnetic Compatibility. 1 August 2016, 58 (4): 1259–1265. doi:10.1109/TEMC.2016.2570303. 
  7. ^ Francillon, Aurelien. 现代汽车被动无钥匙进入和启动系统的攻击(英文) (PDF). eprint.iacr.org/. [8 December 2016]. (原始內容存檔 (PDF)於2019-04-12). 
  8. ^ Wu, Z.; Gao, S.; Cling, E. S.; Li, H. 信号和信息处理协会年度峰会和会议(APSIPA),2014年亚太地区(英文). 1 December 2014: 1–5. ISBN 978-6-1636-1823-8. doi:10.1109/APSIPA.2014.7041636.