Algorithm-Design
算法是否超過2字___我是_和2在這rds一世和和2^{word size}話安全嗎?
假設我們有一個 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]