使用非对称加密的JWT

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

我想问一下,在使用非对称加密的时候,我们用客户端的公钥加密数据,那么客户端就可以用自己的私钥解密数据了吧?

我刚刚找到了使用RSA签署JWT的教程,但是我发现他们使用服务器的私钥而不是客户端的公钥来加密数据,而且服务器的公钥是客户端共享的。

这到底安不安全呢?因为如果公钥因为可以共享而落入坏人之手,每个人都可以解密吧?

那么,这样签署jwt可以吗?

参考文献 教程1教程2

encryption jwt rsa encryption-asymmetric
1个回答
1
投票

在这种情况下,目的不是为了加密数据,让别人无法读取数据("保密性"),而是为了对数据进行签名,让其他拥有公钥的人可以验证你是否拥有私钥,你是否真的对数据进行了签名。在这种情况下,数据是JWT头和有效载荷的哈希值。私钥用于签名,因此只有一个实体--认证服务器--可以签名JWT。公钥用于签名验证,这样任何拥有公钥的第三方都可以验证JWT。公钥不能用于创建有效的签名。

所以是的,它是安全的!


1
投票

所以客户可以使用他们的私钥来解密数据,对吗?

是的,在加密数据的情况下,这是正常的方式。

但在这种情况下,它不是关于加密的东西,只有接收器应该加密,但关于签署令牌。我们的目标是,只有一个实例,例如认证服务器或一般的令牌发行者,可以签署令牌,但每个人都可以用公钥验证签名。

因为如果公钥因为可共享而落入坏人之手,每个人都可以解密它,对吗?

公钥不会落入坏人手中,因为它是公开的,每个人都可以看到它。令牌的内容(即有效载荷)是不加密的,只是base64url编码的,任何人都可以读取,例如在 https:/jwt.io..

那么,这样签jwt可以吗?

可以

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