Dosya şifreleme için AES vs Blowfish


107

İkili bir dosyayı şifrelemek istiyorum. Amacım, şifresi olmayan herhangi birinin dosyayı okumasını engellemek.

Hangisi daha iyi çözüm, aynı anahtar uzunluğuna sahip AES veya Blowfish? Saldırganın dosyayı kırmak için büyük kaynaklara (yazılım, bilgi, para) sahip olduğunu varsayabiliriz.


4
Blowfish on yıldan daha eski, sanırım aes vs twofish demek istiyorsun ...
kale

Haklısın, bunu sorabilirdim. Şans eseri Jerry, konuyu benim için harika özetledi.
mimrock

@Rook Ne kadar eski olursa, güvenlik algoritmaları için pratik kural o kadar iyidir. Yeni algoritmalar, güvenlikten çok performansla ilgilenen insanlar içindir.
2014 08:24

Yanıtlar:


188

Muhtemelen AES. Blowfish, Twofish'in doğrudan selefiydi. Twofish, Bruce Schneier'in AES'yi üreten yarışmaya girmesiydi. AES haline gelen Rijndael adlı bir girişten daha düşük olduğuna karar verildi.

İlginç bir yanı var: Yarışmanın bir noktasında, tüm katılımcılardan şifrelerin nasıl sıralandığı konusunda fikirlerini vermeleri istendi. Her takımın kendi girişini en iyi olarak seçmesi muhtemelen şaşırtıcı değildir - ancak diğer tüm takımlar en iyi ikinci olarak Rijndael'i seçti.

Bununla birlikte, Blowfish ile AES'in temel hedeflerinde, mutlak güvenlik açısından Blowfish'i (muhtemelen) tercih edebilecek bazı temel farklılıklar vardır. Özellikle, Blowfish, ilk anahtar kurulumunu oldukça yavaş bir işlem haline getirerek kaba kuvvet (anahtar tükenmesi) saldırısını zorlaştırmaya çalışır. Normal bir kullanıcı için bunun pek önemi yoktur (hala bir milisaniyeden daha azdır), ancak saniyede milyonlarca anahtarı kırmaya çalışıyorsanız, fark oldukça büyüktür.

Sonuç olarak, bunu büyük bir avantaj olarak görmüyorum. Genellikle AES'i öneririm. Bir sonraki seçimlerim muhtemelen bu sırayla Serpent, MARS ve Twofish olacaktır. Blowfish onlardan sonra bir yere gelirdi (muhtemelen Blowfish'ten önce tavsiye edeceğim birkaç tane daha var).


11
Diğer algoritmaların Rijndael'den daha güvenli olduğunu düşünüyorum, ancak güvenliğinin yeterince iyi olduğu değerlendirilirken çok iyi bir performans sundu. Bir şifre algoritması tasarlamak, her zaman güvenlik ve performans arasında bir değiş tokuştur.
CodesInChaos

10
@CodeInChaos: Bakış açınıza bağlı olarak, bu en azından doğru sayılır - Serpent muhtemelen en muhafazakar tasarımdı. Özellikle, 16 turlu bir versiyonun yeterli olacağını düşündüler - bu yüzden bunu 32 mermi ikiye katladılar. Şu anda bilinen en iyi saldırı sadece 11 tura karşı etkilidir. Orijinal soru, seçimleri özellikle AES ve Blowfish ile sınırlamasaydı ve en güvenli, makul ölçüde iyi bilinen şifreyi sorsaydı, muhtemelen Serpent derdim ...
Jerry Coffin

Ayrıca, CompTIA Security + sınavım için çalışırken birkaç soru ve kaynakta bu "ilginç bir yana" ortaya çıktı. Küçük şeyler sonuçta o kadar da yararsız olmayabilir!
Everlight

Blowfishen hızlısı
user924

23

Bir blok şifresinin blok boyutunun da önemli bir güvenlik meselesi olduğu çoğu kez kabul edilmeyen bir gerçektir (anahtar boyutu kadar önemli olmasa da).

Blowfish (ve 3DES ve IDEA gibi aynı döneme ait diğer blok şifrelerin çoğu) 64 bitlik bir blok boyutuna sahiptir ve bu, günümüzde yaygın olan büyük dosya boyutları için yetersiz kabul edilir (dosya ne kadar büyük ve blok boyutu o kadar küçük , şifreli metinde tekrarlanan bir bloğun olasılığı ne kadar yüksekse - ve bu tür tekrarlanan bloklar kriptanalizde son derece yararlıdır).

AES ise 128 bitlik bir blok boyutuna sahiptir. Tek başına bu değerlendirme, Blowfish yerine AES kullanmanın gerekçesidir.


2
64 bitlik bir blok boyutunun avantajı, yeni algoritmayı (3) DES'in yerine eski bir uygulamaya bırakmayı kolaylaştırmasıdır.
dajames

Blok boyutu ilginç bir argümandır. Birkaç ay önce, herhangi bir simetrik şifrenin blok boyutunun herhangi bir uzunluğa genişletilebileceğini teorileştiren bir makale yazdım: cubicspot.blogspot.com/2013/02/…
CubicleSoft

16

Algoritmalar açısından AES ile giderdim, basit bir nedenden ötürü NIST tarafından kabul edilmiş olması ve yıllarca hakem tarafından gözden geçirilip kriptolanacağı. Bununla birlikte, pratik uygulamalarda, hükümetin gizli tutmak istediği bir dosyayı depolamadığınız sürece (bu durumda NSA muhtemelen size hem AES hem de Blowfish'ten daha iyi bir algoritma sağlayacaktır), bu algoritmalardan herhangi birini kullanarak kazanmanızı öneririm. Çok fazla fark yaratmaz. Tüm güvenlik anahtarda olmalıdır ve bu algoritmaların her ikisi de kaba kuvvet saldırılarına karşı dirençlidir. Blowfish sadece 16 turun tamamını kullanmayan uygulamalarda zayıf olduğunu göstermiştir. Ve AES daha yeniyken, bu gerçek sizi BlowFish'e daha fazla eğmenizi sağlamalı (sadece yaşı hesaba katıyor olsaydınız). Bu şekilde düşün,

İşte size önereceğim şey ... bu iki algoritmaya bakmak ve algoritma arasında seçim yapmaya çalışmak yerine, neden anahtar oluşturma planınıza bakmıyorsunuz? Dosyanızın şifresini çözmek isteyen potansiyel bir saldırgan, orada oturup kullanılabilecek teorik bir anahtar seti bulup aylar sürebilen kaba kuvvet saldırısı yapmayacaktır. Bunun yerine, sunucu donanımınıza saldırmak, anahtarı görmek için derlemenize tersine mühendislik uygulamak, içinde anahtara sahip bir yapılandırma dosyası bulmaya çalışmak veya belki de bilgisayarınızdan bir dosya kopyalamak için arkadaşınıza şantaj yapmak gibi başka bir şeyi istismar edecek. . Bunlar, algoritma değil, en savunmasız olduğunuz yerler olacak.


4
AES, Wikipedia'daki "bozuk şifreler" listesine yakın zamanda eklendi, ancak Blowfish'e karşı en kötü saldırı, cılızca dört tura karşıdır ve açık bir şekilde kırık şifreler listesinde eksiktir. Bruce'un, insanların hala Blowfish kullanmasına şaşırdığı hakkındaki yorumu, uygulayıcıları uzaklaştıran şeydir. Bununla birlikte, bozuk değildir, değişken anahtar boyutlarını destekler, AES'den daha büyük anahtar boyutlarını destekler ve programlama perspektifinden bakıldığında, diğer simetrik blok şifrelerinin çoğuna kıyasla uygulanması kolaydır. Blowfish, herhangi bir simetrik şifreleme için en büyük tehdit olan zaman testinden sağ çıktı.
CubicleSoft

AES'nin neredeyse hiç bozulmadığını kabul ediyorum. Ancak önümüzdeki 10 yıl içinde yeni bir standarda ihtiyacımız olacak. Ayrıca AES finalistlerinden herhangi biri harika şifrelerdi. Yılan, aslında birçok kişi tarafından kırılması en zor olanı olarak kabul edilir, ancak AES en zarif olanıydı. (Ve evet, şifreleme ve şifre çözmeyi nasıl yaptığınıza bakarsanız, kesinlikle zariftir.)
nerdybeardo

8

AES.

(Ayrıca, çok daha yaşlı ve daha zayıf balon balığı değil, iki kanatlı olduğunu varsayıyorum)

Her ikisi de (AES ve twofish) iyi algoritmalardır. Bununla birlikte, eşit olsalar veya teknik değerde biraz ileride olsalar bile, STILL, AES'i seçerdim.

Neden? Tanıtım. AES, devlet şifreleme standardıdır ve bu nedenle milyonlarca başka kuruluş da bunu kullanır. Yetenekli bir kriptanalist, AES'de bir kusur bularak "paranın karşılığını fazlasıyla alır", daha sonra çok daha az bilen ve kullanılan iki balık için yapar.

Belirsizlik, şifrelemede hiçbir koruma sağlamaz. Bir algoritmaya bakan, inceleyen, araştıran, saldıran daha fazla vücut her zaman daha iyidir. Mümkün olan en "incelenmiş" algoritmayı istiyorsunuz ve şu anda bu AES. Bir algoritma yoğun ve sürekli incelemeye tabi değilse, gücüne daha düşük bir güven vermelisiniz. Elbette iki balık tehlikeye atılmadı. Bu, şifrenin gücünden mi yoksa sadece yeterli sayıda insanın yakından bakmadığı için mi ..... YET


5

Algoritma seçimi muhtemelen o kadar önemli değil. Daha iyi araştırıldığı için AES kullanırım. Çok daha önemli olan, doğru çalışma modunu ve anahtar türetme işlevini seçmektir .

Hızlı rastgele erişim istiyorsanız, ilham almak için TrueCrypt format spesifikasyonuna bir göz atmak isteyebilirsiniz. Rastgele erişime ihtiyacınız yoksa, XTS en uygun mod değildir, çünkü diğer modların sahip olmadığı zayıf yönleri vardır. Ayrıca bir tür bütünlük denetimi (veya ileti kimlik doğrulama kodu) da eklemek isteyebilirsiniz.


1
Kesinlikle - PBKDF2 gibi iyi bir anahtar türetme işlevi kullanmak çok önemlidir.
kafe

3

Bu cevabın sorunuzun şartlarını ihlal ettiğini biliyorum, ancak amacınızın doğru cevabının basitçe şudur: Hangi algoritma size en uzun anahtar uzunluğuna izin veriyorsa onu kullanın, sonra gerçekten iyi bir anahtar seçtiğinizden emin olun. En iyi bilinen algoritmaların (kriptografik ve kronolojik olarak) performansındaki küçük farklılıklar, bir anahtarın birkaç ekstra bitiyle boğulur.


7
Katılamıyorum IBM'in Lucifer şifresi (DES'in öncülü) 128-bit anahtar olarak kullanıldı - ancak DES (yalnızca 56-bit anahtarla), diferansiyel kriptanaliz (yeniden) keşfedildiğinde çok daha güvenli hale geldi.
Jerry Coffin

3
Basitçe anahtar uzunluğuna bakmak çok zayıf bir ölçüdür.
Gerald Davis

2
Bu yüzden "en saygın algoritmalar" dedim. Blowfish 128bit'in AES 128bit'ten daha düşük olduğunu düşünüyorsanız, Blowfish 256bit'in AES 128bit'i sudan dışarı üflediğini kabul etmeniz gerekir. Aynı şekilde, anahtar üretimi ve yönetimi de aynı derecede önemlidir. Anahtarınız "şifre" ise, hangi algoritmayı kullandığınız hiç önemli değildir. Demek istediğim, OP'nin muhtemelen yanlış şeye baktığıdır.
Mike Jones

2
Soruda anahtarların şifrelerden türetileceği belirtiliyor. Şifreyi kaba zorlayarak sistemi kırmak, burada bahsedilen algoritmalardan herhangi birine saldırmaktan çok daha kolay olacaktır. Anahtar bir paroladan türetildiğinde, anahtar uzunluğu neredeyse tamamen önemsizdir.
dajames

Benim yaptığım şeyin aynısını söylemenize rağmen cevabımı not alıyorsunuz? Anahtar uzunluğu dedim ve gerçekten iyi bir anahtar seçtim. Anahtarın tüm parçalarını doldurmasa, "iyi" nin hangi tanımına göre bir anahtarın iyi olduğunu düşünürdünüz?
Mike Jones

3

Her iki algoritma da (AES ve twofish) çok güvenli kabul edilir. Bu, diğer cevaplarda geniş çapta ele alınmıştır.

Bununla birlikte, AES şu anda 2016 yılında çok yaygın olarak kullanıldığından, ARM ve x86 gibi çeşitli platformlarda özellikle donanımla hızlandırılmıştır. Donanım hızlandırmadan önceki iki saniyeden çok daha hızlı olmasa da, AES artık özel CPU talimatları sayesinde çok daha hızlı.

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.