Работа с PGP

Использование набора программ GPG (GNU ревлизация PGP).

Содержание

1 Экспорт ключей PGP

  • Экспорт ключей
    • Экспорт всех открытых ключей в текстовый файл в кодировке base64:
      gpg -a --export > mypubkeys.asc
      
    • Экспорт всех зашифрованных закрытых ключей (которые также будут включать соответствующие открытые ключи) в текстовый файл:
      gpg -a --export-secret-keys > myprivatekeys.asc
      
    • Опционально экспортируется trustdb gpg в текстовый файл:
      gpg --export-ownertrust > otrust.txt
      
  • Импорт ключей
    • Выполните команды gpg --import для двух файлов asc, а затем проверьте наличие новых ключей с помощью gpg -k и gpg -K:
      gpg --import myprivatekeys.asc
      gpg --import mypubkeys.asc
      gpg -K
      gpg -k
      
    • При желании также импортируйте файл trustdb:
      gpg --import-ownertrust otrust.txt
      
    • Проверьте шифрование и дешифрование с помощью команд gpg -er USERID и gpg -d.

2 gpg-agent

2.1 Общая информация

  • Используется для временного хранения пароля.
  • Предоставляются пользовательские сокеты systemd:
    • основной сокет gpg-agent.socket используется gpg для подключения к демону gpg-agent;
    • сокет gpg-agent-extra.socket на локальной системе используется для настройки переадресации Unix-сокета с удалённой системы;
    • gpg-agent-browser.socket позволяет веб-браузерам обращаться к демону gpg-agent;
    • gpg-agent-ssh.socket может использоваться SSH для кэширования ключей SSH, добавленных программой ssh-add;
    • dirmngr.socket запускает демон GnuPG, обрабатывающий соединения с серверами ключей.

2.2 Запуск

  • Активизируются сокеты, а не сам gpg-agent.
  • Запуск под управлением systemd:
    systemctl --user enable --now gpg-agent.socket
    

2.3 Перезапуск агента

  • После обновления настроек следует перезапустить агента, передав команду RELOADAGENT программе gpg-connect-agent:
    gpg-connect-agent reloadagent /bye
    

2.4 Настройка

  • Настраивается в файле ~/.gnupg/gpg-agent.conf.
  • Время жизни для ключей в кэше с момента последнего использования:
    default-cache-ttl 3600
    

2.5 pinentry

  • gpg-agent использует pinentry для отображения диалога запроса пароля.
  • Вариант диалога настраивается в файле настроек ~/.gnupg/gpg-agent.conf.
  • Чтобы установить конкретный диалог, установите опцию pinentry-program в файле ~/.gnupg/gpg-agent.conf, например:
    pinentry-program /usr/bin/pinentry-curses
    
  • Существуют разные реализации pinentry.
  • Просмотр реализаций:
    • Gentoo:
      eselect pinentry list
      

2.6 Кэширование паролей

  • Время кеширования определяется параметрами max-cache-ttl и default-cache-ttl.
  • Чтобы вводить пароль всего один раз за сеанс, нужно установить их на очень высокое значение, например:
    ## gpg-agent.conf
    max-cache-ttl 60480000
    default-cache-ttl 60480000
    
  • Для кэширования паролей в режиме эмуляции SSH следует установить параметры default-cache-ttl-ssh и max-cache-ttl-ssh, например:
    ## gpg-agent.conf
    default-cache-ttl-ssh 60480000
    max-cache-ttl-ssh 60480000
    

3 Шифрование

  • Шифрование может быть симметричным и ассиметричным.
  • Симметричное шифрование шифруется и расшифровывается приватным ключом или одной и той же парольной фразой.
  • Ассиметричное шифрование шифруется публичным ключом, расшифровывается приватным.

3.1 Симметричное шифрование

  • Зашифровать файл:
gpg -c filename

или

gpg --symmetric filename
  • Расшифровать файл:
    gpg --decrypt-files filename.gpg
    
  • Расшифровать файл с выводом на терминал:
    gpg --decrypt filename.gpg
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие