Como transcodificar arquivos criptografados AES com o AWS Elastic Transcoder

1

Eu quero enviar meus vídeos criptografados para o S3 e usar o Elastic Transcoder para transcodificá-los. Isso é o que estou fazendo atualmente e não está funcionando. Estou usando openssl para criptografar meus arquivos de vídeo. Os comandos que estou usando são:

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

Esse eco está fora do meu sal, chave e IV em hex :

salt=BBE61C94DD1B3395
key=03A4C8AB06A09C924947FC865415FE58E1AFC6C998FA7CA8B9DE8E5C232CE0E9
iv =9325C43C36A7868957613EF80FEED569

Eu então carrego esse arquivo criptografado para o S3 usando o utilitário de linha de comando aws s3 .

O AWS Elastic Transcoder me diz:

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.

Eu então faço:

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

Isso retorna um CiphertextBlob , que eu posso colar no meu Decryption Parameters -> Decryption Key .

Para o Decryption Key MD5 que eu faço:

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

E colo isso em Decryption Parameters -> Decryption Key MD5 .

O IV é feito por:

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

Que eu então cole em Decryption Parameters -> Decryption Initialization Vector .

Depois de concluir todas essas etapas e criar o trabalho, a AWS volta com este erro:

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)

Versões

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

Eu quero transcodificar um arquivo criptografado do lado do cliente do S3 usando o Elastic Transcoder, mas não consigo fazer as chaves funcionarem.

    
por Martijn 11.11.2015 / 21:41

0 respostas