PC2是如何設計的?
我正在嘗試了解 DES。誰能解釋答案DES Key Schedule Algorithm之一中給出的表格。我的問題是 Ks 的第一個條目來自哪裡。即
15 18 12 25 2
等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 15 18 12 25 2 6 4 1 16 7 22 11 24 20 13 5 27 9 17 8 28 21 14 3 2 16 19 13 26 3 7 5 2 17 8 23 12 25 21 14 6 28 10 18 9 1 22 15 4 3 18 21 15 28 5 9 7 4 19 10 25 14 27 23 16 8 2 12 20 11 3 24 17 6 4 20 23 17 2 7 11 9 6 21 12 27 16 1 25 18 10 4 14 22 13 5 26 19 8 5 22 25 19 4 9 13 11 8 23 14 1 18 3 27 20 12 6 16 24 15 7 28 21 10 6 24 27 21 6 11 15 13 10 25 16 3 20 5 1 22 14 8 18 26 17 9 2 23 12 7 26 1 23 8 13 17 15 12 27 18 5 22 7 3 24 16 10 20 28 19 11 4 25 14 8 28 3 25 10 15 19 17 14 1 20 7 24 9 5 26 18 12 22 2 21 13 6 27 16 9 1 4 26 11 16 20 18 15 2 21 8 25 10 6 27 19 13 23 3 22 14 7 28 17 10 3 6 28 13 18 22 20 17 4 23 10 27 12 8 1 21 15 25 5 24 16 9 2 19 11 5 8 2 15 20 24 22 19 6 25 12 1 14 10 3 23 17 27 7 26 18 11 4 21 12 7 10 4 17 22 26 24 21 8 27 14 3 16 12 5 25 19 1 9 28 20 13 6 23 13 9 12 6 19 24 28 26 23 10 1 16 5 18 14 7 27 21 3 11 2 22 15 8 25 14 11 14 8 21 26 2 28 25 12 3 18 7 20 16 9 1 23 5 13 4 24 17 10 27 15 13 16 10 23 28 4 2 27 14 5 20 9 22 18 11 3 25 7 15 6 26 19 12 1 16 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 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 42 53 32 38 48 56 31 41 52 46 34 49 45 50 40 29 35 54 47 43 51 37 30 33 2 43 54 33 39 49 29 32 42 53 47 35 50 46 51 41 30 36 55 48 44 52 38 31 34 3 45 56 35 41 51 31 34 44 55 49 37 52 48 53 43 32 38 29 50 46 54 40 33 36 4 47 30 37 43 53 33 36 46 29 51 39 54 50 55 45 34 40 31 52 48 56 42 35 38 5 49 32 39 45 55 35 38 48 31 53 41 56 52 29 47 36 42 33 54 50 30 44 37 40 6 51 34 41 47 29 37 40 50 33 55 43 30 54 31 49 38 44 35 56 52 32 46 39 42 7 53 36 43 49 31 39 42 52 35 29 45 32 56 33 51 40 46 37 30 54 34 48 41 44 8 55 38 45 51 33 41 44 54 37 31 47 34 30 35 53 42 48 39 32 56 36 50 43 46 9 56 39 46 52 34 42 45 55 38 32 48 35 31 36 54 43 49 40 33 29 37 51 44 47 10 30 41 48 54 36 44 47 29 40 34 50 37 33 38 56 45 51 42 35 31 39 53 46 49 11 32 43 50 56 38 46 49 31 42 36 52 39 35 40 30 47 53 44 37 33 41 55 48 51 12 34 45 52 30 40 48 51 33 44 38 54 41 37 42 32 49 55 46 39 35 43 29 50 53 13 36 47 54 32 42 50 53 35 46 40 56 43 39 44 34 51 29 48 41 37 45 31 52 55 14 38 49 56 34 44 52 55 37 48 42 30 45 41 46 36 53 31 50 43 39 47 33 54 29 15 40 51 30 36 46 54 29 39 50 44 32 47 43 48 38 55 33 52 45 41 49 35 56 31 16 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
它們是關鍵時間表期間 PC2 的輸出。PC2表;
$$ \begin{array}{|c|c|c|c|c|c|}\hline 14 & 17 & 11 & 24 & 1 & 5\ \hline 3 & 28 & 15 & 6 & 21 & 10\\hline 23 & 19 & 12 & 4 & 26 & 8\\hline 16 & 7 & 27 & 20 & 13 & 2\\hline 41 & 52 & 31 & 37 & 47 & 55\\hline 30 & 40 & 51 & 45 & 33 & 48\\hline 44 & 49 & 39 & 56 & 34 & 53\\hline 46 & 42 & 50 & 36 & 29 & 32\ \hline \end{array} $$
我們只看 $ C $ 註冊地圖。這 $ D $ 註冊地圖將是類似的。
將 PC1 前半部分的輸出編號為;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
現在輸出可以計算為:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - index 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 - rotate 1 PC1's first half to left 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 - apply PC2 left half 15 18 12 25 2 6 4 1 16 7 22 11 24 20 13 5 27 9 17 8 28 21 14 3 - get this 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 3 - rotate 1 to PC1's first half left 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 - apply PC2 left half 16 19 13 26 3 7 5 2 17 8 23 12 25 21 14 6 28 10 18 9 1 22 15 4 - get this
請注意,有時您會看到向左旋轉 2,因為旋轉量是根據輪數在密鑰計劃中定義的;
$$ \begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}\hline \text{Number of Round } & 1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16\ \hline \text{Number of Left rotations} & 1&1&2&2&2&2&2&2&1&2&2&2&2&2&2&1\ \hline \end{array} $$
根據此評論,有人詢問PC2 是如何設計的。
PC2 是從 64 位 DES 密鑰轉換為 16 輪中每一輪的 48 位子密鑰的最後一個組件。我們檢查了該轉換的組成部分。
64 位 DES 密鑰首先由 PC1 減少為 56 位 CD 值。這是 IBM 設計人員(想要一個大的安全密鑰,最初是 128 位,然後是 64 位)和 NSA(希望能夠在必要時以合理的成本通過蠻力破解 DES 並因此推動 48 -位密鑰);請參閱此歷史記錄。
CD 分為 C 和 D,每個 28 位,每個都根據密鑰輪換時間表進行輪換,根據輪數將 C 和 D 中的每一個輪換 1 或 2 位。然後 PC2 從旋轉後的 CD 中選擇 48 位。
因此,當我們將問題中的兩個表並排放置(刪除
Bit
列)時,在生成的密鑰選擇表(以下稱為 KST)中,16 行中的每一行都包含 48 個整數,即位的 CD 中的數字形成與 KST 的那一行相對應的回合的子密鑰。第一行比 PC2 多一個(將 19 替換為 1,將 57 替換為 19,以說明 C 和 D 中的旋轉)。下一行是通過重複該添加過程一到兩次獲得的,具體取決於密鑰輪換時間表。該過程以等於 PC2 的最後一行結束(這簡化了使用相同的電路進行解密和加密)。在 56 位的有限有效密鑰大小內,PC2 的設計試圖使 DES 盡可能安全。為實現該目標,密鑰輪換計劃和 PC2 的組合是這樣的:
- C 的位被隔離到 S-boxes 1..4,D 的位被隔離到 S-boxes 5..8(PC2 的前半部分包含 1..28 中的整數,而第二部分包含 29..56 中的整數) .
我只能推測這是為了簡化某些東西的設計:PC2、E、P 和/或 S-box 符合某些標準、模擬、晶片佈局?- 一個密鑰位在一輪中從不使用兩次(PC2 中沒有重複,等效於 KSC 的任何一行)。
- 未在一輪中使用的密鑰位總是在下一輪和上一輪中使用(如果在$$ 1,56 $$不在 KST 的一行中,則在下一行和上一行中)。
- 如果兩個位在一輪中進入同一個 S 表,那麼它們在接下來和前幾輪中都不會進入(如果我們將 KST 的每一行中的 48 個數字分成 8 個塊,每塊 6,那麼塊不會出現在下一行和前幾行的同一塊中)。
我查看了 Don Coppersmith 的數據加密標準 (DES) 及其對攻擊的強度(IBM 期刊,1994 年)。它說明了 S-box 和擴展 E 的基本原理,但沒有說明 PC2。到目前為止,我沒有找到一個參考。可以想像 PC2 和 E 被共同優化以實現快速擴散。