paint-brush
「信頼のウェブ」の原理または PGP の仕組み@web3judge
291 測定値

「信頼のウェブ」の原理または PGP の仕組み

Judge5m2024/09/22
Read on Terminal Reader

長すぎる; 読むには

PGP は、テキスト、電子メール、ファイル、ディレクトリ、およびディスク パーティション全体を暗号化および復号化するためのオープン スタンダードです。PGP の最新バージョンは、GnuPG やその他の OpenPGP 準拠システムと相互運用可能です。PGP を使用すると、セキュリティを損なうことなく公開キーを自由に公開できます。
featured image - 「信頼のウェブ」の原理または PGP の仕組み
Judge HackerNoon profile picture

メッセンジャー、HTTPS プロトコル サイト、インターネット サービスの認証、安全なファイル ストレージ、そして時には目覚まし時計など、これらすべてが PGP を使用しています。しかし、PGP とは何でしょうか。Wikipediaでは次のように定義されています。


Pretty Good Privacy ( PGP ) は、データ通信暗号プライバシー認証を提供する暗号化プログラムです。PGP は、テキスト、電子メール、ファイル、ディレクトリ、およびディスク パーティション全体の署名、暗号化、復号化に使用され、電子メール通信のセキュリティを強化します。PGP は、 Phil Zimmermannによって 1991 年に開発されました。


PGP および類似のソフトウェアは、データの暗号化と復号化のためのオープン スタンダードである OpenPGP 標準 (RFC 4880) に準拠しています。PGP の最新バージョンは、GnuPGやその他の OpenPGP 準拠システムと相互運用可能です。


言葉では明らかですが、どのように機能するか見てみましょう。

コンセプト

ユーザー A とユーザー B がいるとします。彼らは通信を開始する必要がありますが、通信の内容を誰にも知られないようにする必要があります。ここで暗号化が役立ちます。



最近のシステムでは、Rjindael (現在は AES)、DES、RC4、およびその他のアルゴリズムが使用されています。


それらの仕組みの詳細については説明しません。それらについて知っておくべきことは、入力データとキーを与えると、暗号化されたバイト配列が得られ、同じキーでそれを元に戻すことができるということです。南京錠のように、それらは開いたり閉じたりしますが、キーがなければ、そうすることはほとんど不可能です (これらのアルゴリズムを破る効果的な方法はありません)。このような暗号化アルゴリズムは、対称暗号化アルゴリズムと呼ばれます。


それが答えですよね? ユーザー A が自分のキーをユーザー B に渡すようにします。そうすれば、双方からの通信を暗号化でき、お互いに書き込んだ内容を誰も知ることができなくなります。


もちろん、両方のユーザーが実際にお互いを知っている場合は、一方がキーが入ったフラッシュ ドライブを他方に渡すことができます。


しかし、インターネットではこれを実現することは不可能です。ユーザーは 2 人以上ではなく、1 つのサービスが 1 日に何百万もの異なるユーザーにサービスを提供する可能性があります。また、会議中に直接やり取りするすべての人に個人の暗号化キーを渡すことが常に可能であるとは限りません。

電子署名

同じ AES から秘密鍵を渡すことはセキュリティを危険にさらすことに等しいため、ユーザー A が自分の鍵をユーザー B に安全に渡すにはどうすればよいかという疑問が生じます。


解決策は、別のキーでキーと電子メールに署名することです。ただし、この 2 番目のキーのみが非対称暗号化アルゴリズムからのものになります。本質は対称と同じですが、ロックからのキーは 1 つではなく 2 つあります。1 つは「公開」で、データはこれでのみ暗号化できます。もう 1 つは「秘密」で、ペアの公開キーによって処理されたデータを復号化できます。


このようなプロセスにより、セキュリティを損なうことなく公開鍵を自由に公開できます。


これが「電子署名」の動作原理の基本です。



これらは、データのユーザー B が、データがユーザー A に属するキーで暗号化されていることを確認できるようにするために必要であり、その逆も同様です。


署名は元のデータのハッシュから作成され、送信されるパケットに添付されます。


受信者は公開鍵で署名を復号化し、受信したデータのハッシュと比較します。一致した場合、送信者は詐欺師ではなく本物のユーザーです。

信頼のウェブ

さて、ハンドシェイクを実行する方法がわかりました (ハンドシェイクは、安全な通信チャネルを形成するプロセスです)。


ここで、ユーザー A と B の間に別のユーザー C がいると想像してください。


「C」は、AとBの通信の詳細を知る必要がある攻撃者です。


署名するための 2 つのキー ペアと、データを暗号化するためのさらに 2 つのキーを作成します。


ユーザー A に対しては、自分をユーザー B として紹介し、ユーザー B に対しては、自分をユーザー A として紹介します。インターネットの現実では、結果として得られる電子署名とキーが本物であると 100% 確信することはできません。


では、そのようなシナリオが本当に起こり得るとしたら、A と B は安全ではなくなるのでしょうか?


救いはあります!さて、本題である「信頼のウェブ」にたどり着きました。


このネットワークは、すべてのユーザーが互いの電子署名の公開鍵を知っているという事実から成り、ネットワークの各メンバーに「ユーザー B から送信されたこの鍵は、侵入者のものではなく、彼のものか?」と尋ねることができます。


この場合、信頼のネットワークは参加者数が少ない場合でも非常に効率的です。なぜなら、1 人が他の参加者を知っていれば、3 人目は最初の参加者に尋ねることで、2 人目の参加者の公開鍵を知ることができるからです。オークの木の根のように、信頼の Web は絡み合っていて、ユーザーがデータを共有できるようにします。




これで、ユーザー C は他のユーザーになりすますことができなくなります。ユーザー A がネットワーク メンバーのいずれかに問い合わせて、ユーザー C とユーザー B の間に誰かが立ちはだかり、メッセージを傍受していることに気付いた場合にのみ、ユーザー A は他のユーザーになりすますことができます。

一般化

ここで、これらすべての概念を 1 つのシンプルなスキームに組み合わせてみましょう。


ユーザー A とユーザー B は両方とも同じ信頼ネットワーク内にあり、安全な通信を開始したいと考えています。


「A」はネットワークの複数のメンバーに「B」の公開鍵を要求します。この鍵を使用して、ユーザー B にハンドシェイク要求を送信します。次に、「B」はユーザー A の公開鍵を取得し、その後の通信用に対称鍵を生成し、ユーザー A の公開鍵を使用して対称鍵を送り返します。


この方式のすべてのメッセージも電子署名で署名されます。


この通信により、外部からの干渉がなくなり、ユーザーはようやく通信を開始できるようになります。


このスキームを手動で使用しても意味がありません。このスキームは、ブラウザやアプリケーションによって、すべての可能なインターネット通信プロトコルにすでに組み込まれています。

結論

完璧なシステムはありません。MITM (中間者、この場合、被害者ユーザーのブラウザが信頼する署名を使用して偽のキーを検証することで証明書を偽造する方法) 攻撃は、今日でも実行されています。


しかし、ブラウザのアドレスバーの近くに「緑色の鍵」が表示されている場合は、データは PGP アルゴリズムによって安全に保護されています。