¿El hashear una contraseña y luego dividirla en varios campos de db aumentará la seguridad? [duplicar]

0

He estado leyendo sobre el hash de contraseña, y parece que hay muchas opiniones sobre "Lo que está bien".

Tengo curiosidad acerca de la posibilidad de almacenar una división de una contraseña Hashed en varios campos de usuario. El significado es "hash" primero la contraseña, luego se divide, ya que parece dividir una contraseña de texto sin formato, haciendo que su longitud sea más pequeña y luego el "hashing", debilitará la seguridad.

Digamos que tengo un campo de contraseña, y luego otro campo en otra parte de la tabla que también tiene un hash. Cuando trato de ver si la contraseña ingresada es la misma, ¿podría tomar los 2 valores de hash que se dividieron, combinarlos y ver si eso es igual al ingresado? Por supuesto, me gustaría incluir muchos valores en mi base de datos, por lo que tener un "valor hash" aleatorio no parece sospechoso en este caso.

  

Ejemplo

     

Contraseña del campo: SA234j23kljfs

     

Otro campo: 23lkj4as89dfADk

     

Contraseña de usuario: SA234j23kljfs23lkj4as89dfADk

También siento curiosidad por poder agregar datos a los campos para confundir aún más a un atacante. Creo que esto sería una forma de SAL?

  

Ejemplo

     

Contraseña del campo: SA234j23kljfs | dSl92slC3lD29

     

Otro campo: 23lkj4as89dfADk | 298fskASDlk2sl

     

luego divide los datos adicionales detrás |

     

(Tenga en cuenta que | existe solo como un marcador de posición para este ejemplo y se dividiría en algún tipo de lógica para dividir correctamente).

     

Contraseña de usuario: SA234j23kljfs23lkj4as89dfADk

¿Hay algo malo con cualquiera de estos enfoques? Seguramente siento que esto sería un problema para cualquier atacante.

EDITAR: decidí editar algunos detalles y explicar mejor / dar mejores ejemplos de lo que estoy tratando de hacer.

Parece que muchas de las respuestas tenían que ver con dividir el texto sin formato, y luego mezclar cada pieza, en lugar de agrupar todo, luego dividir ...

Entiendo por qué dividir el hashing es un riesgo, pero ¿por qué dividir una contraseña ya hash sería la misma?

Por lo que he leído, se supone que los hashes no tienen ninguna relevancia entre sí, por lo que los hashes "hola" y "world" juntos no deberían estar "helloworld", ¿o está mal?

Gracias.

    
pregunta XaolingBao 29.05.2016 - 00:37
fuente

2 respuestas

4

Esto haría que la contraseña sea MENOS segura.

Considere una contraseña de 16 caracteres compuesta por una secuencia de letras, números y símbolos elegidos al azar. Por sí misma, esta contraseña es básicamente "irreconocible" para todos los propósitos y propósitos, incluso si su base de datos de contraseñas está filtrada, suponiendo que hable la contraseña. Probablemente incluso puedas usar algo estúpido como MD5 y estar bien contra la mayoría de los atacantes. Suponiendo un billón de adivinanzas de contraseña por segundo, aún tardaría millones de años en descifrar esta contraseña.

Pero ahora, aplicamos su método de almacenamiento. Supongamos que tomas los primeros 8 caracteres y los hash en un campo, luego toma los siguientes 8 caracteres y los hash para el siguiente campo.

Ahora tienes dos contraseñas de 8 caracteres. Cada contraseña se puede descifrar individualmente en unos pocos minutos a unas pocas horas, dependiendo del hash que use, si alguna vez se filtró su base de datos de contraseñas, simplemente probando cada secuencia posible de 8 caracteres.

No suponga ninguna ayuda, ya que la contraseña se "esconde" en dos campos diferentes. En el mejor de los casos, tienes seguridad a través de la oscuridad; está confiando en el hecho de que el atacante puede no saber qué campos combinar juntos. En el peor de los casos, el atacante que logra robar su base de datos de contraseñas, también logrará robar el código del sitio web y sabrá de inmediato qué campos tomar. Un principio básico de la seguridad de la información es asumir siempre que el atacante sabe cómo funciona su sistema y asegurarse de que el sistema seguirá siendo seguro a pesar de ese conocimiento.

    
respondido por el Ben 29.05.2016 - 03:44
fuente
2
  La contraseña del campo

y la "X" contienen una parte de la función de hash, probablemente una división de los primeros caracteres Y en el campo de la contraseña, y el resto en el campo "X". Combine y verifique si es correcto.

     

¿Hay algo malo con este enfoque? Seguramente siento que esto sería un problema para cualquier atacante.

Sí, esto debilita gravemente la seguridad del hash. En lugar de tener que resolver un problema difícil, ahora el atacante solo tiene que resolver dos problemas exponencialmente más simples.

Suponiendo que solo usas caracteres en minúsculas y el atacante intenta atacar con fuerza bruta, en lugar de tener que probar todas las posibilidades 26**16 = 4.36087429 × 10**22 , el atacante ahora solo tiene que probar las posibilidades 26**8+26**8 = 417654129152 , que es 104413532288 veces más débiles que el hash de los 16 caracteres completos de una sola vez.

Esto es similar a la vulnerabilidad de hash NTLM .

    
respondido por el Lie Ryan 29.05.2016 - 03:50
fuente

Lea otras preguntas en las etiquetas