3 ms·
How do I, a user, manage all these yubikeys?
I have an annoying number of yubikeys: original, nanos, bluetooth, and usb-c. I currently keep them in a pencil case along with all my dongles, and I usually have to guess which one goes to what. Key labels? Sure, except I also tend to leave one in each laptop ... N organizations => N VPNs => N yubikeys, plus M personal accounts, plus not everything has transitioned from USB-A to USB-C, so in some cases I have more than one for an org. /sigh.
Any suggestions? Google Shopping, Amazon, and Yubico have not surfaced anything particularly helpful yet.
- ecesena 5y agoIt's a general problem with public key cryptography, not just physical security keys but also SSH keys, wallets, etc. You should try to use a single key pair for everything as much as you can. I understand the laptop case where you want convenience, but I assume that's 1 laptop = 1 company. For all others, you should probably attempt to use a single key for everything. Note that in FIDO, unlike general public key crypto, there's unlinkability built in. If you use the same key on different accounts, there's no way for the service(s) to tell if it's the same key or different ones. This is to say that privacy is built in. FWIW for solokeys we made colored silicon cases and some people have used colors successfully to identify the keys. Yubico did stickers (not sure if you can buy them, but you can certainly print your own). But in general I doubt there's a good solution.
- noman-land 5y agoOkay, I've been banging my head against a wall about this problem for a long time and I don't have a great answer, but I have a decent answer that I've been honing in on. Let me know what you think, and please correct any of my misunderstandings. PGP keys come in different flavors which have different capabilities. There are Authentication keys, Signing keys, Encryption keys, and Certification keys. A PGP key can have any or all of these capabilities at the same time. PGP keys can also have subkeys, and these subkeys can have any of these capabilities as well. A Certification key can be used to create and sign other keys. A Signing key can be used to sign data to prove it comes from you. An Authentication key can be used for things like SSH to authenticate yourself to servers. An Encryption key can be used to decrypt data that people encrypt against your public key. Yubikeys actually have multiple PGP slots in them, and can accommodate three keys, one Signing key, one Authentication key and one Encryption key. You can easily pick and choose subkeys from a PGP key to fill any or all of the slots on the Yubikey. (The key has other applets on it as well, like U2F and other things but lets ignore that for now) So you can actually use your Yubikey to log into servers via SSH, to sign messages you send and actions you do (emails, blog posts, files, git commits), and to decrypt messages that are sent to you. Now in order for you to use different yubikeys to log into different things, or for multiple factors with each other, each yubikey needs to have a different authentication key on it. And if a yubikey is lost, that authentication key needs to be revoked. If you were to create a new PGP key for each of these things, it becomes really painful to manage them all, and keep them all safe, like you said. However, if you have a single "master" key, whose only role is to create subkeys, you can start to have a somewhat saner experience. Here's how it works. On an airgapped computer you create a master PGP key and only give it the capability to Certify, aka create and sign other keys. This key will never be on a device that touches the internet for the rest of your life. You will only use this key offline to create subkeys. Full stop. Now, on your airgapped computer you can create subkeys. You can create a different Authentication subkey for each yubikey you intend to use. Then you can move these subkeys to the different yubikeys. Now all the keys are based off the original key and can be easily revoked and new ones created. Now in order for people to be able to send you encrypted messages, you need to publish your public Encryption key. This key doesn't generally change often because it's used long term to decrypt messages. You can create a single Encryption subkey and put the same one on all your different yubikeys so any of them can decrypt messages. This means no more looking for the right key in that scenario. Finally you have signing keys, which I personally use to sign my commits and emails (occasionally). Again each yubikey should have its own signing key that they can easily be revoked. When you publish your public key, people will be able to see that you have N signing keys (on N yubikeys), any of which can be used to sign messages from you. Now you can think of yubikeys as device-specific, instead of account-specific. You have a yubikey in your laptop, a yubikey in another laptop, a yubikey on your keychain, and a yubikey in a vault. They can all access your servers, sign your commits and decrypt your emails. They can all be U2F devices for various services. This way you only need to keep a single private key safe. Now this is a whole different, very challenging issue but that's a topic for another post.