This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
password_management [2024/03/01 16:56] – [porcelain] qlyoung | password_management [2025/10/06 03:07] (current) – [password management] password -> credential qlyoung | ||
---|---|---|---|
Line 1: | Line 1: | ||
===== password management ===== | ===== password management ===== | ||
- | Password | + | Credential |
- | ==== tldr ==== | + | ==== Current setup ==== |
- | {{ : | + | I used to use [[https:// |
+ | |||
+ | For the record, I absolutely believe in PKC authentication but am highly skeptical of passkeys, to put it mildly. Perhaps another wiki page about that at some point. | ||
+ | |||
+ | Anyhow, in 2025 I switched to [[https:// | ||
+ | |||
+ | KeepassXC works on every computer I own and I use [[https:// | ||
+ | |||
+ | I do wish it had the ability to use a GPG key as a primary key; instead the database is encrypted with a passphrase. Security keys and PGP challenge-response can be used, but only as secondary or tertiary factors to the passphrase. | ||
+ | |||
+ | ==== Old setup ==== | ||
+ | |||
+ | {{ : | ||
I use [[https:// | I use [[https:// | ||
Line 34: | Line 46: | ||
</ | </ | ||
- | The " | + | The " |
- | This directory is version controlled | + | This directory is version controlled |
It is a very simple and secure setup. | It is a very simple and secure setup. | ||
Line 42: | Line 54: | ||
==== key management ==== | ==== key management ==== | ||
- | This setup requires my personal | + | {{ : |
+ | |||
+ | This setup requires my GPG keypair to unlock the store. This means that the keypair has to be accessible to every device that needs access to passwords. | ||
- | A GPG keypair is for practical purposes two files, one containing the public key and the other containing the private key. It's very important to the security of any system involving GPG that they private key file not be exposed to anyone. For this reason it's usually encrypted with a symmetric password. If you use the conventional setup, this symmetric password effectively becomes the " | + | A GPG keypair is for practical purposes two files, one containing the public key and the other containing the private key. It's very important to the security of any system involving GPG that the private key file not be made public. For this reason it's usually encrypted with a symmetric password. If you use the conventional setup, this symmetric password effectively becomes the " |
- | However, even though the keypair is itself encrypted, having it stored on disk isn't ideal from a security perspective - particularly on mobile, which are very exposed and historically very insecure. It's better if we don't store the key on disk at all. To accomplish this I store my keypair on a [[https:// | + | However, even though the keypair is itself encrypted, having it stored on disk isn't ideal from a security perspective - particularly on mobile |
On my desktop and laptop, whenever I need a password, I'm prompted to plug in and unlock my yubikey with a 6 digit pin. The encrypted file containing the password is then sent, over USB, to the embedded processor on the yubikey. The yubikey decrypts it using the GPG private key and sends back the cleartext contents. The flow is the same on my phone, except that communication occurs over NFC so I am prompted to tap my yubikey on the device. | On my desktop and laptop, whenever I need a password, I'm prompted to plug in and unlock my yubikey with a 6 digit pin. The encrypted file containing the password is then sent, over USB, to the embedded processor on the yubikey. The yubikey decrypts it using the GPG private key and sends back the cleartext contents. The flow is the same on my phone, except that communication occurs over NFC so I am prompted to tap my yubikey on the device. | ||
Line 60: | Line 74: | ||
There are plugins that provide browser autofill which I used to use. | There are plugins that provide browser autofill which I used to use. | ||
- | Currently I have a global system shortcut ('' | + | Currently I have a global system shortcut ('' |
For git synchronization, | For git synchronization, |