Analisis Enkripsi Halaman Web Berbasis HTML dengan Menggunakan Vigenère Chiper Jimmy Karisma Ramadhan Program Studi Teknik Informatika ITB, Bandung, email: [email protected] Abstract – Dewasa ini perkembangan dunia internet semakin maju. Hampir semua orang dapat menggunakan internet sebagai media pencari dan mendapatkan informasi. Hal ini mendorong terjadinya tindak kejahatan yang terjadi di dunia internet sehingga keamanan dalam penggunaan internet semakin tidak terjamin dengan baik. Berbagai kejahatan di dunia internet kerap terjadi mulai dari pencurian account kartu kredit, hacking, cracking, bahkan pencurian source code. Salah satu bentuk pencurian kode adalah pencurian kode HTML untuk keperluan tertentu misalnya mencuri desain web, membobol sistem keamanan yang berbasis javascript, dan lain sebagainya. Kode dari halaman web biasanya dapat dikonsumsi publik dengan mudah yaitu tinggal menekan tombol view source. Sebenarnya kemudahan tersebut memiliki tujuan yang baik, yaitu memudahkan para web designer untuk melihat kesalahan yang terjadi dan untuk bahan referensi bagi para web designer. Akan tetapi kemudahan tersebut sering kali disalahgunakan oleh pihak-pihak yang tidak bertanggung jawab dan terkadang menimbulkan kerugian. Masalah yang timbul karena penyalahgunaan tersebut harus mendapat penanganan secara khusus dan spesifik. Adapun penanganan yang mungkin dilakukan adalah dengan melakukan enkripsi pada file HTML tersebut sehingga kode halaman web tidak dapat dibaca lagi oleh publik. Terdapat beberapa algoritma kriptografi yang digunakan untuk melakukan enkripsi halaman web HTML, salah satunya adalah Vigenere. Pada makalah ini akan dilakukan analisis penggunaan Vigenere Chiper dalam enkripsi HTML beserta dekripsinya. Langkah-langkah pembuatan dan penggunaan juga akan dijelaskan secara rinci. Selain itu akan dilakukan perbandingan dengan algoritma lain untuk membandingkan apakah Vigenère Chiper baik diterapkan dalam enkripsi HTML. Kata Kunci: Enkripsi, HTML, keamanan, Vigenère Chiper. 1. PENDAHULUAN Dalam perkembangan pemrograman internet terdapat banyak jenis bahasa pemrograman yang kita kenal baik pemrograman di sisi server maupun pemrograman di sisi klien. Sebut saja bahasa pemrograman PHP, JSP, ASP, HTML, DHTML, dan lain sebagainya. Namun tetap saja kode yang diterjemahkan oleh browser itu berupa halaman HTML (HyperText Markup Language). Namun kode asal halaman HTML dapat dengan mudah dilihat oleh semua orang dengan melakukan view source. Hal ini dapat menimbulkan pencurian kode. Tujuan pencurian kode tentu bermacam-macam, mulai dari mencuri desain web, membobol sistem keamanan yang berbasis JavaScript, menyalin konten yang seharusnya tidak bisa disalin, dan lain sebagainya. Terkadang web programmer sering mengabaikan faktor keamanan dalam halaman HTML yang dapat mengakibatkan munculnya kerusakan atau kerugian. Contoh yang paling mudah adalah melakukan validasi dengan menggunakan pemrograman sisi klien sehingga dalam halaman web akan terdapat password yang akan dengan mudah bisa dilihat hanya dengan melakukan view source. Permasalahan ini dapat diatasi (setidaknya dikurangi) dengan cara melakukan enkripsi pada halaman HTML. Dengan dienkripsinya halaman web berbasis HTML, tentu saja akan mencegah pelaku pencurian kode untuk tidak mencuri kode, atau setidaknya menghambat, karena seperti kita ketahui algoritma apapun pasti suatu saat akan dapat ditembus juga. Namun dengan adanya enkripsi halaman web ini tentu saja akan sedikit membantu untuk menjaga keamanan kode halaman web berbasis HTML. Enkripsi HTML dapat dilakukan dengan bermacammacam algoritma enkripsi yang ada. Salah satunya adalah menggunakan algoritma Vigenère Chiper. Sandi ini dikenal luas karena cara kerjanya mudah dimengerti dan dijalankan, dan bagi para pemula sulit dipecahkan. Pada saat kejayaannya, sandi ini dijuluki le chiffre indéchiffrable (bahasa Prancis: 'sandi yang tak terpecahkan'). 2. DASAR TEORI 2.1. Vigenere Chiper Vigenère Chiper adalah metode menyandikan teks alfabet dengan menggunakan deretan sandi Caesar berdasarkan huruf-huruf pada kata kunci. Vigenère Chiper merupakan bentuk sederhana dari sandi substitusi polialfabetik. Kelebihan sandi ini dibanding sandi Caesar dan sandi monoalfabetik lainnya adalah sandi ini tidak begitu rentan terhadap metode pemecahan sandi yang disebut analisis frekuensi. Vigenère Chiper merupakan chiper abjad majemuk yang paling dikenal karena menghasilkan banyak varian atau cipher turunan seperti Beaufort, Gronsfeld, Porta, dan sebagainya. Giovan Batista Belaso menjelaskan metode ini dalam buku La cifra del. Sig. Giovan Batista Belaso (1553); dan disempurnakan oleh diplomat Perancis Blaise de Vigenère, pada 1586. Vigenère menuliskan hasil penemuannya dalam buku/traktat yang berjudul “Traicte des Chiffres” Pada abad ke-19, banyak orang yang mengira Vigenère adalah penemu sandi ini, sehingga, sandi ini dikenal luas sebagai "Vigenère Chiper". receive any benefit from them, but sometimes they gave useful information”. Sandi Vigenère sebenarnya merupakan pengembangan dari sandi Caesar. Pada sandi Caesar, setiap huruf teks terang digantikan dengan huruf lain yang memiliki perbedaan tertentu pada urutan alfabet. Misalnya pada sandi Caesar dengan geseran 3, A menjadi D, B menjadi E and dan seterusnya. Sandi Vigenère terdiri dari beberapa sandi Caesar dengan nilai geseran yang berbeda. Untuk menyandikan suatu pesan, digunakan sebuah tabel alfabet yang disebut tabel Vigenère. Tabel Vigenère berisi alfabet yang dituliskan dalam 26 baris, masing-masing baris digeser satu urutan ke kiri dari baris sebelumnya, membentuk ke-26 kemungkinan sandi Caesar. Setiap huruf disandikan dengan menggunakan baris yang berbeda-beda, sesuai kata kunci yang diulang Gambar 2.1 Blaise de Vigenère. Sandi ini dikenal luas karena cara kerjanya mudah dimengerti dan dijalankan, dan bagi para pemula sulit dipecahkan. Pada saat kejayaannya, sandi ini dijuluki le chiffre indéchiffrable (bahasa Prancis: 'sandi yang tak terpecahkan'). Metode pemecahan sandi ini baru ditemukan pada abad ke-19. Pada tahun 1854, Charles Babbage menemukan cara untuk memecahkan sandi Vigenère. Metode ini dinamakan tes Kasiski karena Friedrich Kasiski-lah yang pertama mempublikasikannya. Vigènere cipher digunakan oleh tentara konfederasi (Confederate Army) pada Perang Sipil Amerika (American Civil War). Perang Sipil terjadi setelah Vigènere Cipher berhasil dipecahkan. Hal ini diilustrasikan oleh kutipan pernyataan Jenderal Ulysess S. Grant: “It would sometimes take too log to make translation of intercepted dispatches for us to Gambar 2.2 Tabel Vigenère atau disebut juga bujur sangkar Vigenère. Misalnya, teks terang yang hendak disandikan adalah perintah "SERBU BERLIN", sedangkan kata kunci antara pengirim dan tujuan adalah "pizza". Huruf pertama pada plainteks, S, disandikan dengan menggunakan baris berjudul P, huruf pertama pada kata kunci. Pada baris P dan kolom S di tabel Vigenère, terdapat huruf H. Demikian pula untuk huruf kedua, digunakan huruf yang terletak pada baris I (huruf kedua kata kunci) dan kolom E (huruf kedua plainteks), yaitu huruf M. Proses ini dijalankan terus sehingga akan didapatkan : Plainteks Kunci Chiperteks : SERBUBERLIN : PIZZAPIZZAP : HMQAUQMQKIC Proses sebalinya (disebut dekripsi), dilakukan dengan mencari huruf teks bersandi pada baris berjudul huruf dari kata kunci. Misalnya, pada contoh diatas, untuk huruf pertama, kita mencari huruf H (huruf pertama teks tersandi) pada baris P (huruf pertama pada kata kunci), yang terdapat pada kolom S, sehingga huruf pertama adalah S. Lalu M terdapat pada baris I di kolom E, sehingga diketahui huruf kedua teks terang adalah E, dan seterusnya hingga didapat perintah "serbuberlin". Bila dicermati, setiap huruf hasil enkripsi pada Vigenère Chiper merupakan Caesar Chiper dengan kunci yang berbeda-beda. Contoh: C(‘C’) = (‘C’ + ‘t’) mod 26 = V C(‘T’) = (‘T’ + ‘e’) mod 26 = X source, fungsi JavaScript akan menampilkan kembali halaman web yang telah terenkripsi. Langkah-langkah yang dilakukan dalam melakukan enkripsi sebuah halaman web berbasis HTML antara lain : 1. Buat sebuah halaman web berbasis HTML. 2. Buat sebuah halaman web yang berfungsi untuk mengubah kode halaman web menjadi terenkripsi. 3. Tambahkan fungsi JavaScript untuk melakukan dekripsi halaman web agar browser dapat menampilkan halaman web. 4. Pada saat pengunjung akan melakukan view source maka kode yang terlihat adalah kode yang telah terenkripsi. Contoh algoritma enkripsi HTML menggunakan bahasa pemrograman JavaScript : function encrypt(){ var pagecontent=document.pageprotector.pagehtml.v alue; document.pageprotector.pagehtml.value=ec(page content); window.status=""; } 2.2. Enkripsi pada HTML Gambar 2.4 Potongan fungsi enkripsi HTML menggunakan JavaScript Cara yang digunakan dalam melakukan enkripsi pada halaman HTML adalah memanfaatkan JavaScript atau pemrograman pada sisi server. Pada kesempatan ini hanya akan dibahas mengenai enkripsi sebuah halaman HTML menggunakan JavaScript. Prinsip enkripsi halaman web berbasis HTML tampak seperti pada bagan di bawah ini : BROWSER Contoh algoritma dekripsi HTML menggunakan bahasa pemrograman JavaScript : function decrypt(){ var pagecontent=document.pageprotector.pagehtml.v alue; document.pageprotector.pagehtml.value=dc(page content); window.status=""; } Gambar 2.5 Potongan fungsi enkripsi HTML menggunakan JavaScript DEKRIPSI VIEW SOURCE 2.3. Implementasi Vigenère Chiper pada HTML HTML ENKRIPSI HTML TERENKRIPSI Gambar 2.3 Mekanisme enkripsi HTML Halaman web akan dienkripsi terlebih dahulu, lalu saat akan ditampilkan oleh browser tentu saja halaman web tersebut didekripsi kembali agar dapat dikenali oleh browser. Pada saat user akan melakukan view Setelah mengetahui metode enkripsi HTML dan algoritma Vigenère Chiper kita dapat melakukan implementasi keduanya dalam sebuah halaman web. Fungsi untuk melakukan enkripsi dan dekripsi dilakukan oleh kode program yang ditulis dalam bahasa pemrograman JavaScript. Potongan kode program tersebut adalah seperti berikut: <SCRIPT LANGUAGE="JavaScript"> var TID = 0; var longer = 0; var thirdwrite = ""; var alphabet = new Array("0@","1#","2$","3%","4^","5&","6*","7 = ","8","9+","Aa","Bb","Cc","Dd","Ee","Ff","Gg","Hh ","Ii","Jj","Kk","Ll","Mm","Nn","Oo","Pp","Qq ","Rr","Ss","Tt","Uu","Vv","Ww","Xx","Yy","Zz "); function preTime(coco, uinput, question) { longer = coco.length - 1; placement = 0; ref = 0 ; secondWrite = ""; firstWrite = ""; thirdWrite = ""; code1(coco, uinput, longer, question); } function findshift(letter) { for (i = 0; i < 36; i++) { if ((alphabet[i].substring(0,1) == letter) || (alphabet[i].substring(1,2) == letter)) { if (alphabet[i].substring(0,1) == letter) { x = 0; } if (alphabet[i].substring(1,2) == letter) { x = 1; } return i; } } } function check(letter) { bill = "no"; for (i = 0; i < 36; i++) { if ((alphabet[i].substring(0,1) == letter) || (alphabet[i].substring(1,2) == letter)) { bill = "yes"; } } if (bill == "yes") { return true; } else { return false; } } function fixoffset(takin) { if (takin > 35) { return (takin - 36); } else { return takin; } } function code1(inval1,inval2,inval3,sage) { if (check(inval2.charAt(placement))) { if (check(inval1.charAt(ref))) { if (sage == 0) { shift = findshift(inval1.charAt(ref)); } if (sage == 1) { shift = 36 - findshift(inval1.charAt(ref)); } } else { shift = 0; } orig = findshift(inval2.charAt(placement)); firstWrite = firstWrite+alphabet[fixoffset(orig+shift)].ch arAt(x); } else { firstWrite = firstWrite+inval2.charAt(placement); } secondWrite = inval2.substring(placement+1,inval2.length+1) ; thirdWrite = firstWrite+secondWrite; document.inputo.written.value = thirdWrite; placement++; if (ref == inval3) { ref = 0 } else { ref++; } if (placement == (inval2.length)) { window.clearTimeout(TID); return false; } one = inval1; two = inval2; three = inval3; goer = sage; TID = window.setTimeout("code1(one, two, three, goer)", 0); } </script> Gambar 2.6 Kode enkripsi HTML menggunakan Vigenère Chiper dengan JavaScript. 3. HASIL DAN PEMBAHASAN Untuk mencoba enkripsi dengan menggunakan Vigenère Chiper harus digunakan sebuah halaman web berbasis HTML. Sebagai contoh diambil (hasil save) potongan halaman HTML dari alamat http://webmail.infomatika.org. <body> <form name="imp_login" action="http://webmail.informatika.org/horde/ imp/redirect.php" method="post" target="_parent"> <input type="hidden" name="actionID" value="" /> <input type="hidden" name="url" value="" /> <input type="hidden" name="mailbox" value="INBOX" /> <input type="hidden" name="load_frameset" value="1" /> <input type="hidden" name="autologin" value="0" /> <div id="menu"> <span style="float:right"> </span> <h1 align="center">Welcome to Horde</h1> </div> <br class="spacer" /> <table width="100%"><tr><td align="center"><table width="300" align="center"> <input type="hidden" name="server_key" value="informatika" /> <tr> <td align="right" class="light"><b>Server</b></td> <td class="light" align="left"> <select tabindex="1" name="server"><option value="_prompt">Choose a mail server:</option><option value="informatika">informatika.org</option>< option value="STEI">stei.itb.ac.id</option><option value="students">students.if.itb.ac.id</optio n></select> </td> </tr> ……………………<dan seterusnya>……………………………… Gambar 3.1 Potongan kode asal dari halaman web yang beralamat http://webmail.informatika.org Kode diatas akan dienkripsi dan diproses dengan menggunakan Vigenère Chiper. Setelah dienkripsi maka source dari halaman tersebut menjadi seperti pada kode di bawah ini : <&bpg> <r*bguzs*-="@*j_x*@ca"pu*gu* ="tbdj://gyys$f.u&zieysdc m.-l%/z-l@q/$gc/+y &%wwn.#z+"uywdbbp="jb^b"#gm+@-g="_jx%w n"> <ca#cd#ga y="t@x #z"rhxyw="xob$iaUV"#im%e=""r/> <$hc*brnl#w="^uvx-a"p ^+q="oex"rpxxcy=""p/> <@ jh&pdscq="b&pvyh"j&ug#="*^&xtr"jdufhq="CAN6H"u/> <&z enu&g+-="z$ @q&"#am^y="x*u _r+ug#^wd"u s&o#="L"u/> <&z enu&g+-="z$ @q&"#am^y="mcdi@y$h"jdufhq="U"j/> <p@f#&p="g#zc"> j<cjxzpcnlxw="$x*un:%@@bg"> #uj</mcm&> u<zL#xx@@h="uyhgq+">Jq%wi+qpdiuT*b #</#V> </ & > <y%pwfx^a="f#sw-e"p/> <bu&-qpgc@&z="OCIn"><bb><&vr^-uy ="ow n#%"><gmt&-u-@xn^="NUN"puf&s&="zq&d-e"> #ujp<ca#cd#ga y="t@x #z"rhxyw="fq+fe_$ys"jdufhq="car*bgx&@^^"j/> <&+> ujpr<gppuf&s&="euy#n"ju&^f^="f&szd"><t>M#%dyl </t></&v> ujpr<gppwfx^a="-uy#n"js&c%z="f#rb"> jpr#ujpr<fq%y*gjbu&&zvyr="J"#am^y="^wbp#%"><b #b$iajdufhq="_c%**jg">Wbb@ay#xj^ucjayliq+:</@ dcbz><ic&@-hu s&o#="$h$@+*^gu$u">u&zieysdc m.-l%</-jgu* ><@ dcbzpf^-*w="F5W2">^byc.ubv.xo.$ </*+n&@&><b#b$iajdufhq="mg*vyhg^">mg*vyhg^.$+ .ubv.xo.$ </*+n&@&></^w&-z&> #ujp</gp> </&+> Gambar 3.2 Potongan hasil enkripsi dari halaman web yang beralamat http://webmail.informatika.org yang telah dienkripsi menggunakan Vigenère Chiper. Untuk membandingkan, dipakai algoritma pembanding yang sederhana yaitu algoritma yang hanya melakukan substitusi karakter ASCII menjadi heksadesimal. Perbandingan dibutuhkan untuk mengetahui sejauh mana algoritma Vigenère Chiper ini dapat melakukan enkripsi pada HTML dengan baik. Hasil yang didapatkan dari algoritma pembanding ini adalah : <HTML><BODY><SCRIPT>var ep="3c626f64793e0a3c666f726d206e616d653d22696 d705f6c6f67696e2220616374696f6e3d22687474703a 2f2f7765626d61696c2e696e666f726d6174696b612e6 f72672f686f7264652f696d702f72656469726563742e 70687022206d6574686f643d22706f737422207461726 765743d225f706172656e74223e0a3c696e7075742074 7970653d2268696464656e22206e616d653d226163746 96f6e4944222076616c75653d2222202f3e0a3c696e70 757420747970653d2268696464656e22206e616d653d2 275726c222076616c75653d2222202f3e0a3c696e7075 7420747970653d2268696464656e22206e616d653d226 d61696c626f78222076616c75653d22494e424f582220 2f3e0a3c696e70757420747970653d2268696464656e2 2206e616d653d226c6f61645f6672616d657365742220 76616c75653d223122202f3e0a3c696e7075742074797 0653d2268696464656e22206e616d653d226175746f6c 6f67696e222076616c75653d223022202f3e0a3c64697 62069643d226d656e75223e0a203c7370616e20737479 6c653d22666c6f61743a7269676874223e0a2020203c2 f7370616e3e0a203c683120616c69676e3d2263656e74 6572223e57656c636f6d6520746f20486f7264653c2f6 8313e0a3c2f6469763e0a3c627220636c6173733d2273 706163657222202f3e0a3c7461626c652077696474683 d2231303025223e3c74723e3c746420616c69676e3d22 63656e746572223e3c7461626c652077696474683d223 330302220616c69676e3d2263656e746572223e0a2020 20203c696e70757420747970653d2268696464656e222 6e6465783d223122206e616d653d22736572766572223 ……………………………….<dan seterusnya>………………………………. Gambar 3.3 Potongan hasil enkripsi dari halaman web yang beralamat http://webmail.informatika.org yang telah dienkripsi menggunakan algoritma substitusi sederhana. Hasil enkripsi dari Vigenère Chiper sebenarnya masih dapat ditebak, karena Vigenère Chiper tidak mengenkripsi karakter-karakter lain sehingga tag <BODY> menjadi <&bpg>. Memang pada tag berikutnya tentu saja akan beda, namun jika seseorang memiliki pengetahuan di bidang pemrograman web tentu saja ia dapat menerka sintaks apa yang berada dalam ‘<’ dan’ >’. Sedangkan pada algoritma pembanding semua karakter dienkripsi. Dalam enkripsi halaman HTML tentu saja enkripsi yang dilakukan harus meliputi semua karakter yang ada termasuk karakter bukan angka dan huruf karena dalam sintaksnya terdapat banyak sekali karakter bukan angka dan huruf seperti ‘<’, ‘>’,’”’, ‘!’, dan lain sebagainya . Dalam proses enkripsinya, penggunaan Vigenère Chiper memiliki waktu buat yang cukup lama, begitu juga pada saat melakukan dekripsinya. Hal ini berbeda dengan penggunaan algoritma pembanding yang mengubah karakter ASCII menjadi heksadesimal yang memiliki akses sangat cepat baik pada saat enkripsi maupun dekripsi. Hal ini menunjukkan bahwa Vigenère Chiper dalam enkripsi HTML “melanggar” salah satu faktor penting dalam pembuatan sebuah halaman web, yaitu waktu akses yang cepat. Untuk mengatasi hal ini, mungkin dapat dilakukan enkripsi sebagian pada halaman web yang dianggap penting saja. 4. KESIMPULAN Proses enkripsi halaman HTML berfungsi untuk mencegah terjadinya hal-hal yang tidak diinginkan seperti meniru desain halaman web, mengetahui proses web, melakukan hack terhadap web, dan lain sebagainya. Namun hal ini tidak menjamin terjadinya keamanan sekuriti sistem. Sekuriti sistem dijamin bukan dengan cara menjaga kerahasiaan source code atau algoritma yang digunakan dengan cara mengenkripsinya tetapi memang karena metoda sekuriti yang digunakan memungkinkan terjaminnya sekuriti. Enkripsi pada HTML juga tidak baik diterapkan untuk seluruh halaman, karena selain menjadikan akses ke halaman tersebut lambat, juga ada kemungkinan terdapat error. Enkripsi menggunakan Vigenère Chiper dalam sebuah halaman Web tidak cocok diterapkan karena memiliki kecenderungan untuk ditebak karena tidak mengenkripsi semua karakter yang ada serta memiliki waktu akses yang lama, hal ini penting karena dalam konsep pembangunan sebuah halaman web waktu akses merupakan salah satu faktor yang penting selain keamanan web itu sendiri. DAFTAR REFERENSI [1] Munir, Rinaldi, Diktat Kuliah IF5054 Kriptografi, Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, 2007 [2] Kadir, Abdul, Dasar-dasar Pemrograman Web Andi, Yogyakarta, 2002. [3] http://nakula.rvs.unibielefeld.de/~made/artikel/ [4] http://belog.berlios.de/modules/news/print.php? storyid=51