¿Las contraseñas asociadas con las cuentas en línea son visibles para el propietario o los empleados del sitio web o están cifradas y protegidas de la vista?

Técnicamente, es visible. O al menos, no puede estar 100% seguro de que no lo es. Esto solo es una buena razón para usar diferentes contraseñas en cada sitio.

El sitio no tiene que almacenar su contraseña en el plano para verificarla. En su lugar, puede almacenar un hash salado de su contraseña. Eso significa que una vez que el sitio se ha forzado, un pirata informático no puede acceder a su contraseña simple, pero primero debe realizar un ataque de fuerza bruta en el hash.

Sin embargo, no puede ver la programación en el lado del servidor: ¿cómo sabe con certeza cómo se implementa la verificación de contraseña? Tal vez el administrador afirma una cosa, pero aún así crea una lista de contraseñas.

Incluso cuando se utiliza el hash de contraseña, aún debe enviar su contraseña durante la creación de la cuenta e iniciar sesión. En esos momentos, el servidor tiene acceso real a su contraseña simple. Si el administrador lo desea, puede tomar su contraseña en esos momentos.

Existen otros métodos de verificación, donde demuestra que conoce la contraseña sin enviarla realmente. Pero se usan muy raramente, y es difícil determinar si un sitio web los usaría.

Por lo tanto, existe una gran cantidad de confianza entre usted y el administrador de un sitio web. Asume que su contraseña solo es manejada por el código, y en el buen sentido, pero no puede estar seguro sin verificar el código.

Una alternativa que puede usar es la opción ‘iniciar sesión a través de Google’ o ‘iniciar sesión a través de Facebook’. Son más seguros porque el sitio web nunca aprende su contraseña. Simplemente obtienen una afirmación de Google (o FB) de que está autenticado correctamente con ellos. Es un método más seguro, pero obviamente también proporciona más información a Google / FB.

Si bien todavía encuentro historias de un sitio extraño aquí o allá que almacena contraseñas en texto plano (lo que escribe es lo que se almacena), por lo general, los sitios almacenan sus contraseñas en un formato criptográficamente hash. Eso significa que la contraseña en sí no se almacena, solo su hash, que es un algoritmo unidireccional. No existe una manera computacionalmente rápida o práctica de calcular la contraseña a partir del hash mismo. Tampoco hay una manera fácil de probar varias contraseñas con la esperanza de que una de ellas produzca el hash almacenado (aunque hay ataques contra los hash utilizando tablas de búsqueda, tablas de búsqueda inversa y tablas de arco iris). Tenga en cuenta que no estoy usando términos absolutos como “nada”, “período de inactividad” o “nunca”, ya que técnicamente, un adversario con recursos informáticos y tiempo ilimitados técnicamente podría encontrar la contraseña eventualmente. Los requisitos computacionales para descifrar un hash son tan prohibitivos que para la mayoría de los propósitos web, las contraseñas hash son prácticamente seguras.

Como el hash en sí mismo puede no ser suficiente (especialmente con contraseñas deficientes), para fortalecer la seguridad del hash, se agrega una “sal” (una cadena aleatoria) a la contraseña antes de hacerlo.

Cuando se registra para la cuenta, su contraseña nunca se almacena en el servidor, solo el hash. Cuando inicia sesión, el hash de su contraseña se compara con el hash en la base de datos del usuario, y si coinciden, se le otorga acceso.

La mejor práctica sería almacenarlos en hash: el cifrado es reversible, el hash no.

Hay muy pocas razones para conservar o para poder recuperar su contraseña “real”.

Si los administradores de un sitio web en particular pueden verlos, aunque depende de la implementación de ese sitio web, es bastante posible almacenarlos en texto sin formato o en cifrado reversible, simplemente no es la mejor práctica.