Ataque de dicionario

En criptoanálise e seguridade informática, un **ataque de dicionario** é un ataque que emprega un subconxunto restrinxido dun espazo de claves para frustrar un mecanismo de cifrado ou autenticación tentando determinar a súa clave de descifrado ou contrasinal, ás veces probando miles ou millóns de posibilidades obtidas a miúdo de listas de violacións de seguridade pasadas.

## Técnica 
Un ataque de dicionario baséase en probar todas as cadeas dunha lista preestablecida. Estes ataques empregaban orixinalmente palabras que se atopaban nun dicionario (de aí a frase *ataque de dicionario*); non obstante, agora hai listas moito máis grandes dispoñibles na Internet aberta que conteñen centos de millóns de contrasinais recuperados de filtracións de datos pasadas. Tamén existe software de cracking que pode usar tales listas e producir variacións comúns, como substituír números por letras de aspecto similar. Un ataque de dicionario só proba aquelas posibilidades que se consideran con máis probabilidades de éxito. Os ataques de dicionario adoitan ter éxito porque moita xente tende a escoller contrasinais curtas que son palabras ordinarias ou contrasinais comúns; ou variantes obtidas, por exemplo, engadindo un díxito ou un carácter de puntuación. Os ataques de dicionario adoitan ter éxito, xa que moitas das técnicas de creación de contrasinais máis empregadas están cubertas polas listas dispoñibles, combinadas coa xeración de patróns de software de craqueo. Un enfoque máis seguro é xerar aleatoriamente un contrasinal longo (de 15 letras ou máis) ou unha frase de contrasinal de varias palabras, usando un programa de xestión de contrasinais ou escribindo un contrasinal manualmente.

O administrador do servidor pode disuadir os ataques de dicionario empregando un algoritmo de hash computacionalmente máis caro. Bcrypt, scrypt e Argon2 son exemplos de funcións que requiren moitos recursos e unha potencia computacional significativa para procesalas, o que permite grandes melloras na seguridade contra os ataques de dicionario. Aínda que outras funcións de hash, como SHA e MD5, son moito máis rápidas e menos custosas de calcular, pódense reforzar aplicándoas varias veces a unha cadea de entrada mediante un proceso chamado estiramento de claves. Un atacante tería que saber aproximadamente cantas veces se aplicou a función para que un ataque de dicionario fose viable.

## Ataque de dicionario precomputado/ataque de táboa arco da vella 
É posible conseguir un compromiso espazo-temporal calculando previamente unha lista de hashes de palabras do dicionario e almacenándoas nunha base de datos usando o hash como clave. Isto require unha cantidade considerable de tempo de preparación, pero permite que o ataque real se execute máis rápido. Os requisitos de almacenamento para as táboas precomputadas antes supoñían un custo importante, pero agora son menos problemáticos debido ao baixo custo do almacenamento en disco. Os ataques de dicionario precomputado son especialmente eficaces cando se debe piratear un gran número de contrasinais. O dicionario precomputado só precisa xerarse unha vez e, unha vez completado, os hashes dos contrasinais pódense consultar case ao instante en calquera momento para atopar o contrasinal correspondente. Unha estratexia máis refinada implica o uso de *táboas arco da vella*, que reducen os requisitos de almacenamento a custo de tempos de busca lixeiramente máis longos. (Consulta o hash de LM para ver un exemplo dun sistema de autenticación comprometido por un ataque deste tipo.)

Os ataques de dicionario precomputado, ou "ataques de táboa arco da vella", poden frustrarse mediante o uso de *sal*, unha técnica que forza a recalcular o dicionario hash para cada contrasinal buscado, facendo que a precomputación sexa inviable, sempre que o número de valores sal posibles sexa o suficientemente grande.

## Notas 
## Véxase tamén 
### Ligazóns externas 
*