web-dev-qa-db-ja.com

SSL / TLS PKIはどのように機能しますか?

PKIに関連するSSL/TLSの部分に対処する多くの質問がありますが、それらすべてがすべてをまとめているようには見えません。私たちが人々を指すことができる標準的な答えは非常に役立つと思います。

投稿者の間でいくつかの混乱の原因となっているように思われる回答すべき主な質問(すべてSSL/TLSに関する):

  1. 公開鍵インフラストラクチャと公開鍵暗号化の違いは何ですか?それらはどのように関連していますか?
  2. PKIの主な使用例は何ですか?
  3. PKIでクライアント証明書はどのように使用されますか?
  4. PKIにおける認証局の役割は何ですか?
33
RoraΖ

公開鍵インフラストラクチャと公開鍵暗号化の違いは何ですか?それらはどのように関連していますか?

公開鍵インフラストラクチャ公開鍵暗号化 の違いは、Wikipediaの定義(tldrの後に引用)からかなり明らかだと思います。 [〜#〜] tldr [〜#〜]公開鍵暗号法は非対称アルゴリズムの別名ですが、 PKIは、公開鍵暗号化の主要な問題の1つを解決するインフラストラクチャです。

公開鍵暗号法:(別名非対称暗号法)は、2つの個別の鍵を必要とするアルゴリズムに基づく地図作成プロトコルのクラスで、その1つは秘密(またはprivate)とそのうちの1つはpublicです。最も一般的な用途は次のとおりです。公開鍵暗号化(メッセージは受信者の公開鍵で暗号化されます)およびデジタル署名(メッセージは送信者の秘密鍵で署名され、送信者の公開鍵にアクセスできるすべての人が検証できます)。これは、ユーザーが安全でないパブリックネットワーク上で安全に通信し、デジタル署名を介してユーザーの身元を確実に検証できるようにする技術です。

公開鍵インフラストラクチャ:作成、管理、配布、使用、保存、および作成に必要なハードウェア、ソフトウェア、人、ポリシー、および手順のセットです。デジタル証明書を取り消して、公開鍵暗号化を管理します。つまり、managing Public-key cryptographyが含まれますが、これだけに限定されません。

関係を理解するには、Public-key cryptographyの中心的な問題を理解する必要があります。つまり、confidence/proof that特定の公開鍵は本物であり、それは正しく、主張された個人またはエンティティに属し、悪意のある第三者によって改ざんまたは置き換えられていない。公開鍵インフラストラクチャは、この問題へのアプローチの1つです。 Certificate Authoritiesakatrusted /の概念を導入することで問題を解決する傾向があります鍵ペアの所有権を証明するための第三者。この問題への別のアプローチは、Web of Trustと呼ばれるもので、中央のメカニズムによる公開鍵の認証を分散化します。ユーザーと公開鍵の間のリンクの個々の推奨を置き換えます。

PKIの主な使用例は何ですか?

PKIのcommonの最も考えられる使用例は、(Wikipediaの記事から)/認証局(CA)を使用して公開鍵をそれぞれのユーザーIDにバインドします。ユーザーIDは、各CAドメイン内で一意である必要があります。サードパーティの検証機関(VA)は、CAに代わってこの情報を提供できます。バインディングは、登録および発行プロセスを通じて確立されます。バインディングの保証レベルに応じて、これはCAのソフトウェアまたは人間の監督下で実行されます。このバインディングを保証するPKIロールは、登録機関(RA)と呼ばれます。 RAは、デジタル証明書の要求を受け入れ、要求を行った人または組織を認証する責任があります。

この使用例は、(ここでも、フォーム wikipediaの記事 )などのさまざまなシナリオに適用できます。

  • 電子メールメッセージの暗号化または送信者認証(OpenPGPまたはS/MIMEを使用するなど)
  • ドキュメントの暗号化および/または認証(たとえば、ドキュメントがXMLとしてエンコードされている場合のXML署名またはXML暗号化標準)
  • アプリケーションに対するユーザーの認証(スマートカードログオン、SSLを使用したクライアント認証など)
  • インターネットキー交換(IKE)やSSLなどの安全な通信プロトコルのブートストラップ。

PKIでクライアント証明書はどのように使用されますか?

これは、上記の特定のユースケースシナリオに本当に依存します。クライアント証明書の使用方法はシナリオによって異なる場合がありますが、すべて同じ目的を果たします:特定の公開鍵が特定のエンティティ(クライアント/サーバー/ユーザー)に属していることを確認します。

たとえば、SSL/TLSはクライアント側の証明書をサポートしています。この使用例は この回答はThomas Pornin でカバーされています。認証にクライアント証明書を使用することの利点と欠点も この答えはBruno でカバーされています。

PKIにおける認証局の役割は何ですか?

これに対する最良の答えは、引用された wikipediaの記事 (まだ)にあります:

CAの主な役割は、特定のユーザーにバインドされた公開鍵にデジタル署名して公開することです。これは、CA自身の秘密鍵を使用して行われるため、ユーザー鍵の信頼は、CAの鍵の有効性の信頼に依存します。 CAがユーザーおよびシステムとは別のサードパーティである場合、それは登録局(RA)と呼ばれ、CAと別の場合も別の場合もありません。キーユーザーバインディングは、ソフトウェアまたは人間の監督下で、バインディングの保証レベルに応じて確立されます。

4
Rahil Arora

導入文として:PKI(公開キー基盤)とPKC(公開キー暗号化)を合わせてPKT(公開キー技術)と見なします。

短い答え:画像を読むには、新しいウィンドウで開いてください

enter image description here

今が質問に答える時です。

      1. What is the difference between Public Key Infrastructure and Public Key Cryptography?

それらの主な違いと関係は、定義と歴史の背後に隠されていると思います。

  • 公開鍵暗号(PKC):公開鍵(別名「2つの鍵」または「非対称」)暗号化は、1976年にDiffieとHellmanによって発明され、その後、RSAなどの他のバージョンが発表されました。同じ鍵KがパーティーAとBの間で共有される秘密鍵(別名「対称」)暗号化とは異なり、各ユーザーの対応する秘密鍵と公開鍵のペアにより、一部の操作を一意に実現できます。具体的には、それぞれの秘密鍵と公開鍵、privAとpubAをパーティーAに属させます。privAでデータを操作することにより、Aは、pubAで署名されたデータを操作するパーティーB(またはその他のパーティー)が検証可能なデータにデジタル署名できます。 。同様に、パーティB(または他のパーティ)は、pubAを使用してデータを暗号化できます。暗号化されたデータは、privAでのみ復号化できます。公開鍵暗号の真の力は、各当事者が独自に秘密鍵を所有することにあります。上記の鍵を使用してデータを操作することによる秘密鍵の「知識の実証」は、非対称暗号とその秘密鍵の対応を区別する強力なツールを提供します。
  • 公開キー基盤(PKI):約22年前、1993年のバージョン ISO/IEC CCITT/ITU-T国際標準X.509 は小規模な環境で普及、認識、実装され始めました。 1993年後半から1994年前半は、実質的にPKIの始まりでした(ただし、その頭字語はまだ作成されていませんでした)。そのバージョンのX.509標準–詳細1988年版より–証明書、認証局、および関連概念の重要な詳細の一部を具体化しました。初期の頃、「PKI」はかなり厳密に定義されていますが、後から見ると今日の重要な定義の6つの主要コンポーネントを識別できますが、3つはバインディングの有効性(権限関数)、およびバインディング(クライアント関数)の使用に関係する3つ。公開鍵と識別子の間のバインディングの有効性に関して、必要なのは:
    1. 権限必要に応じてこれらのバインディングを作成および破棄する、または関連する信頼できるアクションを支援する責任
    2. 発行プロセスこれらのバインディングを他の当事者が理解できる方法で(つまり、合意された構文で)表現し、この情報を当事者が利用できるようにするそれを知りたい、そして
    3. 終了プロセス必要に応じてバインディングを解除し、この情報を知る必要のある関係者がこの情報を利用できるようにします。このようなバインディングの使用に関して、必要なものです:
    4. アンカー管理プロセスは、クライアントのルートアンカーまたはトラストアンカーとして機能する権限公開鍵のセットを拡張または縮小します。
    5. 秘密キー管理プロセスは、クライアントの秘密キーを目的に使用できることを保証します(これには、キーペアの生成と更新、登録、バインドが含まれます)対応する公開鍵の識別子、有効な間の秘密鍵の適切な保護、および紛失した場合の秘密鍵のバックアップとリカバリ)、および
    6. バインド検証プロセスは、クライアントが特定の公開鍵(外部エンティティから取得または取得したもの)が特定の識別子に確実に関連付けられていることを信頼する必要がある場合を決定します。

したがって、上記の説明によると、公開鍵暗号化は、データに対する非対称の数学演算のみをサポートします。それ自体では、eコマース、電子メール、Webなどのアプリケーションまたは環境への接続を提供しません。このような接続を提供するには、いくつかの追加の要素が必要です。これらの追加部分はPKIの定義を形成します。これは、公開鍵テクノロジーを、それを使用したいアプリケーションと環境で利用できるようにする「インフラストラクチャ」です。

この論文 によると、これらの特性に関するPKIシステムのいくつかの例は次のとおりです:X.509、PGP、AADS/X9.59、SPKI

                              2. What is the main use case for PKI?
  • TLS:本「モバイルおよびインターネットサービスのセルラー認証」およびRFC2246によれば、PKIの最大の既存のユースケースの1つは、トランスポート層セキュリティ(TLS)で証明書を発行し、TLSはクライアント証明書をサポートします。
  • コード署名:最近広く知られているデータ侵害により、コード署名はPKIのより一般的な使用例の1つになりました。デジタル署名は、データとメッセージの信頼性と整合性の両方を提供します。データ署名が発生した特定の時間以降にデータが変更されていないことを数学的に証明する機能は、非常に強力なツールです。これにより、デジタル署名されたドキュメント、プログラム、およびその他のデータオブジェクトを信頼できます。ソフトウェア開発会社は、アプリケーションコードに署名する必要があります。これにより、エンドユーザーは、コードが信頼できるソースから配布されただけでなく、コードが変更されたり、悪意のある方法で感染したりしていないことを確認できます。同じ概念をデジタル署名に適用でき、法的文書(契約書、ファイリングなど)、請求書、レポートなどのドキュメントの管理に重要です。 [Re f]
  • イントラネットSSL、802.1x認証、S/MIME、IPSec、エンタープライズユーザーの認証:および このペーパー によるとセキュリティ機能PKIは、イントラネットSSL、802.1x認証、S/MIME、IPSec、エンタープライズユーザーの認証など、エンタープライズネットワーク環境のいくつかの一般的な使用例で役立ちます。

                           3. How are client certificates used in PKI?
    
  • クライアント証明書とSSLサーバー証明書の定義と違いは、使用法を示しています。

  • クライアント証明書:外部パートナーおよび内部パートナーになることができるトランスポート証明書。送信トランスポートがHTTPSでクライアント認証が必要な場合は、SSLクライアント証明書が必要です。ほとんどの場合、SSLクライアント証明書は、CA(CAの別の役割)によって署名および発行される必要があります。証明書がテスト環境で使用される場合、自己署名することができます。つまり、クライアント証明書は、名前が示すように、クライアントまたはユーザーを識別するために使用され、人々がオンラインで安全であることを保証する上で重要な役割を果たし、クライアントまたはユーザーを識別するために使用されますユーザー、サーバーに対してクライアントを認証し、それらが誰であるかを正確に確立します。これらは、サーバーに対してクライアントを認証するためのものです。データの暗号化または復号化には使用されませんが、はユーザーIDを表し、ユーザー認証機能を提供します。これらは公開鍵部分で構成されます証明書と、証明書が発行されたエンティティのみが保持する秘密鍵証明機関は、ビジネスの一部として証明書サービスを提供するよく知られた公的機関である場合がありますまたは、会社だけが使用する内部サーバーの場合もあります。どちらの場合も、クライアント証明書には、ユーザーを個別にまたはグループの一部として識別する特定の情報が含まれます。また、証明書をユーザーアカウントにマッピングするようにサーバーを構成することもできます。これは、特定の証明書が単一のユーザーアカウントにマッピングされる1対1マッピング、またはサーバーが証明書情報の特定のフィールドを使用して一致する証明書を指定されたユーザーアカウント。マッピングを使用すると、証明書により、ユーザーは特定のユーザーとしてリソースへのアクセスを許可または拒否できます。この方法でクライアント証明書を使用する場合、他の認証方法を使用する必要はありません。
  • SSLサーバー証明書:はサーバーを識別するために使用されます。通常、これらはホスト名に対して発行され、マシン名(「PIIS-SVR01」など)またはホストヘッダー(「www.example.com」など)である可能性があります。 SSLサーバー証明書は、暗号化とセキュリティ機能を提供し、SSLサーバー認証を有効にします。 SSLサーバー証明書のCAは、参加者間で交換する必要があります。

それらの間の唯一の類似点は、キーワード「証明書」です。どちらにも公開鍵と秘密鍵が含まれています。さらに言えば、すべての証明書には公開鍵と秘密鍵が含まれています。サーバー証明書をクライアント証明書またはVice-Versaとして使用することはできません。

                           4. What is a Certificate Authority's role in PKI?

元のDiffie and Hellmanモデルでは、公開鍵は安全なリポジトリから取得されていました。このリポジトリのセキュリティは、公開鍵を鍵所有者の他の属性にバインドする役割を果たしました。オフラインバインディングの生成と配布をサポートするため、Kohnfelderは証明書の概念を導入しました( 実用的な公開鍵暗号システムに向けて )。これにより、公開鍵と識別子(たとえば、名前)がCertification Authority(CA)によって署名され、セキュリティで保護されていないリポジトリで利用できるデータ構造。

したがって、要約すると、データ発信者とデータ受信者の間に直接の信頼は存在しないため、PKIはCAが信頼アービトレータの役割を果たす第三者の信頼ポイントシステムに依存しています。 CAはまず、疑いなく公開鍵の所有者のIDを確立し、次にCAの署名が記載された証明書の内部に所有者の公開鍵を埋め込むことにより、所有者のIDを保証します。このCAを信頼する人はだれでもCAの署名を確認でき、それによって証明書の所有者のIDを確認できます。

enter image description here

3
Ali

私は質問の短い回答として画像をデザインしました:画像のテキストを読むために新しいタブで画像を開きます

enter image description here

詳細については、以前の回答を参照してください。

1
Ali

私は2段階のアプローチでこれに答えます。一般的な用語の答えと、ブロック引用での特定のSSL/TLSの明確化です。

Public Key Cryptography(PKC)は、事前に秘密鍵に同意する必要なしに情報を安全に交換する問題を解決します。 PKCの一部となるには、すべてのエージェントにPrivate Key(所有者のみが保持する必要があります)とPublic Key(誰とでも共有できます)前者は後者で暗号化されたコンテンツを復号化し、その逆も同様です。したがって、安全な方法でAliceと通信したいすべてのエージェントは、Alice(秘密鍵の所有者)だけがメッセージを読めるようにするために、Aliceの公開鍵でメッセージを暗号化*する必要があります。

SSL/TLSでは、接続を確立するときに、サーバーが証明書(基本的にはいくつかのメタデータを含む公開鍵)を送信し、クライアントはそれを使用して、会話の残りの部分で使用する対称鍵を暗号化します。これは、対称暗号が非対称暗号よりも速いためです。その後、サーバーが暗号化された対称鍵を受信すると、サーバーはその秘密鍵を使用してそれを復号化し、残りの会話に使用します。

この時点では、すべてがわかりやすく簡単に見えますが、アプリオリには、すべてのエージェントの公開鍵があるわけではありません。したがって、誰かと安全な通信を確立するには、まず公開鍵を交換する必要があります。これがPKCの弱点です。 私に与えられた公開鍵が、通信したい相手からのものであり、中間者(MITM)からのものではないことをどうやって知るのですか?

これは、公開鍵基盤(PKI)が解決する問題です。

公開キー基盤(PKI)は、会話に別の人を追加することで構成されます。この他のエージェントは Certificate Authority(CA)であり、会話の他の2人の参加者から信頼されている中立的な裁判官として機能します。このCA(彼の公開鍵と秘密鍵も持っている)は、PKIユーザーが本人であることを証明した後で、そのPKIユーザーの公開鍵に署名するCAです。その結果、PKIのエージェントが公開鍵を受け取るたびに、信頼できるCAの1つによって署名されているかどうかを確認します。

SSL/TLS接続を確立する前に、クライアントは受信した証明書が有効であることを確認する必要があります。これを行うために、クライアントは公開鍵の信頼性だけでなく、それに関連付けられている他のメタデータも検証します(これを理解するには、 一般的なデジタル証明書の内容を知ることが重要です ):

  • 署名が検証されます。これにより、証明書がまったく変更されていないことが保証されます。
  • 証明書の有効期限が切れていません。CAによって証明書が発行されたとき、有効期限が与えられています。
  • 証明書のサブジェクトがホスト名と一致します。証明書は特定のサーバーに対して発行されます。したがって、証明書のサブジェクト名は、クライアントが接続しようとしているURLと一致する必要があります。
  • それは取り消されていません。必要に応じて、発行者が証明書を取り消すことができる場合があります(たとえば、関連する秘密鍵が公開されているため、証明書が無効になります)。
  • それは信頼できるCAによって署名されました。証明書の信頼性を証明するには、CA証明書を取得してその信頼性を確認する必要があります。それにもかかわらず、PKIには Chain of Trust の概念があるため、CA証明書は別のCAによって発行されている可能性があります。したがって、この別のCAの証明書を取得して検証する必要があります。など...Ergo、証明書を信頼するには、ルートCAまでナビゲートする必要があります。最後に、ルートCAを信頼している場合、チェーン全体を信頼していると言っても安全です。

CA signing of digital certificates

全体として、PKCを使用している場合はPKIが必要であり、すべての参加者を事前に決定することはできません。

これが、ルートCAにCAが必要ない理由です。お使いのコンピューターシステムによって既に知られ、信頼されているそれらの束だけがあります。これらはデフォルトでOS /ブラウザにインストールされています(または手動でインストールすることもできます)。ただし、残りのサーバーまたは中間CAについては、事前にそれらの証明書を知ることができないため(証明書の数が非常に多いため)、PKIを使用して、信頼の連鎖に従って信頼性を確認します。ルートCA(最終的に信頼するかどうか)。

すべての質問に対処するために、クライアント証明書について簡単に説明します。 クライアント証明書はサーバー証明書と同じです。ただし、これらは通常、クライアント認証の方法としてサーバーによって使用されます。このタイプのソリューションは、サーバーの既知のクライアントがほとんどない場合に有効です。

1
amenzar

1970年代初頭まで、メッセージを暗号化および復号化する唯一の方法は、両方の操作に同じキーが使用されるsymmetricアルゴリズムを使用することでした。鍵は、2つの当事者が非公開で通信する前に、何らかの方法で安全に交換する必要があります。

公開キー暗号化、つまり非対称暗号化は、2つのキーを使用してメッセージを暗号化および復号化する新しい方法です。1つは秘密にして、もう1つは共有します。接続が監視されている場合でも、2つのパーティは公開鍵を交換して、会議を行うことなく安全に通信できます。

公開鍵暗号化との類似は、安全で鍵です。誰でもオープンセーフティボックス(公開キー)を送信して封印でき、秘密キーを使用してロックを解除できるのはあなただけです。同様に、非対称暗号システムでは、秘密鍵で暗号化されたメッセージを対応する公開鍵で検証して、署名などの信頼性を証明できます。

ただし、公開鍵が本当に所有者の所有物であることを確認する必要があります。結局のところ、攻撃者は接続を変更し、正当なものの代わりに自分の公開鍵を挿入することができます。

たとえば、新しいサーバーに初めてsshするとき、クライアントは、サーバーの公開鍵のフィンガープリントを信頼するかどうかを尋ねます。これは、ローカル端末から確認するためのものです。または、初めてOTR会話を開始するときは、他の人の指紋を音声または直接確認する必要があります。

別の方法は、公開鍵インフラストラクチャとして知られている、指定された権限を他の人に「保証」することです。公開鍵は、発行者名、件名、有効期限などの他の情報とともに証明書の一部として含まれ、認証局の秘密鍵または独自の秘密鍵による非対称暗号化を使用してデジタル署名されます。

各オペレーティングシステムと多くのアプリケーションは、信頼できる証明書のリストを定義します。これらは一般にルート認証局と呼ばれます。多くの場合、公開鍵インフラストラクチャのサーバーとクライアントの証明書に署名する中間認証局に委任します。

クライアント証明書はサーバー証明書とそれほど違いはありません。サーバーは、ユーザーにユーザー名とパスワードの入力を求める代わりに、クライアントに認証を要求する場合があります。

0
user47604

OSIモデルのすべての層に精通している必要があるため、PKIは公開鍵暗号の上にあります。ここで言及されている一般公開は、実際には一般的なオーディエンスを意味するのではなく、キー、または少なくとも公開キーが公開され、さらには自由に配布できるという意味で、誤った名称です。しかし、実際にはそうではないかもしれません。 RFCの公開キー暗号化は、特にディスク上のフォーマット、キー暗号、転送フォーマット、ハンドシェイク/転送プロトコルを指します。

ここで、特にRFCで言及されているインフラストラクチャは、キーが処理され、配布され、サードパーティによって検証され、一般に実際の環境で使用されるフレームワークです。

0
munchkin