我理解对称和非对称密钥之间的区别。我知道密钥用于计算签名然后验证它们。然而,潜水更深一点,我想了解更多,我在网上找不到。
给消费者的钥匙是否验证了内容?如果使用对称密钥,是否会让消费者能够更改JWT内容?
使用非对称密钥时,使用私钥或公钥计算签名?消费者是否获得公钥/私钥?
由于
答案 0 :(得分:18)
对称密钥只能以对等方式使用,因此接收方修改JWT是没有意义的,只有他和发送方拥有共享密钥(并且他是预期的接收方)。 / p>
非对称密钥签名(在JWT中以及一般情况下)由发送方使用私钥生成,并由接收方使用公钥进行验证。消费者/接收者只获得out_of_band(即通过另一种通信方式而不是用于交换安全数据的通信方式)的公钥。
答案 1 :(得分:1)
使用发件人的私钥签名的非对称JWT(JWS),令牌的接收者基本上接收明文中的有效负载(标题/声明) base64编码。这就是他们需要在安全套接字层(SSL)环境中传输的原因。为验证收到的签名,接收方使用公钥重新计算收到的有效负载的签名。如果两个签名,收到的签名和计算签名不匹配,则Payload无法信任 - 它无效 因此,这样的非对称JWS将不成为包含敏感"索赔的好方法。例如社会保险号,因为有效负载的内容未加密。 在JWT中包含这样的敏感数据可以使用Json Web令牌加密的JWE。在JWE中,整个Payload都是加密的。
答案 2 :(得分:0)
没有人会加密JWT的有效载荷。全部都是关于签名的! 只需使用公共密钥即可验证RSA或ECDSA(两种不对称)签名,对于对称签名的签名,您需要身份验证服务。
最常用的JWT签名算法:
HMAC + SHA256
RSASSA-PKCS1-v1_5 + SHA256
ECDSA + P-256 + SHA256