Protocol-Design
防止重放攻擊的挑戰/響應 - 使用 nonce 作為挑戰
我正在實施無線電協議並試圖防止重放攻擊。它是一個嵌入式系統,因此儲存 nonce 值不是一種選擇,因為系統中的每個節點都可以相互通信。
我的計劃是實施一個質詢響應系統來驗證通信的兩端。我的意圖不是單獨為挑戰生成唯一值,而是使用隨機數作為挑戰,然後使用 ChaCha20 和挑戰響應的預共享密鑰加密隨機數。
加密以前的隨機數是否安全?這不會是一個隨機的不可預測的值,但它將是唯一的,並且不會與用於加密目前數據包的隨機數相同。攻擊者將知道純文字和加密形式(他們知道協議),但這僅有助於暴力攻擊,我相信嗎?
數據包使用相同的密鑰通過 poly1305 進行身份驗證。
一般來說,對稱密碼不易受到已知明文的攻擊。所以一般來說,加密之前的隨機數是完全可能的。
對於多個節點,最好將發送者/接收者的身份包含在質詢中或至少包含在基於 poly 1305 的身份驗證中。否則,攻擊者可能會誘騙節點驗證與預期不同的節點。