TUGAS AKHIR - Simulasi enkripsi dan dekripsi algoritma blowfish - USD Repository
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
2009
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
2009
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 yangTelah diputuskan dan kalah bukanlah pilihan.
Bila hari ini ada yang pergi Tentu esok ada yang tinggal, karena Hidup bukanlah milik masa lalu.
INTISARI
Kriptogafi adalah sebuah seni dan bidang keilmuan dalam penyandian informasi ataupesan 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. Kata kunci : enkripsi, dekripsi, subkey, plaintext, ciphertext, jaringan feistel
ABSTRACT
Cryptography is an art an subject knowledge in information coding or messages withpurpose 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. Keyword: encryption, decryption, subkey, plaintext, chipertext, feistel networkKATA 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 Daga, Heru, Ery dan Stenly.
DAFTAR ISI Halaman 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
1.5.Metodologi Penelitian .................................................................................................. 2
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
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
LAMPIRAN ................................................................................................................................ (L)
DAFTAR GAMBAR Halaman 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 Gambar 3.4.Diagram Alir Proses Jaringan Feistel ....................................................................... 29
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 ..................................................................... 46Gambar 4.9. Tampilan Hasil Key yang di-XOR-kan denga PBox .............................................. 47Gambar 4.10. Tampilan Hasil Modifikasi Enkripsi dengan Input string0 .................................. 48Gambar 4.11. .Tampilan Hasil Dekripsi pada From Progrees .................................................... 48 Gambar 4.12.Tampilan Hasil Dekripsi di From Utama .............................................................. 49DAFTAR TABEL Halaman Tabel 2.1.Contoh Subsitusi Ceaser Cipher ................................................................................... 8
Tabel 4.1.PBox yang telah di-XOR-kan dengan Kunci ............................................................... 50 Tabel 2.3.PBox dimodifikasi dengan menggunakan enkripsi input 0 ......................................... 51
BAB I 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 Blowfish
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
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 proses transformasi. Oleh karena itu jenis kunci sangat berhubungan 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.
Plaintext Ciphertext Plaintext DEKRIPSI ENKRIPSI
Gambar 2.1 Konsep Dasar Sistem Kriptografi[1]2.1.2 Kriptanalis
- Misalkan: C = Ciphertext P = Plaintext • Fungsi enkripsi E memetakan P ke C
- Fungsi dekripsi D memetakan C ke P
- Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal, kesamaan berikut harus benar
- Dengan menggunakan kunci K, fungsi enkripsi dan dekripsi menjadi: E
(C) = P (2.5)
Kekuatan algoritma kriptografi diukur dari banyaknya kerja yang dibutuhkan untuk
memecahkan data ciphertext menjadi plaintext. Kerja ini dapat diekivalenkan dengan waktu.
(P) = P (2.6)
K
(E
K
Kedua fungsi di atas memenuhi syarat sebagai berikut: D
K
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.
D
(P) = C (2.4)
K
(2.3)
(2.2)
(2.1)
Secara umum operasi enkripsi dan dekripsi secara matematis dapat dinotasikan sebagai berikut:
Semakin banyak usaha yang diperlukan, yang berarti juga semakin lama 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 R2. 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 (i+k). Tabel 2.1 menggambarkan contoh Caesar Cipher dengan kunci = 5
Tabel 2.1 Contoh Subsitusi Caesar Cipher dengan kunci = 5A B C D E F G H
I J K L M N O P Q S T U
V W
X Y Z F G H
I J K L M N O P Q R S T U
V W
X Y A B C D E 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
KUNCI
Plaintext Ciphertext Plaintext
ENKRIPSI DEKRIPSI
Gambar 2.2 Kriptografi Simetrik [1] Kunci yang digunakan pada kriptografi simetrik harus benar-benar dijagakerahasiannya 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 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 C = E(K,P) Kunci
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 saat pengiriman kunci pada media yang tidak aman seperti internet. Jika kunci ini
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
private key.Plaintext Chipertext Plaintext KUNCI PUBLIK KUNCI RAHASIA Gambar 2.4 menggambarkan model sistem kriptografi kunci publik.
ENKRIPSI DEKRIPSI
Gambar 2.4 Model Sistem Kriptografi Kunci Publik. [1] Keuntungan utama dari algoritma ini adalah memberikan jaminan keamanankepada 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 teratur agar panjangnya sama dengan ukuran blok yaitu 64-bit. Gambar 2.5
menggambarkan pemetaan yang dilakukan adalah pemetaan satu-satu dari blok
plaintext ke blok ciphertext.Penerima Pengirim Blok ciphertext Blok plaintext Algoritma Enkripsi Algoritma Dekripsi Blok plaintext Blok ciphertext
Gambar 2.5 Enkripsi Blok Cipher2.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
pada aliran bit data.....1101 Pembangkit aliran Aliran Kunci kunci
Kunci Ciphertext Plaintext
…..0101 …1000
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 byte terakhir dihapus dari blok dekripsi.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).
Contoh 2.1: Panjang maksimum kunci adalah 7 blok, masing-masing 32-bit P = P
XOR K , P = P
XOR K , P = P
XOR K , P = P
XOR K
1
1
1
2
2
2
3
3
3
4
4
4
, P = P
XOR K P = P
XOR K P = P
XOR K ….., P = P
XOR K ,
5 5 5,
6 6 6,
7 7 7,
15
15
1 P = P
XOR K , P = P
XOR K , P =P
XOR K
16
16
2
18
17
2
18
18
3
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.
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 ditukar menjadi Xr dan Xr ditukar menjadi Xl
4. Xl 5. Pertukaran dilakukan sebanyak 16 kali putaran.
XOR P17 dan Xl = Xl XOR P18
6. Xr = Xr sehingga menjadi 64-bit kembali.
7. Menyatukan kembali Xl dan Xr
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 ditukar menjadi Xr dan Xr ditukar menjadi Xl
4. Xl
5. Pertukaran dilakukan sebanyak 16 kali putaran
XOR P1 dan Xl = Xl XOR P1
6. Xr = Xr sehingga menjadi 64-bit kembali.
7. Proses terakhir adalah menyatukan Xl dan Xr
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 kotak-S tersebut dinamakan kotak m x n kotak- S. Contoh 2.2 menunjukkan proses penentuan PBox yang terdapat dalam algoritma Blowfish.
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 , S , S , S dengan a, b, c, d1
2
3
4 S , S 1 198 2,107
S S
32
3,154 4,
Kemudian untuk mencari keluaran pada kotak-S dapat dicari
dengan penelusuran tabel array, seperti pada lampiran.
S = BE0E1777 S , = 9EbABF2C1,198 2 107
S , = 0A121386 S = 9A86EE22
3 154 4,32
Contoh 2.2 merupakan masukan dari operasi tabel array yang dijadikan sebagai indeks PBox, dan keluarannya ditelusuri di dalam PBox seperti pada lampiran.
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