データ暗号化規格(DES / ˌ d iː ˌ iː ˈ ɛ s , d ɛ z /)は、デジタルデータの暗号化に使用される対称鍵アルゴリズムです。鍵長が56ビットと短いため、現代のアプリケーションには安全性が低すぎるものの、暗号技術の進歩に大きな影響を与えてきました。
このアルゴリズムは1970年代初頭にIBMで開発され、ホルスト・ファイステルによる初期の設計に基づいていました。機密扱いではない電子政府データの保護のための候補を提案するよう、米国標準局(NBS)から要請を受け、NBSに提出されました。1976年、国家安全保障局(NSA)との協議を経て、NBSは若干の修正を加えたバージョン(差分暗号解読法に対する耐性は強化されましたが、ブルートフォース攻撃に対する耐性は弱められました)を選択し、 1977年に米国の公式連邦情報処理標準(FIPS)として公開されました。 [ 2 ]
NSA承認の暗号化規格の公開は、その迅速な国際的採用と広範な学術的精査につながった。機密扱いの設計要素、対称鍵ブロック暗号設計における比較的短い鍵長、そしてNSAの関与が論争を引き起こし、バックドアの疑惑が浮上した。こうした疑惑を引き起こしたSボックスは、NSAが秘密裏に知っていた脆弱性(差分暗号解読)に対処するために設計されたものであった。しかし、NSAは鍵長を大幅に削減することも確実にしていた。[ 2 ] このアルゴリズムは長年にわたり学術的精査を受け、ブロック暗号とその暗号解読に関する現代的な理解が生まれた。
DESは、鍵サイズが56ビットと比較的短いため安全ではありません。1999年1月、distributed.netと電子フロンティア財団が協力し、22時間15分でDES鍵を公開解読しました(§ 年表を参照)。この暗号の理論的な弱点を示す分析結果もいくつかありますが、実際には実行不可能です。[ 3 ] DESはNISTによって標準としては撤回されました。[ 4 ]その後、セキュリティレベルを高めるためにトリプルDESという変種が開発されましたが、これも今日でも安全ではないと考えられています。DESは、Advanced Encryption Standard(AES) に取って代わられました。
一部の文書では、DES 標準とそのアルゴリズムを区別し、アルゴリズムをDEA (データ暗号化アルゴリズム) と呼んでいます。
DESの起源は1972年にさかのぼります。当時、米国政府のコンピュータセキュリティに関する国立標準局の調査で、機密扱いされていない機密情報を暗号化するための政府全体の標準が必要であることが判明しました。[ 5 ]
同じ頃、エンジニアのモハメド・アタラは1972年にアタラ社を設立し、最初のハードウェア・セキュリティ・モジュール(HSM)である「アタラ・ボックス」を開発し、1973年に商品化されました。これは安全なPIN生成キーでオフラインデバイスを保護し、商業的に成功を収めました。銀行やクレジットカード会社はアタラが市場を独占することを恐れ、国際的な暗号化規格の開発が促進されました。[ 4 ]アタラは銀行市場におけるIBMの初期の競合企業であり、DES規格の開発に携わったIBMの従業員から影響を受けた企業として挙げられています。[ 6 ]その後、 IBM 3624は、以前のアタラシステムと同様のPIN検証システムを採用しました。[ 7 ]
1973年5月15日、NBSはNSAと協議した後、厳格な設計基準を満たす暗号の提案を募集した。提出された提案はどれも適切ではなかった。2度目の募集は1974年8月27日に発行された。この時はIBMが、1973年から1974年にかけて開発された、以前のアルゴリズムであるホルスト・ファイステルのルシファー暗号をベースにした暗号を、適切と判断された候補として提出した。暗号の設計と分析に関わったIBMのチームには、ファイステル、ウォルター・タックマン、ドン・コッパースミス、アラン・コンハイム、カール・マイヤー、マイク・マティアス、ロイ・アドラー、エドナ・グロスマン、ビル・ノッツ、リン・スミス、ブライアント・タッカーマンがいた。
1975年3月17日、DESの提案が連邦官報に掲載されました。一般からの意見募集が行われ、翌年には提案された標準について議論するための公開ワークショップが2回開催されました。公開鍵暗号の先駆者であるマーティン・ヘルマン氏とホイットフィールド・ディフィー氏[ 1 ]からは批判が寄せられ、鍵長の短縮と謎の「Sボックス」がNSAによる不正な干渉の証拠であると指摘されました。NSAがアルゴリズムを密かに弱体化させ、他の誰にも暗号化されたメッセージを容易に解読できないようにしたのではないかという疑惑が持たれました。DESの設計者の一人であるアラン・コンハイム氏は、「我々はSボックスをワシントンに送りました。戻ってきたら、全てが異なっていました」と述べています。[ 9 ]米国上院情報特別委員会は、 NSAの行動を審査し、不正な関与があったかどうかを判断しました。1978年に公表された非機密扱いの調査結果概要の中で、委員会は次のように記しています。
DESの開発において、NSAはIBMに鍵サイズの縮小で十分であると納得させ、Sボックス構造の開発を間接的に支援し、最終的なDESアルゴリズムがNSAの知る限り統計的または数学的な弱点がないことを証明した。[ 10 ]
しかし、
NSAはアルゴリズムの設計に一切手を加えなかった。IBMはアルゴリズムを発明・設計し、それに関するすべての重要な決定を下し、合意された鍵サイズがDESが想定されるすべての商用アプリケーションにとって十分すぎるほどであることに同意した。[ 11 ]
DESチームのもう一人のメンバーであるウォルター・タックマンは、「DESアルゴリズムはIBM社内でIBM社員を使って完全に開発された。NSAは一本の線さえも指示しなかった!」と述べています。[ 12 ] 対照的に、NSAの暗号の歴史に関する機密解除された本には次のように記されています。
1973年、NBSは民間企業に対しデータ暗号化規格(DES)の策定を要請しました。最初の提案は期待外れだったため、NSAは独自のアルゴリズムの開発に着手しました。その後、研究・エンジニアリング担当副長官のハワード・ローゼンブラムは、IBMのウォルター・タックマンがルシファーの一般利用に向けた改良版を開発していることを知りました。NSAはタックマンに認可を与え、NSAと共同でルシファーの改良版を開発するよう依頼しました。[ 13 ]
そして
NSAはIBMと緊密に協力し、ブルートフォース攻撃を除くあらゆる攻撃に対するアルゴリズムの強化と、Sボックスと呼ばれる置換表の強化を図りました。一方で、NSAはIBMに対し、鍵長を64ビットから48ビットに短縮するよう説得を試みました。最終的にIBMは56ビット鍵で妥協しました。[ 14 ] [ 15 ]
Sボックスに隠された脆弱性についての疑惑の一部は、イーライ・ビハムとアディ・シャミールがブロック暗号を解読する一般的な方法である差分暗号解読法を独立に発見し、公開した1990年に払拭されました。DESのSボックスは、ランダムに選択された場合よりも攻撃に対してはるかに耐性があり、IBMが1970年代にこの手法を知っていたことを強く示唆しています。これは実際に当てはまり、1994年にドン・カッパースミスがSボックスの元の設計基準の一部を発表しました。[ 16 ]スティーブン・レヴィによると、IBMワトソンの研究者は1974年に差分暗号解読攻撃を発見し、NSAからその手法を秘密にしておくように求められました。[ 17 ]コッパースミスはIBMの秘密保持の決定について、「差分暗号解析は非常に強力なツールであり、多くの計画に利用される可能性があり、そのような情報が公になると国家安全保障に悪影響を与える可能性があるという懸念があったためだ」と述べている。レヴィはウォルター・タックマンの言葉を引用している。「彼らは我々にすべての文書に機密スタンプを押すように要求した。…実際、それらは米国政府の機密文書とみなされていたため、それぞれに番号を付けて金庫に保管した。彼らはそうするように言ったので、私はそうしました」。[ 17 ]ブルース・シュナイアーは、「NSAの『微調整』がDESのセキュリティを実際に向上させたことを学界が理解するのに20年かかった」と述べている。[ 18 ]
批判にもかかわらず、DESは1976年11月に連邦標準規格として承認され、1977年1月15日にFIPS PUB 46として発行され、すべての非機密データへの使用が認可されました。その後、1983年、1988年(FIPS-46-1として改訂)、1993年(FIPS-46-2)、そして1999年(FIPS-46-3)にも標準規格として再承認され、後者は「トリプルDES」(下記参照)を規定しました。2002年5月26日、DESは公募を経て、最終的に高度暗号化標準規格(AES)に置き換えられました。2005年5月19日、FIPS 46-3は正式に廃止されましたが、NISTは2030年まで機密性の高い政府情報に対してトリプルDESを承認しています。 [ 19 ]
このアルゴリズムはANSI X3.92(現在X3はINCITS、ANSI X3.92はANSI INCITS 92として知られています) [ 20 ]、NIST SP 800-67 [ 19 ]、ISO/IEC 18033-3 [ 21 ] ( TDEAの構成要素として)でも規定されています。
もう一つの理論的な攻撃法である線形解読法は1994年に発表されましたが、 DESが非常に実用的に攻撃可能であることを実証し、代替アルゴリズムの必要性を浮き彫りにしたのは、1998年に電子フロンティア財団が公開したDESクラッカーでした。これらの方法やその他の解読法については、この記事の後半でより詳細に説明します。
DESの導入は、暗号学、特にブロック暗号の解読法に関する学術研究のきっかけとなったと考えられています。NISTのDESに関する回顧録によると、

DESは典型的なブロック暗号です。DESは、固定長の平文ビット列を一連の複雑な演算によって同じ長さの暗号文ビット列に変換するアルゴリズムです。DESの場合、ブロックサイズは64ビットです。DESはまた、変換をカスタマイズするために鍵を使用するため、暗号化に使用された特定の鍵を知っている人だけが復号を実行できるとされています。鍵は表面上は64ビットで構成されていますが、実際にアルゴリズムで使用されるのはそのうち56ビットだけです。8ビットはパリティチェックのみに使用され、その後は破棄されます。したがって、有効な鍵長は56ビットです。
鍵は通常、奇数パリティ付きの8バイトで保存または送信されます。ANSI X3.92-1981(現在はANSI INCITS 92–1981として知られています)のセクション3.5によると、以下のようになります。
KEYの各8ビットバイトの1ビットは、鍵の生成、配布、および保存におけるエラー検出に利用されます。ビット8、16、…、64は、各バイトが奇数パリティであることを保証するために使用されます。
他のブロック暗号と同様に、DES自体は安全な暗号化手段ではなく、特定の動作モードで使用する必要があります。FIPS-81は、DESで使用するためのいくつかのモードを規定しています。[ 27 ] DESの使用に関する詳細なコメントは、FIPS-74に記載されています。[ 28 ]
復号化では暗号化と同じ構造が使用されますが、キーは逆の順序で使用されます。(これにより、双方向で同じハードウェアまたはソフトウェアを使用できるという利点があります。)
アルゴリズムの全体構造は図1に示されている。ラウンドと呼ばれる16の同一の処理段階がある。また、 IPとFPと呼ばれる初期順列と最終順列があり、これらは逆の動作をする(IPはFPの動作を「元に戻す」、FPはIPの動作を「元に戻す」)。IPとFPは暗号学的な意味合いを持たないが、1970年代半ばの8ビットベースのハードウェアへのブロックの読み込みを容易にするために追加された。[ 29 ]
メインラウンドの前に、ブロックは32ビットの2つの半分に分割され、交互に処理されます。この交差はFeistel方式として知られています。Feistel構造により、復号と暗号化は非常によく似たプロセスになります。唯一の違いは、復号時にサブキーが逆の順序で適用されることです。アルゴリズムの残りの部分は同一です。これにより、暗号化と復号のアルゴリズムを別々に用意する必要がないため、特にハードウェア実装が大幅に簡素化されます。
⊕記号は 排他的論理和(XOR)演算を表します。F関数は、ブロックの半分と鍵の一部をスクランブルします。F関数の出力は、ブロックの残りの半分と結合され、次のラウンドの前に半分が入れ替えられます。最終ラウンドの後、半分が入れ替えられます。これは、暗号化と復号化を同様のプロセスにするFeistel構造の特徴です。
図 2 に示す F 関数は、一度に半分のブロック (32 ビット) を操作し、次の 4 つのステージで構成されます。

S ボックスからの置換の交互、および P ボックスと E 展開からのビットの順列は、それぞれいわゆる「混乱と拡散」をもたらします。これは、1940 年代にクロード・シャノンが安全かつ実用的な暗号に必要な条件として 特定した概念です。

図3は、暗号化のための鍵スケジュール、つまりサブキーを生成するアルゴリズムを示しています。まず、Permuted Choice 1(PC-1)によって、最初の64ビットから56ビットの鍵が選択されます。残りの8ビットは破棄されるか、パリティチェックビットとして使用されます。次に、56ビットは28ビットずつ2つの半分に分割され、各半分は個別に扱われます。次のラウンドでは、両方の半分が1ビットまたは2ビット(ラウンドごとに指定)だけ左に回転され、Permuted Choice 2(PC-2)によって48ビットのサブキーが選択されます。これは、左半分から24ビット、右半分から24ビットです。この回転(図では「<<<」で示されています)は、各サブキーで異なるビットセットが使用されることを意味します。各ビットは、16個のサブキーのうち約14個で使用されます。
復号の鍵スケジュールも同様で、サブ鍵の順序は暗号化とは逆になります。この変更点を除けば、プロセスは暗号化と同じです。すべてのローテーションボックスに同じ28ビットが渡されます。
DES アルゴリズムの 疑似コードは次のとおりです。
// すべての変数は符号なし64ビットです// 前処理: バイト単位のサイズ差でパディングし、長さが64ビットの倍数になるようにメッセージをパディングします。var key // ユーザーが指定したキーvar keys [ 16 ] var left , right// キーを生成する// PC1 (64 ビットから 56 ビット) key := permutation ( key , PC1 ) left := ( key rightshift 28 ) and 0xFFFFFFF right := key and 0xFFFFFFFiが1から16の場合、右: =右左回転KEY_shift [ i ]左:=左左回転KEY_shift [ i ] var concat := (左左シフト28 )または右// PC2 (56ビットから48ビット)キー[ i ] := permutation ( concat , PC2 )で終了// メッセージを復号するには、キーの順序を逆にします。//パディングされたメッセージの64ビットチャンクごとに暗号化または復号化します。do var tmp// IP chunk := permutation ( chunk , IP ) left := chunk rightshift 32 right := chunk and 0xFFFFFFFF for i from 1 to 16 do tmp := right // E (32bits to 48bits) right := expansion ( right , E ) right := right xor keys [ i ] // Substitution (48bits to 32bits) right := substitution ( right ) // P right := permutation ( right , P ) right := right xor left left := tmp end for // Concat right and left var cipher_chunk := ( right leftshift 32 ) or left // FP cipher_chunk := permutation ( cipher_chunk , FP ) end forDESの暗号解読に関する情報は他のどのブロック暗号よりも多く公開されているものの、現在までに最も実用的な攻撃は依然としてブルートフォース攻撃である。いくつかのマイナーな暗号解読特性が知られており、理論的な複雑さはブルートフォース攻撃よりも低いものの、実行には非現実的な数の既知または選択平文が必要となる3つの理論的な攻撃が可能である。これらの攻撃は実際には問題にならない。
あらゆる暗号において、最も基本的な攻撃方法は総当たり攻撃、つまり可能なすべての鍵を順番に試すことです。鍵の長さによって可能な鍵の数が決まり、したがってこのアプローチの実現可能性も決まります。DESについては、標準として採用される前から鍵サイズの妥当性について疑問が投げかけられていました。理論的な暗号解読ではなく、鍵サイズの小ささが代替アルゴリズムの必要性を決定づけました。NSAを含む外部コンサルタントとの議論の結果、鍵サイズは256ビットから56ビットに縮小され、1つのチップに収まるようになりました。[ 30 ]

学界では、DESを解読するマシンに関する様々な提案がなされた。1977年、ディフィーとヘルマンは、DES鍵を1日で発見できるマシンを、推定2000万ドル(2024年時点で1億377万8144ドル相当)で提案した。[ 1 ] [ 31 ] 1993年までに、ウィーナーは、7時間以内に鍵を発見できる100万ドル(2024年時点で217万6687ドル相当)の鍵探索マシンを提案した。しかし、これらの初期の提案はどれも実装されず、少なくとも実装が公に認められることもなかった。DESの脆弱性は、1990年代後半に実証された。[ 32 ] 1997年、RSAセキュリティは一連のコンテストを後援し、DESで暗号化されたメッセージを最初に解読したチームに1万ドルの賞金を提供した。このコンテストは、ロック・ヴァーサー、マット・カーティン、ジャスティン・ドルスケが率いるDESCHALLプロジェクトが、インターネット上の何千台ものコンピュータのアイドルサイクルを使用して優勝した。DESを迅速に解読することが可能であることが実証されたのは1998年、サイバースペースの公民権団体である電子フロンティア財団(EFF)が約25万ドル(2024年に482,289ドルに相当)の費用をかけてカスタムDESクラッカーを構築したときだった( EFF DESクラッカーを参照)。彼らの目的は、DESが理論だけでなく実際にも破られることを示すことでした。「多くの人は、自分の目で確かめるまでは真実を信じようとしません。数日でDESを解読できる物理的なマシンを彼らに見せることが、DESにセキュリティを託すのは無理だと人々に納得させる唯一の方法です。」マシンは、わずか2日間強の探索で鍵を総当たり攻撃で解読しました。
次に確認されたDESクラッカーは、ドイツのボッフム大学とキール大学のチームによって2006年に構築されたCOPACOBANAマシンでした。EFFマシンとは異なり、COPACOBANAは市販の再構成可能な集積回路で構成されています。XILINX Spartan-3 1000タイプのこれらのフィールドプログラマブルゲートアレイ(FPGA)120個が並列に実行されます。これらは20個のDIMMモジュールにグループ化されており、各モジュールには6個のFPGAが含まれています。再構成可能なハードウェアを使用することで、このマシンは他のコード解読タスクにも適用できます。[ 33 ] COPACOBANAの興味深い側面の1つは、そのコスト要因です。1台のマシンは約10000ドル(2024年には15,165ドルに相当)で構築できます。[ 34 ] EFFマシンに比べて約25分の1にコストが削減されたことは、デジタルハードウェアの継続的な改善の一例です(ムーアの法則を参照) 。 2007年以降、COPACOBANAの2つのプロジェクトパートナーからスピンオフしたSciEngines GmbHは、COPACOBANAの後継機の改良と開発を行ってきました。2008年には、同社のCOPACOBANA RIVYERAが128個のSpartan-3 5000を用いてDESの解読時間を1日未満に短縮しました。SciEngines RIVYERAは、128個のSpartan-3 5000 FPGAを用いて、総当たり攻撃によるDES解読の記録を保持していました。同社の256個のSpartan-6 LX150モデルは、この時間をさらに短縮しました。 [ 35 ]
2012年、デビッド・ハルトンとモクシー・マーリンスパイクは、48個のザイリンクスVirtex-6 LX240T FPGAを搭載したシステムを発表しました。各FPGAには、400MHzで動作し、総容量は768ギガキー/秒である。[ 36 ]このシステムは56ビットDES鍵空間全体を約26時間で網羅的に検索することができ、このサービスはオンラインで有料で提供されている。[ 37 ]ただし、このサービスは2024年からメンテナンスのためにオフラインになっている。 [ 37 ]
ブルートフォース検索よりも少ない複雑さでDESの16ラウンドすべてを破ることができる攻撃法として、差分解読法(DC)[ 38 ] 、線形解読法(LC)[ 39 ] 、およびデイヴィス攻撃[ 40 ]の3つが知られています。しかし、これらの攻撃法は理論上のものであり、実際には実行不可能であると一般的に考えられています。このような攻撃法は認証の弱点と呼ばれることもあります。
DES暗号のラウンド数を減らしたバージョン、つまり16ラウンド未満のバージョンに対する攻撃も提案されています。このような分析により、安全性を確保するために必要なラウンド数や、フルバージョンでどの程度のセキュリティマージンが確保されているかについての洞察が得られます。
差分線形暗号解読法は1994年にラングフォードとヘルマンによって提案されたもので、差分暗号解読法と線形暗号解読法を1つの攻撃に組み合わせたものである。[ 45 ]この攻撃法の強化版では、2の15.8乗個の平文を選択して9ラウンドのDESを解読することができ、計算時間は2の29.2乗である。 [ 46 ]
DESは相補性の性質を示し、すなわち
ここで、はのビット補数であり、鍵を用いた暗号化を表し、はそれぞれ平文ブロックと暗号文ブロックを表します。補数性は、選択平文仮定の下で、ブルートフォース攻撃の作業量を2分の1(または1ビット)削減できることを意味します。定義により、この性質はTDES暗号にも適用されます。[ 47 ]
DESには、いわゆる「弱い鍵」が4つあります。弱い鍵による暗号化(E)と復号化(D)は同じ効果を持ちます(「反転」を参照)。
6組の準弱鍵も存在します。準弱鍵のペアの1つである を用いた暗号化は、もう1つの を用いた復号と同様に動作します。
実装において、弱い鍵と半弱い鍵を回避するのは容易です。明示的にテストするか、鍵をランダムに選択するだけで済みます。偶然に弱い鍵や半弱い鍵が選ばれる確率はごくわずかです。これらの鍵は攻撃に何のメリットももたらさないため、実際には他の鍵よりも弱いわけではありません。
DESは群ではないことも証明されている。より正確には、関数合成による集合(すべての可能なキーについて)は群ではないし、群に「近い」ものでもない。[ 48 ]これは長い間未解決の問題であったが、もしそうであればDESを破ることができただろうし、トリプルDESのような複数の暗号化モードでもセキュリティは向上しなかっただろう。なぜなら、異なるキーで繰り返し暗号化(および復号化)しても、別の単一のキーで暗号化した場合と同等になるからだ。[ 49 ]
簡易DES(SDES)は、学生が現代の暗号解読技術を習得できるよう、教育目的のみで設計されました。SDESはDESと同様の構造と特性を持ちますが、鉛筆と紙を使って手作業で暗号化と復号をはるかに容易に行えるよう簡素化されています。SDESを学ぶことで、DESやその他のブロック暗号、そしてそれらに対する様々な暗号解読攻撃への理解が深まると考える人もいます。[ 50 ] [ 51 ] [ 52 ]
セキュリティへの懸念とDESのソフトウェアにおける動作速度の遅さから、研究者たちは1980年代後半から1990年代初頭にかけて、様々な代替ブロック暗号設計を提案し始めた。例えば、 RC5、Blowfish、IDEA、NewDES、SAFER、CAST5、FEALなどである。これらの設計のほとんどはDESの64ビットブロックサイズを維持し、「ドロップイン」代替として機能できたが、通常は64ビットまたは128ビットの鍵を使用していた。ソビエト連邦では、64ビットブロックサイズと256ビット鍵を使用するGOST 28147-89アルゴリズムが導入され、後にロシアでも使用された。
DESを強化するもう一つのアプローチは、トリプルDES(3DES)の開発でした。これは、各データブロックにDESアルゴリズムを3回適用することでセキュリティを強化するものです。しかし、3DESは非効率性と特定の暗号攻撃に対する脆弱性から、後にNISTによって非推奨となりました。
DESの重要な側面の一つは、その順列と鍵スケジューリングであり、これらは暗号化プロセスにおいて重要な役割を果たします。これらの順列を分析することで、DESのセキュリティ上の限界と代替アルゴリズムの必要性を理解するのに役立ちます。DESの順列と暗号化におけるその役割の詳細な分析は、データ暗号化標準の順列に関するこの分析でご覧いただけます。[ 53 ]
DES自体は、より安全な方式に適応・再利用することができます。かつてDESを利用していた多くのユーザーは、 DESの特許保有者の1人によって記述・解析されたトリプルDES(TDES)を使用しています(FIPS Pub 46–3参照)。TDESは、2つ(2TDES)または3つ(3TDES)の異なる鍵を用いてDESを3回適用する方式です。TDESは十分に安全であると考えられていますが、非常に低速です。より計算コストの低い代替方式としてDES-Xがあります。これは、DESの前後に追加の鍵素材を排他的論理和することで鍵サイズを増加させます。GDESは暗号化を高速化する方法として提案されたDESの派生型ですが、差分解読法の脆弱性が明らかになりました。
1997年1月2日、NISTはDESの後継暗号を選定したいと発表しました。[ 54 ] 2001年、国際コンペティションを経て、NISTはDESの後継として新しい暗号であるAdvanced Encryption Standard (AES)を選択しました。 [ 55 ] AESとして選定されたアルゴリズムは、設計者によってRijndaelという名前で提出されました。NIST AESコンペティションの最終候補には、 RC6、Serpent、MARS、Twofishなどがありました。
{{citation}}: CS1 maint: ISBNによる作業パラメータ(リンク)