トリプルDES

トリプルDES（トリプルデス、英語: Triple DES、3DES）とは、共通鍵ブロック暗号であるDESを3回施す暗号アルゴリズム。正式名称はTriple Data Encryption Algorithm(TDEA、Triple DEA)。時代の流れに伴い、鍵長56ビットのDESでは総当たり攻撃への耐性が低くなったことから、これを補う目的で考案された。
概要.
平文を単にDESで3回暗号化するのではなく、暗号化→復号→暗号化の順に施す暗号アルゴリズムである。
ただし
この鍵の選択について3つのオプションが存在する。
理論.
3つの鍵{k1,k2,k3}を使うトリプルDES (-EEE) が、1つの鍵k4でDESを行う場合よりも安全性が向上するかが問題となる。ここで任意の{k1、k2、k3}について
とすると、全てのPについてC1 == C2となるk4が存在するならば、トリプルDES (-EEE) の鍵空間はDESと同じであり、安全性は向上しないことになる。この問題について、任意の{k1,k2}に対して、DES<k2>( DES<k1>( * ) ) == DES<k3>( * ) となるk3は存在しないことが証明され、DESを多段にすることで鍵空間は拡大できることが示された。つまり、DESは群をなさない。
安全性.
一般的にトリプルDESでは3つの異なる鍵 (Keying option 1) を用いて168ビットの鍵長を持っているが、中間一致攻撃により安全性は112ビット相当となる。2つの異なる鍵 (Keying option 2) を用いる場合は112ビットの鍵長を持っているが、選択平文攻撃または既知平文攻撃により安全性はせいぜい80ビット相当とされる。112ビットであっても総当たりには相当なコンピュータパワーが必要となるが、年々の性能向上を考慮し、アメリカ国立標準技術研究所は2023年末をもって全てのアプリケーションで廃止するとしている。
実利用.
DESと同じアルゴリズムで簡単に実装できることから、ICカードの共通仕様であるEMVなどをはじめ現在でも広く利用されている。
ただし、安全性が実質112ビットまでとなることや、DESを3回施すことで計算負荷も3倍となることから、現在はより安全で高速なAESに置き換わりつつある。AESをサポートしておらず、トリプルDESまでの対応にとどまるWindows XP等への下位互換性を維持する目的等で使われた。
実装ライブラリ.
トリプルDESをサポートしているライブラリは以下の通り。
（上記のライブラリの中の最近のバージョンでは、デフォルトビルドでトリプルDESが有効でないものもある。）