En criptoanálisis y seguridad informática , un ataque de diccionario es un ataque que utiliza un subconjunto restringido de un espacio de claves para derrotar a un mecanismo de cifrado o autenticación al intentar determinar su clave de descifrado o frase de contraseña , a veces probando miles o millones de posibilidades probables [1] a menudo obtenidas de listas de violaciones de seguridad pasadas.
Un ataque de diccionario se basa en probar todas las cadenas de una lista preestablecida. Tales ataques originalmente usaban palabras que se encontraban en un diccionario (de ahí la frase ataque de diccionario ); [2] sin embargo, ahora hay listas mucho más grandes disponibles en Internet abierta que contienen cientos de millones de contraseñas recuperadas de violaciones de datos pasadas. [3] También hay software de craqueo que puede usar tales listas y producir variaciones comunes, como sustituir números por letras de apariencia similar . Un ataque de diccionario prueba solo aquellas posibilidades que se consideran más probables de tener éxito. Los ataques de diccionario a menudo tienen éxito porque muchas personas tienen una tendencia a elegir contraseñas cortas que son palabras ordinarias o contraseñas comunes; o variantes obtenidas, por ejemplo, al agregar un dígito o un carácter de puntuación. Los ataques de diccionario a menudo tienen éxito, ya que muchas técnicas de creación de contraseñas comúnmente utilizadas están cubiertas por las listas disponibles, combinadas con la generación de patrones de software de craqueo. Un enfoque más seguro es generar aleatoriamente una contraseña larga (15 letras o más) o una frase de contraseña de varias palabras , utilizando un programa de administración de contraseñas o escribiendo manualmente una contraseña.
Es posible lograr un equilibrio entre tiempo y espacio calculando previamente una lista de hashes de palabras del diccionario y almacenándolos en una base de datos usando el hash como clave . Esto requiere una cantidad considerable de tiempo de preparación, pero permite que el ataque real se ejecute más rápido. Los requisitos de almacenamiento para las tablas precalculadas alguna vez fueron un costo importante, pero ahora son un problema menor debido al bajo costo del almacenamiento en disco . Los ataques de diccionario precalculado son particularmente efectivos cuando se debe descifrar una gran cantidad de contraseñas. El diccionario precalculado necesita generarse solo una vez, y cuando se completa, los hashes de contraseñas se pueden buscar casi instantáneamente en cualquier momento para encontrar la contraseña correspondiente. Un enfoque más refinado implica el uso de tablas arco iris , que reducen los requisitos de almacenamiento a costa de tiempos de búsqueda ligeramente más largos. Consulte LM hash para ver un ejemplo de un sistema de autenticación comprometido por un ataque de este tipo.
Los ataques de diccionario precalculado, o "ataques de tabla arco iris", se pueden frustrar mediante el uso de salt , una técnica que obliga a volver a calcular el diccionario hash para cada contraseña buscada, lo que hace que el precálculo sea inviable, siempre que el número de posibles valores de sal sea lo suficientemente grande. [4]