¿Tengo razón al cambiar el algoritmo predeterminado en una aplicación web?

1

Numerosos clientes me han dicho que mi sugerencia de cambiar el algoritmo en una aplicación web no aumenta la seguridad. He intentado razonar que si los archivos no han sido expuestos, el atacante tiene que adivinar el algoritmo.

Hace unos días, estaba evaluando el sitio de un amigo y señalé algunas vulnerabilidades de SQLi. No tuve acceso a los archivos. Como anteriormente, mi amigo me dijo que estaba equivocado al sugerir un algoritmo diferente a pesar de que puede manejar las concesiones a un algoritmo diferente.

Mi razonamiento con él fue que un atacante no conocería tu algoritmo, por lo que descartaste a una minoría de atacantes simplemente cambiando algo. Si usaran una herramienta como hashcat e intentaran romper el hash con un ajuste preestablecido, no los llevaría a ningún lado. Aunque esto es seguridad a través de la oscuridad, funciona de una manera que usted se defendió solo un poco si tiene otro SQLi.

Insistió en no cambiar el algoritmo porque cualquiera que explote el sitio es una bandera blanca automática. Él asume que si se recupera un hash, todos se tomarán el tiempo para resolverlo.

El hash predeterminado es md5. Sugerí PBKDF2 o bcrypt.

Solo como una doble opinión: ¿Quién, en teoría y actualidad, es correcto en esta situación?

¿Es correcto que ponga una bandera blanca si alguien recupera el hash de un administrador? ¿Sería correcto al decir que esto es un uso práctico de la seguridad a través de la oscuridad? ... O si no es seguridad a través de la oscuridad en absoluto?

    
pregunta JAP 13.01.2014 - 16:20
fuente

1 respuesta

6

Cambiar el algoritmo "porque el atacante no lo sabrá" es una muy mala razón para cambiar un algoritmo. Para empezar, el atacante puede inferir que usará un algoritmo para el cual existe soporte en el código, lo que limita las opciones posibles, y el algoritmo a menudo se puede desambiguar en función de lo que se puede ver en la salida (si la salida es 160 bits, eso es SHA-1, no MD5).

Sería una ilusión grave que el cambio del algoritmo realmente conlleve, ya que el "razonamiento del atacante no lo adivina", aumenta significativamente la seguridad. No se puede asumir que los algoritmos sean secretos, porque la información sobre el algoritmo se filtra en todas partes: en el código, en el código comportamiento (por ejemplo, el tiempo de ejecución), en la cabeza de los desarrolladores ... y en el espacio de posibles los algoritmos son minúsculos.

Ahora cambiar de MD5 a PBKDF2 o bcrypt es una muy buena idea . No porque el atacante suponga que es MD5 y "nunca adivine" que se utilizó bcrypt; de hecho, la salida de bcrypt tiende a ser obvia a este respecto (tienen una codificación específica de salida + sal como una cadena que indica claramente que se usó bcrypt). Pero porque un MD5 básico es una forma terrible de hash de contraseñas. Si desea almacenar contraseñas con hash, al menos hacerlo correctamente , lo que significa, en este momento, PBKDF2 o bcrypt.

    
respondido por el Tom Leek 13.01.2014 - 16:34
fuente

Lea otras preguntas en las etiquetas