Digitale Signaturen erstellen und prüfen

Dieses Thema enthält Informationen zum Erstellen und Überprüfen digitaler Signaturen mit asymmetrischen Schlüsseln.

Eine digitale Signatur wird mit dem privaten Schlüsselabschnitt eines asymmetrischen Schlüssels erzeugt. Zur Überprüfung wird der öffentliche Schlüsselabschnitt desselben asymmetrischen Schlüssels verwendet.

Hinweis

  • Wenn Sie digitale Signaturen erstellen, müssen Sie einen Schlüssel mit dem Schlüsselzweck ASYMMETRIC_SIGN verwenden. Verwenden Sie beim Erstellen des Schlüssels ASYMMETRIC_SIGN.

  • Zur Validierung einer Signatur benötigen Sie den vollständigen Algorithmus, der beim Erstellen des Schlüssels verwendet wurde. Für die folgenden Befehlszeilenanweisungen, die den Befehl openssl verwenden, müssen Sie diese Informationen an diese Befehle übergeben.

  • Erteilen Sie dem Nutzer oder Dienst, von dem der Signiervorgang durchgeführt wird, die Berechtigung cloudkms.cryptoKeyVersions.useToSign für den asymmetrischen Schlüssel. Informationen zu Berechtigungen in Cloud Key Management Service finden Sie unter Berechtigungen und Rollen.

  • Beim Prüfen einer Signatur sollten Sie dem Nutzer oder Dienst, von dem der öffentliche Schlüssel für die Überprüfung heruntergeladen wird, die Berechtigung cloudkms.cryptoKeyVersions.viewPublicKey für den asymmetrischen Schlüssel erteilen.

  • Wenn Sie die Befehlszeile verwenden, sollten Sie OpenSSL installieren. Wenn Sie Cloud Shell einsetzen, ist OpenSSL bereits installiert.

Daten oder Digest?

Die für AsymmetricSign-Anfragen bereitgestellte Eingabe kann über eines der Felder data oder digest übergeben werden. Diese Felder können nicht gleichzeitig angegeben werden. Bei einigen Algorithmen ist das Datenfeld erforderlich, z. B. bei Rohalgorithmen und beim Signieren mit einem Cloud External Key Manager-Schlüssel.

Rohalgorithmen

"Roh"-Algorithmen, die durch das Präfix RSA_SIGN_RAW_ identifiziert werden, sind eine Variante der PKCS #1-Signatur, bei der die Codierung in eine DigestInfo weggelassen wird. In der Variante:

  • Wird ein Digest für die zu signierende Nachricht berechnet.
  • Wird das PKCS #1-Padding direkt auf den Digest angewendet.
  • Wird unter Verwendung des privaten RSA-Schlüssels eine Signatur des gepaddeten Digests berechnet.

So verwenden Sie diese Algorithmen:

  • Die Rohdaten müssen als Teil des data-Felds bereitgestellt werden (anstelle eines Digest).
  • Die Daten unterliegen einem Längenlimit von 11 Byte unter der RSA-Schlüsselgröße. Beispiel: Ein PKCS #1 mit einem 2.048-Bit-RSA-Schlüssel kann maximal 245 Byte signieren.
  • Weisen Sie dem entsprechenden Nutzer oder Dienst die cloudkms.expertRawPKCS1-Rolle zu. Informationen zu Berechtigungen in Cloud Key Management Service finden Sie unter Berechtigungen und Rollen.

Mit Rohalgorithmen können Sie auch einen Digest-Typ signieren, für den kein vordefinierter Algorithmus verfügbar ist. Sie können beispielsweise einen RSA_SIGN_RAW_2048-Schlüssel verwenden, um eine SHA-512-PKCS #1-DigestInfo-Struktur zu signieren, die Sie bereits extern berechnet haben. Bei diesem Verfahren werden dieselben Ergebnisse wie bei einem Standardalgorithmus für RSA_SIGN_PKCS1_2048_SHA512 erzielt.

ECDSA-Unterstützung für andere Hash-Algorithmen

Unsere ECDSA-Signaturalgorithmen haben das allgemeine Format:

EC_SIGN_ELLIPTIC_CURVE_[DIGEST_ALGORITHM]

DIGEST_ALGORITHM hat den Wert SHA256, SHA384 oder SHA512. Da der Hash vor dem Erstellen der Signatur ausgeführt wird, können diese Signaturalgorithmen auch mit anderen Digests als SHA verwendet werden, z. B. Keccak. Wenn Sie einen Keccak-Digest verwenden möchten, geben Sie einen Keccak-Hashwert an und verwenden Sie den SHA-Digest-Algorithmus mit derselben Länge. Sie können beispielsweise einen KECCAK256-Digest in einer Anfrage mit dem