Algoritma RC4 (Rivest Code 4) merupakan salah satu algoritma kriptografi modern yang tergolong ke dalam Algoritma Simetris. Algoritma simetris adalah algoritma kriptografi yang memakai kunci sama saat proses enkripsi (proses penyandian pesan) dan proses dekripsi (proses pengembalian pesan asli).
Algoritma RC4
Algoritma simetris dibagi ke dalam dua bagian yaitu :
- Stream Cipher (Cipher aliran) : Proses enkripsi dan dekripsi dilakukan dengan cara bit per bit atau biasa disebut dengan enkripsi atau dekripsi terhadap aliran bit.
- Block Cipher (Cipher Blok) : Proses enkripsi dan dekripsi dilakukan terhadap data yang kemudian dibagi menjadi blok-blok data terlebih dahulu lalu proses enkripsi atau dekripsi dilakukan terpisah terhadap masing-masing blok data.
Algoritma RC4 termasuk ke dalam golongan Stream Cipher (Cipher aliran). yang mengenkripsi antara kombinasi plainteks dengan menggunakan bit-wise Xor (Exclusive-or). RC4 menggunakan panjang kunci dari 1 sampai 256 byte yang digunakan untuk menginisialisasikan tabel sepanjang 256 byte. Tabel ini digunakan untuk generasi yang berikut dari pseudo random yang menggunakan XOR dengan plaintext untuk menghasilkan ciphertext. Masing – masing elemen dalam tabel saling ditukarkan minimal sekali.
Implementasi RC4 dalam Computer Security
Aloritma yang dibuat oleh Ron Rivest pada tahun 1987 ini banyak diimplementasikan dalam computer security, diantaranya seperti :
- Protokol SSL (Security Socket Layer)
- WPA (Wifi Protect Access) untuk jaringan nirkabel
- Enkripsi Citra Digital
- Pengamanan File atau pesan
- Pengamanan pada Smart Card
- Enkripsi Record atau field Basis Data
- dll
Tahapan pada Algoritma Rc4
- Langkah ke 1 : Inisialisasi larik S: S0 = 0, S1 = 1, …, S255 = 255
- Langkah ke 2 : Menentukan nilai kunci. Jika panjang kunci U < 256, lakukan padding sehingga panjang kunci menjadi 256 byte. Contoh U = “abc” (3 byte), maka lakukan padding U = “abcabc….” hingga U mencapai 256 byte.
- Langkah ke 3 : Lakukan permutasi nilai-nilai di dalam larik S
- Langkah ke 4 : Bangkitkan aliran-kunci
- Langkah Akhir : Lakukan enkripsi
Contoh Perhitungan Algoritma Rc4
Dalam studi kasus perhitungan kita kali ini, kita akan mengenkripsi mode 4 byte (untuk lebih menyederhanakan dalam perhitungan manual).
- S-Box yang kita miliki contohnya dengan panjang 4 byte, dengan S[0]=0, S[1]=1, S[2]=2 dan S[3]=3 sehingga array S menjadi: 0 1 2 3 (Langkah ke 1)
- 4 byte kunci array : K = 2 5 7 3 (ini sesuai keinginan ya, harus dirahasiakan). (Langkak ke 2)
- Plainteks/pesan asli yang akan dienkripsi : Contohnya, H A L O
Ekpansi Kunci
Sebelum melakukan enkrispi (Merubah pesan asli menjadi code rahasia/cipherteks), dalam algoritma ini kita perlu mambangkitkan kunci terlebih dahulu untuk mendapatkan keystream. Untuk menghasilkan keystream ini, state internal yang meliputi dua bagian: (Yaitu langkah ke 3 dan ke 4 dari tahapan yang telah di tuliskan di atas.
Langsung saja ke contohnya ya…
Lakukan KAS (Key State Array) / (Langkah ke 3)
RUMUSNYA ADALAH :
Karena contoh perhitungan kita menggunakan 4 byte (contoh sederhana), maka iterasi yang akan kita jalani adalah sebanyak 4 iterasi.
Iterasi 1
Penjelasan:
i = 0 untuk nilai awal i, begitu juga dengan j bernilai 0, S[0] = 0 sesuai dengan angka yang ada pada langkah pertama, sedangkan K [0] berisi kunci yang ada pada langkah kedua, yaitu K[0] = 2. Jadi sobat, semua urutan diawali dengan 0 ya, bukan 1.
swap artinya mengganti posisi array dari array awal yang ada di langkah ke 1 yaitu 0 1 2 3. swap S[0] dengan S[2] berarti 0 berganti posisi dengan 2 sehingga menjadi 2 1 0 3.
Iterasi 2
Penjelasan :
Pada iterasi ke dua kita melihat bahwa i sudah menjadi 1 karena i akan bertambah 1 untuk setiap iterasi. Jika kita lihat nilai j adalah 2. Nilai j ini berasal dari nilai ahir j pada iterasi sebelumnya. Kemudian nilai S, K diteruskan dari urutan sebelumnya.
Begitulah langkah selanjutnya hingga iterasi ke 4 sebagai berikut :
eterasi 3
eterasi 4
Sampai disini tahapan ke 3 dari proses Enkripsi telah selesai. Nah sekarang kita masuk pada tahapan selanjutnya.
Lakukan PRGA (pseudo-random generation Automaton) / (Langkah ke 4)
RUMUSNYA ADALAH :
Sama seperti tahap sebelumnya, iterasi yang ada pada tahap ini juga terjadi sebanyak 4 kali.
Iterasi 1
Penjelasan :
Perlu diketahui bahwa Nilai Array awal disini adalah nilai akhir Array dari proses sebelumnya yaitu 1 2 0 3
Nilai awal i dan j =0 karena nilai awal dari proses tahap ini. i ditambahkan dengan 1 untuk setiap iterasi ya kawan. Sedangkan j ditambahkan dengan S[nilai i] . Swap sama artinya seperti pada proses sebelumnya yaitu menukar tempat array dari i dan j yang telah dihasilkan. Kemudian pada langkah ini kunci akan didapat dari penjumlahan nilai array dari i dan j. Pada contoh di atas hasil kunci adalah 2 dan dikonversi ke dalam bilangan biner.
Iterasi 2
Penjelasan;
Pada iterasi ke dua, dilakukan hal yang sama dengan nilai i ditambah 1. Sedangkan nilai j adalah nilai ahir j dari proses sebelumnya. Nah, selebihnya caranya sama ya dengan yang sebelumnya, hingga iterasi terahir.
Iterasi 3
Iterasi 4
Enkripsi Pesan
Nah, sekarang masuklah kita pada tahap terahir yaitu enkripsi pesan. Setelah menemukan kunci untuk tiap karakter, makadilakukan operasi XOR antara karakter pada plaintext dengan kunci yang dihasilkan. Berikut adalah tabel ASCII untuk tiap-tiap karakter pada plaintks yang digunakan.Huruf Kode ASCII (Binary 8 bit)
H = 01001000, A = 01000001, L = 01001100, O = 01001111
Berikut adalah proses pengXORan dari plainteks dengan key yang telah didapat:
H A L O : 01001000 01000001 01001100 01001111
Key : 00000010 00000011 00000010 00000011
Cipherteks : 01001010 01000010 01001110 01001100
Jika Cipherteks dalam bentuk biner ini diubah ke dalam kode ASCII maka hasilnya adalah kata sandi : J B N L
NB: Perlu diingat bahwa XOR adalah operasi pada bilangan biner yang hasilnya akan bernilai 1 jika kedua karakter memiliki angka yang berbeda, dan bernilai 0 jika karakter sama (contoh : 0 XOR 1 = 1 atau sebaliknya 1 XOR 0 = 1, 0 XOR 0 = 0, dan 1 XOR 1 = 0. )
Dekripsi Sandi
Proses dekripsi ciphertext menggunakan algoritma RC4 ini sama untuk proses key-schedule-nya. Untuk mendapatkan plaintext, ciphertext yang diperoleh di XORkan dengan pseudo random byte yang didapat sebelumnya. Maka hasilnya adalah plainteks atau teks asli.
Pesan dikirim dalam bentuk cipherteks sehingga setelah sampai di penerima pesan dapat kembali diubah menjadi plainteks dengan meng-XOR-kan dengan kunci yang sama. Pemrosesan pesan setelah sampai pada penerima dapat dilihat pada dibawah ini.
Proses XOR pseudo random byte dengan cipherteks pada dekripsi yaitu:
Cipherteks : 01001010 01000010 01001110 01001101
pseudo random byte : 00000010 00000011 00000010 00000011
Plainteks :
01001000 01000001 01001100 01001111
H A L O
Demikian penjelasan algoritma RC4, semoga kawan pada ngerti ya.
Belajar implementasi algoritma RC4 di php yuk langsung ke https://www.kodefan.com/implementasi-algoritma-aes-128-dan-rc4-di-php/