Analisis Enkripsi Halaman Web Berbasis HTML dengan

advertisement
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
Download