我必须将 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 端点的主要内容,如果未能解决你的问题,请参考以下文章

音视频 HLS协议和m3u8格式分析

音视频 HLS协议和m3u8格式分析

k8s patch type简介

Diffie-Hellman Key Agreement Protocol资源管理错误漏洞(CVE-2002-20001)漏洞修复

为不同类型的项目数组正确的 JSON Schema

网络协议:SDP