MyPass is a tool to generate different passwords for different sites with a given passphrase. It uses the password generation algorithm of One Shall Pass (1SP). You can specify options like password length, number of symbols, etc.
Note: MyPass does NOT ignore spaces in your passphrase, this is different from 1SP.
MyPass is implemented as:
For differences between passwords and passphrases, refer to Jeff Artwood's article Passwords vs. Pass Phrases.
Generally, choose a passphrase that's long (at least around 20 characters), easy to remember by yourself, hard to guess by others. Including capitalization, punctuation and numbers in your passphrase would be even better.
Your passphrase is never stored anywhere by MyPass. That's why you need to type it every time you use MyPass.
The password generation algorithm is the same as 1SP. Basically, a 512-bit key is generated using PBKDF2 from your passphrase, using your email as the salt. That key is then used in HMAC-SHA512 to generate password for each site. For the detailed algorithm and how secure it is, please refer to 1SP's README.
chrome.storage.sync
, will be synchronized by ChromeMyPass itself does NOT encrypt site options when storing to either chrome.sync.storage
or local storage and please let me explain why in a moment. For Chrome extension users, I recommend setting Chrome to encrypt all synced data and thus have your site options encrypted. (You need to manually set this in "Advanced sync options" in Chrome and use a separate passphrase.)
If someone get your site options data either by breaking into your computer or Google's cloud storage,
So encrypting site options by passphrase generated keys actually has more serious security risk, that's why I choose not to encrypt site options.
You need Node.js installed and file systems that supports symbolic links. Build in the project root directory:
# Install dependencies
npm install
# Compile CoffeeScript source and create bundle with browserify
make
To reduce the amount of CSS/JavaScript to be included, I customized bootstrap with only the following items selected:
I also removed invalid input CSS so they don't look abrupt on iOS.
The password generation code is mostly copied from 1SP.
Icon designed by @naruil.