API 响应的证明
proof of API response
假设我可以访问 https 天气 API。
假设我在星期四 17/08/2017 23h30 查询它的健康状态并且 API 回复 OK(简单的 OK http 代码)。
作为客户,我以后需要证明服务确实回复了我这个数据。
我正在考虑要求 API 添加发送数据的加密签名 + 时间戳,以证明他们在特定时间确实响应正常。
是不是矫枉过正?有更简单的方法吗?
包含当前 date/time 甚至添加第三方时间戳机构颁发的时间戳的数字签名是确保内容实际发布日期
的适当方式
总的来说,在HTTP请求上实现数字签名系统并不是那么简单,需要考虑很多因素:
您将签署哪些内容:headers、有效负载、附件?
是二进制内容还是文本?因为算法和签名格式会不同
如果是文本,您必须对内容进行规范化,以避免在客户端验证签名时出现编码问题。您还需要定义一个签名算法来计算要签名的内容
流式传输附件是否也需要签名?。你打算如何处理大文件?
您打算如何将签名附加到 https 响应:特殊 header,负载中的附加属性?
服务器将如何分发签名证书?您应该将其包含在客户端的信任库中
但是,如果您只想证明服务响应是 OK/FAIL,那么服务器只需要在有效负载上添加数字签名(或根据 header 的串联计算) s) 但如果你想实现更复杂的东西,我建议你看一下 Json Web Signature (JWS)
假设我可以访问 https 天气 API。 假设我在星期四 17/08/2017 23h30 查询它的健康状态并且 API 回复 OK(简单的 OK http 代码)。
作为客户,我以后需要证明服务确实回复了我这个数据。
我正在考虑要求 API 添加发送数据的加密签名 + 时间戳,以证明他们在特定时间确实响应正常。 是不是矫枉过正?有更简单的方法吗?
包含当前 date/time 甚至添加第三方时间戳机构颁发的时间戳的数字签名是确保内容实际发布日期
的适当方式总的来说,在HTTP请求上实现数字签名系统并不是那么简单,需要考虑很多因素:
您将签署哪些内容:headers、有效负载、附件?
是二进制内容还是文本?因为算法和签名格式会不同
如果是文本,您必须对内容进行规范化,以避免在客户端验证签名时出现编码问题。您还需要定义一个签名算法来计算要签名的内容
流式传输附件是否也需要签名?。你打算如何处理大文件?
您打算如何将签名附加到 https 响应:特殊 header,负载中的附加属性?
服务器将如何分发签名证书?您应该将其包含在客户端的信任库中
但是,如果您只想证明服务响应是 OK/FAIL,那么服务器只需要在有效负载上添加数字签名(或根据 header 的串联计算) s) 但如果你想实现更复杂的东西,我建议你看一下 Json Web Signature (JWS)