ALGORITMA KRIPTOGRAFI RC4
ABSTRAK
Makalah ini akan membahas Algoritma
RC4 sebagai salah satu metode enkripsi. Enkripsi adalah proses penyamaran suatu
pesan atau sandi menjadi bentuk yang tidak mempunyai makna untuk menjaga
kerahasiaan, keamanan, atau keotentikan suatu pesan atau sandi. Pada proses ini
plainteks atau teks asli dikonversikan menjadi cipherteks (teks tersandi). RC4
atau Rivest Cipher 4 dibuat oleh Ron Rivest di Laboraturium RSA pada tahun
1987[2]. RC4 adalah salah satu jenis stream cipher yang sinkron yaitu cipher yang
memiliki kunci simetris dan mengenkripsi atau mendekripsi plainteks secara
digit per digit atau bit per bit dengan cara mengkombinasikan secara operasi
biner (biasanya operasi XOR) dengan sebuah angka semiacak. RC4 dapat dijalankan
dengan panjang kunci variabel dan beroperasi dengan orientasi byte. Metode
enkripsi RC4 memiliki kelemahan. Kelemahan yang paling dikenal adalah
Bit-Flipping Attack atau BFA di mana penyerang dapat mengetahui sample atau
keseluruhan plainteks dari cipherteks tanpa harus mengetahui kunci enkripsi.
Walaupun punya banyak kelemahan, tetapi metode enkripsi RC4 saat ini masih
menjadi metode enkripsi yang banyak digunakan. RC4 saat ini masih diaplikasikan
pada pengenkripsian PDF, pengamanan WEP, dan SSL.
1 PENDAHULUAN
Di era globalisasi saat ini, mendapatkan informasi sangatlah
mudah. Setiap orang dengan mudah mendapatkan data ataupun berita yang
diinginkan. Hal ini didukung dengan teknologi informasi dan komunikasi yang
terus berkembang pesat dari tahun ke tahun. Akan tetapi kemudahan mendapatkan
informasi juga memberikan ancaman. Beberapa ancaman yang diberikan adalah
masalah tentang keamanan, kerahasiaan, dan keotentikan data. Oleh karena itu
diperlukan suatu sistem pengamanan data yang bertujuan untuk meningkatkan
keamanan data, melindungi suatu data atau pesan agar tidak dibaca oleh pihak
yang tidak berwenang, dan mencegah pihak yang tidak berwenang untuk
menyisipkan, menhapus, ataupun merubah data. Salah satu ilmu pengamanan data
yang terkenal adalah kriptografi. Kriptografi adalah ilmu sekaligus seni untuk
menjaga kerahasiaan pesan, data, atau informasi dengan cara menyamarkannya
menjadi bentuk tersandi yang tidak mempunyai makna[1].
Dalam kriptografi, terdapat 2 proses utama, enkripsi dan dekripsi.
Enkripsi adalah proses penyandian pesan asli atau plainteks menjadi cipherteks
(teks tersandi). Sedangkan dekripsi adalah proses penyandian kembali cipherteks
menjadi plainteks. [1]. Salah satu metode enkripsi yang terkenal adalah metode
RC4. RC4 pertama kali dibuat oleh Ron Rivest di Laboraturium RSA pada tahun
1987. Awalnya RC4 adalah sebuah rahasia dagang, akan tapi pada September 1994,
kode tersebut dikirim oleh seseorang yang tidak diketahui ke milist Chypermunks
dan menyebar ke banyak situs internet. Kode yang bocor tersebut akhirnya
dikonfirmasi sebagai RC4 karena memiliki output yang sama dengan software
dengan license RC4 di dalamnya. Karena algoritma sudah diketahui, RC4 tidak
lagi menjadi rahasia dagang. Nama "RC4" sekarang adalah sebuah merek
dagang, namun sering disebut sebagai "ARCFOUR" atau "ARC4"
(artinya diduga RC4, karena algoritma ini tidak pernah dirilis secara resmi
oleh RSA), untuk menghindari kemungkinan masalah tentang merek dagang[2]. RC4
(Rivest Cipher 4) adalah sebuah synchrone stream cipher, yaitu
cipher yang memiliki kunci simetris dan mengenkripsi plainteks secara digit per
digit atau byte per byte dengan cara mengkombinasikan dengan operasi biner
(biasanya XOR) dengan sebuah angka semiacak.
2 MEKANISME
DASAR KERJA RC4
Algoritma RC4 adalah algoritma kriptografi simetrik. Disebut
algoritma kriptografi simetrik karena menggunakan kunci yang sama untuk
mengenkripsi ataupun mendekripsi suatu pesan, data, ataupun informasi. Kunci
enkripsi didapat dari sebuat 256 bit state-arrayyang
diinisialisasi dengan sebuah key tersendiri
dengan panjang 1-256 bit. Setelah itu, state-array tersebut
akan diacak kembali dan diproses untuk menghasilkan sebuah kunci enkripsi yang
akan di-XOR-kan dengan plainteks ataupun cipherteks. Secara umum, algoritma RC4
terbagi menjadi dua, inisalisasi state-array dan
penghasilan kunci enkripsi serta pengenkripsiannya.
2.1
Penginisialisasian
State-Array
Dalam penginisialisasian state-array, terdapat 2 statearray yang harus diinisialisasi, S
dan K. Array S sebesar 256
bit diinisialisasi dengan angka dari 0 sampai dengan 255. Sedangkan array K sebesar 256 bit diisi dengan
key dengan panjang 1-256 bit secara
berulang sampai seluruh array
K terisi penuh. Setelah itu, dilakukan Key Scheduling Algorithm untuk menghasilkan permutasi
dari array S berdasarkan key yang
tersedia.
for i from 0 to 255
S[i]
:= i
endfor
j :=
0
for i from 0 to 255
j :=
(j + S[i] + key[i mod
keylength])
mod 256
swap(&S[i],&S[j])
endfor
Proses
swap di atas adalah proses menukar nilai antara S[i] dengan S[j]. Proses swap
memiliki algoritma sebagai berikut.
temp = s[i];
s[i] = s[j];
s[j] = temp;
2.2 Penghasilan Kunci Enkripsi dan Pengenkripsian
Setelah
memiliki state array yang telah teracak, maka kita akan menginisialisasi kembali
i dan j dengan 0. Setekah itu, kita lakukan pseudo-random generation algorithm
atau PRGA untuk menghasilkan kunci enkripsi (dalam hal ini cipher_byte) yang
akan di-XOR-kan dengan plainteks. Untuk menghasilkan kunci enkripsi, PRGA meng-incremen
i,
menambahkan nilai S[i] dan S[j] menukar nilai keduanya, dan nilai kunci yang
dihasilkan adalah S dengan indeks yang sama dengan jumlah S[i] dan S[j]
di-modulo dengan 256.
i := 0
j := 0
while
GeneratingOutput:
i := (i + 1) mod
256
j := (j + S[i])
mod 256
swap(&S[i],&S[j])
byte_cipher :=
S[(S[i] + S[j])
mod 256]
result_ciphered
:= byte_cipher
XOR byte_message
Endwhile
2.3 Contoh Enkripsi dengan metode RC4
Untuk menunjukkan bagaimana RC4 bekerja pada tingkat dasar, mari
kita state-array 4 bit. Hal ini dikarenakan akan sangat sulit menggambarkan
proses RC4 secara manual dengan state-array 256 bit. Kali ini, kita akan
mengenkripsi kata HALO dengan kunci 3123. Pertama, kita menginisialisasi array
S 4 bit sehingga terbentuk state-array S dan state-array K sebagai berikut,
Array S
0 1 2 3
Array K
2 5 7 3
Inisialisasi
i dan j dengan 0 kemudian dilakukan KSA agar tercipta state-array yang acak.
Penjelasan iterasi lebih lanjut dapat dijelaskan sebagai berikut:
Iterasi 1
i = 0
j = (0 + S[0] +
K [0 mod 4]) mod 4
= (0 + 0 + 2)
mod 4 = 2
Swap (S[0],S[2])
Hasil
Array S
2
1 0 3
Iterasi 2
i = 1
j = (2 + S[1] +
K [1 mod 4]) mod 4
= (2 + 1 + 5)
mod 4 =0
Swap (S[1],S[0])
Hasil
Array S
1 2 0 3
Iterasi 3
i = 2
j = (0 + S[2] +
K [2 mod 4]) mod 4
= (0 + 0 + 7)
mod 4 = 3
Swap (S[2],S[3])
Hasil
1 2 3 0
Iterasi 4
i = 3
j = (3 + S[3] +
K [3 mod 4]) mod 4
= (3 + 0 + 3)
mod 4 = 2
Swap (S[3],S[2])
Hasil
Array S
1
2 0 3
Setelah
melakukan KSA, akan dilakukan PRGA. PRGAakan dilakukan sebanyak 4 kali
dikarenakan plainteks yang akan dienkripsi berjumlah 4 karakter. Hal ini
disebakan karena dibutuhkan 1 kunci dan 1 kali pengoperasian XOR untuk
tiap-tiap karakter pada
plainteks. Berikut adalah
tahapan penghasilan kunci enkripsi dengan PRGA.
Array S
1
2 0 3
Inisialisasi
i = 0
j = 0
Iterasi 1
i = (0 + 1) mod 4 = 1
j = (0 + S[1]) mod 4 = (0+ 2) mod
4 = 2
swap (S[1],S[2])
1
0 2 3
K1 = S[(S[1]+S[2]) mod 4] = S[2
mod 4] = 2
K1 = 00000010
Iterasi 2
i = (1 + 1) mod 4 = 2
j = (2 + S[2]) mod 4 = (2+ 2) mod
4 = 0
swap (S[2],S[0])
2
0 1 3
K2 = S[(S[2]+S[0]) mod 4] = S[3
mod 4] = 3
K2 = 00000011
Iterasi 3
i = (2 + 1) mod 4 = 3
j = (0 + S[3]) mod 4 = (0+ 3) mod
4 = 3
swap (S[3],S[3])
1
0 2 3
K3 = S[(S[3]+S[3]) mod 4] = S[6
mod 4] = 2
K3 = 00000010
Iterasi 4
i = (3 + 1) mod 4 = 0
j = (3 + S[0]) mod 4 = (3+ 1) mod
4 = 0
swap (S[0],S[0])
1
0 2 3
K1 = S[(S[0]+S[0]) mod 4] = S[2
mod 4] = 2
K1 = 00000010
Setelah menemukan kunci untuk tiap karakter, maka dilakukan
operasi XOR antara karakter pada plaintext dengan kunci yang dihasilkan. Berikut
adalah tabel ASCII untuk tiap-tiap karakter pada plaintks yang digunakan.
Tabel
1 Kode ASCII untuk setiap karakter plainteks yang digunakan
Huruf
|
Kode
ASCII(Binary 8 bit)
|
H
|
01000001
|
L
|
01001111
|
H
|
01000001
|
L
|
01001111
|
Proses XOR dari kunci bisa
dilihat pada tabel 2.
Tabel
2 Proses XOR kunci enkripsi dengan plainteks pada enkripsi
H
|
A
|
L
|
O
|
|
Plain
teks
|
01001000
|
01000001
|
01001100
|
01001111
|
Key
|
00000010
|
00000011
|
00000010
|
00000010
|
Cipher
teks
|
01001010
(L)
|
01000010
(B)
|
01001110
(N)
|
01001101
(M)
|
Setelah
terkirim, pesan yang telah dienkripsi akan didekripsikan. Proses pendekripsian
dilakukan dengan proses XOR antara kunci dekripsi yang sama dengan kunci
dekripsi dengan cipherteks yang dapat dilihat di tabel 3
Tabel
3 Proses XOR kunci dekripsi dengan cipherteks pada dekripsi
L
|
B
|
N
|
M
|
|
Cipher
teks
|
01001010
|
01000010
|
01001110
|
01001101
|
Key
|
00000010
|
00000011
|
00000010
|
00000010
|
Plain
teks
|
01001000
(H)
|
01000001
(A)
|
01001100
(L)
|
01001111
(O)
|
3. Kecepatan RC4 Sebagai Salah Satu Metode Enkripsi
Kinerja RC4 sebagai metode enkripsi tergolong sangat cepat.
Selain cepat, waktu RC4 tidak terpengaruh dengan panjang keylength yang
dipakai. Berikut adalah perbandingan waktu yang digunakan untuk enkripsi dari
berbagai metode.
Gambar
2 Perbandingan waktu enkripsi dari berbagai metode
3.1 Aplikasi RC4
Walaupun
RC4 memiliki banyak kelemahan akan tetapi RC4 masih banyak digunakan. RC4
diaplikasikan untuk pengamanan beberapa hal seperti berikut.
1. WEP (Wired Equivalent Privacy)
2. BitTorrent
protocol encryption
3. Microsoft
Point-to-Point Encryption
4. Gpcode.AK,
5. PDF
4. KESIMPULAN
Kesimpulan yang dapat diambil
dari studi pemakaian metode RC4 sebagai metode enkripsi adalah:
1. RC4 adalah sebuah stream
cipher yang sinkron yang dapat dijalankan dengan panjang kunci variabel dan
mengenkripsi suatu plainteks secara digit per digit dengan kunci
Simetris
2. RC4 merupakan metode
enkripsi tercepat dibandingkan dengan DES, Triple DES, Blowfish-256, AES-128,
dan AES-256.