analisis perbandingan unjuk kerja algoritma des, 3des… · des, 3des, aes, blowfish dan twofish...
TRANSCRIPT
i
ANALISIS PERBANDINGAN UNJUK KERJA ALGORITMA
DES, 3DES, AES, BLOWFISH DAN TWOFISH PADA
DOKUMEN
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat
Untuk Mendapatkan Gelar Sarjana Komputer
Program Studi Teknik Informatika
DISUSUN OLEH
Y ADVENSIUS PUTRA PAMUNGKAS
155314086
JURUSAN INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2019
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
COMPARATIVE ANALYSIS OF DES, 3DES, AES, BLOWFISH
AND TWOFISH ALGORITHM PERFORMANCE ON
DOCUMENTS
A THESIS
Presented as Partial Fulfillment of Requirements
To Obtain Sarjana Komputer Degree
In Informatics Engineering Department
By:
Y ADVENSIUS PUTRA PAMUNGKAS
155314086
DEPARTMENT OF INFORMATICS
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2019
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
HALAMAN MOTTO
“janganlah takut, sebab Aku menyertai engkau
, janganlah bimbang, sebab Aku
ini Allahmu; Aku akan meneguhkan, bahkan akan menolong
engkau; Aku akan
memegang engkau dengan tangan
kanan-Ku yang membawa kemenangan.”
(Yesaya 41:10)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
ABSTRAK
Keamanan suatu informasi adalah suatu hal sangat penting. Sehingga perlu
adanya perlindungan pada informasi tersebut, salah satunya yaitu dengan
kriptografi. Kriptografi adalah suatu penyandian untuk melindungi informasi
dengan menggunakan algoritma tertentu, sehingga informasi yang rahasia dapat
terlindungi dari penyadapan. Data Encryption Standard (DES), Triple Data
Encryption Standard (3DES), Advance Encryption Standard (AES), Blowfish
dan Twofish merupakan algoritma penyandian yang akan digunakan dalam
penelitian ini. Setiap algoritma sudah memenuhi kebutuhan untuk mengacak data
sehingga dapat dimanfaatkan untuk pengamanan informasi. Namun masing-
masing algoritma memiliki performansi yang berbeda-beda dalam proses enkripsi
maupun dekripsi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
The security of information is a very important thing. Because there needs
to be information about this, one of them is with cryptography. Cryptography is
one of the encodings to protect information by using certain, so that confidential
information can be protected from eavesdropping. Data Encryption Standard
(DES), Triple Data Encryption Standard (3DES), Advanced Encryption Standard
(AES), Blowfish and Twofish are the encoding algorithms that will be used in this
study. Each algorithm has fulfilled the need to randomize data so that it can be
used for information security. However, each algorithm has different performance
in the encryption and decryption process.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Puji Syukur penulis panjatkan kepada Tuhan Yang Maha Esa karena atas rahmat
dan berkat-Nya penulis dapat menyelesaikan penyusunan tugas akhir dengan tepat
waktu. Dalam pelaksanaan penyusunan skripsi ini mendapatkan banyak
bimbingan dan bantuan dari berbagai pihak. Pada kesempatan ini penulis
mengucapkan banyak terimakasih kepada:
1. Tuhan Yesus Kristus yang telah memberikan banyak sekali pengalaman
berharga, kasih yang tulus, berkat dan rahmat yang melimpah untuk
membentuk penulis menjadi pribadi yang lebih lagi.
2. Keluarga, yang senantiasa mendoakan, memberikan dukungan dan semangat.
3. Bapak Bambang Soelistijanto, S.T, M.Sc., Ph.D. selaku dosen pembimbing
tugas akhir yang sudah memberikan banyak bimbingan dan ilmu dalam
mengerjakan tugas akhir.
4. Bapak Eko Hari Parmadi, S.Si., M.Kom. selaku dosen pembimbing akademis
yang sudah memberikan bimbingan dalam mengerjakan tugas akhir.
5. Seluruh teman angkatan 2015 terutama teman-teman jaringan yang selalu
memberikan dukungan dan semangat sehinga penulis dapat menyelesaikan
tugas akhir.
6. Kamsky yang selalu memberi support dan doa kepada saya.
7. Maria Regina Tryonita yang memberi motivasi dukungan dan menemani saya
selama pengerjaan skripsi.
Penulis menyadari bahwa dalam penyelesaian tugas akhir ini mungkin masih
banyak kekurangan, maka dari kritik dan saran sangat penulis harapkan untuk
perbaikan di masa mendatang. Akhir kata, penulis mengucapkan banyak
terimakasih semoga tugas akhir ini dapat bermanfaat untuk ke depannya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
DAFTAR ISI
ANALISIS PERBANDINGAN UNJUK KERJA ALGORITMA DES, 3DES, AES,
BLOWFISH DAN TWOFISH PADA DOKUMEN............................................................ i
HALAMAN PERSETUJUAN ........................................................................................... iii
HALAMAN PENGESAHAN.............................................................................................iv
PERNYATAAN LEMBAR KEASLIAN KARYA ............................................................ v
LEMBAR PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN
AKADEMIS .......................................................................................................................vi
ABSTRAK ........................................................................................................................ viii
ABSTRACT ........................................................................................................................ ix
KATA PENGANTAR ........................................................................................................ x
DAFTAR ISI ....................................................................................................................... xi
DAFTAR GAMBAR ........................................................................................................ xiv
DAFTAR GRAFIK ............................................................................................................ xv
DAFTAR RUMUS ........................................................................................................... xvi
BAB I .................................................................................................................................. 1
1.1. Latar Belakang .............................................................................................................. 1
1.2. Rumusan Masalah ........................................................................................................ 3
1.3. Tujuan Penelitian .......................................................................................................... 3
1.4. Batasan Masalah ........................................................................................................... 3
1.5. Manfaat Penelitian ........................................................................................................ 4
1.6. Metode Penelitian .......................................................................................................... 4
1.7. Sistematika Penulisan ................................................................................................... 5
BAB II ................................................................................................................................. 6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
2.1. Kriptografi ..................................................................................................................... 6
2.1.1. Kriptografi simetris ................................................................................................. 6
2.1.2. Kriptografi Asimetris............................................................................................... 7
2.2. DES (Data Encryption Standard) .................................................................................. 8
2.2.1. Algoritma DES .................................................................................................. 9
2.3. 3DES (Triple Data Encryption Standard) ................................................................... 10
2.4. AES (Advance Encrytion Standard) ........................................................................... 10
2.4.1. Algoritma AES ...................................................................................................... 12
2.5. Blowfish ........................................................................................................................ 15
2.5.1. Algoritma Blowfish .......................................................................................... 16
2.6. Twofish ......................................................................................................................... 18
2.6.1. Algoritma Twofish ................................................................................................ 19
BAB III ............................................................................................................................. 22
3.1. Alat Penelitian ............................................................................................................... 22
3.1.1. Hardware ............................................................................................................... 22
3.1.2. Software ................................................................................................................. 22
3.2. Pembuatan Alat Uji ....................................................................................................... 22
1. Studi Literatur ........................................................................................................... 22
2. Pengumpulan Bahan Penelitian ................................................................................ 22
3. Implementasi ............................................................................................................. 22
3.3. Parameter Unjuk Kerja ................................................................................................. 23
3.4. Desain Alat Uji ............................................................................................................. 24
4.1. Hasil Pengujian Sistem ................................................................................................. 26
4.1.1. Perbandingan Running Time proses enkripsi. .................................................. 26
4.1.2. Perbandingan Running Time proses dekripsi ........................................................ 27
4.1.3. Perbandingan Avalanche kunci. ............................................................................ 28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
4.1.4. Perbandingan Avalanche pesan. ............................................................................ 29
BAB V .............................................................................................................................. 31
5.1 KESIMPULAN ............................................................................................................. 31
5.2 SARAN ......................................................................................................................... 31
DAFTAR PUSTAKA ....................................................................................................... 32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
DAFTAR GAMBAR
Gambar 1. Skema Proses Enkripsi dan Dekripsi ............................................. 6
Gambar 2. Proses Kriptografi Simetris ............................................................ 7
Gambar 3. Proses Kriptografi Asimetris .......................................................... 7
Gambar 4. Proses Algoritma DES ................................................................... 9
Gambar 5. Proses Algoritma 3DES ................................................................. 10
Gambar 6. Enkripsi AES .................................................................................. 11
Gambar 7. Kombinasi Kunci-Blok Putaran ..................................................... 11
Gambar 8. Algoritma AES ............................................................................... 13
Gambar 9. Add Round Key .............................................................................. 13
Gambar 10. Sub Bytes ..................................................................................... 14
Gambar 11. Shift Rows .................................................................................... 14
Gambar 12. Mix Column ................................................................................. 15
Gambar 13. Struktur Feistel ............................................................................. 17
Gambar 14. Fungsi Feistel ............................................................................... 18
Gambar 15. Proses Algoritma Twofish ............................................................ 19
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
DAFTAR GRAFIK
Grafik 1. Perbandingan Runtime Enkripsi ....................................................... 26
Grafik 2. Perbandingan Runtime Dekripsi ....................................................... 27
Grafik 3. Perbandingan Avalanche Kunci ....................................................... 28
Grafik 4. Perbandingan Avalanche Kunci ....................................................... 29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR RUMUS
Rumus 1. Ekspansi Kunci Blowfish ................................................................ 16
Rumus 2. Fungsi Feistel ................................................................................... 17
Rumus 3. Running Time .................................................................................. 23
Rumus 4. Avalanche Effect ............................................................................. 23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Pada perkembangan era digital saat ini, keamanan suatu informasi
adalah suatu hal sangat penting. Penyadapan informasi yang rahasia pun
sering terjadi. Sehingga perlu adanya perlindungan pada informasi
tersebut, salah satunya yaitu dengan kriptografi. Kriptografi adalah suatu
penyandian untuk melindungi informasi dengan menggunakan algoritma
tertentu, sehingga informasi yang rahasia dapat terlindungi dari
penyadapan. Kriptografi pada dasarnya terdiri dari dua proses, yaitu proses
dan proses dekripsi. Proses enkripsi adalah proses penyandian pesan
terbuka menjadi pesan yang rahasia atau biasa disebut chipertext.
Chipertext inilah yang nantinya akan dikirimkan melalui saluran terbuka.
Sedangkan proses dekripsi adalah dimana pesan chipertext yang sudah
dikirimkan diubah kembali ke dalam pesan terbuka oleh penerima.
Algoritma kriptografi itu sendiri yang biasa digunakan adalah DES (Data
Encryption Standard), AES (Advance Encryption Standard), Blowfish,
Twofish, 3DES (Triple Data Encryption Standard) dll.
Setiap algoritma mempunyai spesifikasi, karakter yang berbeda dan
mempunyai kelebihan dan kelemahan masing-masing. Pada dasarnya hal
yang penting pada proses enkripsi adalah pada kuncinya, dan penentuan
algoritma yang tepat juga mempengaruhi performansi proses enkripsi.
Sehingga informasi yang ingin dilindungi akan lebih aman. Di sini penulis
ingin mencoba membandingkan unjuk kerja algoritma DES, 3DES, AES ,
Twofish dan Blowfish.
DES termasuk ke dalam sistem kriptografi simetri dan tergolong
jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES
mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan
menggunakan 56 bit kunci internal (internal key) atau lupa-kunci (subkey).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
Kunci internal dibangkitkan dari kunci eksternal (external key) yang
panjangnya 64 bit.
3DES adalah salah satu sistem enkripsi berlapis tiga dari sistem
yang sebelumnya sudah ada, yaitu DES (Data Encryption Standard).
3DES lebih aman dari DES, karena mengalami enkripsi tiga kali. Pada
awalnya, ukuran kunci sandi DES yaitu 56 bit sudah mencukupi pada
saat algoritme ini dibuat. Namun, dengan meningkatnya kemampuan
komputasi, serangan brutal telah mungkin terjadi. Triple DES
menyediakan metode yang sederhana dengan menambah ukuran kunci
DES untuk mencegah serangan tersebut, tanpa memerlukan perancangan
sandi blok (block cipher) yang sama sekali baru.
AES merupakan algoritma cipher yang cukup aman untuk
melindungi data atau informasi yang bersifat rahasia. AES dikeluarkan
oleh National Institute of Standard and Technology (NIST) sebagai
standard algoritma kriptografi untuk menggantikan DES yang sudah tak
dipakai pada tahun 2002 karena tidak bisa mengikuti perkembangan
teknologi infomasi yang cepat.
Blowfish merupakan algoritma kunci simetris blok cipher yang
hadir lebih dulu untuk alternatif menggantikan DES pada tahun 1993 oleh
Bruce Schenier. Kedua algoritma diatas merupakan algoritma kunci
simetri dan merupakan algoritma lanjutan untuk menggantikan DES (Data
Encryption Standard), inilah yang membuat penulis menjadikan
perbandingan kedua algoritma tersebut sebagai topik penelitian.
Twofish merupakan algoritme kriptografi yang beroperasi dalam
mode blok cipher berukuran 128 bit dengan ukuran kunci sebesar 256 bit,
ukuran kunci yang besar ditujukan untuk meniadakan kemungkinan kunci
lemah (weak-key). Algoritme Twofish sendiri merupakan pengembangan
dari algoritme Blowfish. Perancangan Twofish dilakukan dengan
memperhatikan kriteria-kriteria yang diajukan National Institute of
Standards and Technology (NIST) untuk kompetisi Advanced Encryption
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
Standard (AES), tetapi algoritme ini tidak terpilih sebagai basis
standardisasi.
1.2. Rumusan Masalah
Berdasarkan latar belakang yang telah di paparkan, rumusan masalah yang
di dapat penulis adalah :
a. Bagaimana performansi yang dihasilkan algoritma DES, 3DES, AES,
Blowfish dan Twofish dalam melakukan proses enkripsi dan proses
dekripsi pada dokumen ?
1.3. Tujuan Penelitian
Tujuan dari penelitian ini adalah :
a. Mengetahui running time / waktu yang dibutuhkan untuk melakukan
proses enkripsi dan dekripsi pada algoritma DES, 3DES, AES,
Blowfish dan Twofish.
b. Mengetahui avalanche effect / berapa banyak perubahan bit yang
dihasilkan jika pesan atau kunci diubah karakternya.
1.4. Batasan Masalah
Batasan masalah dalam penelitian ini adalah :
a. Algoritma kriptografi yang diuji adalah algoritma DES, 3DES, AES,
Blowfish dan Twofish.
b. Pengujian dilakukan menggunakan Java Cryptography Extention.
c. Tipe data yang digunakan sebagai plaintext adalah berupa dokumen
text.
d. Metrik unjuk kerja yang akan digunakan adalah avalanche effect dan
running time.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
1.5. Manfaat Penelitian
Hasil dari penelitian ini diharapkan dapat digunakan sebagai perbandingan
dalam memilih algoritma untuk melakukan enkripsi pesan sesuai
kebutuhan supaya permormansi lebih efisien.
1.6. Metode Penelitian
Metode yang dilakukan dalam penelitian ini meliputi :
a. Studi pustaka
Membaca referensi buku dan jurnal yang berkaitan dengan teori
kriptografi.
b. Pengumpulan bahan penelitian
Pengumpulan data untuk penelitian menggunakan software dan tools
untuk melakukan penelitian.
c. Pembuatan alat uji
Perancangan system dilakukan untuk menguji parameter unjuk kerja
yang akan dibandingkan.
d. Pengujian
Dalam tahap ini akan dilakukan pengujian untuk mengetahui
performansi algoritma kriptografi dari DES, 3DES, AES, Blowfish
dan Twofish.
e. Analisi hasil pengujian
Dalam tahap ini akan dianalisis performansi algoritma.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
1.7. Sistematika Penulisan
BAB I : PENDAHULUAN
Bab ini berisi penjelasan tentang latar belakang masalah, rumusan
masalah, tujuan penelitian, manfaat penelitian, batasan masalah,
metode penelitian, dan sistematika penulisan
BAB II : LANDASAN TEORI
Bab ini berisi tentang teori tentang Algoritma DES, 3DES, AES,
Blowfish dan Twofish yang digunakan sebagai dasar dalam
mengukur unjuk kerja proses enkripsi dan dekripsi.
BAB III : METODE PENELITIAN
Bab ini berisi tentang data penelitian, alat penelitian, langkah-
langkah pengujian.
BAB IV : HASIL DAN ANALISIS
Bab ini berisi tentang hasil pengujian serta analisis dari hasil data
yang sudah diuji.
BAB V : KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan hasil penelitian dan saran dari
penulis untuk penelitian selanjutnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
BAB II
LANDASAN TEORI
2.1. Kriptografi
Kata kriptografi berasal dari bahasa Yunani, “kryptós” yang berarti
tersembunyi dan “gráphein” yang berarti tulisan. Kriptografi mempunyai
dua bagian penting, yaitu enkripsi dan deskripsi. Enkripsi adalah proses
penyandian dari pesan asli (plaintext) menjadi pesan yang tidak dapat
diartikan (ciphertext). Sedangkan dekripsi sendiri berarti merubah pesan
yang sudah disandikan (ciphertext) menjadi pesan aslinya (plaintext).
Adapun algoritma matematis yang digunakan pada proses enkripsi yakin
disebut cipher dan sistem yang memanfaatkan kriptografi untuk
mengamankan sistem informasi disebut kriptosistem. Pada gambar 1
adalah skema proses enkripsi dan dekripsi.
Gambar 1. Skema proses enkripsi dan dekripsi
Teknik kriptografi untuk enkripsi data ada dua macam yaitu :
2.1.1. Kriptografi simetris
Kriptografi simetris adalah algoritma yang menggunakan kunci
yang sama untuk proses enkripsi dan proses deskripsi. Algoritma
kriptografi simetris dibagi menjadi dua kategori yaitu algoritma aliran
(Stream Ciphers) dan algoritma blok (Block Ciphers). Dimana pada
algoritma aliran, proses penyandiannya akan beriorientasi pada satu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
bit/byte data. Sedangkan pada algoritma blok, proses penyandiannya
berorientasi pada sekumpulan bit/byte data (per blok). Adapun contoh
algoritma kunci simetris adalah DES (Data Encryption Standard),
Blowfish, Twofish, MARS, IDEA, 3DES (DES diaplikasikan 3 kali),
AES (Advanced Encryption Standard) yang bernama asli
Rijndael. Pada gambar 2 merupakan proses kriptografi dengan teknik
simetris.
Gambar 2. Proses kriptografi simetris
2.1.2. Kriptografi Asimetris
Kriptografi asimetris adalah algoritma yang menggunakan kunci yang
berbeda untuk proses enkripsi dan deskripsi. Dimana kunci enkripsi
dapat disebarkan kepada umum dan dinamakan sebagai kunci publik
(public key), sedangkan kunci deskripsi disimpan untuk digunakan
sendiri dan dinamakan sebagai kunci pribadi (private key). Oleh karena
itu, kriptografi ini dikenal pula dengan nama kriptografi kunci publik
(public key cryptography). Adapun contoh algoritma yang
menggunakan kunci asimetris adalah RSA (Riverst Shamir Adleman)
dan ECC (Elliptic Curve Cryptography). Pada gambar 3 adalah proses
kriptografi dengan teknik asimetris.
Gambar 3. Proses Kriptografi asimetris
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
Tujuan dari kriptografi itu sendiri ialah :
a. Kerahasiaan : layanan yang digunakan untuk menjaga isi dari
informasi dari siapapun kecuali yang memiliki otoritas atau kunci
rahasia untuk membuka maupun menghapus informasi yang telah
disandi.
b. Integritas data : berhubungan dengan penjagaan dari perubahan
data secara tidak sah. Untuk menjaga integritas data, sistem harus
memiliki kemampuan untuk mendeteksi manipulasi data oleh
pihak-pihak yang tidak berhak, antara lain penyisipan,
penghapusan dan pensubstitusian data lain kedalam data yang
sebenarnya.
c. Authentifikasi : berhubungan dengan identifikasi atau pengenalan,
baik secara kesatuan sistem maupun informasi itu sendiri. Dua
pihak yang saling berkomunikasi harus saling memperkenalkan
diri. Dimana inforamsi yang dikirimkan melalui kanal harus
diauthentifikasi keaslian, isi datanya, waktu pengiriman dan lain-
lain.
d. Non-repudiasi : usaha untuk mencegah terjadinya penyangkalan
terhadap pengiriman atau terciptanya suatu informasi oleh yang
mengirimkan atau membuat.
2.2. DES (Data Encryption Standard)
Algoritma DES dikembangkan di IBM dibawah kepemimpinan
W.L.Tuchman pada tahun 1972. Algoritma ini telah disetujui oleh
National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh
National Security Agency (NSA) Amerika Serikat. DES termasuk ke
dalam sistem kriptografi simetri dan tergolong jenis cipher blok. DES
beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit
plainteksmenjadi 64 bit cipherteks dengan menggunakan 56 bit kunci
internal (internal key)atau upa-kunci (subkey). Kunci internal
dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2.2.1. Algoritma DES
a. Blok plainteks dipermutasi dengan matriks permutasi awal
initial permutation atau IP).
b. Hasil permutasi awal kemudian di-enciphering- sebanyak 16
kali (16 putaran). Setiap putaran menggunakan kunci
internal yang berbeda.
c. Hasil enciphering kemudian dipermutasi dengan matriks
permutasi balikan (invers initial permutation atau IP -1 )
menjadi blok cipherteks.
Gambar 4. Proses Algoritma DES
Di dalam proses enciphering, blok plainteks terbagi
menjadi dua bagian, kiri (L) dan kanan (R), yang masing-masing
panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16 putaran
DES. Pada setiap putaran i, blok R merupakan masukan untuk
fungsi transformasi yang disebut f. Pada fungsi f, blok R
dikombinasikan dengan kunci internal K i . Keluaran dai 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 :
Ø L i = R i – 1
Ø R i = L i – 1 f(R i – 1 , K i )
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
2.3. 3DES (Triple Data Encryption Standard)
3DES (Triple Data Encryption Standard) merupakan suatu
algoritma pengembangan dari algoritma DES (Data Encryption
Standard). Pada dasarnya algoritma yang digunakan sama, hanya pada
3DES dikembangkan dengan melakukan enkripsi dengan implementasi
algoritma DES sebanyak tiga kali. 3DES memiliki tiga buah kunci yang
berukuran 168-bit (tiga kali kunci 56-bit dari DES). Pada algoritma
3DES dibagi menjadi tiga tahap, setiap tahapnya merupakan
implementasi dari algoritma DES.
Gambar 5. Proses Algoritma Triple DES
2.4. AES (Advance Encrytion Standard)
AES atau bisa juga disebut Rijndael merupakan algoritma kunci
simetris blok cipher yang menggunakan kunci kriptografi 128, 192 dan
256 bit untuk melakukan enkripsi dan dekripsi data pada 128 bit.
Algoritma AES menggunakan sistem permutasi dan substitusi (P-Box dan
S-Box) dan terbagi menjadi tiga jenis, yaitu AES-128, AES-192 dan AES-
256.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Gambar 6. Enkripsi AES
Untuk algoritma AES, panjang kunci cipher, K, adalah 128, 192,
atau 256 bit. Panjang kunci diwakili oleh Nk = 4, 6, atau 8, yang
merupakan jumlah kata 32-bit (jumlah kolom) dalam kunci cipher.
Panjang blok input, blok output dan state adalah 128 bit. Ini diwakili oleh
Nb = 4, yang merupakan jumlah kata 32-bit (jumlah kolom) di state.
Jumlah putaran yang harus dilakukan selama eksekusi algoritma
tergantung pada ukuran kunci. Jumlah putaran diwakili oleh Nr, di mana
Nr = 10 ketika Nk = 4, Nr = 12 ketika Nk = 6, dan Nr = 14 ketika Nk = 8.
untuk lebih jelas bisa lihat tabel 1 dibawah ini.
Gambar 7. Kombinasi Kunci-Blok-Putaran
Dengan panjang kunci 128-bit, maka terdapat = 3,4 x 1038
kemungkinan kunci. Jika digunakan 1 juta komputer yang masing-masing
memiliki kemampuan mencoba 1 juta kunci per detik, maka akan
diperlukan waktu 5,4 trilyun tahun untuk mencoba seluruh kemungkinan
kunci (Yusuf, Kurniawan, 2004).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Algoritma AES mempunyai 3 (tiga) parameter :
a. plainteks adalah array yang berukuran 16-byte, yang berisi data
masukkan.
b. Cipherteks adalah array yang berukuran 16-byte, yang berisi hasil
enkripsi.
c. Kunci adalah array yang berukuran 16-byte, yang berisi kunci cipher
(disebut juga cipher key).
2.4.1. Algoritma AES
Garis besar Algoritma AES yang beroperasi pada blok 128-bit
dengan kunci 128-bit adalah sebagai berikut (di luar proses
pembangkitan round key) :
1. AddRoundKey: melakukan XOR antara state awal (plainteks)
dengan cipher key. Tahap ini disebut juga initial round.
2. Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap
putaran adalah:
a. SubBytes : substitusi byte dengan menggunakan table
substitusi (S-box).
b. ShiftRows : pergeseran baris-baris array state secara
wrapping.
c. MixColumns : mengacak data di masing-masing kolom
array state.
d. AddRoundKey: melakukan XOR antara state sekarang round
key.
3. Final round: proses untuk putaran terakhir:
a. SubBytes
b. ShiftRows
c. AddRoundKey
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Secara umum metode yang digunakan dalam pemrosesan
enkripsi dalam algoritma ini dapat dilihat pada gambar dibawah
ini.
Gambar 8. algoritma AES
- Add Round Key
Pada AddRoundKey disini akan mengkombinasikan
chipertext yang sudah ada dengan chipertext yang chiperkey
dengan hubungan XOR. Operasi XOR akan mengembalikan nilai 1
jika jumlah operan bernilai satu ganjil, jika tidak akan
menghasilkan 0.
Gambar 9. Add Round Key
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
- Sub Bytes
Prinsip dari Sub Bytes adalah menukar isi matriks/tabel yang
ada dengan matriks/tabel lain yang disebut dengan Rijndael S-Box.
Cara pensubstitusian adalah untuk setiap byte pada array state,
misalkan S[r,c] = xy, yang dalam hal ini xy adalah digit
heksadesimal dari nilai S’[r,c], maka nilai substitusinya,
yang dinyatakan dengan S’[r,c], adalah elemen di dalam S-Box
yang merupakan perpotongan baris x dengan kolom y.
Gambar 10. Sub Bytes
- Shift Rows
Pada ShiftRows() melakukan pergerseran wrapping (sikklik)
pada 3 baris terkhir dari array state, baris pertama tidak bergeser.
Jumlah pergeseran bergantung nilai baris (r). Baris r = 1 digeser
sejauh 1 byte, baris r = 2 digeser 2 byte, dan baris r = 3 digeser
sejauh 3 byte. Baris r = 0 tidak digeser.
Gambar 11. Shift Rows
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
- Mix Columns
Pada mix columns tiap elemen dari blok chiper akan dikalikan
dengan tabel matriks mix column. Mengalikan array state dengan
suatu polinom a(x) mod (x8+x4+x3+x+1).
Gambar 12. Mix Column
Proses metode ini berlangsung mulai dari ronde kedua sampai ronde
kesepuluh tetapi pada ronde kesepuluh mix columns tidak dilakukan lagi.
Dan hasil dari add round key lah yang dijadikan sebagai chipertext dari
algoritma AES.
2.5. Blowfish
Blowfish adalah suatu algoritma kriptografi yang beroperasi pada
mode blok. Blowfish menggunakan jaringan Feistel(x) yang terdiri dari 16
putaran dengan data ukuran 64 bit. Panjang kunci yang digunakan
bervariasi dengan panjang kunci maksimal 448 bit. Blowfish
menggunakan subkunci yang besar. Subkunci ini harus dihitung sebelum
proses enkripsi atau dekripsi dilakukan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
2.5.1. Algoritma Blowfish
1. Ekspansi Kunci
Ekspansi kunci adalah proses untuk membangkitkan subkunci
yang langkabnya adalah sebagai berikut :
a. Inisialisasi delapan belas P-array dan kemudian empat buah
S-Box secara berurutan dengan string yang tetap. String ini
terdiri atas digit heksadesimal bilangan pi (x), contoh :
P1 = Ox243f6a88
P2 = Ox85a308d3
P3 = Ox13198a2e
P4 = Ox3707344
b. XOR P1 dengan 32-bit pertama dari kunci, XOR P2 dengan
32-bit kedua dari kunci dan seterusnya untuk setiap bit dari
kunci (mungkin sampai P14). Ulangi terhadap bit kunci
sampai seluruh P-array di-XOR dengan bit kunci.
c. Enkripsi semua string no1 dengan algoritma Blowfish
dengan menggunakan subkunci seperti dijelaskan pada
langkah (I) dan (2).
d. Ganti P1 dan P2 dengan keluaran dari langkah (3).
e. Enkripsi keluaran dari langkah (3) dengan algoritma
Blowfish dengan subkunci yang sudah dimodifikasi.
f. Ganti P3 dan P4 dengan keluaran dari langkah (5).
g. Lanjutkan proses tersebut, ganti seluruh elemen dari P-
array, dengan keluaran yang berubah secara kontinu dari
algoritma Blowfish.
Total iterasi yang diperlukan untuk menghasilkan subkunci
Blowfish ini adalah :
) )
Rumus 1. Ekspansi Kunci Blowfish
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
2. Proses Enkripsi Blowfish
Input proses kripsi merupakan plaintext 64-bit, X. Untuk
mengenkripsi X dilakukan langkah-langkah sebagai berikut :
a. Bagi x menjadi setengah bagian, feistel(x) = 64 bit dibagi 2
maka menjadi 32 bit. Hasil pembagian ini menjadi xL dan xR.
b. xL = xL XOR Pi
xR = F (xL) XOR xR
Tukar xL dan xR
Hentikan pertukaran pada putaran terakhir.
c. xR = xR XOR P17
d. xL = xL XOR P18
e. Menggabungkan kembali xL dan xR
Gambar 13. Struktur Feistel
Fungsi Feistel sebagai berikut :
Bagi xL menjadi empat bagian delapan-bit: a, b, c, dan d
) (( ) )
Rumus 2. Fungsi Feistel
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
Gambar 14. Fungsi Feistel
3. Proses Dekripsi Blowfish
Proses dekripsi pada algoritma ini dilakukan dengan
langkah yang sama dengan enkripsi, kecuali P1,P2,...,P18
digunakan dengan urutan yang terbalik dari proses enkripsi.
2.6. Twofish
Twofish merupakan algoritma kriptografi yang beroperasi dalam
mode blok cipher berukuran 128 bit dengan ukuran kunci sebesar 256 bit,
ukuran kunci yang besar ditujukan untuk meniadakan kemungkinan kunci
lemah (weak-key). Algoritma twofish menggunakan struktur sejenis
Feistel dalam 16 putaran dengan tambahan teknik whitening terhadap
input dan output. Teknik whitening sendiri adalah teknik melakukan
operasi XOR terhadap materi kunci sebelum putaran pertama dan sesudah
putaran akhir. Elemen di luar jaringan feistel normal yang terdapat dalam
algoritma twofish adalah rotasi 1 bit. Proses rotasi ini dapat dipindahkan
ke dalam fungsi F untuk membentuk struktur jaringan Feistel yang murni,
tetapi hal ini membutuhkan tambahan rotasi kata sebelum langkah output
whitening. Twofish memanfaatkan teknik pemanipulasian bit , kotak
permutasi / pemutihan, jaringan feistel, pemutaran ulang dan pergiliran
kunci dengan jumlah perputaran dan pergiliran kunci sebanyak 16 kali ,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
tranformasi pseudo-Hadamard , ekspansi dan filter , dan kotak MDS (Most
Distance Separable).
2.6.1. Algoritma Twofish
Gambar 15. Proses Algoritma Twofish
1. Masukan satu blok plain teks adalah 128 bit. Satu blok tersebut
dibagi menjadi 4 buah subblok yang masing-masing sepanjang 32
bit (A, B, C, dan D).
2. Masing-masing subblok tersebut diputihkan dengan mengxorkan
dengan kunci K0, K1, K2, dan K3.
Langkah-langkah 1 putaran adalah sebagai berikut:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
3. 2 buah 32 bit yang kiri (A dan B) merupakan input dari fungsi g
(yang merupakan bagian dari fungsi f), yang salah satunya (B) di
geser ke kiri sejauh 8 bit dahulu.
4. Fungsi g memiliki 4 buah kotak substitusi yang dibangkitkan oleh
kunci.
5. Keluaran fungsi kotak substitusi dilakukan percampuran linear
menggunakan kotak Most Distance Separable
6. Keluaran fungsi g dimasukkan ke fungsi transformasi pseudo-
Hadamard, kemudian ditambahkan dengan 2 buah 32 bit dari
kunci.
7. Dua buah 32 bit hasil kemudian di xor kandengan C dan D. Hasil
xor dengan C digeser ke kanan sejauh 1 bit. Dan untuk D sebelum
dixorkan digeser ke kiri sejauh 1 bit.
8. 2 buah 32 bit kiri dan kanan dipertukarkan (A dan B dipertukarkan
dengan C dan D).
1. Langkah diatas dilakukan hingga 16 kali putaran.
Kemudian langkah-langkah selanjutnya :
9. Hasil keluaran setelah diputar 16 kali, ditukar lagi (A dan B
dipertukarkan dengan C dan D).
10. Hasil dari pertukaran tersebut di xorkan dengan empat buah 32 bit
dari kunci menghasilkan cipher teks.
Fungsi F
Fungsi F adalah permutasi yang bergantung pada kunci dengan
nilai 64 bit. Fungsi ini menerima 3 argumen, dua buah 32 bit
R0 dan R1, dan nomor putaran untuk menentukan subkunci
mana yang dipakai. R0 akan diserahkan ke fungsi g yang akan
mengembalikan T0. R1 akan digeser sejauh 8 bit yang
kemudian di berikan juga ke fungsi g yang akan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
mengembalikan T1. Hasil T0 danT1 kemudian dikombinasikan
ulang menggunakan transformasi pseudo-Hadamard, yang
kemudian ditambahkan dengan dua buah 32 bit dari kunci.
T0 = g(R0);
T1 = g (shift Left (R1,8));
F0 = (T0+T1+K2r+8) mod 232;
F1 = (T0+2T1+K2r+9) mod 232;
F0 dan F1 adalah hasil dari F, yang masing-masing sepanjang
32 bit. Hasil keluaran ini nantinya akan dipertukarkan dan
dimasukkan kembali ke putaran selanjutnya.
Fungsi G
Fungsi g merupakan jantung dari keseluruhan algoritma
twofish. 32 bit masukan X dari fungsi F dipecah menajdi 4
buah yang masing-masing sepanjang 8 bit. Setiap 8 bit
kemudian diproses dengan kotak S yang bersesuaian. Setiap
kotak S bersifat bijektif, yaitu menerima 8 bit dan
mengeluarkan 8 bit pula. 4 buah 8 bit hasil keluaran kemudian
dikalikan dengan matriks Most Distance Separable (MDS) 4x4.
Hasil pengalian kemudian diartikan sebagai 32 bit, yang
merupakan keluaran dari fungsi g, yang kemudian akan
dikembalikan kembali ke fungsi F. Matriks MDS yang setiap
elemennya ditampilkan sebagai heksadesimal.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
BAB III
METODE PENELITIAN
3.1. Alat Penelitian
3.1.1. Hardware
- Prosessor AMD 9-9420 Radeon R5, 5 Compute Cores 3 GHz
- RAM 4,00 GB
3.1.2. Software
- Java Cryptogaphy Encrytion dari JDK (Java Development Kit) 64 bit.
- NetBeans IDE 8.2
- System Operation Windows 10, 64 bit
3.2. Pembuatan Alat Uji
1. Studi Literatur
Studi pustaka dilakukan dengan membaca jurnal yang berkaitan dengan
enkripsi dan dekripsi dari algoritma DES, 3DES, AES, Blowfish dan
Twofish. Dan Java Encryption Extention.
2. Pengumpulan Bahan Penelitian
Analisis kelas java, java collection dan struktur data yang dibutuhkan
untuk mengimplementasikan nilai parameter pengujian dengan Java
Cryptography Extention.
3. Implementasi
Implementasi dari kelas java, java collection dan truktur data yang sudah
dianalisis menggunakan Java Cryptography Extention.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
3.3. Parameter Unjuk Kerja
Dalam penelitian ini, untuk mengevaluasi unjuk kerja algoritma AES dan
Blowfish adalah dengan matrik unjuk kerja sebagai berikut :
a. Running Time
Running Time adalah waktu yang dibutuhkan oleh sebuah algoritma
untuk menyelesaikan proses enkripsi maupun dekripsi. Running Time
dihitung mulai dari algoritma dimulai sampai algoritma berhenti.
– )
Rumus 3. Running Time
waktu akhir = waktu yang diambil dari akhir proses enkripsi atau
dekripsi.
waktu awal = waktu yang diambil sebelum melakukan enkripsi atau
dekripsi.
b. Avalanche Effect
Avalanche effect adalah salah satu karakteristik yang menjadi acuan
untuk menentukan baik atau tidaknya sebuah algoritma kriptografi yaitu
perubahan sebuah bit pada plaintext atau kunci yang dapat
menghasilkan perubahan beberapa bit dari ciphertext.
Rumus 4. Avalanche effect
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
3.4. Desain Alat Uji
1. Flowchart Running Time Enkripsi
2. Flowchart Running Time Dekripsi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
3. Flowchart Avalanche Effect
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
BAB IV
PENGUJIAN DAN ANALISIS
Untuk melakukan evaluasi terhadap unjuk kerja algoritma DES, 3DES, AES,
Blowfish dan Twofish, maka dilakukan pengujian dengan menggunakan rancangan
skenario yang sudah dijelaskan pada Bab III, Data diperoleh dari output yang
dihasilkan ketika sistem berlangsung dan kemudian menjadi bahan untuk
dilakukan analisis. Setelah melakukan pengujian program enkripsi dan dekripsi
maka didapatkan hasil sebagai berikut :
4.1. Hasil Pengujian Sistem
4.1.1. Perbandingan Running Time proses enkripsi.
Grafik 1. Perbandingan Runtime Enkripsi
Pada grafik 1 menunjukkan perbandingan running time saat melakukan enkripsi
data. algoritma twofish dapat melakukan proses enkripsi lebih cepat dari algoritma
15
49
20
00
15
80
18
77
22
5 27
67
41
13
20
85
23
85
23
00
41
21
73
67
28
32
31
64
24
41
0
1000
2000
3000
4000
5000
6000
7000
8000
DES TDES AES BLOWFISH TWOFISH
ENKRIPSI
1 MB
25 MB
50 MB
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
lainnya pada size dokumen 1MB yaitu 225ms. Sedangkan pada algoritma lainnya
mendapat waktu diatas 1000ms. 3DES pada size 50MB mencatat waktu paling
lama dari yang lain yaitu mencapai 7367 ms.
4.1.2. Perbandingan Running Time proses dekripsi
Grafik 2. Perbandingan Runtime Dekripsi
Pada grafik 2 menunjukkan perbandingan running time saat melakukan dekripsi
data. Waktu yang dibutuhkan untuk melakukan dekripsi tidak terlalu berbeda dari
enkripsi, karena algoritma diatas menggunakan kunci simetris. Algoritma twofish
mendapat waktu paling cepat pada ukuran 1MB yaitu 465ms. Dan 3DES
membutuhkan waktu yang lebih lama dari algoritma lainnya.
16
81
21
00
19
71
18
57
46
5 27
20
48
33
20
67
21
65
24
40
42
38
70
60
22
19
29
72
23
74
0
1000
2000
3000
4000
5000
6000
7000
8000
DES TDES AES BF TF
DEKRIPSI
1 MB
25 MB
50 MB
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
4.1.3. Perbandingan Avalanche kunci.
Grafik 3. Perbandingan Avalanche Kunci
Avalanche Kunci
DES TDES AES BLOWFISH TWOFISH
Variasi 1 huruf 30,55 32,87 35,18 36,11 33,33
Variasi 2 huruf 35,64 36,57 40,74 31,01 32,87
Variasi 3 huruf 30,09 35,18 31,94 30,55 30,55
variasi DES TDES AES BLOWFISH TWOFISH
1 huruf 66/216 71/216 76/216 78/216 72/216
2 huruf 77/216 79/216 88/216 67/216 71/216
3 huruf 65/216 76/216 69/216 66/216 66/216
pesan key Variasi Key
Advensius Putra MyKey
MyKee MyKit MyHop Tabel 1. Avalanche Effect Kunci
Pada tabel 1. Menunjukkan perbandingan avalanche effect dari kunci. Pada variasi
1 huruf, algoritma Blowfish menghasilkan avalanche paling besar yaitu 36,11%
dengan perubahan bit 78 dari total bit 216. Pada variasi 2 huruf algoritma AES
menghasilkan avalanche paling besar yaitu 40,74% dengan perubahan bit 88 dari
216 bit. Pada variasi 3 huruf algoritma 3DES menghasilkan avalache paling besar
yaitu 35,18% dengan perubahan bit 76 dari 216 bit. Namun jika dirata-rata dari
30
,55
32
,87
35
,18
36
,11
33
,33
35
,64
36
,57
40
,74
31
,01
32
,87
30
,09
35
,18
31
,94
30
,55
30
,55
0
5
10
15
20
25
30
35
40
45
DES TDES AES BLOWFISH TWOFISH
Pe
rse
nta
se (
%)
Avalanche Kunci
Variasi 1 huruf
Variasi 2 huruf
Variasi 3 huruf
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
semua variasi kunci yang ada, algoritma AES mendapatkan avalache yang paling
besar yaitu 35,9%.
4.1.4. Perbandingan Avalanche pesan.
Grafik 4. Perbandingan Avalanche Pesan
Avalanche Pesan
DES TDES AES BLOWFISH TWOFISH
Variasi 1 huruf 15,27 19,9 34,72 17,59 30,55
Variasi 2 huruf 12,96 15,74 34,25 17,59 28,7
Variasi 3 huruf 16,66 18,05 32,4 19,44 24,07
variasi DES TDES AES BLOWFISH TWOFISH
1 huruf 33/216 43/216 75/216 38/216 66/216
2 huruf 28/216 34/216 74/216 38/216 62/216
3 huruf 36/216 39/216 70/216 42/216 52/216
key Pesan Variasi Pesan
MyKey Advensius Putra
Advensius Putri
Advensius Putlo
Advensius Punce
Tabel 2. Avalanche Effect Pesan
15
,27
19
,9
34
,72
17
,59
30
,55
12
,96
15
,74
34
,25
17
,59
28
,7
16
,66
18
,05
32
,4
19
,44
24
,07
0
5
10
15
20
25
30
35
40
DES TDES AES BLOWFISH TWOFISH
Pe
rse
nta
se (
%)
Avalanche Pesan
Variasi 1 huruf
Variasi 2 huruf
Variasi 3 huruf
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
Pada tabel 2. Menunjukkan perbandingan avalanche effect dari pesan. Pada
variasi 1 huruf, algoritma AES menghasilkan avalanche paling besar yaitu 34,72%
dengan perubahan bit 75 dari total bit 216. Pada variasi 2 huruf algoritma AES
menghasilkan avalanche paling besar yaitu 34,25% dengan perubahan bit 74 dari
216 bit. Pada variasi 3 huruf algoritma AES menghasilkan avalache paling besar
yaitu 32,4% dengan perubahan bit 70 dari 216 bit. Pada avalanche pesan
perbandingan algoritma AES dengan yang lainnya sangatlah besar.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
BAB V
KESIMPULAN DAN SARAN
5.1 KESIMPULAN
Setelah dilakukan anailis oleh penulis, didapat kesimpulan bahwa semakin
besar ukuran data yang akan dienkripsi maka running time akan semakin lama.
Perubahan bit kunci sangat mempengaruhi isi cipherteks, sehingga avalanche
yang dihasilkan oleh perubahan kunci dapat mengakibatkan perubahan bit yang
besar. Pada avalanche kunci bit yang terjadi jika salah satu hurufnya lebih besar
dari avalanche pesan, penulis menyimpulkan bahwa variasi dari kunci lebih
berpengaruh dari perubahan bit dari ciphertext daripada variasi dari pesan, karena
pengacakan data pesan diacak berdasarkan ekspansi kuncinya. Dan untuk hasil
pengujian kali ini algoritma AES lebih baik dari algoritma lainnya dari semua
parameter unjuk kerja yang di ujikan. AES memiliki persentase lebih besar untuk
avalanche effect dari algoritma lainnya.
5.2 SARAN
Untuk algoritma DES penyandian sangat sederhana dan pola dapat diukur
dengan komputer modern, sedangkan algoritma 3DES membutuhkan waktu yang
lama dalam melakukan enkripsi. Penulis menyarankan untuk menggunakan
algoritma enkripsi yang sudah diperbarui dan dapat digunakan sesuai kebutuhan
kita dalam mengamankan data. AES dan Blowfish sama-sama baik dalam metode
penyandian. Semoga untuk penelitian selanjutnya dapat memberikan
perbandingan unjuk kerja dari semua algoritma kriptografi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
DAFTAR PUSTAKA
[1] https://id.wikipedia.org/wiki/Kriptografi
[2] Munir, Rinaldi., “ Bahan Kuliah IF3058 Kriptografi.”, Program Studi Informatika, Institut
Teknologi Bandung, 2009.
[3] Riyanto, M.Zaki., “Mengenal Kriptografi : Ilmu Pengamanan Rahasia Berbasis Matematika”,
Prodi Matematika, Universitas Islam Negri Sunan Kalijaga, Yogyakarta, 2018.
[4] National Institute of Standards and Technology, Data Encryption Standard, FIPS PUB 46-3,
U.S. Department of Commerce, October1999.
[5] Charles H. Bennett, Gilles Brassard, \Quantum Cryptography: Pu-blic Key Distribution and
Coin Tossing," International Conference on Computers, Systems and Signal Processing, 1984.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
LAMPIRAN
1. Code DES
Generate key DES
public class GenerateKeyDES {
static Key generateKey(String kunciEnkripsi) throws Exception {
Key key = new SecretKeySpec(KonversiByte.konversiKeByte(kunciEnkripsi),
"DES");
return key;
}
static class KonversiByte {
static byte[] konversiKeByte(String kunci) {
byte[] array_byte = new byte[8];
int i = 0;
while (i < kunci.length()) {
array_byte[i] = (byte) kunci.charAt(i);
i++;
}
if (i < 8) {
while (i < 8) {
array_byte[i] = (byte) i;
i++;
}
}
return array_byte;
}
}
}
Enkripsi DES
public class EncryptDES {
public static String encryptDES(String Data, String kunciEnkripsi)
throws Exception {
Cipher c = Cipher.getInstance("DES");
Key key = GenerateKeyDES.generateKey(kunciEnkripsi);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes("UTF-8"));
String encryptedValue = DatatypeConverter.printBase64Binary(encVal);
return encryptedValue;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
Dekripsi DES
public class DecryptDES {
public static String decryptDES(String encryptedData, String kunciEnkripsi)
throws Exception {
Cipher c = Cipher.getInstance("DES");
Key key = GenerateKeyDES.generateKey(kunciEnkripsi);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = DatatypeConverter.parseBase64Binary(encryptedData);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
}
}
2. Code 3DES
Generate key 3DES
public class GenerateKeyDESede {
static Key generateKey(String kunciEnkripsi) throws Exception {
Key key = new SecretKeySpec(KonversiByte.konversiKeByte(kunciEnkripsi),
"DESede");
return key;
}
static class KonversiByte {
static byte[] konversiKeByte(String kunci) {
byte[] array_byte = new byte[24];
int i = 0;
while (i < kunci.length()) {
array_byte[i] = (byte) kunci.charAt(i);
i++;
}
if (i < 24) {
while (i < 24) {
array_byte[i] = (byte) i;
i++;
}
}
return array_byte;
}
}
}
Enkripsi 3DES
public class EncryptDESede {
public static String encryptDESede(String Data, String kunciEnkripsi)
throws Exception {
Cipher c = Cipher.getInstance("DESede");
Key key = GenerateKeyDESede.generateKey(kunciEnkripsi);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes("UTF-8"));
String encryptedValue = DatatypeConverter.printBase64Binary(encVal);
return encryptedValue;
}
}
Dekripsi 3DES
public class DecryptDESede {
public static String decryptDESede(String encryptedData, String kunciEnkripsi)
throws Exception {
Cipher c = Cipher.getInstance("DESede");
Key key = GenerateKeyDESede.generateKey(kunciEnkripsi);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = DatatypeConverter.parseBase64Binary(encryptedData);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
}
}
3. Code AES
Generate key AES
public class GenerateKeyAES {
static Key generateKey(String kunciEnkripsi) throws Exception {
Key key = new SecretKeySpec(KonversiByte.konversiKeByte(kunciEnkripsi),
"AES");
return key;
}
static class KonversiByte {
static byte[] konversiKeByte(String kunci) {
byte[] array_byte = new byte[16];
int i = 0;
while (i < kunci.length()) {
array_byte[i] = (byte) kunci.charAt(i);
i++;
}
if (i < 16) {
while (i < 16) {
array_byte[i] = (byte) i;
i++;
}
}
return array_byte;
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
Enkripsi AES
public class EncryptAES {
public static String encryptAES(String Data, String kunciEnkripsi)
throws Exception {
Cipher c = Cipher.getInstance("AES");
Key key = GenerateKeyAES.generateKey(kunciEnkripsi);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes("UTF-8"));
String encryptedValue = DatatypeConverter.printBase64Binary(encVal);
return encryptedValue;
}
}
Dekripsi AES
public class DecryptAES {
public static String decryptAES(String encryptedData, String kunciEnkripsi)
throws Exception {
Cipher c = Cipher.getInstance("AES");
Key key = GenerateKeyAES.generateKey(kunciEnkripsi);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = DatatypeConverter.parseBase64Binary(encryptedData);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
}
}
4. Code Blowfish
Generate key Blowfish
public class GenerateKeyBlowfish {
static Key generateKey(String kunciEnkripsi) throws Exception {
Key key = new SecretKeySpec(KonversiByte.konversiKeByte(kunciEnkripsi),
"Blowfish");
return key;
}
static class KonversiByte {
static byte[] konversiKeByte(String kunci) {
byte[] array_byte = new byte[16];
int i = 0;
while (i < kunci.length()) {
array_byte[i] = (byte) kunci.charAt(i);
i++;
}
if (i < 16) {
while (i < 16) {
array_byte[i] = (byte) i;
i++;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
return array_byte;
}
}
}
Enkripsi Blowfish
public class EncryptBlowFish {
public static String encryptBlowfish(String Data, String kunciEnkripsi)
throws Exception {
Cipher c = Cipher.getInstance("Blowfish");
Key key = GenerateKeyBlowfish.generateKey(kunciEnkripsi);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes("UTF-8"));
String encryptedValue = DatatypeConverter.printBase64Binary(encVal);
return encryptedValue;
}
}
Dekripsi Blowfish
public class DecryptBlowFish {
public static String decryptBlowfish(String encryptedData, String kunciEnkripsi)
throws Exception {
Cipher c = Cipher.getInstance("Blowfish");
Key key = GenerateKeyBlowfish.generateKey(kunciEnkripsi);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = DatatypeConverter.parseBase64Binary(encryptedData);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
}
}
5. CodeTwofish
Generate key Twofish
public class GenerateKeyTwofish {
static class KonversiByte {
static byte[] konversiKeByte(String kunci) {
byte[] array_byte = new byte[16];
int i = 0;
while (i < kunci.length()) {
array_byte[i] = (byte) kunci.charAt(i);
i++;
}
if (i < 16) {
while (i < 16) {
array_byte[i] = (byte) i;
i++;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
return array_byte;
}
}
}
Enkripsi Twofish
public class EncryptTwofish {
public static String encryptTwofish(String cookieValue, String key) throws
InvalidKeyException, UnsupportedEncodingException {
byte[] plainText;
byte[] encryptedText;
Twofish twofish = new Twofish();
// ekspansi kunci
Object keyObject = twofish.makeKey(konversiKeByte(key), 16);
//membuat ukuran blok dengan 16 byte
if ((cookieValue.length() % 16) != 0) {
while ((cookieValue.length() % 16) != 0) {
cookieValue += " ";
}
}
// inisialisasi plainteks/ciphertext
plainText = cookieValue.getBytes("UTF-8");
encryptedText = new byte[cookieValue.length()];
// proses enkripsi
for (int i = 0; i < Array.getLength(plainText); i += 16) {
twofish.encrypt(plainText, i, encryptedText, i, keyObject, 16);
}
String encryptedString = DatatypeConverter.printBase64Binary(encryptedText);
return encryptedString;
}
}
Dekripsi Twofish
public class DecryptTwofish {
public static String decryptTwofish(String cookieValue, String key) throws
InvalidKeyException, UnsupportedEncodingException {
byte[] encryptedText;
byte[] decryptedText;
Twofish twofish = new Twofish();
//ekpansi kunci
Object keyObject = twofish.makeKey(konversiKeByte(key), 16);
//panjang ukuran blok
if ((cookieValue.length() % 16) != 0) {
while ((cookieValue.length() % 16) != 0) {
cookieValue += " ";
}
}
//inisialisasi array plainteks/ciphertext
encryptedText = DatatypeConverter.parseBase64Binary(cookieValue);
decryptedText = new byte[cookieValue.length()];
//iterasi
for (int i = 0; i < Array.getLength(encryptedText); i += 16) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
twofish.decrypt(encryptedText, i, decryptedText, i, keyObject, 16);
}
String decryptedString = new String(decryptedText, "UTF-8");
return decryptedString;
}
}
6. Code Avalanche Effect
Konversi Biner
public class KonversiBiner {
public static String toBinary(String s) {
String temp = s;
byte[] bytes = s.getBytes();
for (byte b : bytes) {
}
StringBuilder binary = new StringBuilder();
for (byte b : bytes) {
int val = b;
for (int i = 0; i < 8; i++) {
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
binary.append(' ');
}
return binary.toString();
}
}
Hamming Distance
public class HammingDistance {
public static int hamDist (String str1, String str2) {
int i = 0, count = 0;
while (i < str1.length()) {
if (str1.charAt(i) != str2.charAt(i)) {
count++;
}
i++;
}
return count;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI