Post on 10-Mar-2019
4
BAB II
TINJAUAN PUSTAKA DAN TEORI
2.1 Tinjauan Pustaka
Membuat aplikasi enkripsi dan dekripsi email menggunakan algoritma
kriptografi AES. Aplikasi ini dibuat menggunakan Netbeans 7.0 dan login
menggunakan email user yang terhubung dengan internet. Aplikasi ini dibuat
dengan tujuan untuk merancang dan membuat email client yang aman dari hacker
yang sering melakukan pengendusan data email tergantung dari platform yaitu Java
SE Runtime Envirnment (JRE) dan Java Development Kit (JDK). Aplikasi ini
ditujukan untuk membantu mengatasi masalah keamanan data sehingga orang lain
tidak dapat mengetahui isi dari pada informasi atau pesan tersebut (Rosyadi, 2012).
Membuat aplikasi untuk menyandikan dan menyembunyikan berkas pada
data citra menggunakan Algoritma Kriptografi AES dan metode steganografi
berbasis Android. Aplikasi ini dibuat untuk mengamankan data citra dengan
memanfaatkan steganografi dan kriptografi. Aplikasi ini dibuat menggunakan
eclipse 4.4.1 dengan bahasa java. Aplikasi ini ditujukan untuk mempermudah
seseorang untuk menyembunyikan berkas (Suniati, 2015).
Merancang dan membangun purwarupa email client yang mampu
melakukan enkripsi dan dekripsi dengan menerapkan ilmu kriptografi dengan
menggunakan algoritma R.S.A. perancangan aplikasi ini bertujuan untuk
pengiriman email lebih aman (Albert Ginting dkk,2015).
Membuat implementasi perangkat lunak menggunakan Matlab 7.0.4 ,
progam ini dapat digunakan untuk meningkatkan keamanan informasi
menggunakan kriptografi algoritma kunci simetri AES ( Advanced Encryption
Standart )-128. Informasi menjadi lebih aman setelah diubah ke dalam bentuk data
tersandi, karena informasi hanya dapat dibaca oleh pihak yang berhak (Lusiana,
2011 ).
Penelitian ini membuat suatu sistem keamanan e-commerce dengan
menggunakan gabungan algoritma RC4 dan Base64. Algoritma RC4 dan Base64
adalah jenis algoritma kriptografi yang mengubah data plainteks menjadi chipher
5
text. Enkripsi data yang dilakukan dengan menggunakan dua algoritma ini dapat
mengenkripsi data password nasabah di bank sehingga password dari nasabah tidak
dapat diketahui oleh pihak-pihak yang tidak berkepentingan saat nasabah
melakukan transaksi dengan menggunakan e-commerce (Wahyu, Rahangiar,
Fretes, 2012).
Berdasarkan tinjauan pustaka, dapat disimpulkan bahwa terdapat beberapa
persamaan dan perbedaan antara skripsi yang berjudul “Desain Enkripsi Data
Menggunakan Algoritma AES 128 dan Base 64” dengan penelitian sejenis.
Persamaan tersebut dilihat dari tujuan pembuatan aplikasi yaitu sama-sama
membuat aplikasi yang bertujuan untuk mengenkripsi data. Adapun perbedaan dari
penelitian tersebut, dimana penulis melakukan perancangan enkripsi data dengan
menggunakan algoritma AES dan Base 64 yang diimplementasikan berbasis web.
Selain perbedaan yang telah dijelaskan, peneliti memfokuskan penelitian ini pada
algoritma enkripsi data.
2.2 Kriptografi
2.2.1 Pengertian Kriptografi
Kriptografi berasal dari bahasa yunani, “kryptos” yang berarti tersembunyi
dan “graphien” yang berarti tulisan. Sehingga kata kriptografi dapat diartikan
menjadi “tulisan tersembunyi”. Menurut Request for Comunities (RFC), kriptografi
adalah ilmu matematika yang berhubungan dengan transformasi data agar arti dari
data tersebut menjadi sulit untuk dipahami (untuk menyembunyikan maknanya),
mencegahnya dari perubahan tanpa izin atau mencegahnya dari penggunaan yang
tidak sah. Jika transformasinya dapat dikembalikan, kriptografi juga dapat diartikan
sebagai proses mengubah kembali data yang terenkripsi menjadi bentuk yang
mudah dipahami. Sehingga, kriptografi juga dapat diartikan sebagai proses untuk
melindungi data dalam arti yang luas (Oppliger, 2005).
2.2.2 Tujuan Kriptografi
Aspek-aspek keamanan di dalam kriptografi adalah (Ariyus, 2008):
1. Authentication (Otentikasi)
6
Agar penerima dapat memastikan keaslian pesan, bahwa proses itu datang
dari orang yang dimintai informasi. Dengan kata lain, informasi itu benar-
benar datang dari orang yang dikehendaki.
2. Integrity (Data Integritas)
Keaslian pesan dikirim melalui jaringan dan dapat dipastikan bahwa
informasi yang dikirim tidak dimodifikasi oleh yang tidak berhak.
3. Non-Repudiation (Nirpenyangkalan)
Merupakan hal yang berhubungan dengan si pengirim. Pengirim tidak dapat
mengelak bahwa dialah yang mengirim informasi tersebut.
4. Authority
Informasi yang berada pada sistem jaringan tidak dapat dimodifikasi oleh
pihak yang tidak berhak untuk mengaksesnya.
5. Confidentiality (Kerahasiaan)
Merupakan usaha menjaga informasi dari orang yang tidak berhak
mengakses. Kerahasiaan ini biasanya berhubungan dengan informasi yang
diberikan ke pihak lain.
6. Privacy
Lebih ke arah data-data yang bersifat pribadi.
7. Availability
Aspek availabilitas berhubungan dengan ketersediaan informasi ketika
dibutuhkan. Sistem informasi yang diserang atau dijebol dapat menghambat
atau meniadakan akses ke informasi.
8. Access Control
Aspek ini berhubungan dengan cara pengaturan akses ke informasi. Hal ini
biasanya berhubungan dengan masalah otentikasi dan privasi. Kontrol akses
sering kali dilakukan dengan menggunakan kombinasi user id dan password
ataupun mekanisme lain.
2.2.3 Komponen Sistem Kriptografi
Pada dasarnya komponen kriptografi terdiri dari beberapa komponen antara
lain (Ariyus, 2008) :
7
1. Enkripsi : merupakan hal yang sangat penting dalam kriptografi, merupakan
cara pengamanan data yang dikirimkan sehingga terjaga kerahasiannya.
Pesan asli disebut plaintext (teks bisa), yang diubah menjadi kode-kode
yang tidak dimengerti. Enkripsi bisa diartikan dengan chiper atau kode.
Sama halnya dengan tidak mengerti sebuah kata maka kita akan melihatnya
di dalam kamus atau daftar istilah. Beda halnya dengan enkripsi, untuk
mengubah teks bisa ke bentuk teks kode, kita gunakan algorima yang dapat
mengkodekan data yang kita ingini.
2. Dekripsi : merupakan kebalikan dari enkripsi. Pesan yang telah dienkripsi
dikembalikan ke bentuk asalnya. Algoritma yang digunakan untuk dekripsi
tentu berbeda dengan yang digunakan untuk enkripsi.
3. Kunci : adalah kunci yang dapat dipakai untuk melakukan enkripsi dan
dekripsi teks atau file.
4. Ciphertext : merupakan suatu pesan yang telah melalui enkripsi. Pesan yang
ada pada teks kode ini tidak bisa dibaca karena berupa karakter-karakter
yang tidak mempunyai makna (arti).
5. Plaintext : sering disebut dengan cleartext. Teks asli atau teks biasa ini
merupakan pesan yang ditulis atau diketik yang memiliki makna. Teks asli
inilah yang diproses menggunakan algoritma kriptografi untuk menjadi
ciphertext (teks kode).
6. Pesan : dapat berupa data atau informasi yang dikirim (melalui kurir, saluran
komunikasi data, dsb) atau yang disimpan di dalam media perekaman
(kertas, storage, dsb).
7. Cryptanalysis : kripanalisis bisa diartikan sebagai kode atau suatu ilmu
untuk mendapatkan teks asli tanpa harus mengetahui kunci yang sah dan
wajar. Jika suatu teks kode berhasil diubah menjadi teks asli tanpa
menggunakan kunci yang sah, proses tersebut dinamakan breaking code.
Hal ini dilakukan oleh para kripanalisis. Analisis kode juga dapat
menemukan kelemahan dari suatu algoritma kriptografi dan akhirnya dapat
menemukan kunci atau teks asli dari teks kode yang dienkripsi dengan
algoritma tertentu.
8
2.2.4 Jenis Algoritma Kriptografi
2.2.4.1 Klasifikasi Berdasarkan Perkembangannya
Algoritma kriptografi dapat diklasifikasikan menjadi menjadi dua jenis
berdasarkan perkembangannya, yaitu kriptografi klasik dan kriptografi modern.
1. Algoritma Kriptografi Klasik
Algoritma ini digunakan sejak sebelum era komputerisasi dan kebanyakan
menggunakan teknik kunci simetris. Metode menyembunyikan pesannya
adalah dengan teknik substitusi atau transposisi atau keduanya. Teknik
substitusi adalah menggantikan karakter dalam plaintext menjadi karakter lain
yang hasilnya adalah ciphertext.
Sedangkan transposisi adalah teknik mengubah plaintext menjadi ciphertext
dengan cara permutasi karakter.Kombinasi keduanya secara kompleks adalah
yang melatarbelakangi terbentuknya berbagai macam algoritma kriptografi
modern. Contoh algoritma kriptografi klasik antara lain, Caesar Cipher,
Vigenere Cipher, dan lain-lain.
a. Caesar Cipher
Metode penyandian ini dinamakan caesar chiper, setelah digunakan
Julius Caesar untuk berkomunikasi dengan para panglimanya. Dalam
kriptografi, Caesar Chiper dikenal dengan beberapa nama seperti: shift
cipher, Caesar’s code atau Caesar shift. Caesar Chiper merupakan
teknik enkripsi yang paling sederhana dan banyak digunakan. Chiper ini
berjenis chiper substitusi, dimana setiap huruf pada plaintext-nya
digantikan dengan huruf lain yang tetap pada posisi alfabet. Misalnya
diketahui bahwa pergeseran = 3, maka huruf A akan digantikan oleh
huruf D, huruf B menjadi huruf E, dan seterusnya. Contoh dapat dilihat
di Gambar 2.1.
Gambar 2.1 Caesar Chiper(Irfan. 2016).
9
b. Vigene Chiper
Vigenere Cipher adalah suatu algoritma kriptografi klasik yang
ditemukan oleh Giovan Battista Bellaso. Algoritma Vigenere Cipher ini
menggunakan bujur sangkar Vigenere untuk melakukan enkripsi.
Setiap baris di dalam bujursangkar menyatakan huruf-huruf ciphertext
yang diperoleh dengan Caesar cipher.
Vigenere chiper merupakan salah satu algoritma kriptografi klasik
untuk menyandikan suatu plaintext dengan menggunakan teknik
substitusi.Vigenere cipher pada dasarnya cukup rumit untuk
dipecahkan. Meskipun begitu, Vigenere cipher tetap memiliki
kelemahan. Salah satunya adalah dapat diketahui panjang kuncinya
dengan menggunakan metode kasiski. Hal ini disebabkan karena
umumnya terdapat frasa yang berulang-ulang pada ciphertext yang
dihasilkan.
2. Algoritma Kriptografi Modern
Algoritma ini memiliki tingkat kesulitan yang kompleks, dan kekuatan
kriptografinya ada pada key atau kuncinya Algoritma ini menggunakan
pengolahan simbol biner karena berjalan mengikuti operasi komputer digital.
Sehingga membutuhkan dasar berupa pengetahuan terhadap matematika untuk
menguasainya. Contoh kriptografi modern yaitu MD5, RC4, AES dan lain-lain.
2.2.4.2 Klasifikasi Berdasarkan Jenis Kunci
Berdasarkan jenis kunci, algoritma kriptografi dikelompokkan menjadi dua
bagian, yaitu: algoritma simetris (algoritma kunci privat) dan algoritma asimetris
(algoritma kunci publik) (Menezes & Vastone, 1996).
1. Algoritma Simetris
Algoritma simetris adalah salah satu jenis kunci pada algoritma kriptografi
yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Istilah
lain untuk kriptografi kunci simetri adalah kriptografi kunci privat (private-key
cryptography). Sistem kriptografi kunci simetri diasumsikan sebagai pengirim
dan penerima pesan yang sudah berbagi kunci yang sama sebelum bertukaran
10
pesan. Keamanan sistem kriptografi simetri terletak pada kerahasiaan
kuncinya.
Aplikasi dari algoritma simetris digunakan oleh beberaspa algoritma dibawah
ini:
a. Data Encryption Standard (DES)
b. Advance Encryption Standard (AES)
c. International Data Encryption Algortima (IDEA), dan lain-lain
2. Algoritma Asimetris
Algoritma asimetris atau dapat disebut juga dengan algoritma kunci public,
didesain sebaik mungkin sehingga kunci yang digunakan untuk enkripsi berbeda
dengan kunci dekripsinya. Dimana kunci untuk enkripsi tidak rahasia
(diumumkan ke publik), sementara kunci dekripsinya bersifat rahasia (hanya
diketahui oleh penerima pesan).
Pada kriptografi asimetris, setiap orang yang akan berkomunikasi harus
mempunyai sepasang kunci, yaitu privat dan publik. Pengirim pesan akan
mengenkripsi pesan menggunakan kunci publik si penerima pesan dan hanya
penerima pesan yang dapat melakukan dekripsi pesan tersebut karena hanya ia
yang dapat mengetahui kunci privatnya sendiri. Kunci publik dapat dikirim ke
penerima pesan melalui saluran yang sama dengan saluran yang digunakan
untuk mengirim pesan. Saluran untuk mengirim pesan umumnya tidak aman.
2.3 AES
Advanced Encryption Standard (AES) dipublikasikan oleh NIST (National
Institute and Technology) pada tahun 2001. AES merupakan simetris block chipper
untuk menggantikan DES (Data Encryption Standard). DES terbukti menjadi
algoritma enkripsi yang aman di dunia selama puluhan tahun. Tetapi pada tahun
1998, 70 ribu PC di internet berhasil membobol satu kunci DES dalam tempo 96
hari, tahun 1999 dalam tempo 22 hari. Karena algoritma enkripsi DES sudah
berhasil dipecahkan pada tahun 1998 dalam waktu 96 hari, maka dibuat mesin
khusus untuk memecahkan algoritma DES dan mesin tersebut dapat memecahkan
25% dalam waktu 2,3hari dan dapat memecahkan seluruh kunci DES dalam waktu
rata-rata 6,5 hari (Ariyus, 2015).
11
2.3.1 Parameter AES
AES mempunyai kunci 128, 192 dan 256 bit, maka panjang dari putaran
Rijandel juga berbeda dan dapat dilihat pada Tabel 2.1.
Tabel 2.1 Parameter AES(Ariyus, 2015).
AES 128 192
Key site 4 word (16 byte) 6 word (24 byte)
Plaintext blok size 4 word (16 byte) 4 word (16 byte)
Number of Round 10 12
Round key size 4 word (16 byte) 4 word (16 byte)
Expanded key size 44 word (176 byte) 52 word (208 byte)
Dari Tabel 2.2 AES-128 bit menggunakan panjang kunci NK = 4 word
setiap word-nya terdiri dari 32 bit sehingga total kunci 128 bit, ukuran blok plaintext
128 bit dan round sebanyak 10 round (putaran). Sedangkan putaran untuk kunci
juga terdiri dari Ki= 4 word dan total putaran kunci 128 bit dan kunci yang diperluas
mempunyai ukuran 44 word dan 176 byte (Ariyus, 2015).
2.3.2 Proses Enkripsi AES
Proses enkripsi algoritma AES terdiri dari 4 jenis transformasi byte, yaitu
SubBytes, ShiftRows, Mixcolumns, dan AddRoundKey. Pada awal proses enkripsi,
input yang telah disalin ke dalam state mengalami transformasi byte AddRoundKey.
Setelah itu, state akan mengalami transformasi SubBytes, ShiftRows, MixColumns,
dan AddRoundkey secara berulang-ulang sebanyak Nr. Proses ini dalam algoritma
AES disebut sebagai round function. Round yang terakhir agak berbeda dengan
round-round sebelumnya dimana pada round terakhir state tidak mengalami
transformasi MixColumns (Ariyus, 2015).
Berikut untuk langkah enkripsi algoritma AES dapat dilihat di Gambar 2.2:
12
Gambar 2.2 Proses Enkripsi AES(Ariyus, 2015 ).
Adapun untuk detail dari setiap transformasi sebagi berikut :
1. SubBytes,
SubBytes merupakan transformasi byte dimana setiap elemen pada state akan
dipetakan dengan menggunakan sebuah tabel substitusi ( S-Box ). Tabel
substitusi S-Box akan dipaparkan dalam Gambar 2.3.
13
Gambar 2.3 S-Box( Ariyus, 2015)
Untuk setiap byte pada array state, misalkan S[r, c] = xy, yang dalam hal ini
xy adalah digit heksadesimal dari nilai S[r, c], maka nilai substitusinya,
dinyatakan dengan S’[r, c], adalah elemen di dalam tabel subtitusi yang
merupakan perpotongan baris x dengan kolom y. Ilustrasikan pengaruh
pemetaan byte pada setiap byte dalam state dapat dilihat di Gambar 2.4.
Gambar 2.4 Pengaruh Pemetaan pada Setiap Byte dalam
State(Ariyus, 2015 )
2. ShiftRows
Transformasi Shiftrows pada dasarnya adalah proses pergeseran bit dimana bit
paling kiri akan dipindahkan menjadi bit paling kanan ( rotasi bit ). Proses
pergeseran Shiftrow ditunjukkan dalam Gambar 2.5.
14
Gambar 2.5 Transformasi Shiftrows(Ariyus, 2015 )
3. Mixcolumns
MixColumns mengoperasikan setiap elemen yang berada dalam satu kolom
pada state. Secara lebih jelas, transformasi mixcolumns dapat dilihat pada
perkalian matriks persamaan pada Gambar 2.6.
Gambar 2.6 Persamaan transformasi Mixcolumns(Ariyus, 2015).
Hasil dari perkalian matriks diatas dapat dianggap seperti perkalian pada
Gambar 2.7.
Gambar 2.7 Perkalian matriks Mixcolumns(Ariyus, 2015)
4. AddRoundKey.
Pada proses enkripsi dan dekripsi AES proses AddRoundKey sama, sebuah
round key ditambahkan pada state dengan operasi XOR.
Setiap round key terdiri dari Nb word dimana tiap word tersebut akan
dijumlahkan dengan word atau kolom yang bersesuaian dari state sehingga :
untuk
15
adalah word dari key yang bersesuaian dimana i = round*Nb+c. Transformasi
AddRoundKey pada proses enkripsi pertama kali pada round = 0 untuk round
selanjutnya round = round + 1, pada proses dekripsi pertama kali pada round
= 14 untuk round selanjutnya round = round - 1.
5. Prosedure Key Expansion
Ekspansi cipher key digunakan untuk membentuk round key yang akan
digunakan pada langkah-langkah enkripsi dan dekripsi. Ekspansi kunci ini
memiliki tahapan khusus yang dikenal sebagai Rijndael’s key schedule.Iterasi
tahapan AddRoundKey pada algoritma AES – 128 diulang sebanyak sebelas
kali. Oleh karenanya, terdapat sepuluh kali round key yang dibutuhkan dalam
satu kali enkripsi state. Melalui key schedule tersebut, key yang menjadi
parameter masukan akan diekspansi menjadi beberapa round key. Prosedur key
dapat dilihat pada Gambar 2.8.
Gambar 2.8 Prosedur Key Expansion(Ariyus, 2015 )
16
2.3.3 Proses Dekripsi AES
Transformasi cipher dapat dibalikkan dan diimplementasikan dalam arah
yang berlawanan untuk menghasilkan inverse cipher yang mudah dipahami untuk
algoritma AES. Transformasi byte yang digunakan pada invers cipher adalah
InvShiftRows, InvSubBytes, InvMixColumns, dan AddRoundKey (Ariyus, 2015).
Gambar 2.9 Proses Dekripsi AES(Ariyus, 2015).
1. InvShiftRows adalah transformasi byte yang berkkebalikan dengan
transformasi SubRows. Pada transformsi InvShifRows, dilakukan
pergeseran bit ke kanan sedangkan pada ShiftRows dilakukan pergeseran
bit ke kiri . Ilustrasi transformsi InvShiftRows terdapat pada Gambar 2.10.
17
Gambar 2.10 Transformasi InvShiftRows( Rachmat, 2009)
2. InvSubBytes juga merupakan transformsi byte yang berkebalikan dengan
transformasi SubBytes. Pada InvSubByte tiap elemen pada state dipetakan
dengan menggunakan tabel Inverse S-Box. Tabel Inverse S-Box akan
ditunjukan pada Gambar 2.11.
Gambar 2.11 Tabel Inverse S-Box ( Rachmat, 2009 ).
3. InvMixColumns , setiap kolom dalam state dikalikan dengan matrik
perkalian dalam AES. Perkalian dalam matrik dapat ditulis dengan
persamaan seperti pada Gambar 2.10.
18
Gambar 2.12 Persamaan matrik InvMixColums (Rachmat, 2009).
4. AddRoundKey sama, sebuah round key ditambahkan pada state dengan
operasi XOR. Setiap round key terdiri dari Nb word dimana tiap word
tersebut akan dijumlahkan dengan word atau kolom yang bersesuaian dari
state sehingga :
untuk adalah word dari key yang bersesuaian dimana i =
round*Nb+c. Transformasi AddRoundKey pada proses enkripsi pertama
kali pada round = 0 untuk round selanjutnya round = round + 1, pada proses
dekripsi pertama kali pada round = 14 untuk round selanjutnya round =
round - 1.
2.4 Encoding dan Decoding
Dalam komunikasi dan pemrosesan informasi, pengkodean atau penyandian
(encoding) adalah proses konversi informasi dari suatu sumber (objek) menjadi
data, yang selanjutnya dikirimkan ke penerima atau pengamat, seperti pada sistem
pemrosesan data. Pengawakodean atau pengawasandian (decoding) adalah proses
kebalikannya, yaitu konversi data yang telah dikirimkan oleh sumber menjadi
informasi yang dimengerti oleh penerima. Sedangkan decoding adalah proses
pengembalian informasi dari hasil encoding menjadi bentuk aslinya.(Danesi, 2013)
2.5 Algoritma Base64
Base64 adalah kelompok skema pengkodean biner-ke-teks yang serupa
yang mewakili data biner dalam format string ASCII dengan menerjemahkannya
ke dalam representasi radix-64 (64 karakter unik). Istilah Base64 berasal dari
encoding transfer konten MIME tertentu. Setiap digit base64 mewakili 6 bit data.
(IETF, 2006). Tabel karakter base64 dapat dilihat di Gambar 2.13.
19
Gambar 2.13 Karakter Base64 (IETF, 2006).
Dalam teknik base64 jika ada sejumlah string yang akan disandikan ke
dalam base64 maka caranya adalah :
1. Pecah string bytes tersebut ke per-3 bytes.
2. Gabungkan 3 bytes menjadi 24 bit. 1 bytes = 8 bit sehingga 3 x 8 = 24 bit.
3. Lalu 24 bit tersebut dipecah menjadi 6 bit sehingga menjadi 4 pecahan.
4. Masing pecahan diubah kedalam nilai desimal, dimana maksimal nilai 6 bit
adalah 63 (26).
5. Jadikan nilai tersebut menjadi indeks untuk memilih karakter penyusun dari
base64 dan maksimal adalah 63 atau indeks ke-63.
Jika dalam proses encoding terdapat sisa pembagi maka tambahkan sebagai
penggenap sisa tersebut ”=”. Teknik base64 dapat dilihat pada Gambar2.14
Gambar 2.14 Teknik base64(IETF, 2006).