BAB 4 IMPLEMENTASI DAN EVALUASI 4.1 Lingkungan

advertisement
BAB 4
IMPLEMENTASI DAN EVALUASI
4.1 Lingkungan Perancangan
Dalam perancangan program simulasi ini, penulis menggunakan komputer
dan sistem operasi dengan spesifikasi sebagai berikut:
1. Processor: Intel Pentium, Core Duo, 1.66GHz
2. Memory: 512 Mega Bytes
3. Sistem Operasi: Windows XP Professional sp. 2
Sedangkan pemrograman yang digunakan adalah:
1. Platform: Textpad 4, Java 2 Standard Development Kit version 1.8
2. Bahasa Pemrograman: Java 2 Standard Edition
Pemilihan penggunaan bahasa java, karena java adalah bahasa pemrograman
OOP yang mantap penyusunannya dan mempunyai ribuan class untuk berbagai
tujuan. Selain itu java juga bahasa pemrograman yang compatible dengan berbagai
macam sistem operasi, sehingga user dengan sistem operasi apapun dapat
menggunakan program simulasi ini.
4.2 Petunjuk Instalasi
Sebelum mengimplementasikan program simulasi ini, user harus memiliki
beberapa software yang mendukung kerjanya program simulasi ini. Berikut adalah
petunjuk instalasi yang harus dilakukan agar memory dan program simulasi ini dapat
berjalan dengan baik. Proses instalasi dibagi menjadi dua bagian yaitu instalasi
software pendukung program simulasi dan instalasi program simulasi.
68 4.2.1
Instalasi Software Pendukung Program Simulasi
Tahap-tahap instalasi software pendukung program simulasi adalah sebagai
berikut:
1. Lakukan instalasi sistem operasi yang dapat mendukung instalasi J2SDK
version 1.8. Java adalah bahasa pemrograman yang multiplatform sehingga
sebagian besar sistem operasi dapat mendukung java.
2. Lakukan instalasi Java 2 Standard Development Kit version 1.8. Java
merupakan program open source yang dapat didownload secara gratis
melalui website http://java.sun.com/javase/downloads/index.jsp.
3. Lakukan instalasi Java Runtime Environment (JRE). JRE dibutuhkan untuk
mendukung jalannya program-program berbasis java karena file-file dengan
extension class pada java dijalankan pada Java Virtual Machine yang
terdapat pada JRE.
4.2.2
Instalasi Program Simulasi
Tahap-tahap instalasi program simulasi adalah sebagai berikut:
1. Copy semua file source code dengan extension java pada sebuah folder.
2. Compile semua source code dengan extension java untuk menghasilkan
program berbasis java berupa file dengan extension class.
3. Setelah semua file dengan extension java telah di-compile, untuk
menjalankan program simulasi, lakukan perintah “java Main” pada folder di
mana file-file dengan extension class berada.
69 4.3 Penerapan Perancangan Pada Program
Seperti yang telah kita ketahui, program simulasi ini dirancang dengan
menggunakan
konsep
Object
Oriented
Programming.
Untuk
mendukung
pemrograman simulasi ini, arsitektur program simulasi ini dirancang dengan
menggunakan Unified Modelling Language.
Arsitektur umum program ini dirancang pada class diagram. Berikut adalah
penjelasan bagaimana class-class pada class diagram dikembangkan menjadi filefile dengan extension java untuk diprogram.
1. Class Main
Main adalah class utama dari program simulasi ini. Pada class Main
terdapat method utama untuk program java yaitu “void main(String[] args)”.
Method tersebut adalah method pertama yang berjalan pada saat program
simulasi ini dimulai. Didalam method tersebut akan dibuat objek dari class
SerpentSimulation, yang kemudian akan ditampilkan. Apabila module “void
main(String[] args)” berakhir, program akan berakhir.
2. Class SerpentSimulation
SerpentSimulation adalah class GUI dari program simulasi ini yang
merupakan class dari layar utama. Pada SerpentSimulation terdapat menu-menu,
antara lain menu untuk memanggil layar Encrypt Simulation, menu untuk
memanggil layar Decrypt Simulation, menu untuk memanggil layar File
Cryptography. Oleh karena itu, pada class SerpentSimulation terdapat objek dari
class EncryptSimulation, class DecryptSimulation dan class FileCryptography.
Selain perintah-perintah untuk memanggil user interface lain, layar Serpent
Simulation juga dilengkapi dengan perintah Encrypt, Decrypt dan Simulate.
70 3. Class EncryptSimulation
EncryptSimulation adalah class GUI dari program simulasi ini yang
merupakan class dari layar Encrypt Simulation. Pada EncryptSimulation terdapat
text field plaintext, yang digunakan user untuk memasukkan plaintext yang akan
disimulasi proses enkripsinya.
Untuk proses simulasi proses enkripsi pada layar Encrypt Simulation ini,
class EncryptSimulation juga menyediakan text field hasil permutasi awal, 32
buah text field hasil 32 tahap Substitution Permutation Network dan text field
hasil permutasi akhir.
Pada layar Encrypt Simulation ini juga terdapat tombol Exit untuk keluar
dari layar ini. Setelah keluar dari layar ini, program akan kembali pada
pemanggil layar Encrypt Simulation yaitu layar Serpent Simulation.
4. Class DecryptSimulation
DecryptSimulation adalah class GUI dari program simulasi ini yang
merupakan class dari layar Decrypt Simulation. Pada DecryptSimulation terdapat
text field ciphertext, yang digunakan user untuk memasukkan ciphertext yang
akan disimulasi proses dekripsinya.
Untuk proses simulasi proses dekripsi pada layar Decrypt Simulation ini,
class DecryptSimulation juga menyediakan text field hasil invers permutasi
akhir, 32 buah text field hasil invers 32 tahap Substitution Permutation Network
dan text field hasil invers permutasi awal.
Pada layar Decrypt Simulation ini juga terdapat tombol Exit untuk keluar
dari layar ini. Setelah keluar dari layar ini, program akan kembali pada
pemanggil layar Decrypt Simulation yaitu layar Serpent Simulation.
71 5. Class FileCryptography
FileCryptography adalah class GUI dari program simulasi ini yang
merupakan class dari layar File Cryptography. Pada FileCryptography terdapat
dua bagian utama yaitu bagian enkripsi file dan bagian dekripsi file.
Pada bagian enkripsi file terdapat text field untuk file plaintext yang akan
dienkripsi, tombol browse untuk mencari file plaintext dan text field untuk file
ciphertext hasil enkripsi serta tombol browse untuk mencari file ciphertext.
Pada bagian dekripsi file terdapat text field untuk file ciphertext yang akan
didekripsi, tombol browse untuk mencari file ciphertext dan text field untuk file
plaintext hasil dekripsi serta tombol browse untuk mencari file plaintext.
6. Class SerpentAlgorithm
SerpentAlgorithm adalah class algoritma pendukung yang merupakan class
generalisasi dari class SerpentStandard dan class SerpentBitSlice. Seperti halnya
class SerpentStandard dan class Serpent BitSlice, class SerpentAlgorithm juga
mempunyai method-method yang sama, yaitu makeKey, blockEncrypt dan
blockDecrypt, tetapi pada class SerpentAlgorithm, method-method tersebut
dilengkapi dengan pilihan untuk menggunakan implementasi bislice atau
implementasi standard.
Class SerpentAlgorithm digunakan oleh berbagai class GUI dalam proses
enkripsi dan dekripsinya seperti pada class SerpentSimulation.
7. Class SerpentStandard
SerpentStandard adalah class algoritma pendukung yang merupakan class
yang memuat algoritma Serpent AES dengan implementasi standard. Pada class
ini terdapat tiga method utama, yaitu makeKey, blockEncrypt dan blockDecrypt.
72 Method makeKey adalah implementasi algoritma key schedule dari
algoritma Serpent. Method blockEncrypt adalah fungsi yang menghasilkan
ciphertext dengan parameter plaintext dan key. Method blockDecrypt adalah
fungsi untuk menghasilkan plaintext dengan parameter ciphertext dan key.
Pada class SerpentStandard terdapat beberapa attribute, antara lain matriks
S-Box, matriks invers S-Box, matrix IP, matriks FP, matriks LT dan matriks
invers LT. Terdapat juga attribute PHI ( ) dengan nilai 0x9E3779B9, di mana:
1
√5
2
8. Class SerpentBitSlice
SerpentBitSlice adalah class algoritma pendukung yang merupakan class
yang memuat algoritma Serpent AES dengan implementasi bitslice. Pada class
ini terdapat tiga method utama, yaitu makeKey, blockEncrypt dan blockDecrypt.
Method makeKey adalah implementasi algoritma key schedule dari
algoritma Serpent implementasi bitslice. Method blockEncrypt adalah fungsi
yang menghasilkan ciphertext dengan parameter plaintext dan key. Method
blockDecrypt adalah fungsi untuk menghasilkan plaintext dengan parameter
ciphertext dan key.
Pada class SerpentBitSlice terdapat beberapa attribute, antara lain matriks
S-Box, matriks invers S-Box dan PHI ( ) dengan nilai 0x9E3779B9, di mana:
1
√5
2
73 9. Class HexaDecimal
HexaDecimal adalah class parser pendukung untuk mengurus operasi
parsing dari array of byte menjadi String ataupun sebaliknya. Pada class
HexaDecimal terdapat tiga method utama, yaitu toString, toReversedString dan
fromEvenLengthString.
Method toString menerima parameter array of byte dan berfungsi untuk
merepresentasikan array of byte tersebut dalam bentuk hexadecimal pada sebuah
string. Method toReversedString mempunyai fungsi yang hampir sama dengan
method toString. Perbedaannya hanyalah pada method toString urutan
representasi tersebut berupa big-endian, sedangkan pada toReversedString
representasi tersebut berupa little-endian. Method fromEvenLengthString
berfungsi untuk menghasilkan array of byte dengan parameter string berupa
representasi hexadecimal.
4.4 Petunjuk Pengoperasian
Dalam setiap sistem yang berjalan, pastilah mempunyai langkah-langkah yang
ditempuh untuk pengoperasiannya. Berikut ini petunjuk-petunjuk pengoperasian dari
program simulasi yang telah dikelompokkan berdasarkan masing-masing layar.
Berikut ini petunjuk-petunjuk pengoperasian pada setiap layar yang dapat
diakses oleh user.
74 4.4.1
Layar Utama
Gambar 4.1 Tampilan Layar Utama
Layar utama adalah layar dimana user dapat melakukan proses simulasi
transmisi data melalui SDR. User juga dapat mengenkripsi block-block plaintext
menjadi ciphertext dalam bentuk hexadecimal.
Tombol Simulate pada layar utama berfungsi untuk melakukan simulasi
proses transmisi data sesuai dengan yang dimasukkan pada text field simulate
melalui SDR. Proses simulasi ditampilkan dalam bentuk animasi yang
menjelaskan alur suara yang dikonversi menjadi sinyal analog, sinyal analog
75 yang dikonversi menjadi sinyal digital, plaintext yang dikonversi menjadi
ciphertext pada proses pengiriman dan proses sebaliknya pada proses
penerimaan. Untuk melakukan proses simulasi, text field simulate harus diisi.
Tombol Encrypt digunakan untuk mengenkripsi block-block plaintext
dalam bentuk hexadecimal untuk menghasilkan block-block ciphertext dalam
bentuk hexadecimal.
Tombol Decrypt digunakan untuk mendekripsi block-block ciphertext
dalam bentuk hexadecimal untuk menghasilkan block-block plaintext dalam
bentuk hexadecimal.
Tombol Use BitSlice adalah pilihan untuk user untuk memilih apakah
operasi algoritma kriptografi untuk proses simulasi, enkripsi dan dekripsi
menggunakan implementasi bitslice. Apabila dalam keadaan checked, maka
proses-proses tersebut menggunakan implementasi bitslice.
76 4.4.2
Layar Encrypt Simulation
Gambar 4.2 Tampilan Layar Encrypt Simulation
Layar Encrypt Simulation adalah layar untuk pelihat tahap-tahap perubahan
plaintext menjadi ciphertext pada proses enkripsi dengan menggunakan
algoritma Serpent.
Tombol Simulate pada layar Encrypt Simulation berfungsi untuk
melakukan proses simulasi, yaitu untuk melihat tahap-tahap perubahan plaintext
77 menjadi ciphertext melalui proses permutasi awal, 32 tahap Substitution
Permutation Network dan proses permutasi akhir.
Tombol Exit berfungsi untuk menutup layar Encrypt Simulation dan
kembali pada layar utama.
4.4.3
Layar Decrypt Simulation
Gambar 4.3 Layar Decrypt Simulation
78 Layar Decrypt Simulation adalah layar untuk pelihat tahap-tahap perubahan
ciphertext menjadi plaintext pada proses dekripsi dengan menggunakan
algoritma Serpent.
Tombol Simulate pada layar Decrypt Simulation berfungsi untuk
melakukan proses simulasi, yaitu untuk melihat tahap-tahap perubahan plaintext
menjadi ciphertext melalui proses invers permutasi akhir, 32 tahap invers
Substitution Permutation Network dan proses invers permutasi awal.
Tombol Exit berfungsi untuk menutup layar Decrypt Simulation dan
kembali pada layar utama.
4.4.4
Layar File Cryptography
Gambar 4.4 Layar File Cryptography
79 Layar File Cryptography adalah layar untuk melakukan proses enkripsi dan
dekripsi file dengan menggunakan algoritma kriptografi Serpent. Layar File
Cryptography terdiri dari dua bagian utama yaitu bagian enkripsi file dan bagian
dekripsi file.
Pada bagian enkripsi file, terdapat text field untuk plaintext yang akan
dienkripsi beserta tombol untuk memilih file plaintext tersebut. Juga terdapat text
field untuk ciphertext hasil enkripsi disertai dengan tombol untuk memilih file
tersebut. Setelah user sudah memilih file plaintext dan file ciphertext maka user
dapat mengenkripsi file plaintext untuk menghasilkan file ciphertext.
Pada bagian dekripsi file, terdapat text field untuk ciphertext yang akan
didekripsi beserta tombol untuk memilih ciphertext tersebut. Juga terdapat text
field untuk plaintext hasil enkripsi disertai dengan tombol untuk memilih file
tersebut. Setelah user sudah memilih file ciphertext dan file plaintext maka user
dapat mendekripsi file ciphertext untuk menghasilkan file plaintext.
Tombol Exit berfungsi untuk menutup layar File Cryptography dan
kembali pada layar utama.
4.5 Hasil dan Evaluasi
4.5.1
Spesifikasi Proses Serpent AES
Pada program simulasi ini terdapat banyak sekali method-method untuk
enkripsi dan dekripsi data dengan menerapkan Serpent AES, seperti yang telah
digambarkan pada Sequence Diagram pada Bab 3. Berikut adalah spesifikasi
proses pada method kriptografi pada Serpent AES.
80 Pada kasus ini, spesifikasi proses enkripsi dan proses dekripsi dianggap
sama karena proses dekripsi adalah proses enkripsi dengan arah yang
berkebalikan. Spesifikasi proses kriptografi dari satu block plaintext terdiri dari
operasi-operasi sebagai berikut:
-
Permutasi awal
Permutasi awal adalah operasi permutasi block plaintext berukuran 128
bit dengan tabel permutasi awal berukuran 128 byte, yang akan menghasilkan
hasil permutasi berukuran 128 bit.
Proses permutasi dilakukan dengan pengecekan untuk masing-masing
bit pada plaintext disesuaikan dengan masing-masing byte pada tabel
permutasi awal.
-
32 tahap Substitution Permutation Network
Pada proses 32 tahap Substitution Permutation Network ini, objekobjek akan dinotasikan. Plaintext dinotasikan dengan P atau
, di mana pada
masing-masing tahap perubahan plaintext akan menjadi
,
Subkey terdiri dari 32 buah variabel 128 bit yaitu
terdiri dari 32 baris yaitu
,
,
,…,
,
,
,
,…,
,…,
.
. S-Box
.
Pada langkah Key Mixing, operasi yang terjadi adalah dilakukan
operasi XOR untuk subkey pada masing-masing tahap dengan plaintext.
, untuk nilai i=0, 1, 2, … , 31
Pada langkah S-Box, operasi yang terjadi adalah mengkombinasikan SBox pada masing-masing tahap dengan hasil Key Mixing. Pada proses
kombinasi terdapat
81 ,
,
,
Pada langkah transformasi linear, operasi yang terjadi adalah operasi
untuk mengkombinasikan tabel LT dengan hasil dari tahap S-Box.
-
Permutasi akhir
Permutasi akhir adalah operasi permutasi block plaintext berukuran
128 bit dengan tabel permutasi akhir berukuran 128 byte, yang akan
menghasilkan hasil permutasi berukuran 128 bit.
Proses permutasi dilakukan dengan pengecekan untuk masing-masing
bit pada plaintext disesuaikan dengan masing-masing byte pada tabel
permutasi akhir.
4.5.2
Pseudocode Serpent AES
Berikut adalah pseudocode yang dirancang berdasarkan spesifikasi proses
diatas digabung dengan teori yang ada mengenai Serpent AES
-
Permutasi awal
MODUL Permutasi_Awal
MULAI i BERNILAI 0 SEBELUM 128 LAKUKAN
7
AKHIR MULAI
AKHIR MODUL Permutasi_Awal
Modul
permutasi
awal
ini
akan
menghasilkan
mengoperasikan bit-bit 0 hingga sebelum 128 seperti operasi diatas.
dengan
82 -
Tahap Substitution Permutation Network
MODUL TAHAP_SP-Network
MULAI i BERNILAI 0 SEBELUM 32 LAKUKAN
JIKA BUKAN TAHAP TERAKHIR MAKA
SELAIN ITU JIKA TAHAP TERAKHIR MAKA
AKHIR JIKA
AKHIR MULAI
AKHIR MODUL TAHAP SP-Network
Modul tahap SP-Network diatas akan menghasilkan
, dimana
,
,
,…,
S-Box sedangkan untuk
-
,
,
, … ,
didapat dari transformasi linear dari langkah
didapat dari operasi key mixing tambahan.
Permutasi akhir
MODUL Permutasi_Akhir
MULAI i BERNILAI 0 SEBELUM 128 LAKUKAN
7
AKHIR MULAI
AKHIR MODUL Permutasi_Akhir
Modul permutasi akhir ini akan menghasilkan
ciphertext dengan mengoperasikan bit-bit 0 hingga 128
diatas.
yang merupakan
seperti operasi
83 4.5.3
Analisis Serpent AES Dalam Kompleksitas
Setelah membuat pseudocode untuk algoritma Serpent AES seperti di atas,
kompleksitas Serpent AES dapat dianalisis dan direpresentasikan dalam notasi
Big O ( O(n) ).
Sesuai dengan pseudocode diatas, kompleksitas algoritma Serpent AES
dalam notasi Big O adalah sebagai berikut:
di mana dengan panjang block 128 bit,
128
8
32
31
32 8
256
31
31
31
257
84 sehingga
Hasil
perhitungan
33
polinomial, yaitu
algoritma
257
31
257
33
257
Serpent
sehingga
AES
termasuk
tersebut
kedalam
menghasilkan
kategori
O(n)
.
Kategori O(n) polinomial seperti yang telah kita ketahui, untuk merancang
sebuah algoritma Serpent AES dengan panjang block 256 bit akan menghasilkan
kompleksitas empat kali lipat lebih rumit dengan tingkat keamanan berubah dari
2
4.5.4
untuk 128 bit menjadi 2
untuk 256 bit.
Perbandingan Serpent AES Dengan Metode Lain
Setelah mengetahui kompeksitas algoritma kriptografi Serpent AES seperti
yang telah diterangkan di atas, berikut adalah tabel perbandingan kompleksitas
algoritma-algoritma Symmetric Cryptography populer lain dengan Serpent AES,
yaitu Rijndael dan Triple DES.
85 Tabel 4.1 Perbandingan Kompeksitas Algoritma Symmetric Cryptography
Kriptosistem
Operasi
Serpent AES
Permutasi awal, 32 tahap SP-
Rijndael
O(n)
33
Network dan Permutasi akhir
n=128 bit
Add Round Key awal, 7 tahap SP-
7
Network dan Sub Bytes, Shift
n=128 bit
257
68
Rows dan Add Round Key akhir
Triple DES
32
Tiga kali pengoperasian fungsi
Feistel 16 tahap
144
n=56 bit
Pada tabel di atas dapat dilihat bahwa Rijndael merupakan algoritma
kriptografi yang memiliki kompleksitas algoritma terkecil dengan ukuran block
yang diambil adalah 128 bit, meskipun demikian ketiga algoritma kriptografi
tersebut memiliki bentuk O(n) yang sama yaitu O(n) kuardratik. Operasi-operasi
pada Serpent AES lebih menjamin keamanan key, dengan adanya 32 tahap SPNetwork tersebut. Dari tabel diatas hasil perbandingan adalah sebagai berikut:
1. Dari segi keamanan: Serpent, Rijndael, Triple DES.
2. Dari segi kecepatan: Rijndael, Triple DES, Serpent
4.5.5
Spesifikasi File Cryptography
Dalam implementasi kriptografi ini, telah dlakukan percobaan pada layar
File Cryptography dengan spesifikasi perangkat keras yang telah dijelaskan di
atas. Kecepatan kriptografi mencapai 469760 bytes per second.
Batas ukuran file yang dapat dikriptografi adalah
17 Gyga Bytes, dan
untuk kriptografi sebuah file berukuran 17 GB membutuhkan waktu sekitar 10
jam 18 menit.
86 Tabel 4.2 Spesifikasi File Cryptography
Jenis Spesifikasi
Keterangan
Spesifikasi Komputer
Processor: Intel Pentium, Core Duo 1.66 GHz
Memory: 512 Mega Bytes
Harddisk: 80 Giga Bytes
Kecepatan Kriptografi
469760 bytes per second
Ukuran File
17 Giga Bytes
Jenis Plaintext File
Waktu Kriptografi
RAR
10 jam 18 menit
Download