Jak wpisać hasło do pliku .gpg tylko podczas jego otwierania

17

(Rozumiem konsekwencje poniższych problemów dla bezpieczeństwa i nie mam nic przeciwko).

Mam jeden plik zaszyfrowany w moim org katalogu diary.org.gpg. Jeszcze nigdy nie zrobiłem żadnej specjalnej konfiguracji, żeby działała

  1. Za każdym razem, gdy odwiedzam ten plik, pojawia się monit o hasło do szyfrowania. Który jest świetny.
  2. Za każdym razem, gdy zapisuję bufor, dwukrotnie pojawia się monit o hasło. To jest mój problem .

Pamiętaj, że nie skonfigurowałem niczego, aby to działało, więc wszelkie odpowiedzi dotyczące agentów lub breloków będą musiały zawierać instrukcje konfiguracji.

Myślałem o zachowaniu hasła zapisanego gdzieś w pliku (w nagłówku lub w komentarzach na końcu pliku). Następnie, za każdym razem, gdy zapisuję, Emacs może odczytać hasło w buforze i użyć go zamiast monitować mnie. Ale kiedy zacząłem się temu przyglądać, zgubiłem się gdzieś w środku epa.el.

P: Jak mogę wysłać hasło bezpośrednio z Emacsa do systemu / procesu szyfrowania podczas zapisywania bufora, zamiast być o to poproszony?

Całą resztę (znajdowanie hasła w buforze) mogę sam rozgryźć. Właśnie się zgubiłem, próbując zrozumieć, w jaki sposób Emacs łączył się z gpg.

Pamiętaj, że korzystam z Ubuntu, Arch Linux i Windows. Właśnie dlatego moim pierwszym pomysłem było rozwiązanie skoncentrowane na emacsie.
Mogę żyć z rozwiązaniem, które nie działa w systemie Windows, o ile nadal mogę uzyskać dostęp do pliku w nim ręcznie.

Malabarba
źródło
Myślę, że to: orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5 jest tym, czego chcesz (agent gpg).
wvxvw
@wvxvw Może. Nie mówi nic o oszczędzaniu, więc muszę spróbować.
Malabarba
Szczerze mówiąc, GPG i powiązane programy mają wyjątkowo zły interfejs użytkownika. Naprawdę trudno jest zrozumieć, co robią z interfejsu lub dokumentacji. Ale rozumiem cel tego gpg-agent, że podobnie jest po ssh-agentprostu przechowywanie haseł, które masz, po aktywacji. Więc nie pojawi się monit o hasło ani podczas otwierania pliku, ani podczas jego zapisywania (o ile agent pamięta hasło), ale nie sądzę, że dotyczy to hasła, które jest trochę głupie , Jeśli prawda.
wvxvw
Prawdopodobnie chcesz gpg-agentpoprawnie skonfigurować , aby przez chwilę buforował klucz? :)
Günther Noack
1
@wvxvw Być może kiedyś tak było? Odkryłem, że strony podręcznika narzędzi są dość szczegółowe, a interfejs (CLI) jest tym, czego zwykle można się spodziewać po programach terminalowych.
legends2k

Odpowiedzi:

12

Szyfrowanie przy użyciu hasła + klucza

To nie zapisuje hasła bezpośrednio w pliku, ale robi coś podobnego bez ryzyka bezpieczeństwa i pomaga osiągnąć to, co chcesz.

  • Musisz użyć szyfrowania asymetrycznego, aby hasło było powiązane z identyfikatorem e-mail w breloku .

  • Zapisz poniżej u góry pliku .gpg

-*- epa-file-encrypt-to: ("[email protected]") -*-

Hasło jest monitowane przy pierwszym zapisaniu / utworzeniu pliku. Ale potem hasło jest monitowane tylko raz przy każdym otwarciu zapisanego pliku

Jedynym haczykiem jest to, że nie możesz stracić pliku kluczy, który jest ~/.gnupg/domyślnie zapisany .

Konfiguracja GPG

Konfiguracja Emacsa

W Emacsie nie jest wymagana żadna konfiguracja.

Ustawienia systemu

Ale musisz mieć przygotowane środowisko systemowe z kilkoma bibliotekami, aby funkcja GPG działała.

W momencie konfigurowania musiałem zainstalować następujące elementy:

  • gpgme-1.5.3
  • libgpg-error-1.17
  • libksba-1.3.2
  • libassuan-2.2.0
  • libgcrypt-1.6.2
  • gnupg-2.0.26
  • pinentry-0.9.0

Potrzebowałem jednej lub dwóch powyższych bibliotek i ostatecznie instalowałem inne, ponieważ były to albo obowiązkowe, albo opcjonalne zależności.

Po zainstalowaniu wszystkiego zrób

> gpg --gen-key

I wygeneruj dla siebie klucz, który nigdy nie wygasa, i powiąż go ze swoim prawdziwym nazwiskiem i adresem e-mail.

Wygenerowany klucz zostanie zapisany w twoim ~/.gnupg/katalogu.

Zmiana lokalizacji kluczy

Możesz zmienić lokalizację breloka, zmieniając $GNUPGHOME, używając --homedirlub --keyringopcje dla gpg.

Od man gpg:

--keyring file

Dodaj plik do bieżącej listy kluczy. Jeśli plik zaczyna się tyldą i ukośnikiem, są one zastępowane katalogiem $ HOME. Jeśli nazwa pliku nie zawiera ukośnika, zakłada się, że znajduje się w katalogu domowym GnuPG („~ / .gnupg”, jeśli nie użyto opcji --homedir lub $ GNUPGHOME).

Pamiętaj, że to dodaje brelok do bieżącej listy. Jeśli zamierzasz używać tylko określonego klucza, użyj --keyring razem z --no-default-keyring.

Używanie GPG z emacsem

W emacsie po prostu tworzysz plik z .gpgrozszerzeniem. Na przykład, jeśli plik był pierwotnie auth.el, zmień jego nazwę na auth.el.gpg.

Umieść ten wiersz na górze pliku:

;; -*- epa-file-encrypt-to: ("[email protected]") -*-

Zauważ, że użyłem znaków komentarza elisp, ;;tak jak w tym przykładzie auth.el.gpg.

Użyj dokładnego adresu e-mail, którego użyłeś podczas generowania klucza.

Kiedy spróbujesz go zapisać, emacs wyświetli ten monit w buforze:

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>>

Przejdź punkt do linii zawierającej klucz, naciśnij m.

Przejdź przez punkt do [OK]przycisku i naciśnij <return>.

Możesz teraz zapisać plik i zabić ten bufor pliku.

Następnym razem, gdy otworzysz ten plik .gpg, zostaniesz poproszony o podanie hasła tylko raz, a następnie kolejne zapisy będą wolne od hasła.

Więcej informacji

  • Oto jeden z postów na blogu, który mówi o ustawieniach emacsa i GPG, do których również możesz się odnieść.
  • EasyPG - emacswiki.org
Kaushal Modi
źródło
Jeśli stracę plik kluczy, czy nadal będę mógł otworzyć zaszyfrowany plik zwykłym hasłem, czy też zostanie utracony na zawsze?
Malabarba
@Malabarba Nie próbowałem tego, ale wierzę, że zaginęło na zawsze. Ale dobrą rzeczą jest to, że plik ten jest generowany tylko raz, gdy skojarzysz wiadomość e-mail i hasło z elementem klucza. Po pierwszym użyciu nie jest modyfikowany, dopóki nie dodasz więcej elementów kluczy (więcej par hasła i par e-mail). Po prostu przechowuję kopie zapasowe tego pliku w kluczu USB i Dropbox i upewniam się, że hasło jest super bezpieczne.
Kaushal Modi
Przetestowałem symetrycznie zaszyfrowane dokumenty, aby były przenośne. Zaszyfrowałem coś w emacsie w Linuksie i otworzyłem to za pomocą jednego z wielu bezpłatnych narzędzi do odszyfrowywania GPG dostępnych dla systemu Windows. Poprosił o brelok i skierował go do mojej kopii zapasowej w Dropbox i działał.
Kaushal Modi
Po prostu FYI: Tak, utrata pliku klucza oznacza, że ​​trwale utracisz również dostęp do zaszyfrowanych plików. Do ich odszyfrowania potrzebujesz zarówno hasła, jak i pliku klucza prywatnego. To część modelu bezpieczeństwa GPG dla szyfrowania asymetrycznego.
Tyler
Wygląda na to, że w końcu będę musiał odpowiedzieć na tę odpowiedź. Czy wiesz, jak mogę zmienić lokalizację pliku kluczy?
Malabarba
9

Okazuje się, że wszystko, co musiałem zrobić, to

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

To rozwiązanie działa zarówno w systemie Linux, jak i Windows, a dzięki uprzejmości Teda i Michaela w help-gnu-emacs.

Malabarba
źródło
Dobrze wiedzieć, że to działa dla Ciebie! Miałem to ustawienie w mojej konfiguracji Emacsa od lat, ale w pewnym momencie po prostu przestało działać. Podejrzewam, że ma to związek z użyciem gnome-keyring-daemon (który działa również jako brelok gpg).
papryka
4
Z dokumentacji dla epa-file-cache-passphrase-for-symmetric-encryption: „Zauważ, że ta opcja nie działa, jeśli używasz GnuPG 2.0”.
Wilfred Hughes