Sıkıştırın ve sonra şifreleyin ya da tersi?


88

Ağındaki trafiğini şifreleyen (AES256) bir VPN sistemi yazıyorum (Neden zaten dışarıda 1.000.000 kişi varken kendi yazımı yazıyor? Peki benimki, diğerlerinin hiçbirinin uymadığı belirli bir görev için özel bir tane).

Temelde bunu doğru sırayla yaptığımdan emin olmak için düşüncelerimi sizden geçirmek istiyorum.

Şu anda paketler gönderilmeden önce şifreleniyor, ancak veri aktarımını biraz optimize etmek için onlara bir miktar sıkıştırma eklemek istiyorum. Sıkıştırma değil - İşlemciyi her zaman maksimuma çıkarmak istemiyorum, ancak sıkıştırmanın mümkün olduğunca verimli olacağından emin olmak istiyorum.

Öyleyse, benim düşüncem, şifrelenmemiş bir paket şifrelenmiş bir paketten daha iyi sıkıştırılacağı için şifrelemeden önce paketleri sıkıştırmalıyım? Ya da tam tersi?

Muhtemelen sıkıştırma için zlib kullanacağım.

Süper Kullanıcı blogunda daha fazlasını okuyun .


4
"Programlama" olarak yazmak? O zaman Stack Overflow için daha uygun olur.
Suma

4
Programlanması hakkında soru soruyor olsaydım, evet, ama değilim. Bu genel bir sıkıştırma, daha sonra şifrelemek veya şifrelemek ve sonra isterseniz düz dosyalar ile çalışmak için geçerli olabilecek soruyu sıkıştırmaktır. Programlama tarafı sadece soruyu neden sorduğumun bağlamı.
Majenko



1
Sıkıştırmayı biliyorlar mı?
Majenko

Yanıtlar:


176

Şifreleme düzgün yapılırsa , sonuç temel olarak rasgele verilerdir. Sıkıştırma şemaları, verilerinizde bir şekilde hesaba katılabilecek kalıpları bularak çalışır ve şimdi şifreleme sayesinde hiçbiri yoktur; veri tamamen sıkıştırılamaz.

Şifrelemeden önce sıkıştır.


41
Daha da önemlisi: Sıkıştırma entropi ekler. Entropi eklemek, şifrelemeniz için iyidir (bilinen-düz metin saldırılarını kırması daha zordur).
Olli

8
Ayrıca, maliyet kaynaklarını şifrelemek, daha küçük bir dosyayı şifrelemek daha az kaynak alacaktır. Şifrelemeden önce sıkıştırın.
GAThrawn

9
@Olli - Sıkıştırma düzeni bilinen metin eklerse, mutlaka gerekmez. En kötü durumda, verilerin önüne bilinen 512 baytlık bir başlık koyduğunu ve bir blok modu şifrelemesi kullandığınızı hayal edin.
Martin Beckett

26
Olli'nin yorumunun neden yanlış olduğu için neden oylanacağına emin değilim; sadece önemli ölçüde daha az önemli değil, herhangi bir yarı-iyi şifreleme için hiç önemli olmamalıdır . Yani, şifrelemenin gücü mesajın entropisi ile tamamen ilgili olmamalıdır.
BlueRaja - Danny Pflughoeft 15:11

8
Eğer hiç sıkıştırmazsanız, yalnızca mesajı şifrelemeden önce gerçekten yapılabilir, ancak akılda tutulması gereken, orijinal mesajın 'sıkıştırılabilirliği' hakkında bilgi sızdırması olabilir; bu nedenle, bu tarafın herhangi bir sonucu olup olmadığını düşünebilirsiniz. kanal. Tüm 0'lar veya bir mesaj olan sabit boyutlu bir dosya düşünün. Tüm 0 dosya herhangi bir makul sıkıştırma şeması altında daha küçük bir taşıma yüküyle sonuçlanacaktır. Bu özel kullanım durumunda muhtemelen bir sorun değil.
Edward KMETT

22

Şifrelemeden önce sıkıştır. Sıkıştırılmış veriler, kaynak verilerindeki küçük değişiklikler için önemli ölçüde değişiklik gösterebilir, bu nedenle diferansiyel kriptanaliz yapılmasını çok zorlaştırır.

Ayrıca, Mr.Alpha'nın işaret ettiği gibi, önce şifrelerseniz, sonucu sıkıştırmak çok zordur.


12
Peki, bu doğru, ancak siz göndermeden 2 saat önce gönderildi ... Entropy
Konerak

3

Özel kullanım durumuna bağlı olsa bile, Şifrele ve Sıkıştır komutunu öneririm. Aksi halde bir saldırgan şifreli blok sayısından bilgi sızdırabilir.

Sunucuya mesaj gönderen bir kullanıcının ve göndermeden önce kullanıcı mesajına metin ekleme olanağına sahip bir saldırgan olduğunu varsayıyoruz (örneğin, javascript ile). Kullanıcı sunucuya anlamlı veriler göndermek istiyor ve saldırgan bu verileri almak istiyor. Böylece kullanıcının sunucuya gönderdiği verilere farklı mesajlar eklemeye çalışabilir. Ardından kullanıcı, mesajını ve eklenen metni saldırgandan sıkıştırır. Bir DEFLATE LZ77 sıkıştırması olduğunu varsayıyoruz, bu nedenle işlev aynı bilgiyi ilk görünümle aynı işaretçiyle değiştirir. Böylece, saldırgan delik düz metnini yeniden üretebilirse, sıkıştırma işlevi düz metnin boyutunu orijinal boyutuna ve bir işaretçiye indirger. Şifrelemeden sonra, saldırgan şifre bloklarının sayısını sayabilir, böylece eklenmiş verilerinin kullanıcının sunucuya gönderdiği verilerle aynı olup olmadığını görebilir. Bu dava biraz inşa edilmiş olsa bile, TLS'de ciddi bir güvenlik sorunudur. Bu fikir, oturumları çalmak için TLS bağlantısında çerezleri sızdırmak için CRIME adlı bir saldırı tarafından kullanılır.

kaynak: http://www.ekoparty.org/archive/2012/CRIME_ekoparty2012.pdf


2

Benim görüşüme göre, bir mesajı sıkıştırdığınızda onu daha düşük bir boyuta yansıtırsınız ve bunun için daha az bit vardır, bu da sıkıştırılmış mesajın (kayıpsız kompresiyoon varsayarak) aynı bilgilere sahip olduğu anlamına gelir. ) Böylece, bit başına daha fazla bilgiye ve sonuç olarak bit başına daha fazla entropiye sahip olursunuz, ancak iletinin sıkıştırılmadığı zamankiyle aynı toplam entropiye sahip olursunuz. Şimdi, rastgelelik başka bir konudur ve bu, sıkıştırma içindeki desenlerin bir İngiliz anahtarı atabileceği yerdir.


1

Sıkıştırma şifrelemeden önce yapılmalıdır. Bir kullanıcı, veri aktarımını bekleyerek zaman geçirmek istemez, ancak zaman kaybetmeden derhal yapılmasını ister.


1

Daha önce belirtildiği gibi şifreleme öncesi sıkıştırma. Sıkıştırma, sıkışabileceği yapıyı arar. Şifreleme, yapının algılanmasını önlemek için verileri karıştırır. Öncelikle sıkıştırarak daha küçük bir dosyaya sahip olma olasılığınız çok daha yüksektir ve bu nedenle aktarma kapasitesi daha düşüktür. Şifreleme, sıkıştırılmış olup olmamasından bağımsız olarak işini yapacak ve daha önce de belirtildiği gibi, sıkıştırılmış bir dosyada diferansiyel kriptanaliz yapmak daha zor olabilir.


Bu kabul edilen ve ikinci cevapların tekrarı gibi görünüyor. Her cevap, soruya oldukça yeni bir çözüm getirmelidir.
fixer1234

0

Sıkıştırma bilgi entropisini azaltır. Maksimum sıkıştırma entropiyi minimum yapar. Mükemmel bir şekilde şifrelenmiş veri (gürültü) için maksimum ve minimum entropi aynıdır.


2
Bekle, bunu geriye almadın mı? Entropinin fazlalık azaldıkça arttığını düşündüm. Bu nedenle sıkıştırma entropiyi arttırmalıdır.
Zan Lynx

Hayır, daha az entropi = daha fazla düzen. Rastgele en entropiye sahiptir.
AbiusX

1
Fakat bu bilgi entropisidir, yani her şey anlamla ilgilidir. Rastgele bir şey ifade etmiyor, bu yüzden geçerli değil. İngilizce bir cümlenin harfleri değişmiş olabilir ve hala aynı şeyi ifade eder, böylece entropisi düşük olur. Sıkıştırılmış bir İngilizce cümle, eğer tek bir bit en fazlaya sahipse değişirse okunamaz olabilir. Ya da öyle düşünüyorum.
Zan Lynx

Entropi, tamamen kalıplarla ilgili duyum ve okuma ya da anlama yeteneği ile ilgili değildir. Sıkıştırılmış dosyalar kalıplarla doludur.
AbiusX

1
@AbiusX: Doğru. Desenler. Ve ne kadar az kalıp olursa, o kadar entropi olur. Bu, tekrarlanan tüm kalıpları tek bir kopya ile değiştiren sıkıştırmanın entropiyi arttırdığı anlamına gelir.
Zan Lynx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.