https://github.com/grempe/diceware
Any bug reports are welcome.
This was a weekend project that was forked from a project that I thought was nicely done but needed some improvements (https://github.com/yesiamben/diceware). Notably that project:
- uses the JavaScript Math.random() API which is known to not be cryptographically secure. - is not served over an HTTPS connection. - requires re-download of all files to change language. - tracks all page views with Google Analytics - leaked information about the users preferred language via a URL query string parameter. - used inline script tags which make it incompatible with lockdown via a Content Security Policy.
So I remedied all of these issues and re-factored and modernized the code. The source of randomness is now the well supported window.crypto.getRandomValues() API which is cryptographically secure. It now also uses a fully Bootstrap based UI and provides password strength feedback using the excellent zxcvbn library from Dropbox (https://blogs.dropbox.com/tech/2012/04/zxcvbn-realistic-pass...). The application will now also fully work offline (including language switches). All of the code is signed (keybase.io GPG SIGNED.md) and can be verified and run locally by cloning the repository.
I hope you enjoy this. I submitted a pull request to the upstream repository as well but I have not heard back anything to date.
Cheers,
Glenn
Sure, you can run zxcvbn over a Diceware passphrase, but it's meaningless, since the whole premise of Diceware is that the attacker may know that you're using Diceware. It is designed with that conservative mindset.
If you don't care about that aspect, there are better ways to derive passphrases than Diceware.
Every Diceware word yields 12.9 bits of entropy, so your example passphrase yields 90 bits, not 117.