Autor
|
Tema: [Resuelto] [Pregunta]: ¿cifrar contraseñas con "SHA-512" es una forma segura? (Leído 5,573 veces)
|
Leguim
Desconectado
Mensajes: 720
|
Buenas noches! sencillamente eso, ¿cifrar contraseñas con "sha-512" es una forma segura de guardar las claves de los usuarios? Caso contrario ¿Cual me podrían recomendar ya que no tengo mucha idea sobre el cifrado de datos?
¡Muchas gracias!
|
|
« Última modificación: 9 Septiembre 2019, 20:49 pm por #!drvy »
|
En línea
|
|
|
|
engel lex
|
primero que nada, sha no es un cifrado, es un hash segundo sha 256 es mas que suficiente y te ahorras la mitad de ese espacio en base de datos por ultimo, lo recomendable es usar hash+salt especialmente php tiene una función segura para guardar y comprobar la contraseña en hash blowfish https://www.php.net/manual/es/function.password-hash.phpy https://www.php.net/manual/es/function.password-verify.php
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
MinusFour
|
No uses SHA-512. Usa una función como bcrypt, scrypt, Argon2, PBKDF2, etc.
El problema con algoritmos como SHA-512 y similares es que un atacante puede precalcular millones de contraseñas rápidamente. Por lo menos un salt aleatorio por cada contraseña es MUY importante... Para que no te saquen TODAS tus contraseñas de una sola rainbow table.
Edit: Exagero un poco con "TODAS" porque no todo mundo elige contraseña débiles, pero te sorprendería saber cuantas si lo hacen.
|
|
« Última modificación: 4 Septiembre 2019, 18:11 pm por MinusFour »
|
En línea
|
|
|
|
Leguim
Desconectado
Mensajes: 720
|
¿Vendría siendo esta la función bcrypt? https://www.php.net/manual/es/function.password-hash.phpuno de los parametros que se le pueden poner es: Según como esta en el manual oficial de PHP: PASSWORD_BCRYPT - Usar el algoritmo CRYPT_BLOWFISH para crear el hash. Producirá un hash estándar compatible con crypt() utilizando el identificador "$2y$". El resultado siempre será un string de 60 caracteres, o FALSE en caso de error. Mientras tanto voy a seguir buscando.
|
|
|
En línea
|
|
|
|
engel lex
|
es ese, no es necesario pasar ese parametro, ese es por defecto...
y eso es uno de los modos mas seguros que puedes buscar
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Leguim
Desconectado
Mensajes: 720
|
es ese, no es necesario pasar ese parametro, ese es por defecto...
y eso es uno de los modos mas seguros que puedes buscar
¡Les agradezco mucho a los dos! EDIT: Testee la función y veo que el hasheado es aleatorio a medida que actualizo la pagina o ejecuto el código independientemente si cambia o no el dato que estoy intentando hashear me va a dar siempre códigos diferentes aunque el dato sea el mismo. ¿Como podría aplicar esto a un login? Porque cuando se usa sha-512 por ejemplo el hasheado es siempre el mismo para x dato/string que le pase, entonces lo que hago o hacía era hashear con el sha-512 la contraseña que el usuario ingresaba en el formulario login y despues una vez hashaeada la contraseña ingresada la comparaba con la contraseña que estaba en la base de datos (contraeña que esta hasheada) Pero en este caso como podría hacer porque siempre me va a dar diferentes, aunque el dato sea el mismo.
|
|
« Última modificación: 4 Septiembre 2019, 19:52 pm por MiguelCanellas »
|
En línea
|
|
|
|
MinusFour
|
¡Les agradezco mucho a los dos!
EDIT: Testee la función y veo que el hasheado es aleatorio a medida que actualizo la pagina o ejecuto el código independientemente si cambia o no el dato que estoy intentando hashear me va a dar siempre códigos diferentes aunque el dato sea el mismo.
¿Como podría aplicar esto a un login? Porque cuando se usa sha-512 por ejemplo el hasheado es siempre el mismo para x dato/string que le pase, entonces lo que hago o hacía era hashear con el sha-512 la contraseña que el usuario ingresaba en el formulario login y despues una vez hashaeada la contraseña ingresada la comparaba con la contraseña que estaba en la base de datos (contraeña que esta hasheada)
Pero en este caso como podría hacer porque siempre me va a dar diferentes, aunque el dato sea el mismo.
Lo que está pasando es que password_hash está generando un salt aleatorio por cada vez que lo llamas. Lo que significa que tienes 2 salts diferentes y por ende 2 hashes diferentes para un determinado string. Si le entregas el mismo salt a la función entonces recibes el mismo resultado. No te tienes que preocupar por eso porque puedes usar la función password_verify que hace todo por tí, extrae el salt del hash, vuelve a recalcularlo y hasta compara los strings en tiempo constante.
|
|
|
En línea
|
|
|
|
Leguim
Desconectado
Mensajes: 720
|
¿Me podrías dar algún código como referencia?
|
|
|
En línea
|
|
|
|
MinusFour
|
No hay nada complicado con estas funciones. $pass = 'micontraseña'; $mihash = password_hash($pass); //si viene de la DB obviamente no usas password_hash porque ya es un hash. password_verify($pass, $mihash); //true
|
|
|
En línea
|
|
|
|
Leguim
Desconectado
Mensajes: 720
|
Ya pude comprender mejor, gracias.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Las contraseñas más populares en Linkedin son "password", "123456" y "qwerty"
Noticias
|
wolfbcn
|
0
|
4,292
|
11 Junio 2012, 12:59 pm
por wolfbcn
|
|
|
Recibir un string del teclado de forma "segura"
Programación C/C++
|
NathanD
|
2
|
2,452
|
4 Diciembre 2012, 16:13 pm
por rir3760
|
|
|
Cifrar de forma segura una Pass en el Source
« 1 2 »
.NET (C#, VB.NET, ASP)
|
z3nth10n
|
16
|
9,664
|
1 Agosto 2013, 19:17 pm
por Novlucker
|
|
|
[Resuelto] [Pregunta]: Función "is_timestamp"
PHP
|
Leguim
|
7
|
3,181
|
21 Agosto 2019, 02:39 am
por Leguim
|
|
|
[Pregunta]: Reemplazar comillas de una forma más "elegante"
Desarrollo Web
|
Leguim
|
0
|
5,814
|
6 Septiembre 2021, 22:05 pm
por Leguim
|
|