Cache semua kata sandi subkunci gpg sekaligus? Cegah kebutuhan untuk memasukkan banyak kata sandi gpg?

10

Bisakah saya memasukkan kata sandi gpg saya sekali saja dan membuka kunci semua kunci sub saya (penandatanganan, dekripsi, otentikasi)?

Saat ini, saya perlu memasukkan kata sandi gpg saya tiga kali (untuk penandatanganan, untuk dekripsi, untuk otentikasi). Ini tidak nyaman.

Saya mencoba membuat skrip shell.

#!/bin/bash
set -x
set -e
set +o history

signing_key=77BB3C48
encryption_key=CE998547

tempfile="$(mktemp)"
echo "test" > testfile

unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo

exec 3<<<"$passphrase"

gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"

gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"

exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"

Namun sayangnya, dengan cara itu kata sandi gnupg-agent tidak men-cache kata sandi. Bisakah ini diperbaiki?

Sistem Informasi:

  • Ketika tidak menggunakan skrip shell, saya tidak punya masalah dengan gnupg-agent. Ketika saya secara manual menandatangani / mendekripsi file dalam shell, pinentry meminta kata sandi dua kali, kemudian menyimpannya sampai reboot.
  • Menggunakan Debian Wheezy.
  • versi gpg:

dpkg -l | grep gnupg

ii  gnupg                                        1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement
ii  gnupg-agent                                  2.0.22-3                           i386         GNU privacy guard - password agent
ii  gnupg-curl                                   1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement (cURL)
ii  gnupg2                                       2.0.22-3                           i386         GNU privacy guard - a free PGP replacement (new v2.x)

Saya sudah bertanya di milis gnupg-pengguna beberapa waktu lalu, tetapi tidak ada jawaban.

Mungkin jawaban ini akan berhasil? Mungkin gpg-connect-agentdiperlukan?

adrelanos
sumber
Saya terkesan: exec 3<<<"$passphrase"bahkan baru bagi saya ... Dan saya baru saja memberikan hadiah 250 rep pada jawaban yang Anda kutip.
Hauke ​​Laging

Jawaban:

3

Ada daemon gnome-keyring- dan kuda laut yang membuat manajemen kunci & kata sandi sangat mudah.

Pada dasarnya jika Anda menjalankan gnome-keyring-daemon sebagai agen gpg, ia memiliki kemampuan untuk membuka kunci GPG Anda secara otomatis. Ini dilakukan dengan mempertahankan keyring kata sandi, yang berisi kata sandi untuk hal-hal seperti situs web, kunci GPG, kunci SSH, dll. Kata kunci kata sandi ini kemudian diamankan dengan kata sandi itu sendiri. Jadi Anda membukanya, dan keyring gnome membuka semua yang lainnya.
Sebagai bonus tambahan, gnome-keyring-daemon memiliki keyring "login", yang jika itu cocok dengan kata sandi pengguna Anda, maka keyring tersebut secara otomatis akan dibuka ketika Anda masuk.


Konfigurasi

Bagaimana cara kerjanya? Cukup instal gnome-keyring-daemon dan kuda laut. Paket harus melakukan semua konfigurasi sistem untuk Anda. Hanya pastikan Anda tidak mulai lain daemon keyring atau agen GPG . Apapun yang dimulai "kemenangan" terakhir, dan keyring gnome dimulai di tumpukan PAM, sangat awal.

Jika kunci GPG Anda disimpan ~/.gnupg, secara otomatis akan mengambilnya dan bertindak sebagai agen GPG untuk mereka. Hal yang sama berlaku untuk kunci SSH yang disimpan di~/.ssh

Pertama kali Anda mencoba menggunakan kunci pribadi, Anda akan mendapatkan dialog yang terlihat seperti ini: (Saya memicunya dengan baris perintah sederhana gpg -d myfile.gpg) buka kunci tombol
Cukup pilih "Secara otomatis membuka kunci kunci ini setiap kali saya masuk"

Sekarang kita belum benar-benar berbicara tentang kuda laut. Itu karena itu tidak sepenuhnya diperlukan. Semua ini telah dilakukan hanya dengan daemon gnome-keyring-reguler. Namun dengan kuda laut Anda dapat melihat dan mengelola semua kunci & pegas Anda. Dan jika Anda menggunakan otentikasi terpusat (LDAP), Anda harus menggunakannya ketika Anda mengubah kata sandi login Anda untuk juga mengubah kata sandi pada keyring "login" untuk mencocokkannya.

kuda laut - kunci gpg


Kata sandi lainnya

Seperti disinggung sebelumnya, gnome-keyring-daemon juga dapat menyimpan kata sandi situs web. Terakhir kali saya memeriksa chrome mendukung ini, tetapi firefox tidak. Namun ada satu trik untuk membuatnya bekerja.
Secara default Anda akan memiliki 2 keyring, keyring "login", dan keyring "default". Keyring "default" adalah default (karenanya namanya). Tapi ini adalah keyring terpisah, jadi itu tidak secara otomatis tidak terkunci. Di kuda laut, jika Anda mengklik kanan keyring "login", ada opsi untuk "ditetapkan sebagai default". Pilih ini dan itu akan mulai digunakan untuk kata sandi. Saya pribadi hanya menghapus yang "default" dan menggunakan "login" untuk semuanya.

Patrick
sumber
Sayang sekali saya bukan pengguna gnome. Saya lakukan sudo apt-get remove gnupg-agentdan sudo apt-get install gnome-keyring seahorse. Kemudian buat file /etc/X11/Xsession.d/999gnomekeyringdengan konten berikut. eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK(Kalau tidak, gnome-keyring bahkan tidak akan mulai di KDE.) Sekarang, ketika saya menjalankan gpg -d myfile.gpg, saya akan diminta kata sandi dan itu akan di-cache, tetapi saya tidak pernah diminta dengan dialog ini .
adrelanos
(Ini buruk, karena saya kembali ke tempat saya mulai. Kunci penandatanganan akan di-cache secara terpisah.) (Ada garis baru antara eval dan jalur ekspor, tidak mungkin dengan markup komentar di sini.)
adrelanos
Saya juga tidak menggunakan gnome untuk manajer desktop saya. Itu tidak wajib. Gnome melakukan lebih dari sekadar pengelola desktop mereka. Anda tidak harus menambahkan apa pun /etc/X11/Xsession.d. Itu seharusnya dilakukan di tumpukan PAM. Anda harus memiliki session optional pam_gnome_keyring.so auto_startentri dalam satu atau lebih file di /etc/pam.d. Sayangnya saya tidak menggunakan debian jadi saya tidak tahu yang mana. Jika itu tidak ada maka itu masalahnya.
Patrick
Tanpa menambahkan /etc/X11/Xsession.d, ps aux | grep gnomemenunjukkan bahwa gnome-keyring-daemon tidak memulai. (Namun demikian, menghapusnya.) /usr/share/doc/libpam-gnome-keyring/README.DebianMengatakan If you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start(baris baru dihapus oleh se komentar). Apakah itu, ditambahkan ke /etc/pam.d/kdm, restart kdm. Tidak ada beban agen, tidak ada yang tersedia.
adrelanos
Saya bingung. Jika Anda menggunakan kdmdan memasukkannya ke dalam /etc/pam.d/kdm, itu seharusnya dilakukan. Satu-satunya hal yang bisa saya sarankan jika Anda masih ingin mengejar rute ini adalah menggali log. Maaf untuk harapan yang salah, pikir ini akan menjadi solusi sederhana untuk Anda.
Patrick
0

Saya telah melakukan beberapa penyelidikan dan hasilnya mengejutkan bagi saya tetapi sederhana:

Ketika dipanggil dengan cara gpgini tidak berkomunikasi gpg-agent sama sekali ! gpgmampu melakukan semua operasi ini sendiri.

Tetapi jika gpg-agentbahkan tidak tahu bahwa sesuatu telah terjadi, maka sulit untuk mengetahui frasa sandi yang tidak diketahui sebelumnya.

Hauke ​​Laging
sumber
Sepertinya saya menemukan cara, bagaimana ini tidak dapat diselesaikan.
adrelanos
Pertanyaan asli saya masih terbuka. (Yaitu Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?) Saya harap memasukkan kata sandi ke dalam gpg-agentatau gpg-connect-agententah bagaimana mungkin.
adrelanos