¿Por qué 8ms es un objetivo para el hash?

5

Actualmente estoy desarrollando un pequeño proyecto en PHP, y como involucra la autenticación de usuarios, he estado investigando qué opciones tengo con respecto al hashing. Me decidí por PBKDF2 principalmente debido a su naturaleza iterativa, flexibilidad con algoritmos hash y extensibilidad.

Lo que he estado leyendo es que 8ms (o 0.008 segundos) es una meta para generar un hash. ¿Por qué es este valor específico el objetivo? Entiendo el razonamiento detrás de hacer que tome más tiempo generar un hash, pero ¿por qué 8ms específicamente? Es simplemente un buen valor equilibrado entre el tiempo empleado y la seguridad, ¿o existe una razón más específica?

Teórico

Supongamos que tengo un servidor que puede hacer 6400 iteraciones con SHA256 con una longitud de clave de 6 caracteres, con una sal que tiene X caracteres de longitud y una contraseña que tiene Y caracteres de longitud en poco menos de 9 ms. No estoy seguro de si es 'el miedo' el que me ha inculcado, pero no lo considero suficiente principalmente por el bajo número de iteraciones y la longitud de la clave extremadamente corta, a pesar de estar saturada de salsas con lo que es para todos los intentos. Propone un algoritmo seguro. Lo que es 9ms en mi sistema será significativamente menor en un sistema dedicado a "romper" el hash. Una vez más, estos valores son simplemente teóricos, no los analices demasiado.

Entonces, asumamos que voy a 64000 iteraciones con una longitud de clave de 60. Esto toma casi 90 ms para calcular, y lo considero seguro para todos los propósitos, tanto debido a su alto número de iteraciones, como a la clave de salida la longitud y el tiempo que lleva generarla.

Más concretamente, tomaría 10 veces más calcular el último hash (comparado con el primero) independientemente del sistema en el que se esté calculando, a pesar de que es ~ 91% más largo que la "regla de 8 ms" cuando se ejecuta en el entorno original.

Entonces, ¿de dónde vino originalmente este valor de 8 ms y por qué motivos se recomienda exactamente? ¿Los 8ms se basan en el tiempo de cálculo de su entorno, o se calculan por otros medios (por ejemplo, a través de una aplicación hash dedicada que se ejecuta en una GPU)?

8ms Fuente de recomendación #

Fuente de recomendación de 8ms # 2

    
pregunta Scott Pritchard 05.06.2013 - 21:40
fuente

2 respuestas

6

No hay una "regla de 8 ms". Hay una ecuación que fue explicada por Thomas Pornin (su primer enlace) que declaró en ese ejemplo que para 32 bits de la calidad de las contraseñas y un atacante con 200 veces más recursos de computación que su sistema de hash dedicado al craqueo de hash completaría la tarea en un mes si le tomara 8 ms ejecutar un hash. Debe ajustar esas suposiciones sobre la seguridad de la contraseña, los recursos del atacante y su dedicación de recursos para satisfacer sus necesidades.

    
respondido por el Jeff Ferland 05.06.2013 - 22:07
fuente
2

Bien, según el enlace / fuente que proporcionó: no hay un valor específico correcto del número de iteraciones PKBDF2.

Lo que Thomas Pornin afirma en su respuesta es que puede hacer algunos cálculos aproximados para estimar un buen equilibrio entre la potencia de la computadora que utilizará en su sistema, para autenticar a los usuarios y cuánto estaría dispuesto a gastar un atacante. tratando de romperlo.

Todos los números que usó en su respuesta son suposiciones: asume que cualquiera que te ataque tendrá 100 computadoras, y que cada computadora tendrá el doble poder de cómputo que la tuya. Entonces, para tomar un mes intentando romper su sistema, su cálculo da que 8 ms en su sistema, por generación de hash , significará que el atacante pasará un mes entero en un ataque de fuerza bruta.

La otra fuente que mencionas también es una referencia a esta primera respuesta.

¿Es eso una meta? Quizás, si estás en el escenario que él describe.

¿Por qué molestarse con los 8 ms? Porque es un número para empezar, ya que esa respuesta es muy explicativa sobre cómo se alcanzó el 8 ms.

Si espera tener menos de 125 inicios de sesión por segundo, puede aumentar el número de iteraciones del PKBDF2 y estar más seguro ...

    
respondido por el woliveirajr 05.06.2013 - 22:09
fuente

Lea otras preguntas en las etiquetas