我目前正在研究我正在开发的网站的用户认证协议。我想创建一个身份验证cookie,以便用户可以保持登录页面之间。揭秘Web认证
这是我的第一击:
cookie = user_id|expiry_date|HMAC(user_id|expiry_date, k)
凡ķ是HMAC(user_id|expiry_date, sk)
和SK是一个256位的密钥只知道服务器。 HMAC是SHA-256哈希。请注意,'|'是一个分隔符,而不仅仅是连接。
这看起来像这样在PHP:
$key = hash_hmac('sha256', $user_id . '|' . $expiry_time, SECRET_KEY);
$digest = hash_hmac('sha256', $user_id . '|' . $expiry_time, $key);
$cookie = $user_id . '|' . $expiry_time . '|' . $digest;
我可以看到它的脆弱,因为在陈述安全cookie协议重放攻击,但应该是音量攻击性和加密拼接。
问题:我在这里是否有正确的线条,或者是否存在我错过的大规模漏洞?有没有一种方法可以防御重放攻击,它可以与动态分配的IP地址配合使用,并且不会使用会话?
NOTES
最新的材料我已阅读:
该做什么和客户机认证的注意事项在Web 又名福等人的。
(https://pdos.csail.mit.edu/papers/webauth:sec10.pdf)
安全cookie协议 又名Liu等人。
(http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf)
,其扩展了先前的方法
硬化无状态会话曲奇
(http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/)
,其还扩展对以前的方法。
由于主题非常复杂,我只是在寻找安全专家的解答并且具有创建和破坏身份验证方案的实际经验。
这是一个很好的问题,我想知道你是否会考虑开始赏金来恢复问题并让它受到更多的关注。也许甚至可以通过电子邮件将问题链接发送给各种安全专家。 – 2013-02-11 14:02:20
您可能会从http://security.stackexchange.com/获得更多答案。 – Edu 2013-02-11 14:16:51
好主意。 http://security.stackexchange.com/questions/30707/demystifying-web-authentication-stateless-session-cookies – Joony 2013-02-11 14:27:52