¿Cifrar / bloquear encriptación usando la función XOR y Hash?

2

¿Se podría usar una función hash como sha1 o ripemd-160 para la generación segura de claves en un cifrado de secuencia / bloque? Obviamente, una clave repetida como "abc123abc123abc123" sería mala, y un teclado de una sola vez no sería práctico para grandes datos ... pero, ¿y si uno usara una función hash para derivar nuevas claves de la contraseña original como:

CÓDIGO DUMMY:

$password = "secure password here!";
$round =0;
while(true){
$key = sha1($password . $round);
$data = READ 40 BYTES OF DATA HERE
$result .= XOR($data,$key);
$round++;
}

No es que vaya a usar esto para nada, pero es curioso, lo que sería seguro / inseguro acerca de este método ... gracias ...

    
pregunta Daniel Valland 17.05.2014 - 20:23
fuente

1 respuesta

0

Definitivamente hay problemas con este esquema. Primero, parece ser determinista: cada vez que cifras una nueva secuencia con la misma contraseña, comienza con $round=0 . Por lo tanto, su transmisión es como un pad de una sola vez que se usa repetidamente: el muchos pad de tiempo que es fácilmente atacable al XORinging transmisiones encriptadas juntas y explotando patrones en texto plano subyacente. Por supuesto, esto podría solucionarse fácilmente haciendo algo como $round = generate_random_80_bit_number() y luego agregando este número de 80 bits al inicio de su texto cifrado.

Me preocupa un poco que las funciones criptográficas de hash se basen en Merkle-Damgard construcción que son susceptibles a ataques de extensión . La razón por la que HMAC no es H(K ++ m) , sino H(K1 ++ H(K2 ++ m)) . No he elaborado completamente los detalles sobre cómo explotar su esquema con números redondos secuenciales, pero podría imaginar ataques a la construcción de MD y el uso de rondas secuenciales adjuntas al final de un prefijo común.

    
respondido por el dr jimbob 17.05.2014 - 20:45
fuente

Lea otras preguntas en las etiquetas