Hashing vs. cifrado: c├│mo se almacena su contrase├▒a en el servidor

4
Hashing vs. cifrado: c├│mo se almacena su contrase├▒a en el servidor
5 (100%) 6 votos

Hashing vs. cifrado: c├│mo se almacena su contrase├▒a en el servidor 1

Digamos que configura una cuenta en VerySecureWebsite.com. Usted escribe su direcci├│n de correo electr├│nico y contrase├▒a y configura su cuenta. Poco despu├ęs, recibir├í un correo electr├│nico inform├índole que, ir├│nicamente, el sitio web ha sido pirateado y los nombres de usuario y contrase├▒as de todos los usuarios, que estaban almacenados en texto sin formato, ahora est├ín a la venta en la web oscura. Mientras comienzas a cambiar la contrase├▒a en todas tus cuentas (solo usas una, monstruo), te preguntas: "┬┐No es una mala idea? ┬┐No deber├şa mi contrase├▒a estar en alg├║n tipo de c├│digo secreto para que los hackers no puedan simplemente leerla? "

Est├ís en lo correcto. Cualquier aplicaci├│n web o servicio que use un sistema de inicio de sesi├│n de nombre de usuario / contrase├▒a debe almacenar las contrase├▒as de sus usuarios usando un hash con sal, posiblemente incluso con un hash lento con sal, tal vez con un pimiento. Si esto comienza a sonar m├ís como un desayuno que como una criptograf├şa, no se preocupe: a diferencia de su contrase├▒a (con suerte), el almacenamiento seguro de contrase├▒as no es demasiado dif├şcil de descifrar.

Texto simple y cifrado básico.

UsernameEntered PasswordStored form
UnwittingUser Contrase├▒a debil Contrase├▒a debil

Almacenar las contrase├▒as de texto simple en una base de datos conectada a Internet es una idea bastante mala: si la base de datos se piratea, cualquiera que haya reutilizado una de esas contrase├▒as ahora est├í en riesgo. Y todav├şa un n├║mero inquietante de sitios web todav├şa lo hacenProbablemente porque las actualizaciones de seguridad son m├ís para el cliente que para la empresa. Si desea probar si un sitio est├í haciendo esto, intente seleccionar la opci├│n "Olvid├ę mi contrase├▒a". Si solo le env├şan su contrase├▒a en lugar de un enlace de restablecimiento, se almacenar├í en texto sin formato.

Recomendamos:  C├│mo los astronautas manejan su salud mental en el espacio - desde la EEI y m├ís all├í
Nombre de usuario Contrase├▒a ingresada Encriptada con la clave AES-128: WeakKey
UnwittingUser Contrase├▒a debil 38MkoXVXoKe01uAOROBLpQ ==

El cifrado puede parecer una forma segura de almacenar contrase├▒as, pero en realidad es solo un paso por encima del texto simple. Una contrase├▒a encriptada generalmente se puede decodificar con una clave, y si los hackers pueden encontrarla o adivinarla, la encriptaci├│n es in├║til.

Hashing> cifrado

El nombre de usuario ingres├│ la contrase├▒a que se debe cifrar con SHA-256
UnwittingUser Contrase├▒a debil Contrase├▒a debil 252E2406732308F9A7
B378ED94E78467D14
077D19C8282443FCD
3D6190FCABFA

Una funci├│n de hash es b├ísicamente un cifrado de una sola v├şa: convierte la contrase├▒a de texto simple en un c├│digo secreto, pero no hay una clave para volver a convertirla, lo que significa que nunca puede derivar la contrase├▒a real de la versi├│n hash.

As├ş es como la mayor├şa de los sitios web seguros administran sus contrase├▒as:

El usuario crea una cuenta. La contrase├▒a del usuario se ejecuta a trav├ęs de la funci├│n de hash y se almacena en la base de datos. Cada vez que el usuario inicia sesi├│n, la base de datos hace un hash de la contrase├▒a que ingres├│ y verifica si el hash ingresado coincide con el hash que tiene en el archivo. el usuario puede iniciar sesi├│n

Con un hash, la aplicaci├│n / sitio nunca almacena su contrase├▒a real en ning├║n lugar, y un pirata inform├ítico que ingresa la informaci├│n solo obtendr├í una lista de letras y n├║meros que no se pueden descodificar. Dependiendo de qu├ę tan fuerte sea el algoritmo, estos hashes pueden ser bastante dif├şciles de descifrar.

Sin embargo, los hashes no son a prueba de hackeo. Todo lo que un atacante debe hacer es ejecutar un diccionario de contrase├▒as potenciales a trav├ęs de la funci├│n hash, luego comparar esos hashes con los hashes en la base de datos. Cuando dos hashes coinciden, el pirata inform├ítico solo puede ver qu├ę contrase├▒a gener├│ ese hash.

Recomendamos:  Mira c├│mo el dron subacu├ítico PowerRay es atacado por un tibur├│n

Para ahorrar tiempo y poder de c├│mputo, muchos atacantes solo usan una tabla de b├║squeda (o una "tabla de arco iris", una versi├│n de tablas de b├║squeda que ahorra espacio), una tabla generada previamente con posibles contrase├▒as y sus hashes. Puedes intentarlo hashing una palabra de texto simple y entonces utilizar una tabla de b├║squeda en el hash t├║ mismo; no es demasiado dificil Esencialmente, si su contrase├▒a es bastante com├║n, el hash de esa contrase├▒a probablemente ya est├ę en una tabla de b├║squeda. Esta es una gran raz├│n para no usar contrase├▒as comunes.

Hashes salados> Hashes

UsernameEntered PasswordString para ser hashHashed con SHA-256,
sal = XcyKn42, antepuesto
UnwittingUser Contrase├▒a debil XcyKn42WeakPassword 13EB660FF7FBD29A728FC5
92297D78DF19AFF8797363
15FBF1F1C4B7123BD10C

A diferencia de las babosas, la sal hace que los hashes sean más fuertes. Dado que todo el hash cambia incluso si solo se cambia una letra de la palabra de texto sin formato, todo lo que un sitio debe hacer para frustrar las tablas de búsqueda es agregar un texto sin formato adicional a la contraseña antes de que se rellene. El atacante podrá leer la sal de texto sin formato ya que está almacenada en la base de datos, pero los obliga a volver a calcular todas las combinaciones posibles de posibles contraseñas y sales.

Por supuesto, los hashes salados todav├şa pueden ser rajados. Los piratas inform├íticos pueden simplemente agregar el salt a la contrase├▒a que est├ín adivinando, mezclar la combinaci├│n y esperar a que aparezcan coincidencias, un ataque de diccionario est├índar. Dado que las GPU modernas pueden hacer miles de millones de conjeturas por segundo, esto no es del todo factible, pero hace que el proceso sea mucho m├ís molesto. En su defecto, los ataques de fuerza bruta son lentos pero muy efectivos.

Hacer hashes aún más fuerte: otras tácticas

UsernameEntered PasswordString para ser hashHashed con Bcrypt,
sal = XcyKn42, antepuesto,
12 rondas
UnwittingUser Contrase├▒a debil XcyKn42WeakPassword $ 2y $ 12 $ 6OleutQBO2iPoNvg
pyDndOU26Lqt9Y34f6PLEOx
mCELP5GoswrJT.
Recomendamos:  C├│mo votar por el ganador de OT2018 desde el m├│vil

Los algoritmos de hashing lento, como PBKDF2 o bcrypt, utilizan una t├ęcnica conocida como "estiramiento de teclas" para ralentizar los ataques de diccionario y de fuerza bruta. B├ísicamente, esto implica configurar la funci├│n hash para que se repita un cierto n├║mero de veces (aunque es un poco m├ís complejo que simplemente ejecutar la misma cosa una y otra vez), de modo que para alcanzar el hash correcto, debe usar mucha computaci├│n poder. Si un sitio est├í haciendo todo esto, su seguridad es bastante buena.

UsernameEntered PasswordString para ser hashHashed con Bcrypt,
sal = XcyKn42, antepuesto,
12 rondas,
pimienta = | 4 | / | @ p3pp3r, anexado
UnwittingUser Contrase├▒a debil XcyKn42WeakPassword | 4 | / | @ p3pp3r $ 2y $ 12 $ njmWr5UMydCzdCE44ElW /
OIfYp2PH9sgonCATyVY.OVKSpmoSaZlu

Para mayor seguridad, tambi├ęn puede "salpicar" sus hashes, que con suerte ya est├ín salados. Una pimienta, como una sal, es un conjunto de valores que se adjunta a la contrase├▒a antes de hacerla picada. Sin embargo, a diferencia de una sal, solo hay un valor de pimienta, y se mantiene en secreto, separado de las sales y los hachas. Agrega otra capa de seguridad al hash salado, pero si el atacante logra encontrarlo, ya no es muy ├║til ya que el atacante solo puede usarlo para calcular nuevas tablas de b├║squeda.

No hagas un hash de tu hash

La seguridad de las contrase├▒as ha hecho grandes avances, y tambi├ęn lo ha hecho el arte de descifrar esa seguridad. Desafortunadamente, los humanos siguen siendo malos en la administraci├│n de contrase├▒as y las bases de datos no actualizan la seguridad tan a menudo como deber├şan. En general, suponga que cada vez que crea una cuenta, la contrase├▒a se almacena con una seguridad relativamente d├ębil. Si su contrase├▒a es com├║n o una palabra del diccionario, existe un riesgo bastante alto de ser descifrado. Haga que sus contrase├▒as sean largas, mezcle letras, n├║meros y s├şmbolos, y ayudar├í a las funciones hash a hacer su mejor trabajo.

Cr├ęditos de la imagen: Funci├│n hash

┬┐Es ├║til este art├şculo? si no