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