Вопрос или проблема
Я пытаюсь зашифровать файл с помощью моего Yubikey и openssl на Linux. Мой Yubikey это
idProduct 0x0407 Yubikey 4/5 OTP+U2F+CCID
bcdDevice 5.24
Сначала я извлекаю мой открытый ключ из yubikey:
pkcs15-tool --read-public-key 01 -o pubkey
Я получаю файл, который выглядит следующим образом:
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZ[...]WpqK
qezLU6KBlk9[...]eRDFZEkvptllFFkw==
-----END PUBLIC KEY-----
Когда я пытаюсь зашифровать файл с этим открытым ключом, я получаю ошибку:
openssl pkeyutl -encrypt -pubin -inkey pubkey -in file -out file.enc
pkeyutl: Error initializing context
40A7F0A3DA720000:error:03000096:digital envelope routines:evp_pkey_asym_cipher_init:operation not supported for this keytype:../crypto/evp/asymcipher.c:189:
Недавно я перешел на yubikey. Ранее у меня был epass2000, который работал таким образом. Я не могу найти какие-либо подходящие документы для yubikey в интернете.
Как зашифровать файл с помощью openssl и yubikey?
Ответ или решение
Шифрование файла с помощью YubiKey и OpenSSL на Linux может оказаться сложной задачей, особенно если используется YubiKey с поддержкой CCID. Рассмотрим шаги, которые позволят успешно выполнить эту задачу.
Шаг 1: Извлечение публичного ключа
Вы уже успешно извлекли свой публичный ключ с помощью команды:
pkcs15-tool --read-public-key 01 -o pubkey
Убедитесь, что файл pubkey
содержит корректные данные, как в вашем примере.
Шаг 2: Проверка типа ключа
Ошибка "operation not supported for this keytype" может указывать на проблемы с типом ключа, который вы используете. YubiKey поддерживает ограниченные операции для некоторых ключей. Рекомендуется использовать RSA или ECC ключи для шифрования, так как они поддерживаются OpenSSL.
Шаг 3: Шифрование файла
Если у вас есть соответствующий тип ключа, вы можете использовать OpenSSL для шифрования следующим образом:
-
Проверка ключа
Убедитесь, что ваш публичный ключ совместим с операцией шифрования. Например, для RSA:openssl rsa -in pubkey -check
-
Шифрование файла
Попробуйте следующее, если у вас RSA ключ:openssl rsautl -encrypt -inkey pubkey -pubin -in file -out file.enc
Если вы используете ECC, операция может отличаться, так как ECC работает иначе.
Шаг 4: Использование подходящих инструментов
Если OpenSSL не поддерживает ваш тип ключа, необходимо рассмотреть возможность применения других инструментов или использования GnuPG с поддержкой YubiKey. Для шифрования файла с помощью GPG и YubiKey выполните следующие действия:
-
Экспорт открытого ключа из YubiKey:
gpg --card-edit
Далее следуйте инструкциям на экране, чтобы извлечь и сохранить открытый ключ.
-
Импорт открытого ключа в GPG:
gpg --import pubkey.gpg
-
Шифрование файла:
gpg --encrypt -r [ваш_gpg_id] file
Рекомендации и заключение
При работе с YubiKey важно учесть, что некоторые операции зависят от программного обеспечения и конфигурации самого устройства. Убедитесь, что ваш YubiKey правильно настроен и поддерживает именно ту операцию, которую вы хотите выполнить. Обязательно ознакомьтесь с официальной документацией Yubico для получения дополнительной информации о поддерживаемых режимах и возможностях вашего устройства.
Настройка и шифрование с использованием YubiKey могут варьироваться в зависимости от конкретных требований и ограничений устройства, поэтому рекомендуется держать документацию под рукой и следить за обновлениями программного обеспечения.