【问题标题】:Time stamp in hMAC authenticationhMAC 认证中的时间戳
【发布时间】:2016-05-11 06:54:23
【问题描述】:

作为 RESTful Web API 服务器,我们为客户端提供客户端 ID 和密码。我认为客户端使用 clientid + hMAC(clientid hashed by password) 进行身份验证就足够了。

我查看了一些建议使用时间戳甚至更多信息作为基本字符串的文档。我只是无法理解那是什么意思。

任何大师都可以帮助解释一下时间戳究竟有助于防止攻击或其他任何事情吗?

【问题讨论】:

    标签: authentication timestamp hmac


    【解决方案1】:

    问题在于,如果没有时间戳,任何已签名的消息都将永远有效。如果攻击者设法捕获了一条消息,他们可以无限地重放它,即使不会泄露您用于签署该消息的秘密。

    如果您添加时间戳,则消息将在短时间内过期并防止这种情况发生。您将选择在服务器应用程序中遵守时间戳的时间。当您确实记得考虑“未来”时间时,因为客户的点击可能稍早于您,并且会出现在您的应用程序中。

    【讨论】:

    • 所以时间戳实际上有助于保护机密,因为如果时间改变,hMac 也会相应改变。如果没有时间戳,攻击者不会关心这个秘密,因为 hMac 总是一样的。对吗?
    • 但万一攻击者可以捕获即使使用时间戳加密的消息,他仍然可以模拟完全相同的消息。那么这种加密是什么意思呢?
    • 这不是加密,任何获得副本的人都可以阅读该消息。 hmac 签名的重点是能够验证消息来自受信任的来源并且未被篡改。使用时间戳,攻击者只能在短时间内重复该消息,从而使其更难被利用。他们需要破坏实时发送的消息,而不是能够暴力破解诸如捕获的旧 HTTPS 流量之类的东西来获取您的消息。
    • 感谢 Blargle。这确实有道理。
    • 如果认证服务器根据本地安全策略提供 API 密钥过期时间怎么办?
    猜你喜欢
    • 2013-06-05
    • 2021-09-14
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多