Вопрос или проблема
Я нахожусь в процессе развертывания Kleopatra и хотел бы проверить используемый шифр. В Kleopatra, в разделе “GnuPG System > S/MIME > использовать алгоритм шифрования NAME”, опция установлена на AES. Это шифр, используемый для шифрования, и предполагается, что это AES128? Как я могу это проверить?
Я зашифровал файл с помощью Kleopatra и отправил его на linux-компьютер, где я запустил шифротекст через pgpdump
. Не уверен, что именно я вижу. Я ожидал увидеть ‘AES’ где-то здесь.
Старый: Пакет открытого ключа зашифрованного сеансового ключа (тег 1)(268 байт)
Новая версия (3)
ID ключа - 0xxxxxxxxxxxx95
Алгоритм - RSA шифрования или подписи (pub 1)
RSA m^e mod n (2045 бит) - ...
-> m = симв. алг. (1 байт) + контрольная сумма (2 байта) + PKCS-1 тип блока 02
Старый: Пакет открытого ключа зашифрованного сеансового ключа (тег 1)(268 байт)
Новая версия (3)
ID ключа - 0xxxxxxxxxxxx4E
Алгоритм - RSA шифрования или подписи (pub 1)
RSA m^e mod n (2046 бит) - ...
-> m = симв. алг. (1 байт) + контрольная сумма (2 байта) + PKCS-1 тип блока 02
Новый: Симметрично зашифрованный и MDC пакет (тег 18)(512 байт) частичный старт
Вер 1
Зашифрованные данные [симв. алг. указан в пакете открытого ключа зашифрованного сеансового ключа]
(открытый текст + MDC SHA1(20 байт))
Новый: (54 байта) частичный конец
Я пробовал gnupg --list-packets file.gpg
, но ничего не увидел, что указывало бы на шифр, но, вероятно, это моя незнание:
$ gpg --list-packets file.gpg
:pubkey enc packet: версия 3, алгоритм 1, keyid xxxxxxxx95
данные: [2045 бит]
:pubkey enc packet: версия 3, алгоритм 1, keyid xxxxxxxx4E
данные: [2046 бит]
:пакет зашифрованных данных:
длина: неизвестно
mdc_method: 2
gpg: зашифровано с помощью 2048-битного RSA ключа, ID xxxxxx4E, создан 2018-11-28
"xxxxxx <xxxxxx@xxxxx>"
gpg: зашифровано с помощью 2048-битного RSA ключа, ID xxxxxx95, создан 2017-07-13
"xxxxxxxxx <xxxxxx@xxxxx>"
gpg: расшифровка не удалась: секретный ключ недоступен
Я также извлек первые 16 байтов файла .gpg. Я читал где-то, что 4-й байт должен быть 09
для AES, но, похоже, это не так:
$ od -t x1 file.gpg | head -1
0000000 85 01 0c 03 19 c3 9b 0a b3 f1 23 95 01 07 fd 15
В GnuPG, в разделе перечисленных алгоритмов, таких как следующий вывод gpg --version
, вы можете увидеть поддерживаемые блочные шифры вашей сборки.
Поддерживаемые алгоритмы:
Открытый ключ: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Шифр: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Хеш: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Сжатие: Некомпрессированный, ZIP, ZLIB, BZIP2
В отличие от семейства Camellia, AES-128 просто указан как AES. Это, вероятно, связано с тем, насколько широко используется AES-128; его часто называют просто AES, потому что в настоящее время большинство приложений не получают больших преимуществ в плане безопасности от использования AES-192 или AES-256.
Модераторы: Этот пост должен быть на Super User, а не на Cryptography, где он был первоначально опубликован. OP – новый пользователь, пожалуйста, дайте ему знать, что Cryptography Stack Exchange предназначен для обсуждения математики криптографии и разработки программного обеспечения, а не для использования программного обеспечения.
Ответ или решение
Чтобы проверить шифр, используемый в Kleopatra, необходимо разобраться в том, как работает шифрование в GnuPG и как это отражается на выходных данных после шифрования. Вы уже настроили конфигурацию на использование AES, и теперь следует углубиться в детали.
1. Основы шифрования в Kleopatra
Kleopatra является графическим интерфейсом для GnuPG, который отвечает за шифрование в рамках S/MIME и PGP. Когда вы устанавливаете параметр "Use cipher algorithm NAME" на AES в Kleopatra, это означает, что используется один из алгоритмов шифрования Advanced Encryption Standard (AES).
2. Как определить, используется ли AES-128?
По умолчанию в GnuPG алгоритм AES чаще всего подразумевает использование AES-128, если не указано иное. Однако, для проверки фактического используемого алгоритма в процессе шифрования вы можете использовать команду gpg --list-packets
. Из выводимых данных вы можете увидеть различные пакеты, но важно обратить внимание на следующую информацию:
- До выставления параметра AES, у вас есть код, который говорит о «симметричном алгоритме» (sym alg). Обычно это первый байт, который указывает на тип используемого симметричного алгоритма.
3. Анализ результатов pgpdump и gpg
Согласно вашему выводу из pgpdump
, вы не видите упоминания AES, потому что используемый симметричный алгоритм может быть закодирован в первой части шифрованного пакета. Вы упоминаете, что 4-й байт должен быть 0x09 для AES, что также соответствует требованиям спецификации OpenPGP:
- Если вы извлекли первые 16 байт из
file.gpg
и 4-й байт не равен09
, это может указывать на то, что используется другой алгоритм шифрования, или что он иным образом был скомпилирован.
4. Использование инструмента gpg
Вывод команды gpg --list-packets file.gpg
также подсказывает, что присутствуют пакеты pubkey enc
, которые указывают на использование RSA для шифрования сессии. Они не содержат явного указания на использованный симметричный алгоритм, что может вызвать путаницу.
Если у вас возникает ошибка "decryption failed: secret key not available", это означает, что ваша публичная часть ключа не может расшифровать файл, так как вам необходима соответствующая закрытая часть.
5. Верifying the Cipher
Чтобы подтвердить, используется ли AES и на каком уровне (AES-128, AES-192 или AES-256), вам нужно выполнить следующие шаги:
- Убедитесь, что ваша версия GnuPG поддерживает AES. Выполните команду
gpg --version
и посмотрите вывод на наличие упоминания AES. - Для подробного анализа вы можете использовать команду
gpg --dump-keys
с соответствующими параметрами для получения дополнительной информации о ключах и их настройках шифрования. - Также уточните настройку
gpg.conf
для подтверждения, какой уровень AES применяется при шифровании.
Заключение
Ваша текущая конфигурация указывает на использование AES, но для окончательной проверки вам следует использовать вышеуказанные команды и проанализировать данные на предмет симметричного алгоритма. Убедитесь, что вы обладаете необходимыми закрытыми ключами для расшифровки и используйте их для подтверждения правильности использования AES в шифровании.