为啥我不需要私钥来解码我的亚马逊 JWT?

Posted

技术标签:

【中文标题】为啥我不需要私钥来解码我的亚马逊 JWT?【英文标题】:Why do I not need a private key to decode my amazon JWT?为什么我不需要私钥来解码我的亚马逊 JWT? 【发布时间】:2022-01-11 18:26:42 【问题描述】:

我一直在阅读,当使用 Amazon Cognito 进行验证和 JWT 令牌时,解码签名所需的只是公钥。但是,如果这是真的,我认为这会降低安全性,因为有人可以更改他们的 jwt 然后更改签名,而我在 API 端的解码将不知道其中的区别,因为我不知道私钥和公共密钥是公开的,可用于生成签名。

谁能帮忙澄清一下?

【问题讨论】:

公钥用于验证(不解码)签名,但没有私钥就无法创建(生成)有效签名,应保留私钥私有的,这就是为什么它首先被命名为私有密钥,这可以防止其他任何人为伪造数据创建签名。参见例如en.wikipedia.org/wiki/Digital_signature。 【参考方案1】:

由于使用Asymmetric encryption(带有私钥/公钥对),任何人都无法修改令牌并为其添加签名,该签名被使用原始发件人的公钥的人接受。

令牌中的内容是公开的,任何拥有它的人都可以访问,这就是为什么您不应该在其中存储 GDPR 敏感数据的原因。但是,没有私钥的副本,任何人都无法生成新的令牌。

定期进行密钥轮换也是明智之举,您可以定期用新密钥替换私钥。

【讨论】:

以上是关于为啥我不需要私钥来解码我的亚马逊 JWT?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的亚马逊联盟链接在移动设备上打开亚马逊应用后会重定向回浏览器?

为啥我的亚马逊应用商店提交被拒绝?如何获取更多信息?

亚马逊实例不再允许使用私钥登录

为啥需要客户端验证 JWT?

为啥一个亚马逊 ec2 实例需要两个弹性 IP?

为啥从亚马逊弹性负载均衡器后面发送重定向时收到 502 错误网关?