API响应的证明

时间:2017-08-17 12:27:11

标签: api cryptography digital-signature proofs

假设我可以访问https天气API。 假设我在星期四17/08/2017 23h30查询其健康状况,并且API回复OK(简单的OK http代码)。

作为客户,我需要在将来证明该服务实际上已经回复了我这些数据。

我正在考虑要求API添加发送数据的加密签名+时间戳,以证明他们在特定时间实际上已做出响应。 这有点矫枉过正吗?有没有更简单的方法呢?

1 个答案:

答案 0 :(得分:2)

包含当前日期/时间或甚至添加由第三方时间戳机构颁发的时间戳的数字签名是确保内容实际在日期发布的适当方式

通常,在HTTP请求上实现数字签名系统并不是那么简单,您必须考虑许多元素:

  • 您要签署哪些内容:标题,有效负载,附件?

  • 是二进制内容还是文字?因为算法和签名格式会有所不同

  • 如果是文本,则必须对内容进行规范化,以避免在客户端验证签名时出现编码问题。您还需要定义签名算法来计算要签名的内容

  • 您是否还需要在通过流发送附件时对附件进行签名?你打算如何处理大文件?

  • 您如何将签名附加到https响应:特殊标头,有效负载中的其他属性?

  • 服务器如何分发签名证书?您应该将其包含在客户端的信任库中

但是,如果您只想证明服务响应是OK / FAIL,那么服务器只需要在有效负载上添加数字签名(或者在标题的串联上计算),但是如果您想要实现某些功能更复杂我建议你看一下Json Web Signature(JWS)