Pull to refresh
145.76

Как работает аппаратный ключ безопасности — и почему не сделать программируемый ключ с улучшенной защитой?

Reading time4 min
Views16K


Как известно, пароль — только первый этап аутентификации, причём наименее надёжный. Пароль можно перехватить во время ввода (с клавиатуры или экрана), в процессе передачи на сервер, подобрать брутфорсом, скопировать из места хранения (в том числе с сервера компании, безопасность которого нам не подконтрольна) или узнать у человека. Даже наличие парольного менеджера не слишком улучшает ситуацию.

Двухфакторная аутентификация (2FA) сегодня обязательна, потому что второй фактор и на порядок увеличивает усилия для взлома. Стандартный второй фактор — это телефон, куда приходит дополнительный код. Ещё один дополнительный фактор — аппаратный ключ безопасности, который невозможно скопировать. Такой ключ может защищать доступ к вашему парольному менеджеру.

Давайте посмотрим, как сделаны такие ключи, кто их выпускает. И самое главное — как их сделать ещё лучше.

Стандарт U2F


Стандартом открытой аутентификации сейчас считается U2F (Universal 2nd Factor), его продвижением занимается альянс FIDO.

U2F — это открытый, бездрайверный протокол 2FA, позволяющий интернет-пользователям использовать U2F-устройство как второй фактор для аутентификации на большом количестве онлайн-сервисов.

Используется вызов-ответная схема аутентификации:

  1. Проверяющая сторона отправляет некоторые данные (то есть генерирует вызов) и дескриптор ключа для подписи браузеру.
  2. Браузер добавляет к этому URI, с которого был произведён запрос на подпись и ID канала TLS и отправляет на U2F устройство.
  3. Используя дескриптор ключа, устройство выбирает соответствующий ему закрытый ключ для подписи.
  4. Для предотвращения клонирования устройства, внутри него находится счётчик, который при каждой аутентификации увеличивает своё значение. Его значение тоже подписывается и отправляется проверяющей стороне.




Для подписи используется алгоритм ECDSA над кривой P-256, для хеширования — SHA-256.

Производители


Ключи для U2F выпускает несколько компаний, в том числе:

  • Yubico: Security Key, Security Key NFC, Security Key C NFC, YubiKey 5C, 5C NFC, 5Ci, 5 NFC)
  • Google: линейка ключей Titan (USB-A/NFC, USB-C/NFC);
  • Thetis (FIDO U2F и BLE U2F)
  • SoloKeys (Solo USB-C, Solo USB-A, Solo Tap USB-C, Solo Tap USB-A)



На практике использование такого ключа интуитивно понятно и просто:



Собственные ключи безопасности


Но ничто не останавливает инженеров от того, чтобы искать лучшие решения вместо существующих.

Например, шведская компания Multivad, которая занимается программными решениями в области информационной безопасности, недавно решила спроектировать и изготовить собственный ключ безопасности на платформе RISC-V со 128 КБ RAM. Для этого была зарегистрирована отдельная дочерняя фирма Tillitis AB. Первым её продуктом станет Tillitis Key — ключ безопасности нового типа, созданный с применением технологий DICE и Measured Boot.

Для справки, Measured Boot — это функция проверки аппаратной прошивки во время каждой загрузки, с сохранением информации в Trusted Platform Module (TPM), впервые представленная в Windows 8.

DICE (Device Identifier Composition Engine) aka RIoT (Robust | Resilient | Recoverable — IoT) — промышленный стандарт Trusted Computing Group для микроконтроллеров на базе TPM.


Ключ Tillitis

Tillitis Key предполагает функцию программирования пользователем и использования произвольных пользовательских приложений (на 128 КБ RAM). Как сказано в описании, во время использования микропрограмма на Tillitis Key извлекает уникальный ключ для каждого запускаемого приложения, проверяя его перед выполнением:

Это делается путём комбинирования хеш-значения приложения с уникальным секретом для каждого устройства. Приложения загружаются на устройство с главного компьютера во время использования и не хранятся на устройстве постоянно.

Секрет, предоставляемый пользователем или хостом, также может быть подмешан в функцию генерации нового ключа (key derivation function), что обеспечивает дополнительную защиту. Предполагается, что продвинутый аппаратный взломщик знает хеш целевого приложения и, скорее всего, в конечном итоге сумеет извлечь UDS из аппаратного обеспечения. При добавлении секрета, предоставляемого хостом, знания используемого приложения, а также UDS ключа безопасности будет недостаточно для получения секрета приложения. Таким образом, влияние потери или кражи ключа Tillitis Key на безопасность меньше, чем в случае обычных ключей безопасности.

Приложения устройства могут быть загружены по цепочке, когда первый этап приложения передаёт свой секрет второму этапу. Это повышает удобство работы пользователей, поскольку позволяет сохранить секрет приложения (и его открытый ключ) неизменным даже при обновлении приложения на устройстве. Это также позволяет разработчикам определять собственные политики доверия к обновлению ПО. Простое приложение первого этапа может выполнять проверку подписи кода на втором этапе, в то время как более продвинутое приложение потребует m-из-n подписей кода или доказательство включения Sigsum с учётом встроенных сценариев использования.

В общем, с учётом таких сценариев программируемый ключ безопасности может использоваться в более продвинутых политиках безопасности, чем современные ключи U2F.

Самое главное, что Tillitis Key разрабатывается на открытом дизайне, то есть схемы и материалы/компоненты для изготовления аппаратного ключа публикуются в открытом доступе. С одной стороны, это гарантирует отсутствие в нём аппаратных закладок и повышает доверие к продукту. С другой стороны, любой желающий теоретически может заказать производство точно таких же изделий или даже собрать нечто подобное в единственном экземпляре конкретно для себя.

Можно вспомнить ещё одну попытку спроектировать ключ безопасности с открытым дизайном и применением надёжной криптографии — ключи Solo V2 от компании SoloKeys, которые в 2021 году успешно собрали финансирование на Кикстартере и сейчас запущены в производство.





Ключи Solo V2 изготавливаются на опенсорсном фреймворке Trussed для современных криптографических приложений. Идея в том, что все криптографические примитивы собраны в прошивку. Исходный код опубликован на GitHub.

Эти криптографические примитивы, а также прошивки от SoloKeys любой желающий может использовать в разработке своих криптографических продуктов, как аппаратных, так и программных. Например, немецкая фирма Nitrokey скопировала весь этот стек — и выпустила собственные ключи. Наладить такое производство может любой стартап. Всё совершенно легально, при этом используется проверенная криптография.

Открытая экосистема


В целом, разработчики Trussed хотели бы сформировать большую открытую экосистему «доверенных приложений безопасности», куда войдут WireGuard, менеджеры паролей, GPG, карманные HSM и другое оборудование и софт на открытом стеке. «Всё это в итоге заменит JavaCard и перенесёт встроенные криптографические прошивки в современную эпоху», — рассчитывают они.
Tags:
Hubs:
+11
Comments20

Articles

Information

Website
www.globalsign.com
Registered
Founded
1996
Employees
501–1,000 employees
Location
Япония