martes, 4 de octubre de 2011

Contraseñas Fáciles de Recordar Pero Robustas


QAZwsx no es una buena contraseña. Tampoco lo es 123456. Los passwords fáciles de adivinar tienen una gran desventaja: que son fáciles de adivinar. Y aunque me preocuparía obviamente que un fulano llevara a cabo esta adivinación, es un hecho que existen herramientas con bastos diccionarios y listas que se encargan automáticamente de intentar las miles de contraseñas que probablemente un usuario (o administrador) pueda llegar a usar.
Así pues, 5noopY, 19761976, 4dmin, F4ust02000, AlejanDRO, Facebook1, tequiero o ammerica no son buenas elecciones aunque a primera vista puedan parecerlo. Los atacantes ya se saben los truquitos de cambiar algunas letras por números, poner sólo algunas letras en mayúsculas o la costumbre de usar nombres de artistas o equipos de futbol como contraseñas (sin olvidar poner 2000 al inicio o al final, es clásico). Y a partir de ahí, se hacen variantes (AlejandRO, AlejanDRO, AlejaNDRO, etc.) y se construye una lista con la cual se efectuarán los cientos de miles de intentos (online u offline).
Y a veces no es necesario hacer listas interminables de posibles contraseñas, basta ver el ejemplo del gusano Morto.
Las contraseñas hoy en día se usan para acceder a redes inalámbricas, para entrar a un sistema de cómputo, un servicio online (Facebook), entrar a la banca en línea o proteger un disco duro cifrado entre muchos otros usos cuyo objetivo es la de autenticar a alguien.
Muchos usuarios ante la cantidad considerable de contraseñas que deben de recordar, optan por usar el mismo password (o máximo un par de ellos) para los N servicios que usan. Y claro, seleccionan contraseñas fáciles de aprenderse y por lo tanto de adivinar. Los entiendo. No es fácil recordar 37 diferentes contraseñas complejas: {bL2BgB*~cwS@E:^PR'R"NPF/U&.
Basta de choro. ¿Qué podemos hacer? A continuación 3 opciones que yo les recomendaría.
Técnica HayStack.
Algunos expertos te dirán que uses contraseñas mega-complejas, con alta entropía ya que de otra manera no sirven. Sólo están contentos si seleccionas ##&ñQQ22!(/!4034Fq$RETyu/%GGc. “¡Maravilloso!”, te dirán. Sí claro, quiero ver quién se lo aprende..me cae que ni el experto usa esta clase de contraseñas. Ok, qué hacer? Técnica Haystack.
El inventor de este método es Steve Gibson, un verdadero experto en seguridad. En su página viene mucho mejor explicado. Aquí un resumen. Romper contraseñas por fuerza bruta se basa en el hecho de probar “n” combinaciones posibles de contraseñas, empezando por las más comunes y posteriormente “armar” posibles contraseñas plausibles; todo lo anterior utilizando herramientas de software que automatizan la labor.
Es posible generar contraseñas robustas pero fáciles de recordar si se tiene en cuenta el tamaño del “search space” o espacio de búsqueda según nos lo explica Steve.
Es posible por lo tanto generar una contraseña fácil de recordar y volverla robusta al completarla con caracteres (“padding”); de esta manera hacemos que el espacio de búsqueda o “search space” se amplíe considerablemente haciendo un hackeo por fuerza bruta excesivamente tardado. Asimismo se puede complementar esta técnica al introducir mayúsculas y números de tal forma que por ejemplo “teclado” queda compuesto como: “T3clado..........”
Vemos la “T” mayúscula, un “3” en lugar de “e” con diez puntos ”.” y según la calculadora del sitio ya mencionado, esta contraseña tardaría varios millones de años en descubrirse por un método de fuerza bruta/exhaustivo (asumiendo a un equipo haciendo mil intentos por segundo en tiempo real).
Otros ejemplos: “Fau5to%%%%%%%%%%%%”, “Rut3ador!!!!!!!!!!!!”, “G4to************”.
La ventaja del método de Haystack es que se pueden usar palabras comunes y muy fáciles de recordar pero muy difíciles de hackear por métodos de fuerza bruta. Entre más “padding” se agregue, más robusta será la contraseña pero mantiene su simplicidad. El tamaño sí importa..no tanto la alta entropía.
Técnica basada en Frases.
Existen varias maneras de crear una “passphrase” en lugar de un “password”. Si buscas en Google “create passphrase” encontrarás varias sugerencias. Por ejemplo una la propone Microsoft:
Iniciamos con una frase que te sea fácil de recordar: “Me encanta la pizza”. Le quitamos los espacios en blanco “Meencantalapizza”. Sustituimos algunas letras por números (se recomienda siempre sustituir los mismos números por las mismas letras para no hacerse bolas), por ejemplo “4” en lugar de “a”: “Meenc4nt4l4pizz4”. Vamos bien pero lo podemos hacer más robusto agregando dos caracteres especiales al final “Meenc4nt4l4pizz4%%”. Y violà. El enunciado clave fácil de recordar es “me encanta la pizza”.
Técnica basada en Papel.
Un experto en seguridad te va a decir que nunca, nunca pongas un password en un papel. Como yo no soy ningún experto, te digo que sí lo pongas. Claro, siguiendo ciertas reglas. Googleando “paper password” encontrarás varias técnicas. Una que me llamó la atención es la de Amit Agarwal en el sitio de Labnol.
Esta técnica se basa en el hecho de crear contraseñas que se construyen a partir de algo que se tiene (un papel de matriz de contraseñas) y algo que se sabe y que es una cadena pequeña de caracteres que el usuario memoriza para añadirla a lo que será la contraseña final.
Usando un papel (que recortaremos y traeremos con nosotros) construiremos una matriz:
Letra
A B
C D
E F
G H
I J
K L
M N
N O
P Q
R S
T U
VW
XYZ
Qi1
oc
FS
DEo
ClT
f)0
SGE
5Ss
Gr5
#$g
MN!
GT$
D&
Oot
9cc
~":
cj7
[aA
uic
nex
3NN
:Q$
jO
Re#
Mkb
1?p
xOO
%!1
0!P
F?z
TIb
57>
maz
nSe
aHl
ycI
XIr
irP
DOm
5f
Oot
N8h
9K
Zsm
g3I
d5
dG
mD
WXd
Xk
Qip
CX
LD
jPW
F3
fft
63Q
3E5
50D
B09
yBh
jj
A40
4CF
0D

Empecemos con una palabra sencilla de recordar: “gato”. La primera letra “g” se convierte en “Deo” siguiendo la matriz. Y continuando con el resto de las letras, nos queda que gato es “DEoOotXIrdG”.
Finalmente agregamos una serie de caracteres fáciles de recordar. Por ejemplo “México” con un par de números en lugar de letras: “M3xic0”. Y lo agregamos al final de la serie de caracteres que ya teníamos: “DEoOotXIrdGM3xic0”.
Si perdemos la matriz (recuerden que la tenemos impresa), resulta que el atacante no sabe que la palabra que seleccionamos fue “gato” y tampoco sabrá que le agregamos “M3xic0” al final.
Conclusión.
El mensaje a final de cuentas es que uses contraseñas difíciles de adivinar y de ser posible que uses passwords únicos para cada sitio/servicio/equipo que uses (recuerda que te puedes apoyar de la herramienta LastPass).
Hay diferentes técnicas que puedes llegar a utilizar para generar contraseñas robustas (a mí me convence la HayStack de Gibson); si no te gustan las aquí expuestas busca en Internet otras que te parezcan útiles, sencillas pero robustas.
A pesar de las promesas de dispositivos biométricos o los one-time passwords (tokens), hoy por hoy la manera más usada para autenticar son las contraseñas, así es que mientras otra cosa no suceda, es mejor aprender a convivir con ellas de la mejor manera posible, no crees?

7 comentarios:

Chromus dijo...

Muy buen articulo, estaba armando algo similar para mis clientes.
Sobretodo en la grilla para recordar contraseñas.
saludos

Fausto Cepeda dijo...

Gracias x tu comentario, espero haya sido de utilidad. Un saludo!

WPáez dijo...

Yo uso el metodo del acróstico, arma una frase y solo tomar las primeras palabras. "Maldita de mi ex, devuelveme todo el dinero que te llevaste" >> Mdme,Dte$qtl

Fausto Cepeda dijo...

WPáez: lo q más me gustó es la frase! :-)

LUNADC dijo...

Como siempre, agradezco tus aportes de gran utilidad

LUNADC dijo...

Como siempre, agradezco tus aportes de gran utilidad

Fausto Cepeda dijo...

Gracias Dianely.