pregunta básica sobre cifrado

3

Supongamos que lanzamos una contraseña regular en Scrypt para generar algunos datos. Scrypt nos permite especificar el tamaño de los datos de salida.

Mi pregunta es, para tomar un caso extremo, si solicitamos datos de 1 GB desde scrypt, ¿sería posible de alguna manera generar rápidamente los bytes finales de esta salida a partir de los primeros bytes?

En otras palabras, ¿hay un umbral de "x bytes" en el que yo "probablemente no deba pedir a scrypt más de x bytes"?

Actualización: Permítame ponerlo de otra manera: si le digo a scrypt que produzca 1 GB de datos, haga que los primeros x bytes del resultado estén disponibles para el público y use los últimos 48 bytes (como clave y IV) para cifrar datos confidenciales mediante AES-256-CBC, ¿estoy en problemas? ¿Problemas, en el sentido de que he derrotado el propósito de usar scrypt? ¿Depende la respuesta de x?

    
pregunta cryptonamus 03.07.2015 - 16:17
fuente

1 respuesta

3

No debe solicitar más resultados de scrypt de los que necesita. El costo de CPU / memoria de hashing scrypt no está dominado por el tamaño de salida, sino por el proceso de configuración (en la explicación de Wikipedia de Algoritmo , los valores "N" (costo de CPU / memoria) y "p" (parámetro de paralelización)). La salida se genera mediante una sola iteración de PBKDF2 , utilizando los valores de la fase de configuración de scrypt como la sal.

Por la misma razón, generar una salida parcial (por ejemplo, los últimos bytes) es solo ligeramente más rápido que generar toda la salida: es posible generar solo los subconjuntos seleccionados de la salida de PBKDF2 a bajo costo, pero necesita la totalidad La entrada estará disponible para hacer esto.

PBKDF2 genera su salida como una serie de bloques al concatenar y escribir de forma iterativa la contraseña, el valor de inicio y el número de bloque de 32 bits. Para una salida de menos de 2 ^ 32-1 bloques (128 GB para PBKDF2 según lo usado por scrypt ), revelar parte de la salida no tiene impacto en la seguridad del resto de la salida. Después de ese punto, sin embargo, la salida comienza a repetirse.

    
respondido por el Mark 08.07.2015 - 05:09
fuente

Lea otras preguntas en las etiquetas