我目前正在研究我正在開發的網站的用戶認證協議。我想創建一個身份驗證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