第1章 公開鍵の暗号化の概要

公開鍵の暗号化と関連する標準規格は、署名および暗号化された電子メール、シングルサインオン、Transport Layer Security/Secure Sockets Layer (SSL/TLS) 通信などの、多くの製品のセキュリティー機能を利用します。本章では、公開鍵暗号の基本概念について説明します。
中間コンピューターを介して情報を渡すインターネットトラフィックは、サードパーティーによる傍受が可能になります。
傍受
情報はそのまま維持されますが、プライバシーが危険にさらされます。たとえば、あるユーザーがクレジットカード番号を収集したり、機密の会話を記録したり、分類された情報をインターセプトしたりできます。
改ざん
転送中の情報は変更または置き換えられ、受信者に送信されます。たとえば、誰かが商品の注文を変更したり、人の履歴書を変更したりする可能性があります。
Impersonation
情報は、意図された受信者を装った人に渡されます。偽装には、2 つの形式を使用できます。
  • なりすまし。他人のふりをすることができます。たとえば、あるユーザーがメールアドレス jdoe@example.net やコンピューターから、www.example.net と呼ばれるサイトとして誤って特定できます。
  • 詐称。個人または組織は、自分自身を偽って伝えることができます。たとえば、www.example.net というサイトは、実際にクレジットカードへの支払いを受け取りながら、商品を送信することはありません。
公開鍵暗号 は、以下を使用してインターネットベースの攻撃に対する保護を提供します。
暗号化と復号
暗号化および復号化により、2 つの通信者が互いに送信される情報を不明確化させることができます。送信側は送信前に情報を暗号化またはスクリブルします。受信者は、情報を受信した後、情報を復号化またはスクランブル解除します。移動時には暗号化された情報は侵入できません。
改ざんの検出
改ざん検出により、情報の受信者は、情報が転送中に変更されていないことを確認できます。データの修正または置き換えの試行は検出されます。
認証
認証により、情報の受信者は、送信者の ID を確認することにより、その発信元を判別できます。
否認防止
否認防止は、情報の送信者が後日、情報が送信されなかったと主張することを防ぎます。

1.1. 暗号化と復号

暗号化 とは、情報を変換するプロセスであり、意図された受信者意外には誰も理解できません。復号 化は、暗号化された情報をデコードするプロセスです。暗号 とも呼ばれる暗号化アルゴリズムは、暗号化または複号に使用される関数です。通常は、2 つの関連する機能が使用されます。1 つは暗号化用で、もう 1 つは復号化用です。
最新の暗号化では、暗号化された情報を秘密に保つ機能は、広く知られている暗号化アルゴリズムではなく、暗号化された結果を生成したり、以前に暗号化された情報を復号化するためにアルゴリズムで使用する必要がある キー と呼ばれる番号に基づいています。正しいキーを使用した復号はシンプルです。正しいキーがない状態での復号化は、不可能ではないにしても、非常に困難です。

1.1.1. 対称キーの暗号化

対称キーの暗号化では、暗号化キーを複号鍵から計算することもできます。ほとんどの対称アルゴリズムでは、図1.1「対称キーの暗号化」 に示されるように、同じ鍵が暗号化と復号の両方に使用されます。

図1.1 対称キーの暗号化

対称キーの暗号化
対称鍵暗号化の実装は非常に効率的であるため、暗号化と復号化の結果としてユーザーに大きな時間遅延が発生することはありません。
対称鍵暗号化は、関係する 2 つの当事者によって対称鍵が秘密にされている場合にのみ有効です。他のユーザーが鍵を検出した場合は、機密性と認証の両方に影響します。承認されていない対称キーを持つユーザーは、その鍵で送信されたメッセージのみに復号できますが、新しいメッセージを暗号化して、鍵を使用して信頼できる送信者の 1 つから送信されたかのように送信することができます。
対称キーの暗号化は、SSL/TLS 通信で重要な役割を果たします。これは、TCP/IP ネットワーク上で認証、改ざん検出、および暗号化に幅広く使用されます。SSL/TLS は公開鍵の暗号化技術も使用します。これについては、次のセクションで説明します。

1.1.2. 公開鍵の暗号化

公開鍵の暗号化 (非対称暗号化とも呼ばれます) には、エンティティーに関連付けられた鍵、公開鍵、および秘密鍵のペアが必要です。各公開鍵が公開され、対応する秘密鍵はシークレットが保持されます。(公開鍵の公開方法に関する詳細は、「証明書および認証」を参照してください。) 公開鍵で暗号化したデータは、対応する秘密鍵でのみ復号できます。図1.2「公開鍵の暗号化」 は、公開鍵の暗号化が機能する方法の簡単なビューを示しています。

図1.2 公開鍵の暗号化

公開鍵の暗号化
図1.2「公開鍵の暗号化」 に表示されるスキームでは、公開鍵を自由に配布できますが、承認されたユーザーだけがこのキーを使用して暗号化されたデータを読み取ることができます。一般的に、暗号化されたデータを送信するには、そのユーザーの公開鍵でデータは暗号化され、暗号化されたデータを対応する秘密鍵で復号します。
対称鍵暗号化と比較して、公開鍵暗号化はより多くの処理を必要とし、大量のデータの暗号化と復号には適さない場合があります。ただし、公開鍵の暗号化を使用して対称キーを送信できます。これにより、追加データの暗号化に使用できます。これは、SSL/TLS プロトコルによって使用される方法です。
図1.2「公開鍵の暗号化」 にあるスキームの逆もまた機能します。秘密鍵で暗号化されたデータは、対応する公開鍵でのみ復号できます。ただし、機密データを暗号化することは推奨される方法ではありません。これは、定義によって公開されている公開鍵を持つすべてのユーザーがデータを復号する可能性があるためです。それでも、秘密鍵暗号化は、電子商取引やその他の暗号化の商用アプリケーションにとって重要な要件であるデジタル署名を使用してデータに署名するために秘密鍵を使用できることを意味するため、便利です。その後、Mozilla Firefox などのクライアントソフトウェアは公開鍵を使用して、メッセージが適切な秘密鍵で署名され、署名されてから改ざんされていないことを確認できます。「デジタル署名」 は、この確認プロセスがどのように機能するかを説明します。

1.1.3. キー長および暗号化の強化

暗号化アルゴリズムを 壊す と、暗号化されたデータにアクセスするための鍵をプレーンテキストで検索できます。対称アルゴリズムでは、アルゴリズムがテキストの暗号化に使用する鍵を判断しようとします。公開鍵アルゴリズムの場合、アルゴリズムを破ることは通常、2 人の受信者間で共有秘密情報を取得することを意味します。
対称アルゴリズムを壊す方法の 1 つは、適切なキーを見つけるまで、完全なアルゴリズム内のすべての鍵を単純に試すことです。公開鍵アルゴリズムの場合、鍵ペアの半分は公開されているため、残りの半分 (秘密鍵) は、複雑ではありますが、公開された数学的計算を使用して導出できます。アルゴリズムを壊す鍵を手動で検索することはブルートフォース攻撃と呼ばれます。
アルゴリズムを破ると、個人情報を傍受したり、なりすまして不正に検証したりするリスクが生じます。
アルゴリズムの キー強度 は、アルゴリズムを壊し、ブルートフォース攻撃と比較する最速な方法を見つけることで決定します。
対称キーでは、暗号化の実行に使用する鍵のサイズや 長さ において、暗号化強度が説明されています。通常は、より強力な暗号化が提供されます。キーの長さはビット単位で測定されます。
キーを破壊する最もよく知られている攻撃が、すべてのキーの可能性をテストするブルートフォース攻撃よりも速くない場合、暗号化キーは完全な強度であると見なされます。
異なるタイプのアルゴリズム (特に公開鍵アルゴリズム) では、対称鍵暗号と同じレベルの暗号化強度を実現するために、異なる鍵の長さが必要になる場合があります。RSA 暗号は、それが基づいている数学的問題の性質により、特定の長さのキーに対して可能なすべての値のサブセットのみを使用できます。対称キーの暗号化に使用されるその他の暗号は、特定の長さのキーに可能なすべての値を使用できます。より一致するオプションがあると、セキュリティーが強化されます。
RSA 鍵を解読することは比較的簡単であるため、RSA 公開鍵暗号化暗号は、暗号的に強力であると見なされるために、非常に長い鍵 (少なくとも2048ビット) を持っている必要があります。一方、対称鍵暗号は、ほとんどのアルゴリズムで 80 ビットという非常に短いキー長を使用すると、同等に強力であると見なされます。同様に、Elliptic Curve Digital Signature Algorithm (ECDSA) 暗号などの楕円曲線暗号 (ECC) に基づく公開鍵暗号では、RSA 暗号化よりもビットも少なくなる必要があります。