Las contraseñas se han utilizado durante miles de años como medio para identificarnos ante los demás y, en tiempos más recientes, ante los ordenadores. Es un concepto simple: una información compartida, mantenida en secreto entre individuos y utilizada para «probar» la identidad.
Las contraseñas en un contexto informático surgieron en los años 60 con los ordenadores centrales, grandes ordenadores operados de forma centralizada con «terminales» remotas para el acceso de los usuarios. Ahora se utilizan para todo, desde el PIN que introducimos en un cajero automático hasta el inicio de sesión en nuestros ordenadores y diversos sitios web.
¿Pero por qué necesitamos «demostrar» nuestra identidad a los sistemas a los que accedemos? ¿Y por qué es tan difícil acertar con las contraseñas?
¿Qué hace una buena contraseña?
Hasta hace relativamente poco, una buena contraseña podía ser una palabra o frase de tan sólo seis u ocho caracteres. Pero ahora tenemos directrices de longitud mínima. Esto se debe a la «entropía».
Cuando se habla de contraseñas, la entropía es la medida de la previsibilidad. Las matemáticas que hay detrás de esto no son complejas, pero vamos a examinarlo con una medida aún más sencilla: el número de contraseñas posibles, a veces denominado «espacio de contraseñas».
Si una contraseña de un solo carácter sólo contiene una letra minúscula, sólo hay 26 contraseñas posibles («a» a «z»). Al incluir letras mayúsculas, aumentamos nuestro espacio de contraseñas a 52 contraseñas potenciales.
El espacio de contraseñas continúa expandiéndose a medida que se aumenta la longitud y se añaden otros tipos de caracteres.
Viendo las cifras anteriores, es fácil entender por qué se nos anima a utilizar contraseñas largas con letras mayúsculas y minúsculas, números y símbolos. Cuanto más compleja es la contraseña, más intentos se necesitan para adivinarla.
Sin embargo, el problema de depender de la complejidad de las contraseñas es que los ordenadores son muy eficientes a la hora de repetir tareas, incluida la de adivinar contraseñas.
El año pasado se estableció un récord para un ordenador que intentaba generar todas las contraseñas imaginables. Consiguió una tasa superior a los 100.000.000.000 de adivinaciones por segundo.
Aprovechando esta potencia de cálculo, los ciberdelincuentes pueden hackear los sistemas bombardeándolos con tantas combinaciones de contraseñas como sea posible, en un proceso denominado ataques de fuerza bruta.
Y con la tecnología basada en la nube, adivinar una contraseña de ocho caracteres puede conseguirse en tan solo 12 minutos y costar tan solo 25 dólares.
Además, como las contraseñas se utilizan casi siempre para dar acceso a datos sensibles o sistemas importantes, esto motiva a los ciberdelincuentes a buscarlas activamente. También impulsa un lucrativo mercado online de venta de contraseñas, algunas de las cuales vienen acompañadas de direcciones de correo electrónico y/o nombres de usuario.
¿Cómo se almacenan las contraseñas en los sitios web?
Las contraseñas de los sitios web suelen almacenarse de forma protegida mediante un algoritmo matemático llamado hashing. Una contraseña con hash es irreconocible y no se puede volver a convertir en la contraseña (un proceso irreversible).
Cuando intentas iniciar sesión, la contraseña que introduces es sometida a un proceso de hashing y comparada con la versión almacenada en el sitio. Este proceso se repite cada vez que se inicia una sesión.
Por ejemplo, la contraseña «Pa$$w0rd» recibe el valor «02726d40f378e716981c4321d60ba3a325ed6a4c» cuando se calcula utilizando el algoritmo hash SHA1. Pruebe usted mismo.
Cuando se enfrenta a un archivo lleno de contraseñas con hash, se puede utilizar un ataque de fuerza bruta, probando cada combinación de caracteres para un rango de longitudes de contraseña. Esto se ha convertido en una práctica tan común que hay sitios web que enumeran contraseñas comunes junto con su valor (calculado) de hash. Simplemente se puede buscar el hash para revelar la contraseña correspondiente.
El robo y la venta de listas de contraseñas es ahora tan común, que existe un sitio web dedicado – haveibeenpwned.com – para ayudar a los usuarios a comprobar si sus cuentas están «in the wild». Este sitio ha crecido hasta incluir más de 10.000 millones de detalles de cuentas.
Si su dirección de correo electrónico aparece en este sitio, debería cambiar definitivamente la contraseña detectada, así como en cualquier otro sitio para el que utilice las mismas credenciales.
¿Es una mayor complejidad la solución?
Se podría pensar que con tantas violaciones de contraseñas que se producen a diario, habríamos mejorado nuestras prácticas de selección de contraseñas. Desafortunadamente, la encuesta anual de contraseñas de SplashData del año pasado ha mostrado pocos cambios en cinco años.
Al aumentar las capacidades informáticas, la solución parecería ser una mayor complejidad. Pero, como humanos, no estamos capacitados (ni motivados) para recordar contraseñas muy complejas.
También hemos superado el punto en el que sólo utilizamos dos o tres sistemas que necesitan una contraseña. Ahora es habitual acceder a numerosos sitios, cada uno de los cuales requiere una contraseña (a menudo de diferente longitud y complejidad). Una encuesta reciente sugiere que hay una media de 70-80 contraseñas por persona.
La buena noticia es que existen herramientas para solucionar estos problemas. La mayoría de los ordenadores admiten ahora el almacenamiento de contraseñas en el sistema operativo o en el navegador web, normalmente con la opción de compartir la información almacenada en varios dispositivos.
Los ejemplos incluyen el iCloud Keychain de Apple y la posibilidad de guardar contraseñas en Internet Explorer, Chrome y Firefox (aunque son menos fiables).
Los gestores de contraseñas como KeePassXC pueden ayudar a los usuarios a generar contraseñas largas y complejas y almacenarlas en un lugar seguro para cuando se necesiten.
Aunque esta ubicación aún debe protegerse (normalmente con una larga «contraseña maestra»), el uso de un gestor de contraseñas le permite tener una contraseña única y compleja para cada sitio web que visite.
Esto no evitará que una contraseña sea robada de un sitio web vulnerable. Pero si te la roban, no tendrás que preocuparte de cambiar la misma contraseña en todos tus otros sitios.
Por supuesto, también hay vulnerabilidades en estas soluciones, pero quizás esa sea una historia para otro día.