Cadangan offsite terenkripsi menggunakan GPG dengan kunci pribadi tidak pernah di server cadangan?

11

Saya memiliki server cadangan, yang membuat arsip pohon direktori xzterkompresi taruntuk dicadangkan. Arsip tar ini dapat menjadi sangat besar (beberapa TB), splitmenjadi beberapa bagian (2.5TB), dan masing-masing bagian dituliskan ke kaset KPP-6, dan kaset-kasetnya dikeluarkan di luar lokasi.

Sekarang saya ingin menambahkan enkripsi. Saya dapat GPG mengenkripsi arsip tar sebelum dipisah, menggunakan enkripsi kunci publik-pribadi, dan dengan satu atau lebih penerima (kunci publik admin).

Namun, dalam hal pemulihan, setidaknya satu admin perlu memasukkan kunci pribadinya ke server cadangan, karena file terlalu besar untuk dibongkar di tempat lain.

GPG menggunakan skema enkripsi hybrid di bawah tenda, dengan cipher simetris seperti AES dengan kunci sesi, dan hanya kunci sesi yang mendapatkan kunci publik-pribadi yang dienkripsi untuk penerima.

Apakah ada cara untuk membiarkan admin menyediakan kunci sesi untuk mendekripsi file yang akan dipulihkan tanpa meletakkan kunci pribadi ke server cadangan ?


Saya dapat menemukan kembali roda, tentu saja:

  • buat kunci sesi acak di server cadangan per setiap file yang akan dicadangkan
  • gunakan enkripsi simetris GPG untuk mengenkripsi file
  • gunakan enkripsi asimetris GPG untuk mengenkripsi kunci sesi untuk setiap penerima

Tetapi apakah ada cara "standar" atau builtin atau praktik terbaik untuk mencapai di atas?

oberstet
sumber

Jawaban:

18

Ini sangat mungkin dengan opsi --show-session-keydan --override-session-key.

Pertama, Anda perlu awal file terenkripsi Anda. Di sinilah kunci sesi terenkripsi disimpan.

root@qwerty:~/gpg# head -c 1024k bigfile.gpg > head.gpg

Kemudian salin ke workstation Anda dan ambil kunci sesi

PS C:\Users\redacted\Downloads> gpg --show-session-key .\head.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <[email protected]>"
gpg: session key: '9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D'

Sekarang Anda dapat mendekripsi file menggunakan kunci sesi Anda

root@qwerty:~/gpg# gpg -d -o bigfile --override-session-key 9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D bigfile.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <[email protected]>"
IsAGuest
sumber
itu solusi yang sangat keren untuk masalah ini
Lars
Terima kasih!! Trik yang bagus dengan headdan semacamnya. Pendekatan ini mengatasi gatal asli saya.
oberstet
4

Sepertinya sebagian besar pertanyaan Anda telah dijawab, namun, jika Anda tim administrator waspada terhadap kunci pribadi yang berakhir di luar kendali lokal mereka, Anda mungkin mempertimbangkan sshfsuntuk memasang backup jarak jauh melalui sesi ssh.

Instal via apt pada setiap sistem administrator jarak jauh

sudo apt-get install sshfs

Dengan asumsi konfigurasi ssh admin terlihat seperti di bawah ini

# configuration for ssh login to remote server
Host Remote
    Hostname Remote.web.domain
    User admin
    IdentityFile ~/.ssh/private.key

Kemudian admin Anda dapat menggunakan sesuatu seperti di bawah ini untuk pemasangan

# make a mount point
mkdir -p /mnt/remote
# mount remote directory to local file system
sshfs Remote:/path/to/encrypted/dir /mnt/remote

Untuk melepas setelah pemeriksaan, administrator jarak jauh dapat menggunakan yang berikut ini

fusermount -u /mnt/remote

Sedikit manis tentang menggunakan sshfs adalah bahwa hanya kunci publik untuk GnuPG dan ssh diperlukan di server jarak jauh, kunci pribadi terkait tetap pada sistem yang memiliki mereka. Bit bagus kedua adalah bahwa sampai membaca atau mengakses sebagian besar info file tetap pada sistem file terkait.

Jika Anda masih mencari alat untuk memudahkan enkripsi log atau direktori secara otomatis, Anda mungkin ingin memeriksa prof alat konsep yang saya dorong ke GitHub (khususnya Skenario Empat yang ditulis untuk sshsfpenggunaan) yang dengan sedikit penyesuaian akan dengan senang hati mengenkripsi hampir semua data melalui GnuPG. Tetapi berhati-hatilah karena ini eksperimental dan beberapa fitur itu dapat menyebabkan korupsi data jika disalahgunakan. Kode sumber kurang dari ~ 1600 ~ baris sehingga sangat mungkin untuk mengaudit dalam waktu kurang dari akhir pekan.

Keamanan tambahan dapat diperoleh dengan mengatur konfigurasi ssh server jarak jauh untuk chroot pengguna agar hanya memungkinkan akses ke direktori terenkripsi dan menonaktifkan shell interaktif untuk kunci admin yang digunakan dalam mode ini.

S0AndS0
sumber
2

Jika Anda ingin kunci rahasia dijauhkan dari hard disk, Anda dapat membuat ramdisk (ingat itu?) Dan memuat kunci rahasia di sana dari lokasi aman bukan-server yang diperlukan. Gunakan untuk mendekripsi dan ketika selesai menimpanya dengan / dev / random. Rahasianya harus masuk ke RAM untuk digunakan oleh GPG, jadi mengapa tidak dua kali?

Jika Anda tidak dapat membiarkan kunci rahasia berada di server, bahkan dalam RAM, maka Anda memiliki ketidakmungkinan teknis. GPG harus memiliki kunci rahasia di suatu tempat untuk mendekripsi apa pun.

Info Ramdisk: /unix/66329/creating-a-ram-disk-on-linux

Steve Bonds
sumber
2
GPG menggunakan rahasia simetris per pesan ("kunci sesi") yang berbeda untuk setiap pesan yang dienkripsi. Kunci simetris inilah yang secara teknis perlu ada pada mesin yang mendekripsi pesan masing-masing. Saya ingin menjaga kunci pribadi GPG (asimetris) offline. Yang terakhir digunakan oleh GPG untuk mengenkripsi kunci sesi simetris. Jadi saya mengincar skema yang memanfaatkan aspek-aspek ini ...
oberstet