Apa itu Stream Cipher?

Sebuah stream cipher adalah jenis algoritma yang digunakan dalam enkripsi data di mana sumber yang perlu dienkripsi diproses terhadap urutan kunci yang muncul secara acak. Jenis cipher ini agak fleksibel dalam arti bahwa itu dapat memvariasikan enkripsi saat teks sedang diproses. Mereka juga kadang-kadang disebut sebagai sandi negara karena enkripsi juga tergantung pada status operasi saat ini. Berbeda dengan cipher blok, yang bekerja pada potongan data 64 bit sekaligus, stream cipher dapat beroperasi pada satu bit. Untuk alasan ini, aliran dapat diproses pada kecepatan tinggi dengan kekuatan pemrosesan yang sangat kecil.

Stream cipher pertama dirancang oleh Gilbert Vernam pada tahun 1917. Vernam kemudian juga membantu menciptakan cipher yang dikenal sebagai one-time pad, yang merupakan bentuk stream cipher yang menggunakan kunci satu kali untuk mengenkripsi data. Dalam one-time pad, kunci yang dihasilkan memiliki panjang yang sama dengan data yang perlu dienkripsi, benar-benar acak, dan tidak pernah digunakan lagi di tempat lain, begitulah namanya.

Ketika diproses terhadap data yang akan dienkripsi, biasanya disebut sebagai plaintext, ciphertext yang dihasilkan tidak mungkin didekripsi tanpa kunci. Pad satu kali sulit untuk ditangani di sebagian besar skenario, dan oleh karena itu, hanya digunakan untuk situasi yang sangat eksklusif. Namun, stream cipher biasanya dianggap berguna, sehingga kuncinya dipersingkat dan dibuat pseudorandom, yang berarti secara statistik acak tetapi kenyataannya tidak.

Stream cipher memiliki kemampuan untuk mengenkripsi dengan cepat. Dengan cara ini, bahkan stream cipher sederhana dapat dilakukan oleh orang-orang di atas pena dan kertas, sedangkan cipher blok biasanya memerlukan penggunaan komputer untuk memprosesnya. Plaintext mengalir melalui proses enkripsi bersama dengan keystream, urutan pseudorandom yang membentuk kunci, di mana ia diubah dan keluar sebagai ciphertext.

Biasanya, enkripsi ini terjadi melalui operasi eksklusif-atau (XOR) pada bit individu saat melewati cipher. Sebuah sandi XOR sederhana menggunakan jenis disjungsi logis sebagai dasarnya, yang pada dasarnya mengatakan bahwa hasilnya bisa benar jika salah satu operan benar, tetapi tidak keduanya. Misalnya, jika bit yang bergerak melalui proses enkripsi adalah nol atau satu, dan bit keystream yang dipasangkan tidak cocok, output yang dihasilkan adalah satu. Jika bit dan bit keystream berpasangan cocok, di mana keduanya adalah satu, atau keduanya adalah nol, hasilnya adalah nol. Aliran terenkripsi dari satu dan nol kemudian didekripsi di ujung transmisi yang lain menggunakan keystream yang sama untuk mengubah bit kembali menjadi plaintext aslinya.

Ada dua jenis stream cipher. Menggunakan metode sinkron, keystream dibuat terpisah dari plaintext atau ciphertext dan kemudian digabungkan untuk menyediakan enkripsi atau dekripsi. Dengan metode ini, ujung pengirim dan penerima transmisi harus tetap sinkron di mana keduanya beroperasi pada kunci yang sama dan posisi yang sama pada kunci tersebut. Jika terjadi masalah, dekripsi perlu dimulai dari awal, atau mungkin ada flag yang ditempatkan sebentar-sebentar di seluruh ciphertext yang menunjukkan titik awal baru. Sebuah cipher sinkronisasi diri, di sisi lain, akan memperbarui keystream berdasarkan beberapa angka sebelumnya dalam ciphertext.
Salah satu stream cipher yang paling sering digunakan, disebut RC4, dibuat oleh RSA Data Security®. Ini dilisensikan untuk dan digunakan di sejumlah produk perangkat lunak, serta protokol lapisan soket aman (SSL) yang digunakan dalam komunikasi Internet aman dan enkripsi privasi setara kabel (WEP) yang digunakan dengan perangkat nirkabel. Cipher lain yang sering digunakan dikenal sebagai ORYX, yang telah digunakan dalam transmisi data telepon seluler yang perlu dienkripsi. IBM® juga telah mengembangkan metode enkripsi aliran yang dikenal sebagai SEAL, yang telah digunakan dalam enkripsi hard disk.