i
TUGAS AKHIR
SIMULASI ENKRIPSI DAN DEKRIPSI BERBASIS
ALGORITMA BLOWFISH
Diajukan untuk memenuhi salah syarat
Memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Jurusan Teknik Elektro
Fakultas Sains dan Teknologi Universitas Sanata Dharma
ANTONIUS BAYU ARIYANTO
NIM : 045114059
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
ii
FINAL PROJECT
ENCRYPTION AND DECRYPTION SIMULATION
BASED ON BLOWFISH ALGORITHM
In partial fulfilment of the requirements
For the degree of Sarjana Teknik
Electrical Engineering Study Program
Electrical Engineering Departement
Science and Technology Faculty Sanata Dharma University
ANTONIUS BAYU ARIYANTO
NIM : 045114059
ELECTRICAL ENGINEERING STUDY PROGRAM
ELECTRICAL ENGINEERING DEPARTMENT
SCIENCE AND TECHNOLOGY FACULTY
SANATA DHARMA UNIVERSITY
vi
HALAMAN MOTTO
Setiap orang bisa memulai
Tetapi hanya yang bertindak teruslah
Mencapai akhir.
Walau perjuangan akhir bukanlah
Mencapai garis batas, tetapi
Menyelesaikan
yang tidak terbatas.
Hidup adalah perjuangan, dimana tidak
Ada kata mundur untuk sesuatu yang
Telah diputuskan dan kalah bukanlah pilihan.
Bila hari ini ada yang pergi
vii
INTISARI
Kriptogafi adalah sebuah seni dan bidang keilmuan dalam penyandian informasi atau
pesan dengan tujuan menjaga keamanannya. Salah satu jenis kriptografi adalah kriptografi
Blowfish. Kriptografi Blowfish merupakan metode enkripsi dekripsi 64-bit yang mirip
dengan DES (Des Like Cipher) dan diciptakan oleh Bruce. Blowfish dikembangkan untuk
memenuhi kriteria desain yang cepat, kompak, sederhana dan aman.
Program dibuat dengan algoritma Blowfish terdiri dari tiga proses, yaitu subkunci,
proses enkripsi (penyandian dari plaintext ke ciphertext), proses dekripsi (penyandian dari
ciphertext ke plaintext). Proses subkunci, pesan asli di-XOR-kan dengan PBox yang telah
diinisialisasi kemudian dilakukan modifikasi dengan masukan string 0. Pada proses enkripsi
pesan asli dikenakan jaringan feistel dan diputar sebanyak 15 kali putaran, sedangkan untuk
proses dekripsi kebalikan dari proses enkripsi yang juga dikenakan jaringan feistel dan
diputar sebanyak 16 kali putaran.
Dari hasil perancangan dan pengamatan menunjukkan program penyandi enkripsi dan
dekripsi dengan algoritma Blowfish berhasil menyandikan data 64 bit dan program algoritma
Blowfish mampu menampilkan pesan asli dan pesan yang telah disandikan.
viii
ABSTRACT
Cryptography is an art an subject knowledge in information coding or messages with
purpose to keep it’s security. Kind of cryptography is Blowfish cryptography. Blowfish
cryptography is 64-bit description encryption metod whichis like with DES ( Des Like
Chiper) and created by Bruce Sheiner. Blowfish develop for fulfil design criteria with is fast,
compact, simple and secure.
This program made by Blowfish algorithm consist of three is subkey, procces is
encryption (coding from plaintext to chipertext), procces is decryption (coding from
chipertext to plaintext). At the subkey procces, original messages is XOR-ed by PBox which
was inisialed then it is modified by entering zero 0 string. There is feistel network at original
message in encryption procces and 15 times turned, description procces is the opponent of
encryptionwith is also use feistel network and turned 16 times.
From design result and observation are show that encryption decryption coding
program with Blowfish algorithm are success to code 64 data and Blowfish algorithm
program is able to show original messages and coded messages.
x
KATA PENGANTAR
Puji dan syukur kepada Tuhan Yang Maha Esa atas karunia dan rahmat sehingga
penulis dapat menyelesaikan tugas akhir yang berjudul Simulasi Enkripsi dan Dekripsi
berbasis algoritma Blowfish. Tugas akhir ini disusun guna memenuhi salah satu persyaratan
untuk memperoleh salah satu gelar sarjana Sains dan Teknologi di jurusan Teknik Elektro,
Universitas Sanata Dharma.
Penyusunan tugas akhir ini tidak terlapas dari bantuan, bimbingan serta dukungan dari
berbagai pihak yang sangat bermanfaat bagi penulis. Maka pada kesempatan ini penulis
mengucapkan terima kasih yang sebesar-besarnya kepada:
1.
Ibu Wiwien Widyastuti, S.T, M.T. selaku dosen pembimbing yang telah meluangkan
waktu untuk memberikan bimbingan dan pengarahan selama penyusunan tugas akhir.
2.
Para dosen Universitas Sanata Dharma khususnya dosen program studi Teknik
Elektro yang telah memberikan bekal kepada penulis.
3.
Para dosen penguji yang telah memberikan saran dan masukan yang berguna bagi
kesempurnaan tugas akhir ini.
4.
Para karyawan dan staff fakultas Sains dan Teknologi (mas Trie, mas Gito, dan
khusnya pak Jito), atas bantuannya.
5.
Bapak, Ibu, kakak, adikku dan kekasihku Angger yang telah memberikan perhatian,
kasih sayang dan dukungan yang besar kepada penulis.
6.
Teman-teman Teknik Elektro angkatan 04 atas dukungannya, khususnya Sumin, Putra
xii
DAFTAR ISI
Halaman Sampul ( Bahasa Indonesia) ... i
Halaman Sampul ( Bahasa Inggris) ... ii
Halaman Persetujuan Tugas Akhir ... iii
Halaman Pengesahan Penguji ... iv
Pernyataan Keaslian Karya ... v
Halaman Motto ... vi
Intisari ... vii
Abstract ... viii
Publikasi Karya Ilmiah ... ix
Kata Pengantar ... x
Daftar isi... xii
Daftar Gambar ... xv
Daftar Tabel ... xvii
BAB I:PENDAHULUAN
1.1.Judul ... 1
1.2.Latar Belakang ... 1
1.3.Tujuan dan Manfaat ... 2
1.4.Batasan Masalah ... 2
xiii
BAB II:DASAR TEORI
2.1.Pengertian dan Konsep Dasar Kriptografi ... 4
2.2.Klasifikasi Kriptografi ... 7
2.2.1.Kriptografi Berdasarkan Proses Enkripsi dan Dekripsi ... 7
2.2.2.Kriptografi Berdasarkan Jumlah Kunci yang Digunakan ... 8
2.2.2.1.Kriptografi Simetrik ... 8
2.2.2.2.Kriptografi Asimetrik ... 11
2.2.3.Kriptografi Berdasarkan Teknik Pembentukan Ciphertext ... 12
2.2.3.1.Blok Cipher ... 12
2.2.3.2.Cipher Aliran ... 13
2.3.Algoritma Kriptografi Blowfish ... 14
2.3.1.Prinsip Perancangan Algoritma Blowfish 64-Bit ... 15
2.3.1.1.Proses Pembangkit Subkunci ... 15
2.3.1.2.Proses Enkripsi Data ... 16
2.3.1.3.Proses Dekripsi Data ... 16
2.3.1.4.Kotak-S ... 17
2.3.1.5.Jaringan Feistel ... 18
2.4.Mengenal Visual Basic ... 20
2.4.1.Pengenalan IDE (Integrated Development Environment) ... 20
2.4.2.1.Title Bar ... 21
2.4.2.2.Menu Bar ... 21
2.4.2.3.Tool Bar ... 22
2.4.2.4.Tool Box ... 22
xiv
2.4.2.6.Propertis Window ... 23
2.4.2.7.Form Layout Window ... 24
2.4.2.8.Form ... 24
2.4.2.9.Form Code ... 25
BAB III:PERANCANGAN ALGORITMA BLOWFISH
3.1.Diagram Alir Pembangkit Subkunci ... 26
3.2.Diagram Alir Enkripsi Data ... 31
3.3.Diagram Alir Dekripsi Data ... 33
3.4.Tampilan Program ... 34
3.4.1.Tampilan Blok Menu ... 34
3.4.2.Tampilan Simulasi Enkripsi dan Dekripsi ... 35
BAB IV: PEMBAHASAN ... 39
4.1.Proses Penyandiaan Blowfish ... 39
4.2.Analisa dan Pembahasan Algoritma ... 49
4.2.1.Analisa Hasil Perangkat Lunak ... 52
4.2.1.1.Kelebihan ... 52
4.2.1.2.Kekurangan ... 52
BAB V: KESIMPULAN DAN SARAN ... 53
5.1. Kesimpulan ... 53
5.2.Saran ... 53
DAFTAR PUSTAKA ... 53
xv
DAFTAR GAMBAR
Gambar 2.1.Konsep Dasar Sistem Kriptografi ... 5
Gambar 2.2.Kriptosistem Simetrik ... 8
Gambar 2.3.Model Sistem Kriptografi Konvensional ... 9
Gambar 2.4.Model Sistem Kriptografi kunci Publik ... 12
Gambar 2.5.Enkripsi Blok Cipher ... 13
Gambar 2.6.Enkripsi Cipher Aliran ... 14
Gambar 2.7.Satu Putaran dalam Jaringan Feistel ... 19
Gambar 2.8.Dialog Box ... 20
Gambar 2.9.Tampilan IDE Visual Basic ... 21
Gambar 2.10.Tampilan title bar dan menu bar ... 22
Gambar 2.11.Tampilan Tool bar ... 22
Gambar 2.12.Tampilan Tool Box ... 22
Gambar 2.13.Tampilan Project Explorer ... 23
Gambar 2.14.Properties Window ... 23
Gambar 2.15.Form Layout Window ... 24
Gambar 3.16.Form ... 25
Gambar 3.17.Form Code ... 25
Gambar 3.1.Diagaram Alir Utama Blowfish ... 26
Gambar 3.2.Diagram Alir Subkunci ... 27
Gambar 3.3.Diagram Alir Proses Padding ... 28
xvi
Gambar 3.5.Diagram Alir Modifikasi PBox dan SBox ... 30
Gambar 3.6.Diagram Alir Proses Enkripsi ... 31
Gambar 3.7.Diagram Alir Proses Dekripsi ... 33
Gambar 3.8.Blok Alur Enkripsi dan Dekripsi Algoritma Blowfish ... 34
Gambar 3.9.Tampilan Simulasi Enkripsi Dekripsi Blowfish ... 35
Gambar 3.10. Tampilan Langkah2 XOR semua PBox dengan Key ... 36
Gambar 3.11.Tampilan Langkah3 Modifikasi PBox dan SBox ... 36
Gambar 3.12.Tampilan Proses Enkripsi ... 37
Gambar 3.13.Tampilan Proses Dekripsi ... 37
Gambar 4.1.Tampilan Simulasi Enkripsi dan Dekripsi ... 40
Gambar 4.2.Tampilan Mengisi Data di Textbox Plaintext dan texbox Key ... 41
Gambar 4.3.Tampilan Inisialisasi PBox dan SBox ... 42
Gambar 4.4.Tampilan Hasil Key yang di-XOR-kan denga PBox ... 43
Gambar 4.5.Tampilan Hasil Modifikasi Enkripsi dengan Input string0 ... 44
Gambar 4.6.Tampilan Hasil Enkripsi pada From Progrees ... 44
Gambar 4.7.Tampilan Hasil Enkripsi pada From Utama ... 45
Gambar 4.8. Tampilan Inisialisasi PBox dan SBox ... 46
Gambar 4.9. Tampilan Hasil Key yang di-XOR-kan denga PBox ... 47
Gambar 4.10. Tampilan Hasil Modifikasi Enkripsi dengan Input string0 ... 48
Gambar 4.11. .Tampilan Hasil Dekripsi pada From Progrees ... 48
xvii
DAFTAR TABEL
Tabel 2.1.Contoh Subsitusi Ceaser Cipher ... 8
Tabel 4.1.PBox yang telah di-XOR-kan dengan Kunci ... 50
PENDAHULUAN
1.1 Judul
Simulasi Enkripsi dan Dekripsi berbasis Algoritma Blowfish.
1.2 Latar Belakang
Perkembangan dunia telekomunikasi yang sangat pesat saat ini membawa pertumbuhan
dunia ke dalam masa teknologi informasi yang lebih berkembang. Sebagai contoh
penggunaan komputer digital, karena itulah nilai informasi saat ini sangat penting. Teknologi
informasi yang telah terjalin saat ini berdiri di atas media komunikasi sebagai media
transmisi informasi dari suatu tempat ke tempat lainnya. Informasi-informasi yang ingin
disampaikan melalui media komunikasi. Media komunikasi yang banyak digunakan tentu
harus merupakan media yang mudah dijangkau dan digunakan oleh semua orang. Contoh
media komunikasi yang saat ini sering digunakan adalah telepon dan jaringan internet.
Pengaksesan media komunikasi yang sangat mudah oleh semua orang membawa
dampak bagi keamanan informasi atau pesan yang menggunakan media komunikasi
tersebut[1]. Informasi menjadi sangat rentan untuk diketahui, diambil, dan dimanipulasi oleh
pihak-pihak yang tidak berkepentingan. Karena itulah dibutuhkan suatu metode yang dapat
menjaga kerahasiaan informasi ini. Metode yang dapat menjaga kerahasian informasi tersebut
adalah kriptografi. Kriptografi adalah sebuah seni dan bidang keilmuan dalam penyandian
informasi atau pesan dengan tujuan menjaga keamanannya[2]. Walaupun telah berkembang
sejak dulu, teknik kriptografi harus menyesuaikan diri
terhadap meluasnya penggunaan komputer digital
pada masa kini. Penggunaan komputer
digital mendorong berkembangnya kriptografi modern yang beroperasi dalam mode bit
daripada dalam mode karakter.
Blowfish merupakan kriptografi modern. Proses enkripsi dan dekripsi Blowfish
termasuk dalam golongan kriptosistem simetrik [3], yang berarti menggunakan kunci yang
sama untuk melakukan enkripsi dan dekripsi. Kelebihan Blowfish adalah menggunakan
operasi sederhana yaitu penambahan (addition), XOR, dan penelusuran tabel array [4].
1.3 Tujuan dan Manfaat
Tujuan penelitian ini adalah :
1.
Menghasilkan suatu program simulasi enkripsi
dan dekripsi dengan algoritma
Blowfish dengan menggunakan bahasa pemograman Visual Basic.
Manfaat penelitian ini adalah:
1.
Sebagai alat bantu bagi mahasiswa untuk memahami proses penyandian enkripsi
dan dekripsi.
1.4 Batasan Masalah
1. Bahasa yang digunakan di penelitian ini adalah bahasa pemograman Visual Basic.
2. Bit yang akan dienkripsi dan dekripsi adalah 64-bit.
1.5 Metodologi Penelitian
1.
Melakukan studi literatur mengenai algoritma Blowfish pada beberapa buku,
menunjukkan dasar teori, maupun situs yang berhubungan dengan algoritma
2.
Penulis mengambil beberapa materi yang menjelaskan mengenai algoritma
Blowfish dan pembahasannya.
3.
Melakukan perancangan dan menerapkan algoritma blowfish menggunakan
bahasa Visual Basic.
4.
Pembuatan program simulasi dengan algoritma kriptografi Blowfish.
5.
Pembahasan dan analisis proses dari plaintext
ke
ciphertext dan ciphertext ke
plaintext.
1.6
Sistematika Penulisan
BAB I
PENDAHULUHAN
Berisi judul, latar belakang, tujuan, manfaat, batasan masalah,
metodologi penelitian, sistematika penulisan.
BAB II
DASAR TEORI
Berisi dasar teori yang dipakai untuk pembahasan penulisan tugas
akhir.
BAB III
PERANCANGAN
Membahas tentang gambaran perancangan dengan diagram alir dan
tampilan algoritma Blowfish.
BAB IV
PEMBAHASAN
Berisi pembahasan kerja program yang telah dibangun, kelebihan dan
kekurangan.
BAB V
KESIMPULAN DAN SARAN
Berisi kesimpulan setelah dilakukan perancangan dan pembahasan
kerja program dan saran-saran untuk pengembangan program
4
BAB II
DASAR TEORI
2.1 Pengertian dan Konsep Dasar Kriptografi
Kriptologi merupakan ilmu yang mempelajari mengenai komunikasi aman. Kriptologi
meliputi dua hal pokok yaitu:
2.1.1
Kriptografi (
Cryptography
)
Kriptografi berasal dari dua suku kata yaitu kripto dan grafi. Kripto artinya
menyembunyikan, sedangkan grafi artinya ilmu[1]. Kriptografi adalah ilmu yang
mempelajari cara-cara menyandikan pesan yang bertujuan untuk menghindari
perolehan pesan secara tidak sah.
Secara umum, sistem kriptografi dapat didefinisikan sebagai serangkaian
proses meliputi pengubahan file
dari
file asli menjadi file tersandi dan pengubahan
data
file tersandi menjadi file asli kembali. Di dalam sistem kriptografi sering
digunakan istilah khusus yaitu:
a.
Algoritma Kriptografi
Algoritma merupakan sekumpulan langkah yang diperlukan untuk
pengubahan atau transformasi file, dari file asli menjadi file tersandi dan sebaliknya.
b.
Kunci Kriptografi
Kunci merupakan sekumpulan variabel yang terdiri atas urutan bit atau angka
yang diperlukan untuk proses transformasi file. Kunci berperan sebagai pengendali
ENKRIPSI
DEKRIPSI
Plaintext
Ciphertext
Plaintext
erat dengan algoritma yang digunakan dalam sistem kriptografi. Di dalam
penerapannya, variasi dari satu jenis kunci yang digunakan dapat berubah-ubah agar
dapat lebih aman.
c.
Plaintext
Plaintext adalah pesan asli atau informasi yang ingin dikirimkan dan dijaga
keamanannya.
d.
Ciphertext
Ciphertext adalah pesan yang telah disandikan sehingga siap untuk dikirimkan.
e.
Enkripsi
Enkripsi adalah proses pengubahan sebuah sandi dari yang bisa dimengerti
(plaintext) menjadi sebuah sandi yang tidak bisa dimengerti (ciphertext). Proses ini
dilakukan oleh pengirim.
f.
Dekripsi
Dekripsi adalah proses mengubah ciphertext menjadi plaintext. Proses ini
dilakukan oleh penerima. Pesan yang ditransmisikan adalah yang telah berbentuk
ciphertext, sehingga orang yang menyadap media transmisi tidak akan dapat
memahami pesan yang diperoleh. Gambar 2.1 menggambarkan blok konsep dasar
sistem kriptografi.
Gambar 2.1 Konsep Dasar Sistem Kriptografi[1]
Kriptanalis merupakan cabang dari kriptografi yang menangani secara khusus
mengenai pemecahan mekanisme yang digunakan dalam kriptografi[1]. Kriptanalis
harus mengetahui algoritma enkripsi dan dekripsi secara detail.
Secara umum operasi enkripsi
dan dekripsi secara matematis dapat dinotasikan
sebagai berikut:
•
Misalkan:
C
=
Ciphertext
P
=
Plaintext
•
Fungsi enkripsi E memetakan P ke C
(2.1)
•
Fungsi dekripsi D memetakan C ke P
(2.2)
•
Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal,
kesamaan berikut harus benar
(2.3)
•
Dengan menggunakan kunci K, fungsi enkripsi dan dekripsi menjadi:
E
K(P) = C
(2.4)
D
K(C) = P
(2.5)
Kedua fungsi di atas memenuhi syarat sebagai berikut:
D
K(E
K(P) = P
(2.6)
Kekuatan algoritma kriptografi diukur dari banyaknya kerja yang dibutuhkan untuk
memecahkan data ciphertext menjadi plaintext. Kerja ini dapat diekivalenkan dengan waktu.
waktu yang dibutuhkan, maka semakin kuat algoritma kriptografinya, yang berarti
semakin aman digunakan untuk menyandikan pesan [2].
2.2 Klasifikasi Kriptografi
2.2.1 Kriptografi Berdasarkan Proses Enkripsi dan Dekripsi
1.
Transposisi
Kunci transposisi merupakan suatu blok kunci yang digunakan untuk mengubah
posisi karakter atau bit data asli [2]. Pengubahan posisi itu tergantung pada panjang pola
pengubahan yang digunakan. Sebagai contoh plaintext adalah ”JURUSAN TEKNIK
ELEKTRO”. Jika menggunakan kunci=3, maka ciphertext adalah
JSEKKUUATKIEETORNNLR
J
S
E
K
K
U U
A T K I E E T O
R
N
N
L R
2.
Subsitusi
Teknik subsitusi ini, ciphertext
dibentuk dengan melakukan proses penggantian
terhadap elemen-elemen plaintext dengan simbol atau bilangan. Ada beberapa tipe cipher
subsitusi, diantaranya adalah monoalphabetic dan polyalphabetic.
Monoalphabetic
merupakan
cipher yang paling sederhana. Karakter diperlukan sebagai elemen terkecil dan
satu karakter memiliki pengganti dengan karakter lain. Cipher monoalphabetic yang tertua
adalah cipher Caesar[2]. Metode ini dilakukan dengan cara mengganti karakter ke karakter ke
ENKRIPSI
DEKRIPSI
Plaintext
Ciphertext
Plaintext
KUNCI
Tabel 2.1 Contoh Subsitusi Caesar Cipher dengan kunci = 5
Plaintext :
FAKULTAS TEKNIK
Ciphertext
:
KFPYQXFWXJPSNP
2.2.2 Kriptografi Berdasarkan Jumlah Kunci yang Digunakan
1.
Kriptografi Simetrik (Algoritma Konvensional)
2.
Kriptografi Asimetrik (Algoritma Kunci Publik)
2.2.2.1 Kriptografi Simetrik
Kriptografi simetrik atau disebut juga algoritma konvensional adalah
algoritma yang menggunakan kunci yang sama untuk proses enkripsi dan proses
dekripsi. Gambar 2.2 menggambarkan kriptografi simetrik
Gambar 2.2 Kriptografi Simetrik [1]
Kunci yang digunakan pada kriptografi simetrik harus benar-benar dijaga
kerahasiannya karena itu disebut kunci pribadi (private key) dan sebelum
berkomunikasi kedua pihak harus bersepakat dulu tentang kunci yang
dipergunakan.
Keamanan dari enkripsi
simetrik tergantung dari beberapa faktor. Algoritma enkripsi
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
S
T
U
V
W
X
Y
Z
harus cukup kuat sehingga tidak mungkin untuk mendekripsi pesan dengan berdasar
pada
ciphertext dan algoritma saja. Gambar 2.3 menggambarkan proses enkripsi dan
dekripsi pada kriptografi simetrik
.
Gambar 2.3 Model Sistem Kriptografi Simetrik atau Konvensional [2]
Suatu
plaintext P dienkripsi dengan menggunakan transformasi balik
(invertible transformation) E, dengan kunci K yang menghasilkan ciphertext C.
Proses ini dapat dituliskan dalam bentuk:
C = E (K,P)
(2.7)
Ciphertext ini ditransmisikan melalui kanal umum. Ketika seseorang yang
dituju menerima C, ia mendekripsikannya dengan transformasi invers D. Proses ini
dapat ditulis dengan bentuk:
D
(K,C) = D[( K,E) (K,P)] = P
(2.8)
Sistem kriptografi konvensional mempunyai sifat sebagai berikut :
Enkripsi
Dekripsi
Kanal Rahasia
Kriptanalisis
PENGIRIM
Kunci
Plaintext
Plaintext
PENERIMA
P = D (K,C)
= D (K,E( K,P)
Ciphertext
1.
Proses dekripsi adalah kebalikan dari proses enkripsi
D[( K,E) (K,P)] = P
(2.9)
2.
Dekripsi tidak dapat dilakukan tanpa menggunakan kunci yang sama dengan enkripsi
Jika pihak A akan berkomunikasi dengan pihak B, maka langkah-langkah
yang harus dilakukan adalah sebagai berikut :
1.
A dan B saling memberitahu kunci K, yang tidak boleh diketahui oleh pihak lain.
2.
A mengenkripsi plaintext P menggunakan algoritma enkripsi
E, dengan kunci K dan
mengirimkan hasilnya berupa ciphertext C = E (K,P) ke B.
3.
B menggunakan algoritma dekripsi D dengan kunci K, memperoleh kembali plaintext
P = D[K,E(K,P)]
Jika kunci yang dipergunakan untuk mendekripsi tidak sama dengan kunci
yang dipergunakan untuk mengenkripsi, maka proses dekripsi tidak dapat berjalan.
Yang perlu diperhatikan pada sistem kriptogarafi konvensional ini adalah kerahasiaan
kunci mutlak diperlukan. Hal ini tentunya memerlukan kerjasama dari kedua belah
pihak untuk saling menjaga kerahasian kunci yang mereka pergunakan.
Kelebihan algoritma simetrik ini adalah kecepatan proses enkripsi dan
dekripsinya yang jauh lebih cepat dibandingkan dengan algoritma asimetrik.
Sedangkan kelemahan algoritma ini adalah permasalahan distribusi kunci (key
distribution). Seperti yang telah dibahas, proses enkripsi dan dekripsi menggunakan
kunci yang sama. Sehingga muncul persoalan menjaga kerahasian kunci, yaitu pada
sampai hilang atau sudah dapat ditebak oleh orang lain (orang yang tidak berhak),
maka kriptogarfi ini sudah tidak aman lagi.
Kelemahan lain adalah masalah efisiensi jumlah kunci. Jika terdapat n
pengguna, maka diperlukan n(n-1)/2 kunci, sehingga untuk jumlah pengguna yang
sangat banyak, sistem ini tidak efisien lagi [2].
Semua fungsi kriptografi harus memiliki sifat reversibility, yaitu mampu
mengembalikan
ciphertext hasil enkripsi kembali ke plaintext melalui proses
dekripsi[2]. Kemampuan reversibility hampir semua metode pada algoritma kunci
mengandalkan kemampuan reverse operation. Metode ini berintikan membalik semua
operasi yang ada dengan melakukan operasi yang berlawanan. Jika operasi yang
berlawanan adalah penjumlahan dan pengurangan, maka terjadi penggeseran ke kiri
dan ke kanan. Algoritma kunci simetrik blok cipher yang memiliki metode yang
bersifat reversible tidak bisa berdiri sendiri seperti metode expand dan filter. Metode
tersebut akan bersifat reversible jika digunakan pada metode jaringan feistel.
2.2.2.2 Kriptografi Asimetrik
Kriptografi asimetrik, yang biasanya juga dengan doble key atau
public key,
menggunakan dua kunci , yaitu kunci satu digunakan untuk proses enkripsi dan kunci
yang digunakan untuk proses dekripsi [2]. Meskipun kedua kunci itu berbeda namun
memiliki hubungan secara matematik. Kriptografi asimetrik ini memberikan secrecy
dan autehentication kepada pemakainya. Kunci untuk enkripsi diberitahukan kepada
umum tanpa membahayakan kunci yang digunakan untuk dekripsi. Kunci untuk
umum disebut dengan public key dan kunci untuk dekripsi yang dirahasiakan disebut
ENKRIPSI
DEKRIPSI
Plaintext
Chipertext
Plaintext
KUNCI PUBLIK
KUNCI RAHASIA
Gambar 2.4 menggambarkan model sistem kriptografi kunci publik.
Gambar 2.4 Model Sistem Kriptografi Kunci Publik. [1]
Keuntungan utama dari algoritma ini adalah memberikan jaminan keamanan
kepada siapa saja yang melakukan pertukaran informasi meskipun di antara mereka
tidak ada kesepakatan mengenai keamanan data terlebih dahulu maupun saling tidak
mengenal satu sama lainnya.
2.2.3 Kriptografi Berdasarkan Teknik Pembentukan
Ciphertext
2.2.3.1
Blok
Cipher
Teknik ini mentransformasikan secara simultan seluruh blok dari bit-bit
plaintext dengan menggunakan kunci yang sama [3]. Pemetaan yang dilakukan adalah
pemetaan satu-satu dari blok plaintext ke blok ciphertext. Jika panjang plaintext tidak
habis dibagi dengan panjang ukuran blok, yaitu 64-bit, maka mengakibatkan blok
terakhir berukuran lebih pendek daripada blok-blok lainnya. Cara mengatasi hal ini
adalah dengan padding, yaitu menambahkan blok terakhir dengan pola bit yang
Pengirim
Blok
plaintext
Algoritma Enkripsi
Penerima
Blok
ciphertext
Algoritma Dekripsi
Blok
plaintext
Blok
ciphertext
menggambarkan pemetaan yang dilakukan adalah pemetaan satu-satu dari blok
plaintext ke blok ciphertext.
Gambar 2.5 Enkripsi Blok Cipher
2.2.3.2
Cipher
Aliran
Proses ini berkaitan dengan aliran bit data. Cipher aliran beroperasi pada
aliran bit data. Transformasi yang dilakukan berada di bawah kendali bit-bit kunci.
Tiap blok bit plaintext digabungkan dengan blok bit kunci.
Ukuran paket bervariasi dan beberapa sistem cipher mengijinkan pemakainya
menentukan sendiri ukuran paket. Jika ukuran paket yang dipilih sesuai, maka arus
cipher bisa menyediakan arus kunci yang sesuai dengan panjang plaintext. Hal ini
menghilangkan masalah yang terdapat dalam penambahan bit untuk menyesuaikan
ukuran
plaintext [4]. Gambar 2.6 menggambarkan enkripsi aliran yang beroperasi
Pembangkit aliran
kunci
Plaintext
Ciphertext
....1101
Kunci
…..0101
…1000
Aliran Kunci
Gambar 2.6 Enkripsi cipher aliran [2]
2.3 Algoritma Kriptografi Blowfish
Blowfish merupakan sebuah algoritma kunci simetrik cipher
blok yang
dirancang pada tahun 1993 oleh Bruce Schneier untuk menggantikan DES (Data
Encryption Standard)[4]. Blowfish adalah algoritma kunci simetrik, yang berarti
menggunakan kunci yang sama untuk melakukan proses enkripsi dan proses dekripsi
data. Blowfish merupakan cipher blok, yang berarti selama proses enkripsi dan dekripsi,
Blowfish akan membagi pesan menjadi blok-blok dengan ukuran yang sama panjang.
Panjang blok untuk algoritma Blowfish adalah 64-bit. Pesan yang bukan
merupakan kelipatan delapan byte akan ditambah bit-bit tambahan (padding) sehingga
ukuran tiap blok sama. Jika ukuran blok adalah 64-bit (8 byte) dan blok terakhir terdiri
dari 24-bit ( 3 byte), maka blok terakhir ditambah dengan 40 bit ( 5 byte) agar menjadi
64-bit. Jika dengan menambahkan 4 buah byte 0 dan satu buah byte angka 5, maka dekripsi 5
2.3.1 Prinsip Perancangan Algoritma Blowfish 64-Bit
Perancangan pada algoritma Blowfish mempunyai tiga tahap utama yaitu
pembangkit subkunci, proses enkripsi data dan Proses dekripsi data[5]. Cipher blok yang
digunakan pada algoritma blowfish harus memperhatikan beberapa prinsip yaitu jaringan
Feistel (Feistel network), kotak-S (S-box) dan inisial Pbox.
2.3.1.1 Proses Pembangkit Subkunci
Subkunci merupakan bagian proses awal sebelum melakukan enkripsi data
maupun dekripsi data. Proses pembangkit subkunci adalah sebagai berikut:
1.
Pertama-tama PBox dan SBox diinisialisasi secara berurutan dengan string yang tetap
seperti pada lampiran.
2.
Operasi XOR dilakukan pada P1 dengan 32-bit pertama dari kunci, operasi XOR
dilakukan pada P2
dengan 32-bit kedua dari kunci dan seterusnya untuk setiap bit
dari kunci (sampai P18).
3.
PBox dimodifikasi menggunakan enkripsi dengan input string 0
4.
Seluruh P1 dan P2 untuk melakukan proses enkripsi sampai PBox terenkrip semua
diganti.
5.
Seluruh PBox dan keempat SBox diganti dengan keluaran yang berubah secara
berurutan dari algoritma Blowfish.
Contoh 2.1:
Panjang maksimum kunci adalah 7 blok, masing-masing 32-bit
P
1= P
1XOR K
1, P
2= P
2XOR K
2, P
3= P
3XOR K
3, P
4= P
4XOR K
4, P
5= P
5XOR K
5,P
6= P
6XOR K
6,P
7= P
7XOR K
7,….., P
15= P
15XOR K
1,
2.3.1.2 Proses Enkripsi Data
Enkripsi data terdiri dari iterasi fungsi sederhana sebanyak 16 kali putaran.
Semua operasi adalah penambahan dan XOR pada variabel 32-bit. Tambahan operasi
lainnya hanyalah empat penelusuran tabel array berindeks untuk setiap putaran. Untuk
proses enkripsi pada algoritma Blowfish dapat dijelaskan sebagai berikut:
1.
Plaintext yang akan dienkripsi diasumsikan sebagai masukan. Plaintext tersebut
diambil sebanyak 64-bit.
2.
Plaintext yang sudah disandikan dibagi menjadi dua. 32-bit pertama disebut Xl, dan
32-bit yang kedua disebut Xr
3.
Xl = Xl XOR Pi dan Xr = F(Xl) XOR Xr
4.
Xl
ditukar menjadi Xr
dan Xr
ditukar menjadi Xl
5.
Pertukaran dilakukan sebanyak 16 kali putaran.
6.
Xr = Xr
XOR P17
dan Xl = Xl XOR P18
7.
Menyatukan kembali Xl dan Xr
sehingga menjadi 64-bit kembali.
2.3.1.3 Proses Dekripsi Data
Proses dekripsi sama dengan enkripsi, kecuali pada PBox digunakan dengan
urutan terbalik. Proses algoritma dekripsi pada blowfish dapat dijelaskan sebagai berikut:
1.
Ciphertext yang akan didekripsi diasumsikan sebagai masukan, ciphertext
tersebut
diambil sebanyak 64-bit.
2.
Ciphertext dibagi menjadi 2, 32-bit pertama disebut Xl, 32-bit yang kedua disebut Xr
3.
Xl = Xl XOR Pi dan Xr = F(Xl) XOR Xr
4.
Xl
ditukar menjadi Xr dan Xr ditukar menjadi Xl
6.
Xr = Xr
XOR P1 dan Xl = Xl XOR P1
7.
Proses terakhir adalah menyatukan Xl dan Xr
sehingga menjadi 64-bit kembali.
2.3.1.4 Kotak-S (PBox)
Kotak-S merupakan substitusi sederhana yang memetakan satu atau lebih bit
dengan satu atau lebih bit yang lain. Algoritma Blowfish kotak-S memetakan m
bit
masukan menjadi n bit keluaran, sehingga S tersebut dinamakan kotak m x n
kotak-S. Contoh 2.2 menunjukkan proses penentuan PBox yang terdapat dalam algoritma
Blowfish.
Contoh 2.2 merupakan masukan dari operasi tabel array
yang
dijadikan sebagai
indeks PBox, dan keluarannya ditelusuri di dalam PBox seperti pada lampiran.
Contoh 2.2
Masukan : C66B9A20, penentuan PBox
Bagi masukan, menjadi empat bagian 8-bit : a,b,c dan d
a = c6 b = 6b
c = 9a d = 20
Ubah a, b, c, d ke desimal
a = 198 b = 107
c = 154 d = 32
Gabungkan S
1, S
2, S
3, S
4dengan a, b, c, d
S
1,
198S
2,107S
3,154S
4,32
Kemudian untuk mencari keluaran pada kotak-S dapat dicari
dengan penelusuran tabel array, seperti pada lampiran.
S
1,198= BE0E1777 S
2,
107= 9EbABF2C
2.3.1.5 Jaringan
Feistel
Jaringan Feistel pertama kali diperkenalkan oleh Horst Feistel. Metode ini
digunakan dalam salah satu algoritma kriptografi blok, yaitu Blowfish. Proses enkripsi
dan dekripsi jaringan Feistel terdapat pada putaran-putaran kunci untuk menghasilkan
keluaran. Kemudian salah satu blok dikenakan fungsi F, yaitu fungsi yang dikenakan
pada saat menghitung nilai Xl. Kemudian diputar sebanyak 16 kali putaran, demikian
seterusnya selama beberapa kali putaran sehingga menghasilkan Cipher blok yang lebih
acak.
l
i= R
i-1(2.11)
r
i =L
i-1XOR F( R
i-1,K
i)
(2.12)
F(Xl) = (((S
1,a+ S
2,bmod 2
32) XOR S
3,c) + S
4,c)
mod 2
32(2.13)
Nilai a, b, c, dan d diperoleh dari Xl
dimana Xl
yang berukuran 32-bit
dipecah-pecah menjadi 8-bit. L
iadalah jumlah bit kiri pada putaran ke i. R
iadalah jumlah bit
kanan pada putaran ke i. K
iadalah kunci pada putaran ke i. F(Xl) adalah fungsi F.
Inti dari jaringan Feistel adalah fungsi F, yang memetakan sebuah bit masukan
menjadi bit keluaran. Blok hasil dari fungsi F tersebut diputar. Kemudian dilakukan
fungsi F kembali selama beberapa kali. Untuk melakukan proses perputaran, fungsi F
membutuhkan adanya kunci internal. Jadi keluaran fungsi F dengan masukan
Gambar 2.7 Satu putaran dalam Jaringan Feistel [4]
Gambar 2.7 menunjukkan proses satu putaran pada Blowfish. Keluaran
ciphertext
adalah
blok bagian bawah. Masukan berupa plaintext
ada di blok bagian
atas. Sedangkan yang bekerja pada bagian tengah, beroperasi dengan mode operasi
XOR.
Contoh 2.3
Masukan =
4d415441
F(XL) = (((S
1,a+ S
2,bmod 2
32) XOR S
3,c) + S
4,c)mod 2
32Penentuan kotak-S : a = 77, b = 65, c = 84, d = 65
S
1,77= 21C66842 S
2,65= 4E548B38 S
3,84= 5D886E17 S
4,65= E029AC71
F(Xl) = (((21C66842 + 4E548B38 mod 100000000)XOR 5d886e17 +
E029AC71 )mod C
= ((701AF37A XOR 5D886E17) + e029ac71) mod 100000000
= 2D929D6D + E029AC71
= 10DBC49DE mod 100000000
=
0DBC49DE
Input
Output
2.4
Mengenal Visual Basic
Visual Basic 6.0 merupakan salah satu bahasa pemrograman BASIC (Beginner’s All
purpose Symbolic Instruction Code) yang dikembangkan oleh Microsoft sejak tahun 1991.
Bahasa pemrograman pada Visual Basic mendukung pemrograman yang berorientasi obyek
atau disebut juga OOP (Object Oriented Programming). Maksud dari object oriented atau
OO adalah melihat masalah dari obyek-obyek yang terdapat dalam masalah tersebut [6].
2.4.1 Pengenalan IDE (
Integrated Development Environment
)
Saat pertama kali membuka program Visual Basic, akan muncul sebuah dialog box
seperti di Gambar 2.8. Dialog box ini digunakan untuk memilih jenis proyek yang akan
dibuat.
Gambar 2.8 Dialog box untuk pilihan tipe new project. [6]
Setelah jenis proyek dipilih, tampilan Visual Basic akan terlihat seperti Gambar 2.9.
Tampilan ini memperlihatkan bagian-bagian penting seperti menu bar,
tool bar,
project,
Gambar 2.9 Tampilan IDE Visual Basic. [6]
2.4.2.1
Title Bar
Title bar terletak pada bagian paling atas dan menyatakan nama atau judul proyek
yang sedang aktif .
2.4.2.2
Menu bar
Menu bar terletak di bawah title
bar dan berisi kumpulan perintah-perintah yang
memiliki fungsi berbeda. Visual Basic 6.0 menyediakan tiga belas menu yaitu File, Edit,
View, Project, Format, Debug, Run, Query, Diagram, Tools, Add-ins, Window, dan Help.
Menu-menu ini ada pada Gambar 2.10.
2.4.2.3
Tool bar
Tool bar sebenarnya memiliki fungsi yang sama seperti menu bar, hanya saja berbeda
cara penggunaannya. Pada menu bar, perintah dijalankan dengan mengakses menu terlebih
dulu, lalu sub menu, dan selanjutnya baru perintah yang akan digunakan. Pada tool bar,
perintah langsung ditampilkan dalam bentuk icon dan akan langsung dilaksanakan ketika
icon tersebut dipilih. Dengan kata lain, icon-icon pada tool bar merupakan shortcut dari
perintah-perintah pada menu bar. Gambar 2.11 menunjukkan tampilan tool bar.
Gambar 2.11 Tampilan tool bar. [6]
2.4.2.4
Tool box
Tool box adalah tempat kontrol-kontrol yang akan digunakan untuk membantu
pembuatan program aplikasi. Beberapa kontrol yang digunakan yaitu textbox, label,
command button, option button, dan combo box. Tidak semua kontrol ditampilkan pada tool
box. Namun kontrol-kontrol yang tidak ditampilkan dapat ditambah ke dalam tool box sesuai
dengan kebutuhan penggunaannya. Tampilan tool box ditunjukkan pada Gambar 2.12.
Gambar 2.12 Tampilan tool box. [6]
2.4.2.5
Project Explorer
Project explorer digunakan untuk mengakses bagian-bagian pembentuk project. Pada
bertingkat. Pengguna juga dapat dengan mudah menambah form atau module melalui project
explorer ini. Tampilan project explorer ditunjukkan pada Gambar 2.13.
Gambar 2.13 Tampilan project explorer. [6]
2.4.2.6
Properties window
Properties window merupakan tempat yang digunakan untuk mengatur properti dari
setiap obyek kontrol yang akan digunakan pada program aplikasi.
Gambar 2.14 Tampilan properties window. [6]
Terdapat dua cara untuk menampilkan properties window, yaitu sesuai abjad
(alphabetic) atau sesuai kategori (categorized). Tampilan properties window ditunjukkan
2.4.2.7
Form Layout Window
Form layout digunakan untuk melihat atau mengetahui posisi tampilan form saat
program dijalankan. Hasil pengaturan ukuran form
yang dilakukan pada properties window
akan terlihat pada form layout window ini. Pengguna dapat mengubah letak tampilan form
dengan mengatur posisi form
pada
form layout window. Tampilan form layout window
ditunjukkan pada Gambar 2.15.
Gambar 2.15 Tampilan form layout window. [6]
2.4.2.8
Form
Form
digunakan untuk menempatkan obyek dari kontrol-kontrol yang akan
digunakan untuk merancang dan membuat program aplikasi. Tampilan form
ditunjukkan
pada Gambar 2.16.
2.4.2.9
Form Code
Form code digunakan sebagai tempat untuk menulis kode-kode program aplikasi.
Untuk menampilkan form code, perintah view code dipilih pada window properties. Tampilan
form code ditunjukkan pada Gambar 2.17.
BAB III
PERANCANGAN ALGORITMA BLOWFISH
Bab ini akan memaparkan perancangan diagram alir program simulasi untuk
algoritma Blowfish. Program dibuat berdasarkan tiga tahap utama dalam merancang
algoritma Blowfish yang telah dibahas pada Bab II menggunakan program Visual Basic.
Gambar 3.1 menggambarkan proses tiga tahap utama dalam perancangan algoritma Blowfish.
Gambar 3.1 Diagram Alir Utama dalam Perancangan Algoritma Blowfish.
3.1
Diagram Alir Pembangkit Subkunci
Proses pembangkit subkunci pada Blowfish harus dibangkitkan terlebih dahulu
sebelum melakukan proses enkripsi maupun dekripsi data. Proses pembangkit subkunci
diawali dengan penginisialisasi PBox(Pi) seperti pada lampiran, yaitu dari P1
sampai dengan
P18. Masukan berupa kunci dengan panjang maksimum 448-bit atau mulai dari kelipatan
32-Mulai
Proses Pembangkit
Subkunci
Proses Enkripsi
Data
Proses Dekripsi
Data
Selesai
bit. Proses selanjutnya adalah mengkonversi masukan dari kode ASCII ke heksadesimal dan
kunci dibagi masing-masing 32-bit. Gambar 3.2 adalah diagram alir proses pembangkit
subkunci.
Gambar 3.2 Diagram Alir proses Pembangkit subkunci
Mulai
Inisialisasi PBbox1 (P1 sampai P18) dan SBox
Tampilkan inisialisasi PBox (P1 sampai P18) SBox
Masukkan Kunci (Kn)
Kn < kelipatan 32 bit
XOR semua PBox dengan Kunci (Kn)
A
A
Kn < P18
Modifikasi PBox dan SBox dengan string 0
PBox < 32 bit
Hasil Proses pembangkit subkunci yaitu PBox dan Sbox Padding
Padding
Selesai Ya
Ya
Tidak
Tidak
Proses pertama dalam membangkitkan kunci adalah operasi XOR dilakukan pada
dengan 32-bit dari kunci pertama, sedangkan operasi XOR dilakukan pada P2dengan 32-bit
dari kunci kedua dan seterusnya untuk setiap bit dari kunci (sampai P18). Selanjutnya Jika
panjang kunci kurang dari kelipatan 32-bit, maka yang akan terjadi adalah blok terakhir
berukuran lebih pendek daripada blok-blok lainnya. Cara mengatasinya adalah dengan
padding.
Padding
adalah penambahan blok akhir dengan pola bit yang teratur agar
panjangnya sama dengan ukuran blok yang ditetapkan. Gambar 3.3 adalah diagram alir
proses padding.
Gambar 3.3 Diagram Alir proses Padding
Proses selanjutnya adalah modifikasi PBox dan SBox menggunakan enkripsi dengan
input string 0. Algoritma Blowfish menggunakan subkunci, Xl adalah PBox ganjil (P1, P3,
P5, P6, P7, P9, P11, P13,P15, P17 dan Xr adalah PBox genap (P2, P4, P6, P8, P10, P12, P14,
P16, P18) dan keempat SBox. Selanjutnya mengganti P1 dan P2 dengan keluaran proses
pertama. Proses kedua modifikasi PBox dan SBox adalah dengan mengenkrip keluaran dari
proses pertama dengan algoritma Blowfish menggunakan kunci yang sudah dimodifikasi.
Mulai
Penambahan nilai 0 pada akhir blok
Tampilkan hasil padding
Selanjutnya P3 dan P4 diganti dengan keluaran proses kedua dan seterusnya dengan
mengganti PBox, kemudian seluruh SBox berurutan, dengan keluaran yang berubah secara
kontinyu dari algoritma Blowfish. Proses SBox1 =128, SBox2 = 128, SBox3 = 128 dan
SBox4 = 128 jadi total keseluruhan SBox adalah 512 iterasi. Proses modifikasi Sbox dan
PBox terdapat proses jaringan Feistel. Gambar 3.4 adalah diagram alir proses jaringan Feistel
dan Gambar 3.5 adalah diagram alir modifikasi PBox dan SBox.
Gambar 3.4 Diagram Alir Proses Jaringan Feistel
Mulai
Xl =32-bit dan SBox
Xl dibagi menjadi 4 = a,b,c,d bernilai 8bit
F(Xl) = (((S1,a + S2,b mod 2^32) XOR s3,c) + s4)mod 2^32
F(Xl) <32 bit
Padding
Hasil Jaringan Feistel (FXl)
Selesai Ya
Gambar 3.5 Modifikasi PBox dan SBox menggunakan enkripsi dengan input string 0
Mulai
Hitung Jaringan Feistel F(Xl)
Xr= F(Xl) Xor Xr
Tukar Xl dan Tukar Xr
Xr = Xr Xor P17 Xl= Xl Xor P18
Selesai Xl= PBox ganjil
Xr= PBox genap
Hasil terakhir modifikasi PBox dijadikan input Sbox
Apakah PBox sudah dimodifikasi semua? Xl= Xl Xor Pi
Pi < 16
Ya
Tidak
A
A
Xl= Xl Xor Pi
Hitung Jaringan Feistel F(Xl)
Xr= F(Xl) Xor Xr
Tukar Xl dan Tukar Xr
Pi < 16
Xr = Xr Xor P17 Xl= Xl Xor P18
Apakah SBox sudah dimodifikasi semua? Belum
Sudah
Sudah Ya
Tidak
3.2
Diagram Alir Enkripsi Data
Enkripsi adalah proses pengubahan dari plaintext ke ciphertext. Gambar 3.6
menunjukkan diagram alir proses enkripsi.
Gambar 3.6 Diagram Alir proses Enkripsi
Mulai
Masukkan
Plaintext
Xl dan Xr <64 bit
Hitung Jaringan Feistel F(Xl)
F(Xl) <32 bit
Xr = F(Xl) XOR Xr
Tukar Xl dan Xr
Xr = Xr XOR P17
Xl = Xl Xor P18 A
ya
Tidak
Ya
Tidak
Padding
Padding
Hasil proses pembangkit subkunci yaitu PBox dan Sbox
Pi < 16
Tidak Ya
Xl = Xl XOR Pi
Penggabungan Xl dan Xr Plaintext dibagi
menjadi 2 yaitu Xl dan Xr
A
Seles
ai
Gambar 3.5 menjelaskan bahwa masukan berupa plaintext 64-bit dibagi menjadi 2.
32-bit pertama disebut Xl dan 32-bit yang kedua disebut Xr. Xl
dan Xr
hanya sebagai simbol
untuk mempermudah proses enkripsi. Jika plaintext lebih dari 64-bit, maka proses dilakukan
2 kali, proses yang pertama 64 bit dan proses yang kedua 64-bit.
Proses selanjutnya adalah melakukan operasi Xl = Xl XOR PBox
dan Xr = F(Xl)
XOR Xr. Dari operasi di atas, Xl ditukar menjadi Xr dan Xr ditukar menjadi Xl. Proses
operasi tersebut terjadi sebanyak 16 kali putaran, putaran yang ke-16 terjadi proses penukaran
Xl dan Xr. Proses P17 dan P18 adalah operasi untuk Xr = Xr
XOR P17 dan Xl = Xl XOR
P18. Proses terakhir adalah menyatukan Xl dan Xr
sehingga menjadi 64-bit kembali. Proses
penyatuan Xl
dan Xr
menghasilkan ciphertext.
3.3 Diagram Alir Dekripsi Data
Proses dekripsi sama dengan proses enkripsi kecuali pada PBox yang digunakan
dengan urutan terbalik.
Ciphertext yang akan didekripsi diasumsikan sebagai masukan.
Tampilan hasil proses pembangkit subkunci yaitu PBox dan SBox. Kemudian ciphertext
64-bit dibagi menjadi 2. 32-64-bit pertama disebut Xl, 32-64-bit yang kedua disebut Xr.
Proses selanjutnya adalah operasi Xl = Xl XOR PBox dan Xr = F(Xl) XOR Xr.
.Dari
operasi di atas, Xl ditukar
menjadi Xr dan Xr ditukar menjadi Xl. Proses operasi dekripsi
terjadi sebanyak 16 kali putaran dimulai dari P18 sampai P3, putaran yang ke 3 dilakukan
proses penukaran Xl dan Xr. Proses P2 dan P1 terjadi operasi untuk Xr = Xr XOR P2 dan
Xl = Xl XOR P1. Proses terakhir adalah menyatukan kembali Xl dan Xr
sehingga menjadi
64-bit. Xl
dan Xr digabung sehingga menghasilkan pesan asli atau dapat disebut dengan
Gambar 3.7 menunjukkan diagram alir proses dekripsi.
Mulai
Tampilkan
Ciphertext
Xl dan Xr <64 bit
Hitung Jaringan Feistel F(Xl)
Xr = Xr XOR P2
Xl = Xl XOR P1
Hasil Penggabungan Xl dan Xr adalah
Plaintext
A
F (Xl) = 32 bit
Xr = F (Xl) XOR Xr
Ya
Tidak
Ya
Tidak
Padding
Padding
Hasil proses pembangkit subkunci yaitu P Box dan Sbox
Tukar Xl dan Xr
Xl = Xl XOR Pi
Pi < 16
Tidak Ya
Penggabungan Xl dan Xr
ciphertext dibagi menjadi 2 yaitu Xl dan Xr
Sel
esai
1.4
Tampilan Program
3.4.1 Tampilan Blok Menu
Setelah merancang diagram alir pembangkit subkunci, enkripsi data, dan dekripsi
data, maka dapat dirancang tampilan blok enkripsi data dan dekripsi data. Gambar 3.8
menjelaskan pengirim
mengirimkan
Plaintext, kemudian mengenkripsi Plaintext
menggunakan algoritma enkripsi dengan kunci dan mengirimkan hasilnya berupa ciphertext.
Penerima menggunakan proses algoritma dekripsi dengan kunci yang sama, untuk
memperoleh kembali plaintext. Gambar 3.8 menunjukkan blok alur enkripsi dan dekripsi
algoritma Blowfish
Gambar 3.8 Blok alur Enkripsi dan Dekripsi Algoritma Blowfish
3.4.2 Tampilan Simulasi Enkripsi dan Dekripsi
Tampilan simulasi enkripsi dan dekripsi terdapat empat commondbutton yaitu
commondbutton
Enkripsi
,
commondbutton
Dekripsi
,
commondbutton
Browse
dan
plaintext ke ciphertext.
Commondbutton
Dekripsi
berfungsi mengubah ciphertext ke
plaintext.
Commondbutton
Browse
berfungsi untuk mengambil data dengan ekstensi .*txt
yang digunakan sebagai masukan pada textplaintext.
Commondbutton
close
berfungsi
mengakhiri tampilan simulasi enkripsi dan dekripsi Blowfish. Gambar 3.9 adalah tampilan
simulasi enkripsi dan dekripsi algoritma Blowfish
Gambar 3.9 Tampilan Simulasi Enkripsi Dekripsi Algoritma Blowfish
Tampilan langkah 2 adalah XOR semua PBox dengan Key yang terdapat pada Form
progrees enkripsi. From Progrees terdiri Commondbutton
Copy PBox
,
Copy SBox
berfungsi
untuk mencopy seluruh data PBox dan SBox ke dalam bentuk notepad atau microsoft office
dan
Copy Log
berfungsi untuk mencopy hasil ciphertext dan plaintext.
Commondbutton
secara berurutan yang ada pada textLog.
Label
monitor F(Xl) berfungsi untuk memonitor
proses jaringan Feistel F(Xl). Label monitor terdiri dari label input F(Xl) dan label
output
F(Xl). Label F(Xl) counter berfungsi menampilkan counter tiap putaran. Gambar 3.10 adalah
Tampilan langkah 2 XOR semua PBox dengan kunci
Gambar 3.10 Tampilan Langkah 2 XOR semua PBox dengan Kunci (Key)
Gambar 3.11 menunjukkan tampilan langkah 3 yaitu modifikasi PBox dan SBox
dengan string 0. Proses langkah 3 dapat memproses jika menekan commonbotton
Lanjutkan
,
maka proses langkah 3 akan memproses data. Gambar 3.12 adalah proses langkah 4 proses
enkripsi dan Gambar 3.13 tampilan proses dekripsi.
Gambar 3.12 Tampilan Proses Enkripsi
Tampilan langkah-langkah proses dekripsi sama dengan tampilan langkah proses
enkripsi yang membedakan untuk langkah 4 yaitu proses dekripsi. Langkah 1 adalah
inisialisasi PBox dan SBox, langkah 2 XOR semua PBox dengan key, langkah 3 modifikasi
BAB IV
PEMBAHASAN
Bab IV akan menjelaskan mengenai cara kerja program simulasi penyandian
algoritma Blowfish menggunakan Visual Basic 6.0 disertai dengan beberapa pengujian dan
pengambilan beberapa data pada simulasi. Proses pengujian ini didapatkan dari data-data
maupun bukti-bukti hasil akhir yang dapat dilihat apakah perangkat lunak yang telah dibuat
dengan baik atau tidak. Berdasarkan data-data dan bukti-bukti tersebut dapat dilakukan
analisa terhadap proses kerja algoritma Blowfish.
4.1 Proses Penyandian Blowfish
Program simulasi penyandian dimulai dengan menampilkan menu utama penyandi
dengan menekan tombol
(start) di tool bar , sehingga akan muncul tampilan simulasi
enkripsi dan dekripsi Blowfish seperti pada Gambar 4.1. Proses yang terdapat pada simulasi
enkripsi dan dekripsi Blowfish merupakan proses simulasi pengubahan plaintext ke
ciphertext. Enkripsi dan dekripsi menggunakan algoritma Blowfish dimulai dengan pengisian
data asli di textbox
Plaintext
dan pengisian data di textbox
Key
atau pengisian plaintext oleh
pengguna,
selanjutnya akan ditampilkan secara langsung setelah melakukan pencarian
melalui
commondbutton
Browse
(berekstensi *.txt), selanjutnya memilih commondbutton
Enkripsi
.
Gambar
4.1 adalah tampilan simulasi proses enkripsi dan dekripsi algoritma
Blowfish.
Gambar 4.1 Tampilan Simulasi Enkripsi dan Dekripsi Algoritma Blowfish
Contoh hasil tampilan program Blowfish pada Gambar 4.2 adalah pengisian textbox
Gambar 4.2 Tampilan Mengisi data di textbox Plaintext dan texbox Key
Proses selanjutnya adalah pengguna memilih commondbutton
Enkripsi,
kemudian
Form progress akan muncul dengan menampilkan textbox
Log,
textbox
PBox,
textbox
SBox,
commondbutton
CopyPbox,
commonbutton
CopySbox,
commondbutton
CopyPLog
,
commondbutton
Lanjutka
dan commondbutton
close
. Pengguna memilih commondbuton
Lanjutkan
dan pada textLog akan muncul
langkah yang pertama, yaitu inisialisasi PBox,
SBox dan langkah kedua semua PBox XOR dengan key dengan catatan langkah kedua belum
Gambar 4.3 Tampilan Inisialisasi PBox dan SBox
PBox dan SBox yang diinisilisasi terdapat pada text
PBox
yang berisi 18 PBox dan
textSBox
yang berisi 4 SBox, masing-masing SBox berjumlah 255 masukan, textLog berisi
Plaintext MATAHARI dalam kode ASCII dan 4D 41 54 41 48 41 52 49 dalam
heksadesimal, selanjutnya memilih commondbutton
Lanjutkan
kemudian langkah 2 akan
diproses dan muncul pada textLog langkah 3 yaitu modifikasi PBox SBox menggunakan
enkripsi dengan input string 0 (menggunakan proses enkripsi Blowfish dengan masukan
Xl=00000000 dan Xr=00000000) dengan catatan untuk proses langkah 3 belum
Gambar 4.4 Tampilan Hasil XOR key dengan PBox
Selanjutnya pengguna memilih commondbutton
Lanjutkan
, langkah 3 akan diproses
yaitu modifikasi PBox dan SBox dengan menggunakan enkripsi dengan input string 0
(menggunakan proses enkripsi Blowfish dengan masukan Xl=00000000 dan Xr=00000000).
PBox dan SBox sudah berubah semua dan digunakan dalam proses enkripsi maupun dekripsi
algoritma Blowfish dan muncul textLog langkah 4 yaitu proses enkripsi, dengan catatan
proses langkah 4 belum dilaksanakan. Gambar 4.5 adalah tampilan hasil modifikasi PBox dan
SBox dengan input
string 0. Kemudian pengguna memilih commondbutton
Lanjutkan
langkah 4 akan diproses dan menghasilkan ciphertext pada textLog yaitu kode ASCII
‰È§æwÏL dan dalam kode heksadesimal 89 C8 07 A7 E6 77 CF 4C. Gambar 4.6 adalah
tampilan hasil enkripsi pada Form progrees dan Gambar 4.7 adalah tampilan hasil enkripsi
Gambar 4.5 Tampilan hasil Modifikasi Enkripsi dengan Input String 0
Gambar 4.7 Tampilan hasil Enkripsi pada Form Utama
Proses enkripsi selesai kemudian dengan menekan commondbutton
close
akan
kembali ke Form utama (frmmain) dan commondbutton
Dekripsi
akan aktif seperti pada
Gambar 4.7. Tampilan proses dekripsi dengan tampilan proses enkripsi adalah sama, yang
membedakan proses algoritma proses enkripsi dan dekripsi. Selanjutnya memilih
commondbutton
Dekripsi
dan akan muncul From Progress dekripsi. Form Progress dekripsi
pada textLog menampilkan kode ASCII ‰È§æwÏL dan kode heksadesimal 89 C8 07 A7 E6
77 CF 4C. Pengguna memilih commondbuton
Lanjutkan
pada textLog akan muncul
Langkah 1 yaitu inisialisasi PBox, SBox dan langkah kedua XOR semua PBox dengan key
dengan catatan proses langkah kedua belum dilaksanakan. Gambar 4.8 adalah tampilan
Gambar 4.8 Tampilan tampilan inisialisasi PBox dan SBox
Selanjutnya pengguna memilih commondbutton
Lanjutkan
kemudian langkah 2 akan
diproses dan muncul pada textLog langkah 3 yaitu modifikasi PBox dan SBox menggunakan
dekripsi dengan input string 0 dengan catatan untuk proses langkah 3 belum dilaksanakan.
Gambar 4.9 Tampilan Hasil XOR key dengan PBox
Pengguna memilih commondbutton
Lanjutkan
, langkah 3 akan diproses yaitu
modifikasi PBox dan SBox dengan menggunakan enkripsi dengan input string 0 dan muncul
textLog langkah 4 yaitu proses dekripsi dengan catatan proses langkah 4 belum dilaksanakan.
Gambar 4.10 adalah tampilan hasil modifikasi PBox dan SBox dengan menggunakan enkripsi
dengan
input string 0. Kemudian pengguna memilih commondbutton
Lanjutkan
dan
langkah 4 akan diproses, selanjutnya pengguna memilih commondbutton
Lanjutkan
sehingga muncul plaintext pada textLog kode ASCII MATAHARI dan dalam kode
heksadesimal 4D 41 54 41 48 41 52 49. Gambar 4.11 adalah tampilan hasil dekripsi yang
Gambar 4.10 Tampilan hasil Modifikasi Enkripsi dengan Input String 0
Gambar 4.12 Tampilan Hasil Dekripsi di Form Utama
4.1.1 Tampilan Algoritma Blowfish dengan
Text File
(*.TXT)
Tampilan algoritma Blowfish dengan text file (*.TXT) diawali dengan dengan
menekan
commondbutton
Browse
pada from
utama, selanjutnya akan muncul open dialog
dengan pilihan contoh.txt. Gambar 4.13 adalah tampilan open dialog
Selanjutnya dengan menekan open akan kembali ke from utama dan di textbox
Plaintext
akan muncul tulisan hello world... dalam heksadesimal 68 65 6C 6C 6F 20 77 6F
72 6C 64 2E 2E 2E dan mengisi textbox
Key
dengan key teknik elektro. Gambar 4.14 adalah
tampilan hasil proses enkripsi dan dekripsi dengan text file (*.TXT)
Gambar 4.14 Tampilan Hasil Enkripsi dan Dekripsi dengan text file (*.TXT)
Hasil proses dekripsi untuk plaintext hello word terdapat 00 00 karena data plaintext
kurang dari kelipatan 32-bit. Cara mengatasi hal ini dengan padding agar panjangnya sama
4.2 Analisa dan Pembahasan Algoritma
Proses pengujian dapat dibandingkan apakah hasil algoritma Blowfish sesuai antara
pembahasan dengan menggunakan program. Sebagai contoh plaintext: MATAHARI dan key
adalah INOVATIF
4.2.1
Proses Pembangkit Subkunci
Key terlebih dahulu disandikan ke heksadesimal menjadi M=4D A=41 T=54, A=41
H=48 A=41 R=52 I=49. Langkah pertama dalam melakukan proses penentuan subkunci
adalah operasi XOR dilakukan pada PBox1 dengan 32-Bit dari kunci pertama,
sedangkan operasi XOR dilakukan pada PBox2 dengan 32-Bit dari kunci kedua dan
seterusnya untuk setiap bit dari key (sampai P18). Hasil perhitungan proses operasi XOR
PBox dengan kunci ada pada lampiran 10 (L-10). Tabel 4.1 adalah Hasil Proses XOR
dengan key
Tabel 4.1 Hasil XOR PBox dengan key.
Hasil XOR PBox yang telah di XOR kan dengan key pada Tabel 4.1 sama dengan
tampilan pada textbox
PBox
program Gambar 4.9. Setelah operasi XOR dilakukan pada
PBox (Pi) dengan 32-bit dari kunci, kemudian PBox dan SBox dimodifikasi dengan
menggunakan enkripsi dengan input
0
.
Proses modifikasi atau mengganti PBox yang
telah diinisialisasi dari PBox (P1) sampai PBox (P18).
Proses
mengganti PBox (P3) dan
PBox (P4) pada i = 1 (FXl yang ke-17) di lampiran 12 (L-12) nilainya 00000000 karena
nilai Xl sama dengan nilai PBox (P1) setelah dilakukan operasi XOR. Proses
perhitungan manual modifikasi PBox ada pada lampiran 10 (L-10). Tabel 4.2 adalah
hasil modifikasi PBox.
Tabel 4.2 PBox dimodifikasi dengan menggunakan enkripsi input 0
PBox(1) = 580BC7DA
PBox(2) = EB742C6C
PBox(3) = 26CC1286
PBox(4) = E5ED9F9C
PBox(5) = A037815B
PBox(6) = 7E6301F6
PBox(7) = 8541918D
PBox(8) = 880862CC
PBox(9) = F5B8705B
PBox(10)= C38E57F6
PBox(11)= A2E318EA
PBox(12)= 1E6E775B
PBox(13)= 71D12FFA
PBox(14)= 531DDC15
PBox(15)=8BD48DCA
PBox(16)= 8F406CD2
PBox17)= 767C333A
PBox(18)= 63486277
Modifikasi SBox yang terdiri dari SBox1 =128, SBox2 = 128, SBox3 = 128 dan
SBox4 = 128, total keseluruhan proses modifikasi SBox adalah 512 iterasi. Proses
perhitungan satu iterasi SBox ada pada lampiran 28 (L-28) dan keseluruhan perubahan
SBox ada pada lampiran 34 (L-34).
4.2.2
Proses Enkripsi
Proses enkripsi diawali dengan mengkonversi Plaintext MATAHARI terlebih
dahulu dari kode ASCII ke heksadesimal M=4D A=41 T=54 A=41 H=48 A=41 R=52
I=49. Proses enkripsi dengan operasi Xl= Xl XOR PBox( i ) dan Xl
dikenakan proses
jaringan Feistel yaitu F(Xl)= (((s1,a+s2 mod 2^32) XOR s3,c)+s4,d) mod 2^ 32 . dan Xr
=F(Xl) XOR Xr dan diputar sebanyak 16 kali putaran. Proses 17 dan 18 dilakukan Xr =
Xr XOR P17 dan Xl = Xl XOR P18. Proses perhitungan manual ada pada Lampiran 30
4.2.3
Proses Dekripsi
Proses dekripsi diawali dengan hasil proses enkripsi berupa ciphertext diasumsikan
sebagai masukan yaitu 89 C8 07 A7 E6 77 CF 4C . Proses dekripsi dengan operasi Xl=
Xl XOR PBox( i ) dan Xl dikenakan proses jaringan Feistel yaitu F(Xl)= (((s1,a+s2 mod
2^32) XOR s3,c)+s4,d) mod 2^ 32 . dan Xr =F(Xl) XOR Xr dan diputar sebanyak 16
kali putaran. Pada putaran 2 dan 1 dilakukan Xr = Xr XOR P2 dan Xl = Xl XOR P1.
Proses perhitungan manual ada pada Lampiran 32 (L-32) dan hasil plaintext proses
dekripsi adalah MATAHARI dengan hexadesimal 89 C8 07 A7 E6 77 CF 4C
4.2.1 Analisa Hasil perangkat Lunak
Setelah dilakukan uji coba, secara umum program enkripsi dekripsi 64-bit atau lebih
dari 64-bit seperti pada lampiran 42 (L-42) dengan metode algoritma Blowfish dapat
berjalan dengan baik. Program enkripsi dan dekripsi ini dapat melakukan enkripsi dan
dekripsi dengan masukan dari pengguna berupa data atau mengambil data dengan text file
(.*TXT). Kelebihan dan kekurangan program ini sebagai berikut:
4.2.1.1 Kelebihan
1. Dengan hasil yang berbeda-beda untuk setiap hasil enkripsi, akan semakin
menyulitkan pemecahan ciphertext tanpa mengetahui key enkripsi dan dekripsi.
4.2.1.2 Kekurangan
1. Tampilan masih sederhana dan kurang menarik
2. Tidak disertai fasilitas untuk mengatasi permasalahan pengguna yang kehilangan
BAB V
KESIMPULAN DAN SARAN
5.1
Kesimpulan
Dari hasil uji coba yang dilakukan, secara umum program enkripsi dan dekripsi
dengan algoritma Blowfish dapat diambil beberapa kesimpulan:
1.
Secara umum program enkripsi dan dekripsi ini dapat berjalan dengan baik.
2.
Program dapat melakukan enkripsi data 64-bit atau lebih dari 64-bit.
3.
Program dapat melakukan proses enkripsi dan dekripsi dengan text file (*.txt)
5.2 Saran
Dari pengalaman selama pengerjaan tugas akhir ini, penulis ingin menyarankan hal
sebagai berikut :
1.
Ditambahkan mekanisme untuk mengatasi permasalahan penggunaan jika
mengalami kehilangan kunci.
2.
Program dapat melakukan proses enkripsi dan dekripsi berupa data gambar
(*.JPG, *.BMP)
DAFTAR PUSTAKA
[1]
Munir, Rinaldi, 2004, Kriptografi, Penerbit Informatika Bandung, Ban