公開キー暗号について

 

トピックの最終更新日: 2005-05-19

ここでは、メッセージ セキュリティに具体的に関連する公開キー暗号の要素の高度な概要について説明します。利用可能な他のソースを参考にすると、このトピックについてさらに詳しく知ることができます。

暗号化は、コードと暗号による情報の保護についての研究です。暗号化は、メッセージ セキュリティの基盤部分を構成しています。

簡単に説明すると、コードは、情報を系統的に変更して、どのように変更されたかを知ることなく情報を読み取り不可能にするプロセスです。初期の最も簡単なコードの 1 つ (シーザー暗号と呼ばれています) は、アルファベットを取得し、すべての文字を固定数シフトすることで動作しました。送信者と受信者はどちらも何文字シフトするかを知っていて、このコードを使用して情報を変更するため、どちらも理解できますが、他の人はだれも理解することができません。情報をコードに変更するこのプロセスが暗号化で、コードを元に戻すプロセスが解読です。元のメッセージは "プレーンテキスト" と呼ばれます。変更されたメッセージは "暗号テキスト" と呼ばれます。プレーンテキストを暗号テキストに変更するために使用する情報は、キーと呼ばれます。キーが情報の変更に使用する特定の方法は、アルゴリズムと呼ばれます。

note注 :
この場合のプレーンテキスト (またはクリア テキスト) を、電子メール メッセージの形式を表す際のプレーンテキストと混同しないようにしてください。電子メール メッセージの形式を表す際のプレーンテキストは、メッセージの形式を HTML 形式や RTF (リッチ テキスト形式) と区別するために使用されます。メッセージ セキュリティの場合、プレーンテキストは暗号テキストと区別するために使用され、テキストが暗号化されていないことを示します。

たとえば、送信者がこの方法を使用してメッセージを暗号化する場合、送信者はプレーンテキスト内の文字 A はすべて暗号テキストではキーによって文字 D に、プレーンテキスト内の文字 B はすべて暗号テキストでは文字 E に、というように変更されるとわかっています。"文字を 3 つ後方にシフトする" というアルゴリズムを持つこのキーを使用すると、プレーンテキスト内の単語 "help" は "khos" という暗号テキストに暗号化されます。

受信者が暗号テキスト メッセージを受信すると、受信者は情報を解読するためのキーを使用してプレーンテキストに変換します。この場合は、文字を 3 つ前方にシフトして、変更を元に戻します。

この例では、キーを知っている人であればだれでもキーを使用してメッセージを解読し、読み取ることができるため、送信者と受信者の両方がキーを秘密にしておく必要があります。キーが失われると、暗号化が無用になります。さらに、アルゴリズムの強度が重要です。認証されていない人物は、暗号化された暗号テキストを手に入れ、暗号テキストを基にしてキーを特定して暗号化を破ろうとすることができます。

送信者と受信者はどちらも同じキーを使用することに注意してください。この種の暗号化は、両者が同じキーを使用するため、"対称キー" による暗号化と呼ばれます。

これは簡単な例ですが、暗号化の中心的な概念と機能を表しています。暗号化における最近の改善および向上では、強度の面が強化されています。

1976 年に、Whitfield Diffe と Martin Hellman が公開キー暗号を作成しました。公開キー暗号は、暗号化と解読のプロセスを根本的に変える大きな技術革新です。

単一の共有秘密キーに代わって、Diffe と Hellman は 2 つのキーの使用を提案しました。1 つのキーは "秘密キー" と呼ばれ、秘密のままです。これは両者で共有されるのではなく、一方によってのみ保持されます。もう 1 つのキーは "公開キー" と呼ばれ、秘密ではなく、広く共有できます。これらの 2 つのキー、つまり "キー ペア" は、暗号化および解読操作で連携して使用されます。キー ペアには特別な相互関係があるため、各キーはペアとなっているもう一方のキーと連動してのみ使用できます。この関係により、ペア内のキーはお互いに排他的に結び付けられます。公開キーとそれに対応する秘密キーはペアとなり、他のどのキーとも関連付けられません。

このペアは、公開キーと秘密キーのアルゴリズム間の特別な数学的な関係によって可能になります。キー ペアは、キー ペアを連携して使用することで対称キーを 2 回使用するのと同じ結果を実現するように、互いに数学的に関連付けられます。キーは連携して使用する必要があります。各キーを個別に使用して、その操作を取り消すことはできません。つまり、各キーの操作は一方向の操作です。キーを使用して操作を元に戻すことはできません。さらに、両方のキーによって使用されるアルゴリズムは、キーを使用してペア内のもう一方のキーを特定できないように設計されています。したがって、公開キーから秘密キーを特定することはできません。ただし、キー ペアを可能にする数学は、対称キーとは反対に、キー ペアの 1 つの欠点の原因となっています。使用されるアルゴリズムは、既知の公開キーを使用したブルート フォース攻撃によって、そのキーで暗号化された情報を解読することができないぐらい十分な強度を備えている必要があります。公開キーは、数学的な複雑さと一方向の性質を使用することによって、公開キーで暗号化された情報は解読されないという公に知られている事実を補います。

この概念を前述の例に適用すると、送信者は公開キーを使用してプレーンテキストを暗号テキストに暗号化します。受信者は、秘密キーを使用して暗号テキストをプレーンテキストに解読します。

キー ペアの秘密キーと公開キーの特別な関係により、人によって異なるキーを使用する必要はなく、多くの人々に対して同じキー ペアを使用することが可能になります。秘密キーが秘密のままである限り、公開キーは任意の数の人に渡し、安全に使用することができます。多くの人々に対して単一のキー ペアを使用する機能は、暗号化における大きな進展です。キー管理要件を大幅に下げることによって、暗号化の利便性が大幅に高まるためです。ユーザーは、人によって異なる秘密キーを確立する必要がなく、1 つのキー ペアを任意の数の人と共有できます。

公開キー暗号は、メッセージ セキュリティの基本的な要素です。公開キー暗号が登場する以前のキー管理が面倒だったことから、公開キー暗号がなければ、実用的なメッセージ セキュリティ ソリューションの存在は疑わしくなります。公開キー暗号の基本的な概念を理解したら、次にこれらの概念がどのように働いてメッセージ セキュリティを可能にしているかを確認します。

前のセクションで説明したように、デジタル署名の中心となるのは、メッセージの送信者を一意に識別する機能です。キー ペアの関係には相互的な性質があるため、公開キー暗号を通じてこの一意の識別が可能になります。

キー ペアの秘密キーは一方にのみ属するため、秘密キーが使用されたことが示される場合は常に、そのキーの所有者のみがそれを使用したと結論付けることができます。このように、秘密キーの使用は、署名の所有者のみが実際に署名を行うことができる、紙への署名と同様です。秘密キーの使用がその所有者の存在を確認するのと同じように、署名はその所有者の存在を確認します。

キー ペアが暗号化および解読操作で正しく使用された場合は、そのペアの秘密キーが操作の一部に対して必ず使用されています。公開キーはただ 1 つの秘密キーに結び付けられているため、対応する公開キーを使用して関連するただ 1 つの秘密キーを識別できます。特定の公開キーが暗号化および解読操作で正しく使用された場合は、対応する秘密キーが操作の一部に対して使用されたと推察できます。秘密キーを使用できるのはキーの所有者だけなので、暗号化および解読操作の一部を実行した可能性があるのはキーの所有者だけということになります。

秘密キーを使用した ID の立証は、完全な暗号化および解読操作が正しく実行されたことを示します。完全な操作を示すことは、プレーンテキストが秘密キーを使用して暗号テキストに暗号化され、その後、対応する公開キーを使用してプレーンテキストに解読される必要があることを意味します。この操作が正しく示された場合、秘密キーのみの使用が明示されます。

暗号化および解読操作が正しく行われたことを示すには、暗号化および解読操作前のプレーンテキストが暗号化および解読操作後のプレーンテキストと一致する必要があります。両方のプレーンテキストを直接比較して、完全に一致することを示す必要があります。比較と検証に使用される対照が存在する必要があります。

電子メールでは、この対照は実際のメッセージです。メッセージは送信者と受信者の両方が使用できるので、便利な対照要素となります。

この比較操作で使用するために、メッセージは "ハッシュ" に変換されます。これは、全テキストを数値で表現したものです。同一のメッセージ テキストは、同一のハッシュ値を生成します。

メッセージのハッシュ値を取得し、それを送信時に秘密キーと組み合わせることにより、秘密キーの所有者は自分がそのメッセージを送信したことを証明します。

メッセージと秘密キーの組み合わせは、ハッシュ値を送信者の秘密キーで暗号化することにより実現されます。これにより、実際のデジタル署名が作成されます。送信者の電子メール システムの構成方法に応じて、デジタル署名がメッセージの下部に付加されて "クリア署名付き" メッセージが作成されるか、または結果が元のメッセージと組み合わされてバイナリ添付ファイルになり、"符号化署名付き" メッセージが作成されます。

デジタル署名が元のメッセージに添付ファイルとして追加されるため、クリア署名付きメッセージは、S/MIME をサポートしない電子メール クライアントで読み取ることができます。署名は破棄され、元のメッセージは非 S/MIME クライアントによって表示されます。ただし、メッセージを検証する方法はありません。実質的に、署名されていないメッセージと同じになります。クリア署名付きメッセージの欠点は、介在するメール ゲートウェイがメッセージを変更して、署名を無効にする可能性が高まることです。

一方、符号化署名付きメッセージでは、メッセージとデジタル署名が単一のバイナリ添付ファイルとして扱われるため、送信中に変更される可能性は非常に低くなります。ただし、S/MIME クライアントのみが添付ファイルを読み取ることができます。非 S/MIME クライアントが符号化署名付きメッセージを受信した場合、メッセージは読み取れません。

符号化署名付きメッセージが作成された理由の 1 つは、電子メールの送信中にメッセージ本文が変更されるという、電子メール システムの問題を解決するためでした。ここでは、S/MIME 標準に準拠する現在の電子メール ソリューションでは、メッセージ本文を変更しないということに注目してください。ただし、多くのクライアントでは、符号化署名付き電子メール メッセージを読み取ることができません。そのため、クリア署名付きメッセージを送信することをお勧めします。

メッセージが受信されると、解読操作でデジタル署名を取得し、送信者の公開キーを適用できます。これにより、メッセージの元のハッシュ値が生成されます。次に、このハッシュ値と受信したメッセージのハッシュ値を比較できます。1 つの秘密キーだけが公開キーと対応でき、公開キーを使用してハッシュ値を正しく暗号化できたのは公開キーの所有者だけなので、公開キーでのハッシュの解読は、秘密キーの所有者がハッシュ値を暗号化したことを示します。ハッシュ値はメッセージ テキストを数値で表現したものなので、暗号化されたハッシュ値が受信したメッセージのハッシュ値と一致した場合は、送信されたメッセージが受信されたテキストと一致することを示します。メッセージを送信した可能性があるのは秘密キーの所有者だけであるという事実と組み合わせると、その結果、受信者にはメッセージを送信したのはキーの所有者だけであることが保証され、認証および否認不可性が提供されます。また、メッセージが変更されていないことが示され、データ整合性が提供されます。ハッシュ値が一致しなかった場合、受信者には、メッセージが送信中に変更されたこと、または使用された公開キーが使用された秘密キーと一致しないことがわかります。どちらの場合も、受信者にはメッセージが有効ではなく、信頼してはいけないことがわかります。

このようにして、公開キー暗号がデジタル署名を構成するセキュリティ サービスを提供する方法を確認できます。

次の図は、署名の手順に公開キー暗号をサポートする要素を追加した手順を示しています。

35451fb8-5e11-4d67-ba6e-e5d4da6febca
  1. メッセージが取得されます。
  2. メッセージのハッシュ値が計算されます。
  3. 送信者の秘密キーが取得されます。
  4. ハッシュ値が送信者の秘密キーで暗号化されます。
  5. 暗号化されたハッシュ値がデジタル署名としてメッセージに付加されます。
  6. メッセージが送信されます。

次の図は、検証の手順に公開キー暗号をサポートする要素を追加した手順を示しています。

d1b14a27-5cfb-4df2-89f7-990219378716
  1. メッセージが受信されます。
  2. 暗号化されたハッシュ値を含むデジタル署名がメッセージから取得されます。
  3. メッセージが取得されます。
  4. メッセージのハッシュ値が計算されます。
  5. 送信者の公開キーが取得されます。
  6. 暗号化されたハッシュ値が送信者の公開キーで解読されます。
  7. 解読されたハッシュ値が、受信時に生成されたハッシュ値と比較されます。
  8. 値が一致した場合、メッセージは有効です。

この手順は、デジタル署名にその中心的なセキュリティ サービスである認証、否認不可性、およびデータ整合性を与える機能を公開キー暗号がどのように提供するかを示しています。

デジタル署名とは異なり、暗号化は公開キー暗号の中心的な機能なので、公開キー暗号とメッセージの暗号化の関係は、一般的により単純です。ただし、メッセージの暗号化は、キー ペアを使用してメッセージを暗号化および解読するだけでは達成されません。キー ペアはメッセージの暗号化で使用されますが、メッセージ全体に対しては使用されません。

メッセージの暗号化の目標は、認証された受信者だけがメッセージを表示できるようにすることなので、そのサービスを提供するのは各受信者の秘密キーが適しています。秘密キーはその所有者のみが正しく使用できるので、メッセージの読み取り中にキーを使用することにより、そのキーの所有者だけがメッセージを読み取ることができます。この機能は、メッセージの暗号化の基盤となる機密性を提供します。さらに、公開キーは広く配布できるため、任意の数の人々が情報を単一の秘密キー保持者に送信できます。

ただし、キー ペアは、メッセージ全体に対しては使用されません。これは、キーのアルゴリズムに必要な複雑さにより、キー ペアを使用した暗号化および解読操作が高価なプロセスとなるためです。キー ペアは常に使用する必要がありますが、必ずしもメッセージ全体に対して使用する必要はありません。情報の "ロック" および "ロック解除" を行うプロセスの一部である必要があります。秘密キーが提示されるまでメッセージが読み取り不可能でありさえすれば、メッセージの暗号化の目標は満たされます。

前の「公開キー暗号の動作」で説明したように、公開キーは強力なアルゴリズムを使用することによって、公に知られている事実を補います。これらの強力なアルゴリズムでは、以前の対称キーの長さよりも長い公開キーが使用されるため、処理に時間がかかることになります。秘密キーは表示する前に情報のロックを解除するためだけに使用され、メッセージ全体に対しては使用されないため、秘密キーが提示されるまで情報を使用できないように保証する一方で、できる限り少ない情報に対してキー ペアを使用し、できる限り多くの情報に対して迅速な対称キーを使用する方法が経済的です。

対称キーは秘密キーを使用します。このキーは両者が知っている必要があります。このプロセスは、"キー ネゴシエーション" と呼ばれることがあります。キー ペアの場合は、1 つの公開キーを多くの人々が使用できるため、キー ネゴシエーションはありません。キー ペアを対称キーと共に使用して、キー ネゴシエーションを処理することもできます。対称キーを選択し、そのキーをキー ペアの公開キーを使用して暗号化し、秘密キーの所有者に送信できます。複数の受信者に送信する場合は、同じ対称キーをすべての受信者に対して使用し、各受信者の公開キーを使用して暗号化することができます。対称キーを解読できるのは秘密キーの所有者だけなので、対称キーの秘密は認証された人々の間で保持されます。特定の操作またはセッション中に 1 回限り使用される対称キーを生成することもできます。これらは "セッション キー" と呼ばれます。公開キーによる暗号化は、対称キーによる暗号化を置き換えるのではなく、むしろ拡張するものです。

メッセージの暗号化の目標は、秘密キーが提示されるまでメッセージが読み取り不可能であることを保証することです。秘密キーを対称キー ネゴシエーションで使用すると、対称キーを安全に送信できます。対称キーを受信者に安全に送信できるため、対称キーを使用してメッセージを暗号化し、キー ペアの公開キーを使用して対称キーを暗号化できます。秘密キーの保持者だけが対称キーのロックを解除でき、対称キーが使用されてメッセージが解読されます。この操作は、メッセージ全体がキー ペアを使用して暗号化および解読されたかのように機能します。ただし、情報の大半に対して迅速な対称キーを使用するため、そうでない場合に比べ、操作は迅速に行われます。このプロセス全体を通じて、メッセージは秘密キーが提示されるまで保護され続けるため、メッセージの暗号化サービスの基本である機密性が提供されます。暗号化および解読プロセスにより、暗号化された後でメッセージが変更された場合は解読操作が失敗するため、データ整合性が提供されます。

対称キーの使用は意外で、その利点は一目瞭然ではないかもしれませんが、メッセージのセキュリティを損なわずにメッセージの暗号化のプロセスを迅速化することにより、メッセージ セキュリティが拡張されます。次の図は、暗号化の手順に公開キー暗号をサポートする要素を含めた手順を示しています。

21058391-2d70-42f9-bf25-8ead79705b27
  1. メッセージが取得されます。
  2. 受信者の公開キーが取得されます。
  3. 1 回限りの対称セッション キーが生成されます。
  4. セッション キーを使用して、メッセージに対して暗号化操作が実行されます。
  5. 受信者の公開キーを使用してセッション キーが暗号化されます。
  6. 暗号化されたセッション キーが暗号化されたメッセージに含まれます。
  7. メッセージが送信されます。

次の図は、解読の手順に公開キー暗号をサポートする要素を追加した手順を示しています。

50f0afca-e520-46b5-8e12-6e295dfe86d9
  1. メッセージが受信されます。
  2. 暗号化されたメッセージおよび暗号化されたセッション キーがメッセージから取得されます。
  3. 受信者の秘密キーが取得されます。
  4. 受信者の秘密キーでセッション キーが解読されます。
  5. 解読されたセッション キーでメッセージが解読されます。
  6. 暗号化を解除されたメッセージが受信者に返されます。

この手順は、公開キー暗号がメッセージの暗号化の中心的なサービスである機密性とデータ整合性をどのようにサポートするかを示しています。

デジタル署名とメッセージの暗号化は、互いに補い合うサービスです。公開キー暗号が各サービスとどのように統合されるかについて確認したので、次にこれらのサービスがどのように連携して使用されるかを確認すると役に立ちます。

次の図は、署名と暗号化の手順に公開キー暗号をサポートする要素を追加した手順を示しています。

e81cca9b-c780-49d9-a3f9-69cc3c442183
  1. メッセージが取得されます。
  2. メッセージのハッシュ値が計算されます。
  3. 送信者の秘密キーが取得されます。
  4. 受信者の公開キーが取得されます。
  5. ハッシュ値が送信者の秘密キーで暗号化されます。
  6. 暗号化されたハッシュ値がデジタル署名としてメッセージに付加されます。
  7. 1 回限りの対称セッション キーが生成されます。
  8. セッション キーを使用して、メッセージに対して暗号化操作が実行されます。
  9. 受信者の公開キーを使用してセッション キーが暗号化されます。
  10. 暗号化されたセッション キーが暗号化されたメッセージに含まれます。
  11. メッセージが送信されます。

次の図は、デジタル署名の解読と検証の手順に公開キー暗号をサポートする要素を追加した手順を示しています。

97705e57-0a94-4197-99c3-40bb58a9eaa0
  1. メッセージが受信されます。
  2. 暗号化されたメッセージおよび暗号化されたセッション キーがメッセージから取得されます。
  3. 受信者の秘密キーが取得されます。
  4. 受信者の秘密キーでセッション キーが解読されます。
  5. 解読されたセッション キーでメッセージが解読されます。
  6. 暗号化されたハッシュ値を含むデジタル署名がメッセージから取得されます。
  7. メッセージのハッシュ値が計算されます。
  8. 送信者の公開キーが取得されます。
  9. 暗号化されたハッシュ値が送信者の公開キーで解読されます。
  10. 解読されたハッシュ値が、受信時に生成されたハッシュ値と比較されます。
  11. 値が一致した場合、メッセージは有効です。
  12. 暗号化を解除されたメッセージが受信者に返されます。

この手順は、公開キー暗号がどのようにしてデジタル署名とメッセージの暗号化を可能にするかを示しています。

特定の操作に対して一方の公開キーまたは秘密キーをもう一方がどのように必要とするかに注意してください。たとえば、送信者は電子メールにデジタル署名するために秘密キーを持っている必要がありますが、暗号化された電子メールを送信するには受信者の公開キーが必要です。これは混乱を招く可能性があるため、両者が特定の操作に対して必要とするキーを次の図に示します。

ef4e76b6-4799-45a9-90f8-ec7af508152a

理解する必要がある次の要素は、デジタル証明書です。デジタル証明書は、キー ペアを配布することによって、デジタル署名と暗号化の使用を可能にします。

 
表示: