Como sabéis, casi siempre las constraseñas son hasheadas. Un hash de una cadena de caracteres es una conversión algorítmica de dicha cadena, de tal manera, que desde la restultante (o hash), no se puede volver a la cadena de texto plano base. Por tanto, la única manera que tenemos para extraer el texto plano de un hash es, probar una y otra vez hasta dar con la cadena correcta.
De esta manera, si tenemos una cadena CADENA, que convertimos en un hash HASH, la única manera de hacer la operación contraria es probar el hash de todas las posibles conbinaciones.
Se habla muchas veces de como son las contraseñas ideales, de que cuanto más aleatoria, más caracteres de distinto tipo ($4a^*@eE) mejor, y como la longitud es uno de los factores más importantes, las hace más dificiles de crackear, sin embargo, ahora, me gustaría darle un enfoque más matemático al asunto. Para esto, y para ver las cosas de una manera más práctica sin pararme a repetir una y otra vez el decálogo de "buenas prácticas poniendo contraseñas"; y como no todo depende de nosotros, me gustaría antes situar al lector en el punto tecnológico en el que estamos respecto a la seguridad
¿En que punto estamos?
Atendiendo a la ley de Moore y a los avances que se darán en computación cuantica y a las posibilidades que nuevos materiales como el grafeno dan a la informática, podemos decir que el futuro pinta negro, las contraseñas dejarán de ser útiles cuando la cadena de texto a memorizar tenga que ser suficientemente larga para ser segura, que nadie la pueda recordar.
Así, hace años, cuando internet era algo que estaba empezando, las contraseñas de unos pocos dígitos eran algo normal, y bastante seguro. Los procesadores tardaban años en iterar 15 caracteres. Nadie con un ordenador domestico podía permitirse hacer ese cálculo, de hecho, si la mayoría intentáis hacerlo en vuestras casas, para caracteres alfanuméricos, probablemente tardéis un par de días utilizando la potencia de un procesador decente.
Pues bien, los procesadores se han pasado de moda. Hace unos años, la discusión en password cracking era CPU vs GPU, hoy, ya hemos resuelto esa cuestión, la GPU ha ganado de largo. Para crackear contraseñas, ya no se mandan las operaciones matemáticas y los algoritmos a los 4 núcleos de un procesador, si no a los miles de hilos de nuestras tarjetas gráficas. Sin ir más lejos, en ordenadores destinados a hacer grandes cálculos, se están dejando de utilizar procesadores, para utilizar gráficas con tecnología CUDA (procesamiento paralelo). Esto aplicado a la seguridad de las contraseñas, permite romper contraseñas a mucha más velocidad que en el pasado.