我使用的 API 对每个请求都需要一个随机数。如果 HTTPS 请求不可重播,请参见此处https://stackoverflow.com/a/2770133/2800469,那么 HTTPS API 需要 nonces 的原因是什么?
是否只是为了确保合法消费者不会多次发出请求?
我使用的 API 对每个请求都需要一个随机数。如果 HTTPS 请求不可重播,请参见此处https://stackoverflow.com/a/2770133/2800469,那么 HTTPS API 需要 nonces 的原因是什么?
是否只是为了确保合法消费者不会多次发出请求?
HTTPS 流量无法重放,但其内容可能会。浏览器可能会多次发送请求,因为用户已经回击或者因为连接在最后一次尝试时超时或类似情况。在这种情况下,您需要另一个 nonce 来检测重复的 API 请求。因此,您可以避免例如发送两双鞋。
注意区别。不会重放 HTTPS 数据包。浏览器可能使用新的 HTTPS 连接或仍然使用相同的连接,但它只是发送新数据包。
作为一名 Web 开发人员,我不禁认为开发团队实现应用程序层句柄比使用较低级别实现细节的接口更容易。作为参数,它紧挨着服务器需要的所有其他输入,并且不会因缓存、负载平衡器、IP 漫游切换、浏览器错误处理等而变得复杂。由于开发人员控制前端和后端的代码,显式随机数允许他们忽略中间,并且在开发过程中不必与其他团队(如基础设施)协调。
对称加密中使用的随机数,在 TLS 的情况下,既不是计数器也不是用于生成密文的伪随机值,而是共享密钥加密/解密过程的一个组成部分。
虽然加密/解密的随机数的必要性因密码模式而异,但 NIST 出版物 SP 800-38C ( http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38c.pdf ) 在这种情况下AES CCM 模式加密将 nonce 定义为验证解密数据及其相关身份验证标签所必需的参数。