YKCHALRESP(1)

YKCHALRESP(1) πŸ’… β€” aka ykchalresp, from the YubiKey Personalization Tool, section M of the manual

okay bestie, sit down, hydrate, because we're about to talk to a tiny USB stick and make it do math πŸ”₯


✨ NAME ✨

ykchalresp β€” Perform challenge-response operation with YubiKey


🌸 SYNOPSIS 🌸

ykchalresp [-nkey] [-1 | -2] [-H | -Y] [-N] [-x] [-v] [-6 | -8] [-t]
[-iFILE] [-V] [-h]

πŸ¦‹ DESCRIPTION πŸ¦‹

So basically πŸ’– you send a challenge to a YubiKey, and then you read the response back. That's it, that's the whole vibe. The YubiKey can be configured with two different C/R modes β€” the standard one is a 160 bits HMAC-SHA1, and the other one is a YubiKey OTP mimicking mode. And with that second mode, the way it works is that two subsequent calls with the same challenge will result in different responses πŸ‘€ (yes, that's on purpose, that's the whole point, don't @ me).


πŸ‘‘ OPTIONS πŸ‘‘

  • -nkey β€” send the challenge to the nth key found. key number n, bestie, not a key you type.
  • -1 β€” send the challenge to slot 1. This is the default πŸ’…
  • -2 β€” send the challenge to slot 2.
  • -H β€” send a 64 byte HMAC challenge. This is the default.
  • -Y β€” send a 6 byte Yubico OTP challenge.
  • -N β€” non-blocking mode β€” abort if the YubiKey is configured to require a key press before sending the response. like, it will NOT wait around for you to tap it, it has places to be πŸ™ˆ
  • -x β€” challenge is hex encoded.
  • -v β€” enable verbose mode.
  • -6 β€” output the response in OATH format, 6 digits.
  • -8 β€” output the response in OATH format, 8 digits.
  • -t β€” use current time as challenge instead of reading challenge from command line (as in default TOTP mode, seconds since 1970-01-01 00:00:00 / 30 encoded as an 8 byte challenge). clock-based challenge, iconic ⏰
  • -iFILE β€” take challenge from FILE instead of as an argument. If file is - challenge is read from STDIN.
  • -V β€” print tool version and exit.
  • -h β€” (it's in the synopsis, bestie, I'm just reporting what I see 🫢)

πŸŽ€ EXAMPLE πŸŽ€

The YubiKey challenge-response operation can be demonstrated using the NIST PUB 198 A.2 test vector. science!! πŸ§ͺ

First, program a YubiKey with the test vector :

$ ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -a303132333435363738393a3b3c3d3e3f40414243
 ...
Commit? (y/n) [n]: y
$

Now, send the NIST test challenge to the YubiKey and verify the result matches the expected :

$ ykchalresp -2 'Sample #2'
0922d3405faa3d194f82a45830737d5cc6c75d24
$

look at that hex string go 😭 it ATE and left no crumbs.


πŸ’€ BUGS πŸ’€

Report ykchalresp bugs in the issue tracker https://github.com/Yubico/yubikey-personalization/issues


🌈 SEE ALSO 🌈

The ykpersonalize home page https://developers.yubico.com/yubikey-personalization/

YubiKeys can be obtained from Yubico http://www.yubico.com/


lowkey a whole journey, highkey worth it πŸ’œ

k that's the whole page bestie, go forth and challenge-response responsibly. this was ykchalresp, Version 1.19.1, dated like the YKCHALRESP(1) footer says β€” mwah, periodt βœ¨πŸŽ€πŸ¦‹