我正在使用AWS Encryption CLI使用如下命令加密文件:
aws-encryption-cli --encrypt --input test.mp4 --master-keys key=arn:aws:kms:us-west-2:123456789012:key/exmaple-key-id --output . --metadata-output -
从命令的输出中,我可以清楚地看到它正在使用强度为12的初始化向量(IV),这很好,但我如何实际查看IV?为了将加密文件传递给另一个服务,例如AWS Elastic Transcoder,它本身就会进行解密,我需要知道用于加密文件的IV是什么。
{
"header": {
"algorithm": "AES_256_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384",
"content_type": 2,
"encrypted_data_keys": [{
"encrypted_data_key": "...............",
"key_provider": {
"key_info": "............",
"provider_id": "..........."
}
}],
"encryption_context": {
"aws-crypto-public-key": "..............."
},
"frame_length": 4096,
"header_iv_length": 12,
"message_id": "..........",
"type": 128,
"version": "1.0"
},
"input": "/home/test.mp4",
"mode": "encrypt",
"output": "/home/test.mp4.encrypted"
}
答案 0 :(得分:3)
很遗憾,您无法使用AWS加密SDK CLI来加密Amazon Elastic Transcoder消费的数据。
AWS加密SDK的主要优点之一是消息格式[1],它将有关加密消息的所有必要信息打包到二进制blob中,并提供了一种处理大型消息的更具伸缩性的方式。建议不要从该blob中提取数据原语,即使您这样做,它们也可能与其他系统直接兼容,也可能不兼容,具体取决于您使用AWS加密SDK的方式以及其他系统所期望的内容。
对于Elastic Transcoder,他们希望使用指定的AES模式[2]加密原始密文。这与AWS Encryption SDK格式不兼容。
[1] https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/message-format.html