Allá por la década de los 60, Fernando José Corbató, científico de computación del MIT, tuvo la idea de emplear contraseñas para proteger el acceso a archivos en ordenadores compartidos. Por aquel momento, el uso de ordenadores estaba bastante poco extendido y las primeras redes eran más bien parcelas independientes que conectaban unos cuantos equipos dentro de alguna que otra universidad. Nada que ver con Internet, cuya existencia, dimensión y alcance eran, por aquel momento, inimaginables para la mayoría. En el diseño de aquellos sistemas la seguridad no fue una prioridad. La mayoría de los ataques informáticos comenzaron a surgir varias décadas más tarde cuando los primeros PCs empezaron a estar al alcance de todo el mundo e Internet empezó a tomar forma. No se rompieron mucho la cabeza para pensar en diseñar sistemas seguros contra amenazas que aún no habían sido inventadas. Esos cimientos que se contruyeron con la seguridad como última prioridad son los mismos sobre los que se asienta el Internet con el que convivimos a día de hoy. Dicho esto, aquel primer uso de las contraseñas en los años 60 tenía el simple objetivo de restringir el acceso a ficheros entre compañeros de la misma red universitaria y, para eso, sirvieron bastante bien. Resulta sorprendente ver cómo la llave que hoy protege todas nuestras cuentas online, repletas de información confidencial, no ha evolucionado lo más mínimo desde hace 60 años.
En el mundo de la informática, la seguridad se encuentra en un duelo constante con la usabilidad. Haz un sistema más seguro y, casi con total seguridad, lo habrás hecho más incómodo. Esto realiadad no sólo es cierta para Internet y los ordenadores. Seguro que resulta del agrado de muy pocos atravesar los controles de seguridad de los aeropuertos pero, se considera lo suficientemente importante evitar la presencia de explosivos a bordo. En el mundo digital, las amenazas suelen (más bien solían) tener efectos potenciales bastante menos desastrosos y, por ello, el usuario general tiende a preferir un sistema cómodo y eficaz frente a uno seguro y restrictivo. Este es uno de los motivos por los que las contraseñas no han sido sustituidas hace ya tiempo como mecanismo de control de acceso. Estamos bastante familiarizados con ellas, son simples de implementar y no requieren de ningun dispositivo externo como sí sucedería con un control biométrico (lector de huellas o escáner de retina por ejemplo). El problema de la autenticación es uno de los más complejos en ciberseguridad y ningún otro mecanismo ha conseguido jubilar a las contraseñas como método de control de acceso generalizado.
No obstante, las contraseñas presentan numerosas debilidades y, por sí solas, se pueden quedar bastante cortas a la hora de garantizar la seguridad del control de acceso en el contexto actual. Las funciones hash ya cifran las contraseñas para evitar que una filtración desde la base de datos que las almacena se las muestre en claro a cualquier interesado pero, la filtración o la interceptación no son los únicos mecasimos de ataque para robar contraseñas. Las contraseñas son susceptibles de ser adivinadas. Si se logra obtener el hash de una contraseña, es posible adivinarla mediante ataques por diccionario o fuerza bruta.
El ataque por diccionario consiste en emplear una lista de contraseñas posibles para calcular su hash y compararlo con el hash interceptado. Es decir, se trata de ir probando una lista de contraseñas probables hasta que alguna coincide con el hash que se ha logrado obtener. Este ataque es realmente sencillo y eficaz contra la inmesa mayoría de contraseñas, que se basan en palabras sencillas y conocidas, fáciles de adivinar y de probar una detrás de otra. El diccionario RockYou, de libre acceso, contiene una enorme lista de contraseñas que se filtraron en un ataque al plugin RockYou de Myspace. Es un muy buen punto de comienzo para adivinar cualquier contraseña que, si emplea secuencias de caracteres comunes, como palabras específicas, con gran probabilidad aparecerá ahí.
El ataque por fuerza bruta también se basa en intentos sucesivos para adivinar una contraseña pero en este caso, se trata de probar todas las combinaciones de caracteres posibles. Este puede ser más lento que el ataque por diccionario pero, dado que se prueban todas las combinaciones de caracteres, tarde o temprano aparece la buena. Por esta razón, una contraseña es más segura cuanto más larga y más variedad de caracteres contenga. Este post en reddit no tiene por qué ser exacto pero es una buena referencia para hacerse a la idea de lo poco o mucho que se tardaría en romper una contraseña por fuerza bruta en función de sus características:
En definitiva, una contraseña relativamente segura frente a ataques por diccionario no puede contener palabras conocidas o patrones predecibles, es decir, debería ser una secuencia de caracteres aleatoria y uniformemente distribuida y, para además ser segura contra ataques por fuerza bruta, tendría que rondar los 12 caracteres de longitud y combinar toda la variedad posible (minúsculas, mayúsculas, números y símbolos). Además, para evitar que una única contraseña otorgue acceso a todas tus cuentas, deberías usar una distinta en cada sitio. Dicho esto, si alguien es capaz de recordar una contraseña distinta para cada una de sus cuentas, cumpliendo con todos los requisitos mencionados, que me lo haga saber. Hasta que conozca a esa persona, sostendré mi creencia de que es inviable. Y no valen los gestores de contraseñas, basados en el paradigma de "una contraseña para dominarlas a todas". En definitiva, es cómodo usar contraseñas pero no tan cómo hacerlas seguras.
Por esta razón, se está haciendo un importante esfuerzo para consolidar la autenticación mediante dos factores. Si bien la autenticación mediante contraseña se basa en algo que conoces, también puedes ser identificado por algo que posees, como tu smartphone, o algo que eres, como tu huella dactilar o tu retina. De este modo, se trata de autenticar a una persona no sólo mediante su contraseña sino añadiendo un método adicional. Probablemente, el que resulta más familiar es el que emplea Google, mandando una notificación a nuestro teléfono cuando tratamos de iniciar sesión. Ya no basta con conocer la contraseña sino que quien quiera iniciar sesión en una cuenta, necesita también acceso al smartphone del dueño. Por decirlo de otra forma, el sistema pone a prueba al usuario pidiéndole una evidencia extra de que es quien dice ser. No es un mecanismo a prueba de todo pero, desde luego, es bastante más seguro que el uso único y exclusivo de una clave y no añade mucha complejidad al inicio de sesión.
Espero que haya sido interesante y haber dado algún argumento convincente para activar el segundo factor de autenticación en los sitios que lo permitan. Muchos ya lo usan por defecto. Hasta aquí por ahora. Nos vemos en la próxima publicación.
Comentarios
Publicar un comentario