Tampilan

Thursday, February 11, 2016

Kriptografi Metode Rivest Code 4 ( RC4)



Algoritma Rivest Code 4 (RC4)
Algoritma RC4 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. Proses dekripsinya dilakukan dengan cara yang sama (karena Xor merupakan fungsi simetrik).
Untuk menghasilkan keystream, cipher menggunakan state internal yang meliputi dua bagian :
1.        Tahap key scheduling dimana diberi nilai awal berdasarkan kunci enkripsi.State yang diberi nilai awal berupa array yang merepresentasikan suatu permutasi dengan 256 elemen, jadi hasil dari algoritma KSA adalah permutasi awal. Array yang mempunyai 256 elemen ini (dengan indeks 0 sampai dengan 255) dinamakan S. Berikut adalah algoritma KSA dalam bentuk pseudo-code dimana key adalah kunci enkripsi dan keylength adalah besar kunci enkripsi dalam bytes (untuk kunci 128 bit, keylength = 16).

                          
                           







2.        Tahap pseudo-random generation dimana state automaton beroperasi dan outputnya menghasilkan keystream. Setiap putaran, bagian keystream sebesar 1 byte (dengan nilai antara 0 sampai dengan 255) dioutput oleh PRGA berdasarkan state S. Berikut adalah algoritma PRGA dalam bentuk pseudo-code:


 





Setelah terbentuk keystream, kemudian keystream tersebut dimasukkan dalam operasi XOR dengan plaintext yang ada, dengan sebelumnya pesan dipotong-potong terlebih dahulu menjadi byte-byte.( Okie Setiawan, dkk ; Pros iding SNATIF. No.1, 2014 : 117)

Keamanan sistem sandi RC4
Menurut Rifki Sadikin (2012 : 214), Ukuran sandi RC4 sangat berpengaruh terhadap keamanan sistem Sandi RC4. RC4 telah dibuktikan tidak aman untuk ukuran kunci yang kecil, yaitu dibawah 5 byte. Rekomendasi penggunaan sistem sandi RC4 agar memiliki keamanan yang kuat adalah :
1.    Ukuran kunci sama atau lebih besar daripada 256 bit ( 16 byte)
2. Setiap sesi baru membangkitkan kunci yang baru(dengan pembangkitkan kunci yang baru menghingdari penyerang untuk melakukan analisis sandi difernsial pada sistem sandi).

Berikut adalah implementasi algoritma RC4 dengan mode 4 byte (untuk lebih menyederhanakan dalam perhitungan manual) serta untuk kebutuhan sistem yang sangat terbatas. S-Box 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
Inisialisasi 4 byte kunci array, K. Misalkan kunci Ulang kunci sampai memenuhi seluruh adalah 2 5 7 3, sehingga array K berisi 2 5 7 3 dan mencoba untuk mengenkripsikan kata HALO.
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. PRGA akan 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
K4 = 00000010
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 00000010
Cipherteks      : 01001010 01000010  01001110 01001101


Algoritma RC4 (Dekripsi)
            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 00000010
Plainteks                     : 01001000  01000001  01001100 01001111
                                                   H                  A                 L              O

Demikian, Tulisan ini saya buat. Semoga bermanfaat untuk Semua orang yang membutuhkan. Untuk Tanya tanya Silahkan Email Ke dodibeck7@gmail.com. terimakasih :) 

3 comments:

  1. ka, ada contoh perhitungan manual rc4 yang lebih dari satu kata ga ?

    ReplyDelete
    Replies
    1. hai devira,, yg saya jelaskan diatas adalah peng enkripsian satu kata yaitu HALO

      sudah saya jelaskan secara detail. insyah Allah Kalau ada yg mesti ditanyakan saya akan bantu . thnks

      Delete
  2. saar PRGA literasi ke 3, swap S[3],S[3] . kenapa array awal (dari litersi 2) yaitu 2013 menjadi 1023 pada array literasi 3. padahal pertukaran dilakukan pada s yang sama saitu S[3]?

    ReplyDelete