AES vs Blowfish untuk enkripsi file

106

Saya ingin mengenkripsi file biner. Tujuan saya adalah untuk mencegah siapa pun membaca file yang tidak memiliki kata sandi.

Solusi mana yang lebih baik, AES atau Blowfish dengan panjang kunci yang sama? Kita dapat berasumsi bahwa penyerang memiliki sumber daya yang besar (perangkat lunak, pengetahuan, uang) untuk memecahkan file.

mimrock
sumber
4
Blowfish berusia lebih dari satu dekade, saya pikir maksud Anda aes vs twofish ...
benteng
Anda benar, saya bisa saja menanyakan itu. Untungnya, Jerry menyimpulkan topik yang bagus untuk saya.
mimrock
@Rook Semakin tua semakin baik adalah aturan praktis untuk algoritma keamanan. Algoritme baru ditujukan untuk orang-orang, yang lebih mementingkan kinerja daripada keamanan.
ceving

Jawaban:

187

Mungkin AES. Blowfish adalah pendahulu langsung Twofish. Twofish adalah masuknya Bruce Schneier ke dalam kompetisi yang menghasilkan AES. Itu dinilai lebih rendah dari entri bernama Rijndael, yang kemudian menjadi AES.

Selain menarik: pada satu titik dalam kompetisi, semua peserta diminta untuk memberikan pendapat mereka tentang peringkat cipher. Mungkin tidak mengherankan jika setiap tim memilih entri masing-masing sebagai yang terbaik - tetapi setiap tim lain memilih Rijndael sebagai yang terbaik kedua.

Meskipun demikian, ada beberapa perbedaan mendasar dalam tujuan dasar Blowfish vs. AES yang (bisa dibilang) mendukung Blowfish dalam hal keamanan absolut. Secara khusus, Blowfish mencoba untuk membuat serangan brute force (key-exhaustion) menjadi sulit dengan membuat pengaturan kunci awal menjadi operasi yang cukup lambat. Untuk pengguna biasa, ini adalah konsekuensi kecil (masih kurang dari satu milidetik) tetapi jika Anda mencoba jutaan kunci per detik untuk memecahkannya, perbedaannya cukup besar.

Pada akhirnya, saya tidak melihat itu sebagai keuntungan besar. Saya biasanya merekomendasikan AES. Pilihan saya berikutnya mungkin adalah Serpent, MARS dan Twofish dalam urutan itu. Blowfish akan datang ke suatu tempat setelah itu (meskipun ada beberapa yang lain yang mungkin saya rekomendasikan sebelum Blowfish).

Jerry Coffin
sumber
11
Saya pikir algoritme lain dianggap lebih aman daripada Rijndael, tetapi algoritme ini menawarkan kinerja yang sangat baik sementara keamanannya dinilai cukup baik. Mendesain algoritme sandi selalu merupakan trade-off antara keamanan dan kinerja.
CodesInChaos
10
@CodeInChaos: Bergantung pada sudut pandang Anda, itu setidaknya benar - Ular mungkin adalah desain yang paling konservatif. Secara khusus, mereka memperkirakan versi 16 putaran akan cukup - jadi mereka menggandakannya menjadi 32 putaran. Serangan terbaik yang saat ini diketahui hanya efektif melawan 11 ronde. Jika pertanyaan awal tidak secara khusus membatasi pilihan untuk AES dan Blowfish, dan hanya menanyakan sandi yang paling aman dan cukup terkenal, saya mungkin akan mengatakan Serpent ...
Jerry Coffin
Juga, "Selain menarik" itu muncul dalam beberapa pertanyaan dan sumber saat belajar untuk ujian CompTIA Security + saya. Hal-hal kecil mungkin tidak begitu berguna!
Everlight
Blowfishadalah yang tercepat
pengguna924
22

Ini adalah fakta yang tidak sering diakui bahwa ukuran blok dari sebuah cipher blok juga merupakan pertimbangan keamanan yang penting (meskipun tidak sepenting ukuran kunci).

Blowfish (dan sebagian besar cipher blok lain dari era yang sama, seperti 3DES dan IDEA) memiliki ukuran blok 64 bit, yang dianggap tidak cukup untuk ukuran file besar yang umum saat ini (semakin besar file, dan semakin kecil ukuran blok , semakin tinggi kemungkinan blok berulang dalam ciphertext - dan blok berulang seperti itu sangat berguna dalam kriptanalisis).

AES, di sisi lain, memiliki ukuran blok 128 bit. Pertimbangan ini sendiri adalah pembenaran untuk menggunakan AES daripada Blowfish.

kafe
sumber
2
Keuntungan dari blocksize 64-bit adalah membuatnya lebih mudah untuk menjatuhkan algoritma baru ke dalam aplikasi lama sebagai pengganti (3-) DES.
dajames
Ukuran blok adalah argumen yang menarik. Saya menulis, beberapa bulan yang lalu, sebuah artikel yang berteori bahwa ukuran blok dari setiap cipher simetris dapat diperpanjang hingga berapa pun: cubicspot.blogspot.com/2013/02/…
CubicleSoft
16

Dalam hal algoritme itu sendiri, saya akan menggunakan AES, karena alasan sederhananya adalah bahwa algoritme tersebut telah diterima oleh NIST dan akan ditinjau sejawat dan kriptanalisis selama bertahun-tahun. Namun saya akan menyarankan bahwa dalam aplikasi praktis, kecuali Anda menyimpan beberapa file yang ingin dirahasiakan oleh pemerintah (dalam hal ini NSA mungkin akan memberi Anda algoritme yang lebih baik daripada AES dan Blowfish), menggunakan salah satu dari algoritme ini menang tidak membuat terlalu banyak perbedaan. Semua keamanan harus ada di kunci, dan kedua algoritme ini tahan terhadap serangan brute force. Blowfish hanya terbukti lemah pada implementasi yang tidak memanfaatkan 16 putaran penuh. Dan meskipun AES lebih baru, fakta itu seharusnya membuat Anda lebih condong ke BlowFish (jika Anda hanya mempertimbangkan usia). Pikirkan seperti ini,

Inilah yang akan saya ajukan kepada Anda ... daripada melihat kedua algoritme ini dan mencoba memilih di antara algoritme tersebut, mengapa Anda tidak melihat skema pembuatan kunci Anda. Penyerang potensial yang ingin mendekripsi file Anda tidak akan duduk di sana dan menghasilkan sekumpulan kunci teoretis yang dapat digunakan dan kemudian melakukan serangan brute force yang dapat memakan waktu berbulan-bulan. Sebaliknya dia akan mengeksploitasi sesuatu yang lain, seperti menyerang perangkat keras server Anda, merekayasa balik perakitan Anda untuk melihat kunci, mencoba menemukan beberapa file konfigurasi yang memiliki kunci di dalamnya, atau mungkin memeras teman Anda untuk menyalin file dari komputer Anda . Itu akan menjadi tempat di mana Anda paling rentan, bukan algoritme.

nerdybeardo
sumber
4
AES baru-baru ini ditambahkan ke daftar "sandi yang rusak" di Wikipedia, tetapi serangan terburuk terhadap Blowfish adalah terhadap sangat sedikit empat putaran dan jelas hilang dari daftar sandi yang rusak. Komentar Bruce tentang keterkejutan bahwa orang-orang masih menggunakan Blowfish adalah yang membuat pelaksana menjauh. Namun, itu tidak rusak, memiliki dukungan untuk ukuran kunci variabel, mendukung ukuran kunci yang lebih besar dari AES, dan, dari perspektif pemrograman, mudah diimplementasikan dibandingkan dengan kebanyakan cipher blok simetris lainnya. Blowfish telah bertahan dalam ujian waktu, yang merupakan ancaman terbesar bagi sandi simetris.
CubicleSoft
Saya setuju AES sama sekali tidak rusak. Namun dalam 10 tahun ke depan kita akan membutuhkan standar baru. Juga salah satu finalis AES adalah sandi yang fantastis. Ular sebenarnya dianggap oleh banyak orang sebagai yang paling sulit dihancurkan, tetapi AES adalah yang paling elegan. (Dan ya, jika Anda melihat cara Anda melakukan enkripsi dan dekripsi, itu sangat elegan.)
nerdybeardo
8

AES.

(Saya juga berasumsi bahwa maksud Anda adalah dua ikan bukan blowfish yang jauh lebih tua dan lebih lemah)

Keduanya (AES & twofish) adalah algoritme yang bagus. Namun bahkan jika mereka sama atau dua ikan sedikit lebih unggul dalam hal teknis, saya MASIH memilih AES.

Mengapa? Publisitas. AES adalah standar untuk enkripsi pemerintah dan dengan demikian jutaan entitas lain juga menggunakannya. Seorang cryptanalyst berbakat hanya mendapatkan lebih banyak "keuntungan untuk uang" menemukan kekurangan di AES kemudian melakukannya untuk twofish yang kurang tahu dan digunakan.

Ketidakjelasan tidak memberikan perlindungan dalam enkripsi. Semakin banyak tubuh yang melihat, mempelajari, menyelidiki, menyerang algoritme selalu lebih baik. Anda menginginkan algoritme yang paling "diperiksa" dan saat ini adalah AES. Jika suatu algoritme tidak tunduk pada pengawasan yang intens dan terus-menerus, Anda harus menurunkan keyakinan akan kekuatannya. Yakin twofish belum dikompromikan. Apakah itu karena kekuatan sandi atau hanya karena tidak cukup banyak orang yang memeriksanya ..... BELUM

Gerald Davis
sumber
5

Pilihan algoritma mungkin tidak terlalu penting. Saya akan menggunakan AES karena telah diteliti dengan lebih baik. Yang lebih penting adalah memilih mode operasi yang tepat dan fungsi derivasi kunci .

Anda mungkin ingin melihat spesifikasi format TrueCrypt sebagai inspirasi jika Anda menginginkan akses acak yang cepat. Jika Anda tidak memerlukan akses acak daripada XTS bukanlah mode optimal, karena memiliki kelemahan mode lain tidak. Dan Anda mungkin ingin menambahkan semacam pemeriksaan integritas (atau kode otentikasi pesan) juga.

CodesInChaos
sumber
1
Tentu - sangat penting untuk menggunakan fungsi derivasi kunci yang baik, seperti PBKDF2.
kafe
3

Saya tahu jawaban ini melanggar persyaratan pertanyaan Anda, tetapi saya pikir jawaban yang benar untuk maksud Anda hanyalah ini: gunakan algoritma mana pun yang memungkinkan Anda memiliki panjang kunci terpanjang, kemudian pastikan Anda memilih kunci yang benar-benar bagus. Perbedaan kecil dalam performa algoritme yang paling terkenal (secara kriptografis dan kronologis) dibanjiri oleh beberapa bit kunci tambahan.

Mike Jones
sumber
7
Saya tidak setuju. Cipher Lucifer IBM (pendahulu DES) digunakan sebagai kunci 128-bit - tetapi DES (hanya dengan kunci 56-bit) ternyata jauh lebih aman setelah kriptanalisis diferensial ditemukan (kembali).
Jerry Coffin
3
Hanya dengan melihat panjang kunci adalah metrik yang sangat buruk.
Gerald Davis
2
Itulah mengapa saya mengatakan "algoritma yang paling dihormati". Jika Anda menganggap Blowfish 128bit lebih rendah daripada AES 128bit, Anda harus setuju bahwa Blowfish 256bit meniup AES 128bit keluar air. Sama pentingnya, pembuatan dan manajemen kunci sama pentingnya. Jika kunci Anda adalah "sandi", tidak masalah sama sekali algoritme apa yang Anda gunakan. Apa yang saya katakan adalah OP mungkin melihat hal yang salah.
Mike Jones
2
Dinyatakan dalam pertanyaan bahwa kunci akan diturunkan dari kata sandi. Memecah sistem dengan memaksa kata sandi kemungkinan besar jauh lebih mudah daripada menyerang salah satu algoritma yang disebutkan di sini. Keylength hampir seluruhnya tidak dapat digunakan lagi jika key tersebut berasal dari password.
dajames
Anda menandai jawaban saya, meskipun Anda mengatakan hal yang persis sama dengan yang saya lakukan? Saya mengatakan panjang kunci dan memilih kunci yang sangat bagus. Menurut definisi "baik" apa yang akan Anda anggap sebagai kunci bagus jika tidak mengisi semua bagian kunci?
Mike Jones
3

Kedua algoritma (AES dan twofish) dianggap sangat aman. Ini telah dibahas secara luas dalam jawaban lain.

Namun, karena AES banyak digunakan sekarang di tahun 2016, AES secara khusus telah diakselerasi dengan perangkat keras di beberapa platform seperti ARM dan x86. Meskipun tidak jauh lebih cepat dari twofish sebelum akselerasi perangkat keras, AES sekarang jauh lebih cepat berkat instruksi CPU khusus.

galinette
sumber