send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Passwords Seguras

  • 3 Respuestas
  • 2459 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5267
  • Actividad:
    48.33%
  • Reputación 26
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Agosto 31, 2015, 09:43:37 am »

Muchas veces, al inyectar un sitio web nos topamos con passwords en texto plano: MD5 o SHA-1


Hay programadores -que quizás por ignorancia- no conocen este tipo de ataques y lo peligroso que pueden ser.

Además del SQLi, existen varias formas de poder obtener las credenciales del administrador de un sitio. Incluso si logran arrebatar la base de datos del mismo.

Algo que podemos hacer, es generar passwords seguras y en caso de que alguien logre obtener el hash, no pueda descifrarlo o le resulte en extremo complejo.

De esta forma, cada contraseña que generemos, será totalmente diferente a las demás y la única forma de averiguarla será obteniendo el algoritmo para generarla.

¿QUÉ ES UN HASH?

Un hash es una cadena de texto que se logra aplicando un proceso matemático o algorítmico con la finalidad de transformar ese texto en una nueva cadena totalmente inentendible. Una vez obtenido este hash, es difícil volver al texto original sin conocer el proceso que se aplicó para obtenerlo.

MD5 y SHA-1 son uno de los tantos tipos de hashes que existen, el motivo por el cual los menciono, es porque son los más utilizados hoy en día. Lo malo de ellos es que existen muchas formas de descifrarlos por fuerza bruta o diccionario, y de esta forma recuperar el texto plano.

Algunas reglas básicas para generar una contraseña segura pueden ser:

Usar siempre una semilla o salt.
La semilla debe ser los más aleatoria posible.
Utilizar una semilla diferente para cada password.
No almacenar la semilla en ninguna parte.

SALT

La finalidad del salt es generar un string aleatorio y añadirlo al password. De esta forma, aumentará la longitud del password y también la complejidad para descifrarlo.

El ataque de Rainbow Table (Tabla Arco Iris), solo funciona cuando las passwords han sido hasheadas con el mismo salt. Si usamos el mismo salt para todas las passwords correremos el riesgo de que puedan romperlas. Es por ello, que lo aconsejable es crear un salt distinto para cada password.

Para generar salts aleatorios en PHP, lo mejor es usar las funciones mcrypt_create_iv o openssl_random_pseudo_bytes

A continuación, un ejemplo, de su uso:

Código: PHP
  1. <?php
  2. $user = $_POST['user'];
  3. $pass = $_POST['pass'];
  4. $salt = You are not allowed to view links. Register or Login('=', '.', You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(20)));
  5. $hash = You are not allowed to view links. Register or Login('SHA512', $pass, $salt);
  6. You are not allowed to view links. Register or Login($hash);
  7. ?>

Básicamente, lo que hace el código es recibir una password por POST, luego generamos un salt y lo unimos a la contraseña del usuario y finalmente lo ‘encriptamos’ con SHA512

Con esto podemos tener una password “segura”. Lo remarco con comillas, ya que pienso que la seguridad es un mito. No existe nada que sea 100% seguro.

A pesar de tener este nuevo hash difícil de crackear, hoy en día existen máquinas que se usan únicamente para romper contraseñas, por lo que podemos hacer esta tarea un poco más difícil añadiendo una iteración al código.

Código: PHP
  1. <?php
  2. function hash_password($password, $salt)
  3. {
  4.     $hash = You are not allowed to view links. Register or Login('SHA512', $pass, $salt);
  5.     for ($i = 0; $i < 5000; $i++)
  6.     {
  7.         $hash = You are not allowed to view links. Register or Login('SHA512', $hash, $salt);
  8.     }  
  9.     return $hash;
  10. }
  11. $user = $_POST['user'];
  12. $pass = $_POST['pass'];
  13. $salt = You are not allowed to view links. Register or Login('=', '.', You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(20)));
  14. $hash = hash_password($pass, $salt);
  15. You are not allowed to view links. Register or Login($hash);
  16. ?>

Como se puede ver en el código, estas 5.000 iteraciones vuelve un poco más seguro y difícil de crackear.

Con estos algoritmos, podremos tener un nivel medio de seguridad a la hora de guardar nuestras contraseñas y en caso de que alguien obtenga algún hash, no podrá descifrarlo fácilmente.

Espero que les guste!
ANTRAX


Desconectado D3ivid

  • *
  • Underc0der
  • Mensajes: 289
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
    • Email
  • Twitter: @deividventas
« Respuesta #1 en: Agosto 31, 2015, 12:49:03 pm »
Genial @You are not allowed to view links. Register or Login muy bien explicado :)

Lo que no entiendo muy bien. es que dependiendo de los bits es un tipo de hash u otro. Mi pregunta es, esto es asi por convección o hay alguna razón para eso???

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5267
  • Actividad:
    48.33%
  • Reputación 26
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #2 en: Agosto 31, 2015, 01:20:07 pm »
El tipo de hash se lo dá el algoritmo que se le aplica mas que nada.

Saludos!
ANTRAX


Desconectado D3ivid

  • *
  • Underc0der
  • Mensajes: 289
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
    • Email
  • Twitter: @deividventas
« Respuesta #3 en: Agosto 31, 2015, 01:48:36 pm »
Entendido, muchísimas gracias :)

 

¿Te gustó el post? COMPARTILO!