del*_*bel 8 security authentication encryption http
我正在寻找关于HTTP请求的身份验证和签名(完整性检查)的最佳实践的一些指导/意见.我对于使用的语言和技术相当开放,但基本参数和要求如下:
我们考虑过的事情:
如果某些管理员决定将此标记为重复,那么我认为其他Q不能完全解决此问题的全部范围:
假设客户端和服务器之间是 1-1 关系,带有计数器的 HMAC 将解决这个问题。
客户端和服务器有一个共享的 128 位密钥。
客户端发送的消息具有带有密钥的 HMAC 和一个计数器。建议使用 SHA-256,因为 SHA-1 即将淘汰(SHA-1 HMAC 仍然被认为是安全的,但这是另一回事)。
例如
example.com?message=foo&counter=1&hmac=35ed8c76e7b931b06f00143b70307e90f0831682e7bdce2074ebb5c509d16cfb`
Run Code Online (Sandbox Code Playgroud)
(此工具用于此帖子并带有 secret bar。)
HMAC 是通过 计算的message=foo&counter=1。
现在,一旦 HMAC 已被服务器验证并检查计数器,服务器的计数器就会增加到 2。现在服务器将不接受任何计数器小于 2 的已验证消息。
可以使用JSON Web 令牌,以便您以标准格式执行上述操作。您可以对多个客户端执行上述操作,但是您需要跟踪每个客户端的计数器服务器端,并且客户端必须在消息中标识自己。如果您决定为每个客户端使用不同的密钥,则管理共享机密是最棘手的部分。