Information Security Stack Exchange is a question and answer site for information security professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How do YubiKeys work? Are there any alternatives?

share|improve this question
up vote 2 down vote accepted

The YubiKey comes in different variants, for example the YubiKey 4 and the YubiKey U2F. All YubiKeys are hardware tokens and are connected to a USB port. Most feature an inductive button and one model also has NFC (the YubiKey Neo). The variants differ regarding form factor and the number of supported features.

The YubiKey 4 provides several functions:

  • OTP generation
  • OATH compatible OTP generation (i.e. HOTP and TOTP)
  • emulate a chipcard reader with inserted OpenPGP chipcard (up to 4K bit RSA or 256 bit ECC private key size)
  • act as PIV device (up to 2K bit RSA or 256 bit ECC private key size)
  • act as U2F device
  • replay a static password

For some of its features it presents itself as a USB HID device.

There are alternative solutions available that provide similar or a subset of the multi-feature YubiKey 4. For example, classic hardware chipcard readers (perhaps even featuring a keypad) in combination with an OpenPGP compatible chipcard.

The YubiKey U2F is only a U2F device, i.e. a device that is able to generate a origin specific public/private key pair and returns a key handle and a public key to the caller. Like other inexpensive U2F devices, the private keys are not stored, instead they are symmetrically encrypted (with an internal key) and returned as the key handle. Using the key-handle, the U2f device is then able to sign a challenge, thus creating a response as part of a multi factor authentication.

Since U2F is an open standard (that is also pushed by corporations like Google), there are several alternative inexpensive U2F hardware tokens available (search for 'FIDO U2F key').

share|improve this answer
FYI: The OpenPGP implementation on the Yubikey 4 is not Open Source - this is a significant departure from previous Yubikey NEO devices. – Jonathan Cross May 11 at 13:02

I have one, and I'd recommend them! I actually got it for free from the Yubico guys, when I was attending BSidesLondon.

Think of it as an RSA secure-key, except much smaller, cheaper and without a battery. You get (essentially) the same security, though YubiKeys have a signficantly larger keyspace than the RSA ones. They're also incredibly sturdy, and can be fully immersed in water without damage.

Here's mine:


I know this sounds like an advert, but they really are great. Compared to carrying around a bunch of those secure-keys, they're almost unnoticeable on a keyring.

As for how they work, they validate against a cloud service that Yubico run, and provide two-factor authentication. All the server software is open-source, and they're happy for you to run your own authentication servers. It's entirely transparent.

Have a dig around on their website, there's plenty of technical info and descriptions on there.

share|improve this answer
Is a subscription service required? Does one have to pay a monthly fee? – Gabriel Fair Jul 31 '12 at 18:00
@GabrielFair Nope, it's free. From their website: "Provided with free hosted validation service, YubiCloud" – Polynomial Aug 1 '12 at 8:18
Since you mention "Think of it as an RSA secure-key", one important difference to be aware of is the fact that it uses the symmetrical AES encryption, so theoretically someone stealing their HSM (without being detected) could obtain your key and claim being you, which an asymmetric encryption like RSA would not permit due to the server then only storing a public key... – Tobias Kienzler Sep 4 '13 at 14:25
How is this better than a USB key with a keyfile? If a Yubikey gets stolen, then the attacker can still use it. – Celeritas Dec 13 '15 at 2:43
@Celeritas Malware or exploitation of the system cannot trivially "trick" the YubiKey into giving up its password, as you need to press the physical button to type it. A value on a USB stick can just be read off. – Polynomial Dec 14 '15 at 20:21

Have a look over here

The following outtake is written by Drik Mekel, author of the previously linked article:

Each time you press the button on the device, it generates a one-time password and sends it to the host machine as if you had entered it on a keyboard. This password then can be used by the service to authenticate you as a user.

I suggest you read through the 5 page article (as this is to much to take over here)

share|improve this answer
My edit was rejected by Lucas Kauffman with 'This edit does not make the post even a little bit easier to read, easier to find, more accurate or more accessible. Changes are either completely superfluous or actively harm readability.' - although it removes several errors and improves the layout. Most importantly, it fixes the name of the referenced author. The name currently contains two spelling errors: 'Drik Mekel' should read 'Dirk Merkel'. – maxschlepzig Jan 1 at 16:43

As I understand it, Yubikey acts like a USB keyboard. You plug it in your computer, place the cursor in a form field, press the button on the Ubikey, and it sends out a text string of 44 characters to the computer like you are typing those 44 characters. The computer doesn't know the difference between you typing it or the Ubikey generating it.

A website like a Wordpress site with Ubikey plugin, or the Lastpass addon in Firefox, or any other website that has a Ubikey option, has a login form with username, password, and Ubikey password. You enter your username and password, place the cursor in the Ubikey field, then press the Ubikey button, and it enters the Ubikey password into the field.

Then the form is submitted, and the Ubikey is validated in the Ubicloud. The website checks if the entered Ubikey password is valid. The Ubikey itself does not connect to the Ubicloud. It's just a device generating a string sending it out acting like a keyboard, and it does not connect to the internet or anything except as that keyboard.

Before all this works, you need to update your account on the website to use Ubikey. That means you need to link your key to the account. That way the Ubicloud can check the generated code and validate it against your account.

The website of course needs to implement the Ubikey functionality, which is available as a free service for website owners.

If the Ubikey gets lost, you can use the normal recovery methods the website has to recover your account and disable the Ubikey. Normally this means that you get a password recovery link via email, and that link disables the Ubikey function in your account.

Disclaimer: I've been wondering how Ubikey works, I've been searching for answers, and this is what I made of it. I hope it's correct, and if it's not, correct it or give a comment - I want to know!

The other answers here don't give any real explanation. Even the Linuxjournal article doesn't explain it this way. The accepted answer gives a black-box answer - not what I was looking for when I opened this page. I hope this answer gives a better explanation and writing it made me understand the Yubikey better.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.