特定のデジタル証明書(SSL証明書など)が「鍵で署名されている」と誰かが言ったとき、それは何を意味しますか?これは、証明書に、以降のメッセージ交換に使用する必要があるキーが含まれていることを意味しますか?それは、証明書自体が暗号化されており、そのキーでのみ復号化できることを意味しますか?それは何か他のことを意味していますか?前もって感謝します。
理想的には、誰かが証明書を見て、それが正しく正当であると判断したことを意味します。彼らがそれをした後、彼らは人々に「ねえ、私はこの証明書が良いことを確認しました。私は信頼しますそれを」と言いたいです。これを行うには、署名キーを使用して証明書に署名します。
これで、誰かが証明書を取得すると、誰が証明書に署名したかを確認できます。署名者の1人を信頼する場合、証明書自体を信頼できます。これは [〜#〜] pki [〜#〜] の Web Of Trust の基礎です。
実際の署名は、おそらくそれがどのような種類の証明書であるかによって異なります。 これは便利な読みです だと思います。
デジタル証明書は次の3つで構成されています。
- 公開鍵。
- 証明書情報。 (名前、ユーザーIDなど、ユーザーに関する「ID」情報。)
- 1つ以上のデジタル署名。
通常、「1つ以上のデジタル署名」の部分は、証明書の暗号化されたハッシュのセットをリストすることによって行われます。したがって、証明書に署名する場合は、証明書のハッシュを計算し、秘密署名キーを使用して暗号化し、デジタル署名のリストに追加します。
X.509証明書 の構造は次のとおりです。
Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING } TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 extensions [3] EXPLICIT Extensions OPTIONAL -- If present, version MUST be v3 }
証明書自体に含まれるデータはTBSCertificate
部分です。公開鍵(subjectPublicKeyInfo)を識別子(サブジェクト)にバインドし、その他のさまざまな属性拡張機能を備えています)。
次に、これを署名と組み合わせてCertificate
構造を形成します。署名アルゴリズムは、これがどのように行われるべきかを指示します。
基本的に、TBSCertificate
(通常はSHA-1)のダイジェストが計算され、署名者(X.509の用語では発行者)の秘密鍵で署名されます。 TBSCertificate
の内容を少し変更すると、ダイジェストが変更され、署名が無効になります。
RSAキーを使用する場合、秘密キーを使用したダイジェストの署名は、公開キーを使用した暗号化の場合と数学的に非常に似ています。ただし、これは概念的には同じではなく、たとえばDSAにはその相互関係はありません。
原理は他のタイプの証明書でも同じですが、構造は異なる場合があります。 PGP公開鍵が実際には証明書であることを考えると、次の質問にも興味があるかもしれません。
特定のデジタル証明書(SSL証明書など)が「鍵で署名されている」と誰かが言ったとき、それは何を意味しますか?
これは、そのキーを所有するエンティティが証明書の情報の正確性を保証し、その保証の検証を可能にする情報を証明書に添付したことを意味します。
これは、証明書に、以降のメッセージ交換に使用する必要があるキーが含まれていることを意味しますか?
いいえ。証明書は身元を証明するだけです。
それは、証明書自体が暗号化されており、そのキーでのみ復号化できることを意味しますか?
いいえ。証明書を暗号化する理由はありません。証明書には公開情報のみが含まれています。
それは何か他のことを意味していますか?
これは、そのキーの所有者が証明書の情報を保証していることを意味します。一般的なSSL証明書の場合、証明書内の情報は、公開鍵と一般名の間のバインディングです。
たとえば、ブラウザでhttps://www.Amazon.com/
を指定すると、Amazonのサーバーから証明書が送信されます。この証明書は、特定の公開鍵をwww.Amazon.com
という名前にバインドします。あなたのブラウザは、それが本当のアマゾンと話していることを知るために3つのことを確認します:
サーバーは、有効であり、信頼する鍵で署名された証明書を提示しました。
証明書はID「www.Amazon.com」をバインドします。
サーバーは、証明書に対応する秘密鍵を持っていることを証明します。
したがって、証明書の署名の目的は、基本的に「この人はこの鍵を所有している」という証明書の情報の背後に署名エージェントの信頼性を置くことです。