Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services aws如何验证使用访问密钥创建的签名?_Amazon Web Services_Security_Cryptography_Aws Cli - Fatal编程技术网

Amazon web services aws如何验证使用访问密钥创建的签名?

Amazon web services aws如何验证使用访问密钥创建的签名?,amazon-web-services,security,cryptography,aws-cli,Amazon Web Services,Security,Cryptography,Aws Cli,我搜索了很多,所有页面都在讨论如何使用aws访问密钥签署请求。但我没有发现aws是如何验证这些签名的 例如,这个官方文档讨论了aws提供的各种身份验证方法。它讨论了aws如何使用密钥对的公钥来验证签名。 但是它没有提到aws如何验证使用访问密钥签名的请求。 我发现aws访问密钥非常混乱。有什么帮助吗?请参阅: 向AWS发送请求时,您发送: 带参数的API请求等 您的访问密钥(以AK开头) 使用访问密钥的相应密钥生成的签名 AWS验证签名: 获取请求中传递的访问密钥的密钥 签署您的请求,并

我搜索了很多,所有页面都在讨论如何使用aws访问密钥签署请求。但我没有发现aws是如何验证这些签名的

例如,这个官方文档讨论了aws提供的各种身份验证方法。它讨论了aws如何使用密钥对的公钥来验证签名。 但是它没有提到aws如何验证使用访问密钥签名的请求。

我发现aws访问密钥非常混乱。有什么帮助吗?

请参阅:

向AWS发送请求时,您发送:

  • 带参数的API请求等
  • 您的访问密钥(以AK开头)
  • 使用访问密钥的相应
    密钥
    生成的签名
AWS验证签名:

  • 获取请求中传递的访问密钥的密钥
  • 签署您的请求,并将其与您提供的签名进行比较
  • 通过检查请求的时间戳是否在签名后5分钟内,确保MIM不会重播该请求
为了防止请求在传输过程中被篡改,一些 请求元素用于计算请求的哈希(摘要), 并且结果散列值作为请求的一部分被包括。 当AWS服务接收到请求时,它使用相同的信息来计算散列并将其与散列值进行匹配 在您的请求中。如果值不匹配,AWS将拒绝请求


我早就猜到了。但是您的答案中的这一部分没有出现在任何文档中——“获取请求中传递的访问密钥的密钥”。这就像是说,aws同时拥有访问和秘密访问密钥的知识。然后,它可能会滥用访问权限,并代表您生成请求。这与ec2密钥对不同,ec2密钥对中的实例仅配置有公钥。私有部分只保留给用户。@ManojkumarKhotele当然AWS知道访问密钥和相应的密钥。但是AWS不知道EC2密钥对的私钥。谢谢@helloV。我接受这个答案。无法使用任何其他方式验证签名。