如果第一個密鑰位被翻轉,哪些 DES s-box 會受到影響?
而不是翻轉輸入位……如果翻轉密鑰的第一個位,那麼在 DES 的加密/解密期間哪些 s-box 會受到影響?
Permuted Choice 1 確定如何將輸入塊載入到 C 和 D 寄存器中:
Permuted Choice 1 是描述如何從輸入密鑰的 8 個連續字節載入 C 和 D 寄存器的選擇置換,注意 LSB 僅用於奇偶校驗。(字節順序中的大端位來自 IBM)。
置換選擇 2 確定哪些 C 和 D 寄存器位用作 f(R,K) 的輸入:
Permuted Choice 2 也是一種選擇置換,從 C 和 D 28 位寄存器中的每一個中選擇兩個 24 位值,這些寄存器根據密鑰調度進行移位。
DES 標準還定義了哪些選定的密鑰位與每個 S Box 相關聯:
這將 E 排列顯示為 R 異或的值,其中選定的密鑰位作為 8 個 S 盒的輸入。
密鑰調度會導致 C 和 D 寄存器中的輪換,從而在不同的輪次中使用不同的密鑰位。
程序keytab.c複製了 Meyers Metyas 書中 Cryptography 中的兩個表。
呼叫
keytab -b
將用每個位置的輸入塊索引填充輸入塊,將這些位置轉換為 C 和 D 寄存器中的適當位置,迭代密鑰調度並通過 PC2 為每一輪生成選定的密鑰,給出引用輸入的 Ks 位列表塊索引:Bit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 KS 1 10 51 34 60 49 17 33 57 2 9 19 42 3 35 26 25 44 58 59 1 36 27 18 41 2 2 43 26 52 41 9 25 49 59 1 11 34 60 27 18 17 36 50 51 58 57 19 10 33 3 51 27 10 36 25 58 9 33 43 50 60 18 44 11 2 1 49 34 35 42 41 3 59 17 4 35 11 59 49 9 42 58 17 27 34 44 2 57 60 51 50 33 18 19 26 25 52 43 1 5 19 60 43 33 58 26 42 1 11 18 57 51 41 44 35 34 17 2 3 10 9 36 27 50 6 3 44 27 17 42 10 26 50 60 2 41 35 25 57 19 18 1 51 52 59 58 49 11 34 7 52 57 11 1 26 59 10 34 44 51 25 19 9 41 3 2 50 35 36 43 42 33 60 18 8 36 41 60 50 10 43 59 18 57 35 9 3 58 25 52 51 34 19 49 27 26 17 44 2 9 57 33 52 42 2 35 51 10 49 27 1 60 50 17 44 43 26 11 41 19 18 9 36 59 10 41 17 36 26 51 19 35 59 33 11 50 44 34 1 57 27 10 60 25 3 2 58 49 43 11 25 1 49 10 35 3 19 43 17 60 34 57 18 50 41 11 59 44 9 52 51 42 33 27 12 9 50 33 59 19 52 3 27 1 44 18 41 2 34 25 60 43 57 58 36 35 26 17 11 13 58 34 17 43 3 36 52 11 50 57 2 25 51 18 9 44 27 41 42 49 19 10 1 60 14 42 18 1 27 52 49 36 60 34 41 51 9 35 2 58 57 11 25 26 33 3 59 50 44 15 26 2 50 11 36 33 49 44 18 25 35 58 19 51 42 41 60 9 10 17 52 43 34 57 16 18 59 42 3 57 25 41 36 10 17 27 50 11 43 34 33 52 1 2 9 44 35 26 49 Bit 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 KS 1 22 28 39 54 37 4 47 30 5 53 23 29 61 21 38 63 15 20 45 14 13 62 55 31 2 14 20 31 46 29 63 39 22 28 45 15 21 53 13 30 55 7 12 37 6 5 54 47 23 3 61 4 15 30 13 47 23 6 12 29 62 5 37 28 14 39 54 63 21 53 20 38 31 7 4 45 55 62 14 28 31 7 53 63 13 46 20 21 12 61 23 38 47 5 37 4 22 15 54 5 29 39 46 61 12 15 54 37 47 28 30 4 5 63 45 7 22 31 20 21 55 6 62 38 6 13 23 30 45 63 62 38 21 31 12 14 55 20 47 29 54 6 15 4 5 39 53 46 22 7 28 7 14 29 47 46 22 5 15 63 61 39 4 31 13 38 53 62 55 20 23 37 30 6 8 12 54 61 13 31 30 6 20 62 47 45 23 55 15 28 22 37 46 39 4 7 21 14 53 9 4 46 53 5 23 22 61 12 54 39 37 15 47 7 20 14 29 38 31 63 62 13 6 45 10 55 30 37 20 7 6 45 63 38 23 21 62 31 54 4 61 13 22 15 47 46 28 53 29 11 39 14 21 4 54 53 29 47 22 7 5 46 15 38 55 45 28 6 62 31 30 12 37 13 12 23 61 5 55 38 37 13 31 6 54 20 30 62 22 39 29 12 53 46 15 14 63 21 28 13 7 45 20 39 22 21 28 15 53 38 4 14 46 6 23 13 63 37 30 62 61 47 5 12 14 54 29 4 23 6 5 12 62 37 22 55 61 30 53 7 28 47 21 14 46 45 31 20 63 15 38 13 55 7 53 20 63 46 21 6 39 45 14 37 54 12 31 5 61 30 29 15 4 47 16 30 5 47 62 45 12 55 38 13 61 31 37 6 29 46 4 23 28 53 22 21 7 63 39
這些代表表 3-10 K(i) 中的第一組 24 個密鑰位,在輪 (i) 中使用的密鑰和表 3-11 在 K(i) 中的第二組 24 個密鑰位,在輪 (i) 中使用的密鑰) 見第 3 章。 數據加密標準 數據加密標準的描述部分和用於每輪 DES 的密鑰向量的生成小節,密碼學 電腦數據安全的新維度,副標題為安全的設計和實現指南系統,由 Carl H. Meyer 和 Stephen M. Matyas 於 1982 年出版。
表格展示了 16 輪 DES 的輸入塊索引中給出的置換選擇 2 選擇的 C 和 D 寄存器內容。
KS 位告訴我們每個輸入塊密鑰位在每一輪中使用哪些 S Box。
請注意,對於輸入塊,第 1 位(密鑰第一個字節的最高有效位)在 14 輪中用作 S 框 1 到 4 的輸入。
考慮到 e-suishi 的評論,答案可以通過閱讀或應用實踐的研究來實現。您還可以注意到 keytab 程序執行的過程與 fgrieu 的評論所描述的相匹配。
在這種情況下,keytab 通過提供一個表示輸入塊索引的整數值而不是表示二進制值的 1 或 0 來為 16 輪中的每一輪生成調度鍵。
這個想法來自 DES 的原始 BSD libcrypt 實現(des0.tar.gz,文件 crypt.c),它使用整數來表示各個位。
你的問題可能是一個技巧問題。如果您正在尋找“直接更改”,user1430 的答案就是答案。
但是,如果您在 S4/Round1 中翻轉 k1,您還至少修改了 S4 中的 2 位,然後,在 2 輪之間使用 P 和 E,您修改 Round2 48 位輸入的 2 到 6 位。等等