是否有任何分組密碼可以證明沒有等效密鑰?
有 $ 2^n! $ 可能的排列 $ n $ 位塊密碼 $ E_k:{0,1}^n \rightarrow {0,1}^n $ ,以及任何給定的鍵 $ k $ 隨機選擇這些排列之一。將等效鍵定義為一對鍵 $ k \neq k^\prime $ 在哪裡 $ \forall P:E_k(P) = E_{k^\prime}(P) $ 和 $ P\in{0,1}^n $ . 對於現實的密碼參數,這種對存在的機率非常低。可以證明分組密碼沒有等效密鑰嗎?
是的,一些分組密碼可證明沒有等效密鑰。
首先,通過將密鑰和消息空間限制為可列舉的東西,很容易展示這樣的分組密碼。當然,這使密碼不安全。
但是我們也可以在選擇明文攻擊下構造這樣一個安全的分組密碼。假設具有相同密鑰和塊空間的安全塊密碼(例如 AES-128)。筆記 $ E_k(x) $ (分別。 $ D_k(x) $ ) 用於加密(分別解密) $ x $ 下鍵 $ k $ . 並定義 $$ E’_k(x)=\begin{cases} 0,&\text{if }x=k\ E_k(k),&\text{if }x\ne k\text{ and }x=D_k(0)\ E_k(x),&\text{otherwise} \end{cases} $$ 換句話說, $ E’_k $ 是相同的功能 $ E_k $ , 除了可能的輸入 $ k $ 和 $ D_k(0) $ ,交換哪些輸出。
請注意,對於任何固定 $ k $ , 功能 $ E’_k $ 是明確定義的並且是塊空間的排列,包括在極少數情況下 $ E_k(k)=0 $ , 退化為 $ E’_k=E_k $ . 因此 $ E’ $ 是分組密碼。並且在選擇明文攻擊下證明是安全的,如果 $ E $ 是,因為對加密預言機的訪問沒有提供有效的方法來查詢 $ k $ 或者 $ D_k(0) $ .
對應的解密是 $$ D’k(x)=\begin{cases} k,&\text{if }x=0\ D_k(0),&\text{if }x\ne0\text{ and }x=E_k(k)\ D_k(x),&\text{otherwise} \end{cases} $$ 而且因為 $ k=D’k(0) $ ,不能有等價的鍵。對於 if 鍵 $ k_0 $ 和 $ k_1 $ 產生相同的雙射 $ E′{k_0} $ 和 $ E′{k_1} $ ,然後逆雙射 $ D′{k_0} $ 和 $ D′{k_1} $ 會是一樣的,因此我們會有 $ D’{k_0}(0)=D’{k_1}(0) $ , 因此 $ k_0=k_1 $ ; 現在通過對立,不同的鍵必須產生不同的雙射,QED