Cara mengetik kata sandi file .gpg hanya saat membukanya

17

(Saya mengerti implikasi keamanan berikut ini, dan saya setuju dengan mereka.)

Saya memiliki satu file terenkripsi dalam direktori org saya diary.org.gpg,. Saya tidak pernah melakukan konfigurasi khusus untuk berfungsi, masih

  1. Setiap kali saya mengunjungi file, saya diminta untuk memasukkan kata sandi enkripsi. Bagus sekali.
  2. Setiap kali saya menyimpan buffer, saya diminta kata sandi lagi dua kali. Itu masalah saya .

Perhatikan bahwa saya belum mengonfigurasi apa pun agar ini berfungsi, jadi jawaban apa pun mengenai agen atau keyrings harus disertai dengan petunjuk konfigurasi.

Saya berpikir untuk membuat kata sandi tertulis di suatu tempat di dalam file (di header atau komentar akhir file). Kemudian, setiap kali saya menyimpan, Emacs bisa membaca kata sandi di buffer dan menggunakannya daripada meminta saya. Tetapi ketika saya mulai melihat ini, saya benar-benar tersesat di suatu tempat di dalam epa.el.

T: Bagaimana saya bisa mengirim kata sandi langsung dari Emacs ke sistem / proses enkripsi saat menyimpan buffer, alih-alih diminta?

Semua yang lain (menemukan kata sandi di buffer) saya bisa mencari tahu sendiri. Saya baru saja tersesat ketika mencoba memahami bagaimana Emacs berinteraksi dengan gpg.

Perhatikan bahwa saya menggunakan Ubuntu, Arch Linux, dan Windows. Itulah sebabnya ide pertama saya adalah solusi emacs-centric.
Saya dapat hidup dengan solusi yang tidak berfungsi pada Windows, selama saya masih dapat mengakses file di dalamnya dengan cara manual.

Malabarba
sumber
Saya rasa ini: orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5 adalah yang Anda inginkan (agen gpg).
wvxvw
@ wvxvw Mungkin. Itu tidak mengatakan apa-apa tentang menabung, jadi saya harus mencobanya.
Malabarba
Sejujurnya, GPG dan program terkait memiliki antarmuka pengguna yang sangat buruk. Sangat sulit untuk memahami apa yang mereka lakukan dari antarmuka atau dokumentasi. Tetapi pemahaman saya tentang tujuannya gpg-agentadalah sama dengan ssh-agenthanya menyimpan kata sandi yang Anda miliki, setelah Anda mengaktifkannya. Jadi Anda tidak akan dimintai kata sandi saat Anda membuka file, atau ketika Anda menyimpannya (selama agen mengingat kata sandi), tapi saya tidak berpikir ini meluas ke frasa sandi, yang agak bodoh , jika benar.
wvxvw
Anda mungkin ingin mengatur dengan gpg-agentbenar, sehingga cache kunci untuk sementara waktu? :)
Günther Noack
1
@ wvxvw Mungkin itu dulu? Saya menemukan halaman manual alat tersebut cukup rinci dan antarmuka (CLI) adalah apa yang biasanya diharapkan dari program berbasis terminal.
legends2k

Jawaban:

12

Enkripsi menggunakan kata sandi + kunci

Ini tidak menyimpan kata sandi secara langsung dalam file tetapi melakukan sesuatu yang serupa tanpa risiko keamanan dan membantu Anda mencapai apa yang Anda inginkan.

  • Anda perlu menggunakan enkripsi asimetris sehingga kata sandi Anda dikaitkan dengan ID email dalam keyring .

  • Simpan di bawah ini di bagian atas file .gpg Anda

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

Kata sandi diminta saat pertama kali file disimpan / dibuat. Tetapi setelah itu kata sandi diminta hanya sekali setiap kali Anda membuka file yang disimpan

Satu-satunya tangkapan adalah bahwa Anda tidak boleh kehilangan file keyring yang disimpan ~/.gnupg/secara default.

Pengaturan GPG

Pengaturan Emacs

Tidak ada pengaturan yang perlu dilakukan untuk ini dalam emacs.

Pengaturan sistem

Tetapi Anda perlu memiliki lingkungan sistem Anda siap dengan beberapa perpustakaan untuk fitur GPG untuk bekerja.

Pada saat menyiapkan ini, saya harus menginstal yang berikut:

  • 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

Saya membutuhkan satu atau dua perpustakaan di atas dan saya akhirnya menginstal yang lain karena mereka adalah dependensi wajib atau opsional.

Setelah semuanya terinstal, lakukan

> gpg --gen-key

Dan buat kunci yang tidak pernah kedaluwarsa untuk diri Anda sendiri dan kaitkan dengan nama dan email asli Anda.

Kunci yang dihasilkan akan disimpan di ~/.gnupg/direktori Anda .

Mengubah lokasi keyring

Anda dapat mengubah lokasi keyring dengan mengubah $GNUPGHOME, menggunakan --homediratau --keyringopsi untuk gpg.

Dari man gpg:

--keyring file

Tambahkan file ke daftar keyrings saat ini. Jika file dimulai dengan tilde dan slash, ini digantikan oleh direktori $ HOME. Jika nama file tidak mengandung garis miring, diasumsikan berada di direktori home GnuPG ("~ / .gnupg" jika --homedir atau $ GNUPGHOME tidak digunakan).

Perhatikan bahwa ini menambahkan keyring ke daftar saat ini. Jika tujuannya adalah untuk menggunakan keyring yang ditentukan saja, gunakan --keyring bersama dengan --no-default-keyring.

Menggunakan GPG dengan emacs

Di emacs, Anda cukup membuat file dengan .gpgekstensi. Misalnya, jika file tersebut asli auth.el, Anda akan mengganti nama menjadi auth.el.gpg.

Tempatkan baris ini di bagian atas file:

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

Perhatikan bahwa saya telah menggunakan karakter komentar elisp ;;seperti contoh file di sini auth.el.gpg.

Gunakan alamat email persis yang Anda gunakan pada saat pembuatan kunci.

Saat Anda mencoba menyimpannya, emacs akan menampilkan prompt ini di buffer:

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

Arahkan titik ke garis yang berisi kunci, tekan m.

Arahkan titik ke [OK]tombol dan tekan <return>.

Anda sekarang dapat menyimpan file dan membunuh buffer file itu.

Lain kali ketika Anda membuka file .gpg itu, Anda akan diminta untuk memasukkan kata sandi sekali saja dan kemudian penyimpanan yang berurutan akan bebas kata sandi.

Info lebih lanjut

Kaushal Modi
sumber
Jika saya kehilangan file kunci, apakah saya masih dapat membuka file yang dienkripsi dengan kata sandi yang biasa atau apakah hilang selamanya?
Malabarba
@Malabarba saya belum mencobanya tapi saya yakin itu hilang selamanya. Tetapi hal baiknya adalah bahwa file itu dihasilkan hanya sekali ketika Anda mengaitkan email dan kata sandi dengan elemen keyring. Itu tidak diubah setelah pertama kali sampai Anda menambahkan lebih banyak elemen keyring (lebih banyak kata sandi + pasangan email). Saya hanya menyimpan cadangan file itu di kunci USB dan Dropbox dan memastikan kata sandinya sangat aman.
Kaushal Modi
Saya telah menguji dokumen yang dienkripsi secara simetris menjadi portabel. Saya mengenkripsi sesuatu dalam emacs di Linux dan membukanya menggunakan salah satu dari banyak alat dekripsi GPG gratis yang tersedia untuk windows. Ia meminta keyring dan mengarahkannya ke cadangan saya di Dropbox dan berhasil.
Kaushal Modi
Hanya FYI: Ya, kehilangan file kunci berarti Anda secara permanen juga kehilangan akses ke file yang dienkripsi. Anda memerlukan kata sandi dan file kunci pribadi untuk tidak mengenkripsi mereka. Itu bagian dari model keamanan GPG untuk enkripsi asimetris.
Tyler
Sepertinya aku harus pergi dengan jawaban ini. Apakah Anda tahu bagaimana saya bisa mengubah lokasi file kunci?
Malabarba
9

Ternyata yang harus saya lakukan adalah

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

Solusi ini berfungsi pada Linux dan Windows, dan merupakan bantuan Ted dan Michael di help-gnu-emacs.

Malabarba
sumber
Senang mengetahui bahwa ini bekerja untuk Anda! Saya memiliki pengaturan ini dalam konfigurasi Emacs saya selama bertahun-tahun, tetapi pada beberapa titik itu hanya berhenti berfungsi. Saya menduga itu ada hubungannya dengan penggunaan gnome-keyring-daemon (yang juga bertindak sebagai gpg keyring).
paprika
4
Dari dokumentasi untuk epa-file-cache-passphrase-for-symmetric-encryption: "Perhatikan bahwa opsi ini tidak berpengaruh jika Anda menggunakan GnuPG 2.0."
Wilfred Hughes