トリプルDES(Triple DESまたは3DES)は、共通
鍵を使用した
ブロック暗号の一種であり、元々はデータ
暗号化標準(DES)を3回施すことで安全性を向上させた
アルゴリズムです。この
暗号方式は、正式にはTriple Data Encryption Algorithm(TDEA)と呼ばれ、今もなお多くの場面で利用されています。
基本的な仕組み
トリプルDESは、
平文を単純に3回
暗号化するのではなく、特有の手法である“
暗号化→復号→
暗号化”というプロセスを踏みます。この方法により、基本的なDESよりも高い安全性を確保しています。具体的な数学的表記は以下のようになります。
C = encryptk3(decryptk2(encryptk1(P)))
ここで、Pは
平文、Cは生成される
暗号文をそれぞれ示しています。また、k1、k2、k3は使用する
鍵を表し、encryptとdecryptはDESのそれぞれのプロセスを示しています。
鍵の選択オプション
トリプルDESでは、
鍵の選択方法によって異なるセキュリティレベルが定義されています。
Keying option 1
このオプションでは、すべての
鍵(k1、k2、k3)が異なります。これにより、
鍵長は168ビットとなりますが、実際の
暗号強度は112ビット程度とされています。この構成は「3TDEA」や「3-key 3DES」と呼ばれます。
Keying option 2
この場合、k1とk2は異なりますが、k3はk1と同じです。
鍵長は112ビットとなり、実質的な
暗号強度は80ビット程度に低下します。しかし、中間一致攻撃に対する耐性はあります。これを「2TDEA」または「2-key 3DES」と言います。
Keying option 3
全ての
鍵が同一の場合、すなわちk1 = k2 = k3となります。この構造は通常のDESと同じく56ビットの
鍵長を持ち、したがってトリプルDESはDESと互換性を保ちながら機能します。
安全性の考察
一般的にトリプルDESは、3つの
鍵が異なるオプションが取られることが多いですが、それでも中間一致攻撃により真正の安全性は112ビット相当となります。
鍵が2つの場合でも通常の選択
平文攻撃に対しては80ビット以下の安全性であるとされます。
性能の進化に伴い、将来的には
総当たり攻撃が現実的に可能になることが予想されるため、
アメリカ国立標準技術研究所(NIST)は2023年末をもって全てのアプリケーションでの使用を廃止すると発表しています。
実際の利用状況
トリプルDESは、DESと同じ
アルゴリズムであるため実装が容易で、現在でもICカードの共通仕様であるEMVなど、さまざまな場面で使用されています。ただし、安全性の面から見ると、計算負担が増加し、より安全なAES(
Advanced Encryption Standard)への移行が進んでいます。今後は、AESサポートしていない旧世代のシステムとの互換性を維持するために、トリプルDESが引き続き使用される可能性もあります。
主要な実装ライブラリ
トリプルDESをサポートするライブラリも複数存在し、以下のものが一般的です:
- - Botan
- - Bouncy Castle
- - cryptlib
- - Crypto++
- - Libgcrypt
- - Nettle
- - OpenSSL
- - wolfSSL
これらのライブラリ内には、トリプルDESがデフォルトビルドで無効になっている場合もあるため、注意が必要です。
まとめ
トリプルDESは、基本のDESに比べて安全性を高めた
暗号化手法で、今日でも特定の状況下で利用されていますが、より進化した
暗号方式への移行が進んでいることも忘れてはなりません。