嚴格來說,長度(鍵)> = 長度(消息)對於一次性墊來說是錯誤的嗎?
這是一個普遍的格言,對於一個完全秘密的一次性密碼,長度(鍵)> = 長度(消息)必須保持。但那是錯誤的不是嗎?至少數學很草率。嚴格的數學要求不是:-
熵(鍵)>=熵(消息)?
一個例子。考慮用於英語消息的 OTP。根據各種研究,我們估計英語的資訊熵率約為 1.6 位/字元。讓我們不要對確切的值爭論不休,因為對於這個例子來說任何 <8 都足夠了。現在採用隨機 0-255 值字節的標準 OTP 密鑰。這是 8 位/字節的熵。因此對於較長的英文 OTP 消息,密鑰可以是消息長度的 1/5,並且仍然保證完全保密。本質上,消息可以被壓縮五倍,然後與更短的二進制密鑰進行異或。
並且方程是可逆的。如果您使用基本的英文字母加密二進制數據(比如合理地不可壓縮的編譯程式碼),則與消息相比,您需要五倍的密鑰材料長度。
顯然,隨著消息字母的增加,數學要求趨向於原始格言。但是我的一般情況不是更準確嗎?
我錯了/困惑/餓了嗎?
length(key) >= length(message) DOES 仍然適用於您的壓縮案例。使用密鑰加密的“消息”不是該消息的含義,而是與密鑰進行異或的文字數據。如果你的意思可以無損地壓縮成一條短消息,那麼密鑰只需要和消息一樣長,而不是意思。
您的困惑源於對關於完全保密的局限性的正式聲明的誤解。讓我們首先回顧一下定義
完美保密。 一種加密方案 $ (\mathsf{Gen}, \mathsf{Enc}, \mathsf{Dec}) $ 有消息空間 $ \mathcal{M} $ 如果對於每個機率分佈 $ \mathcal{M} $ , 每一條消息 $ m \in \mathcal{M} $ , 和每一個密文 $ c \in \mathcal{C} $ 為此 $ \Pr[C = c] > 0 $ : $$ Pr[M = m | C = c] = Pr[M = m]. $$
請注意,這裡沒有提到位或位串,並且對於一般的消息空間,“消息的長度”並沒有很好地定義。經常被非正式地解釋為的陳述
密鑰必須至少與消息一樣長。
因此在這裡沒有任何意義。這是您似乎感到困惑的地方。可以證明的關於完全秘密的加密方案的正式陳述如下:
完全保密的限制。 如果 $ (\mathsf{Gen}, \mathsf{Enc}, \mathsf{Dec}) $ 是具有消息空間的完全保密的加密方案 $ \mathcal{M} $ 和關鍵空間 $ \mathcal{K} $ , 然後 $ |\mathcal{K}| \ge |\mathcal{M}| $ .
請注意,這只是關於密鑰空間大小的聲明!它沒有提到任何長度。現在,最著名的完全秘密的加密方案是一次性加密方案,它最常見的定義是位串¹和消息空間 $ \mathcal{M}={0,1}^n $ 對於一些消息長度 $ n $ 以及一個鍵空間 $ \mathcal{M}={0,1}^\ell $ 對於一些密鑰長度 $ \ell $ . 在這種特定情況下 $ |\mathcal{K}| \ge |\mathcal{M}| $ 確實意味著 $ \ell \ge n $ .
但是,在您的特定情況下,您使用了不同的消息空間,特別是您定義的 $ \mathcal{M} $ 成為“英語中的資訊”的集合,這是我們需要更正式地定義的東西。例如,我們可以將其定義為“英語中最多總長度的任何單詞連接 $ \ell $ 人物”。
在這種情況下,顯然 $ |\mathcal{M}| < 2^{8\ell} $ 因此顯然你不需要 $ |\mathcal{K}|\geq 2^{8\ell} $ 但該定義從未聲稱其他。您在這裡定義的根本不是一次性密碼,而是具有不同消息空間的不同加密方案。並且密鑰空間上的相同條件仍然成立。只是當編碼為位串時,這不一定對應於密鑰長度的直接下限。
¹從技術上講,一次性填充可以在任何有限字母表上的字元串上定義 $ \Sigma $ 只要我們可以定義一個訂單 $ \Sigma $ .