首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机标识符与标识符加HMAC

随机标识符与标识符加HMAC
EN

Security用户
提问于 2022-08-18 07:44:21
回答 2查看 80关注 0票数 1

假设我有一个只能使用特定链接才能访问的资源。我可以使用256位随机标识符生成链接,例如,只有拥有链接的用户才能访问资源。恶意用户将无法访问链接,因为在如此大的空间中正确猜测有效ID是不可行的。

相反,我可以使用128位随机标识符,然后使用服务器才知道的密钥生成该ID的128位HMAC (让我们暂时忽略我们是否可以拥有128位HMAC)。

一个好的HMAC创建一个均匀分布的输出,因此在这两种情况下,我们将有效地有一个256位的随机数。

HMAC版本更安全吗?你能解释一下吗?

EN

回答 2

Security用户

回答已采纳

发布于 2022-08-18 12:50:36

具有256位随机标识符的Go

根据您(理想的)假设,两者的安全性应该是相同的。但是,我认为,从技术上讲,<#>HMAC解决方案可能会引入不足,因为它的值来自前128位部分的值。虽然正确地实现密码功能可以防止任何人产生有效的链接,但现实世界的事故(密钥暴露)或密码分析的进展可能会导致这种情况的发生。

在出现链接妥协的情况下,第一种方法很容易地允许您生成一个新链接。基于HMAC的解决方案将迫使您生成一个新的128个随机部分及其HMAC,将您的链接公开到可能的已知-明文攻击。密钥展览将要求您更改您的密钥并重新生成您的所有链接。再加上密钥管理、正确的密码实现等。

更复杂并不意味着更安全。

票数 1
EN

Security用户

发布于 2022-08-19 15:57:29

因为只有服务器知道HMAC的密钥,所以它是唯一能够验证链接真实性的人。

这可以用来区分随机猜测和一度有效的链接。如果连续的无效猜测未能通过此检查,IP可能会受到严厉的惩罚。它也可以用来短路去寻找一个记录。不确定单个HMAC是否比查找更快。

至于总的随机性,虽然HMAC的输出是一个相当随机的分布,但在给定输入和键的情况下是确定性的。因此,前128位中的每一个数字都映射到一个256位的输出。虽然它在总体上看起来是随机的,但在普通观察者看来,只有2^128个值。而在一个完全随机的方案中,前128位是独立于最后128位的.

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/264177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档