【问题标题】:Include timestamp in hash, but how to compare hashes?在哈希中包含时间戳,但如何比较哈希?
【发布时间】:2013-10-13 03:57:31
【问题描述】:

客户端创建包含以下信息的哈希

  • 请求网址
  • 请求方法

密钥用于从该信息创建散列。他将此哈希与他的公钥一起发送到服务器,该服务器从数据库中检索客户端密钥。现在服务器创建自己的哈希,如果哈希匹配访问应用程序被授权。

但是当我添加

  • 时间戳

到哈希。如何比较哈希服务器端?哈希值会有所不同,因为服务器会在几毫秒后创建哈希值。假设我只想在 30 秒内发出请求时信任客户端。

有什么想法吗?

【问题讨论】:

    标签: algorithm security rest


    【解决方案1】:

    将时间戳与哈希一起传递,以便您计算哈希并将时间戳的值与当前时间进行比较,以验证您指定的 30 秒窗口。

    【讨论】:

    • 是的,似乎是唯一的方法
    • 您也可以不发送带有哈希的时间戳,并尝试在当前时间的 30 秒内使用每个可能的时间戳计算每个可能的哈希,但显然存在性能问题。跨度>
    【解决方案2】:

    一种选择是,您的时间戳不使用毫秒或秒精度,而是使用 30 秒精度,即在 30 秒内,每个时间戳都是相同的。

    因此,在发送请求后的 30 秒内,最多可能有 2 个时间戳。您可以简单地在服务器上计算两者并检查哈希是否匹配。

    这里的缺点是会有 30 秒的范围 - 您将接受一些 60 秒前的请求并拒绝一些 31 秒前的请求。但是,如果您对此感到满意...(您还可以为时间戳设置更高的精度,但代价是必须计算更多的哈希值)。

    而且对于每个请求都必须计算 2 个哈希值,显然会对性能产生影响。

    【讨论】:

    • 客户端和服务器也必须就当前时间达成一致。
    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多