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
Security 如何使用RSA、AES和JWT进行安全授权?_Security_Encryption_Jwt_Aes_Rsa - Fatal编程技术网

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

Security 如何使用RSA、AES和JWT进行安全授权?,security,encryption,jwt,aes,rsa,Security,Encryption,Jwt,Aes,Rsa,首先,让我向你解释一下我想做什么: 让我们想象一下Bob想要获得Alice的授权(经典示例),在我的示例中Alice是一个服务器 让我们想象一下Bob和Alice已经获得了每个RSA密钥(4096) 因此,BOB要做到这一点的步骤是: 用SHA512和他的私钥签署信用证(明文) 使用AES CBC 256加密签名数据和信用 用RSA加密AES密钥 向Alice发送数据 因此,Alice会从相反方向执行关于ve的步骤,对其进行解密,并从Bob处验证其正确性 在Alice验证其Bob之后,她生成一个

首先,让我向你解释一下我想做什么:

让我们想象一下Bob想要获得Alice的授权(经典示例),在我的示例中Alice是一个服务器

让我们想象一下Bob和Alice已经获得了每个RSA密钥(4096)

因此,BOB要做到这一点的步骤是:

  • 用SHA512和他的私钥签署信用证(明文)
  • 使用AES CBC 256加密签名数据和信用
  • 用RSA加密AES密钥
  • 向Alice发送数据
  • 因此,Alice会从相反方向执行关于ve的步骤,对其进行解密,并从Bob处验证其正确性

    在Alice验证其Bob之后,她生成一个JWT令牌,并使用她的私钥对此进行签名,并将其返回到响应头授权中

    JWT从3600获得了TTL

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

    确保其已签名,因此无法修改(除非攻击者从服务器获得私钥,但我的天哪,然后它无论如何都结束了)

    让我们想象一下,他将能够破坏HTTPS并窃取令牌,将其放在他的标题中,这样他就可以欺骗Alice相信他,直到其过期,他需要再次发送信用卡

    我在考虑两个选择:

    备选案文1: 总是发送信用卡并解密以验证Bob

    但是,每次请求时,这都会导致巨大的性能损失,JWT的好处也会丢失

    备选案文2: 从Bobs设备发送唯一ID并确认其有效性(加密,因此与选项1相同)

    我们能做些什么来保护它

    也许我像往常一样想得太多了,但我真的很想知道在这种情况下什么是“最佳实践”


    已经感谢您的回答了。如果Alice不确定是谁发送了请求,那么Bob也不确定,因此这是一个双向问题,没有人确定对方的身份,您可以通过证书颁发机构的签名证书来解决。

    如果您发送带有签名的证书,此证书由证书颁发机构(第三方)的私钥签署,以确保客户端-服务器之间的连接安全并防止任何修改

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

    正如你已经发现的,它是https

    让我们想象一下,他将能够破坏HTTPS并窃取令牌

    如果有人能够破坏HTTPS,那么我们有一个更大的问题,而不是被盗的头。默认情况下,您可以信任https(某些国家的特殊情况除外)


    让我们假设通道不安全,例如,您可以分别对每条消息进行签名(对于不安全的通道,仅保护一个标头是不够的)

    尝试发送带有signature@Makdous谢谢我编辑我的问题。忘了指出TTL的sry。但是当有人能够偷到头球时,这没什么用?我的意思是,确保来自例如GoDaddy的证书无论如何都更好,并且无论如何都可以使用HTTPS。但我的意思是,如果失败了,那么有人就不能准备加密的内容,但他可以得到标题并伪造身份。比如说,他偷了标题,然后他必须修改时间戳以使接收者可以接受,这意味着他必须更改与标题一起发送的签名,这将使其无效,因为它是用私钥签名的,最后是证书,它将确保签名或解密的头中没有任何修改或更改,因此我发现有人窃取头并能够重用它几乎是不可能的。我完全同意这一点。当然,他不能修改它,但只要它有效,他仍然可以使用它。也许我没有指出它对下一个请求有好处Alice会相信它的Bob或者我的思维方式失败了?请记住,如果它封装在所有这些安全层中,中间人无法单独获取标题。这是真的,但正如我在帖子中所说,在这一点上,我可能想得有点过头了,但无论如何,谢谢你的回答,伙计,你说得对,如果HTTPS坏了,那将是一个巨大的错误。为此,我使用了一个例子,其中的内容将被单独加密。当然,如果爱丽丝的PK被偷了,你就可以自己在JWT上签名,爱丽丝会相信的。当然在这个世界上没有什么是安全的,我只是想知道它是否提供了一个处理JWT的好方法