Duda con seguridad en python (Hashes etc)

Deoxys

Pues estaba en un momento sin saber qué hacer y se me ha ocurrido hacer una chorrada porque sí. Es un script que coge una contraseña y aplica hashes según la representación binaria para poder usar el hash final como contraseña.

Es una parida y estoy seguro de que no tiene pies ni cabeza, pero si alguien que controle de seguridad me puede decir por dónde se puede ir esto al garete pues me encantaría aprender del tema.

https://github.com/Achifaifa/pwenlarger

Cryoned

¿Por qué alguien iba a usar eso en vez de keepass y passwords aleatorios unido a protección por yubikey con onetimepassword + keyfile?

Necesitas guardar igualmente de forma segura autenticadores, no existe ventaja competitiva.

Además, no cifras el password en memoria si no he leído mal, ya tienes tu exploit xD

1 respuesta
Deoxys

#2 Hombre, no lo he hecho con intención de que la gente lo use, es más para enredar que otra cosa.

B

Si mal no entiendo lo que hace tu script es componer diferentes hashes en un orden determinado, no?

Yo no sabría romperlo, pero hay dos cosas que me hacen pensar que es un poco peligroso usar eso (ya se que has puesto que no lo usemos en el readme): usas md5 el cuál se considera totalmente roto y la imagen de los hashes es diferente. Si, por ejemplo, usas un hash que escupe strings de 32 bits al principio el resto de hashes escupen, efectivamente, 232 combinaciones distintas (aún usando sha256 o 512 luego). Ya te digo, no sabría romperlo, pero parece tener muy poco sentido. De hecho los hashes internamente ya hacen algo parecido a lo que haces: componer reiteradamente una función compleja. También creo que es un poco putada y requeriría de aclaración sobre cómo guardar la permutación de hashes de forma segura (es una variable con 720 posibles valores únicamente, lo cual lo complica). Y en temas de implementación, ya lo has puesto tú, guardas literalmente el contenido en memoria.

Añado: quizá es igual o más difícil que romper un único hash, y aun así, existen alternativas más sencillas y baratas computacionalmente que te sitúan en un lugar igualmente seguro.

Por otro lado, por qué es diferente o ventajoso esto frente a calcular un único hash? En muchos sitios se usa un único hash a modo de entropy juicer y no se muere nadie..

1
Deoxys

Uso MD5 por poner un ejemplo, como no lo va a usar nadie me da igual eso que algún otro.

Lo otro que comentas se me ocurrió después y le he estado dando vueltas. Si hay una colisión o un problema en uno de los pasos, todo lo que venga después va a dar el mismo resultado, y al final tienes las mismas posibilidades que te de lo más flojo que estés usando.

Diferente y ventajoso nada, creo. Excepto que puedes tratarlo como una función que tiene X hashes diferentes (Dependiendo de cuántos diferentes tengas y la combinación que uses). Es decir, sigues hasheando cosas, pero sin revelar qué hash estás usando. Aunque no sé si eso es una ventaja o a la gente se la refanfinfla xD

Usuarios habituales