Des

給定子鍵的 DES F 函式單射嗎?

  • January 1, 2015

DES F-function的兩個不同的半塊輸入,具有相同的輪子密鑰,是否有可能產生相同的輸出?

也就是說,如果我們提供兩個不同的半塊輸入 $ b_1 $ 和 $ b_2 $ 通過擴展階段,用一個常數子鍵對它們進行異或 $ K $ ,然後通過 S-box 傳遞擴展和異或的輸入,輸出是否可能 $ o_1 = F(b_1, K) $ 和 $ o_2 = F(b_2,K) $ 平等?

是的,它可以; 在 DES 輪函式中,兩個不同的“右側”輸入可以在 sbox 之後得出相同的值來異或到“左側”。

這是 DES 設計者深思熟慮的決定,他們認為這是一個重要的屬性。我不知道他們為什麼認為這很重要。

大約十年前,我寫了一些東西來探索 f(R,K) 可以為特定鍵生成什麼值。

eightbox -K c034a483 -E c034a485 K=11XX00_00XX00_00XX11_01XX00_10XX10_01XX00_10XX00_00XX11 S=c04212b2 B=5a02d23ca0a1 S[1-8]Row=0,2,1,0,1,0,0,3 1 S=c04212b2 B=553c7a3ca0a1 S[1-8]Row=1,1,3,2,1,0,0,3 2 S=c04212b2 B=ca02d23ca15f S[1-8]Row=2,2,1,0,1,0,1,1 3 K=11XX00_00XX00_00XX11_01XX00_10XX10_01XX00_10XX00_01XX00 S=c04212b2 B=5a02d23ca142 S[1-8]Row=0,2,1,0,1,0,1,0 1 S=c04212b2 B=553c7a3ca142 S[1-8]Row=1,1,3,2,1,0,1,0 2 K=11XX00_00XX00_00XX11_01XX00_10XX10_01XX00_10XX00_01XX01 S=c04212b2 unused 1 loops = 3, unused = 1, maxused = 3

該值B是由 E(R) xor K 組成的八個 S 框的 48 輸入。

8box 的命令行參數表示影響 S 盒輸入的 32 位鍵的開始鍵和結束鍵,這些鍵由於擴展排列而受到共享 R 位的影響。

eighbox 採用 sbox 輸出的候選範圍(S在本例中為單個值 0xc04212b2)和共享 E(R) 位的鍵值範圍,並確定B可以生成的輸入值 () S

對於三個候選鍵值,我們得到S=c04212b2(預設目標單 S 盒輸出)的 3、2 和 0 輸出值。

它告訴我們,對於固定的 K,我們不僅可以有重複的 f(R,K) 輸出,而且對於某些 K 值,一些 S 盒輸出是不可能的。

K 的其餘 16 位除了未共享的 R 位的值之外沒有其他依賴關係。設置這些 K 值進一步將 R​​ 的值限制為每個候選值的一種可能性B

這些知識的用處有限,因為我們不能直接看到 S Box 輸出,而是需要諸如差分密碼分析之類的東西,它是三輪確定性的,取決於輪次之間共享的 K 位的數量。

所以是的,有可能滿足標準輸出 o1=F(b1,K) 和 o2=F(b2,K) 等於上面證明的那樣。(而且證明很好。)

上面有足夠的資訊來為“衝突”生成一個完整的 48 位 K 值和匹配的 R 值。我認為我沒有看到超過 8 個不同的 R 值產生相同的S輸出,我必須探勘任何收集的數據來檢查或重新執行一系列S和/或K值。我之前可能沒有列印出 K 值,我必須為上面啟用它。

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