Hash de contraseña con estado interno grande

1

scrypt fue diseñado para usar una gran cantidad de memoria, y si no se usara toda esa memoria, sería mucho más lento calcularlos. De cualquier manera, contrarresta los ataques de hardware personalizados, donde no suele haber tanta memoria disponible.

Estaba pensando, ¿por qué molestarme en permitir un intercambio de memoria de tiempo? ¿No sería mejor utilizar una función hash con un estado interno muy grande (que se puede ajustar) por supuesto? El tamaño del estado interno determina los requisitos de memoria y el número de rondas es el factor de trabajo.

    
pregunta EPICI 13.09.2017 - 05:17
fuente

3 respuestas

3

Creo que has descrito SHA-3 , donde el capacity c (ya un en menor medida, rate r ) son exactamente el "estado interno muy grande (que se puede ajustar, por supuesto)" del que estás hablando.

No tienes que subirlo muy alto (512 bits / 1024 bits) para obtener tus niveles de seguridad de 256/512 bits.

No obstante, recuerde que el objetivo de la criptografía no es hacer que el atacante haga mucho trabajo, es hacer que el atacante haga mucho más trabajo que el usuario legítimo . El hash implica realizar operaciones costosas en el estado interno, por lo que aumentar ciegamente el tamaño del estado interno afecta al usuario legítimo tanto como al atacante.

Los grandes requisitos de memoria de scrypt están destinados a explotar un recurso que es abundante para el usuario legítimo (un servidor que maneja una pequeña cantidad de solicitudes de inicio de sesión a la vez), pero escaso para el atacante que se ejecuta en plataformas de hardware masivamente en paralelo. >     

respondido por el Mike Ounsworth 13.09.2017 - 05:33
fuente
0

Se llama "compensación" por una razón. :)

Como sugiere Mike Ounsworth, existe una asimetría entre el atacante y el usuario legítimo. Pero también hay asimetría en los casos de uso legítimos .

Por ejemplo, su implementación de scrypt podría ajustarse para autenticar un pequeño porcentaje de sus usuarios en paralelo en condiciones normales. ¿Pero si hay una interrupción o interrupción de modo que todos los usuarios se desconecten y luego (tal vez automáticamente) intenten reconectarse simultáneamente? Si ese modo de falla es un caso de uso potencial para su aplicación, es posible que deba ajustar sus parámetros ajustables de scrypt en consecuencia.

Pero si solo está utilizando Scrypt para proteger un solo volumen cifrado de alta sensibilidad en un sistema personal, entonces una demora de unos segundos puede ser aceptable para usted, y deseable para aumentar el costo de un ataque.

Esa es la compensación.

    
respondido por el Royce Williams 13.09.2017 - 07:58
fuente
0

Hasta cierto punto, una compensación de tiempo-memoria es una consecuencia inevitable de tener un estado interno grande. La gente que se encuentra en CS.SE probablemente podría encontrar una explicación más formal, pero básicamente, si su hash de contraseña llama para computar, almacenar y más tarde, utilizando un gran número de valores intermedios, un atacante con memoria limitada siempre puede simplemente calcular esos valores a pedido.

    
respondido por el Mark 21.01.2018 - 09:58
fuente

Lea otras preguntas en las etiquetas