Diceware is a method for creating passphrases, passwords, and other cryptographic variables using ordinary dice as a hardware random number generator. For each word in the passphrase, five rolls of the dice are required. The numbers from 1 to 6 that come up in the rolls are assembled as a five-digit number, e.g. 43146. That number is then used to look up a word in a word list. In the English list 43146 corresponds to munch. By generating several words in sequence, a lengthy passphrase can be constructed.
A Diceware word list is any list of unique words, preferably ones the user will find easy to spell and to remember. The contents of the word list do not have to be protected or concealed in any way, as the security of a Diceware passphrase is in the number of words selected, and the number of words each selected word could be taken from. Lists have been compiled for several languages, including Basque, Bulgarian, Catalan, Chinese, Czech, Danish, Dutch, English, Esperanto, Estonian, Finnish, French, German, Italian, Japanese, Maori, Norwegian, Polish, Portuguese, Romanian, Russian, Slovenian, Spanish, Swedish and Turkish.
The level of unpredictability of a Diceware passphrase can be easily calculated: each word adds 12.9 bits of entropy to the passphrase (that is, bits). Originally, in 1995, Diceware creator Arnold Reinhold considered five words (64 bits) the minimal length needed by average users. However, starting in 2014, Reinhold recommends that at least six words (77 bits) should be used.
This level of unpredictability assumes that a potential attacker knows that Diceware has been used to generate the passphrase, knows the particular word list used, and knows exactly how many words make up the passphrase. If the attacker has less information, the entropy can be greater than 12.9 bits per word.
The above calculations of the Diceware algorithm's entropy assume that, as recommended by Diceware's author, each word is separated by a space. If, instead, words are simply concatenated, the calculated entropy is slightly reduced due to redundancy; for example, the three-word Diceware phrases "in put clammy" and "input clam my" become identical if the spaces are removed.
The Electronic Frontier Foundation published three alternative English diceware word lists in 2016, further emphasizing ease-of-memorization with a bias against obscure, abstract or otherwise problematic words; one tradeoff is that typical EFF-style passphrases require typing a larger number of characters.
The original diceware word list consists of a line for each of the 7,776 possible five-die combinations. One excerpt:
... 43136 mulct 43141 mule 43142 mull 43143 multi 43144 mum 43145 mummy 43146 munch 43151 mung ...
Diceware wordlist passphrase examples:
- dobbs bella bump flash begin ansi
- easel venom aver flung jon call
EFF wordlist passphrase examples:
- conjoined sterling securely chitchat spinout pelvis
- rice immorally worrisome shopping traverse recharger
- Brute-force attack
- Key size discusses how many bits of key are considered "secure".
- The PGP biometric word list uses two lists of 256 words, each word representing 8 bits.
- S/KEY uses a list of 2,048 words to encode 64-bit numbers as six English words
- Password strength
- Random password generator
- Brodkin, Jon (2014-03-27). "Diceware passwords now need six random words to thwart hackers". Ars Technica.
- "Change Your Password: This New Word List Makes the Diceware Method User Friendly". Observer. 22 September 2016. Retrieved 4 December 2016.
- "EFF's New Wordlists for Random Passphrases". Electronic Frontier Foundation. 19 July 2016. Retrieved 4 December 2016.
- "Diceware wordlist". Archived from the original on 5 December 2016. Retrieved 4 December 2016.
- Internet Secrets, 2nd Edition, John R. Levine, Editor, Chapter 37, IDG Books, 2000, ISBN 0-7645-3239-1
- English diceware page has the complete description and word lists in several languages.
- A client-side diceware multi-wordlist password generator with complete source code
- Web-based diceware app that uses the cryptographically secure getRandomValues() function
- English Diceware wordlist from the Electronic Frontier Foundation