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 yang

Telah 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 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. Kata kunci : enkripsi, dekripsi, subkey, plaintext, ciphertext, jaringan feistel

  

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. Keyword: encryption, decryption, subkey, plaintext, chipertext, feistel network

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 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 .............................................................. 49

  DAFTAR 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 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 (i+k). Tabel 2.1 menggambarkan contoh Caesar Cipher dengan kunci = 5

Tabel 2.1 Contoh Subsitusi Caesar Cipher dengan kunci = 5

  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 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 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 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 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 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 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

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, d

  1

  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 , = 9EbABF2C

  1,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