共通鍵暗号
共通鍵暗号は、通信を行う当事者が同じ秘密鍵を用いてデータを保護および復元し、高い速度で機密性、完全性、および認証性を提供する方式を研究する分野です。
Definition
共通鍵暗号とは、暗号化と復号(またはタグ付けと検証)の操作が、正当な当事者間で事前に共有された同じ秘密鍵、または互いに容易に導出できる2つの鍵を使用する暗号学の一分野です。
Scope
この分野は、単一の共有秘密鍵に依存する暗号プリミティブを対象とします。具体的には、ブロック暗号とその運用モード、ストリーム暗号、暗号学的ハッシュ関数、メッセージ認証コードなどが含まれます。これらのプリミティブがどのように構築されるか、それらが目指すセキュリティ目標(不可分性、衝突耐性、偽造不可能性)、およびそれらが耐えなければならない暗号解読攻撃について扱います。公開鍵暗号方式(鍵ペアを使用し、公開鍵暗号の項目で扱われる)や、これらのプリミティブの上に構築される対話型プロトコル(暗号プロトコルの項目で扱われる)は除外されます。
Sub-topics
Core questions
- 固定された共有秘密鍵は、機密性と完全性をもって任意の長さのメッセージをどのように保護できるのでしょうか?
- どのような設計原則(混同と拡散)が暗号を暗号解読に対して耐性のあるものにするのでしょうか?
- ブロック暗号は、運用モードを通じてどのように安全な暗号化方式に変換されるのでしょうか?
- 「安全な」共通鍵方式を区別するセキュリティ定義とは何であり、それらはどのように形式化されるのでしょうか?
- ハッシュ関数とメッセージ認証コードを通じて、完全性と認証性はどのように提供されるのでしょうか?
Key concepts
- 共有秘密鍵
- ブロック暗号
- ストリーム暗号
- 運用モード
- 暗号学的ハッシュ関数
- メッセージ認証コード
- 混同と拡散
- 擬似ランダム置換
- 認証付き暗号
Key theories
- 混同と拡散
- シャノンによる安全な暗号の設計原則:混同は鍵と暗号文の関係を可能な限り複雑にし、拡散は各平文ビットの影響を多くの暗号文ビットに広げ、統計的分析を無効にします。
- 擬似ランダム置換と関数
- 現代の共通鍵セキュリティは、ブロック暗号を擬似ランダム置換として、鍵付きハッシュを擬似ランダム関数として扱うことでモデル化されます。これらは、効率的な攻撃者にとって真にランダムなものと計算上区別できないオブジェクトです。
- 選択平文攻撃に対する不可分性
- 共通鍵暗号方式は、効率的な攻撃者が、選択した平文の暗号文を取得できる場合でも、自身が選択した2つのメッセージの暗号文を推測よりも高い確率で区別できない場合に安全であるとされます。
Clinical relevance
共通鍵暗号は、展開されているセキュリティの主力です。AESはディスク暗号化、Wi-Fi (WPA)、およびTLSセッションのバルクデータを保護します。HMACとAES-GCMはAPIリクエストとネットワークパケットを認証します。ハッシュ関数はパスワードストレージ、ファイル整合性チェック、およびブロックチェーンの基盤となります。共通鍵操作は公開鍵操作よりもはるかに高速であるため、実際のプロトコルでは、公開鍵方式は共通鍵セッション鍵を確立するためにのみ使用され、実際のデータには共通鍵暗号が利用されます。
Evidence & guidelines
標準化されたプリミティブは実務の中心です。AES (FIPS 197)、SHA-2およびSHA-3 (FIPS 180-4, FIPS 202)、HMAC (FIPS 198-1) は、NISTが承認した主要な選択肢です。DES、RC4、MD5、SHA-1などのレガシーなプリミティブは、既知の暗号解読上の弱点があるため非推奨とされています。
History
共通鍵暗号は、古典的な換字式暗号や転置式暗号から第二次世界大戦のローター式暗号機に至るまで、最も古い形式の暗号です。シャノンの1949年の論文は、厳密な情報理論的基盤を与えました。データ暗号化標準 (1977) は、公開された標準化ブロック暗号をもたらしました。その後の陳腐化により、2000年にRijndaelが勝利した公開AESコンペティションが開催されました。並行して、標準化されたハッシュ関数(MDおよびSHAファミリー)とメッセージ認証コードが開発されました。
Key figures
- Claude Shannon
- Horst Feistel
- Joan Daemen
- Vincent Rijmen
- Jonathan Katz
- Yehuda Lindell
Related topics
Seminal works
- shannon1949
- katz2020
- menezes1996
Frequently asked questions
- 公開鍵暗号が鍵配送の問題を解決するのに、なぜ共通鍵暗号を使用するのですか?
- 共通鍵操作は桁違いに高速であり、暗号文の膨張も発生しないため、実際のデータを保護するために使用されます。公開鍵暗号は通常、共通鍵を安全に合意するためにのみ使用され、その後は共通鍵暗号が主要な処理を行います。
- 暗号化だけでデータを安全に保つには十分ですか?
- いいえ。暗号化は機密性を提供しますが、完全性は提供しません。攻撃者は検出されずに暗号文を改ざんする可能性があります。現代の実践では、暗号化とメッセージ認証コードを組み合わせるか、AES-GCMなどの認証付き暗号モードを使用して、機密性と完全性の両方を保証します。