Anda di halaman 1dari 16

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com 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.

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com

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.

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com 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 :

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com

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.

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com 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 kuncilength. 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 :

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com 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 <html><head> <title>Pengiriman Pesan</title> </head><body> <form method="post" action="enkripsirc4.php" name="kirim"> <div style="text-align: center;"><span style="fontweight: bold;">KIRIM PESAN</span> </div> Isi Pesan :<br> <textarea cols="50" rows="6" name="isipesan" maxlength="255"></textarea><br> Kata kunci :<br> <input name="katakunci" type="password"><br> <button value="Kirim Pesan" name="kirimpesan" type="submit"><strong>Kirim Pesan</strong></button> <button value="Hapus" name="hapus" type="reset">Hapus</button><br> <br> Go to : Pengiriman Pesan | <a href="lihatchipertext.php">Lihat Chipertext</a> | <a href="penerimaanpesan.php">Penerimaan Pesan</a><br> <small><br> <span class="footer"><span class="copyright">Copyright 2011 IFC:Handi P, Ihsan F Rahman, Jihan P. </span></span></small><br style="font-weight: bold;"> </form> </body></html> 3.2.Proses Enkripsi dengan Algoritma RC4 a. Buat proses enkripsi php dengan nama file : enkripsirc4.php <?php function setupkey(){ /*proses pengacakan kunci SBox*/ echo "<br>"; $kce = $_POST["katakunci"]; $key=array(); for($i=0;$i<strlen($kce);$i++)

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com { $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<strlen($kalimat);$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*/ }

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com $hsl = ''; for($i=0;$i<strlen($kalimat);$i++){ $hsl = $hsl . $c[$i]; } echo "Pesan sudah Terenkripsi ! <br><a href=index.php> <button name ='Kembali'>Kembali</button> </a>"; /*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 <html><head> <meta content="text/html; charset=ISO-8859-1" httpequiv="content-type"> <title>Lihat Chipertext</title> </head><body> <form method="post" action="enkripsirc4.php" name="lihatchipertext"> <div style="text-align: center; font-weight: bold;">LIHAT CHIPERTEXT<br> </div> Chipertext :<br> <textarea name="chipertext" cols="50" rows="16"> <?php $nmfile = "enkripsirc4.txt"; /*ambil data dari file enkripsirc4.txt*/ $fp = fopen($nmfile, "r"); $isi = fread($fp,filesize($nmfile)); echo $isi; ?> </textarea><br> <br> Go to : <a href="index.php">Pengiriman Pesan</a> | Lihat Chipertext | <a href="penerimaanpesan.php">Penerimaan Pesan</a><br> <br> <small><span class="footer"><span class="copyright">Copyright 2011 IFC:Handi P, Ihsan F Rahman, Jihan P.</span></span></small><br> </form> </body></html> 3.3.Pembuatan Form Untuk Proses Dekripsi

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com 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 <html><head> <meta content="text/html; charset=ISO-8859-1" httpequiv="content-type"> <title>Penerimaan Pesan</title> </head><body> <form method="post" action="dekripsirc4.php" name="Penerimaan Pesan"> <div style="text-align: center;"><span style="fontweight: bold;">PENERIMAAN PESAN</span><br> </div> Kata kunci :<br> <input name="katakunci2" type="password"><br> <button value="Terima Pesan" name="terimapesan" type="submit"><strong>Terima Pesan</strong></button> <button value="Hapus" name="hapus" type="reset">Hapus</button><br> <br> Go to : <a href="index.php">Pengiriman Pesan</a> | <a href="lihatchipertext.php">Lihat Chipertext</a> | Penerimaan Pesan<br> <br> <small><span class="footer"><span class="copyright">Copyright 2011 IFC:Handi P, Ihsan F Rahman, Jihan P.</span></span></small><br> </form> </body></html> 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 <html> <head><title>Penerimaan Pesan</title></head> <body> <?php function setupkey(){ $kcd = $_POST["katakunci2"];

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com //echo "<br>"; for($i=0;$i<strlen($kcd);$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<strlen($isi);$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='';

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com //Hasil Dekripsi for($i=0;$i<strlen($isi);$i++){ $hsl = $hsl . $s[$i]; } //echo "<br>".$hsl; ?> Pesan hasil dekripsi :<br> <textarea cols="50" rows="6" maxlength="255" name="hasil"><?php echo $hsl?></textarea><br> Go to : <a href="index.php">Pengiriman Pesan</a> | <a href="lihatchipertext.php">Lihat Chipertext</a> | <a href="penerimaanpesan.php" > Penerimaan Pesan</a><br> <small><span class="footer"><span class="copyright">Copyright 2011 IFC:Handi P, Ihsan F Rahman, Jihan P.</span></span></small><br> </body> </html>

3.5.Hasil Pengujian Tampilan Form Enkripsi :

Hasil Enkripsi :

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com

Tampilan Form Dekripsi :

Hasil Dekripsi :

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com 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)

Ihsan Fauzi Rahman | ichan90@yahoo.co.id | http://catatanichan.blogspot.com DAFTAR PUSTAKA http://elib.unikom.ac.id/files/disk1/304/jbptunikompp-gdl-agusyogain-15189-315.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

Anda mungkin juga menyukai