it-swarm-eu.dev

Was bedeutet es, wenn ein digitales Zertifikat "signiert" wird?

Wenn jemand sagt, dass ein bestimmtes digitales Zertifikat (wie ein SSL-Zertifikat) "mit einem Schlüssel signiert" wurde, was bedeutet das? Bedeutet das, dass das Zertifikat lediglich einen Schlüssel enthält, der für den weiteren Nachrichtenaustausch verwendet werden soll? Bedeutet das, dass das Zertifikat selbst verschlüsselt ist und nur mit diesem Schlüssel entschlüsselt werden kann? Bedeutet das etwas anderes? Danke im Voraus.

25
zharvey

Im Idealfall bedeutet dies, dass sich jemand das Zertifikat angesehen und entschieden hat, dass es korrekt und legitim ist. Sobald sie das getan haben, möchten sie den Leuten sagen "Hey, ich habe überprüft, dass dieses Zertifikat gut ist. Ich vertraue ihm". Dazu verwenden sie ihren Signaturschlüssel, um das Zertifikat zu signieren.

Wenn jemand das Zertifikat erhält, kann er sehen, wer das Zertifikat signiert hat. Wenn sie einem der Unterzeichner vertrauen, können sie dem Zertifikat selbst vertrauen. Dies ist die Basis von Web Of Trust in PKI .

Die tatsächliche Unterzeichnung hängt wahrscheinlich davon ab, um welche Art von Zertifikat es sich handelt. Ich denke dies ist eine nützliche Lektüre .

Ein digitales Zertifikat besteht aus drei Dingen:

  • Ein öffentlicher Schlüssel.
  • Zertifikatinformationen. ("Identitäts" -Informationen über den Benutzer, wie Name, Benutzer-ID usw.)
  • Eine oder mehrere digitale Signaturen.

In der Regel wird der Teil "Eine oder mehrere digitale Signaturen" ausgeführt, indem ein Satz verschlüsselter Hashes des Zertifikats aufgelistet wird. Wenn Sie also ein Zertifikat signieren möchten, berechnen Sie den Hash des Zertifikats, verschlüsseln ihn mit Ihrem privaten Signaturschlüssel und fügen ihn der Liste der digitalen Signaturen hinzu.

23
Oleksi

Hier ist die Struktur eines X.509-Zertifikats :

    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
        }

Die im Zertifikat selbst enthaltenen Daten sind der Teil TBSCertificate: Sie binden den öffentlichen Schlüssel (subjectPublicKeyInfo) an einen Bezeichner (den Betreff) und verschiedene andere Attributerweiterungen.

Dies wird dann mit der Signatur kombiniert, um eine Certificate -Struktur zu bilden. Der Signaturalgorithmus bestimmt, wie dies erfolgen soll.

Im Wesentlichen wird ein Digest von TBSCertificate (normalerweise SHA-1) berechnet und dann mit dem privaten Schlüssel des Unterzeichners (des Ausstellers in X.509-Begriffen) signiert. Die geringste Änderung des Inhalts von TBSCertificate sollte die Digest-Änderung bewirken, was wiederum die Signatur ungültig machen sollte.

Bei Verwendung von RSA-Schlüsseln ist das Signieren des Digests mit dem privaten Schlüssel mathematisch sehr ähnlich zu dem, was für die Verschlüsselung mit dem öffentlichen Schlüssel erfolgen würde. Dies ist jedoch konzeptionell nicht dasselbe, und DSA hat beispielsweise diese Reziprozität nicht.

Das Prinzip ist für andere Arten von Zertifikaten dasselbe, obwohl die Struktur unterschiedlich sein kann. In Anbetracht der Tatsache, dass öffentliche PGP-Schlüssel tatsächlich Zertifikate sind, könnten Sie auch an folgenden Fragen interessiert sein:

9
Bruno

Wenn jemand sagt, dass ein bestimmtes digitales Zertifikat (wie ein SSL-Zertifikat) "mit einem Schlüssel signiert" wurde, was bedeutet das?

Dies bedeutet, dass die Entität, die diesen Schlüssel besitzt, für die Richtigkeit der Informationen im Zertifikat bürgt und dem Zertifikat Informationen beigefügt hat, mit denen diese Belege überprüft werden können.

Bedeutet das, dass das Zertifikat lediglich einen Schlüssel enthält, der für den weiteren Nachrichtenaustausch verwendet werden soll?

Zertifikate beweisen nur Identität.

Bedeutet das, dass das Zertifikat selbst verschlüsselt ist und nur mit diesem Schlüssel entschlüsselt werden kann?

Nein. Es gibt keinen Grund, Zertifikate zu verschlüsseln. Sie enthalten nur öffentliche Informationen.

Bedeutet das etwas anderes?

Dies bedeutet, dass der Besitzer dieses Schlüssels für die Informationen im Zertifikat bürgt. Bei einem typischen SSL-Zertifikat sind die Informationen im Zertifikat eine Bindung zwischen einem öffentlichen Schlüssel und einem allgemeinen Namen.

Wenn Sie beispielsweise Ihren Browser auf https://www.Amazon.com/ Zeigen, sendet Ihnen der Amazon-Server ein Zertifikat. Dieses Zertifikat bindet einen bestimmten öffentlichen Schlüssel an den Namen www.Amazon.com. Ihr Browser bestätigt drei Dinge, um zu wissen, dass er mit dem echten Amazon spricht:

  1. Der Server hat ein gültiges Zertifikat vorgelegt, das von einem vertrauenswürdigen Schlüssel signiert wurde.

  2. Das Zertifikat bindet die Identität "www.Amazon.com".

  3. Der Server weist nach, dass er den dem Zertifikat entsprechenden privaten Schlüssel besitzt.

Der Zweck der Zertifikatsignatur besteht also darin, die Glaubwürdigkeit des Signaturagenten hinter die Informationen im Zertifikat zu stellen, die im Grunde "dieser Typ besitzt diesen Schlüssel" sind.

6
David Schwartz