したがって、認証局は、Webサイトが特定の組織に対応していることを認証します。なぜこれが必要なのですか?
ビジネスや組織とやり取りするときは、次のいずれかの方法で行います。
では、なぜCAが必要なのでしょうか。 CA証明書を持っているWebサイトは、そうでない場合よりもどのようにして信頼できるのですか?
あなたが説明していることは、私がPGP鍵を友達と共有する方法とよく似ています。すべてオタクでキーを手動で追加し、その間電話でチャットしているときは問題なく動作しますが、このアプローチはあまりうまく拡張できません。
CAは、最初に接続を信頼する必要がある場合に、2番目の箇条書きを自動化された方法で解決します。これは一般にブートストラップの問題と呼ばれます-または「...しかし、どうやって最初にそれを行うのですか?」
シナリオ1:友人の家にいて、Gmailを確認したい。私の友人はhotmailを使用しているため、彼女のコンピュータはgmail.comと以前に信頼関係がありません。それが本当のgmail.comであって、gmail.comのように見せかけたフィッシングサイトではないことをどうやって知るのですか?ユーザー名とパスワードを提供するのに十分な「信頼を構築」するにはどうすればよいですか? CAはこの問題を解決します。これは、CAの証明書がブラウザーに固定され、サイトがCAによって署名された証明書を提示するため、ブラウザーはこれが実際のgmail.comであると信頼するようになります。
シナリオ2:企業VPNのコンテキストでCAを検討します。同社は、別の国から離れた場所で働く新しい人を雇います。彼らが初めて企業ネットワークに接続するとき、彼らはサーバーを認証でき、一部のハッカーに企業ネットワークへの資格情報を提供しただけではないことを確認したいとします。 CAの証明書をVPNクライアントの実行可能ファイルに埋め込む(または「固定する」)ことができ、VPNサーバーにこのCAによって署名された証明書を提示させることができるため、CAはこの問題を解決します。
シナリオ3:メール。サーバーで問題が発生しました。私が参照したことのある請負業者に電話をかけ、彼らは「ファイアウォールのログファイルを送ってください。何が問題だったかを把握します」と言います。私はこれらの人に会ったことがありません、どのように私は彼らの公開鍵を取得しますか?電話で確認のためにSHA2ハッシュを読み取れると思いますが、それは非常に面倒です。 CAはこの問題を解決します(私のIT部門がOutlookをいくつかの複雑な方法で設定していると想定しています)。Outlookは証明書を検証して信頼されたルートに戻します。
シナリオ4:銀行振込。私は私の銀行に、知らない小さな銀行を使用している友人(おそらく海外)に送金するよう依頼します。銀行が信用していないサーバーに送金するだけではないことは間違いない。地球上の膨大な数の銀行では、新しいサーバーを立ち上げる必要があるたびに、銀行がUSBスティックを他のすべての銀行に郵送しないことに賭けることもできます(これは、トラフィックスパイク)。 CAはこの問題を解決します。実際には、銀行ネットワーク Swift はCAの複雑な階層を使用して、世界の銀行間取引を保護します。
上記の技術的なシナリオに加えて、ユーザビリティの問題もあります。現在のモデルでは、TLSはデータが存在するかどうかにかかわらず、データと接続を保護しています。これは祖母にとって素晴らしいニュースです。信頼されたルートCAに戻るすべての証明書を検証できることは、ブラウザーがバックグラウンドで簡単に実行できることです。したがって、キーをインポート/信頼するより手動のシステムが機能したとしても、私はそれが不便に不便であると感じ、私は生活のためにこれを行う1%の一部です。私の祖母は……まあ、困っています。
それは証明書自体の信頼についてではなく、検証のプロセスについてです。
まず、実現可能性。証明書が更新/侵害された場合、たとえば銀行が世界規模の広告キャンペーンを開始することを期待しますか?「証明書を変更しました。スマートフォン、ブラウザなどを更新してください」大規模に達成することは不可能です。
または、会社は事業を閉鎖し、新しい証明書の信頼を獲得し始める必要がありますか?
第二に、プロセスのセキュリティ。使用するチャネルが何であれ、侵害される可能性があります。組織または仲介者との通信を保護する必要があります。そして、これは顧客レベルの規模では実現不可能です。
そして、あなたは本当に仲介者を信頼しますか?あなたが後で何年も使用する証明書とウェブサイトへのアクセス方法(実際のドメイン名から1文字だけ離れたドメイン名)を教えてくれた低賃金の銀行員?
認定は、ウェブサイトを運営している組織の信頼性については何も述べていません。それは証明書が適切な人々に発行されたと言うだけです。
これは、中間の人攻撃、およびDNSポイズニングまたはその他の方法で特定のホスト名へのリクエストがルーティングされる場所を変更することで発生する可能性のある攻撃を防ぐためです。
あなたが話しているアウトオブバンド認証メカニズムはあまり便利ではなく、SSHスタイルの「ステープル」は、最初に接続したときにあなたを捕まえることができる攻撃に対して脆弱です。また、キーを変更したり取り消したりすることが非常に難しくなります。新しいキーが何であるか、古いキーが無効であることを全員に通知するメカニズムが必要です。
必要なすべてのホストと暗号化キーを手動で交換して確認できます。しかし、それはあなたと(さらに)相手の両方にとって時間のかかる作業です。彼らは誰かが誰かが彼らのウェブサイトにアクセスするたびに彼らがアウト・オブ・バンドであることを手動で確認したくありません。
したがって、ブラウザとOSは「ルート」CAを信頼します。多くの場合、これらのCAは他のCAを信頼しています。中間CAは、通常、証明書を購入する人々に対応するCAです。証明書を要求する人がドメインを制御していることを確認するのは彼らの仕事です。
したがって、ブラウザの信頼されたルート証明書を信頼することで、接続先の組織までの一連の信頼を得ることができます。暗号化は、それらが秘密鍵(他の誰にも必要ないもの)を持っていることを証明するだけであり、つまり、適切なコンピューターに接続していて、データが解読されていないことを確認できます。
もちろん、CAがその仕事をしていて、証明書を発行しているドメイン名を誰かが所有/管理していることを実際に確認していることをどのようにして知っていますか?さて、これは問題です。アップストリームには(オープンアカウンティング、公開証明書ログなど)のような特定のものがあり、これは時々競合のポイントになります。
シマンテックによって不正な証明書がいくつか生成された後、 Googleはその証明書をChromeから削除すると脅迫しました 。その場合、証明書のみで署名された証明書はすべて無効になります。 DigiNotar 有名な不法な証明書を発行し、大量に削除されたため、すぐに崩壊しました。
彼らが署名しているものを徹底的に検証することは、CAのすべてのレベルの利益のためです。
防弾ですか?もちろん違います。政府は国家安全保障の名の下で多くのことを行うことができ、CAに偽の証明書を発行するように強制することを含む問題を信じることは問題ありません(彼らが同じ仕事をすることができる独自のCAを持っていない場合)...国際的なテロリストであり、おそらく独自の信頼チェーンを作成しますが、他の誰にとっても、ルート証明書は物事をはるかに簡単にします。
これは主に、事前の対話なしにエンティティのIDを検証できることに関するものです。
CAの主な目的の1つは、あるCAを信頼する別のエンティティがこの情報を信頼できるような方法で、あるエンティティに関する特定の情報をアサートすることです。 。
対話する必要があるが、一度も会ったことのないエンティティに関するID(一般に、場合によっては他の属性も)を確認できる、効果的に信頼できるパーティです。
これをパスポート発行機関(一般的には国)と比較できます。人に会ったことがない場合でも、パスポートを持ってくる人(パスポート管理で十分責任があるとみなす国から)が来た場合は、写真、名前(およびその他のプロパティ)の間のバインディングを信頼し、名前を付けることができます。妥当な確実性であなたの前の人に。
は公開鍵証明書に適用されます。発行CAを使用すると、公開鍵とIDの間のバインディングを信頼できます。 SSL/TLSサーバーの場合、IDはそのホスト名(RFC 6125を参照)であり、公開鍵はSSL/TLSハンドシェイク中に使用されるものです。
したがって、認証局は、Webサイトが特定の組織に対応していることを認証します。なぜこれが必要なのですか?
Webサイトを組織にリンクすることは、厳密には必要ありません。これは主に 拡張検証証明書 の目的です。訪問しているWebサイトに自信を持つ人もいます。これは、アクセスする正当なWebサイトに類似した名前のホスト名を制御する攻撃者に対して一般的に役立ちます。
私は実際の生活の中で、またはメールを通じて、またはあなたが何を持っているのか、彼らと物理的にやり取りしています。彼らと会ったとき、私は彼らの公開鍵を手に入れることができます。
確かに、しかしそれにはいくつかの問題があります:
ブートストラップ:その人に一度も会ったことがない場合、彼らがあなたに初めて会ったときに彼らがあなたに公開鍵を与えているという事実は、彼らが彼らが本人であると言う人を作るわけではありません。これは、このマシンで以前にアクセスしたことがないWebサイトに初めてアクセスする場合があるため、Webでは非常に問題です。 Perspectives Project のような公証システムでも、最初の訪問者が必要です。
常に物理的な方法でウェブサイトとやり取りできるわけではありません。
どういうわけか物理的な方法でWebサイトとやり取りできたとしても、ほとんどの人は、公開鍵を要求したときに何を話しているのか分からなくなります。次に支店に入るときに、銀行の公開鍵を尋ねてみてください...
あなたが会った人々のほんの一握りの公開鍵を管理することは可能ですが、一般的にあなたがアクセスできるウェブサイトはたくさんあります。特に複数のマシンを使用している場合など、リストを管理したくない場合があります。
これに加えて、後で見たときに誰かの顔を覚えているのが一般的です。対照的に、Webサイトはその公開鍵を変更できます(通常は毎年ですが、場合によってははるかに頻繁に)。あなたはまだあなたが信頼できる方法で彼らがあなたにこの変化についてあなたに話す方法を見つける必要があるでしょう。
私は彼らとだけデジタルでやり取りします。私はそれらを信頼する理由はありませんが、時間をかけて信頼を獲得します。私が本当に必要なのは、誰かが他人になりすましていないことを確認することだけなので、毎回同じキーであることを確認するだけです。
残念ながら、ウェブサイトを信頼することは、誰かと徐々に信頼を築くことよりもはるかにバイナリです。 MITM攻撃によってインターセプトされ、変更されないように、最初の対話を含めてすべての対話が必要であるとの期待があります。
友人がサイトを紹介してくれました。彼らから鍵を得ることができます。
CAシステムは非常に階層的です。ある程度、それはWeb-of-Trustシステムの特定のケースです。このシステムでは、知り合いに信頼を委任し、知り合いに信頼を委任することができます。
WoTは有効なシステムですが、独自の問題があります。
本質的に、私が知っている人々のセットは、私が一般に善意を持っていると信頼している人々のスーパーセットです。それ自体が、他の人々のアイデンティティもチェックするのに十分な能力があると私が信じる人々のスーパーセットです。これらのパラメーターを考慮に入れると、信頼と信頼の委任のモデル化は非常に複雑になる可能性があります。
CAの目的は、証明書に適切に何を入れたかを吟味して信頼できるエンティティになることです。もちろん、彼らは時々仕事で失敗しますが、広く使用できるようにそれを十分に単純にするための妥当な妥協です。より複雑なモデルでは、はるかに複雑なユーザーインターフェイスとユーザーへの説明が必要になります。多くのユーザーは複雑さを圧倒し、最終的には警告を破棄することになると思います(これは最終的にはさらに悪くなります)。
もちろん、CAの問題(たとえば、中間公証システム)を軽減する方法はいくつかありますが、最終的にはユーザーによる判断の呼びかけが必要です。 CAシステムは完璧にはほど遠い。
CA証明書を持っているWebサイトは、そうでない場合よりもどのようにして信頼するのですか?
Webサイト自体にはCA証明書がないため、CAによって発行された証明書があります。それはウェブサイト自体を信頼することではありませんが、それはウェブサイトのアイデンティティがそれがそうであると言う人である(そしてそれが探しているホスト名である)ことを信頼することです。
もちろん、これはブートストラップをさらに一歩進めるだけです。なぜブラウザやOSにバンドルされているCA証明書を信頼するのですか?
私達は実際には今日ではCAを必要としない:それらは時代錯誤です。 Perspectives Project を見てください。 CAの仕事は3つの主要なもので構成されています。
現在、最初の2つのタスクはCAの任務に保持されていますが、3番目のタスクはでない-偽造/複製/サイド発行されたCAルート証明書であっても最大影響は、証明書/キーを失効としてマークできることですが、整合性は損なわれておらず、同じ情報フィールドを持つ悪意のあるキーを挿入できません。ネットワーク全体のクォーラムが偽造のフラグを立てるためです。
もちろん、CAはdoomedではありませんが、その機能の一部は現在廃止されており、10年前に安全に行ったため、フルスケールでCAを信頼するのは安全ではありません。