Almacenar Contraseñas en MySQL con Cifrados

  • Upload
    lkv

  • View
    222

  • Download
    0

Embed Size (px)

DESCRIPTION

Ejemplo de codigo en mysql con los principales cifrados

Citation preview

  • Almacenar contraseas en MySQLTodo buen administrador sabe que crear una tabla con contraseas totalmente accesibles es unfallo de seguridad tremendo. Imaginemos por un momento que pasara si un hacker consiguiesellegar hasta nuestra tabla usuarios, sacar un listado de las contraseas o peor an, modificarlas.Si este sistema guarda informacin sensible podra convertirse en un serio problema empresarial,por lo que la seguridad en cuanto a contraseas siempre debe ser una premisa para nosotros. Porsuerte, MySQL nos da diferentes herramientas para hacer nuestras contraseas ms seguras,vamos a enumerarlas desde la menos segura hasta la ms segura de todas:

    PasswordEsta funcin est presente desde hace unas cuantas versiones, pero sin embargo se hademostrado que es fcilmente vulnerable por lo que no merece la pena explicarla.

    MD5Para guardar una contrasea encriptada con MD5 necesitaremos una tabla con un campo de 32caracteres, aunque se ha demostrado que el algoritmo MD5 puede ser vulnerado, la prctica estan compleja que no merece la pena el esfuerzo, el algoritmo MD5 no puede ser revertido, esdecir, no se pueden recuperar contraseas de este sistema.Insertar una contrasea con MD5:mysql> INSERT INTO usuarios VALUES('usuario',MD5('contrasea'));

    SHA o SHA1La funcin SHA y SHA1 son sinnimos, por lo que hacen el mismo efecto, al igual que MD5 nopuede ser revertido y este necesita un campo de 40 caracteres para su almacenamiento, es msseguro que MD5 ya que calcula el cheksum SHA de 160 bits de una cadena, mientras que MD5 lacalcula de 128.

    http://www.solingest.com/blog/almacenar-contrasenas-en-mysql

    31/08/2015 09:21 a.m.

  • Insertar una contrasea con SHA:mysql> INSERT INTO usuarios VALUES('usuario',SHA('contrasea'));

    AESEl algoritmo AES es el ms completo y complejo, tiene posibilidad de revertirse y se utiliza con unallave privada, es decir, debemos proporcionar dicha llave para encriptar y desencriptar lascontraseas. Sera vulnerable en el caso de que alguien consiguiese violar nuestro cdigo fuente yviera que llave estamos pasando a la cadena. Para almacenar estas contraseas necesitamos quenuestro campo sea de tipo BLOB, ya que el resultado de la operacin ser un dato binario muyaleatorio.Insertar una contrasea con AES:mysql> INSERT INTO usuarios VALUES('usuario',AES_ENCRYPT('contrasea','llave'));Para desencriptar:mysql> INSERT INTO usuarios VALUES('usuario',AES_DECRYPT('contrasea','llave'));Si quieres utilizar la funcin AES, debes de tener una versin de MySQL superior a la 4.0.2, ya quees cuando esta funcin fue agregada.Por lo tanto ahora sabemos que la nica manera (por ahora) de que nuestras contraseas seantotalmente seguras, es utilizando la funcin AES, y asegurarse que nadie puede acceder a nuestrocdigo fuente.

    http://www.solingest.com/blog/almacenar-contrasenas-en-mysql

    31/08/2015 09:21 a.m.