Як набрати пароль .gpg-файлу лише під час його відкриття


17

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

У мене є один зашифрований файл в моєму орг каталозі diary.org.gpg. Я ніколи не робив жодної спеціальної конфігурації, щоб вона працювала

  1. Щоразу, коли я відвідую файл, мені пропонується пароль шифрування. Що чудово.
  2. Кожного разу, коли я зберігаю буфер, мені знову буде запропоновано ввести пароль. Яка моя проблема .

Зауважте, що я нічого не налаштовував для цього, тому будь-які відповіді щодо агентів або брелоків повинні мати інструкції з налаштування.

Я думав зберегти пароль, написаний десь усередині файлу (в заголовку або в коментарях до кінця файлу). Тоді, коли я зберігаю, Emacs міг прочитати пароль у буфері і використовувати це замість того, щоб мене запитувати. Але коли я почав дивитися на це, я зовсім загубився десь усередині epa.el.

Питання: Як я можу надіслати пароль безпосередньо з Emacs до системи / процесу шифрування під час збереження буфера, а не вимагати його?

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

Зауважте, що я перебуваю на Ubuntu, Arch Linux та Windows. Ось чому моя перша ідея була рішенням, орієнтованим на emacs.
Я можу жити з рішенням, яке не працює в Windows, якщо я все ще можу отримати доступ до файлу в ньому вручну.


Я думаю, що це: orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5 - це те, що ти хочеш (gpg-агент).
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
  • пиловство-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 Я цього не пробував, але вважаю, що це втрачено назавжди. Але добре, що цей файл генерується лише один раз, коли ви асоціюєте електронну пошту та пароль з ключовим елементом. Він не змінюється після цього першого часу, поки ви не додасте більше ключових елементів (більше пароля + пари електронної пошти). Я просто зберігаю резервні копії цього файлу в USB-ключі та Dropbox і переконуюсь, що пароль є надто захищеним.
Каушал Моді

Я перевірив симетрично зашифровані документи на портативність. Я зашифрував щось у emacs в Linux та відкрив його, використовуючи один із безлічі безкоштовних інструментів розшифровки GPG, доступних для Windows. Він попросив ввести брелок і вказав на мою резервну копію в Dropbox, і вона спрацювала.
Каушал Моді

Просто FYI: Так, втрата файлу ключа означає, що ви назавжди втрачаєте доступ до своїх зашифрованих файлів. Щоб розшифрувати їх, потрібно як пароль, так і файл приватного ключа. Це частина моделі безпеки GPG для асиметричного шифрування.
Тайлер

Схоже, мені доведеться все-таки йти з цією відповіддю. Чи знаєте ви, як я можу змінити розташування файлу брелоків?
Малабарба

9

Виявляється, все, що я повинен був зробити

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

Це рішення працює як в Linux, так і в Windows, і це люб'язно надано Тедом і Майклом у довідці help-gnu-emacs.


Приємно знати, що це працює для вас! Я налаштовував цей параметр у своєму конфігурації Emacs роками, але в якийсь момент він просто перестав працювати. Я підозрюю, що це стосується мого використання gnome-keyring-демон (який також виступає як gpg keyring).
паприка

4
З docstring для epa-file-cache-passphrase-for-symmetric-encryption: "Зауважте, що ця опція не має ефекту, якщо ви використовуєте GnuPG 2.0."
Вільфред Х'юз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.