デジタル証明書、そのアーキテクチャ、および内部での仕組みについて学び始めました。誰かが実際に彼に属していない認証用の本物の証明書を私に送信するとどうなりますか?
誰かが実際に彼に属していない認証用の本物の証明書を私に送信するとどうなりますか?
証明書は、実際には、誰かが承認を得てスタンプした公開鍵です。そのことを念頭に置いて、公開鍵と秘密鍵のペアの特別なプロパティ(それぞれが他のエンコードされたものを一意にデコードできるなど)を使用して、「所属」を証明します。
その証明書は、一致する秘密鍵を所有する人に「属している」。認証に使用する場合、証明書は、一致する秘密鍵でエンコードされたものをデコードするために使用されます。これにより、接続は、証明書が「属する」人の手に渡ることを証明します。他の誰もが必要な秘密鍵を持っていないので。
そのため、証明書(公開キー)は公開できます。所有していない証明書を誰かに渡された場合、秘密キーで生成された証明で「バックアップ」できず、認証は失敗します。
誰かが所有していない証明書を送信し、それを使用してメッセージを暗号化した場合、証明書に関連付けられた秘密鍵がなければ、そのメッセージを解読することはできません。
HTTPS/TLSのコンテキストでは、クライアントは、証明書の公開鍵で暗号化された知っているものだけ(通常はランダム)を送信することでホストを認証し、ホストはその何かを復号化して秘密鍵を持っていることを証明する必要があります。何かは、AESなどの対称暗号化アルゴリズムで使用されるキーであることがよくあります。 (ここでの正確な詳細は、使用する暗号スイートによって異なります)
証明書は基本的には次のようなことを伝えるものです。
次の公開鍵はexample.comに属しており、SEA(Some Example Authority)によって検証されています
公開鍵:348abb1c ...
この文書に対するSEAの署名:72ff541c ...
証明書は公開されており、秘密にすることは意図されていません。では、example.comになりすまして、別の悪意のあるWebサイトからその証明書が渡されたらどうなるでしょうか。その公開鍵(example.comに属する)でデータを暗号化し、暗号化されたデータを悪意のあるWebサイトに送信します。しかし、悪意のあるWebサイトはそれを解読できません。なぜなら、そのための秘密鍵が必要であり、example.comだけがそれを持っているからです。
攻撃者は自分の公開鍵を証明書に入れることができるため、自分の秘密鍵を使用してデータを復号化できます。ただし、証明書の公開鍵を変更すると、認証局の署名が無効になるため、証明書は無効になり(ブラウザーなどで警告が表示されます)、受け入れないようにする必要があります。
ただし、特別な種類の証明書がありますが、これらはルート証明書または自己署名証明書です。彼らは基本的に言う:
次の公開鍵はexample.comに属しており、example.com自体によって検証されています。信じて!
一般に、このような証明書は信頼すべきではありません。ただし、このような一部の証明書は、ブラウザやオペレーティングシステムなどによって自動的に信頼されます。どうして?証明書の署名を検証するには、一部の機関の公開鍵が必要だからです。そのため、一部の機関の公開鍵は、デフォルトでOSおよび一部のアプリケーションによって信頼されています。