Apa langkah-langkah yang diperlukan untuk cache frasa sandi yang dimasukkan melalui pinentry menggunakan gpg-preset-passphrase di 2.1.15?

8

Saya mencari untuk meng-cache frasa sandi untuk digunakan pada mesin yang tidak dijaga. Karena melakukan hal ini menimbulkan risiko, saya lebih suka memilih frasa sandi mana yang di-cache dan menghindari pengaturan keduanya default-cache-ttldan max-cache-ttluntuk nilai-nilai yang menjengkelkan tinggi serta menghindari perlu menghapus gpg-agentseluruh cache secara berkala - maka saya mencari solusi dengan gpg-preset-passphrase. Beberapa informasi yang saya temukan saat pemecahan masalah merujuk ke versi GnuPG yang lebih lama, jadi saya tidak yakin apakah saya sudah cukup memperhitungkan semua perbedaan.

Pertama, seperti yang ditentukan oleh man 1 gpg-agent, saya miliki export GPG_TTY=$(tty)di .bashrc saya.

Sekarang anggaplah saya menjalankan eval $(gpg-agent --daemon --allow-preset-passphrase --default-cache-ttl 1 --max-cache-ttl 31536000)untuk memulai gpg-agent, mencatat bahwa gpg-preset-passphrase masih menghormati --max-cache-ttl (default 2 jam).

Saya kemudian mendapatkan keygrip $KEYGRIPdari subkey rahasia yang diinginkan gpg --with-keygrip -K.

Dengan itu saya coba /path/to/gpg-preset-passphrase -c $KEYGRIP. Setelah memukul balik, ini mencetak:

   gpg-preset-passphrase: caching passphrase failed: Not implemented

Mencoba lagi menambahkan --verbose --debug 6 --log-file /path/to/gpg-agent.logke gpg-agent, log saya ditambahkan dengan

   gpg-agent[4206] listening on socket /run/user/1000/gnupg/S.gpg-agent
   gpg-agent[4207] gpg-agent (GnuPG) 2.1.15 started
   gpg-agent[4207] handler 0x7f86ef783700 for fd 5 started
   gpg-agent[4207] command PRESET_PASSPHRASE failed: Not implemented
   gpg-agent[4207] handler 0x7f86ef783700 for fd 5 terminated

Saya tidak yakin harus melanjutkan dari mana selain menyelam lebih dalam ke sumbernya, jadi saya bertanya-tanya apakah ada yang bisa memperbaiki langkah yang saya ambil.

pengguna5255922
sumber
Apakah Anda pernah memecahkan ini?
AlMehdi
Saya sedikit yakin frasa sandi harus dikirim ke stdin gpg-preset-passphrase, petunjuk konkret saya yang pertama adalah dari daftar milis ini .gnupg.org
pipermail
bagaimana cara mengirimnya dari stdin, bukannya gema? ini sama sekali tidak terdengar aman
holms

Jawaban:

0

Sepertinya Anda ingin mengirim frasa sandi ke gpg-preset-passphraseover stdin, tanpa menggemakannya (untuk menghindari mengeksposnya dalam daftar proses):

/path/to/gpg-preset-passphrase -c $KEYGRIP <<< $PASSPHRASE

Jika Anda peduli tentang portabilitas di luar bash:

/path/to/gpg-preset-passphrase -c $KEYGRIP <<EOF
$PASSPHRASE
EOF

Jawaban ini tentang sintaks "Dokumen Di Sini" (EOF) sangat berharga bagi saya: https://unix.stackexchange.com/a/88492

Anda juga membutuhkan allow-preset-passphrasedalam Anda ~/.gnupg/gpg-agent.confseperti yang disebutkan oleh holms.

Jika Anda mencari untuk melakukan ini dengan enkripsi simetris (karena saya sudah kehilangan kewarasan saya untuk ini, mungkin Anda tidak harus melakukannya), lihat jawaban saya di sini wrt menemukan keygrip / cacheid yang tepat untuk digunakan untuk mengatur kata sandi di gpg- agen: https://superuser.com/a/1485486/1093343

evnp
sumber