it-swarm-id.com

Keuntungan dan kerugian Stream versus Block Ciphers

Algoritma enkripsi seperti Blowfish, AES, RC4, DES dan Seal diimplementasikan dalam salah satu dari dua kategori sandi. Apa kelebihan/kekurangan dari tipe cipher?

66
Eric Warriner

Meskipun keduanya adalah sandi simetris, stream cipher didasarkan pada menghasilkan keystream cryptograpic "tak terbatas", dan menggunakannya untuk mengenkripsi satu bit atau byte pada suatu waktu (mirip dengan pad satu kali), sedangkan cipher blok bekerja pada potongan data yang lebih besar. (yaitu blok) pada suatu waktu, sering menggabungkan blok untuk keamanan tambahan (misalnya AES dalam mode CBC).

  • Stream cipher biasanya lebih cepat dari pada block, tetapi itu memiliki harganya sendiri.
  • Cipher blok biasanya memerlukan lebih banyak memori, karena mereka bekerja pada potongan data yang lebih besar dan sering memiliki "terbawa" dari blok sebelumnya, sedangkan sejak stream cipher bekerja pada hanya beberapa bit pada satu waktu mereka memiliki persyaratan memori yang relatif rendah (dan karena itu lebih murah untuk terapkan dalam skenario terbatas seperti perangkat tertanam, firmware, dan perangkat keras khusus).
  • Stream cipher lebih sulit diimplementasikan dengan benar, dan rentan terhadap kelemahan berdasarkan penggunaan - karena prinsipnya mirip dengan pad sekali pakai, keystream memiliki persyaratan yang sangat ketat. Di sisi lain, itu biasanya bagian yang sulit, dan dapat diturunkan ke mis. kotak eksternal.
  • Karena cipher blok mengenkripsi seluruh blok pada satu waktu (dan lebih jauh lagi memiliki mode "umpan balik" yang paling direkomendasikan), mereka lebih rentan terhadap kebisingan dalam transmisi, yaitu jika Anda mengacaukan satu bagian dari data, sisanya mungkin tidak dapat dipulihkan. Sedangkan dengan stream cipher byte byte dienkripsi secara individu tanpa koneksi ke potongan data lainnya (dalam kebanyakan cipher/mode), dan sering memiliki dukungan untuk gangguan pada saluran.
  • Juga, stream cipher tidak memberikan perlindungan integritas atau otentikasi, sedangkan beberapa cipher blok (tergantung pada mode) dapat memberikan perlindungan integritas, selain kerahasiaan.
  • Karena semua hal di atas, stream cipher biasanya terbaik untuk kasus-kasus di mana jumlah data tidak diketahui, atau kontinu - seperti aliran jaringan. Blok cipher, di sisi lain, atau lebih berguna ketika jumlah data sudah diketahui sebelumnya - seperti file, bidang data, atau protokol permintaan/respons, seperti HTTP di mana panjang total pesan diketahui sudah ada di awal.
48
AviD

A block cipher adalah algoritma serbaguna yang mengimplementasikan permutasi kunci yang bergantung pada nilai-nilai yang merupakan urutan dari sejumlah bit yang tetap (disebut "blok"). Ini dapat digunakan untuk berbagai peran dalam berbagai jenis protokol kriptografi. Salah satu peran tersebut adalah enkripsi massal aliran data yang panjang; untuk mencapai hal seperti itu, cipher blok harus digunakan dengan mode operasi yang sesuai (alias "mode chaining"), yang tradisional adalah CBC, dan mode baru yang trendi menjadi RKT.

A stream cipher adalah algoritma khusus untuk tujuan enkripsi massal dari aliran data yang panjang. Idenya adalah bahwa, dengan kehilangan fleksibilitas cipher blok, akan mungkin untuk membuat algoritma yang lebih efisien (mis. Sesuatu yang mengenkripsi data lebih cepat).

Kedua cipher blok dengan mode enkripsi berorientasi aliran, dan stream cipher, dapat mengalami masalah keamanan jika kunci yang sama digunakan dua kali, untuk dua aliran berbeda, tanpa memiliki yang sesuai, unik/cukup acak Initialization Vector. Untuk enkripsi CBC, IV harus berupa urutan bit acak yang seragam, dengan ukuran yang sama dari satu blok, untuk setiap pesan baru. Cipher stream yang baik juga menerima IV. Sebuah stream cipher tradisional yang disebut RC4 adalah IV-less (spesifikasinya tidak menyatakan di mana atau bagaimana IV bisa dimasukkan), yang menyebabkan banyak kekacauan dan memberi nama buruk kepada konsep stream cipher.

Untuk cipher stream yang lebih baru, lebih aman (dan lebih cepat), lihat portofolio eSTREAM . Algoritma ini telah melalui analisis yang agak menyeluruh oleh banyak cryptographers dan dianggap "cukup aman".

Sebuah stream cipher dapat dikonversi menjadi Pseudorandom Number Generator dengan mengenkripsi urutan panjang byte bernilai nol. Sebenarnya, banyak (tetapi tidak semua) stream cipher secara internal bekerja dengan menjadi PRNG, menghasilkan urutan panjang dari byte pseudo-acak kunci-dependen, yang kemudian digabungkan (dengan bitor XOR) dengan data untuk mengenkripsi (atau mendekripsi), sehingga mengenkripsi nol byte kemudian sama dengan menghilangkan XOR sama sekali. Oleh karena itu, stream cipher sering digunakan sebagai PRNG khusus.

26
Thomas Pornin

Satu keuntungan dari stream cipher yang belum disebutkan sebelumnya adalah mereka tidak perlu padding (cipher blok beroperasi pada blok lengkap, jadi jika Anda tidak memiliki cukup data, Anda harus menghasilkan lebih banyak lagi entah bagaimana). Dan mengejutkan (tidak benar-benar, kriptografi adalah bidang di mana Murphy berada di mana-mana), padding dapat dilakukan salah, seperti dicontohkan misalnya dalam Praktis Padding Oracle Attacks .

Juga keamanan cipher blok sangat tergantung pada mode operasi mereka, Anda masih melihat ECB digunakan di sana-sini pada waktu dan itu tidak jauh lebih baik daripada tidak ada kripto sama sekali.

Pada dasarnya Anda tidak bisa mengatakan yang satu lebih baik dari yang lain, satu harus melihat cryptosystem lengkap untuk membuat penilaian keamanan.

9
Bruno Rohée

Stream Ciphers crypts data plaintext dengan stream bit acak (biasanya dengan XOR karena dapat dibalik dengan mudah). Jika Anda memiliki data 128bit, Anda akan menggunakan strem psedurandom 128 bit ( kunci Anda) untuk mengenkripsi.

Blok Ciphers crypts data teks biasa blok pada suatu waktu dengan transformasi yang sama (berdasarkan kunci). Jadi Anda memiliki data 128bit, cipher memecahnya menjadi beberapa blok (seperti 4 blok 32 bit) dan menerapkan transformasi yang sama untuk setiap blok yang mendapatkan 4 blok terenkripsi, yang digabungkan akan membentuk kriptogram akhir.

Tentu saja karena Blok Cyphers ini lebih aman tetapi mahal untuk digunakan dalam hal kompleksitas perangkat keras yang terlibat. Stream Cipher lebih cepat dan "murah" tetapi mereka dapat rentan terhadap masalah keamanan jika diterapkan secara tidak benar.

1
gbr