Te apuesto a que me sé tu contraseña

jul. 05, 2021

¿Tu contraseña es letmein? O quizás una de las más típicas: 123456, qwerty, o la vieja y confiable password. Ojalá no haberle achuntado, pero probablemente tampoco anduve tan lejos.

Hace poco se actualizó la popular lista de contraseñas Rockyou.txt. Con 100 GB de contraseñas, lo más seguro es que alguna de las tuyas aparezca ahí.

Cada vez estamos más conectados a internet. Los avances tecnológicos de los últimos años han hecho que cada vez usemos más servicios de forma no presencial, lo que ha crecido aún más por la pandemia.

Nuestra identidad cada vez está más en línea, y la forma más común de demostrar quiénes somos al entrar a una página es el uso de una contraseña. Desde nuestros correos hasta TikTok, es una contraseña la que nos permite identificarnos, y hacer cosas a nuestro nombre.

Si alguien tiene nuestras contraseñas, puede también acceder a información importante, o mandar mensajes a nombre nuestro.

Hace un par de semanas, salió la historia de cómo un grupo de hackers de sombrero negro (son hackers que entran sin autorización, probablemente el tipo más famoso) obtuvieron 780 GB de datos confidenciales de la compañía de juegos EA. Dentro había documentos y el código fuente de algunos juegos, parte del core del negocio de la compañía.

¿Cómo lo hicieron? Obtuvieron las credenciales de alguien en Slack, convencieron a alguien de que desactive algunas de las configuraciones de seguridad, y así fueron escalando. Pueden ver el detalle (en inglés) acá: https://www.vice.com/en/article/7kvkqb/how-ea-games-was-hacked-slack

La importancia de tener claves distintas

Si tenemos cuentas en muchos sitios, es bastante probable de que al menos uno sea hackeado eventualmente. No hay aplicaciones infalibles. Si usamos el mismo mail y contraseña en distintos sitios, basta que se filtre en uno de ellos para acceder a cualquier sitio

Puedes saber si tu contraseña ha sido filtrada usando el sitio haveibeenpwned, e ingresando tu correo. A mí, por ejemplo, me entrega los siguientes resultados (en un correo que usaba cuando estaba en la media).

En la imagen anterior se puede leer que en algunos sitios las contraseñas estaban guardadas en "texto plano", o a través de un "hash". Esto está relacionado a la forma en que se guardan y verifican las contraseñas en las aplicaciones que usamos.

La forma más primitiva de guardarlas es también la más común, y es en texto plano. Esto es como tener frente a nuestra pantalla muchos post-its con las contraseñas de cualquier user de la plataforma. Aunque tengamos la pantalla detrás de una puerta con llave, basta con abrir la puerta para acceder a todos los post-its.

Otra forma de guardar las contraseñas es a través de una función de hash. En simple, una buena función de hash toma una contraseña y entrega un resultado que cumple que:

- A partir del resultado, es muy difícil encontrar la contraseña original (resistencia de pre imágenes).

- Es difícil encontrar un par de contraseñas que generen el mismo resultado (resistencia a colisiones).

O sea, aunque abran la puerta, si las contraseñas están hasheadas, es muy difícil saber cuál era la contraseña original. En general a la contraseña se le agrega una "sal" antes de hashearla. Para no alargarme tanto, esto es simplemente agregarle un texto distinto a cada contraseña, para que tampoco se puedan identificar contraseñas iguales a partir de su hash.

La comparación de estos métodos se puede ver acá:

Entonces, ¿con los hash estamos a salvo?

No. Todo lo anterior depende de que confiemos en el sitio que estamos usando. Si guardan las contraseñas en texto plano, es más fácil que se filtren. Por eso, además es necesario que las contraseñas sean buenas.

Si nuestra contraseña es de largo 5, y solo tiene números, en poco tiempo se pueden probar todas las contraseñas posibles. Como en estos candados con clave, que abrí más de alguna vez en una tarde de aburrimiento:

Si nuestras contraseñas tienen además letras y símbolos, la cantidad de valores que hay que probar crece mucho. Si hacemos una contraseña muy larga, también.

¿Ya, pero entonces cómo lo hago?

Ahora que entendemos un poco cómo nos pueden atacar, viene el secreto para ser inhackeables (o más difíciles de hackear). Voy a mostrar varias alternativas, cada una más segura que la anterior. No vale la pena solo mostrar "la mejor", porque a veces son más difíciles de usar. Si ahora no usas nada, cualquier alternativa va a ser mejor.

Patrones de contraseñas

Una técnica muy popular. Consiste en tener una parte de una contraseña común, y otra que depende del sitio en el que estoy. Por ejemplo:

- Contraseña de facebook: m3gust4nl0sg4t1t0s#facebook

- Contraseña de google: google#m3gust4nl0sg4t1t0s

¿El problema? Si me sé una de tus contraseñas, me voy a demorar bien poco en adivinar el resto. En el ejemplo de arriba serían un par de intentos no más.

Gestores de contraseñas

Existen aplicaciones que guardan nuestras contraseñas por nuestra cuenta, e incluso la generan. Así, no necesitamos buena memoria ni creatividad. Dejamos que un programa de confianza haga todo por nuestra cuenta.

Las alternativas más fáciles de usar son probablemente las que vienen integradas en un navegador, como Firefox o Chrome. Se sincronizan fácilmente con los navegadores de escritorio y celular, y hasta rellenan los formularios de login. O sea, son muy convenientes.

¿El problema? Si se meten a nuestro computador pueden meterse a cualquier página. Además, no podemos usar otro navegador. En el caso de Chrome, además hay que confiar en Google, que nos puede cerrar la cuenta por razones poco claras. Si usas uno de estos métodos, te recomiendo que les agregues una contraseña maestra para tener seguridad extra.

La siguiente alternativa es bastante parecida: usar gestores de contraseñas en la nube como 1password o LastPass. Ya no dependen de un navegador, y también podemos usarlas en nuestros celulares. El problema que podríamos tener ahora es qué pasa si sus servidores no están funcionando, o si hackean a estos servicios, como pasó en 2015 con LastPass.

Finalmente, existen los gestores de contraseña off-line. Programas que descargamos, y que guardan nuestra base de datos de contraseñas en nuestros dispositivos. Son los más seguros y transparentes. Podemos ver cómo funcionan, al menos las alternativas de código abierto. El que yo uso y recomiendo es KeePassXC. Tiene versiones para Windows, Mac y Linux, además de versiones para celular.

El problema en este caso no es de confianza ni de disponibilidad. Es de conveniencia. Para usar estas alternativas, hay que estar sincronizando los archivos "a mano". Dejando la base de datos en una nube, o andarla copiando del PC al celular.

Autenticación en dos pasos

Si llegaste hasta acá, te dejo una última recomendación. En los sitios que puedas, utiliza la autenticación en dos pasos. Lo que se logra con esto es que si alguien intenta entrar a una de tus cuentas, tienes que confirmarlo utilizando otro dispositivo, con una clave temporal (como la de algunos dispositivos de bancos). Hay también varias alternativas: Authy y Google Authenticator, por ejemplo.

Como siempre, también está la alternativa off-line, que es la que recomiendo para personas que quieran estar aún más seguras. La que conozco y recomiendo es la YubiKey. La puedes encontrar acá.

¡Genial! Te has suscrito con éxito.
¡Genial! Ahora, completa el checkout para tener acceso completo.
¡Bienvenido de nuevo! Has iniciado sesión con éxito.
Éxito! Su cuenta está totalmente activada, ahora tienes acceso a todo el contenido.