Es ist ein Memorandum
Die Sicherheit ist nicht sehr hoch. Lesen Sie daher auch diese Methode.
$ 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
$ 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.
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.
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