Dictionary attack
53785
205291968
2008-04-13T08:31:42Z
91.122.166.31
In [[cryptanalysis]] and [[computer security]], a '''dictionary attack''' is a technique for defeating a [[cipher]] or authentication mechanism by trying to determine its decryption key or passphrase by searching a large number of possibilities. In contrast with a [[brute force attack]], where all possibilities are searched through exhaustively, a dictionary attack only tries possibilities which are most likely to succeed, typically derived from a list of words in a dictionary. Generally, dictionary attacks succeed because many people have a tendency to choose [[password]]s which are short (7 characters or fewer), single words in a dictionary, or are simple variations that are easy to predict, such as appending a single digit to a word.
==Use==
Dictionary attacks may be applied in two main situations:
* in [[cryptanalysis]], in trying to determine the decryption key for a given piece of ciphertext;
* in [[computer security]], in trying to circumvent an [[authentication]] mechanism for accessing a computer system by guessing passwords.
In the latter case, the effect of a dictionary attack can be greatly reduced by limiting the number of authentication attempts that can be performed each minute, and even blocking further attempts after a threshold of failed authentication attempts is reached. Generally, 6 attempts is considered sufficient to cope with mistakes made by legitimate users; beyond that, one can safely assume that the user is a malicious attacker.
However many systems store a hashed version of the password and make it available under certain circumstances, such as a [[challenge-response authentication]] exchange between two parties. If an attacker can obtain the hashed password, they can test guessed passwords rapidly, often at a rate of tens or hundreds of millions of guesses per second. [http://www.wired.com/politics/security/commentary/securitymatters/2006/12/72300?currentPage=2] The rate of guessing can be sharply reduced by using a [[key derivation function]] that is computationally intensive, such as [[PBKDF2]]. Since users often choose easily guessed passwords, this has historically succeeded more than 2 times out of 10 when a reasonably large list is used. Lists of commonly selected passwords are widely available on the [[Internet]] as are dictionaries for most human languages (even those no longer used), meaning even the use of foreign words has limited value in preventing dictionary attacks.
[[Spammers]] often use a form of dictionary attack, sometimes known as a [[Directory Harvest Attack]], for [[e-mail address harvesting]]. For example, a [[spammer]] may try sending messages to adam@example.com, barbara@example.com, carl@example.com, etc. Any addresses to which messages are delivered, as opposed to being bounced back, can be added to the spammer's list of known-valid addresses.
[[Clifford Stoll]]'s book, ''[[The Cuckoo's Egg (book)|The Cuckoo's Egg]]'', contains an account of a dictionary attack against the encrypted passwords kept in the [[passwd]] file on Unix systems, and of the reaction to the successful attack by the man ([[Robert Morris (cryptographer)|Robert Morris]]) who invented the one-way encryption system used for login passwords.
==Pre-computed dictionary attack==
It is possible to achieve a [[time-space tradeoff]] through precomputation by encrypting and storing a list of encrypted dictionary words, sorted by the encrypted value. This requires a considerable amount of preparation time, but makes the actual attack almost instantaneous. The storage requirements for the pre-computed tables were once a major cost, but are less of an issue today due to the rapid improvements in [[hard drive]] technology. Pre-computed dictionary attack are particularly effective when a large number of passwords are to be cracked at once. A more refined approach involves the use of "[[rainbow table]]s." [[Salt (cryptography)|Salting]] is a technique that forces the encrypted dictionary to be recomputed for each password sought, potentially making precomputation infeasable, provided the salt is large enough.
==See also==
* [[Brute force attack]]
* [[Password cracking]]
* [[Password strength]]
* [[Rainbow table]]
* [[Key derivation function]]
* [[Key strengthening]]
* [[E-mail address harvesting]]
==Examples==
Well known examples of dictionary attack software tools:
* [[Crack (software)|Crack]] by Alec Muffett
* [[John the Ripper]]
* [[L0phtCrack]]
* [[Cain (software)|Cain]]
==External links==
* [http://www.washingtonpost.com/wp-dyn/articles/A6098-2005Mar28.html US Secret Service use a distributed dictionary attack on suspect's password protecting encryption keys]
* [http://www.word-list.com Full dictionaries (in .txt format) in 16 languages (af, cr, cz, dk, nl, en, fi, fr, de, ir, it, la, no, pl, sp, se)]
* [http://www.outpost9.com/files/WordLists.html Library with several Dictionaries]
[[Category:Cryptographic attacks]]
[[da:Ordbogsangreb]]
[[de:Wörterbuchangriff]]
[[es:Ataque de diccionario]]
[[fr:Attaque par dictionnaire]]
[[it:Attacco a dizionario]]
[[nl:Woordenlijstaanval]]
[[ja:辞書攻撃]]
[[pl:Atak słownikowy]]
[[ru:Перебор по словарю]]
[[simple:Dictionary attack]]
[[sv:Dictionary attack]]