如果客户正在使用AWS请求签名(签名版本4),是否有理由对AWS S3上传进行单独的完整性检查,或者协议中固有的完整性检查是否足够?
我特别提到了多部分上传,这里描述了: https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html 还有单件上传。
简要总结一下:
上传部分文件的每个请求都使用SHA-256哈希进行签名 整个请求,包括标题和数据。
为响应每个部分,AWS返回ETag,这是一个专有的 文件该部分中的数据哈希值。通常这是MD5的 该部分的数据,但在AWS-KMS加密的情况下,它是 一个未记录的算法。
上传完所有部分后,客户端会发送一个请求 指定将各个部分拼接成一个 文件/键。该请求包含部件号,以及每个部件的AWS生成的ETag 一部分。
有些客户根据密钥的最终AWS生成的ETag与本地计算的ETag版本进行额外检查(例如,已在What is the algorithm to compute the Amazon-S3 Etag for a file larger than 5GB?讨论过),但有没有任何意义对此?
我提出的一个原因是,显然没有人对服务器端AWS-KMS加密生效时使用的ETag算法进行逆向工程。但是,在我看来,完整性检查在协议中是固有的,因此不需要额外的检查。
感谢。