BAB I
PENDAHULUAN
1.1. Latar Belakang

Kerahasiaan dan keamanan saat melakukan pertukaran data adalah hal yang sangat penting dalam komunikasi data, baik untuk tujuan keamanan bersama, maupun untuk privasi individu. Mereka yang menginginkan agar datanya tidak diketahui oleh pihak-pihak yang tidak berkepentingan selalu berusaha menyiasati cara mengamankan informasi yang akan dikomunikasikannya. Perlindungan terhadap kerahasiaan datapun meningkat, salah satu caranya dengan penyandian data atau enkripsi.
Metode yang umumnya digunakan dalam pengamanan situs dari akses klien yang tidak terotentikasi adalah dengan sistem password, yaitu suatu cara dimana klien yang ingin mengakses halaman sebuah situs diminta memasukkan username dan  password yang sah atau sudah disetujui oleh  server. Sistem ini sudah dianggap cukup aman sehingga banyak diterapkan di berbagai situs. Namun, dalam sistem ini terdapat suatu celah yang bisa disusupi serangan oleh pihak ketiga, yaitu ketika  user mengirimkan  username dan  password miliknya ke  server dengan  method POST yang digunakan. Hal ini bisa dimanfaatkan oleh pihak ketiga tersebut dengan melakukan eavesdropping (penyadapan) terhadap  username dan password yang dikirimkan. Contoh situs yang menggunakan sistem ini antara lain situs-situs surat elektronik seperti Yahoo!, Gmail atau situs surat elektronik lainnya.


Seperti disebutkan sebelumnya, penggunaan enkripsi bisa mencegah pencurian data oleh pihak luar. Algoritma enkripsi sendiri terdiri dari  cipher blok dan  cipher aliran.  Cipher aliran memiliki keuntungan dibanding  cipher blok dilihat dari sisi kompleksitas dan kecepatan komputasinya karena hanya bergantung dari algoritma yang digunakan. Selain itu,  cipher aliran memiliki perambatan kesalahan yang kecil. Berdasarkan kunci yang digunakan, algoritma enkripsi terbagi menjadi algoritma kunci simetri dan kunci asimetri yang juga dikenal sebagai kunci publik. Salah satu algoritma kunci simetri yang dikenal adalah RC4. Algoritma ini merupakan salah satu algoritma cipher  aliran. RC4 terkenal dengan kecepatan prosesnya.
Menurut   hasil   pengetesan   kecepatan   algoritma kriptografi  RC4     adalah   5380,035  Kbytes/detik pada Pentium133 memori 16 MB pada  Windows 95. Hasil   pengetesan didapat dengan enkripsi 256 byte per blok sebanyak 20480 kali, atau    setara dengan kurang lebih 5 MB data. Sebagai perbandingan, hasil pengetesan dengan algoritma  Blowfish pada jenis komputer yang sama yaitu 2300  KByte/detik pada 8 byte per blok.
                               
1.2. Rumusan Masalah

Dari latar belakang yang telah diuraikan maka dapat dirumuskan permasalahan pada makalah ini, yaitu bagaimana mengimplementasikan algoritma RC4 pada sebuah file web khususnya php.

1.3. Tujuan Penulisan

Dari permasalahan yang ada pada rumusan masalah maka makalah ini bertujuan :
1. Mengenalkan algoritma kriptografi RC4.
2. Mempelajari cara untuk melakukan penggunaan algoritma kriptografi RC4.

1.4. Batasan Masalah

Makalah ini menetapkan batasan masalah, yaitu skrip ini hanya melakukan enkripsi dan dekripsi terhadap data.


BAB II
LANDASAN TEORI

2.1.Deskripsi Algoritma RC4

Algoritma kriptografi Rivest Code 4 (RC4) merupakan salah satu algoritma kunci simetris dibuat oleh RSA Data  Security Inc (RSADSI) yang berbentuk  stream chipper. Algoritma ini ditemukan pada tahun 1987 oleh Ronald Rivest dan menjadi simbol keamanan RSA(merupakan singkatan dari tiga nama penemu: Rivest Shamir Adleman). 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 plainteks untuk menghasilkan cipherteks. Masing-masing elemen dalam tabel saling ditukarkan minimal sekali.
RC4 merupakan merupakan salah satu jenis stream cipher, yaitu memproses unit atau input data pada satu saat. Dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus menunggu sejumlah input data tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip. Metode enkripsi RC4 sangat cepat kurang lebih 10 kali lebih cepat dari DES.
RC4 menggunakan panjang variabel kunci dari 1 s.d 256 byte untuk menginisialisasi  state tabel.  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.
Algoritma RC4 memiliki dua fase, setup kunci dan pengenkripsian. Setup untuk kunci adalah fase pertama dan yang paling sulit dalam algoritma ini. Dalam setup S-bit kunci (S merupakan panjang dari kunci), kunci enkripsi digunakan untuk menghasilkan variabel enkripsi yang menggunakan dua buah array, state dan kunci, dan sejumlah-S 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. 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 dapat dilihat pada blok di bawah :










Gambar 1. Blok Diagram algortima RC 4 secara umum


Gambar 4. Proses pembangkitan acak untuk kunci RC4

RC4 menggunakan dua buah kotak substitusi (S-Box) array 256 byte yang berisi permutasi dari bilangan 0 sampai 255 dan S-Box kedua   yang berisi permutasi fungsi dari kunci dengan panjang yang variabel.
Cara kerja algoritma RC4 yaitu inisialisasi  Sbox  pertama, S[0],S[1],...,S[255], dengan bilangan 0 sampai 255. Pertama isi secara berurutan S[0] = 0, S[1] = 1,...,S[255] = 255. Kenudian inisialisasi array lain (S-Box lain), misal array K dengan panjang 256. Isi  array  K dengan kunci yang diulangi sampai seluruh  array  K[0], K[1],...,K[255] terisi seluruhnya. 
Proses inisialisasi S-Box (Array S) 
 For r = 0  to  255
 S[r] = r
Proses inisialisasi S-Box(Array K)
Array Kunci // panjang kunci”length”.
for i = 0 to 255
K[i] = Kunci[i mod length]
Kemudian lakukan langkah pengacakan S-Box dengan langkah sebagai berikut :
 j = 0
 For i = 0 to 255
 j = (j + S[i] + K[i]) mod 256
 isi S[i] dan isi S[j] ditukar 
Dengan demikian berakhirlah proses persiapan kunci RC4. Untuk membangkitkan kunci enkripsi, dilakukan proses sebagai berikut:
 i = j = 0
 i = (i + 1) mod 256
 j = (j + S[i]) mod 256
 isi S[i] dan S[j] ditukar
 k = S [ S[i] + S[j] ] mod 256 
 Perhatikan bahwa k kecil merupakan kunci yang langsung beroperasi terhadap plainteks, sedangkan K besar adalah kunci utama atau kunci induk Bila terdapat plainteks P, maka operasi enkripsi berupa :
 
Sedangkan operasi dekripsi berupa :














BAB III
IMPLEMENTASI DAN PENGUJIAN

3.1.Pembuatan Form Masukan PHP
a. Buat file untuk masukan plainteks dan key (berupa bilangan), beri nama file : index.php


  Pengiriman Pesan

 












KIRIM
PESAN




Isi Pesan :









Kata kunci :









Kirim Pesan

Hapus









Go to : Pengiriman Pesan | Lihat Chipertext | Penerimaan Pesan






Copyright © 2011 IFC:Handi P, Ihsan F Rahman, Jihan P.













3.2.Proses Enkripsi dengan Algoritma RC4

a. Buat proses enkripsi php dengan nama file : enkripsirc4.php


function setupkey(){ /*proses pengacakan kunci SBox*/

echo "

";

$kce = $_POST["katakunci"];

$key=array();

for($i=0;$i {
$key[$i]=ord($kce[$i]); /*rubah ASCII ke desimal*/
}
global $m;
$m=array();
/*buat encrypt*/
for($i=0;$i<256;$i++){
$m[$i] = $i;
}
$j = 0;
$k = 0;
for($i=0;$i<256;$i++)
{
$a = $m[$i];
$j = ($j + $m[$i] + $key[$k]) % 256;
$m[$i] = $m[$j];
$m[$j] = $a;
$k++;
if($k>15){
$k=0;
}
}
} /*akhir function*/

function crypt2($inp){
global $m;
$x=0;$y=0;
$bb='';
$x = ($x+1) % 256;
$a = $m[$x];
$y = ($y+$a) % 256;
$m[$x] = $b = $m[$y];
$m[$y] = $a;
/*proses XOR antara plaintext dengan kunci
dengan $inp sebagai plaintext
dan $m sebagai kunci*/
$bb = ($inp^$m[($a+$b) % 256]) % 256;
return $bb;
}

$kalimat = $_POST["isipesan"];

setupkey();
for($i=0;$i $kode[$i]=ord($kalimat[$i]); /*rubah ASCII ke desimal*/
$b[$i]=crypt2($kode[$i]); /*proses enkripsi RC4*/
$c[$i]=chr($b[$i]); /*rubah desimal ke ASCII*/
}

$hsl = '';
for($i=0;$i $hsl = $hsl . $c[$i];
}

echo "Pesan sudah Terenkripsi !
Kembali ";
/*simpan data di file*/
$fp = fopen("enkripsirc4.txt","w");
fputs($fp,$hsl);
fclose($fp);
?>
b. Buat form untuk melakukan melihat chipertext, beri nama file : lihatchipertext.php



Lihat Chipertext









LIHAT CHIPERTEXT









Chipertext :




<br> <?php $nmfile = "enkripsirc4.txt";<br>/*ambil data dari file enkripsirc4.txt*/<br> $fp = fopen($nmfile, "r");<br> $isi = fread($fp,filesize($nmfile));<br> echo $isi; ?>









Go to : Pengiriman Pesan | Lihat Chipertext | Penerimaan
Pesan









Copyright © 2011 IFC:Handi P, Ihsan F Rahman, Jihan P.













3.3.Pembuatan Form Untuk Proses Dekripsi

c. Buat file untuk masukan key (berupa bilangan), agar bisa menghasilkan kembali plainteks maka key harus sama dengan proses enkripsi, beri nama file: penerimaanpesan.php








Penerimaan Pesan













PENERIMAAN
PESAN









Kata kunci :









Terima
Pesan Hapus









Go to : Pengiriman Pesan | Lihat
Chipertext | Penerimaan Pesan












Copyright © 2011 IFC:Handi P, Ihsan F Rahman, Jihan P.













NB : agar bisa menghasilkan kembali plainteks maka key harus sama dengan proses enkripsi

3.4.Proses Dekripsi dengan Algoritma RC4

d. Buat file untuk melakukan proses dekripsi, beri nama file : dekripsi.php




Penerimaan Pesan







function setupkey(){

$kcd = $_POST["katakunci2"];

//echo "

";
for($i=0;$i $key[$i]=ord($kcd[$i]); /*rubah ASCII ke desimal*/
}
global $mm;
$mm=array();
/*buat decrypt*/
for($i=0;$i<256;$i++){
$mm[$i] = $i;
}
$j = $k = 0;
for($i=0;$i<256;$i++){
$a = $mm[$i];
$j = ($j + $a + $key[$k]) % 256;
$mm[$i] = $mm[$j];
$mm[$j] = $a;
$k++;
if($k>15){
$k=0;
}
}
} /*akhir function*/

function decrypt2($inp){
global $mm;
$xx=0;$yy=0;
$bb='';
$xx = ($xx+1) % 256;
$a = $mm[$xx];
$yy = ($yy+$a) % 256;
$mm[$xx] = $b = $mm[$yy];
$mm[$yy] = $a;
/*proses XOR antara chipertext dengan kunci
dengan $inp sebagai chipertext
dan $mm sebagai kunci*/
$bb = ($inp^$mm[($a+$b) % 256]) % 256;
return $bb;
}
setupkey();
$nmfile = "enkripsirc4.txt";
/*ambil data dari file enkripsirc4.txt*/
$fp = fopen($nmfile, "r");
$isi = fread($fp,filesize($nmfile));
for($i=0;$i $b[$i]=ord($isi[$i]); /*rubah ASCII ke desimal*/
$d[$i]=decrypt2($b[$i]); /*proses dekripsi RC4*/
$s[$i]=chr($d[$i]); /*rubah desimal ke ASCII*/
}
$hsl='';
//Hasil Dekripsi
for($i=0;$i $hsl = $hsl . $s[$i];
}
//echo "
".$hsl;
?>
Pesan hasil dekripsi :

<?php echo $hsl?>

Go to : Pengiriman Pesan | Lihat
Chipertext | Penerimaan Pesan

Copyright © 2011 IFC:Handi P, Ihsan F Rahman, Jihan P.



3.5.Hasil Pengujian
Tampilan Form Enkripsi :

Hasil Enkripsi :


Tampilan Form Dekripsi :


Hasil Dekripsi :



BAB IV
KESIMPULAN

Proses enkripsi maupun dekripsi pada pengujian berhasil dilakukan. Sampai saat ini tidak ada yang dapat memecahkan RC4 sehinggat dapat dikatakan sangat kuat. Terdapat laporan versi kunci 40 bit dapat dipecahkan secara brute force. Kelemahan: Padding dapat menyebabkan kemungkinan nilai-nilai di dalam larik S ada yang sama. RC4 juga mudah diserang dengan known-plaintext attack, dengan cara meng-XOR-kan dua set byte cipherteks (kelemahan umum pada cipher-aliran)

DAFTAR PUSTAKA
http://elib.unikom.ac.id/files/disk1/304/jbptunikompp-gdl-agusyogain-15189-3-15.bab-i.pdf
http://www.informatika.org/~rinaldi/TA/Makalah_TA%20Yudi%20Haribowo.pdf
http://www.informatika.org/~rinaldi/TA/Makalah_TA%20Firda%20Fauzan.pdf
http://www.rimbaraya.net/ebook/view.php?file=Jaringan/NetworkSecurity/Prakt+Modul+9+Sym+Kriptografi.pdf


DOWNLOAD VERSI PDF | APLIKASI

5 comments:

  1. Gan saya minta nama kampus nama agan ,tahun kelulusan agan ,, tlong ya gan , so buat daftar pustaka saya lagi buat skripsi , termakasih

    BalasHapus
  2. Ihsan Fauzi Rahman
    Teknik Informatika UIN Sunan Gunung Djati Bandung
    Lulusan 2013

    ---
    Mksh udh brkunjung gan

    BalasHapus
  3. link download ny file not found gan

    BalasHapus
  4. Maaf, semua link download yg ada di blog ini baru diperbaharui..

    BalasHapus
  5. Saya tertarik dengan tulisan mengenai enkripsi deskripsi diatas, sangat bermanfaat untuk tugas yang sedang saya dapatkan. saya juga memiliki referensi mengenai enkripsi yang dapat anda kunjungi http://ejournal.gunadarma.ac.id/index.php/kommit/article/view/1005/872 Terimakasih

    BalasHapus

Terimakasih dan jangan sungkan untuk berdiskusi atau memberikan saran di kolom komentar.

 
Top