Las tarjetas gráficas o GPU son un poderoso procesador por sí mismo. Pero no un procesador cualquiera, sino uno de esos que hacen las cosas tan en paralelo que es casi como tener una pequeña supercomputadora en un chip. Por eso no es sorprendente que con la mejora de las interfaces de programación (API) para GPU, el abaratamiento de estos dispositivos y su cada vez mejor desempeño, surjan aplicaciones antes impensables para una computadora personal. Una de esas aplicaciones es la obtención de contraseñas con ataques de fuerza bruta.
Un ataque de fuerza bruta es, algorítmicamente hablando, el que se realiza explorando todo un universo de soluciones. En el caso de la obtención de contraseñas implica explorar todas las posibles combinaciones de contraseñas a partir de un alfabeto dado, tal vez con ayuda de algún diccionario. Los ataques de este estilo no son tan “a lo bruto”, por el contrario ciertas técnicas tienen que ser contempladas para que resulte un programa tan eficiente como sea posible.
El GPU por su parte ofrece una arquitectura interna similar a un arreglo de procesadores independientes pero interconectados entre sí para para transferir datos, compartir memoria, casi como en un cluster de computadoras. Las GPU son así porque los algoritmos fundamentales para la generación de gráficos por computadora son altamente paralelizables, es decir, pueden descomponerse en pequeñas instancias independientes que resuelven una tarea común: generar gráficos 3D, sus polígonos, multiplicar las matrices correspondientes, etc.
Y si el algoritmo implica hacer cómputo paralelo, qué mejor cuando la máquina donde se ejecute también lo sea. En el caso de la GPU cada unidad de procesamiento ejecuta un hilo de ejecución, una subtarea que resuelve una instancia del problema principal a una velocidad de vértigo.
NVIDIA entendió pronto que sus GPU podrían tener grandes aplicaciones creadas por los usuarios, así que entregó a los desarrolladores un API adecuada para ello. Esto significó un paso adelante para la historia del cómputo científico, donde a un costo relativamente bajo los científicos podrían hacer supercomputación (y llevarla consigo en sus laptops o a su oficina). La NVIDIA Tesla, por ejemplo, es una “máquina de escritorio” que según el modelo puede tener de 128 hasta 1792 unidades (cores) de procesamiento. Tianhe-1A, la supercomputadora de Tianjin, China, tiene 7.168 máquinas NVIDIA Tesla (operadas por Linux, por cierto) y es la segunda más rápida del mundo.
Bien, pues regresando al asunto de las contraseñas tenemos que pruebas de desempeño como la de Vijay Devakumar demuestran el poder impresionante de las GPU para desvelarlas (no es la primera ni la última prueba al respecto). Estos fueron las condiciones su experimento:
-
Usó la herramienta ighashgpu del ruso Ivan Golubev para ataques de fuerza bruta vía GPU contra diversos algoritmos de cifrado como MD5, SHA1, etc.
-
Usó, para efectos comparativos, el software Cain & Abel, que utiliza únicamente el CPU
-
Las contraseñas estaban cifradas en NTLM, de Microsoft
-
La GPU fue una ATI Radeon 5770
Estos fueron sus resultados (tiempo en descifrar la contraseña) para diferentes longitudes de contraseñas alfanuméricas:
-
5 carácteres: Cain & Abel 24 segundos, ighashgpu menos de un segundo
-
6 carácteres: Cain & Abel 90 minutos, ighashgpu 4 segundos
-
7 carácteres: Cain & Abel 4 días, ighashgpu 17.5 minutos
-
8 carácteres: Cain & Abel 256 días, ighashgpu 18.5 horas
-
9 carácteres: Cain & Abel 43 años, ighashgpu 48 días
Las velocidades son in-com-pa-ra-bles… Aquí un vídeo para demostrarlo.
Expertos en seguridad como ESET Latinoamerica advierten del peligro que representa una tecnología así en manos equivocadas… Pero tranquilos, no se asusten pues no todo es malo, porque como tecnología la de las GPU es una verdadera joya con muchas aplicaciones científicas que vienen de la mano con una nueva generación de algoritmos paralelos.
Lo que viene en camino es el cómputo híbrido, CPU más GPU, por todas partes, en todas nuestras aplicaciones. Y una potencial supercomputadora en cada hogar