Шифрование файлов с помощью Yubikey без использования OpenPGP?

Вопрос или проблема

Существует ли способ зашифровать отдельные файлы с помощью Yubikey, который не использует OpenPGP?

Я использую свой Yubikey для входа по ssh и для шифрования отдельных файлов (хранилищ паролей). Yubikey работает только в режиме CCID (в данный момент я не использую OTP или U2F). Все операции требуют физического присутствия.

До сих пор я использовал свой Yubikey в качестве смарт-карты OpenPGP вместе с:

  • gpg-agent --enable-ssh-support для поддержки ssh; и
  • плагин gnupg.vim для шифрования файлов.

GnuPG неудобен, ненадёжен и труден для скриптов. Я хотел бы прекратить использование Yubikey в этом режиме.

У меня есть другой Yubikey, который настроен как смарт-карта NIST PIV. Я использую поддержку PKCS11 в OpenSSH и обычный ssh-agent. Это намного надежнее, чем инструменты gpg, но не предоставляет возможность шифрования отдельных файлов.

Насколько я вижу, есть несколько возможных вариантов использования смарт-карты PIV для шифрования отдельных файлов:

  • какой-то тип хакa ssh-agent + vim?
  • возможно, существует бесшовный инструмент шифрования файлов на базе PKCS11?
  • использование одного из других слотов на Yubikey для шифрования файлов, возможно, с OpenSC или некоторыми библиотеками libccid?
  • открытый менеджер паролей, который напрямую взаимодействует с Yubikey?

Вот скрипт на Python, который я написал для автоматизации следующего процесса:

Для шифрования протокол связи ssh-agent (см. черновик RFC для получения деталей) позволяет подписывать произвольные данные с помощью закрытого ключа, поэтому:

  • выберите случайное число
  • попросите ssh-agent его подписать
  • используйте подпись для получения симметричного ключа
  • зашифруйте ваши данные с использованием симметричного ключа
  • сохраните случайное число и зашифрованные данные (но не симметричный ключ) на диск

а для расшифровки:

  • считайте случайное число и зашифрованные данные с диска
  • попросите ssh-agent подписать случайное число
  • используйте подпись для получения того же симметричного ключа, который использовался для шифрования данных
  • расшифруйте данные!

Ответ или решение

Шифрование файлов с использованием YubiKey без OpenPGP

YubiKey — это мощное устройство для обеспечения безопасности, которое предоставляет различные способы защиты данных. Для тех, кто ищет альтернативные методы шифрования файлов без использования OpenPGP, есть несколько подходов, которые позволяют воспользоваться преимуществами YubiKey. В этом ответе мы рассмотрим несколько применимых методов, включая использование SSH-агента и PKCS#11, а также возможность создания пользовательских решений.

1. Использование SSH-агента для шифрования файлов

Как вы упомянули, SSH-агент может быть использован для подписания произвольных данных, что дает возможность сохранить физическое присутствие YubiKey при шифровании файлов. Процесс можно представить в нескольких шагах:

Шаги для шифрования:

  • Генерация случайного числа: Первым шагом является создание случайного числа, которое будет служить основой для вывода симметричного ключа.
  • Подпись случайного числа SSH-агентом: Вы можете запросить у SSH-агента подпись этого числа. Это обеспечит использование приватного ключа, хранящегося на YubiKey, без необходимости раскрывать его.
  • Генерация симметричного ключа: Полученная подпись может быть использована для генерации симметричного ключа с помощью функции преобразования.
  • Шифрование данных: Затем вы можете зашифровать свои данные с использованием сгенерированного симметричного ключа.
  • Сохранение данных: Храните как случайное число, так и зашифрованные данные на диске, при этом не сохраняйте сам симметричный ключ.

Шаги для расшифровки:

  • Чтение сохраненных данных (случайного числа и зашифрованных данных) с диска.
  • Подпись случайного числа SSH-агентом снова для получения той же подписи, что использовалась при шифровании.
  • Использование подписи для генерации симметричного ключа.
  • Дешифрование данных с использованием этого ключа.

Этот подход позволяет использовать возможности YubiKey для шифрования и расшифрования файлов, минимизируя зависимость от OpenPGP, что способствует более легкой интеграции в существующий процесс.

2. Использование PKCS#11 для обеспечения шифрования

Если у вас есть YubiKey, настроенный как PIV смарт-карта, и вы используете поддержку PKCS#11, вы можете рассмотреть возможность использования библиотек, таких как OpenSC, для шифрования файлов. Хотя устройства PIV, как правило, не предоставляют прямую поддержку индивидуального шифрования файлов, вы можете создать пользовательские скрипты и утилиты для работы с PKCS#11.

Применение этого метода включает:

  • Создание пользовательских примеров или использование существующих инструментов для взаимодействия с PKCS#11 библиотеками.
  • Интеграция с инструментами шифрования, которые могут поддерживать PKCS#11, таких как openssl, для генерации симметричных ключей и шифрования данных.

3. Использование open-source менеджеров паролей

Вы также можете рассмотреть open-source менеджеры паролей, которые интегрируются с YubiKey и поддерживают шифрование файлами. Такие приложения, как KeePassXC, поддерживают интеграцию с YubiKey и могут помочь в шифровании отдельных файлов или данных, обеспечивая простоту и безопасность.

Заключение

В заключение, есть несколько различных подходов к шифрованию файлов с использованием YubiKey без OpenPGP. Независимо от выбора метода — будь то создание кастомизированного решения с использованием SSH-агента, интеграция с PKCS#11 или использование open-source менеджеров паролей — каждый из них имеет свои преимущества и может быть адаптирован под ваши требования. Выбор подходящего метода зависит от ваших технических нужд и пожеланий в отношении удобства использования и безопасности.

Оцените материал
Добавить комментарий

Капча загружается...