public-key-encryption - JWT 如何实现公钥加密?

标签 public-key-encryption jwt auth0

这实际上分解为许多单独的问题以了解整个过程。

  • 据我了解,JWT 只是三个 JSON 对象,它们彼此分开编码为 base64。然后 Base64 字符串用句点分隔。这纯粹是为了“短消息”的目的吗?
  • 这些包括标题、“有效负载”和签名。任何拦截它们的人都可以 100% 地读取 header 和有效负载。它们只是可以解码为 JSON 并读取的 base64 字符串。
  • 然后 MAGIC:服务器收到无法解码的 SIGNATURE。签名实际上是 header 、有效负载和 key 的散列。因此,服务器获取 header 、有效负载和 ITS OWN key ,并进行哈希处理。如果此哈希与消息附带的签名匹配,则该消息是可信的。如果签名不匹配,则消息无效。

  • 我对这一切有什么问题吗?这里的两个单独的键在哪里?似乎用于加密消息的 key 和用于解密消息的 key 是相同的。这是我问题的根源——如果你什么都不回答,请帮忙。

    除此之外,我想知道我是否正确理解了这个过程?此外,“同意公钥”的标准在哪里,然后在这里发生公钥/私钥的“混合”交易?我所看到的只是用于编码/解码的相同 key 。但是协议(protocol)是什么时候发生的呢?在 .NET 和 Auth0 btw 的上下文中查看此内容,但总体而言是 q。

    如果有人有兴趣稍后看到这个 q,我观看/阅读/使用的随机内容:

    JWT 总结:https://scotch.io/tutorials/the-anatomy-of-a-json-web-token

    公钥/不对称密码学:https://youtu.be/3QnD2c4Xovk

    哈希:http://www.webopedia.com/TERM/H/hashing.html

    Base64:http://en.wikipedia.org/wiki/Base64

    最佳答案

    首先,JSON 对象签名和加密标准 (JOSE) 使用 base64url 编码,而不是直接的 base64 编码,略有不同。

  • JWT header 和有效负载是 JSON 对象,但签名不是,这是一个 base64url 编码的二进制 blob
  • 任何拦截它的人都可以使用整个 JWT,它的全部 3 个部分
  • 您正在描述一种对称 key 算法,其中发送者和接收者使用相同的共享 key ;这只是 JWTS 的一个选项,另一个选项是使用公钥/私钥对进行签名/验证/加密/解密

  • 与所有加密货币一样, key 协议(protocol)需要在带外进行。

    关于public-key-encryption - JWT 如何实现公钥加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443556/

    相关文章:

    encryption - 如何在 OpenSSL/libcrypto 中导出公钥?

    flutter - 如何在 Flutter 中使用 JWT 和 WebSocketChannel

    node.js - 在 CouchDB 中实现 "Database per user pattern"(Cloudant <-> PouchDB)

    reactjs - 如何在loopback.js中处理客户端 react 路由

    android - 如何从使用 react-native init 创建的 react-native 应用程序生成 AndroidManifest.xml

    c++ - 如何初始化 RSA::PrivateKey?

    ssh - 了解使用 PKI 的 ssh 登录

    node.js - 如何在flutter(解密)和Node(加密)中实现RSA?

    javascript - 如何实现安全 "Remember me"

    jwt - 如何使用在线工具手动验证 JWT 签名