1. Pengertian Kriptografi
Kriptografi berasal dari bahasa Yunani, crypto dan graphia, crypto berarti rahasia dan
graphia berarti tulisan, atau bisa diartikan sebagai seni dalam menjaga kerahasiaan suatu
pesan (berupa data atau informasi), yang mempunyai arti atau nilai, dengan cara
menyamarkannya (mengacak) menjadi bentuk yang tidak beraturan menggunakan algoritma
tertentu.
1.1 Komponen Komponen Kriptografi
Beberapa komponen-komponen yang ada pada kriptografi sebagai berikut :
1. Enkripsi, merubah teks yang dapat dibaca menjadi teks acak yang tidak dapat
dibaca.
2. Dekripsi, merubah teks acak yang tidak terbaca menjadi teks yang dapat dibaca.
3. Kunci, dapat berupa simbol, karakter yang digunakan untuk melakukan enkripsi
dan dekripsi.
4. Ciphertext, merupakan suatu pesan yang telah melalui proses enkripsi.
5. Plaintext, merupakan suatu pesan yang telah melalui proses dekripsi.
6. Pesan, dapat berupa data maupun informasi yang dikirim melalui kurir, media
komunikasi data, atau yang disimpan didalam media perekaman.
7. Cyptanalysis, kriptanalisis merupakan ilmu untuk mendapatkan teks-asli tanpa
harus mengetahui kunci yang sah secara wajar.
1.2 Algoritma Kriptografi
Berdasarkan penyebaran kuncinya, algoritma kriptografi dibagi menjadi dua bagian.
Yaitu :
1. Algoritma Simetri
Algoritma Simetri adalah suatu algoritma yang menggunakan kunci enkripsi, sama
dengan kunci dekripsi sehingga algoritma ini disebut juga sebagai single-key
algorithm.
2. Algoritma Asimetri
Algoritma Asimetri adalah suatu algoritma yang menggunakan kunci enkripsi tidak
sama dengan kunci dekripsi. Algoritma ini menggunakan dua kunci yakni kunci
publik (public key) dan kunci privat (private key).
Algoritma Base64 merupakan algoritma yang menggunakan salah satu konsep
algoritma enkripsi modern yaitu algoritma Block Cipher yang berupa operasi pada mode bit
namun algortma Base64 ini lebih mudah dalam pengimplementasiannya dari algoritmaalgoritma yang lainnya. Base64 adalah metoda yang untuk melakukan encoding (penyandian)
terhadap data binary menjadi format 6-bit character. Pada algoritma ini, rangkaian bit-bit
palainteks dibagi menjadi blok-blok bit dengan panjang yang sama, biasanya 64 bit yang
direpresentasikan dengan karakter ASCII. Base64 menggunakan karakter A Z, a z dan 0
9 untuk 62 nilai pertama, sedangkan 2 nilai terakhir digunakan symbol (+ dan /).
Standar yang penulis gunakan adalah MIME (Multipurpose Internet Mail
Extensions)/RFC 1521. RFC ini menegaskan sebuah standar untuk implementasi Base64
terhadap data binary dan melampirkan sebuah karakter padding = jika terdapat kekurangan
pada byte. Dalam streaming base64, spesifikasi mengharuskan setiap baris menjadi paling
banyak 76 basis-64 karakter.
Base64 meruapakan salah satu algoritma enkripsi yang saya pikir unik dan sangat
membantu dalam pengiriman data-data biner. Seperti yang kita tahu, data biner bukan lagi
data ascii seperti yang kita kenal dan bisa dibaca. Biner yang dimaksud di sini bukan biner
dalam bentuk angka 0 dan 1. Akan tetapi ya tidak bisa dibaca dengan aplikasi editor text
biasa seperti gedit dan notepad. File biner, binary file disa dicontohkan dengan file yang
berekstensi .exe dan .bin. File-file tersebut tidak bisa dikirim lewat jaringan dengan tanpa
dikondisikan terlebih dahulu dengan base64.
Dengan base64, karakter-karakter aneh pada file biner akan diterjemahkan ke dalam
bentuk ascii sehingga file tersebut bisa dikirim lewat email, ftp, dan lain-lain, ingat MIME.
Hal tersebut juga memungkinkan file biner untuk disimpan ke dalam database. Dalam
beberapa kasus yang saya temui, base64 kadang digunakan untuk gandengan kompresi script
atau data yang dikompres dengan gzip. Tentu kita tahu, file yang dikompres tentu tidak bisa
dibaca dengan gedit atau notepad karena sudah menjadi binary file. Dan untuk bisa diproses
sebagai string, maka harus dienkode atau ditransfer dulu dengan base64.
sama dan mekanisme encoding seperti PEM, dan menggunakan "=" simbol untuk output
padding dengan cara yang sama, seperti yang dijelaskan di RFC 1521. MIME tidak
menentukan panjang tetap untuk saluran Base64-encoded, tetapi tidak menentukan panjang
maksimum 76 karakter. Selain itu menetapkan bahwa setiap karakterabjad harus diabaikan
oleh decoder kompatibel, walaupun sebagian besar implementasi menggunakan pasangan CR
/ LF untuk membatasi baris yang disandikan. Jadi, panjang aktual MIME-compliant data
biner Base64-encoded biasanya sekitar 137% dari panjang data asli, meskipun untuk pesan
yang sangat singkat overhead dapat jauh lebih tinggi karena overhead dari header.
c. UTF-7
Encoding UTF-7 didasarkan pada RFC 2152, yang ada pada umumnya disebut sebagai
Modified Base64/ UTF-7 menggunakan karakter MIME base64, tetapi tidak memakai
padding =/ Karakter = digunakan sebagai karakter escape untuk encoding
quotedprintable/ UTF-7 juga digunakan sebagai header MIME.
Base64 menggunakan karakter A Z, a z dan 0 9 untuk 62 nilai pertama,
sedangkan 2 nilai terakhir digunakan untuk symbol (+ dan /). Beberapa metode encoding lain
seperti uuencode dan binhex menggunakan 64 karakter yang berbeda untuk mewakili 6
binary digit, namun metodemetode tersebut tidak disebut sebagai encoding Base64.
Proses padding akan dilakukan apabila sekelompok karakter yang dimiliki tidak
bernilai 3 Byte (24 bit). Padding dilakukan dengan menambahkan karakter =/ Contoh
penggunaan padding dapat dilihat pada tabel berikut.
Apabila terdapat single byte maka jumlah padding yang ditambahkan adalah 2 Byte
yang bernilai 0. Sehingga memenuhi aturan 3 Byte (24 bit), seperti dapat dilihat pada tabel di
bawah ini. Sedangkan pada tabel 4 jumlah byte padding yang ditambahkan adalah 1 Byte.
3. Bagi kode biner tersebut menjadi hanya 6 angka per blok dan berjumlah kelipatan 4 blok
4. Jika angka biner tidak berjumlah 6 angka dan 4 blok maka akan di tambah kode biner 0
sehingga mencukupi menjadi 4 blok.
5. Blok blok tsb ubah kembali menjadi kode desimal (data di baca sebagai index)
6.
Hasil
kode
index
tersebut
di
ubah
menjadi
huruf
yang
ada
pd
index
7. Jika nilai blok adalah hasil tambahan (0) maka hasil dari index tersebut bernilai =
Contoh
b. Keamanan
data sangat penting untuk menjaga kerahasiaanya. Salah satu cara untuk
mengamankan sebuah data adalah dengan meng-encode data tersebut. Encode merupakan
proses transformasi dari data asli (plaintext) ke dalam bentuk kode-kode yang tersandikan
(ciphertext) sehingga tidak dapat dikenali lagi. Sedangkan proses transformasi dari ciphertext
kembali ke bentuk plaintext disebut dengan decode.
Bahasa pemrograman PHP menyediakan fasilitas encoding dan decoding berbasis 64
bit secara default. Base64 atau quadrosexagesimal adalah penempatan notasi dengan
menggunakan bilangan radix 64. Masukan base64 berupa blok data biner berekstensi apa saja
seperti com, exe, dll, ASCII, bahkan gambar, dan suara. Sehingga algoritma ini lebih dikenal
dengan istilah MIME (Multipurpose Internet Mail Extension) Base64.
Seorang adminstrator bertanggungjawab penuh terhadap semua sumberdaya yang
dimiliki dalam suatu jaringan, termasuk melindungi source code php yang ada dalam web
server. Penggunaan fasilitas aplikasi keamanan sistem secara standar belum tentu dapat
menjamin keamanan source code php.
Penelitian ini difokuskan pada pengembangan sebuah metode dengan merancang
sebuah fungsi yang dapat digunakan untuk penyembuyian source code php pada web server
berdasarkan algoritma MIME Base64 encoding. FED (Fungsi Encode Decode) adalah nama
sebuah fungsi tersebut, mempunyai kemampuan untuk mengencode dan medecode berbagai
tipe file seperti character, suara, gambar, dan lain-lain.
Beberapa fiitur lain yang dimiliki oleh FED adalah dapat menghitung waktu yang
dibutuhkan untuk proses encode dan decode, menghitung ukuran file sebelum dan setelah
proses encode dan decode, dan meskipun dalam bentuk ciphertext FED dapat menampilkan
outputnya di browser. FED ditujukan untuk membantu para administrator dalam upaya
mengamankan source code php yang bersifat open source pada web server. Kata-kata kunci :
keamanan sistem, web server, encode, decode, source code, plaintext, ciphertext.