Format-Preserving

AES + 自行車步行如何用作 FPE?

  • April 27, 2016

在閱讀了幾篇似乎提供相互矛盾的資訊的文章後,我有點困惑。基本上我想知道 AES 本身是否可以用作 FPE?如果是這樣,這是計算上禁止的事情,還是合理的事情。此外,我們如何單獨使用 AES + 騎自行車?

根據這篇論文,它說 FPE 的一種方法是

5.2 循環行走方法“循環行走通過重複應用 AES 或 3DES 對明文進行加密,直到密文進入可接受的範圍。加密的持續時間不是確定性的。”

如果是這種情況,一般結構是什麼(即如何設置您的 AES 加密器、密鑰、IV、模式等)

在那篇論文中,他們還有一個表格,總結了這種方法與其他方法相比的速度。

在此處輸入圖像描述

但在另一篇文章中指出,單獨使用自行車行走會非常昂貴,因為需要多次迭代才能獲得所需範圍內的值。

“那麼,為什麼我們不能只使用循環行走?因為它只有在塊大小近似正確的情況下才能很好地工作——如果有效集的大小比密碼的塊大小小很多,那麼你必須進行大量迭代以獲得範圍內的結果。因此,您不能使用 64 位分組密碼來加密 SSN,因為如果迭代,您最終不得不做一個令人望而卻步的數字;您需要使用 LR 構造一個大小近似正確的分組密碼,然後使用循環遍歷去除最後幾個值。”

我不確定上面比較表中的結果 1500 毫秒對於這種加密方案是否被認為是禁止的。

使用循環遍歷加密(小於 128 位的輸入)的一般結構是:

# IN, OUT are 128-bit unsigned integers in the range 0..MAX
OUT = AES(K, IN)
while OUT > MAX do OUT = AES(K, OUT)
return OUT

AES 會將您的 128 位輸入置換為看似隨機的 128 位輸出。關於 $ 1/2 $ 輸出的最高位為 0 的時間。關於 $ 1/4 $ 最高 2 位的時間都是 0。關於 $ 1/(2^n) $ 時間的前 n 位將全部為零。

上面的結構不斷循環,直到您的輸出巧合地在所需範圍內。這是不確定的:它可能發生在第一次迭代或十億次迭代中。從統計上看,平均而言,它可能會在迭代前後發生 $ 2^{128}/{MAX} $ .

如果您的 MAX 接近 $ 2^{128} $ 那麼騎自行車可以產生一種高效的 FPE 解決方案。但如果您的 MAX 很小 - 比如說 9 位數的帳號( $ MAX = 10^9 $ , 接近 $ 2^{30} $ ) 那麼你可以期待 $ 2^{98} $ 迭代以執行一個 FPE 加密。這比暴力破解 2-key TDES 更難,而且顯然在“禁止”的範圍內。

引用自:https://crypto.stackexchange.com/questions/29342