web-dev-qa-db-ja.com

PGPで公開鍵を確認するにはどうすればよいですか?

私はProtonmailのシステムについて読んでいて、何かへの答えを見つけることができませんでした。 PGPでは、通信は非対称暗号化(公開鍵と秘密鍵)を使用して暗号化されます。安全に何かを受信者に送信したい場合は、受信者の公開鍵を使用します。

私の理解に:最近のインターネットシステムでは、通常誰か(またはクライアントソフトウェア)が誰かの公開鍵を取得するために、公開鍵をkeyserverから探します。もしそうなら、このシステムはMITM攻撃を受けやすい、言い換えれば、それは単一障害点です。

これが公開鍵の通常の配布方法であることは正しいですか?中央の公的に利用可能なサーバーを介して?キー交換中のTLS/SSLが攻撃を防ぐことができることは知っていますが、そのPKIシステムにも一元化された側面があるので、それを無視するように求めています。

2
Najib

実際、キーサーバーからキーを取得するという単純なアプローチは、man-in-the-middle攻撃に対してに対してそれほど脆弱ではありません。 )中毒攻撃。

ポイズニング攻撃では、攻撃者が代替情報(この場合は公開鍵)を提供し、どういうわけか本当の鍵の代わりにそれを使用させます。

中間者攻撃では、攻撃者は(論理的または物理的に)ユーザーとシステムまたは受信者の間に座って、それぞれのエンドポイントからもう一方のエンドポイントに見えます。


とはいえ、鍵サーバーからの鍵をすぐに信頼することはできないのは正しいことです。 何らかの方法で検証する必要があります。

PGP/OpenPGP/RFC4880信頼モデルでは、その検証は主に鍵の指紋と署名によるものです

例として、アリスがボブと安全に通信したいが、どちらも会ったことがなく、会える可能性も低いとしましょう。ただし、どちらもOpenPGP実装にアクセスでき、公開鍵を鍵サーバーにアップロードできます。どちらも、電子メールアカウントをセットアップし、それらの電子メールアドレスに関連付けられたキーペアを作成し、それぞれの公開キーを共有キーサーバーにアップロードする準備を済ませています。

アリスとボブがお互いに送信しているものを読むことができるようにしたいキャロルもそうすることができます。キャロルもボブの電子メールアカウントに何らかの方法でアクセスしました。 (たぶんボブは弱いパスワードを使用しました。)

ifアリスが帯域外でボブと通信できる簡単な方法は、アリスが他のメディアを使用してボブに連絡し、彼の公開鍵の指紋を尋ねることです。それがアリスが持っているキーと一致し、アリスが応答者が実際にはキャロルではなくボブであると信頼できる場合、彼女はボブに属しているキーを信頼できる可能性が非常に高いです。

彼女ができなくても、しかし、方法があります。

ボブはこの世界で一人ではありません。 Aliceはボブと直接会うことはできませんが、他の多くの人が会うことができます。それらの人々は、ボブの身元を確認し、署名しているキーが実際にはボブに属していて、ボブに属していないという声明である、ボブのキーに署名することができます詐欺師に。キャロルはこれらの人々にボブに属しているとして彼女のキーに署名させることができません、それは「ヘイボブ、なぜキーを変更するのですか?」というフォームで質問を投げかけるため、理想的にはキャロルができない方法で尋ねられるコントロール。たとえば、デイブはボブの声を認識しているので、電話帳を引き出して電話でボブに電話をかけるか、同じ会社で働いているので仕事中に彼に尋ねるかもしれません。

したがって、アリスは、ボブのものであると主張する鍵の一連の署名を調べ、次にそれらの鍵の一連の署名を調べることができます。ここでの目的は、署名をアリスが信頼する鍵にトレースすることです彼女が自分で確認したか、またはそれが広く信頼されている鍵であるためコミュニティ。 (たとえば、ソフトウェアの作成者、または大規模なフリーソフトウェアプロジェクトに関連する誰かの広く配布されている公式キーは、そのフィンガープリントを検証できれば信頼できる可能性があります。)

署名だけを見てみませんか? 1つには、ボブの実際の鍵の署名とまったく同じように一見して現れる鍵と署名をCarolが作成することを妨げるものは何もありません。しかし、キャロルは自分で作成したキーの間に信頼チェーンを作成できますが、彼女はその信頼チェーンを他の場所に固定することはできません。したがって、信頼チェーンは最終的に、たとえば Werner Koch または Phil Zimmermann に属していると主張するキーにつながる可能性がありますが、キャロルは実際には信頼チェーンをそこにアンカーできませんWerner KochまたはPhil Zimmermannは、署名する鍵の所有者の身元と、信頼チェーンが導く鍵が公式の鍵と一致しないことを確認する際に、細心の注意を払っています。 その個人に属するものとして検証できる注目度の高いキーにつながる一連の署名を見つけることは、最初に使用したキーが改ざんされていない可能性が高いことを意味します。

アリスは、それらのアンカーキーの指紋を他の人に要求することもできます。複数の人がコッホのキーに特定のフィンガープリントがあることに同意し、これが彼女のキーと一致する場合、そのキーのアリスのコピーの信頼性が大幅に向上します。

はい、アリスがこれを適切に実行したい場合、実行する必要があるかなりの作業があります。これは、everyの信頼階層のルートに超信頼キーのセットがないこと、つまりTLS CAエコシステム(Webブラウザで使用される)の方法に費やさなければならない代償です。動作します。そのコインの裏側は、すべてのユーザーが他のキーに署名するために実際に信頼するキーを決定できることです。

アリスは、ボブの鍵が正当であることを確認すると、通常はローカルに署名します(自分のエクスポート不可能な署名を追加します)。彼女は実際にはキーホルダーのアイデンティティを検証していないため、エクスポートできないため、他の人にそのことを伝えたくないので、信頼性が低下します。実際のキー署名ですが、自分自身とシステムのソフトウェアに、キーのある程度の検証を行ったことを示し、それによって「このキーは信頼されていません!」警告。

簡単ですね。

4
a CVn

帯域外の信頼モデルが重要であることを本能的に理解しているようです。

PKIを使用すると、OS /ブラウザ/教育機関は、インストール時またはMDM/GPを介して、システムが信頼できる鍵/証明書のツリーに拡張するために使用する「信頼できる」(当然のことではない)CAのリストを提供します。

PGP/GPGを使用すると、開発者は、信頼する人や十分に支払った人を暗黙のうちに信頼するように求めません。指紋は、独自の信頼の第1層を構築するための帯域外の方法です。その後、その信頼ツリー/ Webを拡張するのに単一の署名のみで十分かどうかを定義できます。

はい。信頼の第一層を構築することは、より多くの作業です。

2
tjd

これが公開鍵の通常の配布方法であることは正しいですか?中央の公的に利用可能なサーバーを介して?

はい、あなたは公開鍵サーバーを使用しています。MIT公開鍵サーバーはそのための人気のあるサーバーです

私の理解によると:今日のインターネットシステムでは、通常誰か(またはクライアントソフトウェア)が誰かの公開鍵を取得するために、キーサーバーから公開鍵を探します。もしそうなら、このシステムはMITM攻撃を受けやすい、言い換えれば、それは単一障害点です。

まあそれは確かに簡単ではありませんが不可能でもありません

はい、あなたは正しいかもしれません。攻撃者があなたに自分の公開鍵を提供し、暗号化されたデータを取得できる場合、彼は自分の秘密鍵を使用してそれを解読できますGPGで--fingerprintオプションを使用する

ここ は、その方法を示す記事です

もちろん、指紋も何らかの方法で送信される必要があります。これを行う方法は2つあります。

  1. 受信者の公開鍵で署名します(受信者は公開鍵を取得する人です)

    または

  2. 帯域外チャネルを作成します。

1
Vipul Nair