PKIに関連するSSL/TLSの部分に対処する多くの質問がありますが、それらすべてがすべてをまとめているようには見えません。私たちが人々を指すことができる標準的な答えは非常に役立つと思います。
投稿者の間でいくつかの混乱の原因となっているように思われる回答すべき主な質問(すべてSSL/TLSに関する):
公開鍵インフラストラクチャと公開鍵暗号化の違いは何ですか?それらはどのように関連していますか?
公開鍵インフラストラクチャ と 公開鍵暗号化 の違いは、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の記事 )などのさまざまなシナリオに適用できます。
PKIでクライアント証明書はどのように使用されますか?
これは、上記の特定のユースケースシナリオに本当に依存します。クライアント証明書の使用方法はシナリオによって異なる場合がありますが、すべて同じ目的を果たします:特定の公開鍵が特定のエンティティ(クライアント/サーバー/ユーザー)に属していることを確認します。
たとえば、SSL/TLSはクライアント側の証明書をサポートしています。この使用例は この回答はThomas Pornin でカバーされています。認証にクライアント証明書を使用することの利点と欠点も この答えはBruno でカバーされています。
PKIにおける認証局の役割は何ですか?
これに対する最良の答えは、引用された wikipediaの記事 (まだ)にあります:
CAの主な役割は、特定のユーザーにバインドされた公開鍵にデジタル署名して公開することです。これは、CA自身の秘密鍵を使用して行われるため、ユーザー鍵の信頼は、CAの鍵の有効性の信頼に依存します。 CAがユーザーおよびシステムとは別のサードパーティである場合、それは登録局(RA)と呼ばれ、CAと別の場合も別の場合もありません。キーユーザーバインディングは、ソフトウェアまたは人間の監督下で、バインディングの保証レベルに応じて確立されます。
導入文として:PKI(公開キー基盤)とPKC(公開キー暗号化)を合わせてPKT(公開キー技術)と見なします。
短い答え:画像を読むには、新しいウィンドウで開いてください
今が質問に答える時です。
1. What is the difference between Public Key Infrastructure and Public Key Cryptography?
それらの主な違いと関係は、定義と歴史の背後に隠されていると思います。
したがって、上記の説明によると、公開鍵暗号化は、データに対する非対称の数学演算のみをサポートします。それ自体では、eコマース、電子メール、Webなどのアプリケーションまたは環境への接続を提供しません。このような接続を提供するには、いくつかの追加の要素が必要です。これらの追加部分はPKIの定義を形成します。これは、公開鍵テクノロジーを、それを使用したいアプリケーションと環境で利用できるようにする「インフラストラクチャ」です。
この論文 によると、これらの特性に関するPKIシステムのいくつかの例は次のとおりです:X.509、PGP、AADS/X9.59、SPKI
2. What is the main use case for PKI?
イントラネットSSL、802.1x認証、S/MIME、IPSec、エンタープライズユーザーの認証:および このペーパー によるとセキュリティ機能PKIは、イントラネットSSL、802.1x認証、S/MIME、IPSec、エンタープライズユーザーの認証など、エンタープライズネットワーク環境のいくつかの一般的な使用例で役立ちます。
3. How are client certificates used in PKI?
クライアント証明書とSSLサーバー証明書の定義と違いは、使用法を示しています。
それらの間の唯一の類似点は、キーワード「証明書」です。どちらにも公開鍵と秘密鍵が含まれています。さらに言えば、すべての証明書には公開鍵と秘密鍵が含まれています。サーバー証明書をクライアント証明書または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を確認できます。
私は質問の短い回答として画像をデザインしました:画像のテキストを読むために新しいタブで画像を開きます
詳細については、以前の回答を参照してください。
私は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を信頼している場合、チェーン全体を信頼していると言っても安全です。
全体として、PKCを使用している場合はPKIが必要であり、すべての参加者を事前に決定することはできません。
これが、ルートCAにCAが必要ない理由です。お使いのコンピューターシステムによって既に知られ、信頼されているそれらの束だけがあります。これらはデフォルトでOS /ブラウザにインストールされています(または手動でインストールすることもできます)。ただし、残りのサーバーまたは中間CAについては、事前にそれらの証明書を知ることができないため(証明書の数が非常に多いため)、PKIを使用して、信頼の連鎖に従って信頼性を確認します。ルートCA(最終的に信頼するかどうか)。
すべての質問に対処するために、クライアント証明書について簡単に説明します。 クライアント証明書はサーバー証明書と同じです。ただし、これらは通常、クライアント認証の方法としてサーバーによって使用されます。このタイプのソリューションは、サーバーの既知のクライアントがほとんどない場合に有効です。
1970年代初頭まで、メッセージを暗号化および復号化する唯一の方法は、両方の操作に同じキーが使用されるsymmetricアルゴリズムを使用することでした。鍵は、2つの当事者が非公開で通信する前に、何らかの方法で安全に交換する必要があります。
公開キー暗号化、つまり非対称暗号化は、2つのキーを使用してメッセージを暗号化および復号化する新しい方法です。1つは秘密にして、もう1つは共有します。接続が監視されている場合でも、2つのパーティは公開鍵を交換して、会議を行うことなく安全に通信できます。
公開鍵暗号化との類似は、安全で鍵です。誰でもオープンセーフティボックス(公開キー)を送信して封印でき、秘密キーを使用してロックを解除できるのはあなただけです。同様に、非対称暗号システムでは、秘密鍵で暗号化されたメッセージを対応する公開鍵で検証して、署名などの信頼性を証明できます。
ただし、公開鍵が本当に所有者の所有物であることを確認する必要があります。結局のところ、攻撃者は接続を変更し、正当なものの代わりに自分の公開鍵を挿入することができます。
たとえば、新しいサーバーに初めてsshするとき、クライアントは、サーバーの公開鍵のフィンガープリントを信頼するかどうかを尋ねます。これは、ローカル端末から確認するためのものです。または、初めてOTR会話を開始するときは、他の人の指紋を音声または直接確認する必要があります。
別の方法は、公開鍵インフラストラクチャとして知られている、指定された権限を他の人に「保証」することです。公開鍵は、発行者名、件名、有効期限などの他の情報とともに証明書の一部として含まれ、認証局の秘密鍵または独自の秘密鍵による非対称暗号化を使用してデジタル署名されます。
各オペレーティングシステムと多くのアプリケーションは、信頼できる証明書のリストを定義します。これらは一般にルート認証局と呼ばれます。多くの場合、公開鍵インフラストラクチャのサーバーとクライアントの証明書に署名する中間認証局に委任します。
クライアント証明書はサーバー証明書とそれほど違いはありません。サーバーは、ユーザーにユーザー名とパスワードの入力を求める代わりに、クライアントに認証を要求する場合があります。
OSIモデルのすべての層に精通している必要があるため、PKIは公開鍵暗号の上にあります。ここで言及されている一般公開は、実際には一般的なオーディエンスを意味するのではなく、キー、または少なくとも公開キーが公開され、さらには自由に配布できるという意味で、誤った名称です。しかし、実際にはそうではないかもしれません。 RFCの公開キー暗号化は、特にディスク上のフォーマット、キー暗号、転送フォーマット、ハンドシェイク/転送プロトコルを指します。
ここで、特にRFCで言及されているインフラストラクチャは、キーが処理され、配布され、サードパーティによって検証され、一般に実際の環境で使用されるフレームワークです。