我必须将 https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-10 实施到 Springboot REST 端点
Posted
技术标签:
【中文标题】我必须将 https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-10 实施到 Springboot REST 端点【英文标题】:I have to implement https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-10 to Springboot REST endpoints 【发布时间】:2021-12-25 20:03:21 【问题描述】:我是密码学新手,我想在我的 spring-boot 应用程序中实现https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-10(来自客户端的要求)。客户要求我实现这样的标头,
Authorization: Signature keyId="Test",algorithm="rsa-sha256",
signature="SjWJWbWN7i0wzBvtPl8rbASWz5xQW6mcJmn+ibttBqtifLN7Sazz
6m79cNfwwb8DMJ5cou1s7uEGKKCs+FLEEaDV5lp7q25WqS+lavg7T8hc0GppauB
6hbgEKTwblDHYGEtbGmtdHgVCk9SuS13F0hZ8FD0k/5OxEPXe5WozsbM="
我不知道基于此规范的身份验证签名生成。 任何人都可以帮助我以简单的方式理解这些术语
-
KeyId 及其用途是什么?
什么是签名值,如何生成?
我不知道帮助我理解这一点
【问题讨论】:
【参考方案1】:您在此处看到的是另一层保护,以防有人破坏 TLS。文档是这样说的:
对于高安全性交易,在 HTTP 标头允许客户端确保即使传输 通道已被破坏,消息的内容已 没有被破坏。
所以你真正想做的是使用某种消息验证码 (MAC),这样即使主动攻击者有能力操纵发送的消息,MAC 也不会匹配,整个消息将被拒绝服务器。
我浏览了文档,实现这些东西并不是一件小事。但看起来已经存在可以帮助您实现这一目标的库。谷歌的第一击:
https://github.com/tomitribe/http-signatures-java https://github.com/joyent/java-http-signature关于keyId:
keyId
字段是一个不透明的字符串,服务器可以 用于查找验证签名所需的组件。它 可以是 SSH 密钥指纹、机器可读密钥数据的 URL, LDAP DN 等。密钥管理和keyId
分配已结束 本文档的范围。
简而言之 - 你决定它会是什么。它必须是能够让您识别主题并能够首先验证签名的东西。
【讨论】:
以上是关于我必须将 https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-10 实施到 Springboot REST 端点的主要内容,如果未能解决你的问题,请参考以下文章
Diffie-Hellman Key Agreement Protocol资源管理错误漏洞(CVE-2002-20001)漏洞修复