web-dev-qa-db-ja.com

非対称暗号化は中間者攻撃に対して脆弱ですか?

私はパブリックチャネルを介してプライベートメッセージを送信する方法を探しています。これを行う際に、非対称暗号化に遭遇しました。これは、最初に探していたものにぴったりです。AとBはパブリックチャネルを介して直接通信します。

ただし、メッセージのセキュリティがこの種の中間者攻撃によって危険にさらされる可能性があることは、今や私の懸念です。

アリスとバーナードは、インターネットに接続しているコンピューターユーザーです。 AliceはプロキシーのPaulを使用してインターネットに接続し、Aliceにメッセージを送信します。
ポールは、アリスとバーナードの間の通信を読みたいと考えています。したがって、アリスがバーナードに彼女の公開鍵を送信しようとすると、ポールはそれを保存し、同じく「アリス」からの新しいキーを偽造して、バーナードに送信します。彼はバーナードと同じことをします。
アリスがバーナードにメッセージを送信したい場合、彼女は実際にそれをポールに送信し、ポールはそれを復号化して変更し、バーナードに送信します。

5

非対称暗号化は、AliceがBobの公開鍵を知っており、BobがAliceの公開鍵を知っている場合にのみ、AliceとBobの間で交換されるメッセージにセキュリティを提供します。そうしないと、攻撃者は偽の公開鍵を公開し、実際にはボブと話しているときにアリスを装ったり、その逆を行ったりする可能性があります。

問題の歴史的見解は次のとおりです。古い時代(たとえば50年前)では、アリスとボブは「安全に」話し合えば、彼らは最初の共有シークレットを知っていました。アリスとボブの両方が共有シークレット[〜#〜] k [〜#〜]を知っている場合、それらを使用してメッセージを暗号化し、整合性をチェックすることができます( [〜#〜] mac [〜#〜] )。暗号化はパッシブ攻撃者(メッセージの内容を学習しようとする)に対するものであり、MACはアクティブ攻撃者(メッセージの内容を変更しようとする)に対するものです。安全な完全なflowの場合、AliceとBobはメッセージに何らかの番号付けを含める必要があるため、ドロップされたメッセージ、重複したメッセージ、または並べ替えられたメッセージが検出されます。

通常、最初の共有シークレットを確立することは困難です。特に、アリスとボブが2人以上いる場合。 nお互いに安全に(外部の攻撃者に対しても安全にn-2他のユーザーに対しても)会話する必要がある人がいる場合、-が必要になります。 n(n-1)/ 2共有シークレット。各ユーザーはシークレット値を保存する必要がありますn-1シークレット値(彼が話したいと思う他のユーザーごとに1つ) )。

非対称暗号化問題を引き起こす簡単(ただし簡単ではない)。公開鍵と秘密鍵のペアを使用すると、各ユーザーはone秘密鍵を格納し、他のn-1参加者のpublic keysを知る必要があるだけです。 。名前が言うように、公開鍵は公開されています。それらは全世界に悪影響を与えることなく示すことができます。恐らく、アクティブな攻撃者だけが恐れられるため、パブリックエレメントの配布はシークレットの配布よりも簡単です。


The Wallの類似です。ある特定の場所(たとえば、町の中央広場)に、大理石で作られた大きな壁があると想像してください。誰もが来て、壁を見ることができます。壁には刻印アリス、ボブ、チャーリー、デイブ、エベニーザーなどの公開鍵があり、誰もが干渉を恐れずにこれらの鍵を学ぶことができます。全体が守られ、公式の町の彫刻家だけが壁に公開鍵を追加、削除、または変更できます。そして、フレッド自身が彼にそのキーといくつかの有効なID(運転免許証...)を提示した場合にのみ、フレッドの公開キーを刻印します。

大きな壁は、特に壁のある町に住んでいないユーザーにとっては不便です。リモート操作を可能にするために、Niceスキームが設計されました。公式の彫刻家には、カメラ、プリンター、およびスタンプも与えられます。彫刻家が新しい公開鍵の彫刻を終えると、彼はその写真を撮る、それを数回印刷し、そしてsignsそれらを(公式のスタンプとともに)印刷します。さて、アリスがそのような写真をボブに送信した場合、ボブは彼がアリスの公開鍵を含む壁の一部の本物のコピーを持っていると信じるかもしれません。悪意のある人物が手紙を開いてその写真を見ても問題はありません。とにかく公開されています。ただし、切手が偽造されないようにすることは面倒な場合があります。

この写真のビジネスを完全な 公開鍵インフラストラクチャ に変える、本当に気の利いた部分がここにあります。スタンプの代わりに、公式の彫刻家は デジタル署名 を使用します。彫刻家には公開鍵もあり、壁にも刻印されています。 Ifボブは彫刻家の公開鍵を知っているので、彫刻家が計算した署名を写真から検証できます。そうすることで、先験的単一の公開鍵(彫刻家の公開鍵)を知ることで、特定の写真が本物であるかどうかを確認し、他のユーザーだけの公開鍵を知ることができます。 。

通常のPKI用語では、写真はcertificatesであり、彫刻家はCertification Authorityです。ボブはまだどこかで開始する必要があります。つまり、公開鍵を知っている必要がありますが、1つ(「ルート」)だけで無制限の数のユーザーが使用できます。まだ存在しないユーザーのパブリックに対しても機能します。本格的なPKIでは、1人の彫刻家ですべてを管理するにはユーザーが多すぎる可能性があります。その場合、下位の彫刻家の公開キーに署名するすべての彫刻家のマスターで原則を拡張できます。マスターは「ルートCA」または「トラストアンカー」であり、下位の彫刻家は「中間CA」です。不正使用を避けるために、部下の彫刻家の公開鍵の写真には、「これは彫刻家として振る舞うことができる誰かの公開鍵です」というマークが正しく付けられています。

最終的には、写真付きのシステムが機能するようになると、実際には誰も壁を見ることがなくなります。写真と署名のみが使用され、それらで十分です。その後、壁自体を構築することは避けます(結局、大理石は高価です)。 「彫刻家」は、公開鍵を一枚の紙に書き留め、それを複製し、コピーに直接署名するだけです。


上で説明したPKIモデルは、Web上で X.509証明書 を使用して実行されるものです。各Webブラウザ(またはオペレーティングシステム)はアプリオリ数十のルート公開鍵を知っています。これから、署名を検証することにより、何百万もの既存のHTTPSを利用したWebサイトの証明書の有効性を確認できます。それらの上に。これは非常に集中化されたモデルです。 hierarchical PKIと呼ばれます。

他のモデル、特に Web of Trust が存在します。 WoTでは、everybodyは「彫刻家」として機能できます。ボブはすべてのユーザーが公式の彫刻家と同じくらい信頼でき、信頼できるとは想定できないため、アリスがそのキーのmany証明書を表示できる場合にのみ、ボブは指定された公開キーをアリスのものとして受け入れます。つまり、アリスはチャーリー、デイブを説得することができますandエベニーザーは、特定のキーが実際に彼女のものであり、ボブがたまたまこれら3人の公開キーを知っていることを示しています。その意味で、WoTは階層的なPKIよりも本質的にヒューリスティックです。実際、これはidentityの定義の問題です。Wallモデルでは、アリスは何らかの "権限"(たとえば、中央州)からIDカードを与えられたため、アリスです。 WoTでは、他の多くの人々が彼女を「アリス」として知っているので、アリスはアリスです。


アイデンティティの定義は重要です。それは何ですか平均、アリスとボブは「安全に話したい」と思いますか?ボブは「本物のボブ」と話したいと思っています。つまり、ボブが誰であるか、ボブとチャーリーとの違いが何であるかについての既存の概念を持っているということです。ボブがまったく知らない人である場合、ボブと独占的に話したいとは意味がありません。 「チャーリー」と区別される「ボブ」はありません。このアイデンティティの概念は、必要なPKIの種類を決定するものです。 IDが一元化された構造に由来する場合は、階層型PKIが適切です。 IDが暴徒の承認に由来する場合、WoTが適切なモデルです。

または、結局のところ、PKIがまったく必要ない場合もあります。たとえば、ボブはアリスの観点から、「秘密のパスワードを知っている男[〜#〜] p [〜#〜] "であるかもしれません。次に、非対称暗号化以前の歴史的なセットアップに戻ります。しかし、私たちはまだいくつかの高度な科学を行うことができます。 パスワード辞書攻撃 と呼ばれるものを通じて推測される傾向があるため、不適切なキーです。アリスとボブが[〜#〜] p [〜#〜]を暗号化キーとして使用している場合、スパイがメッセージを記録し、潜在的なパスワードでそれらを解読しようとする可能性があります。この問題を修正するために、 パスワード認証鍵交換 アルゴリズムを使用できます。 PAKEプロトコルを使用して、アリスとボブは[~~~~ p [〜#〜]の共通の知識に関してお互いを認証しますが、プロトコルに十分な量の非対称暗号が注入されました。スパイが潜在的なパスワードのテストに使用できるデータを学習しないようにします。チャーリーが潜在的なパスワードP 'を試したい場合、彼はアリス(偽のボブを装ったもの)またはボブ(偽のアリスを装ったもの)に話しかける必要があります。それagain for each P '彼はテストしたいと思っています。確かに、そのようないくつかの失敗した試みの後、アリスおよび/またはボブは何かがおかしいことに気づくでしょう。これにより、PAKEプロトコルは、PKIを一切必要とせずに、エントロピーの低いシークレット(パスワード)を安全に使用できるようになります。

12
Thomas Pornin

アリスとバーナードは、次の3つのうち少なくとも1つを行う必要があります。

  1. 別の安全なチャネルを使用して鍵を交換する(おそらく、直接会う必要があるかもしれません)
  2. 安全でないチャネルを介して鍵を交換しますが、信頼の網を使用して鍵を検証します(それぞれが他の誰かの鍵を信頼する他の誰かの鍵を十分に信頼する必要があり、アリスとバーナードの間のパスを形成するまで悪心を起こす)
  3. 安全でないチャネルを介してキーを交換し、安全でないチャネルを介して偽造できないメッセージを送信し、互いのキーを検証します(実際には、安全でないチャネルの音声接続で短いナンス番号を声に出して読み、両方かどうかを確認します)両端は同じナンスを持っていますが、これはあなたが人間の声を偽造できないと考える場合にのみ機能します、それは本当ではないかもしれません)

これは、実際には非対称暗号化の制限ではなく、セキュリティの制限です。最初に彼らに「会う」か、彼らが信頼している誰かに会うことなしに誰かと安全な会話をすることは本当にできない。さもなければ、誰かと暗号化された会話をする可能性があり、それは暗号化の目的を本当に無効にします。

2
okw

はい、あなたが説明する単純な実装の非対称暗号化は、確かにMITM攻撃に対して脆弱です。この問題を解決するには、 公開鍵インフラストラクチャ の形式を使用する必要があります。

PKIには、広く使用されている2つの形式があります。

最初の形式には、バーナードに属するX.509証明書に署名する認証局(CA)が含まれます。アリスがこの特定のCAを信頼している場合、彼女は証明書が実際にBernardに属していることを信頼できます。これは SSL/TLS で使用されるモデルです。

2番目の形式にはGnuPGキーが含まれます。アリスとバーナードがGnuPG公開鍵を交換するために実生活で少なくとも一度会うことができる場合、全体のMITM攻撃シナリオは回避されます。これが不可能な場合、アリスとバーナードは Web of Trust モデルを使用できます。これは本質的に、多くの異なる人々にバーナードの公開鍵に署名させることを含みます。十分な数の人がそうした場合、アリスは公開鍵が確かにバーナードのものであり、彼を偽装しようとしている誰かではないことを合理的に確信することができます。

2
user10211

非対称暗号化は、およそall秘密通信の基礎です。具体的には、SSL/TLSの基礎であり、SSHや他のいくつかの独自仕様のバリアントなど、類似しているが互換性のないプロトコルもいくつかあります。あなたは間違いなく勝者ですが、まだ終わっていません。

まず、暗号化で独自の新しい標準を構築する計画がある場合は、それをしないでください。この問題は解決され、ソリューションは、文字通り数十年にわたって、検証、テスト、改善され、再調査され、さらに改善されてきました。これは、一般的な日常的なツールで実行でき、正しく実行できます。何も構築する必要はありません。

前述のSSL/TLSが最も簡単なソリューションです;その目的は、パブリックチャネル(多くの場合TCP)をプライベートチャネルに変えることですが、非常にうまく機能します。

単純なネットワーク接続の代わりに、IRCまたは多数のインスタントメッセージングサービスなど)のようなチャットセッションをセキュリティで保護したい場合、その後、OTR( "Off the Record ")。ほぼすべての既存のIMシステムの上に乗っているメッセージ指向の暗号化システムです。それは約10年前のものであり、かなりしっかりしています。

どちらの方法でも、お互いに2つの関係者を適切に識別する必要があります。このステップは重要なステップであり、干渉の影響を最も受けやすいステップです。したがって、直接鍵を交換するか、信頼できるサードパーティによって鍵を署名してもらうか、既知の安全なチャネルを介して交換するのが最善です。十分な数の参加者がいる場合、キー配布を処理するためにキーインフラストラクチャ( "PKI")を構築する必要があるかもしれませんが、それがほんの一握りであれば、キー配布は手動で手動で行うことができます。

ただし、キーが信頼できる限り、基盤となるソフトウェアを適切に使用している限り、セキュリティは保証されます。

2
tylerl

代わりに、アリスはバーナードに証明書を送信する必要があります。証明書には彼女の公開鍵が含まれており、バーナードが認識する証明書の共通名が必要です。例えば。彼女のウェブサイトのURLやIPアドレスなど。tlsのような認証局によって署名されるか、pgpのような信頼の方法のウェブで使用されます。これにより、Bernardが証明書を偽装するのを防ぎます。

また、Bernardは相互認証のために同様の方法でAliceを送信できます。アリスとバーナードがお互いに本当に話していることが保証されるように。

0
jingyang