Usb ключ yubikey что это
Если вы работаете в сфере информационных технологий, то у вас, возможно, есть аппаратный ключ безопасности YubiKey. У меня такой имеется. Это — YubiKey 5C Nano, показанный на следующем снимке.
YubiKey 5C Nano
Если вы работаете в области, не связанной с компьютерами, но при этом, в основном, пользуетесь ноутбуком, то вам, возможно, стоило бы обзавестись YubiKey. А если вы участвуете в политической кампании, или работаете журналистом, то вам, определённо, нужен YubiKey (или нечто подобное). Обсудите это с вашим отделом безопасности. Правда, этот материал будет кое о чём таком, о чём специалистам вашего отдела безопасности лучше не знать. Поэтому не говорите им об этой статье.
Ключ YubiKey используется в механизмах двухфакторной аутентификации. Это означает, что после того, как вы вошли в некую систему с помощью имени пользователя и пароля, система предложит вам авторизоваться с помощью ещё одного механизма. В результате, если ваши имя пользователя и пароль украдут, злоумышленнику придётся украсть ещё и второе средство аутентификации, что усложняет его задачу.
Существуют разные способы двухфакторной аутентификации. Например, часто встречается такая схема работы: веб-сайт предлагает вам отсканировать QR-код с помощью приложения вроде Google Authenticator, установленного на телефоне, генерирующего 6-значные коды. Работа этого механизма основана на том, что у сервера и у приложения имеется один и тот же секретный ключ. Телефон генерирует коды, основываясь на этом ключе и на текущей отметке времени. Такие же коды генерирует и сервер. Когда серверу предоставляют код, созданный в приложении, он проверяет, совпадает ли он с кодом, который сгенерировал он.
Шестизначный код, сгенерированный приложением
Ключи YubiKey — это маленькие устройства, подключаемые к USB-портам компьютеров и эмулирующие клавиатуру. Когда нажимают кнопку YubiKey (или, скорее, касаются её), устройство генерирует одноразовый пароль (One-Time password, OTP), который может быть проверен специальным сервером. На устройстве имеется секретный ключ, используемый для подписывания информации, но этот ключ никогда не выходит за пределы устройства, так как он сохранён в особом окружении, защищённом от несанкционированного доступа.
Мой YubiKey рассчитан на постоянное подключение к USB-порту. Поэтому я, когда, например, беру ноутбук с рабочего стола и переношу его в конференц-зал, забираю с собой и YubiKey. Но теперь мой ноутбук, как и ноутбуки многих «новообращённых» удалённых работников, никогда не покидает мой рабочий стол. Я подключил его к внешнему монитору, а чтобы сэкономить на столе немного места, я установил его вертикально, в сложенном состоянии, на специальной стойке.
Это усложнило задачу активации YubiKey. Особенно — если ноутбук находится далеко от внешней клавиатуры и мыши. Я решил эту проблему, купив USB-C-удлинитель, благодаря которому смог разместить YubiKey поближе к клавиатуре.
Да, я ещё не рассказал об одной особенности YubiKey 5C Nano. Дело в том, что кнопку устройства довольно тяжело «нажимать», и это — даже если не учитывать проблему большого расстояния до ключа. Область устройства, которой надо коснуться для активации ключа, очень мала.
YubiKey 5C Nano
Одна из особенностей YubiKey заключается в том, что устройство срабатывает только в том случае, если металлического контакта касается человек. Это предотвращает срабатывание ключа в том случае, если, например, YubiKey что-нибудь случайно заденет. Если вы когда-нибудь видели в Slack-канале или в документах Google одноразовый пароль, вроде tlerefhcvijlngibueiiuhkeibbcbecehvjiklltnbbl , то вы знаете о том, что система это не идеальная. Я бы сказал, что устройство не срабатывает в одной из пяти попыток его активировать.
На то, чтобы ключ нельзя было бы активировать программно, было потрачено много сил и времени.
Прежде чем мы пойдём дальше, мне хотелось бы остановиться на причинах подобного состояния дел. Если хакер сможет взломать компьютер и сумеет программно активировать YubiKey, это полностью лишит смысла использование данного ключа. Но я полагаю, что мы всегда идём на компромиссы между безопасностью и удобством. Например, часто бывает так, что YubiKey-пароль не нужно вводить каждый раз, подключаясь к некоей системе. Некоторые системы, после ввода такого пароля, позволяют, при следующих входах в них, некоторое время не вводить его снова. Или, например, когда система с двухфакторной аутентификацией выдаёт вам резервные коды доступа — часто ли вы их распечатываете на принтере и убираете в надёжное место? Каждый сам для себя находит устраивающий его баланс безопасности и удобства.
Учитывая вышесказанное, давайте поговорим о том, как можно программно активировать YubiKey.
Я называю этот механизм The Finger
Создание ключа отмены
Следующий важный шаг — создание ключа отмены [revocation key]. С ним можно отозвать любой ключ, который был потерян, украден или скомпрометирован. Экспортированный ключ не стоит хранить на локальном устройстве, лучше на флэшке в надежном месте. Чтобы создать файл отмены, сделайте следующее, изменяя местоположения для пользователей USB-флэшки:
gpg2 -- gen - revoke $ KEYID > / path / to / usb / revoke . txt
Как и при создании оригинала ключа, процесс задаст вам несколько вопросов. На вопрос о причине отмены можно указать “0”. Помимо всего прочего, вас спросят пароль для мастер-ключа и новый пароль для ключа отмены.
Следующий шаг — экспортировать “secretkeys [секретные ключи]”. Пусть вас не вводит в заблуждение терминология. «Секретные ключи» означает «частный ключ». Это у него название такое! Чтобы экспортировать свой ключ на USB-брелок, используйте приведенную ниже команду, при необходимости заменив местоположение:
gpg2 -- armor -- export - secret - keys $ KEYID > / path / to / usb / master . key
После настройки основных ключей надо создать подключи. Здесь мы создаем подключ для подписания. Обратите внимание на параметр —expert. Он включает несколько нужных нам опций:
gpg2 -- expert -- edit - key $ KEYID Защита USB ключом. Создание подключей, с расширенными опциями
Для добавления ключа используйте команду addkey. Выберите опцию 4 (RSA Sign only). Опять примите настройки по умолчанию и новый пароль. Обратите внимание, что внизу появилась новая запись, и ее использование помечено “S”. Это означает, что ключ служит только для подписания.
Процесс повторяется для создания ключа шифрования. Предполагая, что пользователь всё еще находится в приложении gpg2, введите addkey. Выберите опцию для RSA Encrypt only [Только шифрование]. Примените настройки по умолчанию, как в предыдущих итерациях. В конечном итоге у вас должен быть новый ключ, отмеченный E (от Encryption).
Последний ключ, который нужно создать — ключ авторизации. Это ключ, который используется для входа в систему, а не для подписания, отмены и т. д. Снова запустите команду addkey. Однако на сей раз нам надо выбрать RSA (Set your own capabilities) [задайте свои полномочия]. Причина в том, что нам надо изменить способ использования, чтобы это был ключ авторизации. Если это не появилось, значит, вы не включили режим эксперта!
В ключе авторизации полномочия ключа нужно установить на Authorize [Авторизацию]. Разрешенные действия можно включать/отключать клавишами S, E или A. Переключайтесь по необходимости, пока не появится Authenticate. Нажмите G, чтобы завершить настройку. Примите настройки по умолчанию. Будем надеяться, что появятся четыре ключа: SC, S, E и A. Сохраните всю работу, введя save [сохранить]. Пользователь будет переведен в командную строку. После завершения должен появиться еще один подключ с пометкой “usage A”. Теперь надо сохранить всю эту настройку. Сохраните ее на диске, введя save. Пользователь снова окажется в командной строке Linux.
Теперь экспортируйте ключи и подключите частные ключи:
gpg2 -- armor -- export - secret - keys $ KEYID > / path / to / usb / master_ and_sub . keygpg2 -- armor -- export - secret - subkeys $ KEYID > / path / to / usb / sub . key
Далее надо экспортировать ключи SSH. В gpg2 есть инструмент для экспорта частного и открытого ключей SSH из ключей OpenGPG:
gpg2 -- armor -- export $ KEYID > / path / to / usb / public_gpg . keygpg2 -- export - ssh - key $ KEYID > / path / to / usb / public_ssh . key
В этот момент можно установить YubiKey. Чтобы проверить, распознается ли карта, используйте команду
gpg2 -- card - edit
Если всё прошло нормально, выведется информация, относящаяся к рассматриваемому YubiKey. В нашем контексте мы можем проигнорировать большую часть записей. Единственные пункты, которые я бы предложил вам изменить — это вывод пользователя и администратора. Для этого надо перевести ключ в режим администратора. С этой целью введите admin и затем passwd. Вывод для пользователя по умолчанию ‘123456′, а для администратора — ‘12345678′. Переделайте их, выбрав какое-нибудь подходящее число и изменив контакты. Не забудьте сохранить информацию, прежде чем выйдете.
Аппаратная часть системы
Для начала нам нужен какой-то способ для организации взаимодействия компьютера и The Finger. У меня есть куча макетных плат IZOKEE D1 Mini, которые представляют собой уменьшенную версию плат, использующих знаменитый чип ESP8266, применяемый во многих IoT-устройствах.
Плата с чипом ESP8266
Этот модуль можно подключить к ноутбуку по USB, но так как он поддерживает WiFi, на нём можно просто запустить веб-сервер и отправлять ему команды по беспроводной сети.
Далее, нам нужно нечто, способное перемещать The Finger в направлении YubiKey. После непродолжительных поисков в интернете я узнал о том, что с платой D1 Mini хорошо стыкуется шаговый двигатель 28BYJ-48.
Шаговый двигатель
Шаговый двигатель преобразует электрические импульсы во вращательные движения, у D1 Mini есть пины, способные выдавать подобные импульсы.
Схема работы двигателя
Но шаговый двигатель имеет вращающийся якорь, а нам нужно перемещать движущуюся часть The Finger по прямой. Я поискал по слову 28BYJ-48 на Thingiverse и обнаружил соответствующий механизм.
Механизм для преобразования вращательного движения в прямолинейное
Тут к двигателю крепится шестерня, которая перемещает вперёд-назад длинный стержень с зубцами. А если мы собираемся перемещать в направлении YubiKey длинную пластиковую штуковину, то она вполне может выглядеть как обычный палец. Я опять пошёл на Thingiverse, поискал там по слову «finger» и нашёл модель пальца, которую кто-то сделал для Хэллоуина.
Модель пальца
Я открыл файлы моделей в Fusion 360, и, пользуясь продвинутыми CAD-инструментами, сделал то, модель чего показана ниже.
Результат объединения моделей пальца и стержня
Потом я экспортировал модель в формат STL и напечатал её на 3D-принтере. В тот момент в принтер был заряжен пластик Prusament PLA Lipstick Red. Он и пошёл в дело. Когда пластиковый палец был готов, я взял его и коснулся им сенсора YubiKey. Ничего не произошло. Тогда я нашёл у себя на столе металлический винт и коснулся YubiKey на этот раз им. Ключ мгновенно выдал одноразовый пароль. Я прикрепил пластиковый палец к столу струбциной, просверлил в нём небольшое отверстие и вкрутил туда винт. Потом я коснулся сенсора винтом, вкрученным в пластиковый палец, но на этот раз устройство снова не отреагировало на прикосновение.
Обработка пластиковой модели
Именно тогда я понял, что я — идиот, и что когда я касался YubiKey металлическим винтом, металл просто передавал электрический заряд с моего тела на ёмкостный датчик касания YubiKey. Как же мне обмануть датчик и заставить его поверить в то, что пластиковая модель — это настоящий палец?
Я предположил, что принцип работы ёмкостных датчиков заключается в том, что они измеряют ёмкость человеческого тела по отношению к «земле». Поэтому, если подключить датчик прямо к «земле», то он решит, что тело коснувшегося его человека просто является очень хорошим проводником. Поэтому я взял изолированный провод, немного открутил винт, обмотал концом провода винт и опять его закрутил. Потом я подключил другой конец провода к выходу GND платы D1 Mini и снова коснулся YubiKey. На этот раз всё заработало!
К плате управления двигателем уже были подключены выходы 5V и GND платы D1 Mini. Поэтому я подумал, что мне может понадобиться подключить к GND и плату управления двигателем, и винт. Но неожиданно для себя я понял, что могу просто воткнуть другой конец провода, идущего от винта, между и металлическим корпусом двигателя (по-видимому — заземлённым) и пластиковой стенкой отсека для двигателя. И так всё тоже работало!
Провод, соединяющий корпус двигателя и винт, вкрученный в пластиковый палец
После того, как я убедился в том, что The Finger способен активировать YubiKey, я начал думать о том, как закрепить YubiKey рядом с пластиковым пальцем. Этот вопрос я решил, измерив цифровым штангенциркулем размеры USB-C-удлинителя и создав держатель для двигателя, пальца и удлинителя с YubiKey в Fusion 360.
Удлинитель входит в отверстие держателя, расположенное слева, а двигатель монтируется справа.
На этом этапе работы мне понадобилось подключить плату управления двигателем к D1 Mini. Это можно сделать, припаяв несколько выводов к D1 Mini и подключив к ним соединительные провода Dupont, идущие к плате двигателя.
Подключение платы управления двигателем к плате D1 Mini
В следующей таблице показана схема подключения платы управления двигателем к плате D1 Mini.
D1 Mini | Плата управления 28BYJ-48 |
5V | 5V |
GND | GND |
D1 | IN1 |
D2 | IN2 |
D3 | IN3 |
D4 | IN4 |
После того, как все части системы оказались собранными воедино, у меня получилось то, что показано на следующем рисунке.
Система в сборе
YubiKey
YubiKey — это устройство аутентификации оборудования, которое поддерживает разовые пароли, шифрование и аутентификацию с открытым ключом и протокол Universal 2nd Factor (U2F), являющийся международным стандартом для обеспечения беспроблемной аутентификации. Он позволяет безопасно входить в учетные записи пользователей, предоставляя одноразовые пароли или используя основанную на FIDO пару открытого / частного ключей, созданную устройством.
YubiKey также позволяет хранить статические пароли для использования на сайтах без поддержки одноразовых паролей. Среди самых крупных сайтов, имеющих такую поддержку, можно назвать Facebook, который использует YubiKey для аутентификационной информации своих работников, и Google, который поддерживает его как для сотрудников, так и для пользователей. Некоторые менеджеры паролей тоже поддерживают YubiKey.
Yubico заменили в YubiKey 4 закрытым кодом все компоненты с открытым кодом. Yubico утверждает, что их код подвергся внутреннему и внешнему пересмотру, и их руководитель разместил обоснование этого шага.
▍ Выводы
Подведём итоги. В статье исключительно с практической точки зрения рассмотрены пути применения аппаратного ключа Yubikey, которые могут быть адаптированы как для дома, так и для офиса. Аутентификация в Windows, GPG, SSH, LUKS и TOTP рассмотрены с позиции настройки. Разумеется, двухфакторная аутентификация задумана, чтобы сделать цифровой мир более безопасным. И одной из наиболее перспективных технологий, применяемых в ней, являются аппаратные ключи шифрования. Но между тем, зная, что без Yubikey в учётную запись не войти, можно использовать не криптостойкие пароли, полагаясь на сохранность ключа. И даже использовать один пароль для разных интернет-сервисов, защищённых посредством осязаемого токена, не переживая за инсайдерские и хакерские сливы. Только об этом никому ни слова.
Это аппаратный ключ безопасности, который поддерживает протокол универсальной двухфакторной аутентификации, одноразовые пароли и асимметричное шифрование. Если вы добавите его, допустим, в аккаунт на Гитхабе, то для входа в свой аккаунт, понадобится ввести логин/пароль и коснуться кнопки юбикей.
Год назад я приобрел Yubikey, чтобы использовать его в качестве второго фактора для аккаунтов Google, Github и других, которые работают с U2F. Однако я для себя выяснил, что Yubikey обладает куда более расширенным функционалом. Большая часть из нижеописанных действий актуальна для работы и без Yubikey, однако преимущество в портативности будет потеряно.
Все действия описаны для Yubikey 5 и Ubuntu 21.04.
Установка YubiKey
Для корректной работы в Linux YubiKey требует дополнительных пакетов. В моем примере будет использоваться Ubuntu 16.04.
Итак, из командного терминала установите эти пакеты:
sudo su apt get update yapt get install y YubiKey luks YubiKey personalization scdaemonexit
После установки пользователь сможет настроить аппаратный ключ. Важно понять, как работает YubiKey. На устройстве YubiKey есть несколько разъемов-слотов. Каждый слот может содержать определенный ключ/пароль шифрования. Технически слотов несколько, но только два первых официально поддерживают использование паролей. Это отдельно от местоположения хранения SSH.
YubiKey надо настроить для работы с шифрованием LUKS. Сначала подключите YubiKey. Чтобы инициировать использование второго слота с LUKS, запустите следующую команду:
sudo ykpersonalize - 2 - ochal - resp - ochal - hmac - ohmac - lt64 - oserial - api - visible
Примите изменения, нажав Y. Прежде чем запускать нижеприведенную команду для настройки YubiKey и LUKS, стоит проверить, что используется должный шифрованный раздел. Это делается обычным просмотром файла /etc/crypttab. Используйте следующую команду для подтверждения диска:
cat / etc / crypttab
Шифрованный раздел находится в начале первой строки. В моем случае им является /dev/sda5. Если во время установки были выбраны настройки Ubuntu по умолчанию, то раздел sda5 — это всегда шифрованный диск. Последнее, что осталось — обновить систему LUKS для использования слота 7 устройства YubiKey. Добавится второй ключ LUKS, который не будет работать без аппаратного ключа и пароля:
sudo YubiKey - luks - enroll - d / dev / sda5 - s 7
В этот момент пользователю надо вставить YubiKey и ввести новый добавочный пароль для использования совместно с LUKS. Введите новый, уникальный пароль. Вам предложат подтвердить его.
Наконец, вас попросят ввести исходный пароль для диска LUKS. Вводите его правильно, иначе диск не станет нормально работать. Теперь остается только перезагрузить компьютер и убедиться, что новая настройка шифрования применена правильно.
После перезагрузки пользователь должен вставить YubiKey и ввести вновь созданный пароль LUKS. Если всё нормально, он должен нормально загрузиться.
Если по каким-то причинам это не сработало, можно использовать исходный пароль LUKS. Исходный пароль позднее можно усилить (в противном случае он сводит на нет безопасность, обеспечиваемую YubiKey).
SSH-ключи
Многие знакомы с такой простой операцией, как подключение по SSH. У нас в TOT Systems имеется собственный менеджер паролей, и чтобы подключиться к удаленной машине, нужно зайти в него, скопировать логин, адрес и пароль.
Проблема паролей в том, что их можно подобрать, поэтому для авторизации по SSH часто используют RSA-ключи. Ключ состоит из двух частей - открытой и закрытой. Открытая часть должна быть на удалённой машине, а закрытая часть у пользователя в надёжном месте, т.е. приватный ключ никому показывать нельзя. Кто-то считает надежным местом облако или флешку - места, из которых теоретически можно достать этот самый ключ. Преимущество Yubikey в том, что приватный ключ из него извлечь не получится - даже пользователь его не знает.
Для работы нам понадобятся OpenSSH версии 8.2 и библиотека libfido2. Вместо привычного RSA-файла с приватным ключом давайте создадим ключ прямо на Yubikey с алгоритмом Ed25519.
Вставляем Yubikey в USB-порт и вводим команду с опцией resident, которая означает, что приватный ключ всегда будет храниться на Yubikey, а непосредственно в компьютере находится резидентный ключ, который без аппаратного ключа бесполезен:
$ ssh-keygen -t ed25519-sk -O resident
Сначала нас попросят ввести пин-код от Yubikey. Если до этого вы не настраивали свой юбикей, то User PIN по-умолчанию - 123456, а Admin PIN - 12345678.
После ввода User PIN кнопка юбикей начнет мигать - нажимаем на неё. Выбираем место для сохранения ключей (предлагаю не менять директорию). Далее 2 раза вводим фразу-пароль для этого ключа.
В директории ~/.ssh появятся два файла: id_ed25519_sk.pub , который является обычным публичным ключом, и id_ed25519_sk , который является резидентным ключом и ссылается на приватный ключ в Yubikey.
Теперь добавим публичный ключ на SSH-сервер, к которому мы хотим подключиться. Для этого заходим на сервер как обычно с помощью пароля, переходим в папку ~/.ssh и находим в ней файл authorized_keys , а если его нет, то создаём. В этот файлик копируем содержимое нашего публичного ключа. Пробуем авторизоваться:
Нас попросят ввести фразу-пароль от ключа, а затем нажать на кнопку Yubikey - успешно авторизуемся. При этом возможность авторизоваться по паролю никуда не пропала.
Если предварительно вынуть юбикей из USB-порта и попробовать авторизоваться, то после ввода парольной фразы от ключа у нас будет ошибка и нам будет предложено ввести пароль от сервера.
Сгенерировать ключи и хранить их на компьютере можно и без Yubikey, но в таком случае возникает потребность в переносе приватного ключа между компьютерами, на которых необходим доступ к серверу. Преимущество Yubikey в том, что ключи всегда хранятся на нём, и при работе на другом компьютере можно легко получить резидентный и публичный ключи.
К примеру, импортируем ключи с юбикея на новый компьютер. Запускаем терминал в папке ~/.ssh :
Вводим пин-код, парольную фразу и получаем два файла: id_ed25519_sk_rk (резидентный ключ) и id_ed25519_sk_rk.pub (публичный ключ). Переименовываем id_ed25519_sk_rk в id_ed25519_sk . Успешно авторизуемся на новом компьютере.
SSH-ключ и U2F на примере Github
С помощью SSH-ключа можно клонировать репозиторий на гитхабе. Для этого добавляем публичный ключ в аккаунт на гитхабе. Теперь попробуем клонировать репозиторий по SSH:
Нас попросят ввести парольную фразу, а также коснуться кнопки юбикея. Вуаля - репозиторий клонирован. Теперь можно проверить, будет ли клонирован репозиторий без юбикея. Вытаскиваем его из USB-порта и попытаемся клонировать другую репу.
Клонировать репу не получается.
Поддержка U2F для SSH-ключей на данный момент реализована только в гитхабе. Если у вас используется gitlab, то использовать ключ с юбикея, к сожалению, не получится.
Теперь поговорим про GPG - программу с ассиметричным шифрованием. С её помощью можно шифровать, подписывать данные, а также авторизовываться по SSH на серверах. Давайте подпишем коммит с помощью gpg.
Для работы с Yubikey Нужно установить scdaemon:
$ sudo apt install scdaemon
Перед созданием RSA-ключа и сабключей поменяем их размер на 4096 бит.
Для этого перейдём в меню смарт-карты.
Появилась основная информация о нашей карте. Видим, что длина ключа 2048 - переключаемся в админ-режим:
и отредактируем длину ключа на 4096:
Теперь перейдём к созданию ключей. В самом начале у нас спросят, делать ли резервную копию ключа шифрования. Также спросят срок жизни ключей. Отредактировать этот срок можно в любой момент.
Проверяем, что ключ сгенерировался и отображается на карте:
Выводим содержимое публичного ключа в терминал:
user@pc:~$ gpg --armor --export 60D70CA6AFBAB10F
Или экспортируем публичный ключ в файл, а затем добавляем его в свой аккаунт в гитлабе:
user@pc:~$ gpg --output .gnupg/yubikey.asc --armor --export
Теперь создадим глобальный конфиг файл ~/.gitconfig с содержимым:
Или если у вас IDEA версии 2021.2 и выше, то вы можете прямо в её настройках выбрать ключ для подписи коммитов - Settings | Version Control | Git | Configure GPG Key
После этого ваши коммиты будут подписаны:
Допустим, мы хотим воспользоваться нашими ключами на новом компьютере. Для этого на карте нужно указать url публичного ключа. Для этого переходим к редактированию карты и в админ-режиме редактируем url:
Для гитхаба url нашего ключа выглядит так. Для гитлаба аналогично. Вы можете хранить публичный ключ на любом сервере публичных ключей.
Теперь на новом компьютере вводим команду fetch
Далее повысим уровень доверия к ключу командой trust:
Всё, теперь мы можем подписывать коммиты, шифровать файлы с помощью одного ключа, который всегда хранится на Yubikey, и если юбикей не вставлен в порт компьютера, то сделать это нельзя.
И последнее, о чем я хочу рассказать - это использование Yubikey для генерации одноразовых кодов, причём коды будут храниться, разумеется, на Yubikey. В этом случае не нужно думать о бэкапе кодов в приложении при смене смартфона или переустановке системы. Однако нужно будет пользоваться приложением от Yubikey, которые есть для iOS/Android. У меня версия Yubikey c обычным USB-портом и NFC. Чтобы добавить код или считать список всех кодов, достаточно поднести юбикей к NFC считывателю смартфона. Таким образом я добавил все сервисы, которыми пользуюсь и в которых нет поддержки U2F, однако добавить второй фактор в Яндексе у меня не получилось, так как они используют Двухфакторную аутентификацию, которой удобно пользоваться (на самом деле не так удобно), и коды для Яндекса возможно генерировать только в их приложении.
В заключение. Лично мне безумно удобно использовать Yubikey для личных и рабочих целей, особенно в формате рабочий/домашний компьютер - пользуюсь и радуюсь :)
Сегодня речь пойдет об одном из способов улучшить безопасность в Linux с помощью USB-ключа YubiKey и двухфакторной аутентификации.
Последнее время многое говорится о безопасности системы и эффективном управлении системой. Реализация на практике устройств с двухфакторной аутентификацией (2FA) помогает повысить эту безопасность.
Защита USB ключом YubiKey
Использование USB-ключа вроде YubiKey имеет ряд преимуществ, включая содействие в шифровании локальных дисков, безопасность аутентификационной информации и безопасность ключей SSH от хакеров. Эти устройства предназначены для безопасного хранения данных и показывают информацию с диска только когда это требуется.
YubiKey можно использовать как отдельное устройство или зарегистрировать его с сервисом пароля YubiKey и компании для обеспечения безопасности управления паролями и автоматического управления сетевыми паролями. YubiKey также можно использовать с Facebook, Google и рядом других провайдеров для обеспечения надежных логинов 2FA ради предотвращения взлома учетной записи. На разных сайтах это реализуется по-разному, но есть масса руководств, объясняющих, как это делается.
Защита USB ключом
Более того, если нажать на емкостное устройство, оно сгенерирует исключительно длинный и надежный пароль, именуемый OTP (one time password — разовый пароль) вместо запоминаемого пароля, что значительно затруднит возможность для кого бы то ни было похитить вашу информацию.
В нашем примере рассмотрен ряд особых случаев использования YubiKey: надежное шифрование всего диска; обеспечение безопасности ключей SSH; и, наконец, это безопасный способ входа на другой компьютер Linux через SSH.
Для нашего урока мне придется сделать ряд допущений:
- Первое — что у вас уже есть YubiKey 4 и что это устройство не используется в данный момент для иных целей.
- Во-вторых, я подхожу к предмету с той точки зрения, что LUKS уже настроен и работает, как положено.
- Предполагается также наличие хорошей, проверенной резервной копии и что она проверена на другом компьютере, не используемом для работы.
Эти действия, если они выполнены неправильно, могут привести к тому, что пользователь временно лишится доступа к своим зашифрованным данным.
Программная часть системы
После предварительных настроек я, чтобы проверить работоспособность системы, запустил скетч, который мигает светодиодом.
Потом я обнаружил этот скетч, демонстрирующий пример управления шаговым двигателем 28BYJ-48 по WiFi.
Вот та часть кода, которая отвечает за управление двигателем:
Вот как всё это устроено. Веб-сервер выдаёт страницу с двумя кнопками. Одна из них, CCW, включает вращение вала двигателя против часовой стрелки, другая, CW — включает вращение по часовой стрелке. Если нажимают кнопку CCW, значение переменной dirStatus меняется на 1, если нажимают кнопку CW — значение этой переменной меняется на 2. Повторные нажатия на уже нажатые кнопки переводит переменную dirStatus в значение 3 и двигатель выключается.
Тут можно обратить внимание на функцию loop() , в которой осуществляется проверка переменной dirStatus . В зависимости от её значения осуществляется либо увеличение значения переменной poleStep , либо его уменьшение (двигатель в это время работает), либо выключение двигателя.
Это значит, что мы можем переписать функцию motorControl() , упростив её и приведя в такое состояние:
Она включит вращение вала двигателя против часовой стрелки при обращении к конечной точке.
Затем мы модифицируем функцию loop() , сделав так, чтобы вал двигателя перемещался бы на 400 шагов против часовой стрелки, а затем — менял бы направление движения и, вращаясь по часовой стрелке, выполнял бы 400 шагов в обратном направлении. После этого двигатель останавливается.
В том, как устроена аппаратная часть The Finger, есть одна приятная особенность. Она заключается в том, что из-за того, что двигатель является не особенно мощным, он, ничему не вредя, может продолжать вращаться против часовой стрелки даже после того, как пластиковый палец коснётся YubiKey. А когда двигатель вращается по часовой стрелке, возвращая палец в исходную позицию, кость, торчащая из пальца (делали-то его для Хэллоуина), упирается в край подставки и не даёт пальцу, прикреплённому к стержню, съехать с платформы. Я начал подбор значения переменной steps , от которой зависит расстояние, проходимое пальцем, с 1000 шагов. Потом, проверяя расстояние, на которое перемещается палец, постепенно уменьшал это значение, дойдя, в итоге, до 400 шагов.
Потом я выяснил MAC-адрес WiFi-платы, настроил статический IP-мэппинг на маршрутизаторе для этого адреса и сделал запись в локальном DNS о finger.localdomain .
Загрузка на YubiKey
Следующая задача — загрузить ранее созданные ключи авторизации, шифрования и подписания на YubiKey. Это делается командой keytocard. Этот шаг придется повторить несколько раз, для каждого ключа, пока не будут загружены ключ подписания, ключ шифрования и ключ аутентификации:
gpg2 -- edit - key $ KEYID
В этот момент пользователю надо выбрать соответствующий ключ. Введите key 1. Будет выбран ключ 1 в YubiKey. Для перемещения частного ключа на карту ключей введите keytocard, чтобы активировать перенос локальных ключей на YubiKey. У вас спросят, куда сохранять ключ на слотах YubiKeys для частных ключей. Выберите Signature key [Ключ подписания]. Снова введите key 1, и это отменит выбор ключа. Выбранный ключ обозначается знаком ‘*’ около подключа.
Повторите keytocard, используя key 2, и в ответ на keytocard выберите 2. Снова повторите с key 3 и выбором 3 (он должен быть единственным доступным). Теперь все ключи скопированы на карту. Но они по-прежнему имеются на компьютере! Лучше всего удалить ключи подписания root (здесь позвольте мне еще раз повторить, что удалить эти ключи можно только по завершении резервного копирования, когда у вас будет надежная копия):
gpg2 -- delete - secret - keys $ KEYID
Программа gpg2 несколько раз попросит вас подтвердить, что вы на самом деле, действительно хотите удалить мастер-ключ. По завершении проверьте статус ключей YubiKey:
gpg2 -- list - secret - keys
По завершении импортируйте открытые ключи:
gpg2 -- edit - key $ KEYID trust
Когда вам предложат выбрать уровень доверия, выберите 5 (Доверяю в высшей степени — I trust ultimately). Согласитесь на доверие, нажав Y. Затем выйдите с помощью quit.
Теперь вся настройка для вашего устройства YubiKey выполнена. Последнее, что нам следует сделать —при необходимости включить автоматическую функцию “pass-through [сквозной доступ]” частного ключа. Это делается с помощью двух команд:
echo “ enable - ssh - support ” > . / gnupg / gpg - agent . configurationecho “ enable - ssh - support ” > . / gnupg / gpg - agent . configuration
Перезагрузите компьютер, чтобы сервисы обновили конфигурацию. После завершения откройте новое окно терминала и скомандуйте ssh-add -L. Если сквозное прохождение SSH работает, должно показаться несколько записей. Сейчас вы можете использовать команду:
ssh - copy - id user @ remotehost
Войдите со своим обычным паролем. Ваш открытый ключ скопируется на сервер. На это уйдет буквально секунда.
Теперь, если пользователь попытается зайти по SSH на хост, он введет информацию частного ключа и у него спросят пароль частного ключа. Чтобы узнать об этом подробнее, скомандуйте ssh -v user@remotehost
Будем надеяться, что она вам покажет: открытый ключ в настоящий момент используется. Если вы попробуете еще раз без YubiKey, ничего не выйдет.
Защита USB ключом. LUKS, настроенный на использование YubiKey
Подведем итоги: YubiKey и другие аппаратные ключи предлагают большой выбор полезных функций. И хотя многие из них выглядят весьма сложными, всё же их определенно стоит использовать хотя бы ради душевного покоя.
Итоги
Я показал The Finger одному человеку, а он говорит: «Итак… ты, по сути, сделал кнопку, которую ты нажимаешь для того чтобы нажать другую кнопку? Почему бы просто не нажать нужную кнопку?». Меня этот вопрос немного разозлил. Получается, что тот, кому я показывал проект, ничего не понял. «Неужели не ясно? Это — плохая кнопка. А это — кнопка хорошая. Я хочу нажимать на хорошую кнопку».
Работайте над тем, что для вас важно.
Были ли у вас проекты, которые казались кому-то из окружающих бессмысленными?
На приобретение Yubikey меня вдохновил Хабр материал из опубликованной ранее статьи. Может быть, и моё творчество способно вдохновить кого-то на подобные действия, и в результате будут появляться все новые и новые информационные блоки не раскрытых ранее областей применения подобных аппаратных ключей шифрования. Такой своего рода прирост человеческих знаний. IT-гикам будет понятнее, что с такой штукой можно сделать, куда её вставить и как применить по назначению. В статье рассмотрена модернизация входа в учётную запись Windows , работа с GPG шифрованием, в том числе использование Yubikey для SSH как на Linux, так и на Windows, подружим с ним LUKS , а также продемонстрируем работу TOTP аутентификации на примере Github. Материал не носит рекламный характер. Создан гиком для гиков, содержит только материалы практики. Минимум воды и научных изысканий.
Буквально пару месяцев назад стоимость такого аппаратного ключа шифрования составляла около 5 тысяч рублей. Это немало, с учётом того факта, что на рынке можно найти более дешёвые аналоги. Однако разбираться в них не хотелось, особенно, что касается интеграции в управляемую экосистему, поэтому было решено довериться мнению автора, ссылку на статью которого я приводил выше. Особенно с учётом того, что для меня было актуально всё, что в ней раскрыто. Токен был очно приобретён у официального поставщика на окраине Москвы, на что пришлось потратиться в плане личного времени. Нашёл нужную дверь в бизнес-центре, за которой вежливые ребята достали из коробки уже мой Yubikey, после чего и начался немного тернистый путь его интеграции в IT-инфраструктуру. Кстати, схема ниже, взятая на сайте производителя, показывает полный спектр применения аппаратного ключа, и кое-что из неё мы рассмотрим в статье.
Дополню немного о современных реалиях. Повторюсь, что до 24 февраля цена Yubikey составляла около 5 тысяч рублей. Теперь налицо реальные проблемы с его фактическим наличием и слегка подросшей ценой.
Самое лёгкое, что можно настроить, это дополнительную защиту учётной записи Windows при локальном входе. Открываем официальный сайт, скачиваем необходимую программу в разделе «Computer login tools», устанавливаем её в соответствии с инструкцией, там всё просто. После этого вход в операционную систему будет выглядеть, как показано ниже (картинка взята из официальной документации):
Для Windows 7 привожу иллюстрацию собственного изготовления, не такую красивую, зато handmade:
В процессе будет сгенерирован резервный код, которым можно воспользоваться для входа в операционную систему, если Yubikey будет утерян или недоступен. Записать его можно даже в память головного мозга блокнот, выглядит он примерно так:
Применить такой ключ можно сколько угодно раз, однако будьте осторожны. Из личного опыта: были проблемы с повторным использованием резервного кода на некоторых старых версиях операционной системы. Это достаточно забавная ситуация, когда при первой попытке вход в Windows удаётся, а при следующей уже нет. При этом загрузиться с помощью Yubikey возможно. Далее ситуация повторяется. Однако, это исключение из правила, к которому нужно быть готовым.
У кого-то может возникнуть желание полностью отказаться от пароля для учётной записи. Вместо него — есть аппаратный ключ. Однако это не совсем безопасно, ведь сетевой доступ к операционной системе таким образом не защищён, в том числе по протоколу SMB. Другими словами, к общим файлам и папкам подключаемся — как обычно. Yubikey роли не играет.
▍ Работа с GPG шифрованием
Это блок появился благодаря острой необходимости подключения к удалённым серверам по протоколу SSH и желанием иметь секретный ключ, сохранённый в памяти аппаратного девайса. Работать с современным алгоритмом шифрования ed25519-sk , как подробно описано здесь, безболезненно не получится. Всё классно, и нажимать кнопку Yubikey тоже по душе и выглядит очень современно. Однако для работы с ним понадобится программное обеспечение OpenSSH версии 8.2, установленное на удалённом сервере, а это, например, Debian 10. С более старыми версиями операционной системы придётся заурядно поплясать, чего бы я ни рекомендовал делать, чтобы не терять время даром. Дополнительно, в качестве клиента часто выступают Windows-устройства, с установленным Putty, с которым ed25519-sk не умеет работать совсем. Выше озвучен проблемный вопрос. Решением его будет использование GPG шифрования при работе с SSH. Генерируем новые ключи прямо на Yubikey, для этого воспользуемся операционной системой Linux:
Размер ключа рекомендую использовать 2048 байт, так как с 4096 в дальнейшем будут проблемы совместимости с серверным программным обеспечением. Если всё пройдёт нормально, то выглядеть это будет примерно так (кстати «gpg --card-edit» аналогично работает и в командной строке Windows):
Перечень команд, которые поддерживаются программой GPG, приведу, для ознакомления, под спойлером.
gpg --card-edit --expert
admin
factory-reset
key-attr
info
list
passwd
generate
Commands:
-s, --sign make a signature
--clear-sign make a clear text signature
-b, --detach-sign make a detached signature
-e, --encrypt encrypt data
-c, --symmetric encryption only with symmetric cipher
-d, --decrypt decrypt data (default)
--verify verify a signature
-k, --list-keys list keys
--list-signatures list keys and signatures
--check-signatures list and check key signatures
--fingerprint list keys and fingerprints
-K, --list-secret-keys list secret keys
--generate-key generate a new key pair
--quick-generate-key quickly generate a new key pair
--quick-add-uid quickly add a new user-id
--quick-revoke-uid quickly revoke a user-id
--quick-set-expire quickly set a new expiration date
--full-generate-key full featured key pair generation
--generate-revocation generate a revocation certificate
--delete-keys remove keys from the public keyring
--delete-secret-keys remove keys from the secret keyring
--quick-sign-key quickly sign a key
--quick-lsign-key quickly sign a key locally
--quick-revoke-sig quickly revoke a key signature
--sign-key sign a key
--lsign-key sign a key locally
--edit-key sign or edit a key
--change-passphrase change a passphrase
--export export keys
--send-keys export keys to a keyserver
--receive-keys import keys from a keyserver
--search-keys search for keys on a keyserver
--refresh-keys update all keys from a keyserver
--import import/merge keys
--card-status print the card status
--edit-card change data on a card
--change-pin change a card's PIN
--update-trustdb update the trust database
--print-md print message digests
--server run in server mode
--tofu-policy VALUE set the TOFU policy for a key
-a, --armor create ascii armored output
-r, --recipient USER-ID encrypt for USER-ID
-u, --local-user USER-ID use USER-ID to sign or decrypt
-z N set compress level to N (0 disables)
--textmode use canonical text mode
-o, --output FILE write output to FILE
-v, --verbose verbose
-n, --dry-run do not make any changes
-i, --interactive prompt before overwriting
--openpgp use strict OpenPGP behavior
Тоже самое, но уже в Kleopatra (Windows-клиенте для работы с GPG):
Отлично, RSA ключи имеются. Их можно без проблем использовать для шифрования и подписи файлов или даже текста через дружественный интерфейс Kleopatra. Например, открываем блокнот и пишем нужный текст, предварительно указав получателя:
Пробуем расшифровать. Разумеется, при обращении к private key — программа запросит PIN от Yubikey:
Теперь применим RSA для SSH. Экспортируем нужный ключ в файл, затем добавим его на удалённый сервер:
Осталось настроить агент для GPG службы, чтобы он обращался при необходимости к аппаратному ключу шифрования. Для этого на Windows:
Пробуем воспользоваться Putty для подключения к удалённому серверу:
Для автоматизации запуска GPG агента после загрузки Windows подготовим скрипт «gpg-agent.bat, содержащий всего одну строку»:
Далее можно воспользоваться планировщиком, создав простую задачу, которая при запуске компьютера будет исполнять соответствующий сценарий:
Того же результата возможно добиться посредством правки реестра:
Можно обойтись и без .bat файла, для этого при создании задачи в разделе Действия указываем Действие «Запуск программы», в Программа или сценарий «gpgconf» и Аргументом "--launch-gpg-agent".
Для настройки GPG агента в Linux выполняем следующие команды:
После этого GPG агент запросит PIN код от Yubikey (аналогично Putty), после корректного ввода которого произойдёт подключение к удалённому серверу по SSH протоколу:
Разберём SSH авторизацию с помощью аппаратного ключа на оборудовании MikroTik и Cisco . Для первого подготавливаем файл, содержащий открытый ключ, по аналогии с Linux сервером, копируем его на устройство и импортируем для нужного пользователя:
Для Cisco немного сложнее. Разбиваем открытый ключ по 100 символов, так как IOS поддерживает не более 254 символов в одной строке. Далее импортируем для нужного пользователя открытый ключ полученными частями:
На этом рассмотрение работы с GPG шифрованием закончим. Для кого тема совсем новая и непонятная, рекомендую к чтению свежие материалы с Хабра. Стоит упомянуть, что возможно сохранить уже имеющиеся RSA ключи на Yubikey, что удобно в определённой ситуации. Кроме этого, после генерации RSA ключей на девайсе, работать с ed25519-sk не выйдет, так как слот будет сконфигурирован под другой алгоритм шифрования.
Создание мастер-ключа
В терминологии управления ключами этот ключ обычно является эквивалентом пользователя root. В производных Debian север создает два ключа: мастер-ключ, способный служить для удостоверения подключей; и подключ с возможностями шифрования и подписания.
Это может показаться странным, зато отделяет ваш мастер-ключ (который является исключительным подтверждением вашей личности) от повседневных ключей. И за этим решением стоит солидная причина. Если подключ будет утерян или скомпрометирован, пользователю не придется начинать процесс его создания с нуля. По завершении процесса создания ключа, описанного ниже, у вас будет четыре ключа:
- Мастер-ключ
- Ключ для шифрования
- Для удостоверения
- Ключ авторизации (ключ авторизации используется для подключения к устройствам SSH)
Мастер-ключ создается командой:
Вместе с ним создадутся файлы и папки связки ключей, если их не существовало. Поскольку наша статья использует это исключительно ради примера настройки, мы можем использовать то, что предложено по умолчанию. Но в среде live, по очевидным причинам, такого делать не рекомендуется. Для данного ключа подойдет опция 4: Только подпись RSA.
Когда будут приняты первые вопросы о длине ключа и сроке его действия (по умолчанию), приложение спросит у вас имя и адрес электронной почты для уникальной идентификации ключа. Для целей нашего урока введите свое имя и адрес электронной почты. Комментарии опциональны. Когда вы подтвердите правильность информации, нажмите O для создания ключа. Система также попросит вас ввести пароль — он предотвратит применение ключа, если ключ похитят.
Система выдаст немало текста, но нас интересует открытый ключ. ID ключа находится справа от rsa2046/.
Защита USB ключом. Готовая настройка ключа, где показан вывод от ключа
Как вы можете видеть, у созданного ключа имеется надпись rsa2046/xxxxxx, где x — длинное число. Это идентификатор ключа. Поскольку наш урок будет использовать этот ключ несколько раз, ваша жизнь упростится, если вы дадите ему имя. Это уменьшит операции по копированию и вставке и количество потенциальных опечаток в цифрах. В терминале введите
export KEYID = ID вашего ключа
▍ Работа TOTP аутентификации
Что такое TOTP аутентификация коротко и хорошо описано в статье, на которую я неоднократно ссылаюсь. Здесь рассмотрим этот вопрос с чисто практической стороны на примере Github. Устанавливаем на смартфон бесплатное приложение «Yubico Authenticator»:
Далее выполняем действия, предлагаемые дружественным интерфейсом, и привязываем мобильное приложение «Yubico Authenticator» и Yubikey к личному кабинету (этап сканирования QR кода). В процессе будут созданы одноразовые Recovery codes, которые выглядят примерно так:
Теперь при входе в личный кабинет Github после ввода логина и пароля нас приветствует окно 2FA:
Authentication code сгенерирует программа на телефоне. Открываем «Yubico Authenticator», подносим вплотную аппаратный ключ к NFC считывателю смартфона. Для моего Iphone – это обратная сторона рядом с камерой:
Когда произойдёт беспроводное считывание, приложением будет сгенерирован Authentication code для ввода в личный кабинет Github, который имеет ограниченное время жизни, визуально выделенное секторально-уменьшающимся серым кружком, расположенным на экране справа:
Другие интернет-сервисы, имеющие возможность двух факторной авторизации на основе технологии TOTP, в том числе те, о которых нельзя говорить и думать вслух, настраиваются аналогичным образом. И их становится с каждым днём всё больше.
Запуск The Finger
Нажимать на сенсорную кнопку YubiKey не так уж и удобно, а вот нажатие на клавишу механической клавиатуры — это уже совсем другое дело. Я полагал, что будет очень здорово, если я смогу активировать YubiKey с клавиатуры.
У того, кто пользуется клавиатурой без цифрового блока, в верхней правой части клавиатуры есть кнопки Print Screen , Scroll Lock и Pause . В 2020 году особого смысла в их обычном функционале нет, поэтому на них вполне можно «повесить» выполнение каких-то особых задач.
Настроить клавиатуру мне помогла программа Karabiner-Elements. Эта программа, как и аппаратная часть моего проекта, немного напоминает машину Голдберга.
Я воспользовался её вкладкой Simple modifications для того чтобы поменять From key на pause , а To key на f14 .
В файле ~/bin/yubikey.scpt можно написать Applescript-код, вызывающий shell-скрипт:
Зачем вызывать один скрипт из другого? Я выяснил, что если запускаю shell-скрипт из Karabiner Elements, то открывается новый экземпляр Terminal.app . В результате окно, запрашивающее данные с YubiKey, теряет фокус. А при таком подходе всё работает в фоне.
И, наконец, в файле ~/bin/yubikey.sh имеется следующий код:
А вот как выглядит работа готовой системы.
Нажатие на клавишу клавиатуры активирует YubiKey
Я, чтобы проверить работу системы, выполнил тестовый запрос на получение данных с YubiKey, но я могу гарантировать вам то, что The Finger делает своё дело и в ситуации, когда YubiKey нужен в реальных условиях. Вот код, позволяющий самостоятельно выполнить запрос ключа с YubiKey. Может, вам он зачем-то понадобится:
Мы, имея этот shell-скрипт, можем запустить процесс активации YubiKey вообще не нажимая ни на какие кнопки. А именно, в терминале iTerm2 есть возможность, называемая Triggers (триггеры). Она позволяет выполнять какие-то действия, основываясь на анализе текстов в терминале. Можно создать регулярное выражение, которое ожидает появления текста «Yubikey for» и запускает скрипт активации YubiKey. В результате для запуска The Finger не нужно нажимать на особую кнопку.
Безопасность ключей с помощью YubiKey
Пора рассмотреть использование YubiKey для обеспечения безопасности частных ключей пользователей. Если у пользователя несколько компьютеров с Linux, на которые он заходит по паролю, то он неправ. А вот вход с помощью ключей SSH затрудняет незаконный доступ к процессу входа в систему, который становится более сложным.
Пытаясь войти в систему, пользователь применяет свой частный ключ, который есть только у него, совместно с паролем. Когда система получает обе части ключа, она может удостоверить личность пользователя. Без обеих частей ключа ничего не произойдет. Пароль нужен лишь для того, чтобы разблокировать частный ключ на момент его использования.
YubiKey сам по себе не реализует создания частного / открытого ключа. Чтобы настроить YubiKey, надо использовать для создания ключей пакет opengpg2, и затем переместить частные ключи на YubiKey.
Обратите внимание, что по умолчанию установлены две версии gpg: gpg и gpg2. В этой статье используется gpg2, так как там солидно исправлен код и намного лучше работа с картами на gpg вроде YubiKey. Попытки использовать на нашем уроке исходный gpg приведут к некорректной работе некоторых действий или к полному отказу от работы.
Процесс создания ключей и настройки может показаться вам громоздким, но на самом деле он довольно прост. Следующие несколько шагов включают:
- Создание мастер-ключа
- Создание ключа отмены
- Добавление подключа для входа в систему, подписания [signing] и шифрования
- Удаление мастер-ключа из связки, чтобы его нельзя было использовать для подписания новых ключей
- Размещение частных сертификатов на YubiKey
- Экспорт открытых ключей SSH
- Копирование их на серверы назначения
▍ Yubikey и LUKS
Смотрим, где у нас создан криптоконтейнер и добавляем Yubikey для зашифрованного раздела жёсткого диска и раздела подкачки:
Сначала нужно будет ввести короткий пароль для ключа в Yubikey, что-то вроде PIN. Затем его повторить. И в последнюю очередь ввести пароль доступа к криптоконтейнеру LUKS. Если всё нормально, то при перезагрузке будет предложено ввести «PIN код» (повторюсь, что-то вроде PIN) от аппаратного ключа шифрования:
Здесь важно отметить, что возможность входа по паролю доступа к криптоконтейнеру LUKS сохранилась. Это будет удобно, когда остро необходимо воспользоваться операционной системой Windows, защищённой с помощью «Computer login tools» от Yubikey и в условиях, когда аппаратного ключа шифрования нет под рукой. Можно без него загрузиться из-под Linux (разумеется, на ноутбуке должны быть установлены соответствующие операционные системы) и выписать на листочек резервный код для входа в Windows. Далее воспользоваться им по назначению, как описано в первой части статьи. «PIN код» может быть достаточно простым, в отличие от пароля LUKS, а использовать его модно и молодёжно.
Читайте также: