Usb ключ yubikey что это
YubiKey: что это такое? Обзор аппаратного ключа безопасности
Для чего нужен аппаратный ключ Yubi K ey
Из-за лени и небрежности многие пользователи сети часто теряют доступы к своим аккаунтам на различных ресурсах. В основном это происходит по следующим причинам:
Многие современные сервисы предлагают ее использовать своим пользователям. Для этого часто просят «подвязывать» свою почту и телефон — куда сможет прийти дополнительный код для входа в систему, который нужно ввести в дополнительном поле фор м ы входа.
В общем, нельзя пренебрегать дополнительной за щ итой.
Принцип работы Yubi K ey
Большое количество интернет-ресурсов уже поддерживают аппаратные ключи. Это можно уточнить на интересующем сервисе. Если Yubi K ey будет включен, то в форме для входа можно будет заметить дополнительное поле.
Тогда вам нужно будет выполн и ть следующие действия:
После нажатия Юби К ей сгенерирует неопределенную последовательность символов в качестве дополнительного пароля. И что самое интересное, даже если кто-то за вами «следит» и вычислит ваш основной логин и пароль для входа в систему, без Yubi K ey-пароля он не войдет. И даже если он и его как-то вычислит — это не поможет. Потому что любой сгенерированный пароль работает только единожды. И для следующего входа в систему будет сгенерирован другой пароль. При таком раскладе, чтобы зайти вместо вас в ваш аккаунт, нужно будет знать логин/пароль для входа и украсть ваш «ключ».
Выводы
Однозначно, что пренебрегать защитой своих данных не стоит, поэтому старайтесь максимально обезопасить свои аккаунты, почту, сервера и др. Поддержка Yubi K ey осуществляется уже в сотнях крупных ресурсах, таких как:
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
SSH, PGP, TOTP в Yubikey 5
Что такое Yubikey
Это аппаратный ключ безопасности, который поддерживает протокол универсальной двухфакторной аутентификации, одноразовые пароли и асимметричное шифрование. Если вы добавите его, допустим, в аккаунт на Гитхабе, то для входа в свой аккаунт, понадобится ввести логин/пароль и коснуться кнопки юбикей.
Год назад я приобрел Yubikey, чтобы использовать его в качестве второго фактора для аккаунтов Google, Github и других, которые работают с U2F. Однако я для себя выяснил, что Yubikey обладает куда более расширенным функционалом. Большая часть из нижеописанных действий актуальна для работы и без Yubikey, однако преимущество в портативности будет потеряно.
Все действия описаны для Yubikey 5 и Ubuntu 21.04.
SSH-ключи
Многие знакомы с такой простой операцией, как подключение по SSH. У нас в TOT Systems имеется собственный менеджер паролей, и чтобы подключиться к удаленной машине, нужно зайти в него, скопировать логин, адрес и пароль.
Для работы нам понадобятся OpenSSH версии 8.2 и библиотека libfido2. Вместо привычного RSA-файла с приватным ключом давайте создадим ключ прямо на Yubikey с алгоритмом Ed25519.
Вставляем Yubikey в USB-порт и вводим команду с опцией resident, которая означает, что приватный ключ всегда будет храниться на Yubikey, а непосредственно в компьютере находится резидентный ключ, который без аппаратного ключа бесполезен:
Теперь добавим публичный ключ на SSH-сервер, к которому мы хотим подключиться. Для этого заходим на сервер как обычно с помощью пароля, переходим в папку
Если предварительно вынуть юбикей из USB-порта и попробовать авторизоваться, то после ввода парольной фразы от ключа у нас будет ошибка и нам будет предложено ввести пароль от сервера.
Сгенерировать ключи и хранить их на компьютере можно и без Yubikey, но в таком случае возникает потребность в переносе приватного ключа между компьютерами, на которых необходим доступ к серверу. Преимущество Yubikey в том, что ключи всегда хранятся на нём, и при работе на другом компьютере можно легко получить резидентный и публичный ключи.
К примеру, импортируем ключи с юбикея на новый компьютер. Запускаем терминал в папке
SSH-ключ и U2F на примере Github
С помощью SSH-ключа можно клонировать репозиторий на гитхабе. Для этого добавляем публичный ключ в аккаунт на гитхабе. Теперь попробуем клонировать репозиторий по SSH:
Клонировать репу не получается.
Поддержка U2F для SSH-ключей на данный момент реализована только в гитхабе. Если у вас используется gitlab, то использовать ключ с юбикея, к сожалению, не получится.
Для работы с Yubikey Нужно установить scdaemon:
$ sudo apt install scdaemon
Перед созданием RSA-ключа и сабключей поменяем их размер на 4096 бит.
Для этого перейдём в меню смарт-карты.
и отредактируем длину ключа на 4096:
Теперь перейдём к созданию ключей. В самом начале у нас спросят, делать ли резервную копию ключа шифрования. Также спросят срок жизни ключей. Отредактировать этот срок можно в любой момент.
Проверяем, что ключ сгенерировался и отображается на карте:
Выводим содержимое публичного ключа в терминал:
Или экспортируем публичный ключ в файл, а затем добавляем его в свой аккаунт в гитлабе:
Теперь создадим глобальный конфиг файл
/.gitconfig с содержимым:
После этого ваши коммиты будут подписаны:
Допустим, мы хотим воспользоваться нашими ключами на новом компьютере. Для этого на карте нужно указать url публичного ключа. Для этого переходим к редактированию карты и в админ-режиме редактируем url:
Для гитхаба url нашего ключа выглядит так. Для гитлаба аналогично. Вы можете хранить публичный ключ на любом сервере публичных ключей.
Теперь на новом компьютере вводим команду fetch
Далее повысим уровень доверия к ключу командой trust:
Всё, теперь мы можем подписывать коммиты, шифровать файлы с помощью одного ключа, который всегда хранится на Yubikey, и если юбикей не вставлен в порт компьютера, то сделать это нельзя.
Yubikey 4 — покупка, доставка и получение
Часть 2: Покупка и доставка Yubikey 4
Итак, определившись с выбором ключа для 2FA, я начал поиски продавца для покупки Yubikey 4.
Первым делом был обследован русскоязычный сегмент интернета. Оказалось, что существуют две организации, которые вроде бы занимаются реализацией продукции Yubico.
В первую очередь — это сайт yubico.ru. В настоящее время он не работает. (Хинт — работает прямая ссылка на файл в формате PDF «yubikey_manual.pdf» — на русском языке, кому нужно). Но в тот момент, когда я делал анализ и выбор продавца ключа, этот сайт ещё функционировал. Тем не менее, даже тогда я обратил внимание на странную вещь — на сайте для продажи не были представлены современные устройства — например, интересный мне ключ Yubikey 4. Также в описании к существующим продуктам были указаны старые версии ПО. Более того, сайт, предлагающий продукт, обеспечивающий цифровую безопасность, был на простом http. И ещё более того. Когда я поинтересовался в почтовой переписке о возможности купить ключ, ответ мне пришёл с почтового домена mail.ru.
Можно было сделать предположение, что новых устройств продавец не предлагает. Предположение оказалось верным, сайт работу по факту прекратил.
Вторая организация, которая предлагала продажу Yubikey была ещё более странной. Она называется >the_kernel. Интернет магазина я не нашёл, предлагалось отправить заявку через форму на сайте. С одной стороны, цены указаны такие же как и у производителя, но отсутствие возможности сделать заказ, оплатить и ждать доставку меня немного удивило. Для XXI века это — мягко говоря — странность. Специально для тех, кто не любит ходить по ссылкам, живёт в первопрестольной и хочет иметь Yubikey, даю контактную информацию с сайта. Возможно, данные ещё актуальны. Вот они:
121357, г. Москва, ул. Верейская, д. 29, стр. 33, офис D216.2 (БЦ Верейская Плаза 3) Тел. +7 499 648-8848 Email info [dot] ru [at] thekernel [dot] com Web www.thekernel.ru
Вот здесь, на Тостере также есть небольшая ветка по вопросам приобретения устройств Yubico.
Один из участников обсуждения (@Driwars) упомянул о том, что таможня не пропустила до адресата купленный на Амазоне ключ. Имейте это ввиду.
Так, в РФ ситуация с продажей в розницу ключей Yubikey более менее ясна. Что же может предложить нам западный (для кого-то — восточный) рынок?
Как правило, наиболее низкую цену может предложить сам производитель, поэтому будет разумно поискать возможность покупки товара напрямую у Yubico. Однако, учитывая стоимость доставки, которая может составлять существенную величину в общей стоимости товара, имеет смысл посмотреть и у других игроков рынка, например — Амазон.
Вопрос — занимается ли компания Yubico непосредственно продажами устройств? Ответ — да, занимается. Открывая заглавную страницу сайта www.yubico.com мы видим вверху кнопку «BUY NOW», и при нажатии на неё переходим сразу к возможности купить товар. Это уже хорошо! Кроме того, обращаем внимание на то, что при покупке есть возможность оформить дисконт — для пользователей GitHub и для учащихся. Насколько можно видеть, скидка одинаковая и составляет 20%, а это уже весьма и весьма неплохо!
Переходим к процедуре оплаты, но перед этим смотрим на доставку (Shipping). И тут — раз — и видим такую фразу:
*no shipping to: Afghanistan, North Korea, Iran, Russia, Sudan, Syria
Вот это да! Как неожиданно! Россия между Ираном и Суданом, в приятном соседстве с Северной Кореей и Сирией… Для контраста можете полистать список стран, где можно приобрести и получить устройство с доставкой от Yubico.
Так, какие же могут быть варианты? Для России — на оффсайте указан >the_kernel. Можете попробовать связаться с представителями этой ТНК.
А что с Амазоном? Давайте посмотрим поближе.
Находим в поиске Yubikey, меняем справа в поле «Ship to» страну на Russian Federation и видим в поле описания товара и доставки следующее:
This item does not ship to Russian Federation.
Что же делать, если вам всё же хотелось иметь для тестирования либо функционального применения устройство Yubikey?
Вариантов может быть несколько:
1. Если вы имеете возможность по работе или по личной инициативе бывать за границей, едете туда и покупаете там. Либо предварительно оплатив товар и доставку, либо в отпуске, либо через друзей и знакомых.
2. Попросите ваших живущих за границей друзей/родных/коллег/знакомых купить устройство и выслать вам. Условия согласуйте сами.
3. Воспользоваться услугами пересыльщиков. Типа Шопотама и Бандерольки. Полагаю, противозаконного в этом ничего нет.
4. Бартер. Скажем, с индусами. Вы им — код, они вам — ключ.
5. Something else. Insert your own point.
Что до меня? Как я покупал ключ? Я воспользовался пунктом 3, посчитав предварительно все расходы. Итого, в реализации получилось вот так:
YubiKey для частных лиц
Превосходная защита для ваших онлайн-аккаунтов.
Защитите свои аккаунты от несанкционированного доступа
Надежная аутентификация
Защитите свои онлайн-аккаунты с максимальной надежностью. Пароли и одноразовые коды уязвимы перед фишингом и атаками вредоносного ПО. С YubiKey доступ к своим аккаунтам получить сможете только вы.
Простой и безопасный вход
Для входа в аккаунт достаточно прикоснуться к сенсору на ключе. Не нужно больше вводить вручную одноразовые пароли из СМС или мобильных приложений.
Один аппаратный ключ работает со многими онлайн-сервисами, такими как Google, Facebook, Dropbox, LastPass и сотнями других сервисов и веб-приложений.
Ваша личная онлайн безопасность везде
Проблем, вызванных фишингом и клонированием SIM-карт, можно избежать, используя аппаратные ключи для безопасного входа в приложения и учетные записи онлайн-сервисов. Ключи YubiKey USB и NFC готовы к использованию с операционными системами Windows, Linux и macOS, а также с популярными браузерами, приложениями и веб-сайтами. YubiKeys объединяют поддержку нескольких криптографических алгоритмов и простоту использования — безопасный вход в систему одним нажатием кнопки.
Нажималка для YubiKey
Если вы работаете в сфере информационных технологий, то у вас, возможно, есть аппаратный ключ безопасности YubiKey. У меня такой имеется. Это — YubiKey 5C Nano, показанный на следующем снимке.
Если вы работаете в области, не связанной с компьютерами, но при этом, в основном, пользуетесь ноутбуком, то вам, возможно, стоило бы обзавестись YubiKey. А если вы участвуете в политической кампании, или работаете журналистом, то вам, определённо, нужен YubiKey (или нечто подобное). Обсудите это с вашим отделом безопасности. Правда, этот материал будет кое о чём таком, о чём специалистам вашего отдела безопасности лучше не знать. Поэтому не говорите им об этой статье.
Ключ YubiKey используется в механизмах двухфакторной аутентификации. Это означает, что после того, как вы вошли в некую систему с помощью имени пользователя и пароля, система предложит вам авторизоваться с помощью ещё одного механизма. В результате, если ваши имя пользователя и пароль украдут, злоумышленнику придётся украсть ещё и второе средство аутентификации, что усложняет его задачу.
Существуют разные способы двухфакторной аутентификации. Например, часто встречается такая схема работы: веб-сайт предлагает вам отсканировать QR-код с помощью приложения вроде Google Authenticator, установленного на телефоне, генерирующего 6-значные коды. Работа этого механизма основана на том, что у сервера и у приложения имеется один и тот же секретный ключ. Телефон генерирует коды, основываясь на этом ключе и на текущей отметке времени. Такие же коды генерирует и сервер. Когда серверу предоставляют код, созданный в приложении, он проверяет, совпадает ли он с кодом, который сгенерировал он.
Шестизначный код, сгенерированный приложением
Ещё один способ двухфакторной аутентификации основан на SMS-сообщениях. Он, правда, считается небезопасным. В данном случае сервер генерирует код и отправляет его на телефон в SMS-сообщении. Причина, по которой этот механизм считается небезопасным, заключается в том, что существует атака, известная как «SIM-джекинг», в ходе проведения которой некто обманом переносит интересующий его номер на новую SIM-карту, что приводит к тому, что он начинает получать SMS-сообщения, адресованные первоначальному владельцу номера.
SMS-сообщение с кодом
Ключи YubiKey — это маленькие устройства, подключаемые к USB-портам компьютеров и эмулирующие клавиатуру. Когда нажимают кнопку YubiKey (или, скорее, касаются её), устройство генерирует одноразовый пароль (One-Time password, OTP), который может быть проверен специальным сервером. На устройстве имеется секретный ключ, используемый для подписывания информации, но этот ключ никогда не выходит за пределы устройства, так как он сохранён в особом окружении, защищённом от несанкционированного доступа.
Мой YubiKey рассчитан на постоянное подключение к USB-порту. Поэтому я, когда, например, беру ноутбук с рабочего стола и переношу его в конференц-зал, забираю с собой и YubiKey. Но теперь мой ноутбук, как и ноутбуки многих «новообращённых» удалённых работников, никогда не покидает мой рабочий стол. Я подключил его к внешнему монитору, а чтобы сэкономить на столе немного места, я установил его вертикально, в сложенном состоянии, на специальной стойке.
Это усложнило задачу активации YubiKey. Особенно — если ноутбук находится далеко от внешней клавиатуры и мыши. Я решил эту проблему, купив USB-C-удлинитель, благодаря которому смог разместить YubiKey поближе к клавиатуре.
Да, я ещё не рассказал об одной особенности YubiKey 5C Nano. Дело в том, что кнопку устройства довольно тяжело «нажимать», и это — даже если не учитывать проблему большого расстояния до ключа. Область устройства, которой надо коснуться для активации ключа, очень мала.
На то, чтобы ключ нельзя было бы активировать программно, было потрачено много сил и времени.
Прежде чем мы пойдём дальше, мне хотелось бы остановиться на причинах подобного состояния дел. Если хакер сможет взломать компьютер и сумеет программно активировать YubiKey, это полностью лишит смысла использование данного ключа. Но я полагаю, что мы всегда идём на компромиссы между безопасностью и удобством. Например, часто бывает так, что YubiKey-пароль не нужно вводить каждый раз, подключаясь к некоей системе. Некоторые системы, после ввода такого пароля, позволяют, при следующих входах в них, некоторое время не вводить его снова. Или, например, когда система с двухфакторной аутентификацией выдаёт вам резервные коды доступа — часто ли вы их распечатываете на принтере и убираете в надёжное место? Каждый сам для себя находит устраивающий его баланс безопасности и удобства.
Учитывая вышесказанное, давайте поговорим о том, как можно программно активировать YubiKey.
Я называю этот механизм The Finger
Аппаратная часть системы
Для начала нам нужен какой-то способ для организации взаимодействия компьютера и 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 |
После того, как все части системы оказались собранными воедино, у меня получилось то, что показано на следующем рисунке.
Программная часть системы
После предварительных настроек я, чтобы проверить работоспособность системы, запустил скетч, который мигает светодиодом.
Потом я обнаружил этот скетч, демонстрирующий пример управления шаговым двигателем 28BYJ-48 по WiFi.
Вот та часть кода, которая отвечает за управление двигателем:
Вот как всё это устроено. Веб-сервер выдаёт страницу с двумя кнопками. Одна из них, CCW, включает вращение вала двигателя против часовой стрелки, другая, CW — включает вращение по часовой стрелке. Если нажимают кнопку CCW, значение переменной dirStatus меняется на 1, если нажимают кнопку CW — значение этой переменной меняется на 2. Повторные нажатия на уже нажатые кнопки переводит переменную dirStatus в значение 3 и двигатель выключается.
Нам нужна единственная HTTP-конечная точка, которая позволит запустить вращение вала двигателя против часовой стрелки, выполняемое до тех пор, пока пластиковый палец не коснётся YubiKey. После этого двигатель должен вращаться в обратном направлении до тех пор, пока палец не примет исходную позицию. Потом двигатель выключается.
Она включит вращение вала двигателя против часовой стрелки при обращении к конечной точке.
Запуск The Finger
Нажимать на сенсорную кнопку YubiKey не так уж и удобно, а вот нажатие на клавишу механической клавиатуры — это уже совсем другое дело. Я полагал, что будет очень здорово, если я смогу активировать YubiKey с клавиатуры.
Настроить клавиатуру мне помогла программа Karabiner-Elements. Эта программа, как и аппаратная часть моего проекта, немного напоминает машину Голдберга.
Потом я перешёл на её вкладку Misc и щёлкнул по кнопке Open config folder (
/bin/yubikey.scpt можно написать Applescript-код, вызывающий shell-скрипт:
/bin/yubikey.sh имеется следующий код:
А вот как выглядит работа готовой системы.
Нажатие на клавишу клавиатуры активирует YubiKey
Я, чтобы проверить работу системы, выполнил тестовый запрос на получение данных с YubiKey, но я могу гарантировать вам то, что The Finger делает своё дело и в ситуации, когда YubiKey нужен в реальных условиях. Вот код, позволяющий самостоятельно выполнить запрос ключа с YubiKey. Может, вам он зачем-то понадобится:
Мы, имея этот shell-скрипт, можем запустить процесс активации YubiKey вообще не нажимая ни на какие кнопки. А именно, в терминале iTerm2 есть возможность, называемая Triggers (триггеры). Она позволяет выполнять какие-то действия, основываясь на анализе текстов в терминале. Можно создать регулярное выражение, которое ожидает появления текста «Yubikey for» и запускает скрипт активации YubiKey. В результате для запуска The Finger не нужно нажимать на особую кнопку.
Итоги
Я показал The Finger одному человеку, а он говорит: «Итак… ты, по сути, сделал кнопку, которую ты нажимаешь для того чтобы нажать другую кнопку? Почему бы просто не нажать нужную кнопку?». Меня этот вопрос немного разозлил. Получается, что тот, кому я показывал проект, ничего не понял. «Неужели не ясно? Это — плохая кнопка. А это — кнопка хорошая. Я хочу нажимать на хорошую кнопку».
Работайте над тем, что для вас важно.
Были ли у вас проекты, которые казались кому-то из окружающих бессмысленными?