Actualmente estoy investigando los protocolos de autenticación de usuario para un sitio web que estoy desarrollando. Me gustaría crear una cookie de autenticación para que los usuarios puedan permanecer conectados entre páginas.Demystifying Web Authentication
Aquí es mi primera fiesta:
cookie = user_id|expiry_date|HMAC(user_id|expiry_date, k)
Donde k es HMAC(user_id|expiry_date, sk)
y sk es una clave de 256 bits que sólo conoce el servidor. HMAC es un hash SHA-256. Tenga en cuenta que '|' es un separador, no solo concatenación.
Esto se parece a esto en 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;
puedo ver que es vulnerable a ataques de repetición como se indica en Un Protocolo de galleta segura, pero debería ser resistente a los ataques de Volumen y criptográfica de empalme.
LA PREGUNTA: ¿Estoy en la línea correcta aquí, o hay una gran vulnerabilidad que me he perdido? ¿Hay alguna manera de defenderse contra los ataques de reproducción que funcionan con direcciones IP asignadas dinámicamente y no usan sesiones?
NOTAS
El material más reciente que he leído:
pros y los de autenticación de cliente en la Web también conocido como Fu et al.
(https://pdos.csail.mit.edu/papers/webauth:sec10.pdf)
Un Protocolo de la galleta Secure aka Liu et al.
(http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf)
que se expande en el método anterior
endurecidos sin estado cookies de sesión
(http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/)
que también se expande en el método anterior.
Como el tema es extremadamente complicado, solo estoy buscando respuestas de expertos en seguridad con experiencia real en la creación y el corte de esquemas de autenticación.
Esta es una gran pregunta, y me pregunto si consideraría comenzar una recompensa para resucitar la pregunta y obtener más atención. Tal vez incluso envíe por correo electrónico un enlace a la pregunta a varios expertos en seguridad. –
Puede obtener más respuestas en http://security.stackexchange.com/ – Edu
Buena idea. http://security.stackexchange.com/questions/30707/demystifying-web-authentication-stateless-session-cookies – Joony