Ich möchte meine verschlüsselten Videos in S3 hochladen und sie mit Elastic Transcoder umcodieren. Das ist, was ich gerade mache und überhaupt nicht arbeite. Ich verwende openssl, um meine Videodateien zu verschlüsseln. Die Befehle, die ich verwende, sind:

PASSWORD=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c16)
openssl enc -aes-256-cbc -pass pass:$PASSWORD -p -in VIDEO.mkv -out VIDEO.enc.mkv

Das Echo ist aus meinem Salz, Schlüssel und IV in hex:

salt=BBE61C94DD1B3395
key=03A4C8AB06A09C924947FC865415FE58E1AFC6C998FA7CA8B9DE8E5C232CE0E9
iv =9325C43C36A7868957613EF80FEED569

Anschließend lade ich diese verschlüsselte Datei mit dem aws s3Befehlszeilenprogramm in S3 hoch.

AWS Elastic Transcoder sagt mir:

Decryption Key: The Base64 encoded encrypted key that you want Elastic Transcoder to use to decrypt the input.
Decryption Key MD5: The Base64 encoded MD5 digest of the encrypted key that you want Elastic Transcoder to use for a key checksum.
Decryption Initialization Vector: The Base64 encoded initialization vector that you want Elastic Transcoder to use to decrypt the input.

Ich mache dann:

OUTPUT=$(echo '[KEY]' | xxd -r -p | base64 -i -)
aws kms encrypt --plaintext $OUTPUT --key-id [MY KEY]

Dies ergibt eine, CiphertextBlobdie ich dann in meine einfügen kann Decryption Parameters -> Decryption Key.

Für die Decryption Key MD5mache ich:

echo '[KEY]' | xxd -r -p | md5 | base64 -i -

Und ich füge das bei Decryption Parameters -> Decryption Key MD5.

Die IV wird durchgeführt von:

echo '[IV]' | xxd -r -p | base64 -i -

Die füge ich dann an Decryption Parameters -> Decryption Initialization Vector.

Nach Abschluss all dieser Schritte und dem Erstellen des Jobs kommt AWS mit dem folgenden Fehler zurück:

The MD5 hash of the base64-decoded value for ''Encryption:Key'' must equal the base64-decoded value for ''Encryption:KeyMd5''. (Service: AmazonElasticTranscoder; Status Code: 400; Error Code: ValidationException; Request ID: xxxx)

Versionen

openssl version
OpenSSL 0.9.8zg 14 July 2015

aws --version
aws-cli/1.9.2 Python/2.7.10 Darwin/15.0.0 botocore/1.3.2

xxd -v
xxd V1.10 27oct98 by Juergen Weigert

md5 -x
MD5 test suite:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e - verified correct
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661 - verified correct
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72 - verified correct
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0 - verified correct
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b - verified correct
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = d174ab98d277d9f5a5611c2c9f419d9f - verified correct
MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 57edf4a22be3c955ac49da2e2107b67a - verified correct
MD5 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = b50663f41d44d92171cb9976bc118538 - verified correct

base64 -h       
base64: invalid option -- h
Usage:  base64 [-dhvD] [-b num] [-i in_file] [-o out_file]
  -h, --help     display this message
  -D, --decode   decodes input
  -b, --break    break encoded string into num character lines
  -i, --input    input file (default: "-" for stdin)
  -o, --output   output file (default: "-" for stdout)

TL; DR

Ich möchte eine clientseitig verschlüsselte Datei von S3 mit Elastic Transcoder umcodieren, kann aber die Schlüssel nicht zum Laufen bringen.

Martijn
quelle