Це є невеличкий довідник по функціям і можливостям yubikey ключа. Я використовую Yubikey 5, тому всі основні команди тестувалися саме на цьому пристрої.

Якщо Ви в консолі бачите помилку про відсутність коннекту з вашим пристроєм, але сам ключ комп'ютер пізнав, можливо вам дороможе ця стаття

Усуннення GPG конфлікту для вашого пристрою

  • Встановлюєм залежності sudo apt install gnupg scdaemon pcscd pcsc-toolssudo apt install gnupg scdaemon pcscd pcsc-tools

  • Створюємо файл ~/.gnupg/scdaemon.conf, та додаєм єдину строку disable-ccid

  • Запускаєм Smart Card Daemon sudo systemctl enable --now pcscd

  • Перезавантажуєм систему

  • Якщо у вас є сертифікат, зареєстрований на Yubikey, то виконуємо у терміналі наступні команди pkcs11-tool --login --test, потім pkcs11-tool --list-slots

  • У іншому терміналі, перевіряємо, що все гаразд: gpg --card-edit. Побачите інформацію по ключу. Обережно, з вводом з клавіатури, зараз можна щось ненароком натворити... (Щоб вийти просто quit)

Починаєм

Майже весь час ми будем працювати в терміналі. Якщо Ви розумієте напевне, що бажаєте зробити, то можливо це буде простіше робити у GUI, але розуміння що коїться краще здобувати саме в терміналі.

$ ykman --version
YubiKey Manager (ykman) version: 5.0.1

$ ykman --version
YubiKey Manager (ykman) version: 5.0.1

$ ykman list
YubiKey 5 NFC (5.2.7) [OTP+FIDO+CCID] Serial: 155...

$ ykman info
Device type: YubiKey 5 NFC
Serial number: 155...
Firmware version: 5.2.7
Form factor: Keychain (USB-A)
Enabled USB interfaces: OTP, FIDO, CCID
NFC transport is enabled.

Applications    USB              NFC          
OTP             Enabled          Enabled
FIDO U2F        Enabled          Enabled
FIDO2           Enabled          Enabled
OATH            Enabled          Enabled
PIV             Disabled         Enabled
OpenPGP         Enabled          Enabled
YubiHSM Auth    Not available    Not available

Одноразові паролі як другий фактор

Зазвичай для 2FA (двофакторної автентифікації) використовується TOTP (одноразовий пароль, що базується на часі). Він дає вам 6 (іноді 8) цифровий токен, який ви повинні ввести під час входу в систему. Секретний ключ відформатований у base32 (наприклад, H7TTOPOIDLOXGT4E). Ви можете додати 32 таких секретних ключа на пристрій Yubikey. Якщо ви віддаєте перевагу додатку з графічним інтерфейсом, ви можете використовувати Yubico Authenticator. Yubico Authenticator не зберігає секрет, він запитує токен у пристрою Yubikey. Існує також Yubico Authenticator з підтримкою NFC для Android.

Ну що ж:

$ ykman oath accounts add hostkey --touch
Enter a secret key (base32): MZXDIMBWPA2XSNLI

$ ykman oath accounts list
Google:google.com
hostkey

$ ykman oath accounts code hostkey
Touch your YubiKey...
hostkey  429003

$ ykman oath accounts code -s hostkey
Touch your YubiKey...
978399

$ ykman oath accounts delete Google:google.com
Delete account: Google:google.com ? [y/N]: y
Deleted Google:google.com.

$ ykman oath accounts list
hostkey

Важливо мати копіі cекрету усіх ваших ключів. Тоді, у разі форс мажора, Ви легко відновите всі ключі, наприклад у Aegis Authenticator - рекомендую цей інструмент для ваших андроід смартфонів.

U2F (Універсальний 2-й фактор)

Іноді U2F також називають FIDO2 або WebAuthn. Як і токени TOTP, U2F можна використовувати під час входу в систему для двофакторної автентифікації. Варіант TOTP схильний до фішингових атак, оскільки користувачі вводять свої токени також на фішингових сайтах. U2F вирішує цю проблему за допомогою механізму відповіді на запит, який включає в себе ідентифікатор каналу SSL і URL-адресу сторінки входу в браузер (docs). Якщо ви використовуєте U2F, браузер звертається безпосередньо до пристрою Yubikey, ніяких спеціальних драйверів або інструментів не потрібно. Всі основні браузери підтримують U2F.

U2F дуже простий у використанні. Під час налаштування ви прив'язуєте онлайн-акаунт до пристрою Yubikey. Під час входу вам потрібно лише торкнутися Yubikey. Подивіться демонстраційне відео на Youtube, щоб зрозуміти, як це працює. Ви можете протестувати U2F на демо-сайті Yubico. Також дуже приємно використовувати його на Android з NFC.

Стратегія резервного копіювання: Ви не можете зробити резервну копію, оскільки у вас немає секрету, який можна було б зберегти. Тому вам потрібно додати кілька U2F-пристроїв до свого облікового запису або додати TOTP як додатковий метод 2FA.

GPG

... to be continue

SSH with FIDO2 (U2F)

Це достатьно об'ємний розділ. Я обов'язково напишу це, але поки, ось хороші статті:

$ ssh-keygen -t ed25519-sk
Generating public/private ed25519-sk key pair.
You may need to touch your authenticator to authorize key generation.
Key enrollment failed: requested feature not supported

$ ssh-keygen -t ecdsa-sk -O resident
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator to authorize key generation.
Key enrollment failed: requested feature not supported

$ ssh-keygen -t ecdsa-sk
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator to authorize key generation.
Enter file in which to save the key (/home/kmille/.ssh/id_ecdsa_sk):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/kmille/.ssh/id_ecdsa_sk
Your public key has been saved in /home/kmille/.ssh/id_ecdsa_sk.pub

Для імпорта ключів з Yubikey до нового компьютера, виконуємо з термінала у ~/.ssh наступні команди

$ ssh-keygen -K

Вводимо пін-код, парольну фразу й отримуємо два файли: id_ed25519_sk_rk (резидентний ключ) та id_ed25519_sk_rk.pub (публічний ключ). Успішно авторизуємося на новому комп'ютері.

Статичний пароль по дотику

Для мене - це супер крута фіча! Я переважно використовую основну частину Ybikey, та простий мнемоничний доданок, залежний від конкретного сайту. Цей метод не захищає від фішингу, або кейлогера, але він безумовно кращий, ніж запам'ятовавання "сильних" паролів.

Ви можете використовувати Yubikey для імітації клавіатури (HID - Human Interface Device) для введення статичного пароля. Для YubiKey 5 NFC є два слоти, які ви можете використовувати (короткий дотик активує слот 1, довгий дотик активує слот 2). Ось як ви можете його використовувати:

$ ykman otp static --keyboard-layout us 1
Enter a static password: hello world
Slot 1 is already configured. Overwrite configuration? [y/N]: y

# touch the Yubikey
$ hello world
zsh: command not found: hello

$ ykman otp delete 1
Do you really want to delete the configuration of slot 1? [y/N]: y
Deleting the configuration in slot 1...

$ ykman otp info
Slot 1: empty
Slot 2: programmed

$ ykman otp static --generate 2 --length 32
Slot 2 is already configured. Overwrite configuration? [y/N]: y

# touch the Yubikey
$ FiNIFRNhbDRhKEbFLrDNLbkJedkiELhn
zsh: command not found: FiNIFRNhbDRhKEbFLrDNLbkJedkiELhn
$

$ ykman otp swap
Swap the two slots of the YubiKey? [y/N]: y
Swapping slots...

Якщо ви віддаєте перевагу графічному інтерфейсу, ви можете скористатися YubiKey Personalization Tool. Виконайте наступні кроки

  • Перейдіть у "режим статичного пароля
  • Відскануйте код
  • Виберіть слот конфігурації 1/2 (коротке/довге натискання)
  • Вам потрібно вибрати розкладку клавіатури, перш ніж ви зможете ввести пароль (зручність використання)
  • Введіть пароль
  • Запишіть конфігурацію
  • Перевірте її в текстовому редакторі

Другий фактор для повного шифрування диска

Ви можете використовувати функцію виклику-відповіді Yubikey, щоб увімкнути 2FA для повного шифрування диска (luks). Існує проект для Debian і проект для Arch Linux. Обидва працюють в основному однаково. Під капотом відбувається наступне:

  • ініціалізація: додавання секрету до Yubikey (HMAC-SHA1 Challenge-Response)
  • перший фактор - це виклик, який ви повинні ввести вручну під час завантаження (він отримує sha256sumed перед відправкою до Yubikey)
  • другий фактор - відповідь, яку обчислює Юбікей (код)
  • виклик і відповідь об'єднуються (код) і додаються як пароль до слоту для ключів luks (код)

Ви також можете записати челендж у конфігураційний файл. Тоді ви зможете розшифрувати диск під час завантаження лише за допомогою Yubikey, вам не потрібно буде вводити пароль (challenge). Існують утиліти, які роблять використання досить простим (ykfde-format, ykfde-enroll, ykfde-open). Ось як ви можете їх використовувати:

$ ykman otp chalresp 2
Enter a secret key: supersecret2
Program a challenge-response credential in slot 2? [y/N]: y
$

# create a test disk
$ truncate -s 20M disk
# Hint: I set YKFDE_CHALLENGE_PASSWORD_NEEDED="1" and DBG="1" in /etc/ykfde.conf
$ ykfde-format disk
 > ~ slot status 'ykinfo -q -2': 1
WARNING: This script will run 'cryptsetup luksFormat disk'.  If this is not what you intended, please abort.
 > Please provide the challenge.
   Enter challenge: 123
 > Please repeat the challenge.
   Enter challenge: 123
   Running: 'ykchalresp -2 a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3'...
   Remember to touch the device if necessary.
   Received response: '0c66dacbf9155c6f48b774ca7c2520735b3dce7c'
 > Passing 'a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae30c66dacbf9155c6f48b774ca7c2520735b3dce7c' to 'cryptsetup'
   New LUKS device successfully formatted
# Let's reprodcue it manually:
# Step 1: sha256 of the challenge "123"
$ echo -n 123 | sha256sum
a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3  -

# Step 2: Use the challenge-response feature (slot 2). Input: sha256("123")
$ ykchalresp -2 a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
0c66dacbf9155c6f48b774ca7c2520735b3dce7c

# Step 3: concat challenge|respone and use it as password to decrypt the luks device
$ echo "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae30c66dacbf9155c6f48b774ca7c2520735b3dce7c" | sudo cryptsetup open disk test-disk
[sudo] password for kmille:
$ sudo cryptsetup close test-disk
$ rm disk

Для резервного копіювання вам потрібно лише зберігати секрет запиту-відповіді Yubikey у збереженому місці. Якщо у вас немає пристрою для резервного копіювання, ви можете скористатися цією невеликою реалізацією виклику-відповіді в python (це просто SHA-1 HMAC відповідно до RFC2104:

$ ykman otp chalresp --touch --generate 2
Using a randomly generated key (hex): 00b96ec0a15fe9c6d752d2d89793b434ef7c49c5
Program a challenge-response credential in slot 2? [y/N]: y

$ echo -n test | ykchalresp -2 -i-
bcfb0464611a4b29444d0288c9e4ba91db13ed72

$ cat test.py
from hashlib import sha1
from binascii import unhexlify
import hmac

key = unhexlify("00b96ec0a15fe9c6d752d2d89793b434ef7c49c5")
message = b"test"

hashed = hmac.new(key, message, sha1)
mac = hashed.hexdigest()
print(mac)

$ python test.py
bcfb0464611a4b29444d0288c9e4ba91db13ed72
$ 

PIV (Personal Identity Verification), також відома як смарт-карта

Я використовую функцію PIV для автентифікації SSH за допомогою відкритого ключа. На жаль, на Yubikey 5 можна зберігати лише одну пару ключів для аутентифікації по ssh (методом PIV). Крім того, максимальний розмір ключа RSA обмежений до 2048. Для роботи PIV необхідно, щоб був запущений сервіс pcscd (PC/SC Smart Card Daemon). В Arch Linux встановіть пакет opensc, для ОС на базі Debian встановіть pcscd. Потім запустіть/увімкніть службу:

systemctl enable --now pcscd.service
systemctl status pcscd.service

PIN-код для PIV: чому і як

YubiKey з підтримкою PIV має PIN-код, PUK-код та ключ управління. PIN-код використовується під час звичайної роботи для авторизації таких дій, як створення цифрового підпису для будь-якого з завантажених сертифікатів. PUK можна використовувати для скидання PIN-коду, якщо його буде втрачено або заблоковано після максимальної кількості неправильних спроб. Якщо неправильний PIN-код буде введено 3 рази поспіль, PIN-код буде заблоковано. Якщо ви встановили PUK-код, ви можете використати його для скидання PIN-коду на нове значення, і він знову стане активним і придатним для використання. Якщо неправильний PUK-код буде введено 3 рази поспіль, він також буде заблокований. Коли заблоковано і PIN-код, і PUK-код, пристрій можна перезавантажити. Це повертає PIV-функції YubiKey до заводських налаштувань, встановлюючи значення PIN-коду, PUK-коду та ключа управління за замовчуванням, а також видаляючи всі збережені ключі та сертифікати. Після скидання пристрій готовий до повторної ініціалізації.

Для всіх операцій управління PIV YubiKey потрібен 24-байтовий ключ 3DES, так званий Ключ управління. Ви можете явно встановити 24-байтовий ключ (YubiKey PIV Manager може згенерувати його для вас), або не встановлювати ключ управління, а використовувати для цих операцій PIN-код. У цьому випадку вам буде запропоновано ввести PIN-код замість ключа управління щоразу, коли ви виконуєте операцію управління, наприклад, імпортуєте новий сертифікат або генеруєте нову пару ключів. Будь ласка, ознайомтеся з міркуваннями, викладеними на веб-сайті, щодо використання PIN-коду для керування PIV.

Попередній текст було скопійовано з сайту Yubico. Найголовніше: ви можете скинути конфігурацію PIV, якщо щось піде не так:

$ ykman piv reset
WARNING! This will delete all stored PIV data and restore factory settings. Proceed? [y/N]: y
Resetting PIV data...
Success! All PIV data have been cleared from the YubiKey.
Your YubiKey now has the default PIN, PUK and Management Key:
        PIN:    123456
        PUK:    12345678
        Management Key: 010203040506070801020304050607080102030405060708

Щоб змінити Management Key:

$ cat gen-mgmt-key.py
import os
from binascii import hexlify
print(hexlify(os.urandom(24)).decode())

$ python gen-mgmt-key.py
faf6bf013ed8fc473e0b47e5502d0c75fda8e40ece5bce24

$ ykman piv access change-management-key
Enter PIN: 
Enter the new management key: 
Repeat for confirmation: 

Для зміни PIN/PUK:

$ ykman piv access change-pin
Enter the current PIN: 
Enter the new PIN: 
Repeat for confirmation: 
New PIN set.

$ ykman piv access change-puk
Enter the current PUK: 
Enter the new PUK: 
Repeat for confirmation: 
New PUK set.

$ ykman piv info                                            
PIV version: 5.1.2
PIN tries remaining: 0
...

kmille@linbox:~ ykman piv access unblock-pin
Enter PUK: 
Enter a new PIN: 
PIN unblocked

kmille@linbox:~ ykman piv access set-retries 5 5
Enter a management key [blank to use default key]: 
Enter PIN: 
WARNING: This will reset the PIN and PUK to the factory defaults!
Set the number of PIN and PUK retry attempts to: 5 5? [y/N]: y
Default PINs are set:
        PIN:    123456
        PUK:    12345678

SSH за допомогою PIV: генерація приватного ключа на Yubikey

Нижче ви можете побачити, як згенерувати приватний ключ на Yubikey. Закритий ключ ніколи не покине Yubikey, тому ви не зможете його експортувати/створити резервну копію. Я не рекомендую використовувати ECDSA (P-256 або P-384) і рекомендую використовувати 2048-бітове RSA, яке стоїть за замовчуванням.

# Hint: 9a is the key slot, pubkey.pem the file where the public key will be stored
$ ykman piv keys generate 9a pubkey.pem
Enter a management key [blank to use default key]:
# Hint: the generate command supports some useful parameters
#  --algorithm RSA1024|RSA2048|ECCP256|ECCP384   Algorithm to use in key generation
#  --pin-policy [DEFAULT|NEVER|ONCE|ALWAYS]      PIN policy for slot.
#  --touch-policy [DEFAULT|NEVER|ALWAYS|CACHED]  Touch policy for slot.

$ ykman piv certificates generate --subject "CN=yubico" 9a pubkey.pem
Enter a management key [blank to use default key]:
Enter PIN:
$

$ ykman piv info
PIV version: 5.1.2
PIN tries remaining: 3
Management key algorithm: TDES
CHUID:  3019d4e739da739ced39ce739d836858210842108421c84210c3eb3410aeab759a2258a6311edece0f51cb8fb1350832303330303130313e00fe00
CCC:    No data available.
Slot 9a:
        Algorithm:      RSA2048
        Subject DN:     CN=yubico
        Issuer DN:      CN=yubico
        Serial:         271029653146178331059499985773756430831562756416
        Fingerprint:    dd721071c21e2c5b2a4b2d34025ab8ce57124fd66368c2e01656c653971db350
        Not before:     2023-02-07 13:32:41
        Not after:      2024-02-07 13:32:41

# Hint: show public key
$ ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so -e
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+uLBEfTF6XRTetzZ7MtxlK4yrPZnp13PGmTeSW5qwO36ycORDylR8P3bfaK/v4kuSYSzaumgGZTQ7tUO14r8vZhCzimX0oCSjy3RhaKEb0Dpk2yFxQyeqCdTOygBle8QzvVqBhOFNtjTUtzl8Tmr8AVEl/zMWk/N76ilhbp5fm4ywAwIOY66m5nttEG3ykTc98DzS/+aY5YgpsiADADAE38E7rlMHHVAQQ8cwUIyIHPplQZlbdjOH2FFroxhf8vUDjDLWnHAU2Chr7tV+f9p/IN812pOcejCtBlCyAS72JjuC0K9QEIXvfuQqkFJ7tUdvRcR38wcA0w1tWhsWoko9 PIV AUTH pubkey

$ ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so -e >> ~/.ssh/authorized_keys

$ ssh -I /usr/lib64/pkcs11/opensc-pkcs11.so localhost
Enter PIN for 'yubico':
Last login: Tue Feb  7 13:31:13 2023 from ::1
kmille@linbox:~

$ rm pubkey.pem
$

$ ykman piv certificates delete 9a
Enter a management key [blank to use default key]:

Використання разом з ssh-agent

$ ssh-add -s /usr/lib64/pkcs11/opensc-pkcs11.so
Enter passphrase for PKCS#11:
Card added: /usr/lib64/pkcs11/opensc-pkcs11.so

$ ssh-add -l
2048 SHA256:WhnjNX3z7qfJdr4aNFlK//StX6hOXx7oA33yCVbjn7Q PIV AUTH pubkey (RSA)

$ ssh localhost
Last login: Tue Feb  7 14:33:19 2023 from ::1
$

Також можна використовувати PKCS11Provider /usr/lib64/pkcs11/opensc-pkcs11.so у ~/.ssh/config.

SSH з PIV: імпорт існуючого приватного ключа в Yubikey

Щоб імпортувати існуючий ssh-ключ до Yubikey, приватний ключ повинен бути перетворений у відповідний формат. Також потрібно створити файл з відкритим ключем. Експорт з Yubikey працює лише з прошивкою 5.3 або новішої версії (див. цю тему на Github).

# Hint: -P means no password, ssh-keygen uses 3072 bit as default on Arch
# Yubikey supports only 2048 bit max
$ ssh-keygen -f existing  -b 2048 -P ""
Generating public/private rsa key pair.
Your identification has been saved in existing
Your public key has been saved in existing.pub

# Hint: the private key must be converted first
$ head -n 1 existing         
-----BEGIN OPENSSH PRIVATE KEY-----

$ ssh-keygen -p -m pem -f existing
Key has comment 'kmille@linbox'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

$ head -n 1 existing
-----BEGIN RSA PRIVATE KEY-----

$ ykman piv keys import 9a existing
Enter a management key [blank to use default key]:

$ openssl rsa -in existing -pubout > testpub.pem
writing RSA key
$ head -n 1 testpub.pem
-----BEGIN PUBLIC KEY-----

$ ykman piv certificates generate --subject "CN=yubico" 9a testpub.pem
Enter a management key [blank to use default key]:
Enter PIN:
$

$ ykman piv info
PIV version: 5.1.2
PIN tries remaining: 3
Management key algorithm: TDES
CHUID:  3019d4e739da739ced39ce739d836858210842108421c84210c3eb34108897deb27c93ec8f6ebd0aa44d1139ef350832303330303130313e00fe00
CCC:    No data available.
Slot 9a:
        Algorithm:      RSA2048
        Subject DN:     CN=yubico
        Issuer DN:      CN=yubico
        Serial:         476405504585636348134209109957833992452830001643
        Fingerprint:    d723fce0a85c0105e4485d01fe264a6dd5e6677465410f1f90b0446f62b1bf8c
        Not before:     2023-02-26 19:25:46
        Not after:      2024-02-26 19:25:46

Сучасне шифрування з age

age - це простий, сучасний і безпечний інструмент шифрування файлів, формат і бібліотека Go. Існує також age-plugin-yubikey, плагін для клієнтів age, таких як age і rage, який дозволяє шифрувати файли за допомогою age ідентифікаторів (age ідентифікатор схожий на відкритий ключ pgp), що зберігаються на YubiKey. Щоб використовувати його у Arch Linux, встановіть пакунок age-plugin-yubikey. На сторінці релізу на Github також є .deb-пакунок. Наразі age-plugin-yubikey підтримує лише криву ECCP256.

Щодо резервного копіювання: Закритий ключ зберігається на Yubikey і не може бути витягнутий. Щоб захистити себе від зламаного/вкраденого/втраченого Yubikey, використовуйте другий пристрій Yubikey і зашифруйте все вдруге з ідентифікатором резервного Yubikey.

Нижче наведені команди для генерації нового приватного ключа на Yubikey і шифрування/розшифрування даних з його допомогою. Cлот з 82 по 94 можна використовувати для зберігання ідентифікаторів (джерело). Ви можете просто запустити age-plugin-yubikey, щоб отримати інтерактивне налаштування для нового посвідчення. Інструмент також підтримує --touch-policy (always, cached, never) і --pin-policy (always, cached, never).

$ age-plugin-yubikey --generate --name test123
Enter PIN for YubiKey with serial 1312 (default is 123456): [hidden]
👆 Please touch the YubiKey
#       Serial: 1312, Slot: 1
#         Name: test123
#      Created: Sun, 05 Feb 2023 18:17:32 +0000
#   PIN policy: Once   (A PIN is required once per session, if set)
# Touch policy: Always (A physical touch is required for every decryption)
#    Recipient: age1yubikey1q228ff7yqw9pfducrzseqfsk8epg9lgluwetkdd0u48c0v9vg4t6gqkak3r
AGE-PLUGIN-YUBIKEY-1YELEWQYZ6DNC07QXHA5AW

# Hint: --list shows metadata and public key of all slots stored on Yubikey
$ age-plugin-yubikey -l
#       Serial: 1312, Slot: 1
#         Name: test123
#      Created: Sun, 05 Feb 2023 18:17:32 +0000
#   PIN policy: Once   (A PIN is required once per session, if set)
# Touch policy: Always (A physical touch is required for every decryption)
age1yubikey1q228ff7yqw9pfducrzseqfsk8epg9lgluwetkdd0u48c0v9vg4t6gqkak3r

# Hint: --identity returns a string on stdout which you can use for
# 'age -d -i '. It  tells age which private key to use for decryption
$ age-plugin-yubikey -i --slot 1 > identity-1.txt
Recipient: age1yubikey1q228ff7yqw9pfducrzseqfsk8epg9lgluwetkdd0u48c0v9vg4t6gqkak3r

$ cat identity-1.txt
#       Serial: 1312, Slot: 1
#         Name: test123
#      Created: Sun, 05 Feb 2023 18:17:32 +0000
#   PIN policy: Once   (A PIN is required once per session, if set)
# Touch policy: Always (A physical touch is required for every decryption)
#    Recipient: age1yubikey1q228ff7yqw9pfducrzseqfsk8epg9lgluwetkdd0u48c0v9vg4t6gqkak3r
AGE-PLUGIN-YUBIKEY-1YELEWQYZ6DNC07QXHA5AW

# Hint: encrypt tmp/test.txt with an identity/public key and write it to tmp/test.txt.age
$ cat tmp/test.txt | age -r age1yubikey1q228ff7yqw9pfducrzseqfsk8epg9lgluwetkdd0u48c0v9vg4t6gqkak3r > tmp/test.txt.age

# Hint: decrypt it with the Yubikey (I have to touch it)
$ cat tmp/test.txt.age | age -d -i identity-1.txt > tmp/test.txt
$

$ ykman piv info
PIV version: 5.1.2
PIN tries remaining: 3
Management key algorithm: TDES
Management key is stored on the YubiKey, protected by PIN.
CHUID:  3019d4e739da739ced39ce739d836858210842108421c84210c3eb3410c0a9799579cbe476887b1f7ea5a74a6c350832303330303130313e00fe00
CCC:    No data available.
Slot 82:
        Algorithm:      ECCP256
        Subject DN:     CN=test123,OU=0.3.2,O=age-plugin-yubikey
        Issuer DN:      CN=test123,OU=0.3.2,O=age-plugin-yubikey
        Serial:         875428878573667959096445206907039728936329227404
        Fingerprint:    82ac5b1bc7f640ad58e29096b68c39507f80c335dd69a95971a6fe7f4a2c33c7
        Not before:     2023-02-05 18:17:32
        Not after:      9999-12-31 23:59:59
...

$ ykman piv certificates delete 82
Enter PIN:
$ age-plugin-yubikey -l
$

Дяки )

Я безмежно вдячний автору цієї статті за титанічний обсяг виконаної праці. Це дійсно варте поваги!

OpenPGP разом з Yubikey

OpenVPN + Yubikey

Ресурси