Show HN: passgo, a command line password manager written in go
github.com
github.com
Users are encouraged to store their password files publicly, and yet the files contain a plaintext list of sites that the user has logins to!
Seems a serious privacy breach.
You could make it so that site names were encrypted by default, but files with plaintext site names were supported.
I firmly believe in secure defaults (with all my heart) but I don't think there's a compelling reason to hide site names in this situation.
I trust the strong cryptography (and DJB) that protects the passwords and this is plenty for keeping an attacker out.
Yeah, it's more information for an attacker but I don't think it buys an attacker anything meaningful. Responding to ping or listening on specific TCP ports and responding with service banners is "more information" too, but these are accepted. Running your company on someone else's computer used to not be accepted and now it is.
With strong cryptography there is no reason this information can't be public. If you're truly paranoid, you can always use a private repo or a private git server.
If anyone has a compelling argument for why this information should be secret by default I would love to make the change.
1) ejcx signs up for a porn service and is embarrassed to admit it
2) ejcx has an account on some server compromised. The attacker now wants to get a nice list of other sites that the ejcx also uses, so they can try their luck to see where ejcx has foolishly used the same or similar password and login name. This information is just a github search away.
In both cases, ejcx may never be so foolish?!. But users of password management apps in general mess up all the time.
I want a password manager that I have confidence in to upload my passwords somewhere I can retrieve them if I lose my home computers etc. However, I don't want to announce to the world the websites I visit.
As it should, yes. Any interaction with the password manager regarding my stored passwords should require the master password.
Edit: What, expecting people to do research before they make a software that users are supposed to entrust sensitive data to is so unreasonable it deserves silent downvotes?
¹ From the readme: "it assumes your remote git repository may be malicious"
In that sense it certainly is usable without private repositories.
1. I trick you into using my GitEvil Repository Service (GERS™).
2. After you upload your data, I swap target site information (in this case name) with the name for GERS™.
3. Next time you log in to GERS™, you accidentally send the login information for target site instead.
4. Profit
In that case, keeping with the wish to keep the manager searchable without the master password, would it be possible to mitigate this by HMAC'ing the encrypted password with, for instance, the site name?
As should be obvious from the above, I'm no crypto expert.
> would it be possible to mitigate this by HMAC'ing the encrypted password with, for instance, the site name?
In that case you duplicate the metadata: You keep one datum in plain text for search purposes, and a second for MAC/verification purposes. That's a somewhat awkward construction, and you can accidentally create new security holes in your application (by using the MAC'd metadata at point A and the plain metadata at point B – there's a bunch of high-profile CVEs created this way).
Alternatively, you can MAC the metadata separately from the password. However, (H)MAC involves a secret key that must not be shared in plain text. So you'd need encryption anyway to be able to verify the MAC key.
In either case you still allow a few attacks: Attackers can delete entries (DoS), attackers can selectively replace entries with older versions (DoS or information leakage if the password still works), and probably a few others.
Using the password AEAD to encrypt the whole database, not just passwords, not just individual entries, is not just safer, but also reduces complexity.
The main thing I like about 1Password is the browser integration. It just makes life so much easier being able to click a button and have the password automatically entered into the form. I have a script ([1] - should be easy to adapt for this) which would poll Chrome for the current URL, decrypt or generate the password, and copy it to the clipboard - but clicking a button is a lot less friction.
1Password also has a xkcd-style password generator option, which is great for things like Netflix that you need to type in on TVs and such.
The main reason why I signed up for 1Password was so I could use it with my family, but the browser extensions only work on OS X 10.10+, so that rules out 2/3 family members (who run Windows 10 and OS X 10.6). You can access the passwords online, but it's no way near as user friendly. If anyone has a good recommendation of an alternative (I'd prefer open source), let me know!
[0] http://www.stackednotion.com/blog/2012/09/10/setting-up-pass...
https://pypi.python.org/pypi/blimey/0.9.4 https://pypi.python.org/pypi/1pass/0.2.1
I like KeePass2 which is open source but nothing like as smooth as LastPass (No browser integration on OSX and integration on firefox for windows works but isn't perfect).
A 5 minute glance through the code didn't reveal any vulnerabilities. That's a better result than most.
Password manager that is actually safe against attackers with access to your data at rest by encrypting everything (with authentication), including metadata.
Emacs has EasyPG so when you create a file with .gpg extension and try to save it prompts you for a password to encrypt this file with. Similarly if you open a .gpg file it asks you for a password for decrypting it. This way your only dependency is emacs and you can store passwords file wherever you like. And you don't expose names of sites you need passwords for.
"Instead" here seems to imply that GPG cannot securely store data in a password-protected file, which it can. (See the --symmetric option.)
It just simply uses a library, and perhaps a custom serialization format / a different format from what GPG uses.
One of the reasons why I encrypt my keyring with GPG (and I use a tool that uses/wraps GPG) is because I can recover the keyring then with only GPG: I don't need the actual keyring program, just GPG and the password.
I've been tinkering away on my own password manager for a while, but since it's not made in a hype language, it gets zero exposure on HN.
- Work offline
- Work on multiple platforms
- Encrypt the passwords
- Backups/distribution should not be dependent on a single provider
- Ease of use (command line is fine, great even, but for the love of god make it simple)
- Not require me to remember to copy around an encryption key
- Open source is a great bonus
I have been looking at https://www.vaultproject.io for team credential storage and sharing.
I plan to build sharing in to passgo, since I realize it would simplify things for a lot of teams
A password sharing solution I have no problem with since there are real reasons to share
1. Cool, it'll run anywhere i need it to (presumably) without dependencies.
2. Cool, I love that language, I wonder how they did it.
For many other languages, the checkbox for 2 will be ticked as well though.
Many people on this site care about the language, so why should we not include it? People who dislike the Y ecosystem are free to ignore it, and people who have been looking for an X implementation save some brain cycles figuring out what it's written in.
Personally I think more articles should include this. I'm always disappointed when a cool-sounding project is written in Node..
edit: Now that I've read the commit message; :(
It appeals to a bigger number of people, too, since not all devs understand GPG and shouldn't be expected to.