DES補足資料


DES_supplementary_material
、 Data Encryption Standard(DES)ブロック暗号で参照されるさまざまなテーブルについて詳しく説明します。
このドキュメントでは、すべてのビットとバイトがビッグエンディアンの順序で配置されています。つまり、ビット番号1は常に最上位ビットです。

コンテンツ
1 初期順列(IP)
2 最終順列(IP -1)
3 拡張機能(E)
4 順列(P)
5 順列選択1(PC-1)
6 順列選択2(PC-2)
7 代替ボックス(Sボックス)
8 キー生成
8.1 パリティビットを削除します 8.2 ビットローテーション 8.3 キー圧縮
9 参考文献
10 外部リンク

初期順列(IP)
image"
IP8 50 42 34 26 18 10 2 60 80 81 82 83
2012 4 62 54 46 38 30 22 14 120 121 122 123
4032 24 16 8 57 49 41 33 25 320 321 322 323
5143 35 27 19 11 3 61 53 45 430 431 432 4335 63 55 47 39 31 23 15 7
このテーブルは、64ビットブロックの入力順列を指定します。意味は次のとおりです。出力の最初のビットは入力の58番目のビットから取得されます。50番目のビットから2番目のビット、というように、出力の最後のビットは入力の7番目のビットから取得されます。
この情報は、わかりやすくするために表として示されています。これはベクトルであり、行列ではありません。

最終順列(IP -1)
Final permutation
IP1 40 8 48 16 56 24 64 32 10 11 12 13
5523 63 31 38 6 46 14 54 22 230 231 232 233
4513 53 21 61 29 36 4 44 12 130 131 132 133
353 43 11 51 19 59 27 34 2 30 31 32 3358 26 33 1 41 9 49 17 57 580
最終的な順列は、最初の順列の逆です。テーブルも同様に解釈されます。

拡張機能(E)
Expansion function
E2 1 2 3 4 5 4 5 6 20 21 22 23
910 11 12 13 12 13 14 15 16 100 101 102 103
1920 21 20 21 22 23 24 25 24 200 201 202 20329 28 29 30 31 32 1
拡張関数は、最初と最後の順列と同様に解釈されます。入力からのいくつかのビットが出力で複製されることに注意してたとえば、入力の5番目のビットは、出力の6番目と8番目のビットの両方で複製されます。したがって、32ビットのハーフブロックは48ビットに拡張されます。

順列(P)
P permutation
P6 7 20 21 29 12 28 17 1 60 61 62 63
1831 10 2 8 24 14 32 27 3 310 311 312 3136 22 11 4 25
P順列は、32ビットハーフブロックのビットをシャッフルします。

順列選択1(PC-1)
Permuted choice 1
PC-1 左57 49 41 33 25 17 9 1 58 570 571 572 573
1810 2 59 51 43 35 27 19 11 100 101 102 103 36 右63 55 47 39 31 23 15 7 62 630 631 632 633
2214 6 61 53 45 37 29 21 13 140 141 142 143 4 表の「左」と「右」の半分は、入力キーのどのビットが鍵スケジュール状態の左セクションと右セクションを形成するかを示しています。入力の64ビットのうち56ビットのみが選択されていることに注意して残りの8つ(8、16、24、32、40、48、56、64)は、パリティビットとして使用するために指定されました。

順列選択2(PC-2)
Permuted choice 2
PC-24 17 11 24 1 5 3 28 15 40 41 42 43
1912 4 26 8 16 7 27 20 13 120 121 122 123
3747 55 30 40 51 45 33 48 44 470 471 472 47353 46 42 50 36 29 32
この順列は、56ビットの鍵スケジュール状態から各ラウンドの48ビットのサブキーを選択します。この順列は、以下の8ビットを無視します。
順列選択2「PC-2」無視されたビット9、18、22、25、35、38、43、54。

代替ボックス(Sボックス)
SボックスS 1 x0000x x0001x x0010x x0011x x0100x x0101x
x0110xx0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x 0yyyy0 144 13 1 2 15 11 8 3 10 40 41 42 430 7
0yyyy1 015 7 4 14 2 13 1 10 6 150 151 152 1533 8
1yyyy0 41 14 8 13 6 2 11 15 12 10 11 12 135 0
1yyyy1 1512 8 2 4 9 1 7 5 11 120 121 122 1236 13S 2 x0000x x0001x x0010x x0011x x0100x x0101x
x0110xx0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x 0yyyy0 151 8 14 6 11 3 4 9 7 10 11 12 135 10
0yyyy1 313 4 7 15 2 8 14 12 0 130 131 132 13311 5
1yyyy0 014 7 11 10 4 13 1 5 8 140 141 142 1432 15
1yyyy1 138 10 1 3 15 4 2 11 6 80 81 82 8314 9S 3 x0000x x0001x x0010x x0011x x0100x x0101x
x0110xx0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x 0yyyy0 100 9 14 6 3 15 5 1 13 00 01 02 032 8
0yyyy1 137 0 9 3 4 6 10 2 8 70 71 72 7315 1
1yyyy0 136 4 9 8 15 3 0 11 1 60 61 62 6314 7
1yyyy1 110 13 0 6 9 8 7 4 15 100 101 102 1032 12S 4 x0000x x0001x x0010x x0011x x0100x x0101x
x0110xx0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x 0yyyy0 713 14 3 0 6 9 10 1 2 130 131 132 1334 15
0yyyy1 138 11 5 6 15 0 3 4 7 80 81 82 8314 9
1yyyy0 106 9 0 12 11 7 13 15 1 60 61 62 638 4
1yyyy1 315 0 6 10 1 13 8 9 4 150 151 152 1532 14S 5 x0000x x0001x x0010x x0011x x0100x x0101x
x0110xx0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x 0yyyy0 212 4 1 7 10 11 6 8 5 120 121 122 12314 9
0yyyy1 1411 2 12 4 7 13 1 5 0 110 111 112 1138 6
1yyyy0 42 1 11 10 13 7 8 15 9 20 21 22 230 14
1yyyy1 118 12 7 1 14 2 13 6 15 80 81 82 835 3S 6 x0000x x0001x x0010x x0011x x0100x x0101x
x0110xx0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x 0yyyy0 121 10 15 9 2 6 8 0 13 10 11 12 135 11
0yyyy1 1015 4 2 7 12 9 5 6 1 150 151 152 1533 8
1yyyy0 914 15 5 2 8 12 3 7 0 140 141 142 14311 6
1yyyy1 43 2 12 9 5 15 10 11 14 30 31 32 338 13S 7 x0000x x0001x x0010x x0011x x0100x x0101x
x0110xx0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x 0yyyy0 411 2 14 15 0 8 13 3 12 110 111 112 1136 1
0yyyy1 130 11 7 4 9 1 10 14 3 00 01 02 038 6
1yyyy0 14 11 13 12 3 7 14 10 15 40 41 42 439 2
1yyyy1 611 13 8 1 4 10 7 9 5 110 111 112 1133 12S 8 x0000x x0001x x0010x x0011x x0100x x0101x
x0110xx0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x 0yyyy0 132 8 4 6 15 11 1 10 9 20 21 22 2312 7
0yyyy1 115 13 8 10 3 7 4 12 5 150 151 152 1539 2
1yyyy0 711 4 1 9 12 14 2 0 6 110 111 112 1135 8
1yyyy1 21 14 7 4 10 8 13 15 12 10 11 12 136 11
この表は、DESで使用される8つのSボックスを示しています。各Sボックスは、6ビットの入力を4ビットの出力に置き換えます。6ビットの入力が与えられた場合、4ビットの出力は、外側の2ビットを使用して行を選択し、内側の4ビットを使用して列を選択することによって検出されます。たとえば、入力「0 1101 1」には、外部ビット「01」と内部ビット「1101」が最初の行が「00」で、最初の列が「0000」であることに注意してS-boxS5の対応する出力は、2行目の14列目の値である「1001」(= 9)になります。(S-boxを参照)。

キー生成
ユーザーから提供されるメインキーは64ビットです。以下の操作を行います。

パリティビットを削除します
灰色の位置(8x)のビットをドロップして、各ラウンドのさらなる操作のために56ビットのスペースを作ります。
パリティドロップテーブル
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
その後、ビットは次の表に従って並べ替えられます。
テーブルは行の主要な方法であり、つまり、
実際のビット位置=行* 8 +列のビットに置き換えます。
順列テーブル
1 2 3 4 5 6 7 8
0 57 49 41 33 25 17 9 1
1 58 50 42 34 26 18 10 2
2 59 51 43 35 27 19 11 3
3 60 52 44 36 63 55 47 39
4 31 23 15 7 62 54 46 38
5 30 22 14 6 61 53 45 37
6 29 21 13 5 28 20 12 4

ビットローテーション
ラウンドサブキーが選択される前に、キースケジュール状態の各半分がいくつかの場所で左に回転されます。この表は、回転する場所の数を指定します。
•キーは2つの28ビット部分に分割されます
•各部分は左(円形)に1ビットまたは2ビットシフトされます
•シフト後、2つのパーツが組み合わされて、56ビットの一時キーが再び形成されます。
ビット回転テーブル
ラウンド数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
左回転数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

キー圧縮
•圧縮Pボックスは、56ビットキーを対応するラウンドのキーとして使用される48ビットキーに変更します。
テーブルは行の主要な方法であり、つまり、
実際のビット位置=行* 8 +列のビットに置き換えます。
キー圧縮テーブル
1 2 3 4 5 6 7 8
1 14 17 11 24 01 05 03 28
2 15 06 21 10 23 19 12 04
3 26 08 16 07 27 20 13 02
4 41 52 31 37 47 55 30 40
5 51 45 33 48 44 49 39 56
6 34 53 46 42 50 36 29 32
この後、48ビットのラウンドキーを呼び出された関数、つまりラウンドに返します。

参考文献
データ暗号化規格(DES) (PDF)。米国国立標準技術研究所(NIST)。1999-10-25。FIPS PUB46-3。

外部リンク
DESアルゴリズムの図解”