当前位置: 首页 > 知识库问答 >
问题:

JWT令牌的成功解密是否保证消息的真实性并使签名无用?

尹英华
2023-03-14

在旧方案中,我们使用对称加密进行数字签名,而不加密整个令牌,现在决定首先——转移到非对称密钥,其次——不签名,而是加密令牌。当接收者恢复令牌的主要结构时,接收方成功解密是否证明了令牌的真实性?这些保证是否比签名时弱?

共有2个答案

寇宏义
2023-03-14

一般来说,不,成功的解密不能证明消息没有被伪造或篡改,除非消息的完整性已经用数字签名或消息认证码单独验证过。这是因为基本上所有加密方案在某种程度上都是可塑的。唯一重要的例外是经过认证的加密方案,其中包括签名或消息认证码,作为加密方案本身的一部分。

特别是,非对称加密方案通常甚至不试图提供任何消息完整性的保证,因为它们假设任何人都可以使用公钥创建有效的消息。为了证明消息不是由攻击者发送(或修改)的,它也需要签名。

东方乐
2023-03-14

加密仅保护您的有效负载不被非预期收件人读取。它不能保护它免受恶意方的修改。

参见数字证书:加密和签名的区别是什么

 类似资料:
  • 我目前正在使用Vapor开发Swift后端。我的iOS客户端使用新的iOS 13功能“使用Apple登录”。当用户登录时,我会得到一个身份令牌(访问令牌),这是一个由Apple签名的有效JWT令牌。这将在所有正在进行的通信中发送到服务器,以验证服务器提供的某些路由。 在服务器上,我想通过验证令牌签名来验证发送的令牌是否确实由Apple签名,并且不是由某些恶意用户专门创建的。Apple提供了一个HT

  • 我正在制作一个javascript客户端,它使用JWT令牌连接到Api。在服务器端没有问题,我可以创建令牌对其进行签名,然后验证签名,从而确保没有人篡改令牌。 但我如何在客户端做到这一点。我可以解码JWT令牌并查看头、负载和签名。但是如何在客户端验证签名?是否有用于此的库,如何将公钥传输到客户端? 如果我不验证签名,我怎么知道令牌没有被篡改?

  • 我正在使用Azure AD对spring boot应用程序进行用户身份验证。我创建了一个应用程序来获取登录用户的访问令牌(令牌创建者应用程序)。在此应用程序中,“/token”API从@RegisteredAuth2AuthorizedClient读取访问令牌,并返回与响应相同的令牌。 然后,我必须使用返回的令牌作为RESTAPI的承载令牌,用于具有相同客户端id和相同配置的另一个应用程序。 但当

  • 问题内容: 在我的rails应用程序中,我在向api的ajax发布中收到“警告:无法验证CSRF令牌的真实性”。 app / views / layouts / application.html.haml : ajax发布 : 问题答案: 假设您已使用Rails 标记设置了CSRF令牌,则请求的令牌将在meta标记中可用: 由于使用的是jQuery,因此可以通过为密钥调用以下值来将令牌传递给AJA