Giter VIP home page Giter VIP logo

dpg's Introduction

DPG - Deterministic Password Generator

DPG is a deterministic password generator that does not store data or keep state. Its output is based purely on user input.

To Build C++ executable

$ cd c++ && make

To Build Java jar

$ cd java && ./build.sh

To Run Python, Java or C++ version

$ python dpg.py
$ java -jar dpg.jar
$ dpg "The sentence" word

Usage Recommendations

  • Use the same sentence everywhere. Commit it to memory.
  • Use a different word for different sites. Be consistent with case (e.g. google, facebook, twitter, etc.)
  • If you need to change all of your passwords, change the sentence.
  • If you need to change one site password, change the word.

Why traditional password managers are flawed

I wrote DPG because I sometimes work in highly audited/regulated environments and I needed a way to recall dozens of complex passwords that change frequently and I disagree with the core concepts of most traditional password management software in use today. I believe that their approach is fundamentally flawed.

If after reading this you still wish to use a traditional password manager, I suggest that you put your passwords into a plain text file and symmetrically encrypt it with GnuPG or use Password Safe.

OK, onto my argument. I disagree with two common concepts used by traditional password managers:

  1. Password Storage
  2. Remote Systems & Web Browser Integration

When passwords are stored, they must be encrypted and then retrieved later when needed. Storage, of any type, is a burden. Users are required to backup stored passwords and synchronize them across devices and implement measures to protect the stored passwords or at least log access to the stored passwords for audit purposes. Unless backups occur regularly, if the encrypted password file becomes corrupt or is deleted, then all the passwords are lost.

Users must also devise a "master password" to retrieve the encrypted passwords stored by the password management software. This "master password" is a weak point. If the "master password" is exposed, or there is a slight possibility of potential exposure, confidence in the passwords are lost.

My other concern with password storage is proper encryption. Are you sure the encryption used to store the passwords is implemented correctly? Has the encryption been externally validated? Some password management software is closed-source and proprietary and cannot be verified or validated in any way. Encryption is hard. Even expert developers with many years of experience make mistakes that render encryption weak or in some cases almost useless.

Now, for my second disagreement with traditional password managers. I believe that password management should only occur locally on end use devices, not on remote systems and not in the client web browser.

Remote systems are outside the user's control and thus cannot be trusted with password management. These systems may not be available when needed and may not be storing or transmitting passwords correctly. Externally, the systems may seem correct (https, etc.) but behind the scenes, no one really knows what's going on, how the passwords are being transmitted, generated, stored, or who has access to them. And, many popular cloud-based password managers have reported multiple security breaches. Here are a few examples: 1, 2, 3.

Web browsers today have "everything but the kitchen sink" capabilities built-in and are becoming more and more complex each year. They are turning into whole platforms that have browser plug-ins and extensions for every possible need known to man. While many of these add-ons are handy and useful, you should not trust these add-ons with password management. Browsers are just too complex and have far too much going on to trust them with password management.

DPG addresses these flaws. Here are the key design concepts.

  • DPG does not store passwords, it only generates passwords as needed. Because of this, the need to backup, synchronize and properly encrypt passwords is removed. This eliminates the weak point of having a "master password" that immediately unlocks all of the other passwords. There is nothing to audit access to and nothing to become lost, stolen or corrupt. No storage means you have none of the problems associated with password management storage.

  • DPG only runs locally on end-use devices. It is a stand-alone application that does not rely on remote systems, and it is not integrated into web browsers along with numerous other browser "add-ons".

  • DPG is open-source and the passwords it generates can be verified and validated by other implementations.

Password managers are important, but they shouldn't be difficult to deal with or untrustworthy. DPG removes many of the issues that I have experienced with traditional password management software. I hope you find it as useful as I have over the years.

Notes

DPG is based on my earlier SHA1_Pass software in 2009.

dpg's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.