6

ローカル ネットワークでホストするサービス間で ssl 証明書を使用する前に、それについてもう少し理解したいと思います。インターネットで読んだことから、これがSSLの仕組みを理解する方法です。

  1. クライアントは WCF サービスに接続します
  2. WCF サービスは公開鍵と証明書で応答します
  3. 次に、クライアントは証明書を検証し、資格情報を公開鍵で暗号化します
  4. 次に、wcf サービスはそのメッセージを秘密鍵で復号化し、情報を検証します
  5. 等...

私が理解していないことがいくつかあります:

  • ステップ 4 で、WCF サービスはどこにその秘密鍵を見つけましたか?
  • なぜ SSL 証明書が必要なのですか? インターネットで読んだことから、サービスが私が望んでいるものであることを確認する必要があります. 最初にローカル ネットワーク上のサービスの IP アドレスを知っている (そのサービスが誰であるかを知っている) ため、これは私には意味がありません。私がインターネットに接続していて、誰かが私をハッキングしようとしているとしましょう。その場合、実際のサービスではなく彼らのサービスに接続すると、私にできることは何もないと思います。なぜなら、ステップ 2 を思い出すと、WCF サービスが公開鍵と証明書 (プレーン テキスト) で応答したためです。誰かがその証明書を取得して使用できますか?
  • SSL 証明書を使用していて、誰かがサービスをホストしているコンピューターにアクセスできる場合、その人はどうにかして秘密鍵を取得し、接続が安全でなくなる可能性がありますか?
4

2 に答える 2

16

まず、ステップ 3 にはいくつかのステップがありません。ステップ 3 で実際に行われることは次のとおりです。

  • クライアントは証明書を検証します
  • クライアントとサーバーはいくつかのメッセージをやり取りして、両者が使用できる秘密鍵暗号化の種類をネゴシエートします
  • クライアントはその暗号化アルゴリズムの秘密鍵を作成し、その秘密鍵をサーバーの公開鍵で暗号化し、暗号化された秘密鍵をサーバーに送信します。
  • サーバーは秘密鍵を使用して秘密鍵を復号化できるようになりました。
  • クライアントとサーバーは秘密鍵アルゴリズムに同意し、秘密鍵を共有します。すべての通信は、共有秘密鍵で暗号化および復号化されるようになりました。
  • クライアントは秘密鍵で資格情報を暗号化します...

この理由は 2 つあります。まず、公開鍵 crypto の計算は、秘密鍵 crypto の計算よりもはるかにコストがかかります。アイデアは、その高価な計算を 1 回だけ実行して、共有シークレットを交換できるようにすることです。第 2 に、クライアントはサーバーの公開鍵を知っていますが、クライアントは公開鍵を持っていない可能性があるため、サーバーはどのようにして秘密のメッセージをクライアントに送信できるのでしょうか? そのため、共有秘密鍵について合意する必要があります。

とにかくあなたの質問に移ります:

サービスの秘密鍵はどこに保管されますか?

Windows では、オペレーティング システムによって提供される証明書ストレージにあります。他のオペレーティング システムでは、わかりません。

なぜ証明書が必要なのですか?

クレジット カードで芝刈り機を購入したいとしますが、私が詐欺師ではないかと心配しているとします。私がベガスへの旅費をあなたのカードに請求し始めたら起訴できるように、あなたは私の本当の名前を知りたがっています.

ですから、私たちが取引を行うとき、「エリック・リッパートは、この紙の所有者はエリック・リッパートであり、署名されたエリック・リッパートであると主張しています」と書かれた紙をお見せします. 私を信じてる?Eric Lippert をすでに信頼している場合は、その紙は必要ありません。また、Eric Lippert を信頼していない場合、その紙は信頼を確立しません。これが「自己署名証明書」です。

ここで、「VeriSign は、この書類の所有者は VeriSign に署名した Eric Lippert であると主張している」と書かれた紙を見せたら、問題は、VeriSign が私の身元を確認したことを信頼しますか? もしそうなら、これはあなたが話している相手が本人であるという証拠です。

それが証明書の目的です。認証局と呼ばれる相互に信頼できる第三者によって署名されているため、特定の公開鍵が実際に特定の組織に関連付けられていることが確立されます。

クレジット カードを使用してオンラインで何かを購入する場合、その Web サイトがそのカードに対して承認された請求のみを行うことを信頼していると思われます。この証明書は、暗号化に使用する公開鍵が実際にその Web サイトの公開鍵であり、悪意のあるハッカーの公開鍵ではないことを確認します。

しかし、公開鍵を含む証明書は公開されているため、誰かが証明書を取得してサーバーになりすますことはできませんか?

はい。ただし、秘密鍵である秘密鍵を盗まない限り、彼らの助けにはなりません。他人の証明書を持つ人は、公開鍵で暗号化されたメッセージを復号化できないため、クライアントと秘密鍵を交換することはできません! クライアントをだますことができたとしても、取得できるのは、クライアントが選択した秘密鍵でエンコードされたビットのストリームだけです。この秘密鍵は、証明書の秘密の半分がなければ攻撃者が取得することはできません。

つまり、秘密鍵へのアクセスを許可すると、誰かが私になりすます可能性がありますよね?

はい。システム全体のセキュリティは、秘密のままの秘密鍵に依存します。それが秘密鍵と呼ばれる理由です。攻撃者があなたの秘密鍵にアクセスできるようになった場合、彼らは勝手にあなたになりすますことができるので、秘密にして安全に保管してください。キーが危険にさらされた場合、証明書を取り消すことができるメカニズムがありますが、通常、損害はすでに発生しています。

于 2013-06-02T15:00:47.507 に答える