kkeyroost

keyroost · learn

So you bought a hardware security key… now what?

A short, vendor-neutral primer on what that little USB or NFC fob actually does, how to set it up, and where to read the real standards — no marketing, just the protocols and their authoritative docs.

~5-minute read. Jump to what it does · the four applets · FAQ · install keyroost · authoritative links.

keyroost screenshot — The keyroost desktop app — a connected key's overview, with each applet on its own tab.
The keyroost desktop app — a connected key's overview, with each applet on its own tab.

01What is it, really?

A hardware security key is a tiny tamper-resistant computer. Its one job is to hold secrets that never leave the chip and to perform crypto operations with them on demand — so malware on your laptop can, at worst, borrow the key's powers while it's plugged in; it can never copy the keys themselves.

Most modern keys (YubiKey, SoloKey, Nitrokey, Token2, and others) are really several independent "applets" sharing one piece of plastic. Each speaks a different open standard, and you can use as many or as few as you like.

02What can I actually do with it today?

In rough order of "most people start here":

Start small

You don't have to use every applet. Putting one key on your email and one other critical account, plus a backup key in a drawer, already puts you ahead of the overwhelming majority of attacks.

03The four things a key can be

Each links to a short page on what it is and what keyroost can do with it.

Have a programmable TOTP token instead of a multi-applet key? See Token2 Molto2 — and its single-profile siblings (OTPC, miniOTP, C30x). Starting over with a key? See resetting safely. Going deeper: fingerprints, security policy, on-key storage, naming your keys.

04The 10-minute first-day checklist

05FAQ

Is a security key better than my authenticator app?

For phishing — the threat most people face — yes, meaningfully. A FIDO2 key cryptographically checks the website's real domain before it responds, so a look-alike phishing page gets nothing. TOTP codes can be typed into a fake site and replayed within the 30-second window. TOTP still beats SMS or nothing; FIDO2 is the gold standard. CISA on phishing-resistant MFA →

What happens if I lose it?

This is exactly why you register a second key and keep recovery codes. Sign in with your backup, remove the lost key from each account, and register a replacement. Because the secrets never leave the chip, whoever finds your key still needs your PIN — and it locks itself after too many wrong guesses.

Can someone copy my key, or read the secrets off it?

No — that's the whole point. Private keys are generated on the chip and are designed to be non-exportable. Operations happen inside the key; only the result (a signature, an assertion) comes out. There's no "export key" button.

Is the PIN the same as a password?

No. A website password is checked by a server and can be stolen in a breach. A key's PIN is checked by the key, offline, just to authorize local use — and the key enforces a small retry limit, so even a short PIN resists brute force. You never type it into a web form. More →

What's a "passkey," and is it the same thing?

A passkey is a FIDO2 credential used instead of a password rather than alongside one. A hardware key can store passkeys (a "device-bound passkey"); the phones-and-cloud kind syncs across devices. Same standard, different storage and recovery trade-offs. More →

Do I need keyroost to use my key?

Not for everyday logins — registering a key with a website happens in your browser, no extra software required. keyroost is for managing the key itself: inspecting it, setting PINs, loading TOTP secrets, generating OpenPGP/PIV keys, and programming Token2 Molto2 tokens — over an open, auditable toolchain with no vendor SDKs. It's optional power tooling, not a requirement.

Which keys does it work with?

Any standards-compliant FIDO2 key for the FIDO features — keyroost implements the published CTAP2 spec, not vendor quirks. Hardware-verified so far: YubiKey 5 series, SoloKeys Solo 2, Nitrokey 3, Token2 PIN+ (FIDO2, fingerprints and on-device OTP), and the Token2 Molto2 and single-profile programmable tokens. The OATH, OpenPGP, and PIV commands are built to the published specs and apply to any key exposing those applets over PC/SC, verified on a YubiKey 5 — on PIN+ keys those three are not yet exercised on that hardware by this project, so treat them as experimental there. Full device table →

Text input in the desktop app misbehaves on my Linux session

On some Wayland compositors — notably KDE Plasma — GUI text fields can drop or mishandle keystrokes. Launch the app with KEYROOST_X11=1 set to force it onto XWayland, which resolves the input handling.

The desktop app exits on its own after being left open for hours (Linux)

On Wayland, an app left idle for hours can be killed by the compositor with Protocol error … wl_registry — typically when a monitor sleeps or reconfigures at just the wrong moment. This is a known race in the Wayland protocol itself, not something keyroost can prevent; a protocol-level fix (wl_fixes) is rolling out across compositors and GUI toolkits. It's harmless: everything lives on your keys, so nothing is lost — just reopen the app. If you want it to survive long idle periods today, launch it with KEYROOST_X11=1; the XWayland path is unaffected.

Why does Windows ask for administrator rights?

Windows reserves raw FIDO access for elevated processes, so the FIDO2 features need an administrator session — keyroost detects this and offers to relaunch elevated or open Windows' own security-key settings. Everything that runs over the smart-card interface (OATH, OpenPGP, PIV, Molto2) works without elevation. Elevate for the FIDO operation you need, then drop back.

06Install keyroost

keyroost ships a desktop app (keyroost) and a command-line tool (keyroostctl) for Linux, macOS, and Windows. Pick whichever channel fits; they all install the same open-source toolchain.

Linux — desktop app

Flatpak is the easiest route for a non-technical user: it auto-updates and bundles everything the GUI needs. Add both remotes in the same (--user) scope:

flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --if-not-exists --user keyroost https://framefilter.github.io/keyroost-flatpak/keyroost.flatpakrepo
flatpak install --user keyroost io.github.framefilter.keyroost

AppImage needs no installation — download keyroost-x86_64.AppImage from the latest release, make it executable, and run it. (It uses the host's pcsc-lite, so install that first — see the note below.)

Linux prerequisites

The smart-card features (OATH, OpenPGP, PIV, Molto2) need the host's pcscd daemon installed and running — sudo apt install pcscd (or your distro's equivalent), then sudo systemctl enable --now pcscd. Talking to a key's FIDO interface needs the bundled udev rules so the device node isn't root-only: copy udev/70-keyroost-fido.rules into /etc/udev/rules.d/, then sudo udevadm control --reload-rules && sudo udevadm trigger and re-plug the key. After installing, keyroostctl doctor verifies both. Both are two-minute setups — full notes in the README.

Arch Linux — AUR

The keyroost-bin package installs both binaries and the FIDO udev rules in one step. Use any AUR helper (or makepkg):

yay -S keyroost-bin

macOS & Linux — Homebrew

brew tap framefilter/keyroost
brew install keyroost

Windows — winget

winget install Framefilter.Keyroost

Everything else — Cargo or pre-built archives

With a Rust toolchain (1.92+, for the GUI) you can build both binaries from crates.io. On Linux this needs the PC/SC dev package, and the GUI needs the X11/Wayland/GL libraries eframe/egui link against:

sudo apt install libpcsclite-dev libxkbcommon-dev libwayland-dev libxcb1-dev libgl1-mesa-dev
cargo install keyroostctl keyroost

(For the CLI alone, libpcsclite-dev is enough — cargo install keyroostctl. Fedora/Arch package names are in the README.)

Or grab a pre-built archive for your platform from the releases page.

Full, canonical install notes live in the project README; this is the short version.

07Mini-glossary

FIDO2 / WebAuthn / CTAP
The modern passwordless standard. WebAuthn is the browser-to-website half; CTAP is the browser-to-key half; "FIDO2" is the two together.
U2F
The original second-factor-only predecessor to FIDO2. Still works; FIDO2 is the superset.
TOTP / HOTP (OATH)
Time- and counter-based one-time passwords — the 6-digit codes, defined in RFC 6238 and RFC 4226.
PIV
A US-government smart-card standard (NIST SP 800-73) for certificates and keys; widely used for SSH, login, and signing.
OpenPGP card
A standard for an on-card PGP keypair — sign/encrypt email, files, git, and SSH.
Attestation
A signed statement a key can make about what model it is, so an organization can require approved hardware.

08Authoritative resources

Primary sources — standards bodies and the people who wrote the specs.