Contraseñas y función de hash criptográfico

Hemos presentado y discutido la importancia de las contraseñas hash . Para crear contraseñas hash seguras, debemos comprender alguna terminología relacionada con ella y luego veremos cómo crear contraseñas hash saladas seguras con un ejemplo en PHP. ¿Qué es la función hash criptográfica? Una función hash criptográfica es una clase especial de función hash que tiene ciertas propiedades que la hacen adecuada para su uso en criptografía. Es un algoritmo matemático que asigna datos de tamaño arbitrario a una string de bits de tamaño fijo (una función hash) que está diseñado para ser también una función unidireccional, es decir, una función que no es factible de invertir (Fuente: Wiki). Si alguna vez ha mirado los códigos de inicio de sesión, lo más probable es que haya visto a los desarrolladores usando hash(‘sha256’, $contraseña) o incluso md5($contraseña) para «proteger» las contraseñas de los usuarios. Los hashes de contraseñas generados de esta manera son ridículamente fáciles de descifrar; con algoritmos débiles y sin salar ni estirar en lugares, casi le está dando sus contraseñas a un atacante que obtiene acceso.

  • MD5 se diseñó inicialmente para usarse como una función hash criptográfica, se descubrió que sufre de vulnerabilidades extensas (Fuente Wiki ).
  • SHA-1 ya no se considera seguro contra oponentes bien financiados. En 2005, los criptoanalistas encontraron ataques en SHA-1 que sugerían que el algoritmo podría no ser lo suficientemente seguro para su uso continuado [Fuente: Wiki ].
  • SHA-2 , que no se usa con frecuencia por ahora, es el sucesor de SHA1 y reunió 4 tipos de funciones hash: SHA224, SHA256, SHA384 y SHA512. Funciona de la misma manera que SHA1 pero es más fuerte y genera un hash más largo.
  • BlowFish es un cifrado de bloque de clave simétrica, incluido en una gran cantidad de conjuntos de cifrado y productos de cifrado. Blowfish proporciona una buena tasa de cifrado en el software y hasta la fecha no se ha encontrado ningún criptoanálisis eficaz.

¿Qué es la salazón ? Un salt es un dato aleatorio que se utiliza como entrada adicional a una función unidireccional que «hashea» una contraseña o frase de contraseña. Para saltear una contraseña, le agregamos algunos caracteres aleatorios antes del hash para que la misma contraseña resulte en una string única cada vez que se hash, negando el ataque de la tabla del arco iris y haciendo que sea necesario descifrar cada contraseña individualmente. Las sales generalmente se almacenan junto con el hash y deben usarse al verificar la contraseña con los hash. La función password_hash() en PHP salta , estira y, por defecto, elige los mejores algoritmos hashpara usar en el momento de la ejecución, lo que significa que nunca tenemos que preocuparnos por elegir un algoritmo, o incluso actualizar nuestro código para usar un algoritmo más fuerte a medida que pasa el tiempo; si hay un algoritmo mejor disponible, la función comenzará a usarlo para nuevos hachís. Aquí hay un ejemplo de cómo usar esta función: 

PHP

<?php
// PASSWORD_DEFAULT is a constant designed to change
// over time as new and stronger algorithms are
// added to PHP.
// 'ub3rs3cur3' is password to be hashed.
// http://php.net/manual/en/function.password-hash.php
$hash = password_hash('ub3rs3cur3', PASSWORD_DEFAULT);
 
// password_verify() verifies that a password matches a hash
// http://php.net/manual/en/function.password-verify.php
echo password_verify('ub3rs3cur3', $hash)? 'Correct password!'
                                        : 'Incorrect password!';
?>

Los hashes comienzan con información de algoritmos, costos y 22 caracteres salt alfanuméricos, seguidos de la contraseña codificada:

$2y$10$Ka3/TxAu3UrGX4E8suGkKO4V43dK9CcF.BTT5P8OzOO7/PRjqFn0a
$2y$10$6kf8iQDut0i7AOx2TULi1O9I5yxdSfX/T7HRy2KbMmliaYo4fLR.i
$2y$10$fPEY1vxgP15wwpfPdA22WOhkMqvmLsZtfzn9sr3rCw2V4N1tbEyle
$2y$10$878u5R1q8tP3karLHwBbAOfax8ybPt43U3F6lG9oOV5w9yfj/k1cq

Eso es todo lo que se necesita para generar y verificar contraseñas razonablemente seguras en PHP. En el momento de escribir este artículo, Blowfish es el mejor algoritmo predeterminado y se genera un hash de 60 caracteres; sin embargo, como se indica en la nota de la página del manual de PHP (Referencias), crear un campo de bases de datos de contraseñas con una longitud de 255 caracteres puede no ser una mala idea. permitir futuras expansiones algorítmicas para la codificación segura. Fuentes: https://en.wikipedia.org/wiki/Salt_(cryptography) http://php.net/manual/en/function.password-hash.php http://stackoverflow.com/questions/30279321/how -para-usar-contraseña-hash https://en.wikipedia.org/wiki/Cryptographic_hash_function https://www.sitepoint.com/hashing-passwords-php-5-5-password-hashing-api/ Este artículo es contribuido porAkash Sharán . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *