Santo_y_Sena
Ilustración: Xurxo (La Viñeta Satírica)

Seguridad Online – Las Contraseñas

Hay muchas maneras de explotar y comprometer la seguridad de un sistema informático, un sitio web, o una red de comunicación, en fin casi cualquier cosa, pues en estos tiempos son pocas las cosas que no están conectadas a la red por medio de computadoras. Es mediante esas conexiones que se producen a diario robos de dinero e información, extorsiones, fraudes, etc. El común denominador en la mayoría de los casos es la debilidad en un componente clave que depende de los usuarios, estamos hablando de “las contraseñas”.

Contraseña – Definición

Una contraseña es en esencia una combinación de caracteres que sirven como elemento de autenticación de identidad a un individuo para el acceso a un servicio, propiedad o información valiosa.

Las matemáticas y las contraseñas

En la antigüedad las contraseñas eran transmitidas verbalmente y tenían un uso muy limitado por el hecho de que había más de una persona que la conocía. Esta problemática fue resuelta con la invención de mecanismos que sólo podían abrirse con el uso de una llave. Una variante de estos emplea sistemas con combinaciones.

Los mecanismos de combinación utilizan unos discos giratorios que cuando se alinean correctamente liberan el gancho del candado. Lo más común es que cada uno de los discos posea en la cara o borde exterior números que van del 0 al 9 y que sirven para marcar la posición que debe ocupar cada disco (combinación) para abrir el candado.

Si el candado tiene tres discos y cada disco puede tener 10 (0 – 9) posiciones distintas, entonces, con esos tres discos pueden obtenerse la siguiente cantidad de combinaciones:

10 x 10 x 10 = 1,000 combinaciones

Si el candado tiene cuatro discos:

10 x 10 x 10 x 10 = 10, 000 combinaciones

Estos mismos principios matemáticos aplican también a las contraseñas que utilizas todos los días en cualquiera de los sitios web que visitas y que requieren tu autenticación. Ahora bien, la dimensión del espacio en la que se basa tu combinación o contraseña es mayor que la de los discos numerados.

No voy a entrar en argumentos de cuántos caracteres tiene el alfabeto. Para mi tiene 26 (EE.UU). Ahora imagina que tienes una contraseña conformada por cuatro letras tomadas de ese alfabeto básico, eso incluye incluso letras repetidas:

26 x 26 x 26 x 26 = 456,976 combinaciones

Eso a todas luces es un número grande de combinaciones, pero el alfabeto admite letras mayúsculas y minúsculas, así que:

52 x 52 x 52 x 52 = 7,311,616 combinaciones

Si aumentamos la longitud de la contraseña:

5 caracteres = 380,204,032 combinaciones

6 caracteres = 19,770,609,664 combinaciones

Esa última contraseña es inmensa en cuanto a la cantidad de combinaciones que pueden crease, estamos hablando de 19 mil millones de combinaciones… WOW!

Buscando la aguja en el pajar

Pajar
Ilustración: Xurxo (La Viñeta Satírica)

Si continuamos con el ejemplo de la contraseña de seis caracteres, no creo que sea difícil entender que intentar adivinar la contraseña entre 19 mil millones de combinaciones, es como buscar la famosa aguja en el pajar.

Supongamos que somos los autores de la contraseña y que por cosas de la vida se nos olvida (caso muy frecuente) y que empezamos a hacer o seguir una rutina de prueba y error, a ver si la adivinamos (a este proceder se le conoce como ataque de fuerza bruta). Por supuesto, si lo hacemos a mano, no creo que te alcance la vida para adivinarla de vuelta, así que vamos a usar una compu cualquiera para automatizar el proceso.

La velocidad del reloj de cualquier procesador moderno se mide en el orden de los GHz es decir 1000 000 000 de operaciones de computo por segundo, así que una computadora cualquiera con un procesador de 1GHz puede (en principio) romper (adivinar / crack) esa contraseña en unos 19 segundos.

La velocidad de un procesador no es suficiente para juzgar la velocidad de cómputo de una computadora, ya que la velocidad final es el resultado de una serie de factores o elementos que intervienen en el proceso de cálculo. Por ejemplo, el CPU puede ser súper veloz pero si el canal de comunicación (data bus) por el que circula la información es más lento, entonces la velocidad final de computo es menor que la del procesador. Otros factores que influyen son el ancho del data bus (longitud de las instrucciones), la velocidad de la memoria y la eficiencia del algoritmo utilizado para romper la contraseña. Todo lo cual lleva a que un ataque de fuerza bruta tome un poco más de tiempo en encontrar la contraseña. Si ese ataque se realiza a un sitio web puede tardar en el caso de una contraseña de seis caracteres hasta seis meses. Un ataque off-line pudiera encontrar la contraseña en cuestión de minutos.

No es difícil darse cuenta que en principio cualquier contraseña puede ser encontrada, el asunto es más bien cuánto tiempo puede tomar encontrar una contraseña con un ataque de fuerza bruta. Esa cantidad de tiempo como hemos visto puede incrementarse aumentando la longitud de la contraseña, de manera que el tiempo requerido sea tan grande que resulte impráctico dedicarse a encontrarla. Es decir, si el tiempo que requiere un ataque de fuerza bruta para encontrar la contraseña es mayor que el tiempo de vida promedio de una persona, pues entonces no tiene asunto insistir en continuar buscando pues para cuando la contraseña sea encontrada el interesado ya no estará vivo.

¿Cómo crear contraseñas fuertes?

Minin
Ilustración: Xurxo (La Viñeta Satírica)

Hasta ahora hemos utilizado como ejemplo para la formación de la contraseña un espacio limitado a 52 caracteres, en realidad el espacio básico estándar es de 64 caracteres, como se muestra debajo:

!#%+23456789:=?@ABCDEFGHJKLMNPRS

TUVWXYZabcdefghijkmnopqrstuvwxyz

Este espacio es el más utilizado por la mayoría de los servicios online. Usando este espacio para armar una contraseña de seis caracteres eleva el número de combinaciones posibles a: 68,719,476,736 combinaciones y que todavía sigue siendo fácil de adivinar con un ataque de fuerza bruta off-line en unos 68 segundos.

Ahora bien, ¿cada vez que vaya a crear una contraseña hay que hacer todas esas cuentas? La respuesta es sí y es no.

Para hacerles la vida más fácil les voy a presentar un sitio web que resuelve todo eso en segundos, y que además mide la cantidad de paja que hay que remover y cuánto pudiera demorarse un ataque de fuerza bruta para encontrar una contraseña.

– Gibson Research Corporation

Este sitio web es especializado en seguridad informática y en él puedes encontrar herramientas valiosas para auditar la seguridad de tu computadora. Para los propósitos de la creación de contraseñas debes utilizar las siguientes páginas:

Perfect Passwords: En esta página puedes obtener combinaciones aleatorias de caracteres que puedes utilizar total o parcialmente para armar una contraseña. Si no te gustan las combinaciones que te muestra, sólo tienes que refrescar la página para generar una nueva cadena de caracteres.

How Big is Your Haystack: Copia la cadena de caracteres generada o el fragmento de ella que quieres utilizar y pégala en esta nueva página para que veas cuán fuerte es tu contraseña en términos de tiempo requerido para adivinarla con un ataque de fuerza bruta. También puedes escribir directamente la contraseña que quieres utilizar.

– ¿Cómo hacer una contraseña fácil de recordar y un poco más difícil de adivinar?

1337

Hacer una contraseña fácil de recordar requiere que utilices palabras que hagan sentido para ti, así que deben ser de alguna manera algo muy personal, algo que nadie conozca. Ahora bien, para agregarle fortaleza a la contraseña hay que utilizar símbolos y números, y ya eso complica las cosas. Sin embargo hay una especie de lenguaje oscuro nacido en el internet que combina todos esos elementos de una manera muy peculiar y fácil de aprender y usar. Ese pseudo lenguaje se llama “Leet” también se le conoce como: L337, L33T, 1337.

Leet es un alfabeto para el idioma inglés que puede ser usado en cualquier otro idioma basado en caracteres del alfabeto latino. El alfabeto Leet usa distintas combinaciones de los caracteres ASCII para reemplazar a los caracteres latinos. El alfabeto Leet completo puede verse abajo:

A: 4, /-\, /_\, @, /\
B: 8,|3, 13, |}, |:, |8, 18, 6, |B
C: <, {, [, (
D:|), |}, |]
E: 3
F: |=, ph, |#, |”
G: [, -, [+, 6
H: 4, |-|, [-], {-}, |=|, [=], {=}
I: 1, |
J: _|, _/, _7, _)
K: |<, 1<
L: |_, |, 1
M: 44, |\/|, ^^, /\/\, /X\, []\/][, []V[], ][\\//][, //., .\\, N\
N: |\|, /\/, /V, ][\\][
O: 0, (), [], {}
P: |o, |O, |>, |*, |°, |D, /o
Q: O_, 9, (,),
R: |2, 12, .-, |^
S: 5, $, §
T: 7, +, 7`, ‘|’
U: |_|, \_\, /_/, \_/, (_)
V: \/
W: \/\/, (/\), \^/, |/\|, \X/, \\’, ‘//
X: %, *, ><, }{, )(
Y: `/, ¥
Z: 2, 7_, >_

Las letras marcadas en negrillas pertenecen al llamado alfabeto Leet Básico. Para aclarar veamos el siguiente ejemplo:

LeccionesWeb = L3cc10n35W38 (Leet Básico)

Para hacerlo más fácil, puedes usar “Universal Leet Converter”. Escribe la contraseña y conviértela a Leet. Después ve a la página del Gibson Research y mide la fortaleza de esta.

Los Problemas de Crear y Recordar las Contraseñas

Crear una contraseña tiene aparte de las consideraciones matemáticas otra que es muy importante, el lado humano, es decir para que sean prácticas deben ser fácil de recordar. Esto complica el asunto para el creador de la contraseña y puede facilitar el trabajo de un hacker tratando de determinar esa contraseña.

La tendencia natural es utilizar palabras que hagan sentido y ahí comienza la facilidad de que un ataque de fuerza bruta basado en lo que se denomina diccionario encuentre la contraseña a una velocidad increíble. Los diccionarios están conformados por palabras y combinaciones de caracteres que son más utilizados en un idioma específico. Un ejemplo claro, tomado de las listas de contraseñas obtenidas por criminales y publicadas online es el uso de la palabra “password” como contraseña.

El otro problema es que muchos utilizan una sola contraseña para acceder a todos los sitios web que requieren autenticación.

Personalmente utilizo una combinación fácil de recordar, a la que agrego caracteres que a simple vista no hacen sentido. Adicionalmente, nunca uso contraseñas que tengan menos de 12 caracteres. Sin embargo, algunas contraseñas las aprendo de memoria, pero otras no, así que no me queda más remedio que acudir a soportes externos donde conservo todas las contraseñas que uso.

Para mantener las contraseñas a mano, puedes crear una hoja de Excel con todos los datos, o cualquier otro fichero de texto. También puedes utilizar un “Password Manager” (hay montones). Por ejemplo, todos los navegadores tienen administradores de contraseñas. Algunos anti virus proveen esa función también.

Resumiendo

En corto, todo lo que hemos hablado puede resumirse de la siguiente manera:

  • Utiliza contraseñas largas (no menos de 8-12 caracteres)
  • La contraseña debe tener entropía (debes agregar números y símbolos)
  • Si tienes problema para recordar usa un administrador de contraseñas
  • No uses una sola contraseña en todos lados
  • Las contraseñas deben cambiarse con cierta frecuencia
  • Si administras un sitio WordPress instala un plugin que impida múltiples intentos de login en un período corto de tiempo

Referencias

[1] WikipediaPassword
[2] WikipediaPassword Strenght
[3] Gibson Research CorporationHow Big is Your Haystack?
[4] Gibson Research CorporationPerfect Passwords
[5] Gibson Research CorporationPerfect Paper Passwords
[6] WikipediaLeet
[7] Robert EckerUniversal Leet Converter
[8] WikipediaLeet (Alphabet)