Diceware is used to create cryptographically strong passphrases. It is based on the principle that the truly random selection, based on rolls of dice, of words in a wordlist can result in easily memorable passwords that are also extremely resistant to attack by even the most powerful adversaries. Passwords that are six words or longer are thought to be safe for high security applications.
There are words in your password, which is ~
bits of entropy (
~12.92 bits/word
and ~5.16/symbol
).
That many words equates to an effective keyspace of ~ possible keys (
(7776^words)/2
which is 50% of the total key space since on average a key will be found in that reduced keyspace). Conservatively assuming an adversary can guess passwords at the rate of a trillion () keys/second, as Edward Snowden claims, an exhaustive brute-force search on half the total keyspace might take:
~ seconds
~ minutes
~ hours
~ days
~ years
~ x avg. lifespan
~ millenia
~ x age Universe
It's really simple. Just click on one of the random passphrase generator buttons above. This will allow you to generate passphrases that are 4,5,6,7, or 8 words long. Clicking any of these again will generate a totally new passphrase and your will never see the previous one again.
At any time you can click on the + Word
or + Symbol
buttons to add them to the existing passphrase.
Lastly, you can manually roll real dice (two or five dice rolls for each symbol or word) and enter the results of each set of rolls in the form and hit the return/enter key to add that word to your passphrase.
Each word or symbol displayed will also be shown with its index number that was used to look it up in the diceware word list in small text.
You can copy the generated passphrase from the copyable string on the page. You should store it somewhere safe and secure. You might want to write it down and refer to the written version until you can remember it which shouldn't take long.
Reload or close the browser tab once you are done so others can't discover your passphrase.
window.crypto.getRandomValues()
CSPRNG that ships with modern browsers to get random bytes is used. The Bytes output from the RNG are converted to die rolls with (BYTE % 6) + 1
. You can learn more about window.crypto.getRandomValues()
and make your own determination. Many cryptographic library authors are now targeting the browser environment and most are using this API as their primary source of entropy.
Math.random()
as the source of random numbers which is not secure. Additionally this page's JavaScript and CSS files are totally self-contained and the site itself is served over a known good TLS connection which helps prevent MITM attacks on the code or the wordlists.
You should ensure that:
Entropy is a measure of the uncertainty or randomness of a system. The concept is a difficult one to grasp fully and is confusing, even to experts. Strictly speaking, any given passphrase has an entropy of zero because it is already chosen. It is the method you use to randomly select your passphrase that has entropy. Entropy tells how hard it will be to guess the passphrase itself even if an attacker knows the method you used to select your passphrase. A passphrase is more secure if it is selected using a method that has more entropy.
Entropy is measured in bits. The outcome of a single coin toss -- "heads or tails" -- has one bit of entropy.
Each standard Diceware word is assigned ~12.92 bits of entropy (Math.log2(7776)
), each special character added is ~5.16 bits (Math.log2(36)
). The total is the sum of the entropy in each full word or special character.
Yes! The source code is available on Github. Its a simple static HTML application and you can clone and run it by opening the index.html
file in your browser. When run locally it should word when your computer is completely offline.
Yes, I believe so.