miércoles, 18 de febrero de 2015

Usuarios y contraseñas

NOTA: Post largo, pero el tema lo merece.

Navegar por Internet es como pasear por la calle

Yo no iría por callejones oscuros de un barrio conflictivo por la noche. Sé por dónde ir y por dónde no. Igualmente, yo no navegaría por sitios web cutres de empresas desconocidas. Se por dónde navegar y por dónde no.

Navegar por Internet se parece a ir por la calle. Si vas por mitad de un barrio residencial de clase alta, con sus chalets a los lados y patrullas de seguridad, pues vas tranquilo. Por el centro de Madrid agarras bien el bolso. En los bajos fondos de Harlem ni te metes, así de claro. En Internet pasa algo parecido: hay sitios seguros y sitios que no lo son. Así que decir que "Internet no es seguro" es como decir que la calle no lo es: pues oiga... depende de la calle.

La seguridad de nuestras cuentas

Confiamos en que visitamos un sitio web, nos damos de alta y la seguridad está en manos de los administradores del sitio. Y no, señores. Una buena contraseña es también cosa nuestra. Es más: ante un ataque a sitios de seguridad media, si tenemos una buena contraseña nos podemos librar de tener problemas. Entendamos cómo funciona esto de la seguridad de las contraseñas.

Seguridad nivel 0: Lo más cutre

Los sitios web tienen todos una base de datos donde almacenan nuestros nombres de usuario (o direcciones de mail) y contraseñas. Si alguien roba esos datos significa que los puede leer. Así pues, si están en texto visible y clarito, pues roban los datos y ya pueden usar nuestras contraseñas.

No sé si habrá algún sitio web así todavía por Internet. Fijo que sí. Pero vamos, cualquier gran empresa tiene este nivel de seguridad más que superado. Para evitar meterse en sitios así, lo mejor es no confiar en webs desconocidas de empresas "de barrio".

Seguridad nivel 1: Encriptación con retorno

En matemáticas existen funciones que son fáciles de ejecutar en un sentido y muy difíciles de ejecutar en el sentido opuesto. El más típico: coja dos números primos y multiplíquelos. Ese número es único. No hay otro par de primos cuyo producto sea igual. ¿Cuánto hemos tardado en hacer la multiplicación? ¿Segundos? Ahora... Hagamos lo contrario. Dado un número, busquemos los dos primos que, multiplicados, lo tienen de resultado. ¡Ops! Esto ya no son segundos: vamos a tardar mucho. Encriptar es coger algo, por ejemplo su contraseña, y pasarlo por una función parecida. Es fácil y rápido. Y genera un resultado único. El problema es que desencriptar no es que no se pueda: es que puede llevar muuuuucho tiempo. Tanto que un ordenador actual tardaría más en conseguirlo que la edad del universo. Así que, para desencriptar se requiere de una "llave". Una "pista", que permite hacerlo con facilidad.

Los sitios con seguridad nivel 1 encriptan las contraseñas y guardan una llave para poder desencriptarlas fácilmente y así compararlas con la que usted escribe en su casilla al hacer login. Genial. ¿Problema? Que si roban la base de datos es probable que roben también la llave, así que... No nos vale.

Este nivel de seguridad, por desgracia, está muy extendido. Les sorprendería ver cómo, probablemente, el sistema de gestión de su colegio (el del mío, usado por muchos colegios en Madrid, por lo que escribo este post), el de la gestión de su empresa o el de una tienda chula de su ciudad, tienen implantado ese sistema. Nunca, repito, NUNCA usen en ellos la misma contraseña que en sus bancos y páginas por el estilo. Ignoro si serían denunciables (la LOPD implica cuestiones de seguridad en el guardado de contraseñas, creo), pero debería ser posible.

NOTA: Hasta aquí sitios poco seguros. Hay una pista que nos dice que estamos ante uno de esos sitios. Vaya a su web e indique que se le ha olvidado la contraseña. Si el sitio le manda un correo con ella, ¡MALO! Significa que una de dos: o no encriptan o guardan la llave para desencriptar. Eso está MAL y ese sitio NO ES SEGURO. Si le interesa tener ahí una cuenta, como me pasa a mí con la herramienta del colegio de mis hijos (que me mandó la contraseña por correo cuando se me olvidó, con dos narices), no use en él ninguna contraseña que luego utilice en bancos o cosas por el estilo.

Seguridad nivel 2: Encriptación sin retorno

Entramos en sistemas de alta seguridad. En los sitios web de empresas serias se llega a este nivel. Y con "serias" no me refiero a iniciativas nacionales aparentemente molonas que usamos frecuentemente. No: con "serias" me refiero a multinacionales reputadas cuyo negocio está relacionado con la tecnología. El ataque sufrido por Adobe hace un par de años fue preocupante para algunos porque tenía este nivel de seguridad, y no el siguiente.

Lo bueno, y por lo que digo que es de alta seguridad, es que en este caso, si el usuario tiene una buena contraseña no tiene de qué preocuparse si roban la base de datos. Pero si tiene una mala contraseña, debe preocuparse. La seguridad aquí depende mucho del usuario.

Lo que se hace es coger la contraseña, encriptarla, guardarla y no generar llave alguna. Esa contraseña no se desencripta. Punto. ¿Y cómo sabe el sitio que la que yo pongo en mi casilla es la correcta? Pues porque también la encripta y compara los resultados. No compara contraseñas: compara resultados. Por tanto, teóricamente, si alguien roba la base de datos al no haber llave no puede saber cuál es la contraseña.

Genial, todo muy seguro, salvo por un detalle: si dos personas tienen la misma contraseña, los resultados son iguales. Eso implica que si, por algún casual, se logra desencriptar alguna contraseña, se tienen todas las que son iguales. Hay empresas que te permiten tener recordatorios de contraseña. MAL. Eso no hace más que dar pistas a quienes roben la base de datos. Si usted y otros 20 tienen de contraseña "Ironman", y uno tiene de recordatorio "superhéroe", otro "el de hierro", otro "stark" o cosas así, pues... entre todos se lo están poniendo muy fácil a los ladrones de datos.

La buena noticia en este caso es que si su contraseña es buena, realmente buena, no debería tener problema alguno.

Seguridad nivel 3: Ahora sí, estamos seguros

...o todo lo seguros que podemos estar. El cambio consiste en añadir a la contraseña un pequeño elemento, una semilla única de cada usuario, de manera que el resultado es diferente pese a tener la misma contraseña. De esta manera, desencriptada una, pues... Nada. Desencriptada una y ya está.

Aún así, el usuario tiene que poner de su parte. No es bueno eso de coger y, porque te piden una mayúscula, una minúscula y un número, acabar teniendo de contraseña "AAAaaa000". No, amigos, eso es una porquería. ¿Recuerdan que les dije que se tarda mucho en desencriptar? Pues la verdad es que les mentí un poco: se tarda según lo compleja que sea la contraseña. Contraseñas muy pobres se puede tardar incluso minutillos. Así que cúrrense las contraseñas, por favor.

Consejos para generar una buena contraseña

La mejor contraseña es una aleatoria. Vayan a random.org o a passwordsgenerator y creen una. Una por sitio, incluso. Si las apuntan, ¡no lo hagan NUNCA en su ordenador!

Otra opción, menos segura, pero bastante buena, es coger frases de sus libros, canciones o poemas favoritos, a ser posible que incluyan algún número. Por ejemplo, si se saben la primera estrofa de la rima de Diez negritos en inglés, pueden generar una contraseña usando las iniciales (teniendo en cuenta mayúsculas y minúsculas) y pasando a cifras los números. Sería algo como "10lIBwotd1chlsattw9". Impresionante. Si se saben la estrofa, recordarán la contraseña. Y es buena. Muy buena.

En fin, de cualquier manera, generen buenas contraseñas. Usen una para su correo, otra para sus bancos y otra diferente para sitios de dudosa seguridad. No es tan difícil, de verdad.

Que ustedes naveguen bien. ¡Y seguros!

No hay comentarios:

Publicar un comentario