自定義基於 AES 的攻擊模型的安全性
前提是:
- $ AES(plaintext, key) $ 是 128 位塊的標準 AES 塊密碼。
- $ \oplus $ 是標準的異或運算。
- $ K $ 是一個恆定的 128 位偽隨機值,用作 AES 操作的密鑰,攻擊者不知道。
- $ A $ 是另一個常數 128 位偽隨機值,攻擊者不知道。
- $ B $ 是一個可變的 128 位偽隨機值,攻擊者不知道。
- $ C $ 是一個已知的 128 位值,攻擊者可以自由選擇。
攻擊者可以:
- 獲取值 $ AES(A, K) $ (這是恆定的)。
- 獲取值 $ AES(B, K) $ , 對於盡可能多的不同 $ B $ 是他想要的(注意攻擊者不能選擇 $ B $ ).
- 測試是否 $ C = AES(A \oplus B, K) $ ; 他還可以獲得 $ AES(B, K) $ 成為這 2 $ B $ 的值相同。
攻擊者可以利用這些知識嗎?例如,他能猜出一個值嗎? $ C $ 等於 $ AES(A \oplus B, K) $ , 或恢復 $ K $ , $ A $ 或者 $ B $ ?
我從您的描述中猜測您正在描述一種操作模式,其中 $ A $ 是消息和 $ B $ 是特定塊的 IV/nonce。但是,您似乎做了一個例外,即攻擊者可以在有和沒有密碼的情況下知道密文 $ B $ 涉及。因此,您對密碼的使用相當奇怪。推廣到任意分組密碼:
- $ ENC(A, K) $ 揭示ECB模式密文
- $ ENC(B, K) $ 揭示了它的獨特性 $ B $
- $ ENC(A \oplus B, K) $ 使用適當的操作模式揭示密文。
因此,您基本上擁有一個帶有隨機輸入的過於復雜的 ECB 模式。價值 $ B $ 變得與攻擊者無關 $ ENC(A, K) $ . 如果攻擊者需要找到 $ B $ , 但是他們可以使用相同的歐洲央行突破,因為他們也知道 $ ENC(B, K) $ .
該系統因以下事實而得到加強: $ A $ 和 $ B $ 都是偽隨機生成的(希望以安全的方式),因此破壞歐洲央行的正常嘗試是無用的。對於任意數量的加密塊,您的系統也與隨機無法區分,因為您的輸入實際上是隨機的。
對於您的系統,假設您使用安全加密算法(AES 通常被認為是安全的)以比暴力破解更快的速度獲取有關輸入的任何有用資訊,即使使用 ECB 模式也是不可能的;除了在重複輸入的情況下,此時統計分析成為可能。但是對於隨機輸入,不可能進行統計分析。
我看到這個模型的唯一問題是你的系統的粗略 - 為什麼你的系統需要揭示 $ ENC(A, K) $ , $ ENC(B, K) $ 和 $ ENC(A \oplus B, K) $ ? 我會留給你決定。
我在想你的意思是一種OTP $ A $ 和 $ K $ 製作一個用於生成驗證碼的私鑰,由伺服器驗證 $ A $ 和 $ K $ ……沒關係,我只是想看看我能不能猜出你的意圖。