Bagaimana cara memiliki frasa sandi yang berbeda untuk subkunci gpg?

16

Saya perlu mengotomatiskan proses penyebaran dan alat ini akan menandatangani artefak rilis secara otomatis. Cincin kunci saya memiliki kunci utama yang saya gunakan hanya untuk membuat subkunci, dan dua subkunci. Satu subkunci untuk penandatanganan dan satu untuk enkripsi.

Saat ini ada frase lulus tunggal untuk semua kunci. Saya tidak ingin menentukan frasa sandi ini dalam file konfigurasi karena itu akan berisiko kunci utama juga.

Jadi saya pikir saya akan menetapkan frasa sandi yang berbeda untuk subkunci dengan melakukan:

$ gpg --edit-key [subkey-id]
gpg> passwd
gpg> save

Tetapi ini mengubah frasa sandi untuk kunci lain juga.

Bagaimana saya bisa menetapkan frase sandi terpisah untuk kunci individual?

Kshitiz Sharma
sumber

Jawaban:

14

Menyiapkan frasa sandi individual untuk subkunci tidak dimungkinkan dengan GnuPG. Tapi ada solusinya, yang bahkan terlihat seperti ide praktik yang baik dalam kasus ini:

  1. Mengekspor subkunci pilihan (dalam contoh, subkunci memiliki ID 0xDEADBEEF). Jangan lupa tanda seru, itu memastikan GnuPG benar-benar bekerja dengan subkunci itu sendiri dan bukan dengan kunci primer miliknya!

    gpg --export-secret-subkeys 0xDEADBEEF! >subkeys.pgp
    

    Subkunci akan memiliki kunci primer publik dan "kunci-rintisan" primer pribadi terlampir, tetapi bukan kunci primer pribadi itu sendiri.

  2. Impor subkunci ke direktori home GnuPG lain. Contohnya mengharapkan Anda berada di direktori root proyek Anda dan memiliki folder etcuntuk hal-hal seperti keyring ini di sana.

    gpg --homedir ./etc/gnupg --import subkeys.pgp
    
  3. Ubah frasa sandi dari subkunci yang dipisahkan.

    gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
    
  4. Alih-alih menggunakan keyring "normal" Anda, selalu merujuk ke direktori GnuPG terpisah seperti yang disebutkan di atas.

Sebagai alternatif, Anda mungkin ingin mempertimbangkan untuk membuat kunci proyek yang Anda tandatangani dengan kunci Anda sendiri. Ini mungkin memiliki keuntungan bahwa kontributor / pengguna lain juga dapat menandatangani kunci (dan dengan demikian menyatakan bahwa ini memang kunci yang digunakan untuk proyek), dan menyerahkan proyek mungkin lebih mudah jika ada orang lain yang mengambil alih pemeliharaan.

Jens Erat
sumber
1
Ini tidak berfungsi dengan GnuPG 2.2.4. Gagal mengatakan "Perlu kunci rahasia untuk melakukan ini." Sangat menyedihkan: '(
steinybot
Jadi saya perlu menggunakan kunci gpg tanpa kata sandi untuk penandatanganan repo otomatis?
SuperSandro2000
Tidak, Anda juga dapat melakukan pra-cache frasa sandi menggunakan gpg-agent. Lihatlah gpg-preset-passphrase.
Jens Erat
5

Arsip surat gnupg.org yang sangat ketinggalan zaman menjelaskan pemecahan yang canggung untuk membuat kata sandi terpisah untuk subkunci .
Ini menyiratkan kendala tidak dalam struktur data dari set-kunci (yaitu pengelompokan subkey master) tetapi hanya dalam antarmuka perangkat lunak untuk membangun dan memodifikasi set kunci.

Kutipan dari referensi:

Hai,

apakah mungkin untuk memiliki kunci utama dan beberapa subkunci dengan subkunci yang memiliki frasa sandi yang berbeda (misalnya yang lebih pendek) dari kunci utama?

Apa yang mungkin Anda cari adalah mainkey offline (lihat --export-secret- subkey). Tetapi jawabannya adalah: ya. gpg-agent tidak peduli dengan koneksi kunci. Ia meminta Anda bahkan untuk frasa sandi yang sama beberapa kali (untuk komponen yang berbeda dari kunci yang sama).

Tetapi GnuPG tidak mendukung ini secara langsung.

1) Ekspor kunci rahasia (--ekspor-rahasia-kunci tanpa --armor)

2) ubah frasa sandi

3) Ekspor lagi (ke file yang berbeda, tentu saja)

4) Gunakan gpgsplit pada kedua file (di direktori yang berbeda). Hasilnya terlihat seperti ini:

000001-005.secret_key 000002-013.user_id 000003-002.sig 000004-007.secret_subkey 000005-002.sig

5) Sekarang Anda mencampur komponen dari dua kelompok: mkdir mv a / 000001 * a / 000002 * a / 000003 * gabungan / mv b / 000004 * b / 000005 * gabungan / cd gabungan / kucing *> different_passphrases.gpg

6) Hapus kunci dari pemisahan: --delete-secret-key

7) Impor yang baru: gpg --import different_passphrases.gpg

Hauke ​​Laging

Saya belum secara pribadi mengkonfirmasi operasi ini - hanya melaporkan apa yang telah saya baca.

Kurangnya spesifikasi dan diskusi dalam dokumentasi GnuPG tentang topik penting ini mengecewakan.

Craig Hicks
sumber