為什麼 OTP 不易受到暴力攻擊?
我在Understanding Cryptography一書中看到了這個問題。
乍一看,似乎可以針對 OTP 系統進行詳盡的密鑰搜尋。給定的是一條短消息,假設用 40 位表示的 5 個 ASCII 字元,使用 40 位 OTP 加密。準確解釋為什麼即使有足夠的計算資源,詳盡的關鍵字搜尋也不會成功。
這讓我感到困惑,因為我認為據我所知,鑰匙只有 $ 40 $ 位,我可以嘗試所有可能的 $ 2^{40} $ 密鑰並用密文對它們進行異或以恢復消息……我有什麼遺漏嗎?如果我們假設攻擊者有計算能力進行窮舉搜尋,它怎麼會不起作用?
OTP 上的蠻力會給你各種有意義和無意義的消息。
例如,您有一個 4 個字元的加密文本:
weaw
. 現在暴力破解會給你各種有意義和無意義的資訊,比如:
- 爾維
- 地獄
- 路
- ….
現在,哪一個是真正的資訊?那將是困難的,甚至是不可能猜到的。
您缺少的是每個結果消息都是同樣可能的事實。無法驗證任何生成的消息確實是發送的消息。
如果你有 $ P_1P_2P_3P_4 \oplus K_1K_2K_3K_4 = C_1C_2C_3C_4 $ 其中每個 $ P $ , $ K $ 和 $ C $ 是一位,那麼 $ C_1C_2C_3C_4 $ 可以有任何可能的值。
現在假設你的蠻力會嘗試 $ A_1A_2A_3A_4 $ 作為關鍵,那麼 $ C_1C_2C_3C_4 \oplus A_1A_2A_3A_4 = Z_1Z_2Z_3Z_4 $ 也將具有任何價值。沒有辦法測試是否 $ Z_1Z_2Z_3Z_4 = P_1P_2P_3P_4 $ 儘管。由於不同位之間根本沒有關係*,因此每個* $ Z $ 價值將同樣可能。
這就是為什麼 OTP 對於特定大小的消息非常安全的原因。諸如 AES 之類的現代密碼確實在位之間具有(非常複雜的)關係,因此有可能檢查您是否具有一定數量的給定密鑰的正確明文。使用 OTP,您獲得純文字位的機會正是 $ 0.5 $ 每比特 - 即你不知道你是否猜對了。