如何使用RSA,AES和JWT进行安全授权?

问题描述 投票:0回答:1

首先,让我解释你我想做的事:

让我想鲍勃想获得Alis的授权(经典示例),在我的示例中Alis是服务器。

也让我们想像鲍勃和阿里斯已经获得了每个RSA密钥(4096)。

所以Bobs要做的是:

  1. 使用SHA512和他的私钥签署信用(纯文本)
  2. 使用AES CBC 256加密签名的数据和信用
  3. 使用RSA加密AES密钥
  4. 将数据发送到别名

所以Alis会从相反的方向开始进行操作,以解密它并从Bob验证它。

[Alis验证了其Bob后,她生成了一个JWT令牌,并用她的私钥对其进行了签名,并在响应标头授权中将其返回。

JWT从3600获得TTL。

到目前为止,还不错,但是我的问题是,现在我们如何保护JWT不被盗用?

请确保已签名,因此无法对其进行修改(除非攻击者从服务器获得了私钥,但我的天哪,无论如何它还是过去了。

让他想象一下,他有能力破解HTTPS并窃取令牌,并将其放在标头中,这样他就可以欺骗Alis相信他,直到其Expire,然后他需要再次发送Credits。

我正在考虑两个选项:

选项1:始终发送信用并解密以验证Bob。

但是每次请求都会花费巨大的性能,并且JWT的收益会丢失。

选项2:发送唯一的ID并从Bobs设备确认它(已加密,所以同样的问题,如选项1)

我们可以做什么来保护它?

也许我一如既往地想得太多,但是我真的很想知道在那种情况下什么是“最佳实践”。

已经感谢您对您的回答

security encryption jwt aes rsa
1个回答
0
投票

嗯,如果爱丽丝不确定谁在发送请求,那么鲍勃也是如此,所以这是一个双向问题,没人可以确定另一个人的身份,您可以使用来自证书颁发机构。在发送带有签名的证书的位置,并使用证书颁发机构(第三方)的私钥对证书进行签名,以确保客户端服务器之间的连接安全并防止任何修改。

© www.soinside.com 2019 - 2024. All rights reserved.