web-dev-qa-db-ja.com

Gmailを使用して、PGP公開鍵ブロックを含む平文の電子メールを誰かに送信した場合、それは安全ですか?

私は長年、「実用的な暗号化」(別名「PGP」)を理解しようと努めてきました。私の知る限り、これには根本的な欠陥はありません。

  1. Joeの電子メールアドレス、cool_joe @ gmail.comを知っています。
  2. Gmailのメールアドレスがあります:[email protected]
  3. PCにGPGがインストールされています。
  4. GPGから抽出された「PGP PUBLIC KEY BLOCK」から成る新しいメールをJoeに送信します。
  5. ジョーはそれを受け取り、私の「PGP PUBLIC KEY BLOCK」を使用してテキストを暗号化し、私の電子メールに返信すると、それを解読して彼のメッセージを読むことができます。このメッセージの中に、ジョーは彼自身のそのようなPGP公開鍵ブロックを含めました。
  6. 私はJoeのPGP公開鍵ブロックを使用して彼のメッセージに返信します。これ以降は、PCに保存されているお互いの鍵で暗号化された実際のメッセージ(鍵なし)のみを送信します。

これについて根本的に間違っている/安全でないことはありますか?いくつかの懸念:

  1. 電子メールサービスを操作するだけで、Googleは私の公開鍵を知っています(暗号化されたblobに埋め込まれているため、Joeの公開鍵はわかりません)。しかし、これは実際には問題ではありませんか?彼らは私の公開鍵で何もできませんか? privateキーをコンピューターに持っているので、それを使用できる唯一のことは、テキストを一方向に暗号化することです。
  2. 彼らが私の最初の電子メールメッセージを操作して、Joeに送信したキーを変更すると決めた場合、Joeの返信は、私の公開鍵を使用して暗号化されていないため、Googleが傍受した鍵であるため、私には読めなくなります。つまり、ジョーと私は、私からの最初の電子メールと彼からの最初の返信(Googleが読むことができます)を超えて会話することはありませんが、その後、私は彼の返信を読んだり解読したりできないので、何も起こりませんか?
55
Joas

Steffenがすでに言った のように、セキュリティ上のアキレス腱はあなたがジョーと話していることを確認し、ジョーは彼があなたと話していることを確認しています。最初の鍵交換が危険にさらされた場合、第三者はメッセージを読み取り、再暗号化してJoeに送信することができ、その逆も可能です。

この問題を解決しない限り、暗号は問題ではありません。そのため、HTTPSの世界には、CA(認証局)という名前の特別なエンティティがあります。 CAは、GoogleがFacebookなどの証明書を取得できないようにするためのものです。したがって、不正なCAが証明書を発行しない限り、Googleにアクセスして、Googleにアクセスしていることを確認できます。

最初のキー転送は重要なものであり、これはいくつかの方法で実行できます。

  • 直接
  • アウトオブバンドメッセージ(ツイート、Instagramの投稿、カタツムリのメール)
  • 共通の友人による紹介(あなたはビルを知っており、彼のキーを保存していて、ビルはあなたの両方を知っており、両方のキーを共有している)

この交換後、設定はかなりしっかりしています。

77
ThoriumBR

彼らが私の最初の電子メールメッセージを操作して、Joeに送信したキーを変更することにした場合、Joeの返信は私には読めなくなります。これは、私の公開鍵を使用して暗号化されなくなったため、Googleが傍受した鍵だからです。つまり、ジョーと私はその最初のメール以外の会話はしません...

彼らが最初のメールの中間者しかできないことが確実である限り、これは本当です。ただし、次のメールも中間者で送信できる場合は、ジョーからのメッセージを実際に暗号化し、公開鍵を知っているので再度暗号化できるので、ジョーからあなたへのメッセージを単純に復号化できます。

電子メールの安全な通信をセットアップするには、他の安全な通信チャネルを使用して、公開鍵を交換または少なくとも確認する必要があります。そうしないと、MITMがこれらのIDを要求するだけで誰もこれを検出できません。

21
Steffen Ullrich

このアプローチは、メールプロバイダー(つまり、Google)を信頼できるようになるとすぐに非常に安全になります。

MITM攻撃に関する他のすべての回答は、一般的に当てはまります。この特定のケースでは、同じプロバイダー内で操作する場合、追加の考慮事項を成功させることができます。

1。ジョーは(簡単に)偽装することはできません

10年前から、 "Joeという名前の男"から、または[email protected]からでも、Joeの公開鍵のように見える巧妙なメールをだれでも送ることができます。最小のプロバイダー(非常に、非常に小さいメールサーバー)は、SPFポリシーを適用しない場合があります。

同じメールプロバイダー内で、つまりGmailのtrueの場合、Gmailの送信者アドレスを偽造できないように追加のチェックが行われます。ジョーのアカウントをハッキングする必要がありますが、これは対象外です。

つまり、Joeをハッキングできないと想定することで、Joeが悪意のある第三者になりすまされることはできず、Joeからのメールは本当に届くということになります。 ジョーから ジョーのメールアカウントから。

2。あなたは自分のプロバイダーを信頼する必要があります

同じプロバイダーを使用しているので、あなたはそれを信頼していると思います。この特定のケースでは、Googleがどの程度信頼できるかに関係なく、セキュリティの観点からは1つの攻撃ベクトルが残されています。プロバイダーは、Joeの公開鍵を偽造された公開鍵に変更して安全な通信を妨害するほど不正である必要があります。

つまり、あなたの会話のセキュリティを破ることができる唯一の俳優はGoogle Inc.自身であるということです。これは、ポイント#1とメールが自分のシステムを離れないためです。

あなたの懸念に答える

Googleは私の公開鍵を知っています(暗号化されたblobに埋め込まれているため、Joeは知りません)。しかし、これは実際には問題ではありませんか?彼らは私の公開鍵で何もできませんか?それを使用できる唯一のことは、テキストを一方向に暗号化することだけです。これは、自分のコンピューターに秘密キーしか持っていないため、解読できるのは自分だけです。

ポイント2の中断を想定すると、Googleはあなたになりすまして、あなた自身の公開鍵を彼らが知っている鍵で変更し、自由にメッセージを再暗号化して再署名することができます。

彼らは行動するチャンスが1つだけあり、それが最初のメールです。「Hello Joe、これは私の公開鍵ABCDEFです」

彼らが私の最初の電子メールメッセージを操作して、Joeに送信したキーを変更すると決めた場合、Joeの返信は、私の公開鍵を使用して暗号化されていないため、Googleが傍受した鍵であるため、私には読めなくなります。つまり、ジョーと私は、私からの最初の電子メールと彼からの最初の返信(Googleが読むことができます)を超えて会話することはありませんが、その後、私は彼の返信を読んだり解読したりできないので、何も起こりませんか?

Googleは交換するメッセージを盗聴してトランスコードする必要があります。 Ifが発生した場合、どちらも最初は間違ったキーを信頼していたため、攻撃を検出できません。


電子メールMITMの例(アリス、ボブ、チャーリーを使用)

チャーリーは不正なメールサービスプロバイダーです

アリス(チャーリー経由):

こんにちはボブ、これは私の公開鍵ABC983(付属の鍵素材)です

チャーリーは新しいキーペアを生成し、メッセージを置き換えます

こんにちはボブ、これは私の公開鍵ZZZ765(添付の鍵素材)です

ボブはテキストを受信し、不正なキーであるキーZZZ765を使用して新しいメッセージを暗号化し、ZZZ765をトラストストアに格納します。その後、次のメールを配信のためにチャーリーに送信します

はじめましてアリス、DEX258をキーにしてください。

--- ZZZ765を使用して暗号化、DEX258を使用して署名---

チャーリーは電子メールを傍受し、ZZZ765を使用して復号化してプレーンテキストを取得し、さらに新しいキーペアを生成します。

チャーリーは次のメールをアリスに配信します

はじめましてアリス、FGN754を私の鍵として使用してください

--- ABC983を使用して暗号化、FGN754で署名---

アリスは、信頼できるストアで不正なキーFGN754を信頼します。

両方の当事者は、バーで直接会う日まで、本気でお互いに本気で話し合ったことを誓います。

驚いたことに、彼らは間違ったキーを使用し、元のメールが「送信済みメール」フォルダとは異なることに気付くでしょう。物語の終わり

あなたのシナリオでは、Joeに送信するPGP鍵は転送中に操作でき、Joeはそれを認識できませんnless次のいずれかを使用しますsolution PGPに組み込まれたアプローチ

最初の公開鍵交換は重要ですが、解決策があります。 X.509証明書(S/MIMEで使用される)の場合、同じ問題が階層的に編成された認証局を使用して解決されます。そのシステムでは、信頼できるCAによって署名されていれば、証明書を信頼できます。それに対するPGPのアプローチは、だれでも鍵に署名できることを意味する信頼の網であり、その署名が信頼できるかどうかは、署名者の個人的な信頼に依存します。

したがって、このメカニズムを問題に適用するには、キーがサードパーティによって署名されているジョーによって信頼されている場合、気づかれない方法で転送中にキーを操作することは不可能です。マニピュレータは、第三者の名前で操作されたキーに署名できません。鍵が信頼できるサードパーティによって署名されている場合、鍵は任意のソースから取得できます。これが、PGP鍵サーバーの動作方法です。

あなたまたはJoeによって信頼されているサードパーティが存在しない場合でも、公開鍵をJoeに送信できますが、Joeが受け取った鍵が途中で別の方法で変更されていないことを確認する必要があります。そうするために、あなたに彼に言うことができますあなたの鍵の指紋が、あなたは独立したチャネルでそれをする必要があるでしょう。たとえば、フィンガープリントをWebサイトに公開することは珍しいことではありません。そのWebサイトがGoogleによってホストされていない限り、操作されたキーに合わせて操作される可能性はほとんどありません。

6
not2savvy

これにより、攻撃者がMITM(中間者)に証明書交換を1回限りで提供し、代わりに別の機会を提供します。仮説的には、新しい攻撃者のキーで再暗号化して送信するすべてのメッセージを傍受して転送する可能性があります。ただし、いくつかの問題を緩和する要素があります。

両方がGmailのウェブメールクライアントを使用している場合、SMTPは実際には非常に安全ではありませんが、攻撃者がメールを乱用する可能性は最小限です。

鍵の交換後、攻撃者であろうと正当であろうと同じ人物にメールを送信するであることがわかります。これは基本的に最初の使用に対する信頼であり、攻撃が発生する機会はこれ以上ありません。

攻撃者は、もしあなたの電子メールが本質的にすべてMITMである必要があります。

安全なチャネルで鍵全体を交換する必要があるという提案があります。これはfalseです。公開鍵ブロックを電子メールで送信し、電話または直接会って、証明書の拇印(鍵の安全なハッシュ)を交換して、有効であることを確認できます。

3
trognanders

他の人が指摘したように、あなたのシナリオでは、Googleはあなたの公開キーをJoeに送信する最初のメッセージの中間者になる立場にあります。役立つ1つのことは、公開鍵を複数の場所に公開することです。そのため、公開キーを(Googleでホストされていない)Webサイト、github、facebook、ハッカーのニュース、reddit、stackexchange、複数の公開キーサーバー、または看板やニューヨークタイムズの広告や投稿に公開します。匿名のニュースグループやランダムなフォーラムなど(そして実際、keybase.ioのようなサービスでは、検証可能な署名を使用してそれらの多くをpgp公開鍵にリンクできます)。次に、公開鍵を配置したすべての場所をリストし、メッセージ全体に同じ鍵で署名できます。 Googleや他の誰もが、これらすべての場所を変更できる可能性は低いです。

ただし、Googleは信頼できるCAも所有しており、GoogleのChromeブラウザーも広く使用されているため、Googleがあなたをターゲットにしたい場合は、変更されたバージョンのブラウザーを信頼できるようにする可能性があります。公開サイト。これを行うには、キーをリストしたすべてのサードパーティサイトに別の証明書を発行する必要があります(証明書の透明性は、この種の攻撃を軽減するように設計されています)、または少しだけ行う必要があります。 Chromeでのダウンロード後の操作、さらにはFirefoxとChromeでの出力を比較することで簡単に検出できます。

1
Brian Minton

それは正しいです。公開鍵は自由に配布できます。あなたの公開鍵を持っている人なら誰でもメッセージを暗号化してあなたに送ることができます。 (決して配布してはならない)秘密鍵だけがメッセージを復号化できます。

  • 公開鍵=暗号化
  • 秘密鍵=復号化

ただし、公開鍵を誰かに送信した場合、そのユーザーが送信したメッセージのみを暗号化できるという制限があります。これは一方向の暗号化スキームであり、暗号化されていないメッセージを誰かが傍受して読み取ることができるため、完全に安全ではありません。また、送信するメッセージを暗号化できるようにするには、公開鍵を取得する必要があります。

ユーザーが暗号化されたメッセージを傍受する可能性がありますが、私の知る限り、公開鍵を使用して暗号化されたメッセージを読み取ることはできません。他の人が言及しているのは、Joeと通信していて、3番目のユーザーであるSamが紹介されている場合だと思います。サムがあなたの公開鍵を持っている場合、彼は潜在的にジョーになりすまして暗号化されたメッセージを送信することができます。おそらく、SamがJoeではないことを知っているでしょう。それらの公開鍵が同じでないか、Samの公開鍵を持っていないためです。暗号化されたメッセージをサムに送り返そうとしても機能しません。

電子メールのほとんどのカジュアルユーザーは、暗号化された電子メールを送信するための秘密鍵と公開鍵のペアを持っていません。メールを傍受する機能がないため、メールプロバイダーとNSAによってすぐにブロックされてしまうかもしれません。メッセージの内容を読み、そこから金銭的な優位性を得てください。 。????????????

0
Justa Guy

人生の多くのものと同様に、答えはyesおよびnoです。 。あなたの質問ごとに:

  1. あなたが正しい、世界があなたの公開鍵を知っていることに問題はありません-それがそれが呼ばれる理由です公開鍵
  2. いいえ、あなたはそれについて間違っています。あなたのサービスプロバイダーがあなたのサービスをコントロールするので、それは完璧な中間者として振る舞い、ジョーとあなたの対応するすべてを傍受することができます。さて、ジョーがあなたとの関係にあり、あなたと彼の間の電子メールはプライベートであり、ジョーとあなたの間で何も起こっていないとあなたが思っている間に、サービスプロバイダーがそれらの電子メールを傍受して受信トレイに届かないようにした場合....今ジョーはあなたではない誰かと彼の個人的な考えを共有しています:(

結論:公開鍵は別のチャネル(会話を傍受できないチャネル)経由で送信する方がよいでしょう。

0
baba smith