Contraseñas fuertes, la primera línea de defensa

Las contraseñas fuertes son la primera línea de defensa para proteger nuestros datos. De nada sirve tener una caja fuerte a prueba de explosiones si un ladrón puede simplemente abrir la puerta y llevarse lo que necesite, lo mismo sucede con las contraseñas. Entender cómo pueden ser atacadas puede ayudarnos a ser más pacientes y comprensivos cuando tenemos que actualizarlas.

Son las llaves de nuestra vida digital, son muchas, nos piden que sean largas y complejas, que no podemos olvidarlas ni compartirlas, más personales que la ropa interior. Con cada vez más servicios que proteger, ¿realmente son necesarias las contraseñas largas? ¿Podemos usar siempre la misma? ¿No hay una forma más sencilla de protegernos? ¿Puedo usar mi nombre y fecha de nacimiento, para que sea más fácil recordarlas?

Las respuestas cortas a las interrogantes anteriores son : SI, NO, NO, NO. Tratemos de explicar el por qué.

Los medios de comunicación nos han inculcado que los hackers son muy inteligentes y a veces olvidan que aquellos que protegen nuestros sistemas también pueden ser considerados hackers y también son muy inteligentes. Hasta el momento van ganando aquellos que protegen y la prueba más convincente es que todavía nos arriesgamos a hacer pagos electrónicos. Si no confiáramos en la seguridad de los sistemas no arriesgaríamos nuestro dinero.

Una contraseña es una forma de autenticación que utiliza información secreta para controlar el acceso a un recurso. Funciona de forma similar a las llaves de una casa, solo quien tenga la llave puede entrar y al igual que estas, deben tener cierta complejidad y permanecer ocultas para evitar que sean copiadas fácilmente.

A fuerza de golpes y pérdidas millonarias hemos aprendido que NUNCA se deben almacenar o transmitir las contraseñas sin cifrar. Violar esta regla es una invitación al desastre. Es posible escuchar transmisiones de datos en la red o robar ficheros con información de usuarios de sistemas operativos y páginas web, si de esos datos robados se pueden leer directamente las credenciales, pues la seguridad sería una ilusión. También existen casos en que las personas voluntariamente entregan sus contraseñas. Un tipo de ataque conocido como Phishing consiste en engañar al usuario para que dé click en direcciones maliciosas o directamente teclee su usuario y contraseña en servicios controlados por los atacantes.

¿Pero cómo es posible comprobar si mi contraseña es correcta si siempre debe viajar cifrada?

Existen funciones matemáticas conocidas como funciones resumen o hash (en inglés) que son fáciles de calcular en un sentido, pero muy costoso o imposible en el otro. Un ejemplo extremadamente trivial sería el cuadrado de un número (fácil) y su raíz cuadrada (no tan fácil). Generalmente se calcula el hash de las contraseñas y es este valor el que se almacena. Para comprobar si la contraseña es correcta se toma el valor introducido por el usuario, se calcula el hash y si coincide con el almacenado, pues es correcta.

En el caso de que un atacante tenga acceso al hash tiene que recurrir a la fuerza bruta, ya que no lo puede revertir. Aquí es donde entra entonces la necesidad de que nuestras contraseñas sean fuertes. Los ataques de fuerza bruta prueban todas las posibles combinaciones de valores hasta encontrar el correcto. A primera vista no parece gran cosa, pero...

Si utilizamos el código ASCII (un estándar para representar letras en las computadoras) tenemos 95 posibles caracteres a utilizar. Esto incluye todos los caracteres que podemos escribir con nuestro teclado. Teniendo en cuenta que podemos repetir los caracteres:

Cantidad letras

Combinaciones posibles

Resultado

1

95

95

2

95*95

9,025

3

95*95*95

857,375

4

95*95*95*95

81,450,625

5

95*95*95*95*95

 7,737,809,375


Para adivinar mediante fuerza bruta una sencilla contraseña de cuatro caracteres habría que probar más de 81 millones de posibles combinaciones para el peor caso. Esta es la razón de por qué nuestras contraseñas deben ser largas, mientras más caracteres tengan mayor será el esfuerzo para adivinarlas.

Además de la longitud, es necesario tener en cuenta la complejidad.

Para no olvidar cómo entrar a nuestra PC, la mayoría de las personas utilizan algún tipo de asociación que sea fácil de recordar a la hora de construir las contraseñas. Aunque la literatura motivacional nos repite una y otra vez que somos únicos e irrepetibles, las estadísticas recolectadas (ejemplo en https://cybernews.com/best-password-managers/most-common-passwords/) dicen que al menos para la creación de contraseñas, no lo somos tanto. Tendemos a usar patrones comunes y no tan variados como pudiera parecer y esto es explotado por los atacantes.

Para demostrar que no es simple paranoia ni hay que ser un genio para romper contraseñas, decidí realizar un experimento.

El experimento

Instalé una de las más famosas aplicaciones destinadas a romper contraseñas: John the Ripper. Este programa es libre de descargar de Internet, viene disponible en los repositorios de Linux, es decir, todo el mundo tiene acceso a él y tiene un nombre demasiado sugerente como para utilizar otro. El nombre al parecer se inspira en Jack el Destripador (Ripper), sugerencia de lo que hace a las contraseñas.

Logo John the Ripper
Logo John the Ripper


 

Seleccioné tres contraseñas: “casa”, “qwerty” y una de 11 caracteres que incluye mayúsculas, signos de puntuación y números, la que utilizaba para todos mis servicios hasta que empecé a escribir este artículo. En Ubuntu, los hash de las claves se almacenan en el fichero /etc/shadow, la idea es tomar el hash generado para cada una de las pruebas y usar a John para romperlas y determinar cuánto demoran.

Resultado de ejecutar a John the Ripper con cada hash:

  • casa, “dxaIeMrdCmi1OpwQ$gxNoR.ugq0K0kHIR0HRkSKhR6diIG6yEMtaUHeQT 6su.2zLsxClXqK/LQQbnNh7wDQzl1jalJrYnT0fCyctb20”: 1 hora hasta obtener el resultado.
  • qwerty, “JzSECdanuQK3uopC$gDq5N7yc3VcDwOZhHLz008QYvvTABWPs3PemrB mCE/0nfZ7SJPLP0U2NRq/poRfA7qvsRT2kTnYaSTVMwua0u/”: 1 minuto hasta obtener el resultado
  • La mía, (no voy a poner el hash): Lo detuve a las 7 horas de ejecución sin obtener resultado.

Los tiempos de ejecución en este caso no son confiables, ya que utilicé mi laptop con un solo hilo de ejecución de 8 posibles. Los atacantes reales utilizarán una potencia de cómputo mucho mayor. Para comprobar realmente cuan segura era mi contraseña utilicé el servicio de Kaspersky Password, que comprueba la fortaleza. Obtuve un deprimente: ¡Es hora de cambiar la contraseña! Tu contraseña se puede crackear fácilmente. Palabras de uso frecuente.

 

Resultado de comprobar la fortaleza de una contraseña en https://password.kaspersky.com/es/
Resultado de comprobar la fortaleza de una contraseña en https://password.kaspersky.com/es/

¿No habíamos dicho que mientras más larga la cadena de caracteres más segura era? ¿Cómo es posible entonces que “casa” con 4 caracteres demorara mucho más que “qwerty” con 5?

Aquí es donde entra la complejidad y la calidad de la herramienta. Si hubiéramos escrito un programa propio, que probara cada letra empezando por la “a” y añadiendo nuevas letras, pues la primera sería encontrada primero, pero John The Ripper no funciona de esa manera.

John The Ripper no es un juguete, es utilizada para romper contraseñas en el mundo real. De la misma manera que los especialistas en ciberseguridad analizan datos estadísticos para proteger a las personas, la otra parte hace lo mismo con el objetivo opuesto. John incluye esta información estadística en sus algoritmos y genera los casos de prueba basados en la probabilidad de uso, es decir, probará primero las cadenas más comunes y “qwerty” está entre las primeras 5, por lo tanto, no solo tiene que se larga, también tiene que ser complicada y rara.

Diccionarios

Dentro de esas estadísticas también se analizan las combinaciones más frecuentes, por ejemplo: nombre, año de nacimiento, fechas, números de identidad, equipos deportivos, marcas, grupos musicales, etc.

En Internet se encuentran disponibles ficheros denominados diccionarios con millones de posibles contraseñas. Estos diccionarios se recopilan de filtraciones y otras fuentes y pueden acelerar en gran medida el proceso de encontrar los resultados correctos. Un ejemplo puede encontrarse en: https://crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm. John The Ripper también admite diccionarios.

Cuando los ataques son dirigidos, enfocados a un blanco específico (institución o persona), los atacantes utilizan la información disponible para crear diccionarios específicos, lo que reduce drásticamente el tiempo necesario para hacerse con las credenciales. Esta es una razón más para no estar publicando nuestra información privada en todas partes, probablemente nuestras contraseñas estén conformadas utilizando fragmentos de esta y estamos facilitándoles la vida a los hackers.

No usar la misma contraseña para varios servicios.

Cada cierto tiempo aparecen en la prensa titulares como “Mayor filtración de contraseñas de la historia” y cada vez tienen razón, la cantidad de cadenas expuestas es mayor que la anterior. Si usamos la misma contraseña para todos los servicios, por ejemplo, la cuenta bancaria y el sitio para descargar películas piratas, corremos el riesgo de que este último, tal vez menos protegido, sufra un ataque y se divulgue la información. En este caso hemos comprometido nuestras cuentas bancarias.

¿Qué hacer?

Nos piden que las contraseñas sean:

  • Largas, al menos 12 caracteres.
  • Complejas incluyendo números, signos de puntuación, mayúsculas, lágrimas de sirena, una pluma de fénix, una escama de dragón y cualquier otra cosa.
  • Únicas, no utilizar la misma en varios servicios.
  • Que no incluyan elementos de información personal.

Ejemplo de una buena contraseña: "?Y]G9gWJ48zYkFBc@{nKw!’q". Resultado: vamos a tener al menos 10 cadenas de texto raras que utilizar cada día. Para el humano común y corriente que no tenga una memoria eidética (que somos todos) esto se vuelve inmanejable. Una opción sería crear las contraseñas utilizando recursos mnemotécnicos, ejemplo: "12345-humpty-dumpty-satonthe-firewall", algo a lo que pueda encontrar algún sentido y otra sería utilizar un gestor de contraseñas.

Los gestores de contraseñas son programas que permiten el acceso a un almacén de contraseñas mediante una clave única. Esto nos permite memoriza una única súper segura y el resto la generamos automáticamente mediante la herramienta y cuando es necesario la copiamos y pegamos. Ejemplos de gestores serían: Keepass, Kaspersky Password Manager, Google Password Manager y otros muchos.

En muchos casos los consejos de seguridad son considerados paranoia, hasta que una cuenta de Facebook es hackeada o una cuenta bancaria dejada en 0.0, entonces todos se acuerdan de la seguridad y piden explicaciones, exigen indemnizaciones, se rasgan las vestiduras y apelan a la ira de los cielos. Como dice el refrán, es mejor precaver que lamentar y al final, los principales responsables de nuestra seguridad cibernética somos nosotros mismos. Para evitar dolores de cabeza, es mejor seguir los consejos de los expertos y cumplir con sus recomendaciones.

Comentarios

  1. Excelente artículo!!!! Tenemos que prestar más atención a las contraseñas y a su protección.

    ResponderEliminar

Publicar un comentario