3 ms·
We designed the plugin protocol (https://hackmd.io/@str4d/age-plugin-spec https://hackmd.io/@str4d/age-plugin-spec) and generally the age recipient/identity str
by FiloSottile 5y ago
We designed the plugin protocol (https://hackmd.io/@str4d/age-plugin-spec https://hackmd.io/@str4d/age-plugin-spec) and generally the age recipient/identity structure specifically to enable the use of hardware or remote keys!
For example, https://github.com/str4d/age-plugin-yubikey https://github.com/str4d/age-plugin-yubikey makes it very easy to use PIV tokens, including YubiKeys, with age. (Well, for now with rage, since plugin support is coming in age v1.1.0.)
I argue against password-protecting keys by default because, unlike using hardware tokens, it doesn't protect against many threat models.
- jeremyw 5y agoCan you clarify re not password-protecting keys? If I run GUI applications, let's say, as my user -- as is the default in most operating systems -- they have general access to my files, including my keys-as-files, no? (Putting aside some minor restrictions MacOS and others are slowly making.)
- FiloSottile 5y agoYes, and they can also replace the age binary with one that uploads the password as soon as you type it. There is no meaningful security boundary to defend. We implemented support for password-encrypted keys for the cases where you store the key file in, say, Dropbox.
- darkwater 5y agoBut in the "age binary replaced" threat scenario, isn't just gameover even with hardware keys? Eg. the same exact age code with an extra call after the print password to stdout that uploads it somewhere?
- FiloSottile 5y agoThe difference with hardware keys is that the primary key can’t be exfiltrated, and only one secret can be decrypted per physical touch, so rotation and recovery are possible without invalidating all secrets.
- jeremyw 5y agoI suppose in a homebrew situation, but not if age is root-installed, correct? It seems like that's a hard boundary.
- FiloSottile 5y agoI mean, most users don't root-install, but anyway the GUI application can drop a different age binary higher on the user's PATH. Or change their shell. Or a million other things. There really isn't a point to defending against code running unsandboxed on a single-user machine.
- ulrikrasmussen 5y agoI password protect my key for the sole threat model of me physically losing my device. I am aware that all other threat models that involve someone taking remote control of my device are not fully protected against, but it at least requires significantly more effort on their part versus just doing a scan for private keys on the file system.
- SEJeff 5y agoWhy not use disk encryption for this threat model?
- withinboredom 5y ago> Why not use disk encryption for this threat model? Most people don’t add a password to the disk encryption, meaning the keys can “easily” be extracted by MITM the contacts on the chip.
- jeremyw 5y agoFair enough. I believe I can mitigate enough of these to continue the utility of password-protecting my keys, but I take your point.
- deleted 5y ago[deleted]
- tex0 5y agoReally looking forward to age 1.1.0 so we can give gopass mature age support as well. Stupid question: Are only YubiKeys supported or also other hardware tokens?
- FiloSottile 5y agoage-plugin-yubikey supports all PIV tokens. There are other 3rd party plugins in development for other hardware tokens. The v1.1.0 Go API will be able to drive arbitrary plugins, so you should be able to integrate with all of them!