Perancangan dan Implementasi Kriptografi Menggunakan ......Perancangan dan Implementasi Kriptografi...
Transcript of Perancangan dan Implementasi Kriptografi Menggunakan ......Perancangan dan Implementasi Kriptografi...
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
2
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Jl. Diponegoro 52-60, Salatiga 50711, Indonesia
E-mail: [email protected], [email protected]
2
Abstract During transmission and when it reached the recipient, information or data must
remain confidential and maintained its integrity or unmodified. Cryptography is the
science that studies how to make the message or document remains secure, can not be
read by unauthorized parties. Effective key is a random key, and provide the results of
ciphertext that has a difference of significant value to the plaintext. Genetic algorithms
can be used to generate the best key for the encryption process. In this study, designed
and implemented cryptography uses a genetic algorithm to secure data text. Results from
this study is an application of cryptography text data.
Keywords: Cryptography, Symmetric-Key Algorithm, Genetic Algorithm (GA)
Abstrak
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)
2. {
3. PRNG pengacak = new PRNG(randomSeed);
4.
5. List<byte[]> list = new List<byte[]>();
6. for (int i = 0; i < Populasi; i++)
7. {
8. byte[] kromosom = new byte[JumlahGen];
9. for (int j = 0; j < JumlahGen; j++)
10. {
11. var randomValue = pengacak.Next();
12. kromosom[j] = (byte)(randomValue % byte.MaxValue);
13. }
14. list.Add(kromosom);
15. }
16. return list;
17. }
Dengan menggunakan Kode Program 1, maka dihasilkan 17 kromosom,
sebagai generasi awal.
0 > 33 197 147 91 203 190 180 87 81 2 9 250 173 214 242 112
1 > 85 93 131 7 21 57 248 241 114 22 251 114 187 176 207 165
2 > 59 67 41 135 72 121 97 225 32 76 54 51 197 122 82 210
3 > 83 99 71 208 115 140 182 88 251 22 212 151 216 212 138 115
4 > 183 240 204 136 53 43 3 63 108 46 139 245 54 148 174 129
5 > 108 120 162 150 7 202 95 196 231 182 110 43 165 211 237 6
6 > 174 239 124 179 144 171 195 237 69 60 196 49 194 254 61 164
7 > 68 195 171 252 247 237 214 38 13 206 219 171 78 232 42 52
8 > 202 232 234 129 46 152 190 206 200 14 209 119 129 214 167 69
9 > 14 237 48 208 66 179 241 207 84 58 103 61 85 146 225 186
10 > 77 8 125 142 177 81 5 38 45 65 211 253 221 124 11 82
11 > 148 37 174 0 182 158 123 119 190 212 141 167 143 149 45 57
12 > 8 250 77 156 151 248 153 158 186 117 34 159 151 149 248 156
13 > 53 26 92 157 248 245 50 58 94 131 254 86 37 247 151 54
11
14 > 99 246 41 143 45 120 118 68 204 79 72 215 192 11 119 220
15 > 225 2 31 223 129 192 200 151 89 43 161 89 148 4 32 24
16 > 91 178 147 111 147 123 135 136 214 120 4 201 193 10 254 171
Pada tiap kromosom pada populasi tersebut, dihitung nilai fitness. Nilai
fitness diperoleh dengan menjumlah selisih XOR antara plaintext dengan
ciphertext, dengan kromosom tersebut sebagai kunci. Kode Program 2 merupakan
perintah untuk menghitung nilai fitness. Class Math dengan method Abs (baris 6)
digunakan untuk mendapatkan nilai absolut dari selisih antara ciphertext dengan
plaintext. Angka 0 (nol) diberikan sebagai nilai fitness untuk kromosom yang
memiliki nilai gen yang muncul lebih dari satu.
Kode Program 2 Perintah Untuk Menghitung Nilai Fitness
1. public static int NilaiFitness(byte[] userkey, byte[] key)
2. {
3. var distinct = key.Distinct();
4. if (distinct.Count() < key.Length)
5. {
6. return 0;
7. }
8. else
9. {
10. int total = 0;
11. for (int i = 0; i < userkey.Length; i++)
12. {
13. total += Math.Abs(
14. (userkey[i] - (userkey[i] ^ key[i])));
15. }
16. return total;
17. }
18. }
Hasil perhitungan nilai fitness untuk masing-masing kromosom
ditunjukkan sebagai berikut:
1131 > 33 197 147 91 203 190 180 87 81 2 9 250 173 214 242 112
0 > 85 93 131 7 21 57 248 241 114 22 251 114 187 176 207 165
1153 > 59 67 41 135 72 121 97 225 32 76 54 51 197 122 82 210
0 > 83 99 71 208 115 140 182 88 251 22 212 151 216 212 138 115
1028 > 183 240 204 136 53 43 3 63 108 46 139 245 54 148 174 129
1371 > 108 120 162 150 7 202 95 196 231 182 110 43 165 211 237 6
1260 > 174 239 124 179 144 171 195 237 69 60 196 49 194 254 61 164
0 > 68 195 171 252 247 237 214 38 13 206 219 171 78 232 42 52
0 > 202 232 234 129 46 152 190 206 200 14 209 119 129 214 167 69
1238 > 14 237 48 208 66 179 241 207 84 58 103 61 85 146 225 186
885 > 77 8 125 142 177 81 5 38 45 65 211 253 221 124 11 82
1523 > 148 37 174 0 182 158 123 119 190 212 141 167 143 149 45 57
0 > 8 250 77 156 151 248 153 158 186 117 34 159 151 149 248 156
859 > 53 26 92 157 248 245 50 58 94 131 254 86 37 247 151 54
1108 > 99 246 41 143 45 120 118 68 204 79 72 215 192 11 119 220
0 > 225 2 31 223 129 192 200 151 89 43 161 89 148 4 32 24
0 > 91 178 147 111 147 123 135 136 214 120 4 201 193 10 254 171
Kode Program 3 digunakan untuk proses selection dari populasi. Hasil
selection adalah dua kromosom dengan nilai fitness terbesar. Dengan
menggunakan contoh diatas, maka kromosom yang dipilih adalah:
1523 > 148 37 174 0 182 158 123 119 190 212 141 167 143 149 45 57
1371 > 108 120 162 150 7 202 95 196 231 182 110 43 165 211 237 6
12
Kode Program 3 Perintah Untuk Proses Selection 1. p2 = p2.OrderByDescending(x => x.FitnessScore).ToList();
2. selected.Add(p2[0].Gen);
3. selected.Add(p2[1].Gen);
Proses Crossover dilakukan pada dua kromosom terpilih. Jika nilai
crossover rate yang digunakan adalah 2 (dua), maka hasil persilangan dari adalah
sebagai berikut:
1523 > 148 37 174 0 182 158 123 119 190 212 141 167 143 149 45 57
1371 > 108 120 162 150 7 202 95 196 231 182 110 43 165 211 237 6
1544 > 108 120 174 0 182 158 123 119 190 212 141 167 143 149 45 57
1350 > 148 37 162 150 7 202 95 196 231 182 110 43 165 211 237 6
1596 > 148 120 162 0 182 158 123 119 190 212 141 167 143 149 45 57
1298 > 108 37 174 150 7 202 95 196 231 182 110 43 165 211 237 6
1677 > 148 37 162 150 182 158 123 119 190 212 141 167 143 149 45 57
1217 > 108 120 174 0 7 202 95 196 231 182 110 43 165 211 237 6
1560 > 148 37 174 150 7 158 123 119 190 212 141 167 143 149 45 57
0 > 108 120 162 0 182 202 95 196 231 182 110 43 165 211 237 6
1326 > 148 37 174 0 7 202 123 119 190 212 141 167 143 149 45 57
0 > 108 120 162 150 182 158 95 196 231 182 110 43 165 211 237 6
1411 > 148 37 174 0 182 202 95 119 190 212 141 167 143 149 45 57
1483 > 108 120 162 150 7 158 123 196 231 182 110 43 165 211 237 6
1636 > 148 37 174 0 182 158 95 196 190 212 141 167 143 149 45 57
1258 > 108 120 162 150 7 202 123 119 231 182 110 43 165 211 237 6
1577 > 148 37 174 0 182 158 123 196 231 212 141 167 143 149 45 57
Kode Program 4 merupakan perintah untuk menyilangkan gen dari dua
induk (baris 4-5). Pada tiap proses perulangan (baris2-5), dihasilkan dua anak
baru.
Kode Program 4 Perintah Untuk Proses Crossover 1. for (int c = i; c < (i + crossoverRate); c++)
2. {
3. int cx = c % JumlahGen;
4. anak1[cx] = indukB[cx];
5. anak2[cx] = indukA[cx];
6. }
Berdasarkan hasil crossover, dipilih satu kromosom dengan nilai fitness
paling kecil. Pada contoh ini adalah kromosom dengan nilai fitness 0. Kemudian
dengan perintah pada Kode Program 5, dilakukan proses mutasi. Untuk
menentukan gen yang bermutasi, digunakan class PRNG untuk memperoleh nilai
acak antara 0-15, yang merupakan posisi gen. Pada contoh ini adalah gen posisi
12, dengan nilai 165 dalam biner 10100101 . Jika dibalik (flip nilai bit tersebut
maka diperoleh 01011010 , dalam desimal bernilai 90.
Awal 0 > 108 120 162 0 182 202 95 196 231 182 110 43 165 211 237 6
Akhir 0 > 108 120 162 0 182 202 95 196 231 182 110 43 90 211 237 6
Kode Program 5 digunakan untuk membangkitkan bilangan acak (baris 2),
dan kemudian memilih lokasi gen (baris 5). Proses membalikkan nilai bit
dilakukan dengan cara melakukan operasi XOR antar nilai gen dengan angka 255
(165 XOR 255 = 90).
13
Kode Program 5 Perintah Untuk Proses Mutation 1. byte[] fitnesTerendah = p2[0].Gen;
2. PRNG pengacak = new PRNG(randomSeed + p2[0].FitnessScore);
3. for (int i = 0; i < mutationRate; i++)
4. {
5. long posisiGenMutasi = (long)pengacak.Next() % JumlahGen;
6. //flip bit, nilai inverse
7. fitnesTerendah[posisiGenMutasi] =
8. (byte)(fitnesTerendah[posisiGenMutasi] ^ 255);
9. }
Pada akhir proses algoritma genetika, ketika nilai total generasi telah
tercapai, dipilih satu kromosom dengan nilai fitness terbesar. Pada contoh diatas,
setelah dilakukan proses evolusi 20 kali, maka dihasilkan populasi dengan
kromosom dengan nilai fitness terbesar adalah
148 37 162 150 182 158 123 196 190 212 141 167 143 149 210 57
Kromosom tersebut digunakan untuk proses enkripsi maupun dekripsi.
Kode Program 6 merupakan perintah untuk proses enkripsi/dekripsi, dengan
operator XOR (baris 6). Hasil enkripsi pada contoh diatas adalah
Plain 101 109 97 115 32 97 100 97 32 100 105 32 109 101 106 97
Key 148 37 162 150 182 158 123 196 190 212 141 167 143 149 210 57
Cipher 241 72 195 229 150 255 31 165 158 176 228 135 226 240 184 88
Kode Program 6 Perintah Untuk Proses Enkripsi Dan Dekripsi 1. public static byte[] XOR(byte[] a, byte[] b)
2. {
3. byte[] result = new byte[a.Length];
4. for (int i = 0; i < a.Length; i++)
5. {
6. result[i] = (byte)(a[i] ^ b[i]);
7. }
8. return result;
9. }
Pada sistem yang telah dirancang, dilakukan pengujian kecepatan proses
enkripsi dan dekripsi, pengujian related-key, pengujian pengaruh nilai crossover rate
terhadap hasil akhir, pengaruh nilai mutation rate terhadap hasil akhir, pengujian
authentication, dan pengujian integritas data. Pengujian enkripsi dan dekripsi
dilakukan untuk melihat waktu proses yang diperlukan oleh aplikasi. Hasil
pengujian enkripsi dekripsi ditunjukkan pada Tabel 1. Pengujian dilakukan
dengan menggunakan kunci yang sama (deasynatalia2011), jumlah generasi yang
sama (10 generasi), mutation rate yang sama (1 gen) dan crossover rate yang
sama (2). Perbedaan hanya pada ukuran data (plaintext/ciphertext).
14
Tabel 1 Hasil Pengujian Kecepatan Enkripsi Dan Dekripsi
Ukuran Data
(byte)
Enkripsi
(milidetik)
Dekripsi
(milidetik)
16 18.004 18.804
32 17.86 17.06
64 18.843 18.843
128 21.145 20.845
256 25.625 26.125
512 34.051 34.651
1024 51.968 52.168
2048 88.211 88.311
4096 160.235 160.235
8192 303.571 302.871
16384 590.189 590.389
Hasil pengujian tersebut ditunjukkan dengan grafik garis (Gambar 8),
maka diperoleh kesimpulan bahwa ukuran data menyebabkan waktu proses naik.
Kenaikan ini tidak berbanding secara linier, dengan arti bahwa ukuran X
menghasilkan waktu Y, namun ukuran data 2X belum tentu menghasilkan waktu
2Y.
Gambar 8 Grafik Hasil Pengujian Waktu Proses Enkripsi
Gambar 9 menunjukkan grafik waktu proses dekripsi. Lama waktu proses
enkripsi dan dekripsi relatif sama. Hal ini dikarenakan kedua proses tersebut
menggunakan alur proses yang sama. Perbedaan terdapat pada plaintext, dan
ciphertext yang digunakan sebagai input proses.
15
Gambar 9 Grafik Hasil Pengujian Kecepatan Proses Dekripsi
Pengujian Related-Key dilakukan untuk mengetahui apakah dengan
menggunakan dua kunci yang mirip, dapat menghasilkan ciphertext yang mirip.
Jika demikian, maka proses rentan terhadap related-key attack [12].
Tabel 2 Hasil Pengujian Related-Key
No Kunci A
Kunci B
Kemiripan
Kunci
Ciphertext A
Ciphertext B
(dalam kode ASCII)
Kemiripan
Ciphertext
1 fti kau berada??
fti kau berada!?
93.75% 241 72 195 229 150 255 31 165 158
176 228 135 226 240 184 88
196 197 199 132 13 234 199 221 236
99 244 241 131 203 133 251
0%
2 fti kau berada??
fti kau berada@!
87.5% 241 72 195 229 150 255 31 165 158
176 228 135 226 240 184 88
186 56 224 174 191 192 199 226 128
169 51 254 227 181 195 23
0%
3 fti kau berada??
fti kau berad@@!
81.25% 241 72 195 229 150 255 31 165 158
176 228 135 226 240 184 88
170 182 199 172 167 200 254 180 98
64 49 56 111 214 164 161
0
4 fti kau berada??
fti kau berADA!!
68.75% 241 72 195 229 150 255 31 165 158
176 228 135 226 240 184 88
214 191 235 224 70 199 172 207 57
249 1 210 232 40 58 145
0%
5 fti kau berada??
fti kau BERADA!!
50% 241 72 195 229 150 255 31 165 158
176 228 135 226 240 184 88
73 233 6 136 137 21 245 185 207
206 22 86 171 226 219 160
0%
6 deasynatalia2011
Deasynatalia2011
93.75% 253 27 184 222 74 219 216 54 131
78 188 2 181 119 133 235
152 28 236 227 91 229 221 171 198
242 223 218 242 198 190 211
0%
16
7 deasynatalia2011
D3asynatalia2011
87.5% 253 27 184 222 74 219 216 54 131
78 188 2 181 119 133 235
9 160 253 147 154 178 203 246 171
252 139 105 93 227 224 150
0%
8 deasynatalia2011
D3@synatalia2011
81.25% 253 27 184 222 74 219 216 54 131
78 188 2 181 119 133 235
9 160 253 147 154 178 203 246 171
252 139 105 93 227 224 150
0%
9 deasynatalia2011
D3@5Ynatalia2011
68.75% 253 27 184 222 74 219 216 54 131
78 188 2 181 119 133 235
181 236 94 59 181 195 120 65 128
226 170 67 130 139 151 230
0%
10 deasynatalia2011
D3@5YNATalia2011
50% 253 27 184 222 74 219 216 54 131
78 188 2 181 119 133 235
193 50 255 146 158 198 206 164 198
165 86 254 43 237 141 153
0%
Berdasarkan hasil pengujian related-key pada Tabel 2, diketahui bahwa
sekalipun kunci yang digunakan mirip sampai dengan 93%, kemiripan yang
diperoleh pada ciphertext adalah 0%.
Pengujian selanjutnya adalah pengaruh nilai crossover rate terhadap
perbedaan persentase perbedaan plaintext dan ciphertext. Kunci yang digunakan
adalah deasynatalia2011 dan plaintext emas ada di meja.
Tabel 3 Hasil Pengujian Pengaruh Nilai Crossover rate
Crossover
rate Ciphertext dalam Kode ASCII
Waktu
Proses (ms)
Persentase
Kesamaan
dengan
Plaintext 1 253 213 154 222 74 219 216 54 131 196 94 170 198 87 206 241 13.179 0%
2 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.904 0%
3 253 27 184 222 74 219 216 201 131 196 188 2 181 119 133 235 14.311 0%
4 253 213 154 222 74 219 216 54 131 196 188 2 181 119 133 235 13.405 0%
5 253 27 184 222 74 65 216 201 131 78 188 2 181 119 133 235 13.324 0%
6 253 27 184 222 74 65 216 54 131 78 188 2 181 136 133 235 15.243 0%
7 253 27 184 222 74 65 216 54 131 196 188 2 181 119 133 235 14.17 0%
8 253 213 154 222 74 65 216 54 131 196 188 2 181 119 133 235 13.529 0%
9 253 213 154 222 74 65 216 54 131 196 188 2 181 119 133 235 15.209 0%
10 253 213 154 222 74 65 216 54 131 196 188 2 181 119 133 235 15.182 0%
11 253 213 154 222 74 65 216 54 131 196 94 2 181 119 133 235 13.12 0%
12 253 213 154 222 74 219 193 78 106 78 188 2 181 119 133 235 14.374 0%
13 253 27 184 222 74 219 216 201 131 196 94 170 198 87 206 241 15.484 0%
14 253 27 184 222 74 219 216 201 131 196 94 170 198 87 206 241 15.264 0%
15 253 213 154 222 74 219 216 54 131 196 94 170 198 87 206 241 15.262 0%
Berdasarkan hasil pengujian pada Tabel 3, diketahui bahwa perbedaan
nilai crossover rate akan memberikan hasil akhir yang berbeda pula. Keseluruhan
nilai crossover rate (1 sampai dengan 15) memberikan hasil akhir yang memiliki
kesamaan 0 % dengan plaintext. Temuan yang lain adalah waktu proses tidak
dipengaruhi oleh nilai crossover rate. Perubahan nilai waktu pada Tabel 3 terjadi
karena dipengaruhi oleh keadaan komputer saat itu. Waktu proses rata-rata adalah 14.33067.
17
Pengujian pengaruh nilai mutation rate dilakukan untuk mengetahui
pengaruh nilai tersebut terhadap hasil cipher. Berdasarkan hasil pengujian pada
Tabel 4, diketahui bahwa nilai mutation rate tidak memberikan pengaruh
perubahan pada ciphertext yang dihasilkan. Hal ini dapat dikarenakan oleh teknik
mutasi yang digunakan (flip bit), yang menghasilkan kromosom dengan nilai
fitness kecil. Sehingga kromosom bermutasi tersebut tidak diteruskan ke generasi
selanjutnya, dan pada akhirnya tidak dipilih sebagai kunci terbaik. Perubahan
mutation rate juga tidak mempengaruhi lama waktu proses.
Tabel 4 Hasil Pengujian Pengaruh Nilai Mutation rate
Mutation
rate Ciphertext
Waktu
Proses
(ms)
Persentase
Kesamaan
dengan
Plaintext 1 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 15.102 0%
2 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 14.988 0%
3 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.722 0%
4 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.202 0%
5 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 14.683 0%
6 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.084 0%
7 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.18 0%
8 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 15.179 0%
9 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.37 0%
10 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.392 0%
11 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.958 0%
12 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 15.188 0%
13 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 15.114 0%
14 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 15.353 0%
15 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 15.606 0%
16 253 27 184 222 74 219 216 54 131 78 188 2 181 119 133 235 13.717 0%
Pengujian selanjutnya adalah pengujian untuk melihat pengaruh jumlah
generasi terhadap kecepatan proses. Pada Tabel 5 ditunjukkan hasil pengujian ini.
Berdasarkan hasil pengujian pada Tabel 5, diketahui bahwa jumlah generasi tentu
saja mempengaruhi waktu proses (enkripsi maupun dekripsi). Waktu yang
dipengaruhi tidak berbanding secara linier, namun ada penurunan lama waktu
proses seiring dengan naiknya jumlah generasi. Hal ini ditunjukkan pada kolom
Kecepatan Enkripsi dan Kecepatan Dekripsi. Angka pada kedua kolom ini
diperoleh dengan cara membagi waktu proses dengan jumlah generasi.
18
Tabel 5 Hasil Pengujian Pengaruh Jumlah Generasi Dengan Kecepatan Proses
Jumlah
Generasi
Waktu
Enkripsi
Waktu
Dekripsi
Kecepatan Enkripsi
(Detik/Generasi)
Kecepatan Dekripsi
(Detik/Generasi) 10 11.0121 11.6821 1.10121 1.16821
20 15.8452 16.3352 0.79226 0.81676
30 16.3146 15.7546 0.54382 0.525153333
40 19.8898 20.6798 0.497245 0.516995
50 22.5533 23.4233 0.451066 0.468466
100 36.8451 36.6151 0.368451 0.366151
500 136.0971 136.7871 0.2721942 0.2735742
1000 258.1732 258.5932 0.2581732 0.2585932
10000 2680.7903 2681.1103 0.26807903 0.26811103
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
[5]. Wong, H. 1996. Genetic Algorithms.
http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol1/hmw/article1.html.
Diakses pada 5 Mei 2015.
[6]. Goldberg, D. E. 2006. Genetic algorithms. Pearson Education India.
[7]. Suyanto 2005. Algoritma Genetika dalam MATLAB. Yogyakarta: Andi
Yogyakarta.
[8]. Singhal, V. K. 2013. Random Number Generators. Department of
Mathematics, IIT Guwahati
[9]. Marinakis, G. 2013. Minimum key length for cryptographic security Single
Search. Journal of Applied Mathematic & Bioinformatics 3, 181–191.
[10]. Goldberg, D. E. 1989. Sizing populations for serial and parallel genetic
algorithms. In Proceedings of the 3rd International Conference on Genetic
Algorithms, pp. 70–79.
[11]. Seifried, K. 2000. Why Random Numbers Are Important For Security.
https://seifried.org/security/cryptography/20000126-random-numbers.html.
Diakses pada 19 Juni 2015.
[12]. Biryukov, A. 2011. Related Key Attack. In Encyclopedia of Cryptography
and Security, pp. 1040–1041. Springer.