如何从AWS加密CLI获取初始化向量(IV)?

时间:2018-02-20 21:39:38

标签: amazon-web-services encryption command-line-interface aws-kms initialization-vector

我正在使用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"
}

1 个答案:

答案 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

[2] https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/create-job.html#create-job-request-inputs-encryption