This project is code complete.
Polypass is polymorphous, one that assumes many forms, secure random password generator. It can generate cryptographically secure random passwords like alphanumeric, alphanumeric symbol, and even natural language passwords.
Years ago while managing large collections of Linux systems with the principles of Infrastructure as Code, I explored the idea of programmatically generating password hashes for local system accounts like the root superuser. My main goal was to utilize a cryptographically secure pseudo-random number generator (CSPRNG) to generate crypt compatible password hashes.
My fascination with the concepts of secure randomness and the guarantee of perfect secrecy collided with an affinity for the Ruby Programming Language. This lead me down a path of writing a simple 80 line Ruby Class with some basic helper methods using a modified version of the random_password_generator RubyGem and fusing it with Ruby's SecureRandom module. Ultimately, I achieved my original goal and it worked great for what it was used for: secure, random, and ephemeral generation of root user password hashes.
Fast forward years later, add an interest in Natural Language Processing, a much deeper understanding of the Ruby Programming Language, the same passion for secure randomness, a general desire to create and share free software, and you end up with a RubyGem called Polypass.
When writing Polypass I really wanted to incorporate a fun facet of Natural Language Processing into the generation of secure and random passwords. Fortunately, there are no lack of resources regarding NLP and I came across a very elegant and lightweight RubyGem called literate_randomizer.
Literate_randomizer combines the probabilistic model of Markov Chains with the natural language of free literature from Project Gutenberg to generate near-English prose random sentences.
Polypass leverages this RubyGem with a cryptographically secure pseudo-random number generator, and some Project Gutenberg supplied literary classics like Dracula, Frankenstein, The Iliad, which allows it to make some pretty amusing, spontaneous, and quite secure passwords.
Polypass is the Portmanteau of the words poly and password. The word Poly's etymological roots come from the Ancient Greek word polús, meaning many, much. Polypass literally means many passwords.
Natural Language Processing
- How Secure Is My Password?
- Password Strength XKCD
- Password Cracking Wikipedia Page
- Password Wikipedia Page