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); }
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.