DES
Data Encryption Standard データ暗号化規格、アルゴリズムは Data Encryption Algorithm (DEA)
FIPS 46-3 (2005年廃止)
1997年6月に破られた
TDEAとEDE
64bitでは弱いため、DESを3つ重ねたトリプルDES(Triple Data Encryption Algorithm TDEA)がある。鍵は1つ(DESと互換)から3つまで
暗号-復号-暗号の状態で重ねるのでEDE (Encrypt-Decrypt-Encrypt)と呼ばれる
鍵数
1 DESと同じ動作になる
2 EDE2 鍵1 鍵2 鍵1 の組み合わせ
3 EDE3 鍵1鍵2 鍵3 が別々
RFC 5469 TLSで非推奨
RFC 4772 データ暗号化標準 Data Encryption Standard (DES) の使用によるセキュリティへの影響
構造?
パスワード 7bit x 8バイト 56bit?
FIPS 46-3 てきとう訳
連邦情報処理基準刊行物46-3
1999年10月25日
データ暗号化規格DATA ENCRYPTION STANDARDの発表
連邦情報処理標準規格(FIPS PUBS)は、1996年情報技術管理改革法(公法104-106)第5131条および1987年コンピュータセキュリティ法(公法100-235)に基づき、商務長官の承認を得て、米国国立標準技術研究所(NIST)によって発行されます。
1. 規格名:データ暗号化規格(DES: Data Encryption Standard)
2. 規格のカテゴリ:コンピュータセキュリティ、暗号化
3. 説明:データ暗号化規格(DES)は、FIPS 140-1で要求される2つのFIPS承認暗号アルゴリズムを規定しています。米国規格協会(ANSI)X9.52規格と併用することで、この規格は、バイナリコード化された情報を暗号化(暗号化)および復号(復号)するための数学的アルゴリズムを完全に記述します。データを暗号化すると、暗号と呼ばれる判読不能な形式に変換されます。暗号を復号化すると、データは平文と呼ばれる元の形式に戻ります。この規格で規定されているアルゴリズムは、鍵と呼ばれるバイナリ数に基づく暗号化と復号化の両方の操作を規定しています。
DES鍵は64個のバイナリ数字(「0」または「1」)で構成され、そのうち56ビットはランダムに生成され、アルゴリズムによって直接使用されます。アルゴリズムでは使用されない残りの8ビットは、エラー検出に使用される場合があります。この8ビットのエラー検出ビットは、鍵の各8ビットバイトのパリティが奇数になるように設定されます。つまり、各8ビットバイトには奇数個の「1」が含まれます。TDEA鍵は3つのDES鍵で構成され、鍵バンドルとも呼ばれます。暗号化されたコンピュータデータの正規ユーザーは、データを復号化するために、データの暗号化に使用された鍵を所有している必要があります。この規格で規定されている暗号化アルゴリズムは、この規格を使用する人々の間で広く知られています。データの暗号化セキュリティは、データの暗号化と復号に使用される鍵のセキュリティに依存します。
データは、暗号化に使用された鍵と全く同じ鍵を使用した場合にのみ復元できます。
アルゴリズムを知っていても正しい鍵を持たない不正な受信者は、アルゴリズム的に元のデータを復元することはできません。しかし、総当たり攻撃(ブルートフォース攻撃)によって鍵を特定できる可能性があります。また、鍵とアルゴリズムの両方を持っている人は、容易に暗号を復号して元のデータを取得できます。したがって、安全な鍵に基づく標準的なアルゴリズムは、暗号化に使用された鍵をデータへのアクセス権限を持つ者に発行することで、暗号化されたコンピュータデータの交換の基盤を提供します。
責任機関によって機密情報とみなされるデータ、価値の高いデータ、または高い価値を表すデータは、送信中または保存中に不正な開示や検出されない改ざんの危険性がある場合、暗号化によって保護されるべきです。
潜在的な脅威を特定するため、責任機関の指示の下、リスク分析を実施する必要があります。この規格を用いた暗号化保護の提供コスト、および代替的な保護方法とそのそれぞれのコストを予測する必要があります。責任機関は、これらの分析に基づいて、暗号化保護およびこの規格を使用するかどうかを決定する必要があります。
4. 承認機関:商務長官
5. 維持管理機関:米国商務省国立標準技術研究所情報技術研究所
6. 適用範囲:本規格は、以下の条件を満たす場合に連邦政府機関および省庁で使用できます。
1. データセキュリティまたはコンピュータシステムのセキュリティを担当する権限のある職員または管理者が、暗号化による保護が必要であると判断した場合。
2. 当該データが、改正後の1947年国家安全保障法または改正後の1954年原子力法に基づき機密指定されていない場合。
これらの法律に基づき機密指定されているデータを保護するために暗号化デバイスを使用している連邦政府機関または省庁は、本規格の代わりに、それらのデバイスを機密データの保護に使用できます。
FIPS 140-1に従って実装される場合、本規格に加えて、または本規格の代わりに、FIPS承認済みの他の暗号化アルゴリズムを使用できます。
さらに、本規格は、連邦政府以外の組織でも採用および使用できます。このような利用は、商業組織や民間組織にとって望ましいセキュリティを提供する場合に推奨される。
7. アプリケーション。データ暗号化(暗号技術)は、さまざまなアプリケーションや環境で利用されています。暗号化の具体的な利用方法、およびDESとTDEA1の実装方法は、コンピュータシステムとその関連コンポーネントに特有の多くの要因に基づいて決定されます。一般的に、暗号技術は、データが2点間で通信されている間、または物理的に盗難されやすい媒体に保存されている間に、データを保護するために使用されます。通信セキュリティは、送信側でデータを暗号化し、受信側で復号化することでデータを保護します。
ファイルセキュリティは、データが記憶媒体に記録される際に暗号化し、記憶媒体から読み出される際に復号化することでデータを保護します。前者の場合、通信中は送信側と受信側の両方で鍵が同時に利用可能である必要があります。後者の場合、鍵は保存期間中維持され、アクセス可能である必要があります。FIPS 171は、この規格で規定されているアルゴリズムで使用される鍵を管理するための承認された方法を提供します。公開鍵暗号方式(例:ANSI X9.42)も使用できます。
8. 実装。本規格を実装する暗号モジュールは、FIPS 140-1の要件に準拠しなければなりません。本規格で規定されるアルゴリズムは、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装できます。具体的な実装方法は、アプリケーション、環境、使用技術など、いくつかの要因によって異なります。
本規格に準拠する実装には、電子機器(VLSIチップパッケージなど)、読み出し専用メモリ(ROM)、プログラマブル読み出し専用メモリ(PROM)、または電子消去可能読み出し専用メモリ(EEROM)を使用するマイクロプロセッサ、およびランダムアクセスメモリ(RAM)を使用するメインフレームコンピュータが含まれます。アルゴリズムがソフトウェアまたはファームウェアで実装される場合、アルゴリズムが実行されるプロセッサを検証プロセスの一部として指定する必要があります。
NISTによってテストおよび検証されたアルゴリズムの実装は、本規格に準拠しているとみなされます。なお、FIPS 140-1は、政府機関で使用される暗号モジュールに対して追加の要件を課しています。この規格およびFIPS 140-1への適合性について検証済みの機器に関する情報、ならびに機器の試験および検証手順については、米国国立標準技術研究所(NIST)情報技術研究所(Information Technology Laboratory, 100 Bureau Dr. Stop 8930, Gaithersburg, MD 20899-8930)にお問い合わせください。
9. 輸出管理。暗号化機器およびそれらに関する技術データは、連邦政府の輸出管理の対象となります。この規格を実装する暗号化モジュールおよびそれらに関する技術データの輸出は、これらの連邦規則を遵守し、米国商務省輸出管理局(Bureau of Export Administration)の許可を取得する必要があります。
10. 特許。本規格を実装する暗号化デバイスは、米国および外国の特許(IBMに発行された特許を含む)によって保護されている場合があります。
ただし、IBMは、本規格に準拠する装置の製造、使用、販売に関する非独占的かつ無償のライセンスを特許に基づいて付与しています。ライセンスの条件、条項、範囲は、米国特許商標庁官報(934 O.G. 452および949 O.G. 1717)の1975年5月13日号および1976年8月31日号に掲載された通知に記載されています。
11. DESおよびTDEAの代替使用モード。FIPS PUB 81「DESの動作モード」では、本規格で説明されているDESの4つの異なる使用モードについて説明しています。これらの4つのモードは、電子コードブック(ECB)モード、暗号ブロック連鎖(CBC)モード、暗号フィードバック(CFB)モード、および出力フィードバック(OFB)モードと呼ばれます。ECBは、DESアルゴリズムを直接適用してデータを暗号化および復号化するモードです。CBCは、ECBを拡張したモードで、暗号文のブロックを連鎖的に連結します。CFBは、以前に生成された暗号文をDESへの入力として使用し、擬似乱数出力を生成します。この擬似乱数出力は平文と組み合わされて暗号文が生成され、結果として得られる暗号文が連鎖的に連結されます。OFBはCFBと同一ですが、OFBではDESの以前の出力が入力として使用され、CFBでは以前の暗号文が入力として使用されます。OFBは暗号文を連鎖的に連結しません。
X9.52規格「トリプルデータ暗号化アルゴリズムの動作モード」では、この規格で説明されているTDEAを使用するための7つの異なるモードが規定されています。これら7つのモードは、TDEA電子コードブック動作モード(TECB)、TDEA暗号ブロック連鎖動作モード(TCBC)、TDEA暗号ブロック連鎖動作モード(インターリーブ)(TCBC-I)、TDEA暗号フィードバック動作モード(TCFB)、TDEA暗号フィードバック動作モード(パイプライン)(TCFB-P)、TDEA出力フィードバック動作モード(TOFB)、およびTDEA出力フィードバック動作モード(インターリーブ)(TOFB-I)と呼ばれます。TECB、TCBC、TCFB、およびTOFBモードは、それぞれECB、CBC、CFB、およびOFBモードをベースとしており、DES暗号化/復号操作をTDEA暗号化/復号操作に置き換えることで得られます。
12. 本規格の実装この規格は1977年7月に発効し、1983年、1988年、1993年、1999年に再確認されました。この規格は、連邦政府の機能を遂行するために、連邦政府に代わって情報を処理する(コンピュータまたは通信システムを使用する)すべての連邦政府機関、連邦政府機関の請負業者、またはその他の組織に適用されます。各連邦政府機関または省庁は、データセキュリティ要件の決定に基づき、その業務部門によるこの規格の使用に関する内部指令を発行することができます。
FIPS 46-2規格の今回の改訂により、以下の点が変更されます。
1. ANSI X9.52で規定されているトリプルDES(TDEA)は、FIPS承認アルゴリズムとして認められます。
2. トリプルDESは、FIPS承認の推奨対称暗号化アルゴリズムとなります。
3. シングルDES(DES)は、既存システムでのみ使用可能です。既存システムをサポートするための新規調達においては、可能な限り、シングルDES構成で動作するトリプルDES製品を使用するようにしてください。
4. 既存のDESシステムを使用している政府機関は、関連するリスクに対する保護対策の強度を考慮した慎重な戦略に基づき、トリプルDESへの移行を推奨します。
注:トリプルDESとAdvanced Encryption Standard(AES)は、FIPS承認アルゴリズムとして共存し、AESへの段階的な移行が可能となる見込みです。 (AESは、NISTが開発中の新しい対称暗号方式に基づく暗号化標準です。AESは、21世紀においても機密情報を保護するための強力な暗号セキュリティを提供することを目的としています。)
NISTは、標準規格、ガイドラインの発行、および個別の費用償還プロジェクトを通じて、連邦政府機関によるデータ暗号化の実装に関する技術支援を提供しています。
13. 仕様。連邦情報処理標準(FIPS)46-3、データ暗号化規格(DES)(添付)。
14. 相互参照
a. FIPS PUB 31、ADPの物理セキュリティおよびリスク管理に関するガイドライン
b. FIPS PUB 39、コンピュータシステムセキュリティ用語集
c. FIPS PUB 73、コンピュータアプリケーションのセキュリティに関するガイドライン
d. FIPS PUB 74、NBSデータ暗号化標準の実装および使用に関するガイドライン
e. FIPS PUB 81、DESの動作モード
f. FIPS PUB 87、ADPの緊急時対応計画に関するガイドライン
g. FIPS PUB 112、パスワードの使用
h. FIPS PUB 113、コンピュータデータ認証
i. FIPS PUB 140-1、暗号モジュールのセキュリティ要件
j. FIPS PUB 171、ANSI X9.17を使用した鍵管理
k. ANSI X9.42、ディフィー・ヘルマンおよびMQVアルゴリズムを用いた対称鍵の合意
l. ANSI X9.52、トリプルデータ暗号化アルゴリズムの動作モード
15. 資格要件
本規格および本規格の使用によって提供されるセキュリティを低下させる可能性のある脅威は、新たに利用可能になった技術を考慮に入れ、NISTによって必要に応じて見直されます。さらに、技術の画期的な進歩やアルゴリズムの数学的な脆弱性が判明した場合、NISTは本規格を再評価し、必要な改訂を行います。
シングルDESの使用に関して、DESの鍵枯渇(すなわち、すべての可能な鍵を試してDESで暗号化された暗号文を解読すること)は、技術の進歩に伴いますます容易になっています。最近のハードウェアベースのDES鍵枯渇攻撃を受けて、NISTは多くのアプリケーションでシングルDESの使用をサポートできなくなりました。したがって、既存のシングルDESシステムを使用している政府機関は、トリプルDESへの移行を推奨します。各機関は、新規システム構築時にトリプルDESを導入することが推奨されます。
16. コメント。本規格およびその利用に関するご意見・ご提案は、米国国立標準技術研究所(NIST)、宛先:情報技術研究所長、100 Bureau Dr. Stop 8900, Gaithersburg, MD 20899-8900までお寄せください。
17. 免除手続き。特定の例外的な状況下において、連邦省庁の長は、連邦情報処理標準(FIPS)の適用免除を承認することができます。
当該機関の長は、米国法典第44編第3506条(b)に基づき指定された上級職員にのみ、当該権限を再委任することができます。免除は、以下のいずれかの条件を満たす場合にのみ認められます。
a. 規格への準拠が、連邦コンピュータシステムの運用者の任務遂行に悪影響を及ぼす場合。または
b. 規格への準拠が、政府全体の節約効果によって相殺されない重大な財政的悪影響を運用者に及ぼす場合。
各機関の長は、上記の情報を含む書面による免除申請に基づいて措置を講じることができます。
また、各機関の長は、基準を満たすための条件が満たされないと判断した場合、書面による免除申請なしに措置を講じることもできます。各機関の長は、必要な判断に至った根拠を説明する書面による決定によってのみ、免除を承認することができます。調達上機密または非機密と明記された各決定の写しは、以下の宛先に送付しなければなりません。
米国国立標準技術研究所(National Institute of Standards and Technology)、宛先:FIPS免除決定担当、100 Bureau Drive, Stop 8970, Gaithersburg, MD 20899-8970。
さらに、承認された各免除および免除承認権限の委任に関する通知は、速やかに下院政府運営委員会および上院政府問題委員会に送付され、連邦官報に速やかに掲載されなければなりません。
免除の決定が機器および/またはサービスの調達に適用される場合、免除決定の通知は、調達提案の募集通知の一部として商務ビジネス日報に掲載されなければならない。ただし、免除決定が当該通知の掲載後に行われた場合は、当該通知の修正によって掲載されなければならない。
免除の写し、関連するすべての文書、免除を承認する文書、および付随するすべての文書は、米国法典第5編第552条(b)に基づき当該機関が権限を与えられ、かつ決定した削除を行った上で、調達文書の一部として当該機関が保管しなければならない。
18. 特記事項。本規格の「資格要件」の項に従い、本規格は1977年の採択以来、5年ごとに見直しが行われてきました。そして、その見直しのたびに、本規格は再確認されています。今回の改訂版では、アルゴリズムのソフトウェア実装を可能にし、他のFIPS承認暗号アルゴリズムの使用を許可し、Triple DES(すなわちTDEA)をFIPS承認暗号アルゴリズムとして指定する変更が含まれています。
19. 規格の入手方法。本規格は、米国商務省国立技術情報サービス(NTIS、所在地:バージニア州スプリングフィールド 22161)にて販売しています。
ご注文の際は、連邦情報処理規格出版物46-3(FIPSPUB463)を参照し、タイトルを明記してください。マイクロフィッシュをご希望の場合は、その旨をお知らせください。価格は、NTISが発行する最新のカタログおよびその他の刊行物に掲載されています。お支払いは、小切手、郵便為替、預金口座、またはNTISが承認するクレジットカードによるお支払いが可能です。
連邦情報処理基準刊行物46-3
1999年10月25日
データ暗号化規格(DES: DATA ENCRYPTION STANDARD)の仕様
データ暗号化規格(DES)は、ANSI X9.52に規定されるデータ暗号化アルゴリズム(DES)およびトリプルデータ暗号化アルゴリズム(TDEA)から構成される。これらのデバイスは、コンピュータシステムまたはネットワークにおいて、バイナリ符号化データに暗号化保護を提供するように設計されなければならない。実装方法は、アプリケーションおよび環境によって異なる。デバイスは、以下のアルゴリズムで規定される変換を正確に実行することがテストおよび検証されるように実装されなければならない。
データ暗号化アルゴリズム
概要
このアルゴリズムは、64ビットの鍵¹の制御下で、64ビットからなるデータブロックを暗号化および復号するように設計されている。復号は、暗号化と同じ鍵を用いて行う必要があるが、鍵ビットのアドレス指定スケジュールを変更することで、復号プロセスが暗号化プロセスの逆となるようにする。暗号化されるブロックは、まず初期置換IP、次に複雑な鍵依存計算、そして最後に初期置換IP-1の逆置換という処理を受けます。鍵依存計算は、暗号関数fと鍵スケジュールKSと呼ばれる関数を用いて簡単に定義できます。まず、この計算の説明と、アルゴリズムが暗号化にどのように使用されるかの詳細について説明します。
次に、アルゴリズムの復号化について説明します。最後に、暗号関数fを、選択関数Siと置換関数Pと呼ばれる基本関数を用いて定義します。アルゴリズムのSi、P、およびKSは付録1に記載されています。
図1.暗号化計算。(略)
以下の表記法が便利です。2つのビットブロック$ L と$ R が与えられた場合、$ LR は$ L のビットに続いて$ R のビットが続くブロックを表します。連結は結合法則を満たすため、例えば$ B_1,B_2,...B_8 は、$ B_1 のビットに続いて$ B_2 のビット $ ...B8 のビットが続くブロックを表します。
暗号化
暗号化計算の概略を図1に示します。
暗号化対象の入力ブロックの64ビットは、まず初期置換IPと呼ばれる以下の置換処理を受けます。
table:IP
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
つまり、置換された入力は、入力のビット58を最初のビット、ビット50を2番目のビット、といった具合にビット7を最後のビットとして持つ。この置換された入力ブロックは、後述する複雑な鍵依存計算への入力となる。この計算の出力(プリアウトプットと呼ばれる)は、最初の置換の逆である次の置換を受ける。
$ IP^{-1}
table:-1
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
つまり、アルゴリズムの出力は、プリアウトプットブロックの40番目のビットが最初のビット、8番目のビットが2番目のビット、といった具合に、プリアウトプットブロックの25番目のビットが最後のビットとなるまで続きます。
置換された入力ブロックを入力として前出力ブロックを生成する計算は、最終的なブロックの交換を除いて、以下に示す暗号関数fを用いて説明する計算の16回の反復から構成されます。この暗号関数fは、32ビットのブロックと48ビットのブロックの2つに対して動作し、32ビットのブロックを生成します。
反復における入力ブロックの64ビットは、32ビットのブロック$ L とそれに続く32ビットのブロック$ R から構成されるとします。序論で定義した表記法を用いると、入力ブロックは$ LR となります。
$ K を64ビット鍵から選択された48ビットのブロックとします。このとき、入力$ LR を用いた反復における出力$ L'R' は次のように定義されます。
$ (1) L'=R
$ R' = L\oplus f(R,K)
ここで、$ \oplus はビットごとの加算(modulo 2)を表します。
前述のとおり、計算の最初の反復の入力は、入力ブロックを順列化したものです。
$ L'R' が16回目の反復の出力である場合、$ R'L' は前出力ブロックとなります。各反復において、$ KEY で指定される64ビット鍵から、異なる鍵ビットのブロック$ K が選択されます。
より詳細な表記を用いることで、計算の反復をより詳細に記述できます。$ KS を、1から16までの整数$ n と64ビットブロック$ KEY を入力として受け取り、$ KEY からビットを順列化して選択した48ビットブロック$ K_n を出力する関数とします。すなわち、
$ (2) K_n = KS(n,KEY)
となります。
ここで、$ K_n は$ KEY の48個の異なるビット位置のビットによって決定されます。 $ KS は鍵スケジュールと呼ばれます。なぜなら、(1)の$ n 回目の反復で使用されるブロック$ K は、(2)で決定されるブロック$ K_n だからです。
これまでと同様に、入力ブロックを$ LR とします。最後に、$ L_{()} と$ R_{()} をそれぞれ$ L と$ R とし、$ L_n と$ R_n をそれぞれ(1)の$ L' と$ R' とします。ただし、$ L と$ R はそれぞれ$ L_{n-1} と$ R_{n-1} です。そして$ K は$ K_n です。つまり、$ n が1から16の範囲にある場合、
(3) $ L_n=R_{n-1}
$ R_n=L_{n-1} \oplus f(R_{n-1},K_n)
この場合、プリアウトプットブロックは$ R_{16}L_{16} となります。
アルゴリズムのキースケジュール$ KS については、付録で詳しく説明します。キースケジュールは、アルゴリズムに必要な16個の$ K_n を生成します。
復号
プリアウトプットブロックに適用される置換$ IP^{-1} は、入力に適用された初期置換IPの逆数です。さらに、(1)より次の式が成り立ちます。
(4) $ R = L'
$ L = R' \oplus f(L',K)
したがって、復号するには、暗号化されたメッセージブロックに全く同じアルゴリズムを適用するだけで済みます。ただし、計算の各反復において、ブロックの暗号化時に使用されたものと同じ鍵ビットブロック$ K が復号にも使用されるように注意する必要があります。
前のセクションの表記法を用いると、これは次の式で表すことができます。
(5) $ R_{n-1} = L_n
$ L_{n-1} = R_n \oplus f(L_n,K_n)
ここで、$ R_{16}L_{16} は復号化計算のための置換された入力ブロックであり、$ L_0R_0 はプリアウトプットブロックです。すなわち、入力として$ R_{16}L_{16} を用いた復号計算では、最初の反復では$ K_{16} 、2回目では$ K_{15} 、といった具合に、16回目の反復では$ K_1 が用いられる。
暗号関数$ f
$ f(R,K) の計算の概略を図2に示す。
図2 $ f(R,K)の計算 (略)
E を、32 ビットのブロックを入力として受け取り、48 ビットのブロックを出力する関数とする。E の出力 48 ビットは、それぞれ 6 ビットの 8 つのブロックとして表され、入力のビットを次の表に従って順番に選択することによって得られるものとする。
table:E BIT-SELECTION TABLE
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
したがって、$ E(R) の最初の3ビットは$ R の32、1、2番目のビットであり、$ E(R) の最後の2ビットは32と1番目のビットです。
各選択関数$ S_1, S_2, ..., S_8 は、6ビットのブロックを入力として受け取り、4ビットのブロックを出力します。推奨される$ S_1 を含む表を用いて、その動作を説明します。
$ S_1
table:a
列番号
行番号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
$ S_1 をこの表で定義された関数とし、$ B を6ビットのブロックとすると、$ S_1(B) は次のように決定されます。$ B の最初と最後のビットは、2進数で0から3の範囲の数を表します。この数を$ i とします。$ B の中央の4ビットは、2進数で0から15の範囲の数を表します。この数を$ j とします。表で$ i 行$ j 列目の数を探します。これは0から15の範囲の数であり、4ビットのブロックで一意に表現されます。このブロックが、入力$ B に対する$ S_1 の出力$ S_1(B) です。例えば、入力が011011の場合、行は01(つまり1行目)、列は1101(つまり13列目)となります。1行目の13列目には5が現れるため、出力は0101となります。
アルゴリズムの選択関数$ S_1, S_2, ..., S_8 は付録1に記載されています。
置換関数$ P は、入力ブロックのビットを置換することにより、32ビット入力から32ビット出力を生成します。このような関数は、次の表で定義されます。
table:P
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
この表で定義される関数$ P の出力 $ P(L) は、入力 $ L から、$ L の 16 ビット目を$ P(L) の最初のビットとして、7 ビット目を$ P(L) の 2 ビット目として、といった具合に、$ L の 25 ビット目を$ P(L) の 32 ビット目として取得します。アルゴリズムの順列関数$ P は付録 1 に再掲されています。
ここで、$ S_1, ..., S_8 を 8 つの異なる選択関数とし、$ P を順列関数、$ E を上記で定義した関数とします。
$ f(R,K) を定義するために、まず$ B_1,...,B_8 をそれぞれ6ビットのブロックとして定義します。
(6) $ B_1B_2...B_8 = K \oplus E(R)
ブロックf(R,K)は次のように定義されます。
(7) $ P(S_1(B_1)S_2(B_2)...S_8(B_8))
このように、$ K \oplus E(R) はまず(6)に示すように8つのブロックに分割されます。次に、各$ B_i を$ S_i への入力とし、4ビットの8つのブロック$ S_1(B_1),S_2(B_2),...,S_8(B_8) を1つの32ビットのブロックに統合します。このブロックが$ P への入力となります。出力(7)は、入力$ R と$ K に対する関数fの出力です。
トリプルデータ暗号化アルゴリズム
$ E_K(I) と$ D_K(I) は、それぞれDES鍵$ K を用いた$ I のDES暗号化と復号を表します。 (ANSI X9.52で規定されている)各TDEA暗号化/復号操作は、DES暗号化および復号操作を組み合わせた複合操作です。以下の操作が使用されます。
1. TDEA暗号化操作:64ビットブロックIを、以下のように定義される64ビットブロック$ O に変換する操作。
$ O = E_{K3}(D_{K2}(E_{K1}(I)))
2. TDEA復号操作:64ビットブロックIを、以下のように定義される64ビットブロック$ O に変換する操作。
$ O = D_{K1}(E_{K2}(D_{K3}(I)))
規格では、バンドル$ (K_1, K_2, K_3) に対して以下の鍵オプションが規定されている。
1. 鍵オプション1:$ K_1, K_2, K_3 はそれぞれ独立した鍵である。
2. 鍵オプション2:$ K_1 と$ K_2 は独立した鍵であり、$ K_3 = K_1 である。
3. 鍵オプション3:$ K_1 = K_2 = K_3 である。
TDEA動作モードは、互換性のある鍵オプションを使用した場合、以下の条件を満たす場合に、対応するシングルDES動作モードとの下位互換性を有します。
1. シングルDES動作モードで計算された暗号化平文が、対応するTDEA動作モードで正しく復号できること。
2. TDEA動作モードで計算された暗号化平文が、対応するシングルDES動作モードで正しく復号できること。
鍵オプション3($ K_1 = K_2 = K_3 )を使用する場合、TECB、TCBC、TCFB、TOFBモードは、それぞれシングルDES動作モードのECB、CBC、CFB、OFBと下位互換性があります。
付録2の図は、TDEA暗号化とTDEA復号を示しています。