Mar*_*rco 42
JOSE代表 JSON 对象签名和加密。它是一组用于使用基于 JSON 的数据结构对数据进行签名和加密的标准。换句话说,JWA、JWE、JWK、JWS和JWT都是JOSE的一部分。
长话短说:
更长的版本:
JWE(JSON Web Encryption)表示使用基于 JSON 的数据结构的加密内容。JWE用于在各方之间共享数据,并具有身份验证(确保数据来自其声称的发送者)、机密性(确保只有接收者可以解密数据)和完整性(确保数据在传输过程中不被第三方更改)。JWE支持对称密钥加密(用于加密和解密的单个密钥)和非对称密钥加密(用于加密的公钥,用于解密的私钥)。
JWS(JSON Web 签名)表示使用基于 JSON 的数据结构通过数字签名或消息身份验证代码 (MAC) 保护的内容。JWS用于在各方之间共享具有身份验证和完整性的数据。当不需要保密性时, JWS提供了与JWE相对应的轻量级版本。JWS支持基于对称密钥的 MAC(用于签名和验证的单个密钥)和基于非对称密钥的数字签名(用于签名的私钥,用于验证的公钥)。
JWE加密和JWS签名是使用加密算法执行的。这些算法及其相应的标识符在JWA(JSON Web 算法)中定义。
JWA中指定的加密算法使用加密密钥作为输入。JWK(JSON Web Key)使用基于 JSON 的数据结构定义加密密钥的表示形式。
JWT(JSON Web 令牌)是一种紧凑、URL 安全的方式,用于表示有关在两方之间传输的主题的声明。JWT是一种用于基于声明的身份验证的基于声明的身份形式。JWT可以选择通过JWE或JWS进行保护。JWT的最小表示由JOSE 标头和声明(在JWS上下文中也称为有效负载,在JWE上下文中也称为明文)组成。
以下是声明的三个JWT{ "foo": "bar" }值:
不受保护(无签名/加密):
{ "alg": "none" }eyJhbGciOiJub25lIn0.eyJmb28iOiJiYXIifQ标头 + "."+ 声明)保护通过JWS:
HS256 :(使用 SHA-256 的 HMAC){ "kty": "oct", "k": "AAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8" }{ "alg": "HS256" }eyJhbGciOiJIUzI1NiJ9.eyJmb28iOiJiYXIifQ.QqnxrmVYNzUZe2xJeSZIBMoELSfxW144gSAvdBTeXCo标头++"."有效负载++"."签名)保护通过JWE:
dir直接加密)A256GCM :(使用 256 位密钥的 AES GCM){ "kty": "oct", "k": "AAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8" }{ "alg": "dir", "enc": "A256GCM" }eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..69fkCssY6yzSKVtt.3kRb3CHlZdwB1kBrwQ.mkwzT_wBpi6W7mXgjbxmvw标头 + ".."+ 初始化向量 + "."+ 密文 + "."+ 身份验证标签)注意:JWE示例中使用“可能”一词是因为 IV(初始化向量)是随机生成的。因此,使用相同密钥通过JWE加密的相同JWT声明有许多有效变体。
| 归档时间: |
|
| 查看次数: |
9472 次 |
| 最近记录: |