KMS) Umschlagverschlüsselung mit OpenSL- und Java-Entschlüsselung

Es ist ein Memorandum

Die Sicherheit ist nicht sehr hoch. Lesen Sie daher auch diese Methode.

Generieren Sie einen KMS-Datenschlüssel mit AWS CLI

$ aws kms generate-data-key --key-spec "AES_128" --key-id "arn:aws:kms:REGION_NAME:ACCOUNT_ID:key/HOGEHOGE"

{
  "ciphertextBlob": "foo",
  "Plaintext" : "bar",
  "KeyId" : "KEY-ID"
}

Der zurückgegebene ciphertextBlog und Plaintext sind Base64-codiert

Mit Openssl verschlüsseln

$ KEY=$(echo "bar" | base64 -d | od -A n -t x1 -v | sed -e 's/ //g')
$ openssl aes-128-ecb -e -in secret.txt -out encrypted.txt -base64  -K ${KEY}

KEY = KMS DataKey in HEX-String konvertiert (Request: Smarter way) Mit dem Befehl openssl verschlüsseln. Zu diesem Zeitpunkt ist der Initialisierungsvektor für die Blockverarbeitung nicht erforderlich.

Mit Java entschlüsseln

String encryptedTxt = "baz";
String plainDataKey = "bar";

byte[] key = DatatypeConverter.parseBase64Binary(plainDataKey);

SecretKeySpec secretKey = new SecretKeySpec(key, "AES");

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);

byte[] encrypted = DatatypeConverter.parseBase64Binary(encryptedTxt);

String decryptedTxt = new String(cipher.doFinal(encrypted));
System.out.println("result: " + decryptedTxt);

Im obigen Beispiel ist plainDataKey solide geschrieben. Um korrekt zu sein, sollte plainDataKey durch Dekodieren des ciphertextBlog unter Bezugnahme auf die AWS-Dokumentation erhalten werden. Außerdem enthält die AWS-Dokumentation eine Anweisung, den verwendeten plainDataKey so schnell wie möglich zu löschen.

Andere

Wenn Sie es richtig machen möchten, sollten Sie den Schlüssel und den Initialisierungsvektor generieren. Betrachten Sie es als Spaß = reduzierte Sicherheit.

Recommended Posts

KMS) Umschlagverschlüsselung mit OpenSL- und Java-Entschlüsselung
Java-Ver- und Entschlüsselung PDF
Erreichen Sie eine OpenSSL-kompatible Verschlüsselung mit Java / PHP
Verwenden Sie Java mit MSYS und Cygwin
Verteilte Ablaufverfolgung mit OpenCensus und Java
Installieren Sie Java und Tomcat mit Ansible
Verwenden Sie JDBC mit Java und Scala.
PDF und TIFF mit Java 8 ausgeben
Java-Verschlüsselung, Entschlüsselung von Word-Dokumenten
Mit Java verschlüsseln und mit C # entschlüsseln
Überwachen Sie Java-Anwendungen mit Jolokia und Hawtio
Verknüpfen Sie Java- und C ++ - Code mit SWIG
Probieren wir WebSocket mit Java und Javascript aus!
[Java] Lesen und Schreiben von Dateien mit OpenCSV
Umschlagverschlüsselung mit AWS Key Management Service
Beispiel für die Erstellung / Verschlüsselung / Entschlüsselung von RSA-Schlüsselpaaren (JAVA)
Erstellen und testen Sie Java + Gradle-Anwendungen mit Wercker
JSON mit Java und Jackson Teil 2 XSS-Maßnahmen
Bereiten Sie eine Scraping-Umgebung mit Docker und Java vor
Verschlüsseln / Entschlüsseln mit AES256 in PHP und Java
[Java] Konvertieren und Importieren von Dateiwerten mit OpenCSV
[Review] Lesen und Schreiben von Dateien mit Java (JDK6)
Java und JavaScript
XXE und Java
[Java] Richten Sie Zeichen auch mit gemischten Zeichen halber und voller Breite aus
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
[Java] Verschlüsselung mit AES-Verschlüsselung mit Standardbibliothek
[Java] Verweisen Sie auf und setzen Sie private Variablen mit Reflektion
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Bereiten Sie die Umgebung für Java11 und JavaFx mit Ubuntu 18.4 vor
Gesichtserkennungs-App mit Amazon Rekognition und Java
[Java] Entwicklung mit mehreren Dateien mittels Paket und Import
Serverloses Java EE beginnend mit Quarkus und Cloud Run