11

通常、SSL (より正確には X.509) 証明書は、本物であることを保証するために何らかの認証機関によって署名されることになっていることを理解しています。

場合によっては、そのような署名が存在しないことがあります。たとえば、テスト目的で証明書を生成した場合や、認証機関 (ルート証明書) である場合です。このような場合、自己署名証明書が使用されます。

私の質問: なぜこの奇妙な自己署名構造を使用するのですか? 証明書に署名がないのはなぜですか? 自己署名を含めると何が得られますか?

それとも、意味のない署名であっても、すべての証明書に常に署名を付ける方が技術的に簡単 (署名がないという特別なケースはありません) という理由だけですか?

4

9 に答える 9

7

証明書には 3 つの主要な部分があります

  1. 身元情報
  2. 公開鍵
  3. デジタル署名

証明書は、最初の 2 つの部分を秘密鍵で暗号化し、その暗号化された情報を証明書の末尾に追加することによって署名されます。証明書に含まれる公開鍵を使用して署名を復号化できる場合は、一致する秘密鍵を保持する人物によって証明書が署名されていることがわかります。署名は、ID 情報を公開鍵にバインドします。私は自分の秘密鍵で証明書に署名するので、あなたが私の公開鍵で暗号化したメッセージを私だけが読むことができることがわかります。

実際に私に会って証明書を渡さない限り、身元情報が正当に私のものであることを知ることはできません. 証明書の本来の目的は、最初に直接会った人々の証明書を取得し、次にそれらの人々によって署名された証明書を持つ人々を信頼し、次にそれらの人々を信頼することにより、信頼の網を確立することでし...

于 2009-05-16T01:20:25.493 に答える
4

証明書に自己署名すると、その署名の秘密鍵を実際に管理していることを誰かに証明できます。つまり、それがあなたの証明書です。

それ以外の場合は、乱数であり、証明書の形式に準拠しているが実際の証明書ではない公開鍵を作成できます。

于 2009-09-04T21:45:26.333 に答える
3

独自の認証局を設定していると想像してください。最初の認証局は、誰が証明書に署名するのでしょうか?

認証プロセス全体を理解する方法は、それを一連の意味合いとして考えることです。証明書が提示されます。あなたはそれを信頼すべきですか?発行者を信頼するか、証明書を見て署名者を信頼することに同意します。署名者がわからない場合は、その署名者の署名者などにフォローすることができます。ただし、最終的には、自己署名証明書に到達します。

ただし、証明書の取得には比較的費用がかかり、複雑になる可能性があるため、独自の署名機関を直接作成する人もいます。それらが信頼できるかどうかを判断するのはあなた次第です。


これについてのコメントのいくつかは少しばかげています。証明書が有効な証明書であるためには署名が必要であるため、署名なしで証明書を作成することはできません。それが彼らが定義されている方法です。指数なしで浮動小数点数を持てない理由を尋ねることもできます。証明書が存在するため、信頼を判断するために発行者を識別するための ID 情報の収集と暗号化メカニズムが存在します。署名がなければ、証明書の「認証性」に不可欠なものが失われます。


では、他の質問をしましょう。

  • なぜ社会保障番号は9桁なのですか? 5 桁の社会保障番号を取得できないのはなぜですか?
  • 郵送先住所にばかげた郵便番号が付いているのはなぜですか?
  • 人の姓名を保持する必要は本当にあるのでしょうか?

もう一度試してみましょう。証明書とは何ですか? 名前を非対称暗号化キーの公開側にバインドするデータ構造です。その構造は「署名済み」です。つまり、署名キーの所有者以外の誰かによって変更されたかどうかを検出できます。その署名を検証できるため、証明書の信頼性をある程度信頼できます。したがって、有効な証明書には検証可能な署名が必要です。

このコンテキストでの「信頼」とは、他人の権限で、自分が責任を負っていることを実行できないリスクを冒しても構わないと思っていることを意味します。Verisign のような有名な CA によって署名された証明書を持っている場合、信頼している機関は Verisign です。信頼できる方法で取得した証明書を使用して、検討している証明書に署名したことを確認します。

よく知られた機関によって署名された証明書ではなく、自己署名証明書を持っている場合、証明書を受け入れる場合は、自己署名者を信頼する意思があることを意味します。受け入れる意志の根拠となる唯一の権限は、自己署名者に対する直接の信頼です。ただし、署名を検証できるため、少なくとも証明書が破損していないという確信は持てます。

そこで、署名のない証明書を考えてみましょう。(技術的には、これは「データ項目」と呼ばれます。) 名前と公開側の鍵との関連付けが含まれている可能性がありますが、署名がなければ、第三者によって変更されていないという確信は持てません。

違いを見ます?署名された証明書を使用すると、合意された信頼できるサード パーティが作成され、その権限の両方が受け入れられます。自己署名証明書を使用すると、第三者は存在しませんが、証明書が第三者によって破損されていないことを確信できます。証明書の発行者を信頼するのと同じくらい信頼できます。適切な鍵の反対側を持っている誰かによって発行されたことを確認できます。

署名されていない「証明書」を使用すると、証明書が適切な人物に発行されたという信頼できる第三者からの保証も、発行された「証明書」が悪意のある人物によって変更されていないという保証もありません。第三者。これが、定義上、証明書に署名が必要な理由です。

于 2009-05-16T01:19:19.083 に答える
2

RSA 暗号化のしくみを理解する必要があります。署名者は、秘密鍵と公開鍵の 2 つの暗号鍵を生成します。公開鍵を提供し、秘密鍵でデータを暗号化します。公開鍵があれば、他の誰も秘密鍵を持っていないため、データが正しい人物によって暗号化されたことを確認できます。署名付き証明書の場合、信頼の網があり、比較的少数の個人 (認証局) の ID を検証でき、第三者の検証に関してそれらを信頼します。システムの動作の性質上、すべての証明書に署名する必要があります。証明書は誰でも署名できます。「自己署名」証明書は、署名者の検証可能性を気にしない場合の最も簡単な方法です。

于 2009-05-16T01:23:44.610 に答える
2

証明書で「嘘をつく」ことができないようにするためだと思います。つまり、秘密鍵の所有者が同意しない限り、証明書を作成できません。これは、証明書によって名前が付けられたエンティティが秘密鍵の所有者であることを CA が検証するか、自己署名の場合は鍵の所有者に証明書自体に署名させることによって保証されます。

于 2009-05-16T00:53:07.553 に答える
1

証明書は、署名されたキーのエンティティに関する情報を提供しますが、キーに署名しているエンティティに関する情報は提供しません。したがって、自己署名証明書は少なくとも1つの目的を果たします。つまり、特別なデータ構造を実装しなくても、ルートキーの所有者が誰であるかを示します。

私の意見では、これらのものは異なるプロパティを持っているので、証明書と呼ばれるべきではありません。通常の証明書は、安全に保管/送信する必要はありません。攻撃者が正当な証明書を偽の証明書に置き換えることができた場合、証明書の検証は失敗するはずです。同じことは、自己署名証明書には当てはまりません。攻撃者が自己署名証明書を置き換える機会がある場合、攻撃者はその証明書を自分の秘密鍵で署名された証明書に置き換えることができ、証明書を検証しても偽造を検出することはできません。

また、自己署名証明書のロジックがやや逆になっていることにも注意してください。最初に行う必要があるのは、一部の公開鍵が本物であることを信頼することです。そうすれば、公開鍵が誰に属しているかを知ることができます。通常、その逆が必要です。エンティティを信頼できると判断します。次に、そのエンティティに属する公開鍵を学習しようとします。

私の意見では、自己署名証明書は放棄されるべきです。たとえば、InternetExplorerのすべてのルートキーにMicrosoftの署名を付けたいと思います。結局のところ、証明書が正当なCAに属していることを検証したのはマイクロソフトであり、平均的なユーザーがこれらのCAを信頼できるようにする必要があると判断したのはマイクロソフトです。誰かが私の証明書を改ざんしたのではないかと心配している場合、私がしなければならないのは、Microsoftのキーがまだ彼らのものであることを確認してから、すべての証明書の署名を確認することです。

于 2009-05-16T07:28:29.617 に答える
1

証明書の目的は、身元を確認することです。証明書の署名者は、証明書のすべての受信者に対して、ID 情報の信頼性と、証明書に含まれる公開鍵との関連付けを確認したことを主張しています。証明書が署名されていない場合、身元の検証は行われないため、証明書を使用する理由はありません。このようなシナリオでは、認証を必要としないため、ID 情報を厳密に必要としない暗号を使用できます。RC4 はこの説明に当てはまると思います。

あなたの質問は、自分自身を信頼していることを知っているので、証明書に自己署名する必要がないことを意味しています。したがって、サーバーとクライアントの間で証明書を事前に共有できます。機能する仮想の暗号化の観点から。認証情報は保護されます。ただし、事前共有秘密を使用した対称鍵暗号よりも利点がないため、非対称鍵暗号化ツールも証明書形式もそのような使用をサポートしていません。

于 2011-02-03T21:15:21.743 に答える
1

両者の違いは、誰がプログラムを実行して証明書を生成したかです。大企業か、リビングルームのジョー。「署名済み証明書」ビジネス全体はナンセンスです。証明書を使用するとデータを暗号化できますが、何かを販売している大企業は、信頼性とアイデンティティを暗示していると信じ込ませます。暗号化は身元を保証するものではなく、さらに重要なことに、発信者を信頼できることも保証しません。彼らが100%善意を持っていると仮定しても、ニュースを見るだけです. 今年、データ侵害を受けた大企業はいくつありますか?

サーバーとユーザー間の Web トラフィックを暗号化できるように、独自の証明書に自己署名しました。第三者があなたの行動を見られるべきではないので、すべてのトラフィックは暗号化されるべきだと思います. プライバシーに対する合理的な期待を持つべきだと思います。特にあなたに何かを売りたいと思っている人を完全に信頼してはいけません。

于 2009-05-16T04:41:14.137 に答える
1

証明書には、サーバーの公開鍵が含まれています。自己署名は、証明書を生成した人が秘密鍵も所有していることを証明します。

于 2009-05-16T05:16:09.903 に答える