在 MITM 攻擊中重用加密消息?
我正在使用 RSA 公鑰私鑰將 AES 密鑰從每個客戶端發送到伺服器應用程序。然後我使用這個 AES 密鑰和 IV 在客戶端和伺服器之間進行通信。
對於這種 MITM 攻擊場景我該怎麼辦?
客戶
$$ encrypted text $$ —> 伺服器 MITM 可以再次使用此加密文本將其發送到伺服器。考慮這個加密文本是否是轉賬操作。
我為此計劃的解決方案是:
1-在每次發送到伺服器時附加新的 IV(加密),因此伺服器知道下一條消息 iv 是什麼
好吧,我現在只能考慮這個了
您沒有提到使用的加密模式。如果您使用的是 CBC,可預測的 IV 可能是個問題。我建議不要重複使用 IV 來防止消息重播。您可以在加密的有效負載內添加一個計數器並確保它在增加。請注意,當您添加針對重放的保護時,您需要考慮亂序等。在許多情況下,協議會添加時間戳並且只允許有限的差異。
我想出的一個解決方案是:
1- 客戶端:擷取目前時間(包括近戰秒數)並將其發送到伺服器
2- 伺服器:將此時間用作計數器
3- 伺服器:保存這些計數器的最後例如 50 條記錄
4- 伺服器:如果收到消息並且記錄中使用了時間 drop it
5- 伺服器:如果收到消息並且時間超過門檻值(這是不可能的。因為你無法趕上時間 :),開個玩笑),然後刪除它
6- 伺服器:如果收到帶有未來時間的消息(我的意思是你一定是在開玩笑。除非有人創造了一個時間旅行機器!),然後刪除它
第 7-5 和第 6 個數字應該與“或”運算符一起檢查。
第 4、5、6 個元素用於防止消息重放攻擊。
AES密鑰是從客戶端創建的,並使用具有創建時間的伺服器公鑰 ( **RSA ) 進行加密。**所以這將對客戶端進行身份驗證。
https://cdn3.bbcode0.com/uploads/2020/10/5/3972534b817d44957d5af877aa1ce81b-full.png
我錯過了什麼嗎?:(