Direkt zum Inhalt

Wie verwende ich OpenSSL, um eine Datei mit asymmetrischen AWS-KMS-Schlüsseln zu verschlüsseln?

Lesedauer: 3 Minute
0

Ich möchte OpenSSL verwenden, um eine Datei mit AWS Key Management Service (AWS KMS)-Schlüsseln zu verschlüsseln.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

RSA-Schlüsselpaar erstellen, den öffentlichen Schlüssel herunterladen und einen AES-256-Bit-Schlüssel erstellen

Gehe wie folgt vor:

  1. Erstelle das RSA-Schlüsselpaar.
  2. Um den öffentlichen Schlüssel herunterzuladen, führe den AWS-CLI-Befehl get-public-key aus:
    aws kms get-public-key --key-id your-key-id --output text --query 'PublicKey' > RSAPublic.b64 && base64 -d RSAPublic.b64 > RSAPublic.bin
    Hinweis: Ersetze your-key-id durch die ID deines asymmetrischen Schlüssels. Die --query-Funktion ruft den öffentlichen Schlüssel ab und dekodiert dann die Base64-Datei in einen DER-Schlüssel.
  3. Führe den folgenden OpenSSL-Befehl rand aus, um einen Advanced Encryption Standard (AES)-256-Bit-Schlüssel zu erstellen:
    openssl rand -base64 32 > key.bin

Daten verschlüsseln

Gehe wie folgt vor:

  1. Führe den folgenden OpenSSL-Befehl enc mit der key.bin-Datei aus:
    openssl enc -aes-256-cbc -salt -pbkdf2 -in FILE_TO_ENCRYPT -out FILE_TO_ENCRYPT.enc -pass file:./key.bin
    Hinweis: Ersetze FILE_TO_ENCRYPT durch den Namen deiner Datei. Der -pbkdf2-Befehl ist nur bei OpenSSL 1.1.1 verfügbar. Amazon Machine Image (AMI) von Amazon Linux 2 verwendet OpenSSL 1.0.2 und unterstützt den -pbkdf2-Befehl nicht.
  2. Verschlüssele die key.bin-Datei mit dem öffentlichen AWS-KMS-Schlüssel. Dies schützt deine Schlüsseldaten. Nur Benutzer, die Zugriff auf deinen privaten AWS-KMS-Schlüssel haben, können auf die key.bin-Datei zugreifen. Führe dazu den OpenSSL-Befehl pkeyutl aus:
    openssl pkeyutl -in key.bin -out enc.key.bin -inkey RSAPublic.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
    Hinweis: Der pkeyutl-Befehl verwendet einen Verschlüsselungsalgorithmus, der die Entschlüsselung durch die AWS-KMS-API RSAES_OAEP_SHA_256 unterstützt. Der öffentliche AWS-KMS-Schlüssel RSAPublic.bin verschlüsselt den AES-256-Bit-Schlüssel und erstellt eine neue Datei mit dem Namen enc.key.bin.
  3. Führe den AWS-CLI-Befehl rm aus, um die key.bin-Datei so zu verschlüsseln, dass Benutzer die enc.key.bin-Datei entschlüsseln müssen, um auf key.bin zuzugreifen:
    aws s3 rm key.bin && rm FILE_TO_ENCRYPT
    Hinweis: Ersetze FILE_TO_ENCRYPT durch den Namen deiner Datei.
  4. (Optional) Lösche die Originaldatei, die du verschlüsseln wolltest, damit Benutzer nicht auf die Datei zugreifen können.

Du hast jetzt die folgenden Ressourcen:

  • Die verschlüsselten Daten in der FILE_TO_ENCRYPT.enc-Datei
  • Den verschlüsselten AES-256-Bit-Schlüssel enc.key.bin
  • Den öffentlichen AWS-KMS-Schlüssel RSAPublic.bin

Hinweis: Benutzer mit verschlüsselten Daten müssen dir die zu entschlüsselnden Dateien senden.

Dateien entschlüsseln

Um die verschlüsselten Daten abzurufen, entschlüssele enc.key.bin und verwende dann diesen Schlüssel, um die Datei FILE_TO_ENCRYPT.enc zu entschlüsseln.

Hinweis: Du musst Zugriff auf die AWS-KMS-API haben, da der private AWS-KMS-Schlüssel nicht im Klartext angezeigt werden kann.

Gehe wie folgt vor:

  1. Um die Datei enc.key.bin zu entschlüsseln und an die AWS-KMS-API zu senden, führe den AWS-CLI-Befehl decrypt aus:
    aws kms decrypt --key-id your-key-id --ciphertext-blob fileb://enc.key.bin --encryption-algorithm RSAES_OAEP_SHA_256 --output text --query 'Plaintext' | base64 --decode > decryptedKey.bin
    Hinweis: Ersetze your-key-id durch die ID deines Schlüssels. Die Funktion --query wählt den Klartext aus und dekodiert dann den Base64-Wert in die Datei decryptedKey.bin.
  2. Um die entschlüsselte Datei auszugeben, verwende die Datei decryptedKey.bin, wenn du den folgenden OpenSSL-Befehl enc ausführst:
    openssl enc -d -aes-256-cbc -pbkdf2 -in FILE_TO_ENCRYPT.enc -out DECRYPTED_FILE -pass file:./decryptedKey.bin
    Hinweis: Ersetze DECRYPTED_FILE durch den Namen deiner Datei.
  3. Um zu überprüfen, ob die Verschlüsselung und Entschlüsselung erfolgreich abgeschlossen wurden, vergleiche DECRYPTED_FILE und FILE_TO_ENCRYPT.
AWS OFFICIALAktualisiert vor 8 Monaten