Kamis, 26 Juni 2008

Enkripsi RC4 part 1

Algoritma RC4

RC4 merupakan stream cipher yang didesain oleh Rivest untuk RSA Data Security
(sekarang RSA Security) pada 1987. RC4 menggunakan panjang variabel kunci dari
1 s.d 256 byte untuk menginisialisasi state table. State table digunakan untuk
pengurutan menghasilkan byte pseudo-random yang kemudian menjadi stream pseudo-random. Setelah di-XOR dengan plaintext sehingga didapatkan ciphertext. Tiap elemen pada state table di swap sedikitnya sekali. Kunci RC4 sering dibatasi sampai
40 bit, tetapi dimungkinkan untuk mengunakan kunci 128 bit. RC4 memiliki kemampuan penggunaan kunci antara 1 sampai 2048 bit.

Panjang kunci merupakan faktor utama dalam sekuritas data. RC4 dapat memiliki
kunci sampai dengan 128 bit. Protokol keamanan SSL (Secure Socket Layer) pada
Netscape Navigator menggunakan algoritma RC4 40-bit untuk enkripsi simetrisnya.
Tahun 1995, Damien Doligez menjebolnya menggunakan 120 komputer Unix yang terhubung pada jaringan dalam waktu 8 hari. Dengan cara seperti ini (Brute Force Attack), dijamin bahwa dalam 15 hari kunci itu pasti ditemukan.

Algoritma RC4 memiliki dua fase, setup kunci dan pengenkripsian. Setup untuk
kunci adalah fase pertama dan yang paling sulit dalam algoritma ini. Dalam setup
N-bit kunci (N merupakan panjang dari kunci), kunci enkripsi digunakan untuk
menghasilkan variabel enkripsi yang menggunakan dua buah array, state dan kunci,
dan sejumlah-N hasil dari operasi penggabungan. Operasi penggabungan ini terdiri
dari pemindahan(swapping) byte, operasi modulo, dan rumus lain. Operasi modulo
merupakan proses yang menghasilkan nilai sisa dari satu pembagian. Sebagai contoh,
11 dibagi 4 adalah 2 dengan sisa pembagian 3; begitu juga jika tujuh modulo empat maka
akan dihasilkan nilai tiga.

Dahulu, variabel enkripsi dihasikan dari setup kunci dimana kunci akan di XOR-kan
dengan plain text untuk menghasilkan teks yang sudah terenkripsi. XOR merupakan
operasi logik yang membandingkan dua bit biner. Jika bernilai beda maka akan
dihasilkan nilai 1. Jika kedua bit sama maka hasilnya adalah 0. Kemudian penerima
pesan akan mendekripnya dngan meng XOR-kan kembali dengan kunci yang sama agar
dihasilkan pesan dari plain text tersebut.

Untuk menunjukan cara kerja dari algoritma RC4, berikut akan dijelaskan dengan
menggunakan empat-bit kunci, agar terlihat sederhana.

Buat array state Si berukuran 4 byte, yang memiliki nilai 0 sampai dengan 3
Si = 0 1 2 3
S0 S1 S2 S3

Buat array kunci Ki berukuran 4 byte, yang memiliki nilai pengulangan dari
kunci untuk memuat keseluruhan isi array. (sebagai contoh 1 dan 7)
Ki = 1 7 1 7
K0 K1 K2 K3

Untuk operasi penggabungan akan digunakan variabel i dan f untuk meng-index
array Si dan Ki . Pertama inisialisasikan i dan f dengan nilai 0. operasi penggabungan
merupakan iterasi dari formula ( f + Si + Ki ) mod 4 diikuti penggantian(swap)
nilai Si dan Sf.

Iterasi pertama
for i = 0 ( 0 + 0 + 1 ) mod 4 = 1 = f
f S0 K0

Swap S0 dengan S1
Si = 1 0 2 3
S0 S1 S2 S3

Iterasi kedua
for i = 1 ( 1 + 0 + 7 ) mod 4 = 0 = f
f S1 K1


Swap S1 dengan S0
Si = 0 1 2 3
S0 S1 S2 S3

Iterasi ketiga
for i = 2 ( 0 + 2 + 1 ) mod 4 = 3 = f
f S2 K2

Swap S2 dengan S3
Si = 0 1 3 2
S0 S1 S2 S3

Iterasi keempat
for i = 3 ( 3 + 0 + 7 ) mod 4 = 2= f
f S3 K3

Swap S3 dengan S2
Si = 0 1 2 3
S0 S1 S2 S3

Tentukan nilai byte acak untuk enkripsi. Inisialisasi ulang i dan f menjadi
0, set i menjadi (i + 1) mod 4 dan set f menjadi (f + Si) mod 4. Lalu swap Si
dan Sf.

Set t menjadi (Si + Sf) mod 4, nilai acak untuk enkripsi adalah St
( 0 + 1) mod 4 = 1 = i
i
( 0 + 2 ) mod 4 = 2 = f
f Si

Swap S1 dengan S2
Si = 1 0 2 3
S0 S1 S2 S3
t = 3 ( 0 + 2 ) mod 4 = 2= f
S1 S2

S2 = 2

Dua (nilai biner = 00000010), variabel enkripsi ini lalu di XOR-kan dengan
plain text untuk menghasilkan ciphertext. Sebagai contoh akan digunakan pesan
“HI”.
H I
0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1
XOR 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0
0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1

::bersambung…

Tidak ada komentar:

Posting Komentar

terima kasi yah
madridista89

Daftar Blog Saya

Entri Populer