Bagaimana cara zip direktori dengan enkripsi untuk nama file?

17

Menggunakan baris perintah, saya tahu bahwa saya dapat mengenkripsi direktori dengan perintah berikut:

zip -er Directory.zip /path/to/directory

Namun, ini tidak mengenkripsi nama file itu sendiri. Jika seseorang berlari:

unzip Directory.zip

dan berulang kali memasukkan kata sandi yang salah, perintah unzip akan mengulang semua nama file yang ada sampai kata sandi yang benar dimasukkan. Output sampel:

unzip Directory.zip 
Archive:  Directory.zip
   creating: Directory/
[Directory.zip] Directory/sensitive-file-name-1 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-1  incorrect password
[Directory.zip] Directory/sensitive-file-name-2 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-2  incorrect password
[Directory.zip] Directory/sensitive-file-name-3 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-3  incorrect password

dan seterusnya.

Menggunakan baris perintah, apakah ada cara untuk zip direktori dengan enkripsi sambil juga mengenkripsi atau menyembunyikan nama file sendiri?

Terima kasih.

Leo Galleguillos
sumber
Anda mungkin tidak ingin menggunakan enkripsi default zip karena lemah jadi gunakan 7zipkarena menggunakan enkripsi berbasis AES.
Pierz
Apa itu enkripsi default zip, dan apa sumber Anda untuk menyatakan bahwa enkripsi default zip tidak aman?
Leo Galleguillos
1
Sebagian besar alat zip (ada beberapa alat zip baru yang menggunakan kripto yang lebih baik) masih menggunakan cipher Stream PKZIP yang pertama kali terbukti lemah pada tahun 1994: rd.springer.com/content/pdf/10.1007%2F3-540-60590-8_12 .pdf Halaman Wikipedia memberikan ikhtisar dasar: en.wikipedia.org/wiki/Zip_(file_format)#Ecryption
Pierz

Jawaban:

26

Dalam file zip, hanya konten file yang dienkripsi. Metadata file, termasuk nama file, tidak dienkripsi. Itu batasan format file: setiap entri dikompresi secara terpisah, dan jika dienkripsi, dienkripsi secara terpisah.

Anda bisa menggunakan 7-zip saja. Ini mendukung enkripsi metadata ( -mhe=ondengan implementasi baris perintah Linux).

7z a -p -mhe=on Directory.7z /path/to/directory

Ada 7zip implementasi untuk semua sistem operasi utama dan yang paling kecil tetapi yang mungkin memerlukan menginstal perangkat lunak tambahan (IIRC Windows dapat membuka zip file zip terenkripsi dari kotak hari ini). Jika membutuhkan 7z untuk dekripsi merupakan masalah, Anda dapat mengandalkan zip hanya dengan menggunakannya pertama kali untuk mengemas direktori dalam satu file, dan kemudian mengenkripsi file itu. Jika Anda melakukannya, matikan kompresi file individual dan perintahkan zip luar untuk mengompres file zip, Anda akan mendapatkan rasio kompresi yang lebih baik secara keseluruhan.

zip -0 -r Directory.zip /path/to/directory
zip -e -n : encrypted.zip Directory.zip
Gilles 'SO- berhenti menjadi jahat'
sumber
1
Mungkin yang terbaik untuk menghindari menggunakan zip untuk mengenkripsi - seseorang dapat menggunakan 7zip untuk menghasilkan zipfile yang lebih aman dienkripsi (AES) pada baris ke-2:7z a -p -tzip encrypted.zip Directory.zip
Pierz
2

Anda dapat membuat arsip menggunakan alat favorit Anda dan kemudian gunakan bcryptuntuk melakukan enkripsi / dekripsi.

A) Untuk membuat file terenkripsi:

tar -czf Directory.tgz /path/to/directory
bcrypt Directory.tgz

Ini akan memberi Anda file terenkripsi Blowfish Directory.tgz

B) Untuk membalikkan proses ini:

bcrypt Directory.tgz.bfe
tar -xf Directory.tgz
Jedi
sumber
2
Pendekatannya bagus, tetapi Anda harus menggunakan alat lain untuk enkripsi - bcryptmenggunakan EBC yang mengungkapkan struktur dalam data yang dienkripsi. Lihat Bug Debian # 700758 untuk detailnya (Debian bcrypthanya mendukung dekripsi sebagai hasilnya).
Stephen Kitt