JWT密钥-非对称和对称



我理解对称密钥和非对称密钥之间的区别。我知道密钥是用来计算签名然后验证的。然而,再深入一点,我想了解更多一点,我在网上找不到。

是否向消费者提供密钥以验证内容?如果使用对称密钥,消费者不就可以更改JWT内容了吗?

当使用非对称密钥时,签名是使用私钥还是公钥计算的?是否为消费者提供了公钥/私钥?

对称密钥只能以点对点的方式使用,因此接收方修改只有他和发送方拥有共享密钥的jwt(并且他是预期的接收方)是没有意义的。

非对称密钥签名(在jwt以及一般情况下)由发送方使用私钥生成,并由接收方使用公钥进行验证。消费者/接收者只获得超出频带的公钥(即通过与您用于交换安全数据的通信方式不同的另一种通信方式)。

使用发送方私钥签名的非对称jwt (JWS),令牌的接收方基本上接收明文中的有效载荷(报头/声明),而不是base64编码。这就是为什么它们需要在安全套接字层(SSL)环境中传输。为了验证接收到的签名,接收方使用公钥重新计算接收到的有效载荷的签名。如果两个签名(接收签名和计算签名)不匹配,则负载不能被信任——它是无效的因此,这种非对称JWS 不是是包含敏感"声明"(如社会安全号码)的好方法,因为有效负载的内容没有加密。在JWT中包含这些敏感数据时,可以使用Json Web令牌加密JWE。在JWE中,整个有效负载是加密的。

没有人会加密JWT的有效负载。最重要的是签名!RSA或ECDSA(两种都是非对称的)签名可以只用公钥进行验证,对于对称签名,您需要auth-service。

常用的JWT签名算法:

HMAC + SHA256
RSASSA-PKCS1-v1_5 + SHA256
ECDSA + P-256 + SHA256

查看更多https://www.rfc-editor.org/rfc/rfc7518#section-3

最新更新