【问题标题】:JOSE: Signature requestJOSE:签名请求
【发布时间】:2018-06-01 14:22:19
【问题描述】:

JOSE 标准引入了签名 (JWS) 和加密数据 (JWE),它们描述了已签名或加密的数据包。但是我找不到“签名请求”或“加密请求”(可以使用 JWE 作为解密请求)。

我想问一个远程端,作为共享秘密所有权的证明,“使用这个算法和这个密钥给我签名这些字节”,其响应是一个 JWS 以及“使用这个密钥加密这些字节”响应为 JWE。

我试图不在这里重新发明轮子,在阅读 JOSE 规范时,我找不到类似的东西可以使用。这似乎是一种常见的请求类型,我想知道为什么/如何忽略它。

【问题讨论】:

  • FWIW 我想如果我要重新发明轮子,我会使用两部分的 JWS/JWE,比如由 header.message 组成的“请求”对象,如果 header 包含 @ 987654324@,这是一个JWS请求,如果header包含alg AND enc,这是一个加密请求。将这一点与 JWS/JWE 区分开来很容易,因为它只有两个部分,而不是 3 (JWS) 或 5 (JWE)。但正如我所说,如果可能的话,我不想重新发明轮子。

标签: webcrypto-api jose


【解决方案1】:

你是对的,这类事情的标准中没有任何内容。

我会质疑你为什么要这样做。您希望他们处理的有效负载内容中是否有重要内容?为什么远端不适合只给你发送一个 JWT?

【讨论】:

  • 因为我想让遥控器证明它拥有某个密钥。我能做到的最好方法是请求特定密钥的随机内容签名(以避免预言攻击/重放攻击),这是 JWS 的前两个部分。
  • @LiraNuna 听起来 JWT 可以满足您的需求。它的签名方式与 JWS 相同(JOSE 标头相同),并且在有效负载中有时间戳(iat、exp、nbf)和随机数(jti)以防止重放。如果由于某种原因远程端不知道要使用哪个密钥,您可以只发送一个密钥 id 并让它返回一个 JWT。
猜你喜欢
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多