¿Este método de hashing de contraseña es seguro?

-3

He creado un método de hashing personalizado para ayudar a que las contraseñas de mis usuarios sean más seguras si la base de datos se filtrará.

El método de encriptación es así:
Un método toma una entrada de 1 carácter, obtiene el valor ASCII del carácter, lo desplaza una cantidad de bytes de una manera y una cantidad de bytes de la otra forma, y luego regresa como %código%. Después de esto, toda la cadena mezclada se procesa utilizando BCrypt con una sal de 22 caracteres usando 16 rondas.

¿Esto hace que las contraseñas sean más difíciles de descifrar? Dado que un ataque de diccionario no funcionaría sin mi método hash que ha llevado

    
pregunta Tar 12.07.2012 - 08:44
fuente

6 respuestas

10

Si su plan es mantener en secreto los detalles de su método de encriptación, no , no funcionará y es una muy mala idea. Si no tiene el método revisado por pares, nunca estará seguro de que no pierde información y deja las contraseñas más débiles.

Por ejemplo, su preprocesamiento puede no ser tan resistente a las colisiones como espera, lo que conlleva la posibilidad de que un atacante pueda ingresar una contraseña incorrecta y aún así coincidir con el hash porque su contraseña proporcionó la misma entrada a BCrypt . Es muy poco probable que pueda evaluar este riesgo por sí mismo y tener un nivel de confianza que pueda tener si solo tomara un algoritmo bien publicitado y lo utilizara tal como está.

Ambos no pueden tenerlo sujeto al escrutinio público necesario para garantizar que sea seguro y mantenerlo en secreto ante un posible atacante.

    
respondido por el David Schwartz 12.07.2012 - 13:03
fuente
3

Tenga en cuenta que si un atacante desea obtener acceso a su contraseña, probablemente tendrá éxito.

Estás utilizando BCrypt, que es una de las mejores formas de hash de contraseña hoy en día. Pero tu receta de cocina, justo antes de eso, es IMO, inútil.

Supongamos que el atacante obtiene la contraseña de texto sin cifrar de bcrypt, todo lo que tiene que hacer ahora es lo contrario a su función:

  

Un método toma una entrada de 1 carácter, obtiene el valor ASCII del carácter, lo desplaza una cantidad de bytes de una manera y una cantidad de bytes de la otra manera, y luego regresa como $ shift_left. $ original_char. $ shift_right

Solo usar BCrypt combinado con sal + pimienta es un gran comienzo.

¡No olvide que la complejidad es el enemigo de la seguridad !

    
respondido por el Cyril N. 12.07.2012 - 09:55
fuente
3

Si el atacante tiene control sobre base de datos y código , agregar caracteres codificados no ayudará en absoluto (solo una operación más despreciable). Si solo tiene la base de datos sin código (Inyección de SQL), reconocerá el hash de bcrypt y ahora puede hacer fuerza bruta con bcrypt, pero debido a la codificación no hay contraseñas débiles. Es como si el texto codificado fuera la contraseña para descifrar, por lo que un diccionario no sirve de nada.

Esto es seguridad por oscuridad, pero será efectiva mientras no se conozca el código. Puede obtener el mismo efecto más fácilmente, agregando una sal codificada (corrección) fija, antes de usar bcrypt con la sal única.

    
respondido por el martinstoeckli 12.07.2012 - 13:40
fuente
3

Te daré la respuesta más corta: No

Los esquemas de hash cocinados en casa son peligrosos porque, si se hacen mal, pueden tener altas tasas de colisión (al reducir drásticamente el espacio de direcciones de salida). Cualquier operación que realice en estos 'hashes' a partir de entonces no agregará más seguridad.

    
respondido por el CodeExpress 13.07.2012 - 22:13
fuente
3

Déjame hacer una analogía. Tu pregunta es como: si tengo una puerta de acero reforzado, ¿la hace aún más fuerte si la pinto en rojo? Después de todo, cualquier ladrón tendría que atravesar ambos la puerta de acero y la capa de pintura. Y cualquier cosa roja es obviamente mejor.

Para mejorar la analogía, su pintura roja podría ser ácida o acelerar la corrosión, lo que potencialmente podría debilitar la puerta.

Así que no lo hagas.

    
respondido por el Thomas Pornin 24.02.2013 - 20:43
fuente
1

La respuesta corta es NO .

¡NUNCA HAGAS TU PROPIO ALGORITMO DE CORTE!

Los algoritmos de cocina casera para el hashing nunca son seguros y, por lo tanto, son una muy mala idea. También es una mala idea combinar dos algoritmos, ya que puede hacer que las cosas sean aún más inseguras .

Hay muchos otros algoritmos que podrías usar. Puedes usar Bcrypt, Scrypt, sha2, sha512 , PBKDF2 y muchos más.

Estos algoritmos se han probado y fabricado durante años y aún no se han encontrado muchos defectos y están formados por muchos profesionales de la seguridad que saben exactamente lo que están haciendo.

Le recomendaría que utilice los algoritmos PBKDF2 o bcrypt para almacenar sus contraseñas.

Eche un vistazo aquí por qué lo recomiendo:

¿Algún experto en seguridad recomienda bcrypt para el almacenamiento de contraseñas? ?

    
respondido por el Arnar Freyr 21.07.2016 - 00:20
fuente

Lea otras preguntas en las etiquetas