ABSTRAK
Pada saat ini banyak algoritma kriptografi bermunculan, baik itu algoritma yang benar – benar baru, atau algoritma penyempurnaan algoritma yang sebelum nya dirasa sudah tidak cukup kuat untuk mengamankan isi dari file nya. Fitur seperti JCE ( Java Cryptography Extension) masih tidak begitu familiar bagi para programmer sebagai plugin yang nanti nya akan sangat membantu dalam membuat sebuah software yang didalam nya menggunakan algoritma kriptografi. JCE sendiri hampir mendukung semua algoritma yang beredar saat ini, dari mulai algoritma klasik dan modern, simetris dan asimetris. Nantinya di tulisan ini akan dilakukan pengujian dengan cara membuat program dengan memanfaatkan JCE untuk empat algoritma, yaitu aloritma AES, DES 3DES, dan Blowfish. Untuk pengujian dilakukan dengan cara melakukan enkrispi dan dekripsi untuk file yang sama, maksud nya adalah tipe file dan ukuran file akan sama untuk semua algoritma. Setelah itu maka akan diambil data berupa lama waktu enkripsi dan dekripsi, dan banyak nya memori yang digunakan dalam proses enkripsi dan dekripsi. Nanti nya akan diketahui algoritma mana yang paling lambat atau pun yang paling cepat dalam hal proses enkripsi maupun dekripsi, dan juga dapat diketahui algoritma mana yang menggunakan memori paling banyak untuk proses enkripi maupun dekripsi.
At this time many cryptographic algorithms are springing up, be it the correct algorithm ( the new right ), or refinement algorithm before its not strong enough to secure the contents of the file . Features like JCE ( Java Cryptography Extension) still not so familiar to programmers as a plugin even soon its be very helpful in making a software which in its use of cryptographic algorithms. JCE it self almost support all algorithms that are currently circulating, from getting classic and modern algorithms, symmetric and asymmetric. Later in this paper, the test will be done in a way to make the program by leveraging the JCE to four algorithm, which is AES, DES, 3DES and Blowfish algorithm. For testing performed by enkrispi and decryption for the same file, the intent is the file type and file size will be the same for all algorithms. After that it will be taken in the form of data encryption and decryption time, and much of his memory that will used in the encryption and decryption process. Later the result of the algorithms where the slowest or the fastest in terms of encryption or decryption, and can also be known algorithm which uses the most memory for the process of decryption or encryption.
i
ANALISIS UNJUK KERJA JAVA CRYPTOGRAPHY EXTENSION
UNTUK ENKRIPSI DAN DEKRIPSI FILE (STUDI KASUS
ALGORITMA AES, DES, 3DES, DAN BLOWFISH)
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Disusun Oleh :
Yohanes Adven Arswindra
105314016
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
ii
ANALYSIS OF THE PERFORMANCE OF JAVA CRYPTOGRAPHY EXTENSION FOR ENCRYPTION DAN DECRYPTION FILE (THE CASE
STUDY ALGORITHM AES, DES, 3DES, AND BLOWFISH)
THESIS
Presented as Partial Fulfillment of the Requirements to Obtain Sarjana Komputer Degree
in Informatics Engineering Department
Created By :
Yohanes Adven Arswindra
105314016
INFORMATICS ENGINEERING STUDY PROGRAM
INFORMATICS ENGINEERING DEPARTMENT
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
iv
vii
HALAMAN MOTTO
Pada waktu kamu dicobai, ia akan memberikan kamu jalan keluar
sehingga kamu dapat menanggungnya
( Korintus 10:13c)
There is no way I was born to just pay bills and die.
viii
ABSTRAK
Pada saat ini banyak algoritma kriptografi bermunculan, baik itu algoritma yang benar – benar baru, atau algoritma penyempurnaan algoritma yang sebelum nya dirasa
sudah tidak cukup kuat untuk mengamankan isi dari file nya. Fitur seperti JCE ( Java Cryptography Extension) masih tidak begitu familiar bagi para programmer sebagai
plugin yang nanti nya akan sangat membantu dalam membuat sebuah software yang
didalam nya menggunakan algoritma kriptografi. JCE sendiri hampir mendukung semua
algoritma yang beredar saat ini, dari mulai algoritma klasik dan modern, simetris dan asimetris. Nantinya di tulisan ini akan dilakukan pengujian dengan cara membuat program dengan memanfaatkan JCE untuk empat algoritma, yaitu aloritma AES, DES
3DES, dan Blowfish. Untuk pengujian dilakukan dengan cara melakukan enkrispi dan dekripsi untuk file yang sama, maksud nya adalah tipe file dan ukuran file akan sama
untuk semua algoritma. Setelah itu maka akan diambil data berupa lama waktu enkripsi dan dekripsi, dan banyak nya memori yang digunakan dalam proses enkripsi dan dekripsi.
Nanti nya akan diketahui algoritma mana yang paling lambat atau pun yang paling cepat dalam hal proses enkripsi maupun dekripsi, dan juga dapat diketahui algoritma mana
yang menggunakan memori paling banyak untuk proses enkripi maupun dekripsi.
Pada proses pengambilan data untuk masing – masing file didapatkan bahwa
algoritma 3DES yang paling lambat dalam proses enkripsi maupun dekripsi. Ini berlaku untuk semua tipe file yang diproses, algoritma 3DES menempati urutan pertama dan
selisih nya lumayan banyak dengan algoritma yang lain. Hampir tiga kali lipat dengan posisi ke dua, yaitu algoritma DES. Untuk algoritma tercepat di tempati oleh algoritma Blowfish dan terpaut sangat sedikit dengan algoritma AES. Untuk hasil file nya sendiri
tidak mengalami error, artinya file awal identik dengan hasil file setelah mengalami proses enkripsi maupun dekripsi. File tidak mengalami redudansi data, ukuran nya sama
dengan ukuran file awal. Untuk kinerja CPU sendiri akan mengalami proses peningkatan pada saat proses pembuatan file hasil enkripsi maupun dekripsi. Sedangkan pada saat
ix
ABSTRACT
At this time many cryptographic algorithms are springing up, be it the correct
algorithm ( the new right ), or refinement algorithm before its not strong enough to secure
the contents of the file . Features like JCE ( Java Cryptography Extension) still not so familiar to programmers as a plugin even soon its be very helpful in making a software which in its use of cryptographic algorithms. JCE it self almost support all algorithms that
are currently circulating, from getting classic and modern algorithms, symmetric and asymmetric. Later in this paper, the test will be done in a way to make the program by
leveraging the JCE to four algorithm, which is AES, DES, 3DES and Blowfish algorithm. For testing performed by enkrispi and decryption for the same file, the intent is the file
type and file size will be the same for all algorithms. After that it will be taken in the form of data encryption and decryption time, and much of his memory that will used in the
encryption and decryption process. Later the result of the algorithms where the slowest or the fastest in terms of encryption or decryption, and can also be known algorithm which
uses the most memory for the process of decryption or encryption.
On the data retrieval process for each file is obtained that the slowest is 3DES algorithm in encryption or decryption process. This applies to all types of files are
processed, the algorithm is 3DES ranks first and the difference in his tolerable much with the other algorithms. Almost tripled with two positions wich is DES algorithm. The
fastest algorithm is Blowfish and very little to be embedded with the AES algorithm. For the results of its own files is not experiencing an error, this means that the files are
identical to the results of the initial file encryption process or after decryption. The files are the same size, data redundancies is equal to the size of the default file. For CPU
performance alone will experience a process of improving upon the process of making a file encryption or decryption results. At the time of encryption or decryption, CPU
x
KATA PENGANTAR
Puji Tuhan Yesus Kristus yang telah memberikan berkat serta penyertaan
– Nya sehingga penulis dapat menyelesaikan skripsi dengan judul “ Analisis Unjuk Kerja Java Cryptography Extension untuk enkripsi dan dekripsi File (
Studi kasus Algoritma AES, DES, 3DES dan Blowfish )”. Penulisan skripsi ini diajukan untuk memenuhi syarat untuk memperoleh gelar Sarjana Komputer
Program Studi Teknik Informatika Universitas Sanata Dharma
Selesainya penulisan skripsi ini, maka penulis mengucapkan terimakasih
kepada pihak – pihak yang telah membantu dan memberikan dukungan dalam berbagai bentuk. Ucapan terimakasih ditujukan kepada :
1. Kedua orang tua. Terimakasih telah menjadi orang tua yang terbaik sampai
saat ini. Terimakasih atas dukungan, baik spiritual dan material selama
menempuh studi. Terimakasih atas kesabaran dan doa nya.
2. Bapak Benedictus Herry Suharto, S.T., M.T. sebagai dosen pembimbing
yang telah memberikan solusi dalam proses penulisan skripsi.
3. Ibu Ridowati Gunawan S.Kom., selaku Ketua Program Studi Teknik
Informatika Fakultas Sains dan Teknologi Universitas Sanata Dharma.
4. Seluruh dosen program studi Teknik Informatika yang membimbing dari
awal perkuliahaan hingga selesai masa studi.
5. Maria Magdalena Pradita Eka Kurniawati, terimakasih untuk ide, solusi,
dan semangat, serta dukungan selama proses penulisan skripsi.
6. Yosephine Martiana Arsweni, Bernardus Yuniar Arswendo, Bernadinus
Agus Arswimba, Laurensius Ferdinan Putra Nugroho atas doa, dukungan
dan keceriaanya selama proses penyelesaian skripsi.
7. Kepada Bernardus Bimantara Putra atas semangat, ide-ide dan
xii
DAFTAR ISI
HALAMAN JUDUL ………… i
HALAMAN JUDUL (INGGRIS) ……….. ii
HALAMAN PERSETUJUAN ...Error! Bookmark not defined. LEMBAR PENGESAHAN ...Error! Bookmark not defined. PERNYATAAN KEASLIAN KARYA ...iv
xiii
1.7. Sistematika Penulisan ... 8
BAB II ... 10
LANDASAN TEORI ... 10
2.1. Kriptografi ... 10
Panjang Kunci ... 12
2.1.1. Kriptografi Secret Key dan Public Key ... 14
2.2. Enkripsi ... 17
2.3. Dekripsi ... 18
2.4. Algoritma Kriptografi ... 18
2.4.1. Algoritma DES ... 18
2.4.2. Algoritma 3DES ... 21
2.4.3. Algoritma AES ... 22
2.4.4. Algoritma Blowfish ... 24
2.5. JCE ... 27
BAB III ... 28
ANALISIS MASALAH DAN PERANCANGAN SISTEM ... 28
3.1. Analisis Masalah / Problem Analys ... 28
3.2. Gambaran Aplikasi ... 28
3.2.1. Contoh Kasus ... 29
3.3. Requirment Analysis ... 30
3.3.1. Diagram flowchart enkripsi ... 30
3.3.2. Diagram flowchart dekripsi ... 32
BAB IV IMPLEMENTASI SISTEM ... 34
4.1. Implementasi Sistem ... 34
xiv
4.2. Penghitungan running time ... 34
4.3. Penjelasan program ... 36
4.3.1. Enkripsi ... 37
4.3.2. Dekripsi ... 40
BAB V ANALISIS DAN HASIL IMPLEMENTASI ... 43
5.1. Hasil Pengujian Sistem ... 43
5.1.1. Enkripsi image ... 43
5.1.3. Enkripsi file MP3 ... 46
5.1.4. Dekripsi file MP3 ... 47
5.1.5. Enkripsi file dokumen ... 48
5.1.6. Dekripsi file dokumen ... 49
xv
DAFTAR GAMBAR
Gambar 1. Ilustrasi dari proses SubBytes ... 2
Gambar 2. Ilustrasi dari proses ShiftRows ... 3
Gambar 3. Ilustrasi dari prose MixColoumns ... 3
Gambar 4. Ilustrasi dari proses Add Round Key ... 4
Gambar 5. Proses Enkripsi dan Dekripsi ... 12
Gambar 6. Kriptografi simetris ... 15
Gambar 7. Kriptografi Asimetris ... 17
Gambar 8. Proses enkripsi algoritma 3DES ... 22
Gambar 9. Proses enkripsi algoritma AES ... 23
Gambar 10. Skema jaringan Feistel pada algoritma Blowfish ... 26
Gambar 11. Skema fungsi F pada algoritma Blowfish ... 26
Gambar 12. Potongan Program 1 ... 35
Gambar 13. Potongan Program 2 ... 35
Gambar 14. Potongan Program 3 ... 36
Gambar 15. Potongan Program 4 ... 36
Gambar 16. Potongan Program 5 ... 37
Gambar 17. Hasil Running Program ... 38
Gambar 18. Hasil enkripsi dan dekripsi ... 39
Gambar 19. Hasil running program ... 41
xvi
DAFTAR TABEL
Table 1. Dari enkripsi untuk mengetahui alokasi memory yang digunakan dan
running time nya ... 29
Table 2. Hasil dari enkripsi data berupa gambar untuk masing-masing algoritma 43
Table 3. Hasil dari dekripsi data berupa gambar untuk masing-masing algoritma 44
Table 4. Hasil dari enkripsi data berupa MP3 untuk masing-masing algoritma ... 46
Table 5. Hasil dari dekripsi data berupa MP3 untuk masing-masing algoritma ... 47
Table 6. Hasil dari enkripsi data berupa dokumen untuk masing-masing algoritma
... 48
Table 7. Hasil dari dekripsi data berupa dokumen untuk masing-masing algoritma
... 49
Table 8. Hasil dari enkripsi data berupa file video untuk masing-masing algoritma
... 51
Table 9. Hasil dari dekripsi data berupa file video untuk masing-masing algoritma
xvii
DAFTAR GRAFIK
Grafik 1. Hasil dari enkripsi data berupa gambar untuk masing-masing algoritma
... 44
Grafik 2. Hasil dari dekripsi data berupa gambar untuk masing-masing algoritma
... 45
Grafik 3. Hasil dari enkripsi data berupa MP3 untuk masing-masing algoritma.. 46
Grafik 4. Hasil dari dekripsi data berupa MP3 untuk masing-masing algoritma.. 47
Grafik 5. Hasil dari enkripsi data berupa dokumen untuk masing-masing
algoritma ... 49
Grafik 6. Hasil dari dekripsi data berupa dokumen untuk masing-masing
algoritma ... 50
Grafik 7. Hasil dari enkripsi data berupa file video untuk masing-masing algoritma
... 51
Grafik 8. hasil dari dekripsi data berupa file video untuk masing-masing algoritma
1
BAB I PENDAHULUAN
1.1.Latar Belakang
Masalah keamanan dan kerahasiaan data merupakan salah satu aspek
penting dari suatu sistem informasi. Dalam hal ini, sangat terkait dengan betapa
pentingnya informasi tersebut dikirim dan diterima oleh orang yang
berkepentingan. Informasi akan tidak berguna lagi apabila di tengah jalan
informasi itu disadap atau dibajak oleh orang yang tidak berhak. Untuk mencegah
data-data penting tersebut digunakan dengan tidak semestinya. oleh karena itu
perlu dilakukan perlindungan terhadap informasi dengan berbagai cara. Salah satu
metode yang digunakan untuk melindungi data adalah dengan menggunakan
teknik kriptografi dimana informasi yang ada dibuat sedemikian rupa agar tidak
dapat diketahui oleh yang tidak memiliki hak akses.
Enkripsi adalah suatu proses untuk merubah suatu pesan data atau
informasi (plaintext), sehingga informasi tersebut tidak dapat dibaca oleh orang
yang tidak bertanggung jawab (chipertext). Jadi plaintext adalah informasi yang
dapat dimengerti dan chipertext adalah informasi yang tidak dapat dimengerti atau
dibaca.
.Untuk saat ini terdapat banyak algoritma kriptografi dimana
masing-masing algoritma memiliki karakter dan spesifikasi yang berbeda. Disini penulis
ingin mencoba membandingkan algoritma AES (Advanced Encryption Standard),
2
Blowfish. Keempat algoritma tersebut memiliki tingkat keamanan yang cukup
tinggi, karena sampai sekarang belum ditemukan algoritma/mesin yang mampu
untuk memecahkan data hasil enkripsi algoritma kriptografi tersebut dengan
cepat.
Algoritma AES menggunakan empat teknik, yaitu :
1. SubBytes : Prinsip dari SubBytes adalah menukar isi matrik/tabel yang
ada dengan matrik/tabel yang lain yang disebut juga dengan Rijndael
S-Box.
Gambar 1. Ilustrasi dari proses SubBytes
2. ShiftRows : Proses pergeseran dalam suatu elemen blok/tabel yang
dilakukan per barisnya, Yaitu baris pertama tidak dilakukan
pergeseran, baris kedua dilakukan pergeseran 1 byte, baris ketiga
dilakukan pergeseran 2 byte, dan baris keempat dilakukan pergeseran 3
byte. Pergeseran sebuah blok adalah sebuah pergeseran tiap elemen ke
kiri tergantung berapa byte tergesernya, tiap pergeseran 1 byte berarti
3
Gambar 2. Ilustrasi dari proses ShiftRows
3. MixColoumns : adalah proses mengalikan tiap elemen dari blok chiper
dengan matrik.
4
4. AddRoundKey : adalah mengkombinasikan chiper teks yang sudah
ada dengan chiper key yang chiper key dengan hubungan XOR
Gambar 4. Ilustrasi dari proses Add Round Key
Keempat teknik yang menjadikan AES mempunyai kinerja yang baik,
ditunjukan dari segi keamanan, kesederhanaan struktur dan fleksibilitas yang
membawa AES sebagai pemenang algoritma paling optimal yang menggantikan
DES yang pernah popular tahun 80-an.
DES merupakan nama dari sebuah algoritma untuk mengenkripsi data
yang dikeluarkan oleh Federal Information Processing Standard (FIPS) 46–1
Amerika Serikat. 46-1 disini adalah tipe dari algoritma DES, karena Algoritma
DES sendiri mengalami pembaharuan, 46-1 adalah algoritma tipe awal yang
diluncurkan oleh FIPS, algoritma DES sendiri mengalami tiga kali pembaharuan
hingga sampi tipe 46-3 yang lebih dikenal dengan algoritma 3DES. Algoritma
dasarnya dikembangkan oleh IBM (International Business Machines), NSA
(National Security Agency), dan NBS (Nanyang Business School) yang berperan
penting dalam pengembangan bagian akhir algoritmanya. DEA dan DES telah
dipelajari secara ekstensif sejak publikasi pertamanya, dan diketahui sebagai
5
memiliki blok kunci 64 bit tetapi yang digunakan dalam proses eksekusi adalah 56
bit. Pada awalnya dirancang untuk implementasi secara hardware. Penggunaan
dalam sistem komunikasi mengharuskan pengirim dan penerima memiliki kunci
rahasia yang sama, yang dapat digunakan untuk mengenkripsi dan mendekripsi
data yang dikirim atau diterima.
3DES merupakan salah satu algoritma simetris pada kriptografi yang
digunakan untuk mengamankan data dengan cara menyandikan data. Proses yang
dilakukan dalam penyandian datanya, yaitu proses enkripsi dan proses dekripsi.
Algoritma 3DES adalah suatu algoritma pengembangan dari algoritma DES.
Perbedaan DES dengan 3DES terletak pada panjangnya kunci yang digunakan.
Pada DES menggunakan satukunci yang panjangnya 56-bit, sedangkan pada
3DES menggunakan 3 kunci yang panjangnya 168-bit (masing-masing
panjangnya 56-bit). Pada 3DES, 3 kunci yang digunakan bisa bersifat saling bebas
(K1 ≠ K2 ≠ K3) atau hanya dua buah kunci yang saling bebas dan satu kunci
lainnya sama dengan kunci pertama (K1 ≠ K2 dan K3 = K1). Karena tingkat
kerahasiaan algoritma 3DES terletak pada panjangnya kunci yang digunakan,
maka penggunaan algoritma 3DES dianggap lebih aman dibandingkan dengan
algoritma DES.
Blowfish merupakan algoritma kunci simetrik chipper blok yang dirancang
pada tahun 1993 oleh Bruce Schenier untuk menggantikan DES. Pada saat itu
banyak sekali rancangan algoritma yang ditawarkan namun hampir semua
terhalang oleh paten atau kerahasiaan pemerintah Amerika. Schneier menyatakan
6
pernyataan Schneier tersebut Blowfish telah mendapatkan tempat di dunia
kriptografi, kususnya bagi masyarakat yang membutuhkan algoritma kriptografi
yang cepat, kuat, dan tidak terhalang oleh lisensi.
1.2.Rumusan masalah
1. Menguji Java Cryptography Extension untuk mengenkripsi file dengan
studi kasus algoritma AES, DES, 3DES, dan Blowfish
2. Mengetahui hasil kinerja Java Cryptography Extension dalam
mengenkripsi file dengan studi kasus algoritma AES, DES, 3DES, dan
Blowfish
3. Mengetahui running time dan memory usage untuk masing-masing
algoritma dalam sebuah skenario pengujian enkripsi dan dekripsi.
1.3.Tujuan penelitian
Tujuan dari penelitian ini adalah:
1. Mengetahui algoritma mana yang paling lambat dalah hal mengenkripsi
file dengan memanfaatkan JCE.
2. Mengetahui algoritma mana yang paling cepat dalam hal mengenkripsi file
dengan memanfaatkan JCE.
3. Mengetahui hasil file dari proses enkripsi maupun dekripsi apakah ada
7
1.4.Batasan Masalah
1. Aplikasi ini dibuat menggunakan menggunakan netbeans 8.1 dan Java ™
SE Development Kit 6 Update 12 dan berjalan di sistem operasi windows
7 ultimate edition 64 bit
2. JCE yang digunakan adalah JCE Unlimited Strength Jurisdiction Policy
Files 7
3. Data yang di enkripsi dan dekripsi untuk gambar berukuran 8 MB, video
80 MB, audio 17 MB dan teks 22 MB.
1.5.Manfaat
Manfaat dari penyusunan tugas akhir ini adalah membantu para
developer atau programmer untuk membuat program enkripsi dan dekripsi
untuk mengamankan data berupa file milik mereka
1.6.Metodologi Penelitian :
Metode penelitian yang digunkan adalah sebagai berikut :
1. Studi literarur dengan membaca buku “belajar Ilmu Kriptografi” penerbit
Andi oleh Rinaldi Munir, dan skripsi atau abstract yang terkait untuk
membantu pembuatan program ini.
2. Menganalisa dan merancang method apa saja yang akan digunakan nanti
nya dalam membuat program.
3. Membuat program enkrispsi dan dekripsi menggunakan aplikasi netbeans
8
4. Menguji program dengan mencoba untuk mengenkripsi file
1.7.Sistematika Penulisan
Sistematika penulisan yang digunakan adalah sebagai berikut :
BAB I PENDAHULUAN
Bab ini menguraikan tentang latar belakang, rumusan masalah,
tujuan, batasan masalah, manfaat penelitian, dan metodologi
penelitian,
BAB II LANDASAN TEORI
Bab ini membahas dasar-dasar teori mengenai Algoritma
Kriptografi (AES, DES, 3DES, BLOWFISH), JCE, Enkripsi, dan
Dekripsi
BAB III ANALISIS DAN PERANCANGAN SISTEM
Bab ini berisi tentang analisis masalah dan gambaran aplikasi yang
akan dibuat untuk pembuatan program.
BAB IV IMPLEMENTASI SISTEM
Bab ini berisi tentang penerapan skenario yang telah dibuat untuk
nantinya diujikan. Bagian ini juga berisi tentang perangkat yang
digunakan dalam pengimplementasian program dan penjelasan
method yang digunakan dalam program.
9
Bab ini berisi analisis hasil implementasi yang mencakup data yang
dihasilkan dalam pengujian program.
BAB VI PENUTUP
Bab ini berisi tentang kesimpulan dan saran yang didapatkan selama
proses pembuatan program serta saran-saran untuk pengembanagan
10
BAB II
LANDASAN TEORI
2.1.Kriptografi
Kriptografi berasal dari dua kata Yunani, yaitu Crypto yang berarti
rahasia dan Grapho yang berarti menulis. Secara umum kriptografi dapat
diartikan sebagai ilmu dan seni penyandian yang bertujuan untuk menjaga
keamanan dan kerahasiaan suatu pesan. Kriptografi pada dasarnya sudah
dikenal sejak lama. Menurut catatan sejarah, kriptografi sudah digunakan oleh
bangsa Mesir sejak 4000 tahun yang lalu oleh raja-raja Mesir pada saat
perang untuk mengirimkan pesan rahasia kepada panglima perangnya melalui
kurir-kurinya. Orang yang melakukan penyandian ini disebut kriptografer,
sedangkan orang yang mendalami ilmu dan seni dalam membuka atau
memecahkan suatu algoritma kriptografi tanpa harus mengetahui kuncinya
disebut kriptanalis.
Seiring dengan perkembangan teknologi, algoritma kriptografi pun
mulai berubah menuju ke arah algoritma kriptografi yang lebih rumit dan
kompleks. Kriptografi mau tidak mau harus diakui mempunyai peranan yang
paling penting dalam peperangan sehingga algoritma kriptografi berkembang
cukup pesat pada saat Perang Dunia I dan Perang Dunia II. Menurut catatan
sejarah, terdapat beberapa algoritma kriptografi yang pernah digunakan dalam
peperangan, diantaranya adalah ADFVGX yang dipakai oleh Jerman pada
11
Perang Dunia II, Typex oleh Inggris, dan Purple oleh Jepang. Selain itu
Jerman juga mempunyai mesin legendaris yang dipakai untuk memecahkan
sandi yang dikirim oleh pihak musuh dalam peperangan yaitu, Enigma.
Algoritma kriptografi yang baik tidak ditentukan oleh kerumitan
dalam mengolah data atau pesan yang akan disampaikan. Yang penting,
algoritma tersebut harus memenuhi 4 persyaratan berikut :
1. Kerahasiaan. Pesan (plaintext) hanya dapat dibaca oleh pihak yang
memliki kewenangan.
2. Autentikasi. Pengirim pesan harus dapat diidentifikasi dengan pasti,
penyusup harus dipastikan tidak bisa berpura-pura menjadi orang lain.
3. Integritas. Penerima pesan harus dapat memastikan bahwa pesan yang
dia terima tidak dimodifikasi ketika sedang dalam proses transmisi data.
4. Non-Repudiation. Pengirim pesan harus tidak bisa menyangkal pesan
yang dia kirimkan.
Kriptografi pada dasarnya terdiri dari dua proses, yaitu proses
enkripsi dan proses dekripsi. Proses enkripsi adalah proses penyandian
pesan terbuka menjadi pesan rahasia (ciphertext). Ciphertext inilah
yang nantinya akan dikirimkan melalui saluran komunikasi terbuka.
Pada saat ciphertext diterima oleh penerima pesan, maka pesan rahasia
tersebut diubah lagi menjadi pesan terbuka melalui proses dekripsi
12
umum, proses enkripsi dan dekripsi dapat digambarkan sebagai
berikut :
Gambar 5. Proses Enkripsi dan Dekripsi
Dalam sistem komputer, pesan terbuka (plaintext) diberi
lambang M, yang merupakan singkatan dari Message. Plaintext ini
dapat berupa tulisan, foto, atau video yang berbentuk data biner.
Plaintext inilah yang nantinya akan dienkripsi menjadi pesan rahasia
atau ciphertext yang dilambangkan dengan C.
Panjang Kunci
Keamanan dari sebuah teknik penyandian tergantung dari dua
hal : algoritma penyandian dan panjang kunci (key). Algoritma
sangat menentukan kekuatan dari sebuah teknik penyandian, tetapi
panjang kunci juga tidak kalah penting dalam menentukan
kekuatan sebuah teknik penyandian.
Sebagai contoh, apabila seorang kriptanalis mengetahui
algoritma yang dipakai untuk melakukan teknik penyandian
13
kunci yang dipakai terlebih dahulu sebelum dapat melakukan
dekripsi terhadap semua ciphertext yang dia punya. Satu-satunya
cara untuk mendapatkan kunci yang dipakai adalah dengan cara
mencoba semua variasi kunci yang ada. Teknik serangan ini sering
dikenal dengan nama brute force.
Mudah untuk menghitung banyaknya variasi kunci yang
ada. Apabila panjang kunci adalah 8 bit, maka ada 28 atau 256
kemungkinan kunci yang dapat dicoba. Dari 256 percobaan ini,
peluang untuk mendapatkan kunci yang benar adalah 50 persen
setelah melalui setengah usaha percobaan. Bila panjang kunci 56
bit, maka ada 256 kemungkinan variasi kunci. Dengan menganggap
sebuah super komputer dapat mencoba satu juta kunci per detik,
maka diperkirakan sekitar 2285 tahun untuk menemukan kunci
yang benar. Bila menggunakan panjang kunci 64 bit, maka dengan
super komputer yang sama akan membutuhkan 585 ribu tahun.
Dengan jangka waktu yang lama ini, maka dapat dipastikan bahwa
pesan yang disandikan tersebut tidak mempunyai arti lagi apabila
telah berhasil dilakukan dekripsi.
Dengan melihat situasi ini, maka kriptografi yang baik akan
memilih untuk menggunakan sepanjang mungkin kunci yang akan
digunakan, namun hal ini tidak dapat diterapkan begitu saja.
Semakin panjang kunci, semakin lama pula waktu yang digunakan
14
panjang kunci yang akan digunakan hendaknya memperhatikan 3
hal, yaitu seberapa penting data yang akan dirahasiakan, berapa
lama waktu yang dibutuhkan agar data tersebut tetap aman, dan
seberapa kuat kemampuan kriptanalis dalam memecahkan teknik
penyandian kita. Saat ini yang paling banyak dipakai adalah kunci
dengan panjang 128 bit karena panjang kunci ini dianggap paling
optimal untuk saat ini.
2.1.1. Kriptografi Secret Key dan Public Key
Pada dasarnya terdapat dua jenis algoritma kriptografi
berdasarkan kunci yang digunakan. Yang pertama adalah
kriptografi dengan menggunakan secret key dan yang kedua
adalah kriptografi yang menggunakan public key. Kriptografi
public key menggunakan dua kunci yang berbeda dimana satu
kunci digunakan untuk melakukan enkripsi dan kunci yang lain
digunakan untuk melakukan dekripsi.
a. Kriptografi Secret Key
Kriptografi secret key adalah kriptografi yang hanya
melibatkan satu kunci dalam proses enkripsi dan dekripsi.
Proses dekripsi dalam kriptografi secret key ini adalah
15
Gambar 6. Kriptografi simetris
Kriptografi secret key seringkali disebut sebagai
kriptografi konvensional atau kriptografi simetris
(Symmetric Cryptography) dimana proses dekripsi adalah
kebalikan dari proses enkripsi dan menggunakan kunci yang
sama.
Kriptografi simetris dapat dibagi menjadi dua, yaitu
penyandian blok dan penyandian alir. Penyandian blok
bekerja pada suatu data yang terkelompok menjadi
blok-blok data atau kelompok data dengan panjang data yang
telah ditentukan. Pada penyandian blok, data yang masuk
akan dipecah-pecah menjadi blok data yang telah ditentukan
ukurannya. Penyandian alir bekerja pada suatu data bit
tunggal atau terkadang dalam satu byte. Jadi format data
yang mengalami proses enkripsi dan dekripsi adalah berupa
16
Algoritma yang ada pada saat ini kebanyakan
bekerja untuk penyandian blok karena kebanyakan proses
pengiriman data pada saat ini menggunakan blok-blok data
yang telah ditentukan ukurannya untuk kemudian dikirim
melalui saluran komunikasi.
b. Kriptografi Public Key
Kriptografi public key sering disebut dengan
kriptografi asimetris. Berbeda dengan kriptografi secret key,
kunci yang digunakan pada proses enkripsi dan proses
dekripsi pada kriptografi public key ini berbeda satu sama
lain. Jadi dalam kriptografi public key, suatu key generator
akan menghasilkan dua kunci berbeda dimana satu kunci
digunakan untuk melakukan proses enkripsi dan kunci yang
lain digunakan untuk melakukan proses dekripsi.
Kunci yang digunakan untuk melakukan enkripsi
akan dipublikasikan kepada umum untuk dipergunakan
secara bebas. Oleh sebab itu, kunci yang digunakan untuk
melakukan enkripsi disebut juga sebagai public key.
Sedangkan kunci yang digunakan untuk melakukan dekripsi
akan disimpan oleh pembuat kunci dan tidak akan
dipublikasikan kepada umum. Kunci untuk melakukan
17
Gambar 7. Kriptografi Asimetris
Dengan cara demikian, semua orang yang akan
mengirimkan pesan kepada pembuat kunci dapat melakukan
proses enkripsi terhadap pesan tersebut, sedangkan proses
dekripsi hanya dapat dilakukan oleh pembuat atau pemilik
kunci dekripsi. Dalam kenyataannya, kriptografi asimetris
ini dipakai dalam ssh, suatu layanan untuk mengakses suatu
server.
2.2.Enkripsi
Enkripsi adalah proses mengamankan suatu informasi dengan
membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan
khusus. Dikarenakan enkripsi telah digunakan untuk mengamankan
komunikasi di berbagai negara, hanya organisasi-organisasi tertentu dan
individu yang memiliki kepentingan yang sangat mendesak akan kerahasiaan
yang menggunakan enkripsi. Di pertengahan tahun 1970-an, enkripsi kuat
18
Serikat pada domain publik, dan saat ini enkripsi telah digunakan pada sistem
secara luas, seperti Internet e-commerce, jaringan Telepon bergerak dan ATM
pada bank.
Enkripsi dapat digunakan untuk tujuan keamanan, tetapi teknik lain
masih diperlukan untuk membuat komunikasi yang aman, terutama untuk
memastikan integritas dan autentikasi dari sebuah pesan. Contohnya,
Message Authentication Code (MAC) atau digital signature.
2.3.Dekripsi
Deskripsi dalam dunia keamanan komputer merupakan proses
untuk mengubah chyperteks menjadi plainteks atau pesan asli. Jadi deskripsi
merupakan kebalikan dari Enkripsi upaya pengolahan data menjadi sesuatu
yang dapat diutarakan secara jelas dan tepat dengan tujuan agar dapat
dimengerti oleh orang yang tidak langsung mengalaminya sendiri.
2.4.Algoritma Kriptografi 2.4.1. Algoritma DES
Algoritma DES dikembangkan di IBM dibawah
kepemimpinan W.L. Tuchman pada tahun 1972. Algoritma ini
didasarkan pada algoritma LUCIFER yang dibuat oleh Horst Feistel.
Algoritma ini telah disetujui oleh (NBS) setelah penilaian kekuatannya
oleh (NSA) Amerika Serikat. DES termasuk ke dalam sistem
kriptografi simetris dan tergolong jenis cipher blok. DES beroperasi
pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plaintext menjadi
19 key) atau (subkey).
Kunci internal dibangkitkan dari kunci eksternal (external
key) yang panjangnya 64 bit.
Skema global dari algoritma DES adalah sebagai berikut :
1. Blok plainteks dipermutasi dengan matriks permutasi awal.
2. Hasil permutasi awal kemudian mengalami 16 putaran. Setiap
putaran menggunakan kunci internal yang berbeda.
3. Hasil nya kemudian dipermutasi dengan matriks permutasi (invers
initial permutation atau IP-1 ) menjadi blok cipherteks.
4. Di dalam proses tersebut, blok plainteks terbagi menjadi dua bagian,
kiri (L) dan kanan (R), yang masing-masing panjangnya 32 bit.
20
5. Pada setiap putaran i, blok R merupakan masukan untuk fungsi
transformasi yang disebut f. Pada fungsi f, blok R dikombinasikan
dengan kunci internal Ki. Keluaran dari fungsi f di-XOR-kan dengan
blok L untuk mendapatkan blok R yang baru. Sedangkan blok L
yang baru langsung diambil dari blok R sebelumnya. Ini adalah satu
putaran DES.
Secara matematis, satu putaran DES dinyatakan sebagai
Li = Ri – 1
Ri = Li – 1 f(Ri – 1, Ki)
Pembangkitan Kunci Internal
Kunci internal = kunci setiap putaran, Ada 16 putaran, jadi ada 16 kunci
21
Gambar 7 Proses pembangkitan kunci-kunci internal DES
2.4.2. Algoritma 3DES
3DES merupakan salah satu algoritma simetris pada
kriptografi yang digunakan untk mengamankan data dengan cara
menyandikan data. Proses yang dilakukan dalam pengamanan data nya
yaitu proses enkripsi dan proses dekripsi. Algoritma 3DES adalah
suatu algoritma pengembangan dari algoritma. Perbedaan DES dengan
3DES terletak pada panjangnya kunci yang digunakan . pada DES
menggunakan satu kunci yang panjang nya 56 bit, sedangkan 3DES
menggunakan 3 kunci yang panjang nya 168 bit (masing-masing kunci
panjang nya 56 bit). Pada 3DES, 3 kunci yang digunakan bersifat
saling bebas (K1 ≠ K2 ≠ K3). Karena tingkat kerahasiaan algoritma
3DES terletak pada panjangnya kunci yang digunakan, maka
penggunaan algoritma 3DES dianggap lebih aman dibandingkan
algoritma DES. Pada algoritma 3DES digami menjadi 3 tahap, setiap
tahap nya merupakan implementasi dari algoritma DES. Tahap
pertama plainteks (file) yang diinputkan dioperasikan dengan kunci
eksternal pertama (K1) dan melakukan proses enkripsi dengan
menggunakan algoritma DES, sehingga menghasilkan pra-chiperteks
pertama. Kemudian setelah itu tahap kedua pra-chiperteks pertama
yang dihasilkan pada tahap pertama kemudian dioperasikan dengan
22
proses dekripsi dengan menggunakan algoritma DES, sehingga
menghasilkan pra-chiperteks (chipper tekx awal). Kedua. tahap
terakhir pra-chiperteks kedua yang dihasilkan pada tahap kedua
dioperasikan dengan kunci eksternal ketiga (K3) dan melakukan proses
enkripsi dengan menggunakan algoritma DES, sehingga akan
menghasilkan chiperteks.
Gambar 8. Proses enkripsi algoritma 3DES
2.4.3. Algoritma AES
Algoritma kriptografi bernama Rijndael yang di desain oleh
Vincent Rijmen dan John Daemen asal Belgia keluar sebagai
pemenang kontes algoritma kriptografi pengganti DES yang diadakan
oleh NIST milik pemerinah Amerika Serikat pada 26 November 2001.
Algoritma Rijndael ini yang kemudian dikenal dengan AES. Setelah
mengalami beberapa proses standarisasi oleh NIST, Rijndael kemudian
23
Pada 2006 AES merupakan salah satu algoritma terpopuler yang di
gunakan dalam kriptografi asimetrik.
AES merupakan algoritma block chipper dengan menggunakan
system permutasi dan substitusi (P-box dan S-box) bukan dengan
jaringan Feistel sebagaimana block chipper pada umumnya. AES
memiliki ukuran block yang tetap panjang selama 128 bit dan ukuran
kunci 128, 192, 256. Tidak seperti Rijndael yang blok kunci nya dapat
berukuran kelipatan 32 bit dengan ukuran minimum 128 bit dan
maksimal 256 bit.
24
2.4.4. Algoritma Blowfish
Blowfish adalah suatu algoritma kriptografi yang beroperasi
pada mode blok. Algoritma Blowfish ditujukan untuk
diimplementasikan pada sebuah mikroprosesor berskala besar.
Algoritma Blowfish sendiri tidak dipatenkan sehingga dapat digunakan
oleh banyak orang .Blowfish menggunakan jaringan Feistel yang terdiri
dari 16 buah putaran. Masukan terhadap jaringan Feistel ini adalah x
yang merupakan elemen data ukuran 64 bit. Blowfish dirancang untuk
memenuhi kriteria-kriteria sebagai berikut :
1. Cepat. Blowfish dirancang agar dapat mengenkripsikan data pada
mikroprosesor 32 bit dengan kecepatan 26 clock cycles per byte.
2. Kompak. Blowfish dirancang agar dapat berjalan dengan
menggunakan memori kurang dari 5kb
3. Sederhana. Blowfish dirancang hanya menggunakan
operasi-operasi sederhana. Operasi yang digunakan dalam Blowfish dalah
penambahan XOR dan tabel lookup dalam 32 bit. Rancangan yang
sederhana ini mempermudah proses analisa yang mebuat Blowfih
terhindar dari kesalahan implementasi.
4. Keamanan yang beragam. Panjang kunci yang digunakan dalam
algoritma Blowfish bervariasi dengan panjang kunci maksimal 448
25
Proses enkripsi dilakukan dengan langkah-langkah sebagai berikut :
1. Bagi x menjadi setengah bagian, yaitu dengan ukuran 32 bit. Hasil
pembagian ini adalah : xL dan xR.
2. Lakukan langkah-langkah berikut dalam 16 putaran:
xL = xL ⊕ Pi
xR = F(xL) ⊕ xR
Tukar xL dan xR
Keterangan:
i = 1, 2, ..., 16 (menunjukkan nomor putaran)
3. Tukar xL dan xR (membatalkan pertukaran terakhir).
4. xR = xR ⊕ P17
5. xL = xL ⊕ P18
6. Gabungkan kembali xL dan xR
Fungi F yang terdapat pada jaringan Feistel didefinisikan sebagai berikut
:
1. Bagi xL menjadi empat bagian yang berukuran 8 bit. Keempat
bagian yang dihasilkan adalah a, b, c, dan d.
2. Fungsi F(xL) didefinisikan sebagai berikut:
26
Gambar 10. Skema jaringan Feistel pada algoritma Blowfish
27
Proses dekripsi dilakukan dengan langkah yang sama dengan
proses enkripsi, kecuali P1, P2, ..., P18 digunakan dengan urutan terbalik dari
proses enkripsi.
2.5.JCE
JCE merupakan framework sekuriti ekstensi dari Java. Ia
menyediakan ekstensi untuk kriptografi yang kuat, diperbolehkan untuk
di-ekspor oleh pemerintah Amerika setelah kebijakan mengenai di-ekspor tahun
2000. JCE mulai diperbolehkan sebagai opsi paket tambahan pada JDK v
1.2.x dan 1.3.x, sedangkan pada JDK v 1.7.x telah diintegrasikan. API JCE
diimplementasi oleh Cryptographic Service Providers. Pada JDK v 1.7.x
secara default API service-provider nya adalah SunJCE.
JCE menyediakan kelas interface untuk operasi kriptografi,
mulai dari proses enkripsi, generalisasi kunci, dan dekripsi. Banyak fitur yang
disediakan oleh JCE. Mulai dari Chiper, KeyGenerator, SekcretKeyFactory
28
BAB III
ANALISIS MASALAH DAN PERANCANGAN SISTEM
3.1.Analisis Masalah / Problem Analys
Pada saat ini, terdapat banyak sekali algoritma kriptografi dengan
berbagai macam tipe dan berbagai macam keunggulan dari masing-masing
algoritma. Tiap tahun selalu ada yang muncul algoritma kriptografi baru, bisa
itu merupakan algoritma penyempurnaan dari yang sebelum nya, atau bisa
juga algoritma yang benar-benar baru. Permasalahan yang akan diteliti saat
ini yaitu perbandingan algoritma AES, DES, 3DES, dan Blowfish dalam hal
kecepatan enkripsi dan dekripsi, dan alokasi memory yang diperlukan setiap
aplikasi tersebut dieksekusi untuk beberapa skenario pengujian.
3.2.Gambaran Aplikasi
Aplikasi yang akan di buat nanti hendaknya akan membantu para Developer
atau orang-orang yang hendak membuat suatu aplikasi yang akan
memanfaatkan plugin dari JCE akan terbantu karena aplikasi ini nantinya
akan memberikan rekomendasi pada para Developer untuk memilih
algoritma apa yang hendak merek pakai.
Aplikasi ini nantinya akan mengenkripsi file dengan tipe file sebagai berikut :
a. File Image (jpg)
b. File suara (flac)
29 d. File teks (docx)
Aplikasi ini juga akan menampilkan Running Time dan Memory Usage
tiap aplikasi dijalankan, jadi hendaknya user akan dapat memilih algoritma
apa yang akan mereka pakai yang sesuai dengan apa yang mereka
inginkan.
3.2.1. Contoh Kasus
1. Terdapat sebuah file yang akan di enkripsi untuk mengetahui
total alokasi memory dan kecepatan enkripsi pada setiap jenis
file dari tiap algoritma.
Table 1. Dari enkripsi untuk mengetahui alokasi memory yang digunakan dan running time nya
NO Nama algoritma
Ukuran file
(mb)
Running time Memory usage
1 AES 8 11536 6477
2 DES 8 12232 6487
3 3DES 8 43762 6477
30
3.3.
Requirment Analysis31
32
3.3.2. Diagram flowchart dekripsi
33
34
BAB IV
IMPLEMENTASI SISTEM
4.1.Implementasi Sistem
4.1.1.Perangkat yang digunakan
Perangkat lunak yang digunakan untuk menjalankan program ini adalah:
1. netbeans 7.1 dan Java ™ SE Development Kit 6 Update 12
2. Sistem Operasi Windows 7, 64 bit.
3. JDK (Java Development Kit) 64 bit.
Perangkat keras yang digunakan dalam pembuatan sistem ini adalah
computer dengan spesifikasi sebagai berikut:
1. Prosesor Intel Core i7 CPU 3,20 GHz.
2. RAM 8.00 GB.
3. Hardisk Hitachi 1 TB
4.2. Penghitungan running time
Dalam program ini nantinya setiap proses enkripsi maupun
dekripsi yang dilakukan akan dicatat running time nya dan memory usage
maka dari itu diperlukan method untuk dapat menghitung semua nya itu.
35
Gambar 12. Potongan Program 1
Disini terlihat potongan program untuk tanda awal dari program
yang akan dilakukan penghitungan.
Gambar 13. Potongan Program 2
Dan disini adalah potongan untuk menghitung nilai total alokasi
memory dan memory usage nya. Untuk penghitungan running time nya
dilakukan dengan cara
1. Pertama deklarasikan code long end = System.currentTimeMillis(); ini
untuk menandai dimana letak posisi penghitungan akan berhenti. Line
ini biasanya diletakan di akhir program.
2. Untuk menghitung total memory usage dapat dilakukan dengan code
long memory = ((runtime.totalMemory() /1024) -
runtime.freeMemory() / 1024) ;dapat dilihat di line ini total memory
yang didapatkan akan dibagi 1024, karena nantinya yang diambil
36
3. Setelah itu untuk menghitung total running time nya dan menampilkan
nya maka bisa menggunakan System.out.println("waktu yang
dibutuhkan adalah: " + (end - start) + "ms"); di line ini dilakukan
penghitungan running time dengan cara mengurangkan waktu saat
program selesai dirunning dengan waktu pertamakali program
dijalankan, maka nanti akan ditampilkan waktu running nya dalam
satuan ms (micro second).
4. Untuk selanjutnya untuk mengetahui memory yang diperlukan kita
hanya perlu memanggil parameter memory yang tadi sudah dilakukan
penghitungan.
4.3.Penjelasan program
Gambar 14. Potongan Program 3
Chiper disini berguna untuk menyediakan atau mengaktifkan
fungsi chiper kriptografi untuk enkripsi dan dekripsi. Fungsi ini berasal dari
JCE. Untuk membuat objek chipper, aplikasi akan memanggil method
getInstance chiper dan akan memanggil nama penyedia nya, yaitu AES.
37
Keygenarator disini berguna untuk menyediakan fungsi dari kunci
simetris. Keygenerator disini akan di gunakan menurut metode dari
getinstance dalam hal ini adalah AES. Setelah itu maka key tersebut akan di
generate untuk mendapatkan kunci.
4.3.1. Enkripsi
Gambar 16. Potongan Program 5
Line ini akan melakukan encrypt dengan mendeklarasikan
ENCRYPT_MODE di javax.crypto.Cipher dan memanggil key yang
tadi sudah di buat di method keygenerator.
Setelah itu maka file yang akan di enkripsi akan di masukan
melalui line ini. CipherInputStream disini merupakan suatu
gabungan dari InputStream dan Chiper. data masukan nanti akan di
baca oleh InputStream tetapi akan mengalami tambahan proses oleh
Chiper. Chiper sudah harus dideklarasikan sebelum digunakan oleh
ChiperInputStream. Setelah itu maka akan di deklarasikan lokasi file
yang akan di enkripsi. Disini file yang akan di enkripsi berada di
38
akan dienkripsi itu berada, dan enkrip.mp4 ini adalah nama file yang
akan di enkripsi, diikuti dengan File extension nya.
Setelah file tersebut dimasukan sekarang tinggal mendeklarasikan
keluaran file nya. Caranya adalah dengan menggunakan method
FileOutpoutStream dan diikuti dengan lokasi file dan nama file yang
diinginkan. Disini lokasi file nya akan dietakan di Disk F dan dengan
nama video_enkrip. Maka method yang digunakan adalah
FileOutputStream(newFile("F:\\video_enkrip.mp4).
setelah program dieksekusi maka akan tampil outpout :
Gambar 17. Hasil Running Program
Disini akan terlihat hasil outpout di netbean. Akan terlihat
juga memory yang dihabiskan untuk running program dan juga waktu
yang di butuhkan program untuk sekali jalan.
39
Gambar 18. Hasil enkripsi dan dekripsi
File enkrip.mp4 adalah file yang akan di enkrip sedangkan file
video_enkrip.mp4 adalah file hasil enkrip. Jika file hasil enkrip akan
di jalankan maka tampilan nya akan menjadi
Ini menandakan file nya berhasil di enkrip. Karena itu file tidak dapat
di eksekusi, walaupun ukuran file antara hasil dekrip dan file asli nya
40
4.3.2. Dekripsi
Proses untuk mendekrip file hampir sama dengan proses enkrip.
Hanya perbedaan nya adalah method yang akan digunakan. Jika pada
proses encrypt haru dideklarasikan terlebih dahulu dengan
Maka untuk proses dekrip adalah kebalikan nya, yaitu dengan cara
Disini terlihat perbedaan nya adalah di ENCRYPT_MODE dan
DECRYPT_MODE. Selebihnya sama dengan proses enkrip.
Setelah itu maka seperti pada proses enkrip, file yang akan di
dekrip harus dimasukan terlebih dahulu dengan cara
Disini terlihat perbedaan nya antara proses enkrip dan dekrip,
pada proses dekrip file yang akan di dekrip adalah file yang tadi sudah
di buat pada proses enkripsi. Pada saat proses enkripsi file nya adalah
“video_enkrip.mp4”. maka dari itu file yang akan di masukan
dituliskan dengan cara
(newFileInputStream(new
41
Setelah melewati proses dekripsi maka hasil file nya akan dibuat
dengan cara :
File hasil dekrip akan di beri nama “video_dekrip.mp4” dan
lokasi nya berada di disk F. Untuk tampilan outpout pada netbean
ketika program dieksekusi maka akan tampil seperti ini :
Gambar 19. Hasil running program
Disini akan terlihat hasil outpout di netbean. Akan terlihat juga
memory yang dihabiskan untuk running program dan juga waktu yang
di butuhkan program untuk sekali jalan.
42
Gambar 20. Hasil Dekrip dan Enkrip
Disini terlihat perbedaan nya bahwa file hasil enkrip tidak
memiliki thumbnail karena file tersebut tidak terbaca, sedangkan
setelah melalui proses dekrip file tersebut kembali memiliki
thumbsnail. Dan jikan file tersebut di eksekusi maka tampilan nya
adalah seperti ini :
Disini file hasil dekrip bisa di eksekusi, beda dari sebelum nya, maka
43
BAB V
ANALISIS DAN HASIL IMPLEMENTASI
5.1.Hasil Pengujian Sistem
Setelah melakukan pengujian program dengan beragam variasi file
yang dienkripsi maka didapatkan hasil yang beragam sesuai dengan
masing-masing algoritma. Tipe file yang dienkripsi adalah gambar, suara, video, dan
dokumen. Berikut adalah hasil pengujian nya :
5.1.1. Enkripsi image
Table 2. Hasil dari enkripsi data berupa gambar untuk masing-masing algoritma
NO Nama algoritma
Ukuran file
(mb)
Running time Memory usage
1 AES 8 11536 6477
2 DES 8 12232 6487
3 3DES 8 43762 6477
44
Grafik 1. Hasil dari enkripsi data berupa gambar untuk masing-masing algoritma
Penjelasan : dari grafik diatas dapat kita lihat bahwa untuk proses enkripsi
algoritma 3des menjadi yang paling banyak memakan waktu enkripsi.
5.1.2. Dekirpsi image
Table 3. Hasil dari dekripsi data berupa gambar untuk masing-masing algoritma
0
Running time Memory usage
1 AES 8 1218 6477
2 DES 8 590 8455
3 3DES 8 532 8774
45
Grafik 2. Hasil dari dekripsi data berupa gambar untuk masing-masing algoritma
Penjelasan : Dilihat dari data yang didapatkan dapat disimpulkan bahwa untuk
proses enkripsi dan dekripsi algoritma 3DES menjadi yang paling lama dalam hal
proses enkripsi dan dekripsi file gambar.
Analisa :
Dapat dilihat dari graph diatas, algoritma 3DES memerlukan waktu yang
paling lama untuk melakukan enkripsi. Ini karena algoritma ini tidak di kususkan
dibuat untuk berjalan atau diimplementasikan ke sebuah software, karena saat itu
processor belum ditemukan, maka kebanyakan algoritma ini diimplementasikan
ke sebuah hardware, bukan software. Maka dari itu ketika dicoba dijalankan dan
diimplementasikan ke sebuah program maka algoritma ini tidak begitu efektif,
terbukti dengan banyaknya waktu yang dia perlukan untuk melakukan enkripsi.
46
5.1.3. Enkripsi file MP3
Table 4. Hasil dari enkripsi data berupa MP3 untuk masing-masing algoritma
Grafik 3. Hasil dari enkripsi data berupa MP3 untuk masing-masing algoritma
0
Running time Memory usage
1 AES 17 11466 6477
2 DES 17 13217 6477
3 3DES 17 44722 6476
47
Penjelasan : untuk enkripsi file mp3 hasil nya adalah 3des masih menjadi yang
paling banyak memakan waktu enkripsi, disusul dengan algoritma DES, AES, dan
BLOWFISH.
5.1.4. Dekripsi file MP3
Table 5. Hasil dari dekripsi data berupa MP3 untuk masing-masing algoritma
Grafik 4. Hasil dari dekripsi data berupa MP3 untuk masing-masing algoritma
0
Running time Memory usage
1 AES 17 1218 6477
2 DES 17 628 12122
3 3DES 17 548 12290
48
Penjelasan : tidak seperti proses enkripsi, untuk proses dekripsi hasil dari running
time nya berbeda-beda. Dan yuntuk file mp3 didapatkan bahwa algoritma
Blowfish adalah yang paling lama dalam proses dekripsi.
Analisa :
Uuntuk file mp3 algoritma yang paling lambat dalam mengenkripsi file
masih tetap algoritma 3DES dikarenakan memang algoritma ini tidak dikhususkan
untuk berjalan di sebuah software. Algoritma ini membutuhkan hampir 3 kali lipat
waktu yang dibutuhkan dibanding dengan algoritma yang lain.
5.1.5. Enkripsi file dokumen
Table 6. Hasil dari enkripsi data berupa dokumen untuk masing-masing algoritma
NO Nama algoritma
Ukuran file
(mb)
Running time Memory usage
1 AES 22 12184 6477
2 DES 22 12772 6477
3 3DES 22 54238 6476
49
Grafik 5. Hasil dari enkripsi data berupa dokumen untuk masing-masing algoritma
Penjelasan : pada file dokumen (teks) dilihat perbedaan yang sangat signifikan
untuk algoritma 3des, algoritma ini membutuhkan waktu enkrip hamper 5 kali
lipat dari algoritma yang lain.
5.1.6. Dekripsi file dokumen
Table 7. Hasil dari dekripsi data berupa dokumen untuk masing-masing algoritma
0
Running time Memory usage
1 AES 22 915 11728
2 DES 22 617 11407
3 3DES 22 555 11400
50
Grafik 6. Hasil dari dekripsi data berupa dokumen untuk masing-masing
algoritma
Penjelasan : Untuk proses dekripsi hampil sama rata untuk hasil running time dan
memory usage. Tapi AES menjadi sedikit diatas rata-rata dibanding algoritma
yang lain.
Analisa :
Untuk enkripsi file dokumen masih saja algoritma 3DES yang menduduki paling
banyak memerlukan waktu untuk melakukan enkripsi data,sedangkan untuk
dekripsi algoritma Blowfish yang paling banyak memakan waktu dibanding dengan
algoritma yang lain.
Running time Memory usage
51
Table 8. Hasil dari enkripsi data berupa file video untuk masing-masing algoritma
Grafik 7. Hasil dari enkripsi data berupa file video untuk masing-masing algoritma
Penjelasan : enkripsi video lagi-lagi algoritma 3DES menjadi yang terlambat
dalam hal mengenkripsi file video. Karena algoritma ini memang tidak efisien
untuk digunakan di sebuah software.
5.1.8. Dekripsi file video 0
52
Table 9. Hasil dari dekripsi data berupa file video untuk masing-masing algoritma
Grafik 8. hasil dari dekripsi data berupa file video untuk masing-masing algoritma
Penjelasan : memory usage untuk keempat algoritma mirip, hanya berbeda sedikit
tapi disini algoritma DES menjadi yang tercepat, tetapi dia yang memakan banyak
53
Untuk hasil proses enkripsi file video hasil nya hampir sama dengan file-file yang
terdahulu. Ini membuktikan bahwa tipe file tidak berpengaruh pada kecepatan
54
BAB VI
PENUTUPAN
6.1 Kesimpulan
Berdasarkan hasil analisis, desain dan implementasi, serta uji coba
program dapat disimpulkan bahwa :
1. Dari data yang sudah didapat dapat disimpulkan bahwa tipe file tidak
mempengaruhi hasil dari running time dan memory usage pada sebuah
algoritma. Ini dibuktikan dengan algoritma 3DES yang selalu menjadi
yang terlambat di semua tipe file pada saat proses enkripsi. Dari semua
tipe file urutan nya sama yaitu yang tercepat adalah algoritma blowfish,
lalu AES, DES dan yang paling lambat 3DES.
2. Dari data yang sudah didapat dapat disimpulkan bahwa algoritma 3DES
adalah yang paling lambat dalam proses enkripsi, dan juga paling banyak
memakan memori. Sedangkan untuk algoritma tercepat ditempati oleh
algoritma Blowfish. tapi mengingat fitur yang dibawa oleh algoritma
AES lebih lengkap dan hail dari waktu enkrip dan dekrip tidak terlampau
55
6.2 Saran
Saran yang penulis dapat berikan adalah dengan membuat program
di system operasi lain, hal ini akan memperlihatkan apakah sistem operasi
juga akan berpengaruh pada jalan nya program untuk proses enkripsi maupun
56
DAFTAR PUSTAKA
Munir, Rinaldi. "Kriptografi." Informatika, Bandung (2006)
Andri Kristanto, Kemanan data pada jaringan computer, Yogyakarta 2003
Sistem Intelijen. KOMMIT 2002. Jakarta: Universitas Gunadarma.
Sari, Martha. 2010. Implementasi kriptography dalam kehidupan sehari-hari .
Jurusan Teknik Informatika STMIK GIMDP
Pistoia, Marco, et al. Enterprise Java 2 Security: Building Secure and Robust
J2EE Applications. Addison Wesley Longman Publishing Co., Inc., 2004.
Joan Daemen, Vincent Rijmen. AES Proposal : Rijndael, Document Version 2.
NIST, 1999.
HIDAYAT, AKIK, 2014. Enkripsi dan Dekripsi Algoritma 3DES (Triple Data
Encryption) Jurusan Matematika Universitas Padjajaran.
HAMZAH, RIO, 2011. Implementasi Algoritma Blowfish untuk enkripsi data
menggunakan delphi 7 Jurusan teknik Informatika Universitas Islam Syarif Hidayatullah
Soewito, Baenfano, 2010. Konsep Enkripsi dan Dekripsi Asimetris Jurusan MTI Binus University
Farid, Muhamad, 2016. Enkripsi Pesan Rahasia Menggunakan Algoritma (Advanced Encryption Standard) Program Studi Matematika Jurusan MIPA Fakultas Sains Dan
Teknologi Universitas Islam Negero Syarif Hidayatullah Jakarta
59
FileOutputStream fop = new FileOutputStream(new File("D:\\mp3_dekrip.mp4"));
int j;
while ((j = ciptt.read()) != -1) {
fop.write(j);
}
//
} catch (Exception e) {
}
} catch (FileNotFoundException ex) {
Logger.getLogger(AES.class.getName()).log(Level.SEVERE, null, ex);
}
}
2. Code BLOWFISH
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.security.Key;
60 import java.util.logging.Logger;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.KeyGenerator;
public class BLOWFISH {
public static void main(String[] args) {
try {
FileInputStream File2 = new FileInputStream(new File("D:\\mp3.mp4"));
try {
Cipher cipher = Cipher.getInstance("BLOWFISH ");
KeyGenerator keyGen = KeyGenerator.getInstance("BLOWFISH ");
Key key = keyGen.generateKey();
Long start = System.nanoTime();
61
cipher.init(Cipher.ENCRYPT_MODE, key);
//CipherInputStream cipt = new CipherInputStream(new
FileInputStream(new File("D:\\mp3_enkrip.mp3")), cipher);
CipherInputStream cipt = new CipherInputStream((File2), cipher);
long end = System.nanoTime();
long memory = ((runtime.totalMemory() / 1024) -
runtime.freeMemory() / 1024);
System.out.println("waktu yang dibutuhkan enkripsi adalah: " + (end -
start) + "ms");
System.out.println("memory yang diperlukan : " + memory + "kb");
FileOutputStream fip = new FileOutputStream(new
File("D:\\test_enkrip.mp4"));
int i;
while ((i = cipt.read()) != -1) {
fip.write(i);
}
FileInputStream File3 = new FileInputStream(new
62 Long start1 = System.nanoTime();
Runtime runtime1 = Runtime.getRuntime();
cipher.init(Cipher.DECRYPT_MODE, key);
CipherInputStream ciptt = new CipherInputStream((File3), cipher);
long end1 = System.nanoTime();
long memory1 = ((runtime1.totalMemory() / 1024) -
runtime1.freeMemory() / 1024);
System.out.println("waktu yang dibutuhkan dekripsi adalah: " + (end1 -
start1) + "ms");
System.out.println("memory yang diperlukan : " + memory1 + "kb");
// CipherInputStream ciptt = new CipherInputStream(new
FileInputStream(new File("D:\\mp3_enkrip.mp3")), cipher);
FileOutputStream fop = new FileOutputStream(new
File("D:\\mp3_dekrip.mp4"));
int j;
while ((j = ciptt.read()) != -1) {
63 }
} catch (Exception e) {
}
} catch (FileNotFoundException ex) {
Logger.getLogger(AES.class.getName()).log(Level.SEVERE, null, ex);
}
public static void main(String[] args) {
try {
65 adalah: " + (end1 - start1) + "ms");
66
public static void main(String[] args) {
67 adalah: " + (end1 - start1) + "ms");