Diceware was developed in 1995 by Arnold Reinhold. It is a method of creating passwords, and passphrases using a six-sided die with a corresponding word list. You take the die, and roll it five times. The numbers (from 1 to 6) are taken from each roll to produce a five-digit number. This five-digit number then corresponds to a word on the Diceware list. The Diceware list has 7,776 words which represent every single combination of the five dice rolls. Each word in the list will add approximately 12.92 bits of entropy to the passphrase. For those who enjoy the maths this is worked out as log²(6⁵) bits and can also be shown as 2¹²⋅⁹² = 7,776. Remember that 1 bit of entropy is equivalent to the result of a single coin toss.
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.92 bits per word.
In 1995, Arnold Reinhold considered that the average user required a minimum of 64bits (five words). In 2014 he upped this to 77 bits (six words), as a response to the higher computational power available.
If you choose a single word from the 7,776 words on the Diceware list, an attacker has a 1 in 7,776 chance of guessing your passphrase. It would take them at most 7,776 tries and on average 3,888 tries (they are 50% likely to guess the word after trying half the list).
If you choose three words that means that there are 7,776³ or 470,184,984,576 different combinations. This is the most amount of tries it could take them and on average roughly 235,000,000,000 tries.
If you choose seven words there are 7,776⁷ or
1,719,070,799,748,422,591,028,658,176 combinations. Now if your attacker had the capability of performing 1 trillion guesses per second, it would take them an average of 27 million years to guess this passphrase. Not bad for 7 randomly picked words and a lot easier to remember than a string of 12 randomly picked characters.
What is the actual difference between the two though? Let’s look at an example: