En la última entrada escribí unas pequeñas pinceladas sobre criptología, el cifrado de cadenas de texto, etc. Como ya mencioné, en una próxima entrada hablaré de dos ejemplos concretos de cifrados pero para tratar de ubicar todo esto en el mundo actual y ver la verdadera utilizad de un buen cifrado, en esta nueva entrada vamos a hablar de las contraseñas, en especial de la seguridad de las contraseñas y daré algunas nociones (desde mi humilde punto de vista) de como construir una contraseña perfecta, que ya adelanto: No existe.
En general las grandes empresas de software gastan miles de millones de Euros (o dolares.. :D) en diseñar aplicaciones seguras, en proteger sus servidores, sus redes, en desplegar las últimas tecnologías de seguridad y cifrado de datos... y todo este trabajo puede reducirse absolutamente a nada con una mala contraseña del usuario final.
En otras palabras no sirve de nada que Google se gaste tanto dinero en proteger sus servidores, utilizar un protocolo https para cifrar conexiones, proteger sus bases de datos, etc, si luego nosotros ponemos como nuestra contraseña de correo electrónico "1234".
Algunos pensarán que no les voy a contar nada nuevo, o nada que no sepan, pero incluso los más instruidos en la materia estoy convencido que podéis sacar alguna idea útil que a buen seguro nunca estará de más. Por supuesto cualquier cosa que penséis que me he dejado o que falta, podéis dejarla en los comentarios puesto que evidentemente yo tampoco tengo la verdad absoluta y cualquier consejo siempre será bien recibido por mi parte. Así que, empecemos por partes:
¿Qué es una contraseña?
Habitualmente nos referimos a una contraseña como a la palabra o conjunto de caracteres de los cuales (en teoría) somos nosotros los únicos conocedores y que nos permiten autenticarnos o identificarnos como nosotros mismos, bien sea en una aplicación web, como los legítimos dueños de un fichero, etc. En todos estos casos y muchos otros utilizamos nuestra contraseña para decir que nosotros somos nosotros y no una tercera persona.
En nuestra vida cotidiana en los tiempos que corren estamos constantemente rodeados de ellas, para acceder a nuestro correo electrónico, al encender nuestro teléfono móvil, nuestra sesión de escritorio en el ordenador, para usar nuestra tarjeta de crédito... En muchos de estos servicios almacenamos una cantidad de datos personales realmente importantes, además de los servicios a los que accedemos a través de ellas.
En lo que sigue a continuación voy a referirme a aquellas tipo "correo electrónico" es decir de longitud variable y con multitud de símbolos admitidos como las que utilizamos como contraseña de cuenta de usuario en cualquier aplicación web, por lo que algunas de las cosas que comentaré lógicamente no servirán ni para el PIN de nuestro móvil ni el de la tarjeta de crédito...

¿Cómo se compromete una contraseña?
Hay muchas técnicas para tratar de saltarse un control por contraseña, en alguna entrada posterior comentaré en más detalle alguna de ellas, pero sin duda un atacante siempre dispone de un último recurso conocido como "fuerza bruta" (brute force). Se conoce como fuerza bruta el hecho de ir probando una a una contraseñas, hasta dar con la correcta.
Evidentemente es una tarea laboriosa para una persona, pero en el momento en el que ésta, se puede automatizar y una máquina es capaz de ir probando miles (o incluso millones) de contraseñas por segundo es cuestión de tiempo que nuestra contraseña sea descubierta. Este proceso será mucho más duradero (llegando a ser computacionalmente inabordable) cuanto mejor sea nuestra contraseña.
¿Cómo saber si una contraseña es segura?
Sobre esto cada uno podría dar una opinión diferente, lo que si que es cierto es que ninguna contraseña es totalmente segura y hay algunos habitos por los que una contraseña se vuelve insegura y vulnerable. Así que si los evitamos a buen seguro nos ahorraremos problemas.
- Aquí el tamaño si importa. Cuanto mayor sea la longitud de una contraseña mejor. Evidentemente no se trata de que tenga 45 carácteres, en general por encima de 8-9 nos encontramos ante algo más que suficiente.
- Evitar utilizar palabras del diccionario. En general, las primeras contraseñas que se prueban por fuerza bruta son diccionarios completos de varios idiomas, por muy rara que sea la palabra si está en el diccionario en pocos segundos sería descubierta.
- No utilizar contraseñas exclusivamente numéricas o del mismo tipo de letras (sólo mayúsculas o minúsculas)
- Evitar cosas tan comunes como añadir "123" al final de nuestra contraseña, cambiar las vocales por números, por ejemplo la A por 4, etc.

Entonces, ¿cómo construir una contraseña?
Doy por sentado que todos vosotros usáis contraseñas en más de un sitio en Internet, así que la regla de oro FUNDAMENTAL es: no utilizar la misma contraseña en dos sitios diferentes, al menos nunca en los sitios principales. En general en muchos sitios web además de nuestra contraseña introducimos nuestra dirección de correo electrónico y quizá nuestro nombre y apellidos. Usando la misma contraseña siempre, basta con que en un sitio sea descubierta, para que potencialmente nuestras cuentas de correo, Facebook, Twitter... puedan serlo también.
Dicho esto utilizar contraseñas diferentes en todos los sitios se puede convertir en una auténtica pesadilla tanto para crearlas como para recordarlas, por tanto debemos encontrar un compromiso entre seguridad y "nemotecnia" para recordarlas fácilmente. Voy a exponeros con un ejemplo una manera sencilla de crear contraseñas seguras para multitud de sitios, evidentemente es un ejemplo, quedaros con la ídea y que cada uno se haga las suyas como buenamente quiera.
Supongamos que tenemos cuentas en: Google (la misma para Gmail, Android Market, Youtube, Google+...), Facebook, Tuenti, Twitter, "El hombre de Bitrubik", Universidad Politécnica de Alcafrán (UPA), periódico Marca, Banco BBVA y Megaupload.
Bien, como tenemos que asignar contraseñas diferentes para cada sitio pero fáciles de recordar podemos utilizar un esqueleto común y una parte que cambie para cada sitio web, para ello vamos a asignar a cada uno de ellos un "código" que por ejemplo se me ocurre puede ser el número de letras del sitio, seguido de las 2 últimas letras del mismo. En el caso de Google sería "6le", para Twitter "7er" y para este blog (Bitrubik) pues "8ik", etc.
Ahora, voy a darle forma a esas 'passwords':
- Empezaré a construir nuestra contraseña asignando por ejemplo unas letras al azar (no tienen por que ser totalmente al azar, pueden ser letras que nos recuerden algo, nuestras iniciales, etc) en mayusculas y minúsculas. Yo utilizaré tres: "PpF"
- Ahora continuaré con mi nombre en minúsculas y abreviado, en mi caso "javi". Tenemos por tanto: "PpFjavi"
- A continuación insertaré el código de 3 caracteres que hemos creado para cada sitio, para google dijimos que era "6le". Así que nos quedaría "PpFjavi6le" o para la web del Marca: "PpFjavi5ca"
- Añadiré una serie de números "aleatorios" precedidos de un símbolo, (puede ser vuestra fecha de nacimiento, la nota que sacasteis en Campos Electromagnéticos...) En mi caso por ejemplo: "#0510", que por desgracia (aun) no es mi nota de campos. ;)
Tenemos por tanto las siguientes contraseñas (pongo sólo algunas...):
- Google: "PpFjavi6le#0510"
- Facebook: "PpFjavi8ok#0510"
- Bitrubik: "PpFjavi8ik#0510"
- ...
De esta forma hemos conseguido una serie de contraseñas fáciles de recordar y bastante seguras, evidentemente cuanto mayor sea el código de cada web respecto del esqueleto total muchísimo mejor.
En algunos casos como podría ser nuestro correo electrónico, quizá queramos por mayor seguridad cambiar periódicamente esa contraseña (mensualmente por ejemplo) pues bien podemos añadir una terminación diferente para cada mes (evidentemente no ganamos nada si la terminación es "Enero", "Febrero"...) pero si añadimos por ejemplo una letra como la "a", el número de mes seguido del número de letras del mes en nuestro idioma y de la 2ª y 3ª letra del mes... tendríamos algo parecido a esto:
- Enero: "PpFjavi6le#0510a15ne"
- Febrero: "PpFjavi6le#0510a27eb"
- Marzo: "PpFjavi6le#0510a35ar"
- ...
También podemos disponer de una contraseña genérica para aquellas webs o sitios donde nos registramos más bien por obligación para hacer alguna consulta, pero que no tenemos la mínima intención de volver para visitar asiduamente. Podemos conseguir esto, sustituyendo el código de cada sitio por algo estandar como por ejemplo: "GGG" tendriamos por tanto la siguiente contraseña genérica: "PpFjaviGGG#0510"

Conclusiones:
Cuando hablamos de seguridad de la información, todos los puntos de la cadena son igual de importantes, incluidos los usuarios finales, por eso espero que después de leer esto, más de uno se replantee la seguridad en sus contraseñas y decida aplicar alguna técnica como el ejemplo anterior para mejorarla, ya veis que no cuesta nada recordarlas y como se suele decir, más vale prevenir, que curar. Si por el contrario, eres de los que hacía algo parecido, espero que hayas obtenido alguna idea interesante que puedas aplicar de ahora en adelante.
En próximas entradas más y espero que mejor.
P.D: ¡Feliz Navidad a todos!