【问题标题】:Why use JSON Web Tokens (JWT) over just normal encryption为什么使用 JSON Web Tokens (JWT) 而不是普通加密
【发布时间】:2020-07-11 16:29:44
【问题描述】:

JWT 旨在允许在客户端需要与后端通信时交换防篡改令牌。它还可以通过在令牌中缓存会话数据来避免调用后端数据存储。

但我可以使用标准加密算法轻松加密会话数据并将其发送回客户端,客户端只需在每次调用时返回它。

那么,我通过使用 JWT 真正获得了什么?如果有的话,将算法类型放在 JWT 中似乎是一个安全漏洞,因为它告诉黑客使用了哪种加密,从而减少了解密令牌所需的算法类型。通过仅以某种专有格式(不一定是 JSON)对我的会话数据进行编码,甚至使用自定义加密算法,这难道不是比使用 JWT 更好的解决方案吗?或者我会因为不使用 JWT 而错过一些东西吗?

【问题讨论】:

  • 标准化软件的好处,更重要的是,经过彻底审查和测试的软件对我来说似乎是不言而喻的,尤其是在密码学方面。如果它不适合你,我不确定你期望什么样的答案。 Knowledge of the used cryptographic primitives doesn't compromise security。您的“自定义加密算法”(及其实现)安全的可能性几乎为零。
  • 在安全性方面,实际上成为标准并不能使某些东西变得可行。我非常怀疑任何银行在他们的应用程序中使用 JWT。无论您如何证明使用标准的合理性,向黑客披露您的加密算法都是不好的。金融机构不太可能这样做。

标签: encryption jwt


【解决方案1】:

首先:

向黑客透露你的加密算法是不好的

不,不是。您永远不应该尝试通过使用非标准算法来增强安全性。这就是“默默无闻的安全”。正如 kerckhoffs 原则所说,算法的安全性应该只基于密钥的保密性,而不是算法。

关于实际问题: 您应该使用 JWT(或任何其他标准化方法)而不是仅加密会话数据(这基本上只是构建您自己的令牌机制),因为它支持更多开箱即用的功能。与实施和测试自己的解决方案相比,使用 jwt 可能需要更少的时间。

您可能还没有意识到许多与安全相关的方面(例如令牌重放攻击等)。因此,很难以任何目前已知的方式实现这样一个安全的系统。最好使用经过测试且值得信赖的解决方案,只要它们能够提供您需要的功能。

更多信息:https://security.stackexchange.com/questions/180208/what-is-the-difference-between-jwt-and-encrypting-some-json-manually-with-aes

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 2023-03-08
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2020-08-29
    • 2018-09-05
    相关资源
    最近更新 更多