Are there any password managers that
- Integrate into browsers on all major platforms
- Have decent password generators
- No major security breaches in past ten years
- Local-first / sync via standard sync mechanisms (Dropbox, iCloud, sync thing, etc.)
EDIT: Based on responses below, I'm going to try KeePass[.*] and see how it goes. First hiccup is that 1Password import doesn't seem to work, but I'll keep at it.
[0]: https://www.brycewray.com/posts/2021/06/two-paths-password-m...
[1]: https://www.brycewray.com/posts/2021/08/1password-hits-fan/
https://www.passwordstore.org/
Pass uses GPG under the hood for encrypting the password store. I use an OpenPGP smartcard (a Yubikey in my case) to decrypt the password files. I synchronize the store across devices using Git. There are good autofill implementations for Firefox and for Android. When I need a password, the autofill prompts me to insert my Yubikey and enter in the unlock PIN, which I find more convenient than a master password. Crypto functions are offloaded to the Yubikey with a (theoretically) very difficult to extract private key, so unless somebody swipes that they can't get into my passwords.
I mostly followed this guide for setting it up: https://dehnes.com/software/2020/04/03/password_management_y...
It's been audited [0] by external companies multiple times and both the client and the server are fully open source [1].
I know others may say that the encryption is too weak[2], but that's true for all other password managers too [3], since Argon2id is not mature enough to run as a WASM module in the browser yet (especially not on mobile).
[0] https://bitwarden.com/help/article/is-bitwarden-audited/
[1] https://github.com/bitwarden
[2] https://github.com/bitwarden/jslib/issues/52
[3] https://github.com/bitwarden/jslib/issues/52#issuecomment-78...
If you don't self-host, note that everything is encrypted before being stored at bitwarden. They don't have access to your passwords.
With git or whatever you want for sync, and whatever GPG-compatible security device you want for encryption.
I swear, pass is the piece of software that has improved my digital life the most per line of code in the software.
I hear you about problems with a server/subscription-based model, but a) it's the least of all evils, and b) I've come to enjoy financially supporting them (i.e. my subscription means they can keep making great software, which is definitely valuable to me).
As for the software I use to access the database:
* On Windows/Linux, I use KeePassXC with the corresponding browser extension. I also use the built-in SSH agent integration so I don't need to store my private keys in ~/.ssh nor manually type in their encryption passphrase.
On Windows, auto-type works great for the most part, except in ancient applications that only support scan-code-based input and not Unicode-based input (shakes fist at IPMI consoles of brand new servers that _still_ use ancient noVNC versions without support for Unicode input). I build KeePassXC from source to include a not-yet-merged patch for scan-code support.
* On Android, I use KeePassDX (open source). It integrates with Android's autofill API, but also has a keyboard for typing the username/password/TOTP code into apps that don't support autofill.
* Back when I still used iOS, I used Strongbox (open source, but does not accept contributions). It integrates with iOS' autofill API.
For syncing, I use SyncThingTray on Windows/Linux and SyncThingFork on Android. On iOS, I used to have Strongbox connect via sftp to my server running SyncThing because I could not find a decent SyncThing client. (I'm not even sure it's possible to implement on iOS without resorting to abusing location services for background execution, like iSH or most SSH clients.)
https://github.com/madmonk13/keymaster
This is the first time I've publicly shared it and I welcome your feedback.
Designed by Bruce Schneier
https://www.schneier.com/academic/passsafe/
Mobile clients available and you can sync via Dropbox or iCloud.
It is Dropbox friendly meaning any change or addition in another person using the same vault in the same directory is automatically updated in all open vaults. This was originally for collaboration. You can have your own private vault too with a unique password, as many as you like. They just end up as XML files. It runs fast as uses databinding, can generate strong passwords, and makes copying/pasting easy. I am having trouble encrypting files over 1GB though.
I take great lengths to protect the key. If the file is open too long, it minimizes and locks, when you open it, it decrypts everything again. As soon as decryption is done, the key is stashed away using ProtectMemory function in the framework. I have done memory dumps to ensure the key is not visible when the app is idle.
Files works differently, Their meta data is encrypted but you are able to checksum then and preview them in memory without the key ever being exposed and the content never touches the disk and is zeroed afterward. You can currently play sound, view pictures, execute files (in memory!) and soon video.
I plan on browser integration by a cross-browser userscript and loopback routing (127.0.0.1) that recognizes when the cursor is in a field specified in the login's metadata. But I am am running into trouble because sites like to randomize the name of the login fields, so I a have to use some reliable heuristic approach.
Does anyone have any ideas on how to deal with that? If I can figure that out, and get video previews working I will open source it.
EDIT: Here's a preview of the app: https://imgur.com/a/rZGPCPZ
Otherwise, I think KeePass will do you just fine. I'd advice against any form of browser integration. Stick with the auto-type type feature instead. Connecting a full, decrypted password database directly to a _browser_ sounds scary.
Consider installing an add-on in your browser that changes the window title to include the page's URL. This way KeePass' window matching works a lot better.
So your choice of KeePass is pretty good. There is KeePass2 which is by the original author of the KDBX format. There is KeePassXC which is an alternative. KeePass2 has a lot of community plugins if that's what you're after.
Looking for inspiration and excited testers :)
> they seem insistent on making the experience as terrible as possible lately
Lets take all of a user's credentials (mixing the critical and the trivial) and put them into a single database and then use Javascript-based browser extensions to control access to the DB. What could go wrong?
The LastPass communications brouhaha from last week was just a whiff of the total shit show we're going to see when the client code from one of these password managers is modified with trojan code and we realize that some group has been slurping up credentials by the billions over the course of a few months.
Seems like the charitable take is that password managers are maybe the best approach to a horrible idea, and the real solution is that we ought to be racing to abolish passwords altogether as soon as possible.
It was not easy, but it was fun, and if anyone wants to decrypt my files they have a lot of difficult hurdles to jump through.
Of course, keylogging is easier, but then they still have to run my software or at least seriously read the source code.