新しいフォルダー(1)

メモです。よろしくおねがいします。

[暗号] 鍵スケジュール

ITC Advent Calendar 4日目.

今日はDESの鍵スケジュールについてです.

誰も興味ないとか知らねーです.

鍵スケジュール

鍵スケジュールとは, DESなどのブロック暗号において入力された64bitの鍵から48bitのサブ鍵を16個生成する部分である.

1. Permuted Choice 1(PC-1)

64bitの鍵から56ビットを選択して並べ替えを行う部分をPermuted Choice 1(PC-1)と呼ぶ.

64bitの鍵から56ビット(28ビット * 2)のビット列を生成するには, 以下のテーブルを用いて並び替えを行い, 選択される.

57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4

f:id:Q_tyokinuhata:20171202021829p:plain

DES supplementary material (August. 7, 2017, 08:20 UTC). In Wikipedia: The Free Encyclopedia. Retrieved from https://en.wikipedia.org/wiki/DES_supplementary_material

例えば1bit目は8番目に移動され, 2bit目は16番目に移動される.

選ばれなかった8bitは捨てても良いし, パリティビットとして鍵のチェックに使用しても良い.

また, 選択された56bitは28ビットずつに分割され, ラウンドを1つ進めるごとに1bitか2bitローテートされる.

これはラウンドによってローテートされるbit数が異なり, ラウンドとローテートされるbit数は以下のように対応している.

ラウンド bit数
10
11
12
13
14
15
16

2. Permuted Choice 2(PC-2)

Permuted Choice 2(PC-2)には, PC-1で生成された28bitのビット列をが入力される.

28bitのビット列からそれぞれ24bitずつ選択し, 並び替えもそれぞれ行う.

PC-2自体は固定であり, 毎回同じ位置のビットを選択し, 同じ順序で並び替え, 2つのビット列を結合することで48bitのサブ鍵が得られる.

各ビットは16ラウンドのうち, だいたい14回程度使用される.

14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32

f:id:Q_tyokinuhata:20171202023935p:plain

DES supplementary material (August. 7, 2017, 08:20 UTC). In Wikipedia: The Free Encyclopedia. Retrieved from https://en.wikipedia.org/wiki/DES_supplementary_material

上述したローテートとPC-2の処理がラウンドごと(つまり16回)行われ, サブ鍵が生成される.