gpt4 book ai didi

sql - 针对哈希 token 的 SQL SELECT 定时攻击的对策

转载 作者:行者123 更新时间:2023-12-02 13:40:39 25 4
gpt4 key购买 nike

我们希望创建一个 Web API,用户在购买我们的软件许可证时通过电子邮件接收哈希 token (196 位),然后可以使用此 token 将其试用软件版本激活为“完整”软件。 Web API 负责接收哈希 token 并确认或拒绝用户升级到完整版本。

省略大量关于此的细节,似乎以这种方式接收哈希 token ,然后仅使用 SQL SELECT 检查该 token 是否在数据库中会暴露定时攻击。攻击者可以尝试通过测量响应时间来猜测数据库中 token 中的各个字节。

如何防范这种情况?一般而言,特别是在 Ruby on Rails 中。

到目前为止的想法:

  • 实现恒定的查找时间(如何实现?)
  • 添加随机噪声(多少?)
  • 将 token 拆分为关键部分(32 位)和其余部分。仅对 key 执行查找,并对其余 key 进行安全比较

最佳答案

我的工作解决方案使用第二个索引 token_key 字段,它是 token_hash 的前 8 个字节:

def valid_token(given_token_hash)

# don't look for hash, because of SQL timing attacks
token_key = given_token_hash[0,8]
token = ActivationToken.find_by_token_key(token_key)

# Even if not found in database, we should pretend to take some time
token_hash = token.nil? ? "123e4567-e89b-12d3-a456-426655440000" : token.token_hash

if (!secure_compare(token_hash, given_token_hash))
return nil
end

return token
end

关于sql - 针对哈希 token 的 SQL SELECT 定时攻击的对策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26077553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com