Как набрать пароль файла .gpg только при его открытии

17

(Я понимаю следующие последствия для безопасности, и я в порядке с ними.)

У меня есть один зашифрованный файл в моей директории org diary.org.gpg. Я никогда не делал никаких специальных настроек для его работы, до сих пор

  1. Всякий раз, когда я посещаю файл, меня просят ввести пароль шифрования. Что здорово.
  2. Всякий раз, когда я сохраняю буфер, меня дважды запрашивают пароль. Какая моя проблема .

Обратите внимание, что я ничего не настроил, чтобы это работало, поэтому любые ответы, касающиеся агентов или связок ключей, должны идти с инструкциями по настройке.

Я думал о сохранении пароля, записанного где-нибудь внутри файла (в заголовке или в конце файла). Затем, всякий раз, когда я сохраняю, Emacs может прочитать пароль в буфере и использовать его вместо запроса. Но когда я начал разбираться с этим, я совершенно заблудился где-то внутри epa.el.

В: Как я могу отправить пароль непосредственно из Emacs в систему / процесс шифрования при сохранении буфера, вместо того, чтобы запрашивать его?

Все остальное (нахождение пароля в буфере) я могу выяснить сам. Я просто заблудился, пытаясь понять, как Emacs взаимодействует с gpg.

Обратите внимание, что я использую Ubuntu, Arch Linux и Windows. Вот почему моей первой идеей было решение, ориентированное на emacs.
Я могу жить с решением, которое не работает в Windows, до тех пор, пока я могу получить доступ к файлу вручную.

Malabarba
источник
Я думаю, что это: orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5 - это то, что вы хотите (gpg-agent).
wvxvw
@wvxvw Возможно. Это ничего не говорит о сохранении, поэтому я должен попробовать.
Малабарба
Честно говоря, GPG и связанные программы имеют удивительно плохой пользовательский интерфейс. Очень сложно понять, что они делают, из интерфейса или из документации. Но я понимаю, что цель gpg-agentзаключается в том, что он ssh-agentпросто сохраняет ваши пароли после активации. Таким образом, вам не будет предложено ввести пароль ни при открытии файла, ни при его сохранении (если агент запоминает пароль), но я не думаю, что это распространяется на фразу-пароль, которая является довольно глупой , если правда.
wvxvw
Вы, вероятно, хотите правильно настроить gpg-agent, чтобы он некоторое время кэшировал ключ? :)
Гюнтер Ноак
1
@wvxvw Может быть, раньше? Я обнаружил, что справочные страницы упомянутых инструментов довольно подробны, а интерфейс (CLI) - это то, что обычно можно ожидать от программ на основе терминала.
legends2k

Ответы:

12

Шифрование с использованием пароля + ключа

Это не сохраняет пароль непосредственно в файле, но делает что-то подобное без какой-либо угрозы безопасности и помогает вам достичь того, чего вы хотите.

  • Вам необходимо использовать асимметричное шифрование, чтобы ваш пароль ассоциировался с идентификатором электронной почты в связке ключей .

  • Сохраните ниже в верхней части вашего .gpg файла

-*- epa-file-encrypt-to: ("your@email.address") -*-

Пароль запрашивается при первом сохранении / создании файла. Но после этого пароль запрашивается только один раз при каждом открытии сохраненного файла.

Единственный улов заключается в том, что вы не должны терять файл ключей, который сохраняется ~/.gnupg/по умолчанию.

Настройка GPG

Настройка Emacs

Для этого в emacs не требуется никаких настроек.

Настройка системы

Но вам нужно иметь готовую системную среду с несколькими библиотеками для работы функции GPG.

Во время настройки мне пришлось установить следующее:

  • gpgme-1.5.3
  • libgpg-ошибка-1,17
  • libksba-1.3.2
  • libassuan-2.2.0
  • libgcrypt-1.6.2
  • GnuPG-2.0.26
  • pinentry-0.9.0

Мне нужна была одна или две из вышеуказанных библиотек, и в итоге я установил остальные, потому что они были либо обязательными, либо необязательными зависимостями.

После того, как все установлено, сделайте

> gpg --gen-key

И создайте для себя вечный ключ и свяжите его с вашим настоящим именем и адресом электронной почты.

Сгенерированный ключ будет сохранен в вашем ~/.gnupg/каталоге.

Изменение расположения клавиш

Вы можете изменить расположение связки ключей, изменив $GNUPGHOME, используя --homedirили --keyringпараметры для gpg.

От man gpg:

--keyring file

Добавить файл в текущий список ключей. Если файл начинается с тильды и косой черты, они заменяются каталогом $ HOME. Если имя файла не содержит косую черту, предполагается, что оно находится в домашнем каталоге GnuPG («~ / .gnupg», если --homedir или $ GNUPGHOME не используются).

Обратите внимание, что это добавляет связку ключей в текущий список. Если вы хотите использовать только указанное кольцо ключей, используйте --keyring вместе с --no-default-keyring.

Использование GPG с emacs

В emacs вы просто создаете файл с .gpgрасширением. Например, если файл изначально был auth.el, вы бы переименовали его в auth.el.gpg.

Поместите эту строку вверху файла:

;; -*- epa-file-encrypt-to: ("your@email.address") -*-

Обратите внимание, что я использовал символы комментария elisp ;;в качестве примера файла здесь auth.el.gpg.

Используйте точный адрес электронной почты, который вы использовали во время генерации ключа.

Когда вы попытаетесь сохранить его, emacs отобразит это приглашение в буфере:

Select recipients for encryption.
If no one is selected, symmetric encryption will be performed.  
- `m' to mark a key on the line
- `u' to unmark a key on the line
[Cancel][OK]

  u <GPG KEY> <YOUR NAME> (<YOUR GPG KEY NAME>) <<YOUR GPG KEY EMAIL>>

Перейдите точку к строке, содержащей ключ, нажмите m.

Переместите точку к [OK]кнопке и нажмите <return>.

Теперь вы можете сохранить файл и уничтожить этот файловый буфер.

В следующий раз, когда вы откроете этот файл .gpg, вам будет предложено ввести пароль только один раз, а затем последующее сохранение будет без запроса пароля.

Больше информации

  • Вот одна из публикаций в блоге, в которой рассказывается о настройке emacs и GPG, на которую вы также можете сослаться.
  • EasyPG - emacswiki.org
Каушал Моди
источник
Если я потеряю файл ключей, смогу ли я открыть зашифрованный файл с помощью обычного пароля или он потерян навсегда?
Малабарба
@ Malabarba Я не пробовал это, но я верю, что это потеряно навсегда. Но хорошо, что этот файл создается только один раз, когда вы связываете электронную почту и пароль с элементом keyring. После первого раза он не изменяется, пока вы не добавите больше элементов связки ключей (больше пар + адрес электронной почты). Я просто сохраняю резервные копии этого файла на USB-накопителе и в Dropbox и проверяю, что пароль является сверхбезопасным.
Каушал Моди
Я проверил симметрично зашифрованные документы на переносимость. Я зашифровал что-то в emacs в Linux и открыл его с помощью одного из многих бесплатных инструментов расшифровки GPG, доступных для Windows. Он попросил связку ключей и указал на мою резервную копию в Dropbox, и это сработало.
Каушал Моди
Просто к вашему сведению: Да, потеря файла ключа означает, что вы навсегда потеряете доступ к своим зашифрованным файлам. Вам нужно как пароль, так и файл закрытого ключа, чтобы расшифровать их. Это часть модели безопасности GPG для асимметричного шифрования.
Тайлер
Похоже, мне придется пойти с этим ответом в конце концов. Знаете ли вы, как я могу изменить расположение файла ключей?
Малабарба
9

Оказывается, все, что мне нужно было сделать, это

(setq epa-file-cache-passphrase-for-symmetric-encryption t)

Это решение работает как в Linux, так и в Windows, и любезно предоставлено Тедом и Майклом в help-gnu-emacs.

Malabarba
источник
Приятно знать, что это работает для вас! У меня был этот параметр в моей конфигурации Emacs в течение многих лет, но в какой-то момент он просто перестал работать. Я подозреваю, что это связано с моим использованием gnome-keyring-daemon (который также действует как gpg keyring).
паприка
4
Из строки документации для epa-file-cache-passphrase-for-symmetric-encryption: «Обратите внимание, что этот параметр не действует, если вы используете GnuPG 2.0».
Уилфред Хьюз