Perancangan dan Implementasi Kriptografi Menggunakan Algoritma Genetika pada Pembangkitan Kunci Artikel Ilmiah Peneliti: Deasy Natalia Sipahelut (672011107) Magdalena A. Ineke Pakereng, M.Kom. Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga Agustus 2015
29
Embed
Perancangan dan Implementasi Kriptografi Menggunakan ......Perancangan dan Implementasi Kriptografi Menggunakan Algoritma Genetika pada Pembangkitan Kunci Artikel Ilmiah Peneliti:
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Perancangan dan Implementasi Kriptografi
Menggunakan Algoritma Genetika pada Pembangkitan
Kunci
Artikel Ilmiah
Peneliti:
Deasy Natalia Sipahelut (672011107)
Magdalena A. Ineke Pakereng, M.Kom.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
Agustus 2015
Perancangan dan Implementasi Kriptografi
Menggunakan Algoritma Genetika pada Pembangkitan
Kunci
Artikel Ilmiah
Diajukan kepada
Fakultas Teknologi Informasi
untuk memperoleh Gelar Sarjana Komputer
Peneliti:
Deasy Natalia Sipahelut (672011107)
Magdalena A. Ineke Pakereng, M.Kom.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
Agustus 2015
Lembar Persetujuan
Lembar Pengesahan
Lembar Pernyataan Persetujuan Akses
Lembar Tidak Plagiat
Lembar Pernyataan
Lembar Persetujuan Publish Jurnal
Perancangan dan Implementasi Kriptografi
Menggunakan Algoritma Genetika pada Pembangkitan
Kunci
Deasy Natalia Sipahelut 1, Magdalena A. Ineke Pakereng
Selama pengiriman dan ketika sampai di penerima, informasi atau data tersebut
harus tetap dirahasiakan dan terjaga keutuhannya atau tidak dimodifikasi. Kriptografi
adalah ilmu yang mempelajari bagaimana supaya pesan atau dokumen tetap aman, tidak
dapat dibaca oleh pihak yang tidak berhak. Kunci yang efektif adalah kunci yang acak,
dan memberikan hasil ciphertext yang memiliki selisih nilai yang signifikan terhadap
plaintext. Algoritma genetika dapat digunakan untuk membangkitkan kunci yang terbaik
untuk proses enkripsi. Pada penelitian ini dirancang dan diimplementasikan kriptografi
menggunakan algoritma genetika untuk mengamankan data teks. Hasil dari penelitian ini
adalah suatu aplikasi kriptografi data teks.
Kata Kunci: Kriptografi, Algoritma Kunci Simetris, Algoritma Genetika 1 Mahasiswa Program Studi Teknik Informatika, Fakultas Teknologi Informasi, Universitas
Kristen Satya Wacana Salatiga 2Staf Pengajar Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga.
1
1. Pendahuluan
Perkembangan teknologi informasi dan komunikasi sangat cepat dan pesat,
hal ini yang menyebabkan munculnya kemajuan teknologi informasi. Secara
langsung atau tidak, teknologi informasi telah menjadi bagian penting dari
berbagai bidang kehidupan. Karena banyak kemudahan yang ditawarkan,
teknologi informasi tidak dapat lepas dari berbagai aspek kehidupan manusia
yang memungkinkan dapat berkomunikasi dan saling bertukar data atau
informasi. Data atau informasi menjadi sangat rentan untuk diketahui, diambil
atau bahkan dimanipulasi dan disalahgunakan oleh pihak lain yang tidak berhak.
Selama pengiriman dan ketika sampai di tujuan, informasi atau data tersebut harus
tetap dirahasiakan dan terjaga keutuhannya atau tidak dimodifikasi. Untuk
permasalahan-permasalahan keamanan tersebut diperlukan suatu metode untuk
menjaga keamanan data atau informasi.
Keamanan data tidak hanya diperuntukkan bagi data atau informasi yang
akan dikirim melalui jaringan komunikasi, tetapi dapat juga merupakan data atau
informasi yang akan disimpan dalam media penyimpanan. Data atau informasi
tidak hanya berupa data teks, tetapi juga dapat berupa data citra (image), data
suara atau bunyi (audio) dan video.
Kriptografi adalah ilmu yang mempelajari bagaimana supaya pesan atau
dokumen tetap aman, tidak dapat dibaca oleh pihak yang tidak berhak
(anauthorized persons). Kunci yang efektif adalah kunci yang acak, dan
memberikan hasil ciphertext yang memiliki selisih nilai yang signifikan terhadap
plaintext. Algoritma genetika dapat digunakan untuk membangkitkan kunci yang
terbaik untuk proses enkripsi. Algoritma genetika adalah suatu metode pencarian
(search) acak yang didasarkan atas prinsip evolusi yang terjadi di alam, individu-
individu yang dapat beradaptasi dengan lingkungan di mana individu tersebut
berada akan tetap hidup sedangkan yang tidak, akan mati. Algoritma genetika
diperkenalkan oleh John Holland [1] dari Universitas Michigan, Amerika Serikat
dan termasuk salah satu metode dalam bidang kecerdasan buatan.
Berdasarkan latar belakang masalah, maka akan dilakukan penelitian yang
membahas tentang implementasi kriptografi dengan menggunakan algoritma
genetika, untuk membangkitkan kunci, sehingga diperoleh hasil enkripsi terbaik
2. Tinjauan Pustaka
Al-Husainy [2] pada penelitiannya membahas tentang metode enkripsi
terhadap citra grayscale dengan mengeksploitasi kekuatan feature dari operasi
algoritma genetika yaitu crossover dan mutasi. Penelitian yang dilakukan
merupakan adaptasi algoritma genetika ke dalam kriptografi, terhadap data citra
grayscale (8 bit) dengan dimensi 256 X 256 piksel. Pengujian yang dilakukan
hanya melihat waktu proses dan apakah algoritma yang dibuat sudah memenuhi
sifat dari kriptografi, yaitu data citra hasil enkripsi tidak dapat dikenal.
Pakereng melakukan penelitian untuk mengimplementasikan kriptografi
menggunakan Algoritma Genetika pada data citra digital [3]. Dalam penelitian
tersebut, diciptakan algoritma kriptografi dengan menggunakan algoritma
2
genetika, yaitu mengeksploitasi komponen-komponen generasi, populasi,
crossover rate, mutation dan fungsi fitness. Kriptosistem tersebut diterapkan pada
8-bit image grayscale, dengan menggunakan 2 (dua) kunci, random seed dan
jumlah generasi. Hasil penelitian menunjukkan bahwa kriptosistem menggunakan
algoritma genetika dapat diterapkan pada citra digital.
Berbeda dengan penelitian-penelitian sebelumnya, pada penelitian ini
bertujuan untuk mengamankan data teks. Algoritma genetika tidak secara
langsung digunakan untuk menyandikan plaintext. Algoritma genetika digunakan
untuk membangkitkan solusi-solusi kunci enkripsi yang dapat digunakan,
kemudian melalui proses selection, crossover, dan mutation, diperoleh satu solusi
terbaik, yang kemudian digunakan untuk melakukan proses enkripsi/dekripsi.
Berdasarkan penelitian-penelitian yang sudah ada mengenai kriptografi
dan algoritma genetika, maka dilakukan penelitian yang membahas implementasi
kriptografi dengan sistem simetris menggunakan algoritma genetika, yaitu
mengeksploitasi operasi crossover dan mutasi dalam proses enkripsi-dekripsi
untuk data teks. Algoritma genetika digunakan untuk membangkitkan dan
mencari kunci enkripsi terbaik yang dapat digunakan. Penelitian ini diharapkan
dapat memberikan keamanan suatu data dan informasi yang dimiliki, sehingga
menghasilkan suatu informasi yang efektif.
Penelitian yang dilakukan merupakan penelitian dalam bidang kriptografi.
Kriptografi berasal dari Yunani, terdiri dari dua suku kata yaitu kripto dan
graphia. kripto artinya menyembunyikan dan graphia artinya tulisan. Kriptografi
adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan
dengan aspek keamanan informasi, seperti kerahasiaan data, keabsahan data,
integritas data serta autentikasi data [4]. Kriptografi dapat pula diartikan sebagai
ilmu atau seni untuk menjaga keamanan pesan. Ketika suatu pesan dikirim dari
suatu tempat ke tempat lain, isi pesan tersebut mungkin dapat disadap oleh pihak
lain yang tidak berhak untuk mengetahu isi pesan tersebut. Untuk menjaga pesan,
maka pesan tersebut dapat diubah menjadi suatu kode yang tidak dapat dimengerti
oleh pihak lain. Enkripsi adalah suatu proses penyandian yang melakukan
perubahan kode (pesan) dari yang dapat dimengerti (plaintext) menjadi sebuah
kode yang tidak dapat dimengerti (ciphertext). Sedangkan proses kebalikannya
untuk mengubah ciphertext menjadi plaintext disebut dekripsi. Proses enkripsi dan
dekripsi memerlukan suatu mekanisme dan kunci tertentu.
Gambar 1 Ruang Pencarian Dalam Algoritma Genetika [5]
Algoritma genetika yang dikembangkan oleh Goldberg [6] adalah
algoritma komputasi yang diinspirasi teori evolusi Darwin yang menyatakan
bahwa kelangsungan hidup suatu makhluk dipengaruhi aturan “yang kuat adalah
3
yang menang”. Darwin juga menyatakan bahwa kelangsungan hidup suatu
makhluk dapat dipertahankan melalui proses reproduksi, crossover dan mutasi.
Konsep dalam teori evolusi Darwin tersebut kemudian diadopsi menjadi algoritma
komputasi untuk mencari solusi suatu permasalahan dengan cara yang lebih
“alamiah”.
Sebuah solusi yang dibangkitkan dalam algoritma genetika disebut
kromosom, sedangkan kumpulan kromosom disebut sebagai populasi. Sebuah
kromosom dibentuk dari komponen-komponen penyusun yang disebut sebagai
gen dan nilainya dapat berupa bilangan numerik, biner, simbol ataupun karakter
tergantung dari permasalahan yang ingin diselesaikan (Gambar 1). Kromosom-
kromosom tersebut akan berevolusi secara berkelanjutan yang disebut dengan
generasi. Tiap generasi kromosom-kromosom dievaluasi tingkat keberhasilan nilai
solusinya terhadap masalah yang ingin diselesaikan (fungsi_objektif)
menggunakan ukuran yang disebut dengan fitness. Untuk memilih kromosom
yang tetap dipertahankan untuk generasi selanjutnya dilakukan proses yang
disebut dengan seleksi. Proses seleksi kromosom menggunakan konsep aturan
evolusi Darwin yang telah disebutkan sebelumnya yaitu kromosom yang
mempunyai nilai fitness tinggi akan memiliki peluang lebih besar untuk terpilih
lagi pada generasi selanjutnya.
Kromosom-kromosom baru yang disebut dengan offspring (anak),
dibentuk dengan cara melakukan perkawinan antara kromosom-kromosom induk
dalam satu generasi yang disebut proses crossover. Jumlah kromosom dalam
populasi yang mengalami crossover ditentukan oleh parameter yang disebut
dengan crossover rate. Sebuah kromosom yang mengarah pada solusi yang bagus,
dapat diperoleh dari proses memindah silangkan dua buah kromosom [7]. Pindah
silang dapat dilakukan dengan beberapa cara yang berbeda. Salah satunya adalah
pindah silang satu titik potong (one-point crossover) dimana titik potong dipilih
secara acak. Two-point crossover hampir sama dengan prosedur one-point
crossover, kecuali pada two-point crossover harus dipilih dua crossover point dan
hanya gen yang ada di antara kedua crossover point itu yang akan ditukarkan.
Mekanisme perubahan susunan unsur penyusun makhluk hidup akibat
adanya faktor alam yang disebut dengan mutasi direpresentasikan sebagai proses
berubahnya satu atau lebih nilai gen dalam kromosom dengan suatu nilai acak.
Jumlah gen dalam populasi yang mengalami mutasi ditentukan oleh parameter
yang dinamakan mutation rate. Setelah beberapa generasi akan dihasilkan
kromosom-kromosom yang nilai gen-gennya konvergen ke suatu nilai tertentu
yang merupakan solusi terbaik yang dihasilkan oleh algoritma genetika terhadap
permasalahan yang ingin diselesaikan [3]. Jika dalam proses pemilihan
kromosom-kromosom cenderung dilakukan pada kromosom yang memiliki nilai
fitness tinggi, pencapaian solusi optimum lokal (konvergensi premature) akan
sangat mudah terjadi. Untuk menghindari konvergensi premature tersebut dan
tetap menjaga perbedaan (diversity) kromosom-kromosom dalam populasi, selain
melakukan penekanan selektif yang lebih efisien, operator mutasi berperan juga
disini. Proses mutasi ini bersifat acak sehingga tidak selalu menjamin bahwa
setelah proses mutasi akan diperoleh kromosom dengan fitness yang lebih baik
dibandingkan dengan generasi sebelumnya [7]. Akan tetapi mutasi dapat pula
4
menjadi kontroversi penerapannya di dalam algoritma genetika karena sifatnya
yang acak. Sehingga dapat mengganggu kromosom yang diperoleh. Maka mutasi
biasanya tetap digunakan namun dengan probabilitas yang rendah.
Beberapa metode mutasi dapat dilakukan yang disesuaikan dengan
kebutuhan [7]: (1) Mutasi dalam pengkodean biner. Mutasi dalam pengkodean
biner sangatlah sederhana. Acak gen yang terpilih dilakukan inversi dari 0 ke 1
atau dari 1 ke 0; (2) Mutasi dalam pengkodean permutasi. Proses mutasi didalam
pengkodean permutasi tidak dilakukan di dalam biner karena urutan sangat
diperhatikan. Namun untuk kasus lain dapat digunakan yaitu dengan cara memilih
dua posisi gen secara acak kemudian menukarkannya; (3) Mutasi dalam
pengkodean nilai. Mutasi didalam pengkodean nilai hampir sama dengan mutasi
pada pengodean biner. Namun gen yang terpilih bukan dilakukan inversi. Tetapi
dilakukan penambahan atau pengurangan nilai sebesar nilai kecil tertentu yang
diambil secara acak
Algoritma genetika menggunakan fungsi pembangkitan bilangan acak
untuk proses pembangkitan populasi awal dan pemilihan gen dalam mutasi. Pada
penelitian ini digunakan algoritma LCG sebagai pseudorandom number
generator. Pseudorandom Number Generator (PNRG) adalah sebuah algoritma
yang membangkitkan sebuah deret bilangan yang tidak benar-benar acak.
Keluaran dari pembangkit bilangan acak semu hanya mendekati beberapa dari
sifat-sifat yang dimiliki bilangan acak. Walaupun bilangan yang benar-benar acak
hanya dapat dibangkitkan oleh perangkat keras pembangkit bilangan acak,
bukannya oleh perangkat lunak komputer, akan tetapi bilangan acak semu banyak
digunakan dalam beberapa hal seperti simulasi dalam ilmu fisika, matematika,
biologi dan sebagainya, dan juga merupakan hal yang sangat penting dalam dunia
kriptografi. Beberapa algoritma enkripsi baik yang simetris maupun asimetris
memerlukan bilangan acak sebagai parameter masukannya seperti parameter
kunci pada algoritma kunci publik dan pembangkitan initialization vector (IV)
pada algoritma kunci simetri. Walaupun terlihat sederhana untuk mendapatkan
bilangan acak, tetapi diperlukan analisis matematika yang teliti untuk
membangkitkan bilangan seacak mungkin. Salah satu metodenya adalah linear
congruential generator atau LCG [8]. Linear Congruential Generator merupakan
pembangkit bilangan acak yang sederhana, mudah dimengerti teorinya, dan juga
mudah untuk diimplementasikan. LCG didefinisikan dalam relasi berulang
berikut:
Xn = (aXn–1 + c) mod m (1)
Dimana : Xn = bilangan acak ke-n dari deretnya
Xn-1 = bilangan acak sebelumnya
a = faktor pengali, nilai yang digunakan 1664525
c = increment, dengan nilai 1013904223
m = modulus, dengan nilai 4294967296 (2 pangkat 32)
X0 adalah kunci pembangkit atau disebut juga umpan (seed). LCG
mempunyai periode tidak lebih besar dari m, dan pada kebanyakan kasus
periodenya kurang dari itu. LCG mempunyai periode penuh (m – 1) jika
memenuhi syarat berikut: c relatif prima terhadap m.
5
a – 1 dapat dibagi dengan semua faktor prima dari m
a – 1 adalah kelipatan 4 jika m adalah kelipatan 4
m > maks (a, c, X0)
a > 0, c > 0
Rumus ini menggunakan tiga konstanta, yaitu a=1664525, c=1013904223
dan m=4294967296. Pemilihan angka tersebut mengacu nilai-nilai parameter
yang direkomendasikan [8].
3. Metode dan Perancangan Sistem
Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang
terbagi dalam empat tahapan, yaitu: (1) Identifikasi masalah dan studi literatur, (2)
Perancangan sistem, (3) Implementasi sistem, dan (4) Pengujian sistem dan
analisis hasil pengujian.
Gambar 2 Tahapan Penelitian
Tahapan penelitian pada Gambar 2, dapat dijelaskan sebagai berikut.
Tahap pertama: identifikasi masalah, yaitu pentingnya keamanan data, dan
pengamanan data dapat dicapai dengan kriptografi dengan menggunakan kunci
yang kuat. Pembentukan kunci dapat dilakukan dengan menggunakan algoritma
genetika; Tahap kedua: perancangan sistem yang meliputi perancangan proses
dengan mengacu pada tahapan algoritma genetika yaitu pembangkitan populasi,
selection, crossover, mutation, dan penentuan kondisi terminasi algoritma
genetika; Tahap ketiga: implementasi sistem, yaitu membuat aplikasi sesuai
perancangan proses pada tahap kedua; dan Tahap keempat: pengujian sistem dan
analisis hasil pengujian, yaitu dilakukan pengujian terhadap proses yang telah
dirancang, dan melihat kesesuaian solusi terhadap masalah yang telah
teridentifikasi sebelumnya.
Tahap algoritma genetika pembangkitan kunci, untuk proses enkripsi dan
dekripsi ditunjukkan pada Gambar 3. Panjang kunci yang digunakan adalah 128
bit (16 karakter ASCII). 128 bit kunci cukup untuk mengamankan informasi
sampai 30 tahun kedepan [9].
Nilai-nilai yang digunakan sebagai input dalam proses adalah user key,
crossover rate, dan mutation rate. User key digunakan untuk membangkitkan
populasi awal. Crossover rate digunakan untuk menentukan jumlah gen yang
akan ditukarkan antara dua induk terpilih. Mutation rate adalah nilai yang
menentukan berapa gen yang akan mengalami mutasi pada anak yang terpilih.
6
Generate Populasi Awal
Proses Selection dengan melihat nilai Fitness
Proses Crossover berdasarkan individu yang terpilih pada proses sebelumnya, dengan nilai
Crossover Rate
Proses Mutation menggunakan nilai Mutation Rate
Nilai Total Generasi Tercapai
FALSE
Pilih SATU individu dengan nilai Fitness terbesar, gunakan sebagai kunci enkripsi/
dekripsi
Proses Enkripsi/Dekripsi dengan operator XOR
TRUE
Mulai
Selesai
Tentukan batas Nilai Total Generasi (jumlah perulangan)Tentukan nilai Mutation RateTentukan nilai Crossover Rate
Gambar 3 Algoritma Genetika Pembangkitan Kunci Untuk Proses Enkripsi Dan Dekripsi
Generate populasi awal dilakukan sehingga dihasilkan satu populasi yang
memiliki beberapa individu (kromosom). Jumlah kromosom dalam satu populasi
ditentukan dengan Rumus 1 ukuran populasi [10]. L menyatakan banyaknya gen
dalam satu kromosom. Banyaknya gen dalam satu kromosom ditentukan dari
panjang kunci yang digunakan, yaitu 16 karakter ASCII. Jumlah populasi awal
dihitung dengan Rumus 2, yaitu 16.941, dibulatkan ke atas menjadi 17 kromosom
dalam 1 populasi. Untuk menjaga keacakan nilai [11] dalam 1 kromosom sebagai
kunci, maka kromosom yang memiliki gen dengan nilai berulang, diberi nilai
fitness 0 (nol). Contohnya dalam satu kromosom terdapat dua gen dengan nilai
211, maka kromosom tersebut bernilai fitness 0 (nol).
(2)
7
Kromosom-kromosom awal dibangkitkan dengan langkah yaitu: (1)
jumlahkan nilai-nilai kode ASCII user key; (2) Gunakan nilai hasil penjumlahan
sebagai random seed; (3) dengan menggunakan algoritma PRNG, bangkitkan
deretan bilangan semi acak sebanyak 16 angka, simpan dalam 1 kromosom; (4)
Lakukan langkah ke 3 sehingga diperoleh 17 kromosom.
Gambar 4 Membuat Populasi Awal Berdasarkan Kunci Yang Dimasukkan User (User Key)
Selection dilakukan untuk memilih dua induk dari populasi. Dua induk
yang dipilih adalah kromosom-kromosom yang memiliki nilai fitness terbesar.
Untuk menghitung nilai fitness dalam satu kromosom digunakan Rumus 3. L
menyatakan banyaknya gen dalam satu kromosom. P menyatakan nilai kode
ASCII user key. K menyatakan nilai gen atau nilai kode ASCII kunci yang
digunakan. Pi berarti byte user key pada posisi ke i, demikian pula dengan Ki.
(3)
Crossover dilakukan dengan menyilangkan nilai gen pada dua induk
terpilih, dari proses selection. Hasil penyilangan adalah satu kromosom anak.
Jumlah gen yang disilangkan ditentukan melalui nilai crossover rate. Pada
penelitian ini dirancang metode sliding two-point crossover (Gambar 5), yang
bekerja dengan cara menukar dua gen dari dua induk, untuk menghasilkan dua
anak baru (anak 1 dan anak 2). Posisi gen yang dipilih diurutkan dari posisi awal
(posisi 0 dan posisi 1). Dua anak baru (anak 3 dan anak 4) diperoleh dengan
menggeser posisi pertukaran, menjadi posisi ke 1 dan posisi 2. Proses ini
dilakukan sampai dicapai anak sejumlah 15, sehingga ditambah dengan 2 induk
menjadi 17 kromosom dalam 1 populasi.
8
Gambar 5 Sliding Two-Point Crossover Dengan Nilai Pertukaran 2 Gen
Mutation dilakukan dengan cara memilih 1 kromosom dengan nilai fitness
paling rendah. Kemudian dengan menggunakan nilai mutation rate, dipilih secara
acak gen yang akan bermutasi.
Gambar 6 Mutasi 1 Gen Acak dengan Nilai Mutation rate 1/16 (6.25%)
Terminasi proses dilakukan ketika jumlah perulangan, yang juga berarti
jumlah generasi telah mencapai nilai yang ditentukan di awal. Generasi pertama
adalah populasi hasil dari proses generate populasi awal, selection, crossover dan
mutation. Populasi ini kemudian melalui tahap selection, crossover dan mutation
lagi, sehingga dihasilkan generasi kedua, demikian seterusnya hingga dicapai
generasi tertentu sesuai dengan nilai yang telah ditetapkan di awal proses (Gambar
3).
Ketika angka generasi mencapai batas yang ditetapkan, maka dihitung
nilai fitness tiap-tiap kromosom, dan dipilih satu kromosom dengan nilai fitness
terbesar. Proses enkripsi atau dekripsi dilakukan dengan menggunakan operator
XOR. Kunci yang digunakan adalah hasil individu dengan nilai fitness terbesar.
9
4. Hasil dan Pembahasan
Berdasarkan perancangan sistem, dilakukan proses pengembangan sistem.
Sistem dibangun dalam bentuk aplikasi untuk sistem operasi Windows, dengan
menggunakan teknologi .Net Framework 4.5, dan software pengembangan Visual
Studio 2012 Express for Desktop.
Pada Gambar 7, ditunjukkan form yang digunakan untuk melakukan
proses enkripsi. Form ini menyediakan 5 kolom input, yaitu kunci, batas
maksimal generasi, mutation rate, dan crossover rate, dan plaintext. Pada sisi
kanan form, ditunjukkan langkah-langkah proses enkripsi yang dilakukan oleh
aplikasi.
Gambar 8 merupakan form untuk proses dekripsi. Sama seperti form
enkripsi, form dekripsi menyediakan 5 kolom input. Input plaintext diganti
dengan input ciphertext. Pada sisi kanan form juga ditampilkan langkah proses
dekripsi tahap demi tahap, untuk tiap generasi.
Gambar 7 Form Enkripsi
Gambar 8 Form Dekripsi
10
Untuk menjelaskan langkah yang dilakukan oleh aplikasi, digunakan
contoh dengan data:
Plaintext: emas ada di meja
Kunci: fti kau berada??
Batas maksimal generasi: 20
Mutation rate: 1, yang berarti 1 gen bermutasi dari antara 16 gen.
Crossover rate: 2.
Nilai plaintext dalam kode ASCII adalah: 101 109 97 115 32 97 100 97 32 100 105 32 109 101 106 97
Nilai kunci dalam kode ASCII adalah: 102 116 105 32 107 97 117 32 98 101 114 97 100 97 63 63
Random seed: 1441
Proses yang terjadi di awal adalah membuat populasi awal. Nilai random
seed untuk membangkitkan populasi awal diperoleh dengan menjumlahkan nilai
kode ASCII kunci. Kode Program 1 digunakan untuk membangkitkan populasi
awal. Class PRNG (baris 3), digunakan sebagai random generator. Kromosom
dibuat dengan membangkitkan bilangan acak sebanyak 16 (baris 9), dan dilakukan
sebanyak 17 (baris 6) kali untuk memenuhi kuota populasi.
Kode Program 1 Perintah Untuk Proses Generate Populasi Awal
1. public static List<byte[]> PopulasiAwal(int randomSeed)
Pengujian authentication perlu dilakukan untuk mengetahui jika kunci
yang digunakan berbeda, maka dekripsi tidak dapat dilakukan, atau menghasilkan
plaintext yang keliru. Hasil pengujian ditunjukkan pada Tabel 6.
Tabel 6 Hasil Pengujian Authentication
Kunci Enkripsi Kunci Dekripsi Output Aplikasi Kesimpulan fti kau berada?? fti kau berada?? Plaintext sama Berhasil Satya.wacana Satya.wacana Plaintext sama Berhasil 1234567812345678 1234567812345678 Plaintext sama Berhasil abcdABCD1234@#$ abcdABCD1234@#$ Plaintext sama Berhasil fti kau berada?? fti kau berada!! Plaintext berbeda Berhasil Satya.wacana Satya*wacana Plaintext berbeda Berhasil 1234567812345678 2345678123456789 Plaintext berbeda Berhasil abcdABCD1234@#$ ABCDABCD1234@#$ Plaintext berbeda Berhasil
Pengujian integritas perlu dilakukan untuk mengetahui apakah terjadi
perubahan pada pesan yang disandikan. Integritas dilakukan dengan
membandingkan nilai hash. Hasil pengujian pada Tabel 7, menunjukkan bahwa
tidak ada kerusakan terhadap pesan yang diproses.
Tabel 7 Hasil Pengujian Integritas Pesan
Panjang Pesan Hash Awal Hash Akhir Kesimpulan
32 byte 064b58270f4fa022
014c07fd7364e004
064b58270f4fa022
014c07fd7364e004 utuh
64 byte 29cf930d8ab5f219
00de5c70c498121b
29cf930d8ab5f219
00de5c70c498121b utuh
128 byte a0fb8b90eea12fdd
97ce30305fd03bea
a0fb8b90eea12fdd
97ce30305fd03bea utuh
256 byte 77932817d9d65979
f6091dd8370b4b0d
77932817d9d65979
f6091dd8370b4b0d utuh
512 byte 3998a731fa850b03
c823304bd5131e2b
3998a731fa850b03
c823304bd5131e2b utuh
1024 byte aaacdc18555f5280
d2f1c9e3f44b942b
aaacdc18555f5280
d2f1c9e3f44b942b utuh
19
20
Simpulan
Berdasarkan perancangan, pembahasan dan pengujian diperoleh
kesimpulan yaitu: (1) Kriptografi pada data teks dapat dicapai dengan
menggunakan algoritma genetika; (2) Algoritma genetika dapat digunakan untuk
membangkitkan kunci, sehingga diperoleh nilai ciphertext yang memiliki selisih
yang besar terhadap nilai plaintext; (3) Selain kunci, hasil dipengaruhi oleh
jumlah generasi, nilai crossover rate, dan mutation rate; (4) Kecepatan proses
dipengaruhi oleh jumlah generasi, dengan perbandingan yang tidak linier.
Semakin banyak generasi, semakin kecil pula waktu yang diperlukan per
generasinya.
Saran yang dapat diberikan untuk penelitian dan pengembangan lebih
lanjut adalah: Kunci yang terpilih pada akhir evolusi (generasi terakhir), tidak
harus satu, namun dapat lebih dari satu, sehingga dapat digunakan bergantian
untuk melakukan proses enkripsi/dekripsi blok per blok.
5. Daftar Pustaka
[1]. Goldberg, D. E. & Holland, J. H. 1988. Genetic algorithms and machine
learning. Machine learning 3, 95–99.
[2]. Al-Husainy, M. A. F. 2006. Image encryption using genetic algorithm.
Information Technology Journal 5, 516–519.
[3]. Pakereng, M. A. I. 2009. Kriptosistem menggunakan Algoritma Genetika
pada Data Citra. AITI 6.
[4]. Munir, R. 2006. Kriptografi. Informatika, Bandung