Apa solusi yang baik untuk mengenkripsi beberapa file di unix? [Tutup]

44

Saya mencari utilitas untuk mengenkripsi direktori tertentu di Linux. Saya tidak mencari layanan enkripsi disk lengkap, tetapi hanya mengenkripsi beberapa direktori untuk keperluan menyimpan file di cloud. Setelah mengambil mereka, saya harus mendekripsi mereka sebelum dapat diakses. Mencari untuk melakukan ini untuk beberapa direktori (ukuran beberapa ratus GB). Ada ide? Lebih disukai berbasis CLI.

Peter
sumber

Jawaban:

51

Saya hanya menggunakan GnuPG untuk tugas ini. Folder-folder tersebut pertama kali dikemas ke dalam arsip TAR-GZ:

tar czf files.tar.gz /path/to/my/files

Jika belum dilakukan, Anda perlu membuat pasangan kunci publik / publik GPG terlebih dahulu:

gpg --gen-key

Ikuti petunjuk. Standarnya harus memadai untuk tes pertama. Sesuatu seperti ini akan muncul:

gpg (GnuPG) 2.0.18; Hak Cipta (C) 2011 Free Software Foundation, Inc.
Ini adalah perangkat lunak gratis: Anda bebas untuk mengubah dan mendistribusikannya.
TIDAK ADA GARANSI, sejauh diizinkan oleh hukum.

Silakan pilih jenis kunci yang Anda inginkan:
   (1) RSA dan RSA (default)
   (2) DSA dan Elgamal
   (3) DSA (hanya masuk)
   (4) RSA (tanda saja)
Pilihan Anda? 1
Panjang kunci RSA mungkin antara 1024 dan 4096 bit.
Apa ukuran kunci yang Anda inginkan? (2048) 4096
Ukuran kunci yang diminta adalah 4096 bit
Silakan tentukan berapa lama kunci tersebut valid.
         0 = kunci tidak kedaluwarsa
        = kunci kedaluwarsa dalam n hari
      w = kunci kedaluwarsa dalam n minggu
      m = kunci kedaluwarsa dalam n bulan
      y = kunci kedaluwarsa dalam n tahun
Kunci ini valid untuk? (0)
Kunci tidak kedaluwarsa sama sekali
Apakah ini benar? (y / T) y

GnuPG perlu membuat ID pengguna untuk mengidentifikasi kunci Anda.

Nama asli: Kunci Enkripsi File
Alamat email: [email protected]
Komentar: Kunci Enkripsi File
Anda memilih USER-ID ini:
    "Kunci Enkripsi File (Kunci Enkripsi File)"

Ubah (N) ame, (C) omment, (E) mail atau (O) kay / (Q) uit? Hai

Anda akan dimintai kata sandi untuk kunci tersebut. Sangat disarankan untuk menggunakan yang kuat. Itu tidak diperlukan untuk enkripsi file, jadi jangan khawatir tentang penggunaan batch nanti.

Jika semuanya selesai, sesuatu seperti ini akan muncul di layar Anda:

Kita perlu menghasilkan banyak byte acak. Ini adalah ide yang baik untuk dilakukan
beberapa tindakan lain (ketik pada keyboard, gerakkan mouse, gunakan
disk) selama generasi utama; ini memberikan angka acak
generator peluang yang lebih baik untuk mendapatkan entropi yang cukup.
Kita perlu menghasilkan banyak byte acak. Ini adalah ide yang baik untuk dilakukan
beberapa tindakan lain (ketik pada keyboard, gerakkan mouse, gunakan
disk) selama generasi utama; ini memberikan angka acak
generator peluang yang lebih baik untuk mendapatkan entropi yang cukup.
gpg: kunci FE53C811 ditandai sebagai yang tepercaya
kunci publik dan rahasia dibuat dan ditandatangani.

gpg: memeriksa trustdb
gpg: dibutuhkan 3 marjinal, 1 lengkap, model kepercayaan PGP
gpg: kedalaman: 0 valid: 1 ditandatangani: 0 kepercayaan: 0-, 0q, 0n, 0m, 0f, 1u
pub ***** / ******** 2013-03-19
      Sidik jari kunci = **** **** **** **** **** **** **** **** ****
Kunci Enkripsi File uid (Kunci Enkripsi File) 
sub ***** / ******** 2013-03-19

Sekarang Anda mungkin ingin mengekspor keyfile publik untuk mengimpornya di komputer lain:

gpg --armor --output file-enc-pubkey.txt --export 'File Encryption Key'

Ini File Encryption Keyadalah nama yang saya masukkan selama prosedur pembuatan kunci.

Sekarang saya menggunakan GnuPG pada arsip yang baru dibuat:

gpg --encrypt --recipient 'File Encryption Key' files.tar.gz

Anda sekarang memiliki files.tar.gz.gpgfile yang dienkripsi.

Anda dapat mendekripsi dengan perintah berikut (Anda akan diminta frasa sandi Anda):

gpg --output files.tar.gz --decrypt files.tar.gz.gpg

Itu seluruh keajaiban.

Pastikan Anda membuat cadangan kunci Anda! Dan jangan pernah melupakan kata sandi Anda! Jika tidak dicadangkan atau dilupakan, Anda memiliki sampah data sebesar gigabyte!

Cadangkan kunci pribadi Anda dengan perintah ini:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'File Encryption Key'

Keuntungan

  • Tak satu pun dari penyandi perlu mengetahui informasi sensitif tentang penyandian - penyandian dilakukan dengan kunci publik. (Anda dapat membuat pasangan kunci di workstation lokal Anda dan hanya mentransfer kunci publik ke server Anda)
  • Tidak ada kata sandi yang akan muncul dalam file skrip atau pekerjaan
  • Anda dapat memiliki sebanyak enkripsi pada sistem apa pun yang Anda inginkan
  • Jika Anda menyimpan kunci pribadi dan rahasia frasa sandi, semuanya baik-baik saja dan sangat sulit dikompromikan
  • Anda dapat mendekripsi dengan kunci pribadi pada platform Unix, Windows dan Linux menggunakan implementasi PGP / GPG tertentu
  • Tidak perlu hak istimewa khusus untuk mengenkripsi dan mendekripsi sistem, tidak ada pemasangan, tidak ada wadah, tidak ada sistem file khusus
nol0
sumber
1
Perhatikan bahwa tergantung pada data, bisa lebih cepat dijalankan tartanpa zsakelar untuk menghindari kompresi.
l0b0
28

Untuk bagian saya, saya terutama menggunakan dua metode:

Metode pertama: tar dan openssl

Tar direktori

tar cvf backup.tar /path/to/folder

Anda dapat menghapus sakelar [v] dari perintah tar untuk mematikan mode verbose.

Enkripsi

openssl aes-128-cbc -salt -in backup.tar -out backup.tar.aes -k yourpassword

Anda dapat mengubah aes-128-cbc menjadi metode penyandian lainnya openssl support (openssl --help).

Dekripsi

openssl aes-128-cbc -d -salt -in backup.tar.aes -out backup.restored.tar

Ia akan meminta kata sandi.

Metode kedua: zip terenkripsi

zip -r -0 -e backup.zip /path/to/folder

Ia akan meminta kata sandi.

  • -r berarti secara rekursif (seluruh folder pohon)
  • -0 berarti hanya menyimpan (tidak kompres, lebih cepat)
  • -e berarti arsip terenkripsi

Satu keuntungan dari ini: itu akan lebih baik beroperasi dengan sistem berbasis windows.

Julien R.
sumber
3
Memberikan kata sandi pada baris perintah bukanlah ide yang baik. Kata sandi tetap dalam sejarah shell.
pai
1
Perlu dicatat bahwa zipenkripsi dikabarkan bisa dipecahkan.
Acumenus
22

Jika Anda tidak ingin mengenkripsi file Anda dengan pasangan kunci publik / pribadi dan hanya menggunakan enkripsi simetris dengan frasa sandi, gunakan perintah berikut:

gpg --symmetric --cipher-algo aes256 files.tar.gz

Anda akan diminta memasukkan frasa sandi Anda. Setelah itu file terenkripsi bernama files.tar.gz.gpgdibuat.

Untuk mendekripsi gunakan perintah

gpg --decrypt files.tar.gz.gpg > files.tar.gz
Chiborg
sumber
2

Anda dapat menggunakan truecrypt solusi yang sangat sederhana dan menyenangkan. Ini memiliki paket untuk penggunaan konsol saja. Sangat mudah dipelajari dan digunakan. http://www.truecrypt.org

B14D3
sumber
4
Pada 28-Mei-2014, TrueCrypt tidak ada lagi. Lihat en.wikipedia.org/wiki/TrueCrypt
Bryce
2

Untuk tujuan seperti itu saya sarankan enkripsi FUSE (seperti encfs ) - untuk data yang lebih kecil saya akan menggunakan gpg.

Ini diterapkan di ruang pengguna sehingga Anda tidak membutuhkan hak istimewa khusus.

Maciej Piechotka
sumber
1

Ada beberapa sistem file Linux yang ditujukan untuk tujuan enkripsi data. Sudahkah Anda berpikir tentang LUX misalnya?

Wali
sumber
1

Cara yang sangat sederhana untuk mengenkripsi satu file adalah:

gpg -c filename.ext

Anda akan diminta untuk memasukkan frasa sandi dua kali, dan gpg akan membuat filename.ext.gpg. Unggah file terenkripsi ke layanan cloud Anda. Untuk memulihkan file gunakan:

gpg filename.ext.gpg

Yang akan dibuat ulang filename.ext. Perhatikan bahwa file yang tidak dienkripsi tidak aman, dan data yang relevan akan tetap pada media penyimpanan Anda bahkan setelah penghapusan. Hanya wadah gpg yang aman. EncFS adalah alternatif yang lebih praktis untuk enkripsi berbasis cloud di tingkat file.

Bryce
sumber