Schritt 3 für den Import von Schlüsselmaterial: Verschlüsselung des Schlüsselmaterials - AWS Key Management Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schritt 3 für den Import von Schlüsselmaterial: Verschlüsselung des Schlüsselmaterials

Nachdem Sie den öffentlichen Schlüssel und das Import-Token heruntergeladen haben, verschlüsseln Sie Ihr Schlüsselmaterial mit dem öffentlichen Schlüssel, den Sie heruntergeladen haben und dem von Ihnen angegebenen Verpackungsalgorithmus. Wenn Sie den öffentlichen Schlüssel oder das Import-Token ersetzen oder den Verpackungsalgorithmus ändern müssen, müssen Sie einen neuen öffentlichen Schlüssel und Import-Token herunterladen. Hinweise zu den AWS KMS unterstützten öffentlichen Schlüsseln und Wrapping-Algorithmen finden Sie unter Wählen Sie eine Spezifikation für den öffentlichen Verpackungsschlüssel undAuswählen des Verpackungsalgorithmus.

Das Schlüsselmaterial muss im Binärformat vorliegen. Weitere Informationen hierzu finden Sie unter Anforderungen an importiertes Schlüsselmaterial.

Anmerkung

Verschlüsseln und importieren Sie bei asymmetrischen Schlüsselpaaren nur den privaten Schlüssel. AWS KMS leitet den öffentlichen Schlüssel vom privaten Schlüssel ab.

Die folgende Kombination wird NOT unterstützt: ECC _ NIST _P521-Schlüsselmaterial, die Spezifikation für den öffentlichen Wrapping-Schlüssel RSA _2048 und ein _ _ _*-Wrapping-Algorithmus. RSAES OAEP SHA

Sie können das Schlüsselmaterial von ECC _ NIST _P521 nicht direkt mit einem öffentlichen Umschließungsschlüssel _2048 umschließen. RSA Verwenden Sie einen größeren Wrapping-Schlüssel oder einen RSA _ _ _ AES KEY _ WRAP _*-Wrapping-Algorithmus. SHA

Die Wrap-Algorithmen RSA AES KEY WRAP _ _ _ _ SHA _256 und RSA AES _ KEY _ WRAP _ _ SHA _1 werden in chinesischen Regionen nicht unterstützt.

In der Regel verschlüsseln Sie Ihr Schlüsselmaterial, wenn Sie es aus Ihrem Hardware-Sicherheitsmodul (HSM) oder Ihrem Schlüsselverwaltungssystem exportieren. Informationen zum Exportieren von Schlüsselmaterial im Binärformat finden Sie in der Dokumentation zu Ihrem HSM oder Ihrem Schlüsselverwaltungssystem. Sie können sich auch den folgenden Abschnitt ansehen, in dem eine Machbarkeitsstudie mit Open demonstriert wirdSSL.

Verwenden Sie beim Verschlüsseln Ihres Schlüsselmaterials den gleichen Verpackungsalgorithmus, den Sie beim Herunterladen des öffentlichen Schlüssels und Import-Tokens angegeben haben. Den von Ihnen angegebenen Wrapping-Algorithmus finden Sie im CloudTrail Protokollereignis für die zugehörige GetParametersForImportAnfrage.

Generieren Sie Schlüsselmaterial für Tests

Die folgenden SSL Open-Befehle generieren Schlüsselmaterial für jeden unterstützten Typ zum Testen. Diese Beispiele werden nur zu Test- und proof-of-concept Demonstrationszwecken bereitgestellt. Verwenden Sie für Produktionssysteme eine sicherere Methode zur Generierung Ihres Schlüsselmaterials, z. B. ein Hardware-Sicherheitsmodul oder ein Schlüsselverwaltungssystem.

Um die privaten Schlüssel asymmetrischer Schlüsselpaare in ein DER -kodiertes Format zu konvertieren, übergeben Sie den Befehl zur Generierung des Schlüsselmaterials über die Pipeline an den folgenden Befehl. openssl pkcs8 Der topk8 Parameter weist Open SSL an, einen privaten Schlüssel als Eingabe zu verwenden und einen Schlüssel im Format PKCS #8 zurückzugeben. (Das Standardverhalten ist das Gegenteil.)

openssl pkcs8 -topk8 -outform der -nocrypt

Die folgenden Befehle erzeugen Testschlüsselmaterial für jeden der unterstützten Schlüsseltypen.

  • Symmetrischer Verschlüsselungsschlüssel (32 Bytes)

    Dieser Befehl erzeugt einen symmetrischen 256-Bit-Schlüssel (32-Byte-Zufallszeichenfolge) und speichert ihn in der Datei PlaintextKeyMaterial.bin. Sie müssen dieses Schlüsselmaterial nicht verschlüsseln.

    openssl rand -out PlaintextKeyMaterial.bin 32

    Nur in chinesischen Regionen müssen Sie einen symmetrischen 128-Bit-Schlüssel (16-Byte-Zufallszeichenfolge) generieren.

    openssl rand -out PlaintextKeyMaterial.bin 16
  • HMACSchlüssel

    Dieser Befehl generiert eine zufällige Byte-Zeichenfolge der angegebenen Größe. Sie müssen dieses Schlüsselmaterial nicht verschlüsseln.

    Die Länge Ihres HMAC Schlüssels muss der Länge entsprechen, die in der Schlüsselspezifikation des KMS Schlüssels definiert ist. Wenn der KMS Schlüssel beispielsweise HMAC _384 lautet, müssen Sie einen 384-Bit-Schlüssel (48 Byte) importieren.

    openssl rand -out HMAC_224_PlaintextKey.bin 28 openssl rand -out HMAC_256_PlaintextKey.bin 32 openssl rand -out HMAC_384_PlaintextKey.bin 48 openssl rand -out HMAC_512_PlaintextKey.bin 64
  • RSAprivate Schlüssel

    openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_2048_PrivateKey.der openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:3072 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_3072_PrivateKey.der openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_4096_PrivateKey.der
  • ECCprivate Schlüssel

    openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P256_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-384 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P384_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-521 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P521_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:secp256k1 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_SECG_P256K1_PrivateKey.der
  • SM2private Schlüssel (nur Regionen Chinas)

    openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 | openssl pkcs8 -topk8 -outform der -nocrypt > SM2_PrivateKey.der

Beispiele für die Verschlüsselung von Schlüsselmaterial mit Open SSL

Die folgenden Beispiele zeigen, wie Sie Open verwenden, SSL um Ihr Schlüsselmaterial mit dem öffentlichen Schlüssel zu verschlüsseln, den Sie heruntergeladen haben. Verwenden Sie die Klasse, um Ihr Schlüsselmaterial mit einem SM2 öffentlichen Schlüssel zu verschlüsseln (nur Regionen Chinas). SM2OfflineOperationHelper Weitere Informationen zu den wichtigsten Materialtypen, die jeder Wrapping-Algorithmus unterstützt, finden Sie unterAuswählen des Verpackungsalgorithmus.

Wichtig

Diese Beispiele dienen nur zur Demonstration des Konzepts. Verwenden Sie für Produktionssysteme eine sicherere Methode (z. B. ein kommerzielles System HSM oder ein Schlüsselverwaltungssystem), um Ihr Schlüsselmaterial zu generieren und zu speichern.

Die folgende Kombination wird NOT unterstützt: ECC _ NIST _P521-Schlüsselmaterial, die Spezifikation für den öffentlichen Wrapping-Schlüssel RSA _2048 und ein RSAES _ _ _*-Wrapping-Algorithmus. OAEP SHA

Sie können das Schlüsselmaterial von ECC _ NIST _P521 nicht direkt mit einem öffentlichen Umschließungsschlüssel _2048 umschließen. RSA Verwenden Sie einen größeren Wrapping-Schlüssel oder einen RSA _ _ _ AES KEY _ WRAP _*-Wrapping-Algorithmus. SHA

RSAES_OAEP_SHA_1

AWS KMS unterstützt RSAES _ OAEP _ SHA _1 für symmetrische Verschlüsselungsschlüssel (SYMMETRIC_DEFAULT), private Schlüssel mit elliptischer Kurve (ECC), SM2 private Schlüssel und Schlüssel. HMAC

RSAES_ OAEP _ SHA _1 wird für private Schlüssel nicht unterstützt. RSA Außerdem können Sie einen öffentlichen RSA _2048-Wrapping-Schlüssel nicht mit einem _ _ SHA _*-Wrapping-Algorithmus verwenden, um einen privaten RSAES OAEP _ _P521 (NISTsecp521r1ECC) -Schlüssel zu umschließen. Sie müssen einen größeren öffentlichen Wrapping-Schlüssel oder einen _ _ _ Wrapping-Algorithmus verwenden. RSA AES KEY WRAP

Im folgenden Beispiel wird Ihr Schlüsselmaterial mit dem öffentlichen Schlüssel, den Sie heruntergeladen haben, und dem Umschließungsalgorithmus RSAES OAEP _ _ SHA _1 verschlüsselt und in der EncryptedKeyMaterial.bin Datei gespeichert.

In diesem Beispiel:

  • WrappingPublicKey.bin ist die Datei, die den heruntergeladenen öffentlichen Wrapping-Schlüssel enthält.

  • PlaintextKeyMaterial.bin ist die Datei, die das Schlüsselmaterial enthält, das Sie verschlüsseln, z. B. PlaintextKeyMaterial.bin oder. HMAC_384_PlaintextKey.bin ECC_NIST_P521_PrivateKey.der

$ openssl pkeyutl \ -encrypt \ -in PlaintextKeyMaterial.bin \ -out EncryptedKeyMaterial.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha1
RSAES_OAEP_SHA_256

AWS KMS unterstützt RSAES _ OAEP _ SHA _256 für symmetrische Verschlüsselungsschlüssel (SYMMETRIC_DEFAULT), private Schlüssel mit elliptischer Kurve (ECC), SM2 private Schlüssel und Schlüssel. HMAC

RSAES_ OAEP _ SHA _256 wird für private Schlüssel nicht unterstützt. RSA Außerdem können Sie einen öffentlichen RSA _2048-Wrapping-Schlüssel nicht mit einem _ _ SHA _*-Wrapping-Algorithmus verwenden, um einen privaten RSAES OAEP _ _P521 (NISTsecp521r1ECC) -Schlüssel zu umschließen. Sie müssen einen größeren öffentlichen Schlüssel oder einen _ _ _ _ Wrapping-Algorithmus verwenden. RSA AES KEY WRAP

Im folgenden Beispiel wird Schlüsselmaterial mit dem öffentlichen Schlüssel, den Sie heruntergeladen haben, und dem RSAES _ OAEP _ SHA _256-Wrapping-Algorithmus verschlüsselt und in der EncryptedKeyMaterial.bin Datei gespeichert.

In diesem Beispiel:

  • WrappingPublicKey.bin ist die Datei, die den heruntergeladenen öffentlichen Wrapping-Schlüssel enthält. Wenn Sie den öffentlichen Schlüssel über die Konsole heruntergeladen haben, hat diese Datei den Namen wrappingKey_KMS key_key_ID_timestamp (z. B. wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909).

  • PlaintextKeyMaterial.bin ist die Datei, die das Schlüsselmaterial enthält, das Sie verschlüsseln, z. B. PlaintextKeyMaterial.binHMAC_384_PlaintextKey.bin, oder. ECC_NIST_P521_PrivateKey.der

$ openssl pkeyutl \ -encrypt \ -in PlaintextKeyMaterial.bin \ -out EncryptedKeyMaterial.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha256 \ -pkeyopt rsa_mgf1_md:sha256
RSA_AES_KEY_WRAP_SHA_1

Der RSA _ _ AES _ KEY WRAP _ SHA _1-Wrapping-Algorithmus umfasst zwei Verschlüsselungsvorgänge.

  1. Verschlüsseln Sie Ihr Schlüsselmaterial mit einem von Ihnen generierten AES symmetrischen Schlüssel und einem AES symmetrischen Verschlüsselungsalgorithmus.

  2. Verschlüsseln Sie den AES symmetrischen Schlüssel, den Sie verwendet haben, mit dem öffentlichen Schlüssel, den Sie heruntergeladen haben, und dem RSAES _ _ OAEP _1-Wrapping-Algorithmus. SHA

Für den RSA _ _ AES _ KEY WRAP _ SHA _1-Wrapping-Algorithmus ist Open Version 3 erforderlich. SSL x oder später.

  1. Generieren Sie einen AES symmetrischen 256-Bit-Verschlüsselungsschlüssel

    Dieser Befehl generiert einen AES symmetrischen Verschlüsselungsschlüssel, der aus 256 zufälligen Bits besteht, und speichert ihn in der Datei aes-key.bin

    # Generate a 32-byte AES symmetric encryption key $ openssl rand -out aes-key.bin 32
  2. Verschlüsseln Sie Ihr Schlüsselmaterial mit dem AES symmetrischen Verschlüsselungsschlüssel

    Dieser Befehl verschlüsselt Ihr Schlüsselmaterial mit dem AES symmetrischen Verschlüsselungsschlüssel und speichert das verschlüsselte Schlüsselmaterial in der Datei. key-material-wrapped.bin

    In diesem Beispielbefehl:

    • PlaintextKeyMaterial.bin ist die Datei, die das Hauptmaterial enthält, das Sie importieren, z. B.PlaintextKeyMaterial.bin, HMAC_384_PlaintextKey.binRSA_3072_PrivateKey.der, oderECC_NIST_P521_PrivateKey.der.

    • aes-key.bin ist die Datei, die den AES symmetrischen 256-Bit-Verschlüsselungsschlüssel enthält, den Sie im vorherigen Befehl generiert haben.

    # Encrypt your key material with the AES symmetric encryption key $ openssl enc -id-aes256-wrap-pad \ -K "$(xxd -p < aes-key.bin | tr -d '\n')" \ -iv A65959A6 \ -in PlaintextKeyMaterial.bin\ -out key-material-wrapped.bin
  3. Verschlüsseln Sie Ihren AES symmetrischen Verschlüsselungsschlüssel mit dem öffentlichen Schlüssel

    Dieser Befehl verschlüsselt Ihren AES symmetrischen Verschlüsselungsschlüssel mit dem öffentlichen Schlüssel, den Sie heruntergeladen haben, und dem RSAES _ OAEP _ SHA _1-Wrapping-Algorithmus, DER -kodiert ihn und speichert ihn in der Datei. aes-key-wrapped.bin

    In diesem Beispielbefehl:

    • WrappingPublicKey.bin ist die Datei, die den heruntergeladenen öffentlichen Wrapping-Schlüssel enthält. Wenn Sie den öffentlichen Schlüssel über die Konsole heruntergeladen haben, hat diese Datei den Namen wrappingKey_KMS key_key_ID_timestamp (z. B. wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909

    • aes-key.bin ist die Datei, die den AES symmetrischen 256-Bit-Verschlüsselungsschlüssel enthält, den Sie im ersten Befehl in dieser Beispielsequenz generiert haben.

    # Encrypt your AES symmetric encryption key with the downloaded public key $ openssl pkeyutl \ -encrypt \ -in aes-key.bin \ -out aes-key-wrapped.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha1 \ -pkeyopt rsa_mgf1_md:sha1
  4. Generieren Sie die zu importierende Datei

    Verketten Sie die Datei mit dem verschlüsselten Schlüsselmaterial und die Datei mit dem verschlüsselten Schlüssel. AES Speichern Sie sie in der EncryptedKeyMaterial.bin-Datei, die Sie in Schritt 4: Importieren des Schlüsselmaterials importieren werden.

    In diesem Beispielbefehl:

    • key-material-wrapped.bin ist die Datei, die Ihr verschlüsseltes Schlüsselmaterial enthält.

    • aes-key-wrapped.bin ist die Datei, die den verschlüsselten AES Verschlüsselungsschlüssel enthält.

    # Combine the encrypted AES key and encrypted key material in a file $ cat aes-key-wrapped.bin key-material-wrapped.bin > EncryptedKeyMaterial.bin
RSA_AES_KEY_WRAP_SHA_256

Der RSA _ _ AES _ KEY WRAP _ SHA _256-Wrapping-Algorithmus umfasst zwei Verschlüsselungsoperationen.

  1. Verschlüsseln Sie Ihr Schlüsselmaterial mit einem von Ihnen generierten AES symmetrischen Schlüssel und einem AES symmetrischen Verschlüsselungsalgorithmus.

  2. Verschlüsseln Sie den AES symmetrischen Schlüssel, den Sie verwendet haben, mit dem öffentlichen Schlüssel, den Sie heruntergeladen haben, und dem RSAES _ _ OAEP _256-Wrapping-Algorithmus. SHA

Der RSA _ _ _ AES KEY WRAP _ SHA _256-Wrapping-Algorithmus erfordert Open Version 3. SSL x oder später.

  1. Generieren Sie einen AES symmetrischen 256-Bit-Verschlüsselungsschlüssel

    Dieser Befehl generiert einen AES symmetrischen Verschlüsselungsschlüssel, der aus 256 zufälligen Bits besteht, und speichert ihn in der Datei aes-key.bin

    # Generate a 32-byte AES symmetric encryption key $ openssl rand -out aes-key.bin 32
  2. Verschlüsseln Sie Ihr Schlüsselmaterial mit dem AES symmetrischen Verschlüsselungsschlüssel

    Dieser Befehl verschlüsselt Ihr Schlüsselmaterial mit dem AES symmetrischen Verschlüsselungsschlüssel und speichert das verschlüsselte Schlüsselmaterial in der Datei. key-material-wrapped.bin

    In diesem Beispielbefehl:

    • PlaintextKeyMaterial.bin ist die Datei, die das Hauptmaterial enthält, das Sie importieren, z. B.PlaintextKeyMaterial.bin, HMAC_384_PlaintextKey.binRSA_3072_PrivateKey.der, oderECC_NIST_P521_PrivateKey.der.

    • aes-key.bin ist die Datei, die den AES symmetrischen 256-Bit-Verschlüsselungsschlüssel enthält, den Sie im vorherigen Befehl generiert haben.

    # Encrypt your key material with the AES symmetric encryption key $ openssl enc -id-aes256-wrap-pad \ -K "$(xxd -p < aes-key.bin | tr -d '\n')" \ -iv A65959A6 \ -in PlaintextKeyMaterial.bin\ -out key-material-wrapped.bin
  3. Verschlüsseln Sie Ihren AES symmetrischen Verschlüsselungsschlüssel mit dem öffentlichen Schlüssel

    Dieser Befehl verschlüsselt Ihren AES symmetrischen Verschlüsselungsschlüssel mit dem öffentlichen Schlüssel, den Sie heruntergeladen haben, und dem RSAES _ OAEP _ SHA _256-Wrapping-Algorithmus, DER -kodiert ihn und speichert ihn in der Datei. aes-key-wrapped.bin

    In diesem Beispielbefehl:

    • WrappingPublicKey.bin ist die Datei, die den heruntergeladenen öffentlichen Wrapping-Schlüssel enthält. Wenn Sie den öffentlichen Schlüssel über die Konsole heruntergeladen haben, hat diese Datei den Namen wrappingKey_KMS key_key_ID_timestamp (z. B. wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909

    • aes-key.bin ist die Datei, die den AES symmetrischen 256-Bit-Verschlüsselungsschlüssel enthält, den Sie im ersten Befehl in dieser Beispielsequenz generiert haben.

    # Encrypt your AES symmetric encryption key with the downloaded public key $ openssl pkeyutl \ -encrypt \ -in aes-key.bin \ -out aes-key-wrapped.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha256 \ -pkeyopt rsa_mgf1_md:sha256
  4. Generieren Sie die zu importierende Datei

    Verketten Sie die Datei mit dem verschlüsselten Schlüsselmaterial und die Datei mit dem verschlüsselten Schlüssel. AES Speichern Sie sie in der EncryptedKeyMaterial.bin-Datei, die Sie in Schritt 4: Importieren des Schlüsselmaterials importieren werden.

    In diesem Beispielbefehl:

    • key-material-wrapped.bin ist die Datei, die Ihr verschlüsseltes Schlüsselmaterial enthält.

    • aes-key-wrapped.bin ist die Datei, die den verschlüsselten AES Verschlüsselungsschlüssel enthält.

    # Combine the encrypted AES key and encrypted key material in a file $ cat aes-key-wrapped.bin key-material-wrapped.bin > EncryptedKeyMaterial.bin

Fahren Sie mit Schritt 4: Importieren des Schlüsselmaterials fort.