Bagaimana Anda mencadangkan kunci pribadi GPG dengan aman?

25

Saya menemukan manajer kata sandi CLI yang sangat menarik bernama pass . Untuk menggunakannya, Anda menghasilkan pasangan kunci GPG2, dan menggunakan alat ini untuk membantu Anda menyimpan kata sandi dalam file terenkripsi gpg2.

Untuk mengenkripsi file (menambahkan kata sandi baru), ia menggunakan kunci publik.

Untuk mendekripsi file (mengambil kata sandi yang disimpan), ia menggunakan kunci pribadi, yang memerlukan kata sandi.

Ini sangat bagus.

Sekarang alat ini menyimpan semua kata sandi saya, saya ingin membuat cadangan semua data ini sehingga jika komputer saya mogok, saya tidak akan dikunci dari semua akun online saya.

Alat ini terintegrasi dengan baik dengan git, jadi saya dapat dengan mudah mendorong file .gpg ke repo git pribadi saya di komputer yang berbeda. Dari apa yang saya mengerti, file-file ini tidak berguna tanpa kunci pribadi untuk mendekripsi mereka.

Pertanyaan saya adalah ini: bagaimana cara membuat cadangan kunci privat dan publik dengan cara yang aman, sehingga saya dapat mengembalikan "database" di komputer lain jika diperlukan? Bisakah saya menyimpan kunci publik dan pribadi di git repo saya, dan mengimpornya di mesin lain di lain waktu? Atau apakah dianggap praktik yang tidak aman untuk menyimpan kunci privat dalam repo git pribadi dan lokal? Repo git memerlukan kata sandi untuk mengakses. Kunci pribadi dienkripsi, dan memerlukan kata sandi untuk dibuka - apakah itu membuatnya aman untuk disimpan?

Tal
sumber

Jawaban:

10

Menyimpan kunci pribadi PGP dalam sistem kontrol revisi tidak dengan sendirinya menimbulkan masalah keamanan yang signifikan. Menyimpan kunci privat di repositori git lokal, privat (tidak dipublikasikan) seharusnya tidak memiliki implikasi keamanan yang signifikan dibandingkan dengan menyimpan kunci privat di komputer yang sama tetapi di luar repositori git.

Satu-satunya masalah yang dapat saya pikirkan yang berasal dari menyimpan kunci privat dengan cara yang dikontrol versi adalah bahwa kecuali Anda dapat menghancurkan revisi lama, perubahan frasa sandi utama memberi Anda perlindungan yang jauh lebih sedikit daripada yang seharusnya.

Apa yang dapat terjadi dengan serangkaian implikasi keamanannya sendiri adalah menyimpan kunci pribadi sedemikian rupa sehingga orang lain mungkin bisa mendapatkan akses ke file kunci. Dalam situasi seperti itu, yang ada di antara penyerang dan kunci Anda adalah kekuatan frasa sandi.

Menyadari bahwa keamanan penyimpanan tidak sempurna, dan bahkan lebih lagi di lingkungan modern di mana orang-orang secara teratur kembali ke layanan cloud (yang secara harfiah diterjemahkan berarti "komputer orang lain"), kami biasanya melindungi kunci rahasia kami dengan frasa sandi. Saya percaya itu, bahkan jika Anda menjalankan misalnya gpg-agent, Anda melakukan hal yang sama.

Intinya adalah, selama kata sandi Anda bagus, bahkan menyimpan salinan file kunci terenkripsi di komputer orang lain harus relatif aman.

Namun, itu cukup besar jika: kata sandi atau frasa sandi kebanyakan orang agak buruk sejauh upaya terkomputerisasi untuk memecahkannya. GnuPG berusaha cukup lama untuk mencoba bekerja sebaik mungkin dengan apa yang Anda berikan, tetapi untuk perlindungan data yang solid, Anda memerlukan kata sandi yang baik, dan Anda perlu mengaturnya sebelum mengimpor kunci privat ke dalam repositori git. Setelah kunci diimpor, penyerang pada prinsipnya dapat menyerang versi apa pun darinya, dan jika mereka memiliki alasan untuk meyakini bahwa revisi tertentu memiliki frasa sandi berkualitas rendah kemungkinan besar akan berlaku untuk itu. Untuk alasan itu, pastikan Anda memilih kata sandi dengan hati-hati. Saya telah menulis primer kecil tentang cara menangani kata sandi, termasuksaran tentang cara memilih kata sandi atau frasa sandi yang perlu Anda ingat , yang mungkin berguna bagi Anda.

sebuah CVn
sumber
6

Saya telah mempertimbangkan pengaturan serupa baru-baru ini. Sebelum menangani pertanyaan Anda, izinkan saya menunjukkan apa yang mengganggu saya tentang hal itu. Ini dijelaskan secara panjang lebar di sini . Dalam jangka pendek ketika Lulus panggilan GPG, ia melakukan yang tidak perlu asimetris (RSA / EC) kripto di bawah tenda. Tidak perlu - karena tidak ada pihak yang tidak dipercaya di sini.

Ini menjengkelkan karena kripto asimetris kurang tahan di masa depan daripada kripto simetris. Misalnya, kripto asimetris saat ini rusak oleh komputer kuantum yang cukup besar, yang belum ada. Lebih umum, kripto asimetris bergantung pada "masalah matematika" yang kita tidak tahu bagaimana menyelesaikannya, lebih dari kripto simetris.

Untuk mengurangi kelemahan ini, paling tidak yang bisa Anda lakukan adalah menjaga kunci publik GPG Anda digunakan dengan Pass juga, karena misalnya serangan potensial (potensial) memerlukan kunci publik ini: lihat di sini .

Mengenai pertanyaan Anda yang sebenarnya, tidak jelas apakah Anda bermaksud menyimpan git repo (dengan kata sandi) secara publik atau pribadi. Jika Anda ingin merahasiakannya, Anda dapat melakukan apa saja yang Anda inginkan, dan mengurangi keamanan kunci pribadi GPG dengan media di mana Anda membuat cadangan repo. Namun, itu bisa menjadi masalah ayam dan telur: jika repo itu pribadi, bagaimana Anda mendapatkannya kembali jika terjadi kecelakaan? Dengan kata lain, jika terjadi "kecelakaan buruk", pasti ada sesuatu yang Anda ambil terlebih dahulu . Jadi Anda mungkin ingin merahasiakan git repo, tetapi buat cadangan kunci GPG sedemikian rupa sehingga Anda dapat mengambilnya terlebih dahulu, terlepas dari apa pun.

Solusi pencadangan offline banyak, pengacara, ruang bawah tanah, dll lihat di sini . Tapi ruang bawah tanah bukan untuk semua orang, jadi izinkan saya menyarankan solusi online:

  • Buat frasa sandi yang sangat kuat yang tidak dimaksudkan untuk diketik selama bertahun-tahun. Saran: Panjang salah mengeja ungkapan yang memiliki arti pribadi, atau dari buku yang tidak akan kehabisan salinan jika Anda perlu mencarinya.

  • Buat bola tar dengan kunci rahasia GPG yang diekspor, dan mungkin kredensial SSH Anda.

  • Mengenkripsi simetris dengan passphrase Anda: gpg --symmetric --armor.

  • Buat akun git hosting gratis.

  • Buat repositori publik , yang dapat dikloning tanpa kredensial.

  • Letakkan bola tar terenkripsi & lapis baja di sana.

Untuk mengambilnya setelah "kerusakan parah":

  • Boot tongkat USB langsung.

  • Klon repo publik.

  • gpg --decrypt.

Frasa sandi simetris akan menjadi perlindungan utama Anda melawan zombie. Orang-orang terkadang tidak memberi Anda, atau pembaca anonim, manfaat keraguan ketika harus memilih frasa sandi. Tetapi dengan frasa sandi yang baik, kripto simetris harus solid.

Saat Anda mengekspor kunci pribadi GPG Anda, kunci itu akan dienkripsi dengan frasa sandi sendiri. Versi terbaru GPG tidak akan mengizinkan ekspor yang tidak terenkripsi. Anda dapat menggunakan frasa sandi "biasa" GPG Anda di sini. Ingatlah bahwa jika terjadi kerusakan, Anda akan membutuhkan kedua frasa sandi untuk mendapatkan kunci pribadi GPG Anda.

Matei David
sumber
4

Pilihan lain yang saya gunakan adalah: Cetak kunci Anda di atas kertas .

Detailnya ada di jawaban yang ditautkan. Keuntungan besar adalah: Anda dapat dengan mudah menyimpannya di mana pun Anda inginkan dan Anda dapat memeriksa apakah kemungkinan masih dalam kondisi baik dengan hanya melihatnya. Tetapi keuntungan terbesar adalah: Tidak ada yang bisa meretasnya tanpa benar-benar secara fisik berada di tempat Anda menyimpan cadangan dan mengambilnya.

Josef berkata Reinstate Monica
sumber
Sejauh yang saya lihat, kertas tidak memiliki keunggulan dibandingkan media yang dapat dilepas dalam kasus ini, dan kerugiannya adalah jika Anda perlu memulihkan kunci, Anda harus mengetikkan semua omong kosong untuk kunci tersebut.
PETA
Keuntungannya, jauh lebih tahan lama dan Anda dapat memeriksa apakah masih dapat dibaca dengan mata Anda sendiri tanpa komputer. Jika saya memiliki satu dolar untuk setiap floppy disk, CD atau DVD yang saya gunakan yang sekarang memiliki kesalahan data yang tidak dapat dipulihkan, saya bisa pergi dengan holliday dengan uang itu. Anda tidak perlu mengetik apa pun! PaperBack mencetaknya sebagai kode 2D dengan koreksi kesalahan ditambahkan. Anda cukup memindai atau memotretnya dan program mengubahnya kembali menjadi apa pun yang Anda berikan untuk dicetak sebelumnya.
Josef mengatakan Reinstate Monica
Dengan asumsi, tentu saja, bahwa Anda masih memiliki teknologi untuk melakukan itu.
PETA
Nah, probabilitas bahwa saya dapat dengan mudah mendapatkan Windows VM atau Linux dengan Wine dengan salinan perangkat lunak Open-Source dalam 20 tahun adalah menurut saya jauh lebih tinggi daripada probabilitas bahwa saya bisa mendapatkan perangkat keras untuk membaca floppy disk / CD /DVD. Anggap saja saya melakukan itu tahun 1990. Sekarang saya bahkan dapat menjalankan perangkat lunak dari dulu di browser saya . Tapi semoga berhasil mendapatkan perangkat keras yang memungkinkan Anda membaca disket 5 1/4 inci dengan PC modern Anda.
Josef berkata Reinstate Monica
2

Jawaban lain untuk ini adalah "offline", yaitu menyimpannya di beberapa tempat yang aman dan tidak terhubung ke komputer mana pun. Saya menyimpan salinan penuh dari semua kunci saya pada floppy disk yang tidak terenkripsi (saya sudah melakukannya sejak lama, sekarang sudah menjadi kebiasaan) di brankas di bank. Alasan saya membuat mereka tidak terenkripsi di media di bank adalah bahwa satu skenario potensial untuk "kehilangan" kuncinya adalah melupakan frasa sandi (frasa pass saya cenderung memiliki banyak tanda baca dan ejaan yang aneh, dan melupakan salah satu dari mereka yang membuatnya. tidak dapat digunakan). Saya tidak pernah terpaksa mengambilnya kembali dari salinan itu, tetapi saya merencanakan yang terburuk.

Selain itu, ada pencabutan kunci di media dan catatan yang memberi tahu ahli waris saya tentang apa yang harus dilakukan dengannya, jika saya tidak lagi tersedia.

PETA
sumber
Jika Anda mencadangkan kunci pribadi penandatangan master, tidak bisakah itu digunakan untuk menghasilkan sertifikat pencabutan? Dalam skenario apa berguna mencadangkan sertifikat pencabutan?
Matei David
Ah ya, tetapi Anda harus mengerti bahwa saya tidak dapat memastikan bagaimana orang yang mengerti komputer akan mengeksekusi permintaan tersebut (perhatikan bahwa bukan saya yang akan menggunakannya, tetapi "ahli waris saya"). Jadi pencabutan sudah dibuat dan instruksi "hanya mengirim email dengan file ini terlampir" kecil kemungkinannya akan salah kelola.
PETA
@MateiDavid Membuat sertifikat pencabutan saat Anda awalnya membuat pasangan kunci, dan menyimpan sertifikat pencabutan itu, memungkinkan Anda untuk mencabut kunci jika kunci menjadi tidak tersedia bagi Anda. Ada skenario yang valid di mana ini bisa terjadi. Tentu saja, Anda harus menjaga sertifikat pencabutan dengan sangat baik, karena siapa pun yang memperolehnya dapat mempublikasikannya sehingga mencabut pasangan kunci Anda. Namun saya tidak begitu yakin bagaimana sertifikat pencabutan berlaku untuk situasi OP.
CVn
Ya, kami telah melewati lubang tikus. Saya minta maaf, saya menyebutkan sertifikat pencabutan hanya untuk kelengkapan dalam uraian langkah-langkah yang saya ambil, dan tidak ada hubungannya dengan pertanyaan awal.
PETA