GPG 2 зависает при вводе неправильной парольной фразы.

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

Когда я использую GPG для расшифровки упакованной и зашифрованной резервной копии, я планирую использовать скрипт, который перебирает старые пароли, чтобы мне не приходилось регулярно их менять. Однако при тестировании этого gpg никогда не завершает работу после попытки использования ключа и вывода gpg: расшифровка не удалась: Неверный сеансовый ключ, поэтому я никогда не могу попытаться снова. Я надеюсь, что это просто какая-то опечатка, которую я не вижу.

Команда, которую я выполняю, выглядит так:

gpg (GnuPG) 2.2.27
libgcrypt 1.9.4

gpg --debug-all --pinentry-mode loopback --batch --yes --cipher-algo AES256 --passphrase-file ~/.curpass --decrypt /mnt/data-disk/backups/series-2024-10-01/2024-10-01_07-00-02_full/data.xbstream.zs.aes256 > /mnt/data-disk/backups/series-2024-10-01/2024-10-01_07-00-02_full/data.xbstream.zs 2> log.txt
log.txt:
gpg: чтение параметров из '[cmdline]'
gpg: включены отладочные флаги: packet mpi crypto filter iobuf memory cache memstat trust hashing ipc clock lookup extprog
gpg: DBG: [не включено в исходнике] начало
gpg: DBG: fd_cache_open (/mnt/data-disk/backups/series-2024-10-01/2024-10-01_07-00-02_full/data.xbstream.zs.aes256) не закэшировано
gpg: DBG: iobuf-1.0: открыть '/mnt/data-disk/backups/series-2024-10-01/2024-10-01_07-00-02_full/data.xbstream.zs.aes256' desc=file_filter(fd) fd=4
gpg: DBG: iobuf-1.0: недоступный поток: размер буфера: 8192; еще в буфере: 0 => место для 8192 байтов
gpg: DBG: iobuf-1.0: недоступный поток: A->FILTER (8192 байт)
gpg: DBG: iobuf-1.0: A->FILTER() вернул rc=0 (ок), прочитано 8192 байта
gpg: DBG: parse_packet(iob=1): type=3 length=13 (parse.../../g10/mainproc.c.1560)
gpg: AES256.CFB зашифрованные данные
gpg: DBG: free_packet() type=3
gpg: DBG: iobuf-1.1: push 'block_filter'
gpg: DBG: iobuf chain: 1.1 'block_filter' filter_eof=0 start=0 len=0
gpg: DBG: iobuf chain: 1.0 'file_filter(fd)' filter_eof=0 start=17 len=8192
gpg: DBG: init block_filter 0x000060965f395d90
gpg: DBG: parse_packet(iob=1): type=18 length=0 (new_ctb) (parse.../../g10/mainproc.c.1560)
gpg: DBG: iobuf-1.1: недоступный поток: размер буфера: 8192; еще в буфере: 0 => место для 8192 байтов
gpg: DBG: iobuf-1.1: недоступный поток: A->FILTER (8192 байт)
gpg: DBG: iobuf-1.0: недоступный поток: размер буфера: 8192; еще в буфере: 0 => место для 8192 байтов
gpg: DBG: iobuf-1.0: недоступный поток: A->FILTER (8192 байт)
gpg: DBG: iobuf-1.0: A->FILTER() вернул rc=0 (ок), прочитано 8192 байта
gpg: DBG: iobuf-1.1: A->FILTER() вернул rc=0 (ок), прочитано 8192 байта
gpg: зашифровано с 1 паролем
gpg: расшифровка не удалась: Неверный сеансовый ключ
gpg: DBG: free_packet() type=18
gpg: DBG: iobuf-1.1: недоступный поток: размер буфера: 8192; еще в буфере: 0 => место для 8192 байтов
gpg: DBG: iobuf-1.1: недоступный поток: A->FILTER (8192 байт)
gpg: DBG: iobuf-1.0: недоступный поток: размер буфера: 8192; еще в буфере: 0 => место для 8192 байтов
gpg: DBG: iobuf-1.0: недоступный поток: A->FILTER (8192 байт)
gpg: DBG: iobuf-1.0: A->FILTER() вернул rc=0 (ок), прочитано 8192 байта
gpg: DBG: iobuf-1.1: A->FILTER() вернул rc=0 (ок), прочитано 8192 байта
gpg: DBG: iobuf-1.1: недоступный поток: размер буфера: 8192; еще в буфере: 0 => место для 8192 байтов
gpg: DBG: iobuf-1.1: недоступный поток: A->FILTER (8192 байт)
gpg: DBG: iobuf-1.0: недоступный поток: размер буфера: 8192; еще в буфере: 0 => место для 8192 байтов
gpg: DBG: iobuf-1.0: недоступный поток: A->FILTER (8192 байт)

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

Проблема зависания GPG 2 при вводе неверной парольной фразы

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

Описание проблемы

Вы используете следующую команду GPG:

gpg --debug-all --pinentry-mode loopback --batch --yes --cipher-algo AES256 --passphrase-file ~/.curpass --decrypt /mnt/data-disk/backups/series-2024-10-01/2024-10-01_07-00-02_full/data.xbstream.zs.aes256 > /mnt/data-disk/backups/series-2024-10-01/2024-10-01_07-00-02_full/data.xbstream.zs 2> log.txt

В процессе выполнения вы получаете сообщение об ошибке gpg: decryption failed: Bad session key, но GPG не завершается и продолжает зависать, не позволяя вам попытаться ввести другую парольную фразу.

Возможные причины зависания

  1. Неправильный режим взаимодействия с пользователем: Вы используете параметр --pinentry-mode loopback, что позволяет GPG запрашивать ввод парольной фразы в командной строке. Однако, если pinentry не подключен правильно, это может вызвать зависания.

  2. Обработка ошибок в GPG: При вводе неверной парольной фразы GPG может пытаться обработать сессии, которые не завершились корректно, что приводит к зацикливанию и зависанию процесса.

  3. Конфликты с библиотеками или окружением: Ваше окружение может иметь конфликты с библиотеками или установленным ПО, что также может вызывать зависания программы.

Рекомендуемые решения

  1. Проверка параметров конфигурации: Убедитесь, что в конфигурационных файлах GPG (например, ~/.gnupg/gpg.conf) нет конфликтующих настроек. Попробуйте временно удалить или изменить настройки, чтобы увидеть, повлияет ли это на проблему.

  2. Использование флага --batch: Убедитесь, что вы работаете в пакетном режиме. В вашем случае этот флаг уже указан, и это правильно, так как он предотвращает интерактивные запросы. Однако, иногда стоит проверить, не конфликтуют ли другие параметры командной строки.

  3. Оптимизация использования pinentry: Попробуйте явно указать pinentry в конфигурации. Например, если вы используете pinentry-tty, включите его в настройках. Это может помочь избежать проблем при вводе неверной парольной фразы.

  4. Проверка записей в log.txt: Изучите лог-файл для выявления дополнительных подсказок, которые могут указывать на причину зависания. Обратите внимание на любые необычные или ошибочные сообщения.

  5. Обновление ПО: Убедитесь, что у вас установлена последняя версия GnuPG и связанных библиотек. Иногда проблемы зависания могут быть устранены с помощью обновлений, которые исправляют известные ошибки.

  6. Изменение метода тестирования: Вместо зацикливания по старым парольным фразам, рассмотрите возможность создания списка парольных фраз и использования более простой логики, которая проверяет одну фразу и завершает работу GPG перед следующей пробой.

Заключение

Проблемы с зависанием GPG при использовании неверных парольных фраз могут быть вызваны множеством факторов. Используя вышеописанные рекомендации, вы можете диагностировать и устранить проблему. Важно создать рабочий процесс, который позволит вам эффективно управлять доступом к зашифрованным данным, избегая раздражающих зависаний. Если проблемы продолжают возникать, рекомендуется обратиться за поддержкой к сообществу GnuPG или к профессиональным специалистам по информационным технологиям.

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

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