为什么 JWT 签名中需要像 SHA-256 这样的哈希算法?

Why is hashing algorithm like SHA-256 required in JWT signature?

提问人:Naga Sudhir 提问时间:7/23/2023 更新时间:7/24/2023 访问量:165

问:

对于 JWT 的签名,颁发者使用私钥来创建 base64 编码标头和有效负载的哈希签名。 但是,验证 JWT 签名真实性的目的也可以通过仅使用 base64 编码的内容而不对其进行哈希处理来实现。 在 JWT 签名过程中使用 SHA-256 等哈希算法有什么意义?

我希望了解在 JWT 签名过程中使用哈希的目的。我在网上搜索,但找不到答案

安全 加密 哈希 JWT

评论

2赞 Topaco 7/23/2023
哈希通常在签名期间执行,即不仅在 JWT 的上下文中。为什么会这样?例如,请参阅为什么在使用 RSA 对消息进行签名之前对消息进行哈希处理?
0赞 Maarten Bodewes 7/24/2023
是的,这个答案也基本上否定了由于各种签名算法的空间限制而不需要散列的想法。所以这既是不可能的,如果消息足够小,它仍然不安全。哈希是签名算法的可配置要求,被认为是算法的一个组成部分。实际上,有时对多条消息进行哈希处理,将哈希放入数据结构中,然后使用另一个(运行)哈希函数(例如 CMS/PKCS#7 结构)对该数据结构进行签名。

答:

0赞 Naga Sudhir 7/24/2023 #1

像 SHA-256 这样的哈希算法接受 <2^64 位的输入并产生 256 位的输出。

因此,如果我们对哈希进行签名而不是对原始 JWT 内容进行签名,则签名大小将很小。 因此,在 JWT 中使用哈希的目的是实现压缩,从而减小签名大小