Algorithm-Design

算法是否超過2字___我是_和2在這rds一世和和2^{word size}話安全嗎?

  • June 25, 2015

假設我們有一個 feistel 密碼或 feistel 偽隨機排列,它具有類似於 Treyfer 的 8 位函式(S-box),但具有更大的塊大小,如 16MB。這是這種偽隨機排列的範例:

extern const uint8_t s[256];
uint8_t x[16777216];
unsigned int r;
unsigned int i;
uint8_t t = x[0];

for (r = 0; r < 16; r++)
{
   for (i = 1; i < 16777216; i++)
       t = x[i] ^= s[t];

   t = x[0] ^= s[t] ^ r;
}

我們必須擔心內部碰撞嗎?是否有任何算法超過 $ 2^{word size} $ 話安全嗎?

首先,您不包含密鑰;我假設 sbox 是關鍵。

然而,即使有這樣的假設,它仍然不能滿足分組密碼的一般預期要求。在解密方向,任何一個字節的解密結果只取決於密文塊的 16 (!) 個字節。

這可以通過考慮圓函式的逆來看出:

t = x[16777215]
x[0] ^= s[t] ^ r;

for (i = 16777215; i > 0; i--)
{
   t = x[i - 1];
   x[i] ^= s[t];
}

通過上面的邏輯,我們看到 的結果x[i]只取決於x[i-1]and的初始值x[i];它獨立於 的所有其他初始值x。因此,將上述邏輯執行 16 輪,我們看到最終值x[i]僅取決於x[i-15]through的初始值x[i]

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