在具有大塊大小的塊密碼中,密鑰如何映射到密文?
到目前為止我的理解:
- 對於 n 位塊大小,有 2 n 個明文 (P)
- 有P!可能的鍵
- 表示每個可能映射所需的位是 log 2 (P!) 向上取整
基本上,我的計算器以 8 位塊大小計算,因為密鑰長度太大,無法將所有可能的密鑰映射為 8 位塊大小。
我被引導理解的是,有一些方法可以使用更小的密鑰大小(如 128 位),但根據我的閱讀,有些加密使用更大的塊大小,如 32 位、64 位等沒有可行的方法將每個可能的密文映射到密鑰。
在我看來,如果使用 32 位塊大小,例如,使用 128 位,您只能映射可能的密文中的一小部分。我什至不知道如何問我想要理解的內容……這是如何工作的?我只是對此感到困惑。我想我想問的是,如果不可能將特定密鑰映射到特定的、唯一的密文值,那麼如果我只選擇 32 個隨機位,它實際上映射到什麼?似乎每個可能的密鑰都必須映射到多個密文。
分組密碼是一系列排列。 $$ F:{0,1}^k\times {0,1}^b \to {0,1}^b $$
而已!。關鍵 $ k \in {0,1}^k $ 代表家庭的排列之一。排列是一個可逆映射$$ P:{0,1}^b \to {0,1}^b. $$以上是從 $ 2^b $ 元素自身(分組密碼的輸入空間)。因此,每個元素都被映射。由於密鑰代表分組密碼排列的排列,因此每個明文都映射到某個密文。
有 $ 2^n! $ 排列,然而,通常,我們有 $ 2^{64},2^{128},2^{256} $ 等鍵空間。使用斯特林公式$$ 2^{b}! \approx \sqrt{2\pi 2^{b}} \bigl(2^{b}/e\bigr)^{2^{b}}. $$將其插入 AES-256
$$ 2^{256}! \approx \sqrt{2\pi 2^{126}} \bigl(2^{256}/e\bigr)^{2^{256}} != \sqrt{2\pi 2^{256}} e^{-2^{256}} \bigl(2^{256}\bigr)^{2^{256}} \ggg 2^{256} $$
因此,實際上沒有辦法表示所有可能的排列。
我們希望分組密碼必須與隨機排列無法區分。這不是一件容易的事,因為即使在 20 年後,還沒有人證明 AES 是 PRP,但我們相信它是。
我想我想問的是,如果不可能將特定密鑰映射到特定的、唯一的密文值,那麼如果我只選擇 32 個隨機位,它實際上映射到什麼?似乎每個可能的密鑰都必須映射到多個密文。
如果您選擇隨機密鑰或分組密碼的任何密鑰,則從加密全零明文開始加密全一明文。由於密鑰選擇了一個排列,因此每個排列都是不同的密文值。
你也可以這樣看
- 無論其輸入值如何,都會處理分組密碼的輸入,並將其映射(加密)為密文。由於分組密碼需要解密,即反向映射,那麼每個密文映射回明文$$ m = D_k(E_k(m)) $$在同一個鍵下。
多個值是不可能的,因為我們有一個排列。即使它不是函式,請記住函式只能將輸入映射到範圍內的一個值。
一個有教育意義的例子:
考慮分組密碼$$ F:{0,1}^2\times {0,1}^3 \to {0,1}^3 $$它具有 2 位密鑰空間和 3 位塊大小。可能的排列數是 $ 2^3! =40320 $ 並註意它不是 2 的冪。將以下排列視為由其中一個鍵選擇的排列之一 $ k_1,k_2,k_3,k_4 $ 的分組密碼。
$$ P = \begin{pmatrix}0& 1 & 2 & 3 & 4 & 5 & 6 & 7 \7 & 2 & 4 & 0 & 3 & 5 & 6 & 1 \end{pmatrix} \text{ and } $$
正如我們所看到的,隨著排列;
- 密碼的所有輸入都映射到一個
- 根據使逆排列成為可能的排列的性質,它們被 1-1 映射。