Master Password (algorithm) explained

Master Password
Author:Maarten Billemont
Latest Release Version:2.3
Programming Language:Java, C, JavaScript
Operating System:Microsoft Windows and Unix-like, including OS X, iOS and Android
Language:English
Genre:Password generator
License:GNU General Public License

Master Password is a type of algorithm first implemented by Maarten Billemont for creating unique passwords in a reproducible manner. It differs from traditional password managers in that the passwords are not stored on disk or in the cloud, but are regenerated every time from information entered by the user: Their name, a master password, and a unique identifier for the service the password is intended for (usually the URL).

By not storing the passwords anywhere, this approach makes it harder for attackers to steal or intercept them. It also removes the need for synchronization between devices, backups of potential password databases and risks of data breach. This is sometimes called sync-less password management.

Algorithm

Billemont's implementation involves the following parameters:[1]

Master key generation

In Billemont's implementation, the master key is a global 64-byte secret key generated from the user's secret master password and salted by their full name. The salt is used to avoid attacks based on rainbow tables. The scrypt algorithm, an intentionally slow key derivation function, is used for generating the master key to make a brute-force attack infeasible.

salt = "com.lyndir.masterpassword" + length(name) + namemaster_key = scrypt(master_password, salt, 32768, 8, 2, 64)

Template seed generation

The template seed is a site-specific secret in binary form, generated from the master key, the site name and the counter using the HMAC-SHA256 algorithm. It is later converted to a character string using the password templates. The template seed makes every password unique to the website and to the user.

seed = hmac_sha256(master_key, "com.lyndir.masterpassword" + length(site_name) + site_name + counter)

Password generation

The binary template seed is then converted to one of six available password types. The default type is the Maximum Security Password, others can be selected if the service's password policy does not allow passwords of that format:

Implementations

Billemont also created multiple free software implementations of the Master Password algorithm, licensed under the GPLv3.:[2]

Notes and References

  1. Web site: The Master Password Algorithm . Billemont . Maarten . 8 May 2015. https://web.archive.org/web/20171209003913/http://masterpasswordapp.com/algorithm.html. December 9, 2017.
  2. Web site: License file of the MasterPassword repository. 15 May 2015. GitHub.
  3. Web site: Release 1.0.0. 15 May 2015. GitHub. Billemont. Maarten.
  4. https://addons.mozilla.org/nl/firefox/addon/masterpassword-firefox/?src=search Masterpassword's Firefox add-on
  5. https://chrome.google.com/webstore/detail/masterpassword-for-chrome/hifbblnjfcimjnlhibannjoclibgedmd Masterpassword's Chrome plugin
  6. Web site: Master Password Homepage. 15 May 2015. Billemont. Maarten.