DES(Data Encryption Standard)は、1977年にアメリカ国立標準技術研究所(NIST)によって標準化されたブロック暗号方式です。DESは共通鍵暗号方式であり、同じ鍵を暗号化と復号に使用します。
DESは64ビットのブロックサイズと56ビットの鍵サイズを持ちます。鍵のサイズが56ビットであるため、実際に使用される鍵は64ビットであり、8ビットごとにパリティビットが追加されます。
DESの基本的な暗号化プロセスは以下の通りです。
- 鍵スケジュール: 56ビットの鍵を使用して、16ラウンドの鍵スケジュールが生成されます。各ラウンドの鍵は48ビットの部分鍵で構成されます。
- 初期置換: 平文ブロックが64ビットの初期置換表に基づいて並び替えられます。
-
ラウンド関数: 初期置換されたブロックが16ラウンドのラウンド関数を繰り返し適用されます。ラウンド関数は以下のステップで構成されます。
- 拡大置換: 32ビットの半ブロックが48ビットに拡大されます。
- 部分鍵のXOR: 拡大されたブロックと対応する部分鍵がXOR演算されます。
- S-ボックス置換: XOR結果を8つのS-ボックスに入力し、それぞれ4ビットの出力を得ます。
- P-置換: S-ボックスの出力が32ビットのP-置換表に基づいて並び替えられます。
- 左右のブロックの交換: ラウンドの終わりに左右のブロックが交換されます。
- 逆初期置換: 最後のラウンドの出力が64ビットの逆初期置換表に基づいて並び替えられます。
DESは長い間、暗号化の標準として広く使用されてきましたが、現在では鍵サイズの制約や計算能力の向上により、より強力な暗号方式が推奨されています。