Saya menulis sistem VPN yang mengenkripsi (AES256) lalu lintasnya di internet (Mengapa menulis sendiri ketika ada 1.000.001 orang lain di luar sana? Nah, tambang adalah yang khusus untuk tugas tertentu yang tidak ada yang cocok).
Pada dasarnya saya ingin menjalankan pemikiran saya melewati Anda untuk memastikan saya melakukan ini dalam urutan yang benar.
Saat ini paket hanya dienkripsi sebelum dikirim keluar, tetapi saya ingin menambahkan beberapa tingkat kompresi untuk mengoptimalkan sedikit tranfer data. Bukan kompresi yang berat - Saya tidak ingin memaksimalkan CPU setiap saat, tetapi saya ingin memastikan kompresi akan seefisien mungkin.
Jadi, pemikiran saya adalah, saya harus mengompres paket sebelum mengenkripsi karena paket yang tidak terenkripsi akan dikompres lebih baik daripada yang dienkripsi? Atau sebaliknya?
Saya mungkin akan menggunakan zlib untuk kompresi.
Baca lebih lanjut di blog Pengguna Super .
sumber
Jawaban:
Jika enkripsi dilakukan dengan benar maka hasilnya pada dasarnya adalah data acak. Sebagian besar skema kompresi bekerja dengan menemukan pola dalam data Anda yang dapat difaktorkan, dan berkat enkripsi sekarang tidak ada; data benar-benar tidak bisa dimampatkan.
Kompres sebelum Anda mengenkripsi.
sumber
Kompres sebelum enkripsi. Data terkompresi dapat sangat bervariasi untuk perubahan kecil dalam data sumber, sehingga membuatnya sangat sulit untuk melakukan pembacaan sandi diferensial.
Juga, seperti yang ditunjukkan oleh Mr.Alpha, jika Anda mengenkripsi dulu, hasilnya sangat sulit untuk dikompres.
sumber
Bahkan jika itu tergantung pada kasus penggunaan khusus, saya akan menyarankan Encrypt-then-Compress. Kalau tidak, seorang penyerang bisa membocorkan informasi dari jumlah blok terenkripsi.
Kami berasumsi pengguna mengirim pesan ke server dan penyerang dengan kemungkinan untuk menambahkan teks ke pesan pengguna sebelum mengirim (via javascript misalnya). Pengguna ingin mengirim beberapa data masuk akal ke server dan penyerang ingin mendapatkan data ini. Jadi dia bisa mencoba menambahkan pesan berbeda ke data yang dikirim pengguna ke server. Kemudian pengguna memampatkan pesannya dan teks yang ditambahkan dari penyerang. Kami menganggap kompresi DEFLATE LZ77, sehingga fungsinya mengganti informasi yang sama dengan pointer ke tampilan pertama. Jadi jika penyerang dapat mereproduksi lubang teks, fungsi kompresi mengurangi ukuran teks biasa ke ukuran asli dan pointer. Dan setelah enkripsi, penyerang dapat menghitung jumlah blok sandi, sehingga ia dapat melihat, apakah data yang ditambahkannya sama dengan data yang dikirim pengguna ke server. Bahkan jika kasus ini kedengarannya sedikit dibangun, itu adalah masalah keamanan yang serius di TLS. Ide ini digunakan oleh serangan yang disebut CRIME untuk membocorkan cookie dalam koneksi TLS untuk mencuri sesi.
sumber: http://www.ekoparty.org/archive/2012/CRIME_ekoparty2012.pdf
sumber
Pandangan saya adalah bahwa ketika Anda mengompres pesan, Anda memproyeksikannya ke dimensi yang lebih rendah dan karenanya ada lebih sedikit bit, yang berarti bahwa pesan terkompresi (dengan anggapan kompresi lossless) memiliki informasi yang sama dalam bit yang lebih sedikit (yang Anda hilangkan adalah mubazir! ) Jadi Anda memiliki lebih banyak informasi per bit dan akibatnya lebih banyak entropi per bit, tetapi total entropi yang sama seperti yang Anda miliki sebelumnya ketika pesan tidak dikompresi. Sekarang, keacakan adalah masalah lain dan di situlah pola dalam kompresi dapat melempar kunci pas monyet.
sumber
Kompresi harus dilakukan sebelum enkripsi. seorang pengguna tidak ingin menghabiskan waktu menunggu transfer data, tetapi ia membutuhkannya untuk segera dilakukan tanpa membuang waktu.
sumber
Kompresi sebelum enkripsi seperti yang telah ditunjukkan sebelumnya. Kompresi mencari struktur yang dapat dikompres. Enkripsi mengacak data untuk menghindari struktur yang terdeteksi. Dengan mengompresi terlebih dahulu, Anda jauh lebih mungkin memiliki file yang lebih kecil dan dengan demikian lebih sedikit payload untuk ditransfer. Enkripsi akan melakukan pekerjaannya terlepas dari apakah itu dikompresi atau tidak dan, sekali lagi seperti yang ditunjukkan sebelumnya, kemungkinan akan lebih sulit untuk melakukan pembacaan sandi diferensial pada file terkompresi.
sumber
Kompresi mengurangi entropi informasi. Kompresi maksimum membuat entropi minimum. Untuk data yang dienkripsi sempurna (noise), maksimum dan minimum entropi adalah sama.
sumber