Key-Derivation

DES 密鑰調度算法

  • August 20, 2018

通讀 DES 規範,它說密鑰PC-1最初被置換,然後向左移動 $ C $ 和 $ D $ . 然而,在它通過它再次排列之前PC-2並沒有提到如何 $ C $ 和 $ D $ 在通過之前放在一起PC-2

是否假定 $ C $ 是輸入的下半部分,上PC-2半部分是 $ D $ (這來自它說他們是 $ CD $ ),或者它們是否相乘/使用了其他一些操作?

光碟

CD統稱為 C 和 D 寄存器。它們同時使用和操作是獨立的。C 和 D連接在一起以指定 PC2。

置換選擇 2

PC2 是一個選擇排列。您可能會注意到所選密鑰的前 24 位來自 C 寄存器(CD(1 到 28)),後 24 位來自 D 寄存器(CD(29 到 56))。每個擁有的選定密鑰位的順序是非線性的。

PC2 表示為兩半以顯示 C 和 D

表格的左側部分可辨識為數字加密標準中的 PC2。

置換選擇 1

為了展示 C 和 D 寄存器是如何連接的,我們看一下 PC1。

PC1 到 C 和 D 寄存器映射

上表顯示了 PC1 如何將 64 位輸入從 8 位介面映射到兩個 28 位 C 和 D 寄存器,其中每個輸入字節的 LSB 是奇偶校驗位,高 7 位用作載入到 C 中的密鑰位和 D 寄存器。一旦載入了 C 和 D 寄存器,它們就會被獨立地移動(再循環)1 個位置或 2 個位置,以將每個輪密鑰與其鄰居區分開來。移位方向與加密和解密方向相反,顛倒密鑰調度順序。

C和D同時執行

下表繪製了用於加密的選定密鑰位與圓形密鑰,摘自 Carl Meyers 和 Stephen Metyas 的書Cryptography, A New Dimension in Computer Security,副標題為“安全系統設計和實施指南”,Wiley Interscience,1982,ISBN-0-471-04892- 5.

它是由這個答案的作者從程序 keytab ( keytab.c,作為 keytab -s 執行的) 生成的。它證明了 C 和 D 塊是獨立的,所選密鑰的前 24 位來自 C 寄存器,所選密鑰的後 24 位來自 D 寄存器。

KS 列和 Bit 行分別顯示 CD 的輪索引和選定的關鍵位。該表的格式為 a) 顯示 C 和 D 獨立再循環和 b) 適合 80 列顯示。

 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

您可能會注意到 KS16 顯示了數字加密標準中 Permuted Choice 2 的值。它說如果您實際使用循環移位寄存器來保存 C 和 D 寄存器,則可以在沒有移位操作之前進行解密。上表展示了同時操作。

C和D獨立使用

以下是輪函式 f(R,K) 中每個 S Box 的輸入的描述,用 E(R) 和 Ks 位表示。

以 E(R) XOR KS 表示的 S Box 輸入

KS 的每六位在與匹配的 E(R) 置換位進行異或後應用於八個 S 盒中的每一個。標題行顯示了應用於每個 S Box 的列地址位 (CA) 和行地址位 (RA)。

f(R,K) 實際上可以分解為與 R 的 nybble 寄存器相關的操作,通過 E 置換從相鄰的 nybbles 借用 Row Address R 位。C 寄存器選定的鍵輸出應用於 S 盒 1 - 4,而 D 寄存器選定的鍵輸出應用於 S 盒 5 - 8。

DES是硬體

您不應該對我們無法在不借助硬體術語的情況下描述 DES 感到驚訝。美國國家標準與技術研究院 (NIST) 的 Miles E. Smid 和 Dennis K. Branstad 有一篇題為“過去和未來的數據加密標準”的論文,首次出現在 Proceedings of the IEEE, vol. 76,沒有。5,pp. 550-559,1988 年 5 月(不符合作為美國政府工作的版權條件),區分基本標準、互操作性標準、介面標準和實施標準,並指出 DES 是互操作性標準。它描述瞭如何將 8 位介面與初始排列、反向初始排列和排列選擇 1 互連,並描述了哪些位在時間排序的硬體操作中是關聯的。

FIPS Pub 46(-1、-2 和 -3)中描述的數字加密算法描述了實現 IBM 塊密碼的硬體,通常稱為 DES,在美國專利3,958,0813,962,539中可以找到。使用 MSI(中型集成)設備受晶片數量限制的原始實現。今天很容易實現移位距離為一到兩個的移位寄存器,或者使用調度密鑰寄存器文件作為查找,或其他一些“更快”的方案。

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