DESの初期順列(IP)とは?仕組みと役割をわかりやすく解説
DESの初期順列(IP)とは
初期順列(IP:Initial Permutation)は、DES暗号化処理の開始時に一度だけ実行される処理です。DESでは、平文全体がまず64ビットずつのブロックに分割され、その後、それぞれのブロックに対してIPが適用されます。この初期順列は、転置(トランスポジション)処理の一段階に位置づけられます。
初期順列は暗号化プロセス全体の中で一度だけ現れ、最初のラウンドの直前に実行されます。IPにおいてビットの転置がどのように進められるかは、下記の表に示された規則に従います。
初期順列の基本的な考え方
例えば、元の平文ブロックの1ビット目は58ビット目の内容で置き換えられ、2ビット目は50ビット目の内容で置き換えられます。以降も同様の規則が続きます。つまり、これは元の平文ブロックのビット位置を入れ替える操作にほかなりません。
IPの概念
| 平文ブロック内のビット位置 | 置き換えられる内容のビット位置 |
|---|---|
| 1 | 58 |
| 2 | 50 |
| 3 | 42 |
| .... | .... |
| 64 | 7 |
初期順列と最終順列の関係
各順列は64ビットの入力を受け取り、一定の規則に従って並べ替えます。ここでは、代表的な入力ポートとそれに対応する出力ポートの関係を示しています。これらの順列は鍵を使用しない単純な転置(ストレート順列)であり、初期順列と最終順列は互いに逆の関係にあります。
例えば、初期順列では入力の58ビット目が出力の1ビット目になります。同様に、最終順列では入力の1ビット目が出力の58ビット目になります。
言い換えれば、この2つの順列の間にあるラウンド処理を省略した場合、初期順列に入った58ビット目は、最終順列から出てくる58ビット目と同じ位置に戻ることになります。
IPで使用される完全な転置表
IPで使用される完全な転置表を以下に示します。この表は、左から右へ、上から下へと読みます。例えば、表の最初の位置にある「58」は、IPの処理中に元の平文ブロックの58ビット目の内容が1ビット目の位置に書き込まれることを意味します。
同様に、表の40番目の位置には「1」が配置されています。これは、1ビット目の内容が元の平文ブロックの40ビット目の位置に書き込まれることを示しています。その他のすべてのビット位置についても、同じ規則が適用されます。
| 58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 | 60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
| 62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 | 64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
| 57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
| 61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
IP後の処理:LPTとRPTへの分割
IPが完了すると、得られた64ビットの順列済みテキストブロックは、2つの半分のブロックに分割されます。各半分のブロックは32ビットで構成されており、左側のブロックはLPT(Left Plain Text)、右側のブロックはRPT(Right Plain Text)と呼ばれます。その後、これら2つのブロックに対して16ラウンドの暗号化処理が実行されます。
-
DESのバリエーションとは?Double DESとTriple DESの違いを徹底解説
DESのバリエーションとは? データ暗号化標準(DES)には、主に以下の2つのバリエーションがあります。 Double DES(ダブルDES) Triple DES(トリプルDES) Double DES(ダブルDES)の仕組み Double DESは、同じ平文に対して2段階のDES処理を適用する暗号化方式です。各段階では異なる鍵を使用して平文を暗号化し、復号時には両方の鍵が必要になります。 64ビットの平文は、まず最初のDESインスタンスに入力され、1つ目の鍵を使って64ビットの中間テキストへと変換されます。続いて、この中間テキストが2番目のDESインスタンスに入力され、2つ目の鍵によ
-
情報セキュリティにおける拡張順列(Expansion Permutation)とは?DES暗号の仕組みを徹底解説
拡張順列とは 情報セキュリティ、とりわけ共通鍵暗号方式であるDES(Data Encryption Standard)の処理過程において、「拡張順列(Expansion Permutation)」は非常に重要な役割を担う操作です。この操作では、平文の右半分にあたる32ビットのデータ(R)を48ビットへと拡張します。その際、ビットの順序を入れ替えるだけでなく、特定のビットを意図的に繰り返し使用することも特徴です。 拡張順列の目的 拡張順列には、主に以下の2つの目的があります。 鍵とのサイズを揃えること:XOR演算を行うために、右半分のデータサイズをラウンド鍵(48ビット)と同じ大きさに揃えま