Des

PC2是如何設計的?

  • November 11, 2019

我正在嘗試了解 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 被共同優化以實現快速擴散。

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