[暗号] 鍵スケジュール
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 |
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数 |
---|---|
1 | 1 |
2 | 1 |
3 | 2 |
4 | 2 |
5 | 2 |
6 | 2 |
7 | 2 |
8 | 2 |
9 | 1 |
10 | 2 |
11 | 2 |
12 | 2 |
13 | 2 |
14 | 2 |
15 | 2 |
16 | 1 |
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 |
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回)行われ, サブ鍵が生成される.