首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何给JWK指纹?

如何给JWK指纹?
EN

Stack Overflow用户
提问于 2017-03-03 21:33:06
回答 2查看 1.4K关注 0票数 4

是否有标准、规范的方法为JWK创建指纹(也称为拇指指纹)?

从我所读到的情况来看,这个标准似乎没有定义应该如何指定kid,我觉得这很奇怪。对我来说,它是最重要的,因为它是一个确定性的值,而不是一个需要查找表的值,这样其他人就可以通过拥有公钥轻松地重新创建密钥id。

我知道SSH指纹和X.509指纹是标准化的,但对于所有使用JWK的环境(特别是浏览器)来说,这似乎并不是一个合适的解决方案,因为它们对于简单的实现来说太复杂了,包括能够操作这些(即伪造)的库将浪费大量的内存、带宽和vm编译时间。

更新

官方上称它为“指纹”,而不是“指纹”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-03 23:25:10

我想RFC7638会回答你的问题。

这个RFC描述了一种在JWK上计算哈希值的方法。

它实际上很容易实现:

  • 只保留所需的参数。对于RSA密钥:ktyne,对于EC密钥:crvktyxy
  • 按字典顺序排序这些参数:ektyn
  • 将参数和值计算到Json:{"e":"AQAB","kty":"RSA","n":"0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2 aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCi FV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65Y GjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n 91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_x BniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw"}
  • 使用SHA-256散列并将其编码到Base64 Url安全:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs
票数 7
EN

Stack Overflow用户

发布于 2017-03-03 23:26:44

我不相信有一个真正的标准,但这个话题已经在IETF邮寄档案中讨论过了。虽然谈话似乎有点偏向于规范JSON在总体上是否是一个好主意,但有一种方法作为标准指纹方法似乎是合理的。

  1. 从JWK中删除所有“元数据”字段(在本例中,“元数据”被定义为任何非必需的密钥,即除了"kty“和JWA RFC-7518定义的加密算法的参数)。
  2. 将已剥离的JWK转换为“规范的”JSON (按字典顺序排序键,没有前导或尾随空格,标记之间没有空格)。
  3. 计算摘要超过创建的JSON字符串。

对于规范JSON,我也不知道真正的标准,但我看到的所有源至少都同意上面列出的规则(这是与JWK所使用的对象类型相关的唯一规则)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42588786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档