none
Encriptar una contraseña RRS feed

  • Pregunta

  • Buenos días y saludos cordiales.

    Utilizo un FormsAuthentication.HashPasswordForStoringInConfigFile para ecriptar un password, pero visual studio 2017 me envía este mensaje:

    Gravedad Código Descripción Proyecto Archivo Línea Estado suprimido
    Advertencia CS0618 'FormsAuthentication.HashPasswordForStoringInConfigFile(string, string)' está obsoleto: 'The recommended alternative is to use the Membership APIs, such as Membership.CreateUser. For more information, see http://go.microsoft.com/fwlink/?LinkId=252463.' Presentación.

    La idea es almacenar las contraseñas en SQL server express.

    He leído sobre el tema, pero hay opiniones diversas, como que el Hash ya no es seguro, MD5 tampoco, convertir a base 64 es crifrar no encriptar, y cual es la mejor solución para encriptar y desencriptar?

    Gracias
    jueves, 21 de febrero de 2019 17:07

Respuestas

Todas las respuestas

  • La mejor forma de encriptar es usando el CryptoStream y otros objetos que hay en el espacio de nombres System.Security.Cryptography. Tienes un ejemplo para cifrar y descifrar strings aquí:

    https://tekeye.uk/visual_studio/encrypt-decrypt-c-sharp-string

    PERO: Ten presente que para poder cifrar y descrifrar se necesita una clave. Y la clave tiene que estar en algún sitio dentro de tu programa. La consecuencia es que las contraseñas cifradas en la base de datos se podrían descifrar si alguien consigue acceder a la máquina, porque siempre podrían desensamblar el fuente del programa y sacar la clave.

    En consecuencia, si la seguridad es crítica, no es conveniente que tu programa guarde contraseñas encriptadas. Es preferible que solo guarde un resumen criptográfico (hash), de forma que no sea invertible y solo se pueda validar la contraseña pero no se pueda descifrar. Si a alguien se le olvida la contraseña, se le resetea generando una nueva al azar y manándole la nueva y forzando a que la cambie en el primer login.

    Dado que un hash por sí solo no es suficientemente seguro, hay algunos trucos como por ejemplo repetir la operación de hash varios miles de veces antes de salvarlo. Esto es suficientemente rápido cuando salvas un usuario, pero es demasiado costoso para los programas de fuerza bruta que intentan descifrar los hash mediante una tabla de hashes conocidos. Acuérdate de añadir también una "sal" distinta para cada usuario en el cálculo del hash. Esto ayuda a que sea más difícil de hackear.

    jueves, 21 de febrero de 2019 17:48
  • Gracias Alberto me sirvió mucho la información. Como siempre. Un abrazo. Dios te bendiga.
    viernes, 22 de febrero de 2019 2:51