TEKNIK PENGAMANAN DATA MENGGUNAKAN ALGORITMA BLOWFISH

SKRIPSI

Ditulis dan diajukan untuk memenuhi sebagian persyaratan Memperoleh gelar Sarjana Sains Matematika

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SEBELAS MARET

SURAKARTA 2010

SKRIPSI TEKNIK PENGAMANAN DATA MENGGUNAKAN ALGORITMA BLOWFISH

yang disiapkan dan disusun oleh PRASETYO BAWONO NIM. M0103045

dibimbing oleh

Pembimbing I, Pembimbing II,

Drs. YS. Palgunadi, M.Sc Drs. Siswanto, M.Si NIP. 19560407 198303 1 004

NIP. 19670813 199203 1 002

telah dipertahankan di depan Dewan Penguji pada hari Kamis, tanggal 28 Januari 2010 dan dinyatakan telah memenuhi syarat.

Anggota Tim Penguji

Tanda Tangan

1. Titin Sri Martini, S.Si, M.Kom

1 . ……………………………………... NIP. 19750120 200812 2 001

2. Bowo Winarno, S.Si, M.Kom

2 . ……………………………………... NIP. 19810430 200812 1 001

3. DR. Sutanto, DEA

3 . ……………………………………... NIP. 19710302 199603 1 001

Disahkan oleh Fakultas Matematika dan Ilmu Pengetahuan Alam Dekan,

Ketua Jurusan Matematika

Prof. Drs. Sutarno, M.Sc, Ph.D

Drs. Sutrima, M.Si

NIP. 19600809 198612 1 001 NIP. 19661007 199302 1 001

ABSTRAK

Prasetyo Bawono, 2010. TEKNIK PENGAMANAN DATA MENGGUNAKAN ALGORITMA BLOWFISH. Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sebelas Maret.

Kriptografi merupakan suatu ilmu untuk menjaga kerahasiaan data / pesan sehingga data tidak dapat diketahui oleh pihak lain. Algoritma Blowfish merupakan salah satu algoritma kriptografi modern yang telah teruji dan banyak dipakai oleh berbagai pihak. Sistem operasi OpenBSD memasukkan Blowfish sebagai algoritma enkripsi utama dalam mengamankan user di dalam sistemnya (user authentication). Selain itu, PuTTY sebuah program SSH (Secure Shell) Client untuk Microsoft® Windows® pun juga menggunakan Blowfish sebagai salah satu metode enkripsinya.

Algoritma Blowfish merupakan algoritma yang berjalan pada mode cipher blok dengan operasi yang sangat sederhana. Blowfish menggunakan operasi penambahan, ekslusif OR (XOR) dan penelusuran tabel. Tujuan penelitian ini adalah membuat aplikasi sederhana enkripsi data teks (pesan) dengan menggunakan algoritma Blowfish dalam empat mode enkripsi cipher blok: ECB (Electronic Code Book), CBC (Cipher Block Chainning), CFB (Cipher FeedBack) dan OFB (Output FeedBack).

Metode yang digunakan dalam menulis skripsi adalah studi literatur tentang keamanan data, kriptografi (algoritma Blowfish), perencanaan sistem, pembuatan aplikasi algoritma Blowfish, pengujian dan analisa aplikasi algoritma Blowfish dengan notasi Big O.

Evaluasi terhadap aplikasi enkripsi pesan menggunakan algoritma Blowfish dalam empat mode terhadap tiga buah file dengan ukuran yang berbeda- beda (22 bytes, 202 Kilobytes dan 1,1 Megabytes) menunjukkan hasil selisih waktu yang tidak jauh berbeda. Sedangkan untuk kompleksitas waktu dari ke- empat mode adalah O(n), dimana n merupakan banyaknya karakter yang dienkripsi.

Kata kunci : sistem enkripsi data, algoritma kunci simetri, mode enkripsi cipher blok, Blowfish, kriptografi

ABSTRACT

Prasetyo Bawono, 2010. DATA SECURITY SYSTEM USING

BLOWFISH ALGORITHM. Faculty of Mathemathics and Natural Sciences, Sebelas Maret University.

Cryptography is a science aiming to keep the data confidentiality hindering it from being eavesdropped by other parties. One of modern cryptography using a symmetric key method that has been tested and widely used is Blowfish algorithm. It is included in OpenBSD as main encryption algorithm to secure users in the system (user authentication). PuTTY, a SSH (Secure Shell) Client program for Microsoft® Windows® also uses Blowfish as one of its encryption method.

Blowfish is an algorithm that runs on a block cipher with a very simple operation. It uses addition operation, XOR and look-up tables. The purpose of this research is to create a simple application of text data (messages) encryption by using Blowfish algorithm in four block cipher encryption modes: ECB (Electronic Code Book ), CBC (Cipher Block Chaining), CFB (Cipher FeedBack), and OFB (Output FeedBack).

The method used in writing this thesis is a literature study on data security, cryptography (especially Blowfish algorithm), system planning, developing of Blowfish algorithm application, and tests and analysis of Blowfish algorithm application using Big Oh notation.

Evaluation of the messages encryption application using Blowfish algorithm in four modes to three files with different sizes (22 bytes, 202 Kilobytes, and 1,1 Megabytes) showed that there was no significant difference in the run time. However, the time complexity of the all four modes was O(n), where n was the total characters encrypted.

Keywords : data encryptions system, symmetric key algorithm, block cipher encryption mode, Blowfish, cryptography.

KATA PENGANTAR

Assalamu’alaikum Warahmatullahi Wabarokatuh. Bismillahirrahmaanirrahiim . Segala puji hanya milik Allah ‘Azza Wa

Jalla. Rabb semesta alam yang telah memberikan segala nikmat, sehingga skripsi

yang berjudul “Teknik Pengamanan Data Menggunakan Algoritma Blowfish”

dapat terselesaikan. Penulis juga menyadari akan keterbatasan yang dimiliki, ketergantungan

akan bantuan dan dukungan pribadi-pribadi disekitarnya. Terselesaikannya skripsi ini tidak terlepas dari bantuan berbagai pihak. Untuk itu, penulis mengucapkan terima kasih kepada :

1. Drs. YS. Palgunadi, M.Sc, selaku pembimbing I dan Drs. Siswanto, M.Si, selaku pembimbing II yang telah meluangkan waktunya untuk membimbing, mengarahkan, dan memberikan motivasi kepada penulis dalam penyusunan skripsi ini.

2. Umi Salamah, S.Si, M.Kom, selaku dosen pembimbing akademik atas segala kesabarannya selama ini.

3. Drs. Sutrimo, M.Si, selaku Ketua Jurusan Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sebelas Maret.

4. Prof. Drs. Sutarno, M.Sc, Ph.D, selaku Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sebelas Maret.

5. Ibunda, Ayahanda, kakak-kakakku, adikku, dan seluruh keluarga yang telah mendoakan, dan banyak memberikan bantuan, serta dukungan kepada penulis.

6. DR. Sutanto, DEA., selaku kepala UPT PUSKOM UNS, yang telah menyediakan berbagai fasilitas kepada penulis.

7. Titin Sri Martini, S.Si, M.Kom dan Bowo Winarno, S.Si, M.Kom selaku dosen penguji.

8. Rekan-rekan di UPT PUSKOM UNS dan di PT. Javatechno Mandiri Indonesia, atas motivasi, dukungan dan bantuannya selama ini.

9. Saudaraku di jurusan Matematika FMIPA UNS dan Syiar Kegiatan Islam (SKI) FMIPA UNS.

10. Saudaraku di Wisma Madina.

11. Dan semua pihak yang tidak dapat disebutkan satu persatu dalam tulisan ini.

Penulis menyadari bahwa skripsi ini masih jauh dari sempurna, untuk itu saran dan kritik yang bersifat membangun sangat diharapkan. Akhirnya semoga karya tulis ini dapat bermanfaat bagi pembaca dan dapat memberikan sumbangan kebaikan pada perkembangan peradaban ilmu pengetahuan dan teknologi informasi. Wassalamu’alaikum Warahmatullahi Wabarokatuh.

Surakarta, Januari 2010

Penulis

DAFTAR LAMPIRAN

Halaman Lampiran 1 8366 Digit HEX dari Pi (Key Expansion) ...........................

48 Lampiran 2 Form Login (LoginForm.java) .............................................

51 Lampiran 3 Form Utama (FuguView.java) .............................................

54 Lampiran 4 Form Enkripsi (BlowfishEnc.java) .......................................

57 Lampiran 5 Form Dekripsi (BlowfishDec.java) ......................................

69 Lampiran 6 Class Koneksi Database (DriverConnection.java) ...............

80 Lampiran 7 Class Algoritma Blowfish (BlowfishEngine.java) ...............

82 Lampiran 8 Class Mode Enkripsi CBC (CBCBlockCipher.java) ............

95 Lampiran 9 Class Mode Enkripsi CFB (CFBBlockCipher.java) ............. 101 Lampiran 10 Class Mode Enkripsi OFB (OFBBlockCipher.java) ............ 107

BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Perkembangan Information and Communication Technology (ICT) atau Teknologi Informasi dan Komunikasi (TIK) dari waktu ke waktu kian meningkat. Kebutuhan manusia akan perangkat informasi dan komunikasi seakan menjadi kebutuhan yang tidak terpisahkan dalam kehidupan sehari-hari. Setiap hari, inovasi dalam bidang ini senantiasa dinamis. Salah satu contohnya adalah komunikasi data pada jaringan komputer.

Jaringan komputer pada awalnya dikembangkan untuk menghubungkan antar pihak yang saling mempercayai, dengan tujuan untuk saling menukar informasi (data). Namun seiring berjalannya waktu dan berkembangnya ilmu pengetahuan, ada salah satu aspek pendukung yang sangat diperlukan, yaitu masalah keamanan data.

Dibalik kemudahan serta efisiensi biaya dalam hal berkomunikasi, berbagai macam jenis komunikasi data yang ada belum tentu aman untuk digunakan, karena belum tentu adanya standar keamanan yang diterapkan untuk masing-masing perangkat komunikasi data tersebut. Salah satu contoh yang pernah terjadi adalah adanya penyadapan pembicaraan melalui telepon antara Presiden B.J. Habibie dan Jaksa Agung Andi Ghalib pada tahun 1999, sebagaimana yang termuat dalam majalah Panji Masyarakat tanggal 24 Februari 1999. Hal ini semakin membuktikan bahwa keamanan data (pada contoh ini adalah data suara) sangat dibutuhkan. Apalagi jika percakapan informasi yang terjadi adalah bersifat rahasia dan diterapkan dalam ruang lingkup kenegaraan.

Solusi yang dapat dilakukan adalah dengan cara mengengkripsi data (teks, suara dan visual). Teknik ini memiliki tingkat keamanan yang jauh lebih tinggi. Enkripsi dilakukan pada data sebelum data tersebut dikirimkan, sehingga pihak yang tidak berhak tidak dapat memahami data yang dikirimkan tersebut meskipun data yang telah terenkripsi berhasil diakses/didapatkan. Proses selanjutnya adalah Solusi yang dapat dilakukan adalah dengan cara mengengkripsi data (teks, suara dan visual). Teknik ini memiliki tingkat keamanan yang jauh lebih tinggi. Enkripsi dilakukan pada data sebelum data tersebut dikirimkan, sehingga pihak yang tidak berhak tidak dapat memahami data yang dikirimkan tersebut meskipun data yang telah terenkripsi berhasil diakses/didapatkan. Proses selanjutnya adalah

Enkripsi dan dekripsi merupakan bagian dari kinerja sebuah algoritma kriptografi. Algoritma enkripsi yang akan digunakan dalam tugas akhir ini adalah algoritma Blowfish.

1.2 Perumusan Masalah

Berdasarkan latar belakang masalah, rumusan masalah dalam penulisan skripsi ini adalah

1. Bagaimana menentukan proses enkripsi dan dekripsi data teks menggunakan algoritma Blowfish ?

2. Bagaimana membuat program aplikasi komputer yang dapat melakukan enkripsi dan dekripsi data berdasarkan algoritma Blowfish ?

1.3 Batasan Masalah

Batasan masalah yang digunakan dalam penulisan skripsi ini adalah

1. Data yang akan dienkripsi dan dekripsi adalah data digital, terutama data teks.

2. Perangkat lunak penerapan teknik pengamanan data ini dibuat dengan menggunakan bahasa pemrograman Java 2 Standard Edition (J2SE).

1.4 Tujuan Penelitian

Tujuan penelitian dalam skripsi ini adalah

1. Dapat menentukan proses enkripsi dan dekripsi menggunakan algoritma Blowfish .

2. Dapat membuat program aplikasi komputer yang dapat melakukan enkripsi dan dekripsi data berdasarkan algoritma Blowfish.

1.5 Manfaat Penelitian

Manfaat penelitian dari skripsi adalah

1. Manfaat teoritis Secara teoritis, manfaat yang diperoleh adalah dapat memahami proses enkripsi dan dekripsi data menggunakan algoritma Blowfish.

2. Manfaat praktis Sedangkan manfaat praktis yang diperoleh adalah dapat membangun aplikasi perangkat lunak yang akan mengenkripsi data teks menggunakan algoritma Blowfish . Serta mengetahui, mempermudah dan mempercepat proses pengamanan data dengan menggunakan perangkat lunak tersebut.

BAB II LANDASAN TEORI

2.1 Tinjauan Pustaka

2.1.1 Algoritma

Menurut Budiyanto (2003), algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis.

2.1.2 Lambang Flowchart (Diagram Alir)

Arti dari lambang yang digunakan dalam pembuatan flowchart yaitu,

Simbol Terminator

Simbol Proses

Simbol Keputusan

Simbol Alur

Simbol Dokumen

Gambar 2.1. Simbol Umum Flowchart

2.1.3 Keamanan Data

Secara umum data dibagi menjadi dua, yaitu: data yang bersifat rahasia dan tidak bersifat rahasia. Dalam hal ini, pesan yang diperhatikan dan perlu diamankan adalah pesan yang bersifat rahasia.

Beberapa ancaman dan serangan yang harus diperhatikan dalam sistem keamanan data menurut Susanto (2004), adalah sebagai berikut :

1. Leakage (kebocoran) adalah pengambilan informasi oleh penerima yang tidak berhak.

2. Tampering adalah pengubahan informasi yang tidak legal

3. Vandalism adalah gangguan operasi sistem tertentu, pelaku tidak mengharap keuntungan apapun.

Metode penyerangan yang biasa digunakan untuk mengganggu keamanan data menurut Susanto (2004), antara lain :

1. Eavesdropping, mendapatkan duplikasi pesan tanpa ijin.

2. Masquerading, mengirim atau menerima pesan menggunakan identitas lain tanpa ijin mereka.

3. Message Tampering, mencegat atau menangkap pesan dan mengubah isinya sebelum dilanjutkan ke pihak penerima sebenarnya. ”Man in the middle attack ” adalah bentuk message tampering dengan mencegat pesan pertama pada pertukaran kunci enkripsi pada pembentukan suatu saluran yang aman. Penyerang menyisipkan kunci lain yang memungkinkan dia untuk mendekripsi pesan berikutnya sebelum dienkripsi oleh penerima.

4. Replaying, menyimpan pesan yang ditangkap untuk pemakaian berikutnya.

5. Denial of service, membanjiri saluran atau sumber lain dengan beberapa pesan yang bertujuan untuk menggagalkan pengaksesan oleh pemakai lain.

Dalam keamanan data perlu diadakan pemisahan antara kebijakan dan mekanisme kemanan, yang akan membantu memisahkan kebutuhan implementasinya, karena kebijakan dapat menspesifikasikan kebutuhan dan mekanisme dapat menerapkan spesifikasi kebijakan tersebut.

Menurut Susanto (2004), sebuah kebijakan keamanan meliputi :

1. Access Control, yaitu perlindungan data terhadap pemakaian tak legal.

2. Authentication, yaitu menyediakan jaminan identitas seseorang.

3. Confidentially (kerahasiaan), yaitu pengungkapan terhadap identitas tak legal.

4. Nonrepudiation (penyangkalan), yaitu melindungi terhadap penolakan komunikasi yang sudah pernah dilakukan.

Untuk mencapai keamanan tersebut menurut Susanto (2004), langkah atau cara yang bisa ditempuh, yaitu :

1. Enkripsi, dapat digunakan untuk menyediakan kerahasiaan pesan, Authentication dan perlindungan identitas.

2. Digital Signature (tanda tangan digital), dapat digunakan untuk menyediakan authentication , perlindungan identitas, dan nonrepudiation

3. Checksum Algorithm (Hash), dapat digunakan untuk menyediakan perlindungan integritas.

2.1.4 Kriptografi

Menurut Schneier (1996), kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan. Menurut Menezes et al (1996), kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, serta otentikasi.

Menurut Munir (2006), kriptografi (cryptography) berasal dari Bahasa Yunani: ”cryptos” artinya ”secret” (rahasia), sedangkan ”graphein” artinya ”writing” (tulisan), Jadi, kriptografi berarti ”secret writing” (tulisan rahasia).

Definisi yang digunakan di dalam buku-buku yang lama (sebelum tahun 1980-an) menyatakan bahwa kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. Definisi ini mungkin cocok pada masa lalu di mana kriptografi digunakan untuk keamanan komunikasi penting seperti komunikasi di kalangan militer, diplomat, dan mata-mata (spy). Namun saat ini kriptografi lebih dari sekadar privacy, tetapi juga untuk tujuan data integrity, authentication, dan non- repudation .

Menurut Munir (2006), di dalam kriptografi terdapat beberapa terminologi/istilah penting yang perlu diketahui yaitu :

1. Pesan, Plainteks, dan Cipherteks Pesan (message) adalah data atau informasi yang dapat dibaca atau dimengerti maknanya. Nama lain untuk pesan adalah plainteks (plaintext) atau teks jelas (cleartext). Pesan dapat berupa data atau informasi yang dikirim (melalui kurir, saluran telekomunikasi, dsb) atau yang disimpan di dalam media 1. Pesan, Plainteks, dan Cipherteks Pesan (message) adalah data atau informasi yang dapat dibaca atau dimengerti maknanya. Nama lain untuk pesan adalah plainteks (plaintext) atau teks jelas (cleartext). Pesan dapat berupa data atau informasi yang dikirim (melalui kurir, saluran telekomunikasi, dsb) atau yang disimpan di dalam media

2. Pengirim dan penerima Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima (receiver) adalah entitas yang menerima pesan. Entitas disini dapat berupa orang, mesin (komputer), kartu kredit, dan sebagainya. Pengirim tentu menginginkan pesan yang dikirim tidak dapat dibaca/diketahui oleh pihak lain, kecuali yang berhak menerimanya. Maka, pesan harus disandikan menjadi cipherteks.

3. Enkripsi dan Dekripsi Proses menyandikan plainteks menjadi cipherteks disebut enkripsi (encryption) atau enciphering (standard nama menurut ISO 7498-2). Sedangkan proses mengembalikan cipherteks menjadi plainteks semula dinamakan dekripsi (decryption) atau deciphering (standard nama menurut ISO 7498-2 ). Istilah encryption of data in motion mengacu pada enkripsi pesan yang ditransmisikan melalui saluran komunikasi. Sedangkan istilah encryption of data at-rest mengacu pada enkripsi dokumen yang disimpan di dalam storage.

4. Cipher dan Kunci Algoritma kriptografi disebut juga cipher, yaitu aturan untuk enciphering dan deciphering , atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Kunci (key) adalah parameter yang digunakan untuk transformasi enciphering dan deciphering. Kunci biasanya berupa string atau deretan bilangan.

Gambar 2.2. Skema Enkripsi dan Dekripsi Plainteks merupakan data masukan berupa teks berkode standar ASCII (American Standard Code for Information Interchange). ASCII merupakan suatu standar internasional dalam kode huruf dan simbol seperti halnya Hex dan Unicode, tetapi ASCII lebih bersifat universal. Kode ASCII memiliki komposisi bilangan biner sebanyak 8 bit. Dimulai dari 00000000 hingga 11111111. Total kombinasi yang dihasilkan sebanyak 256, yang dimulai dari kode 0 hingga 255 dalam sistem bilangan Desimal.

Menurut Anjar Syafari (2007), Proses enkripsi dan deskripsi secara matematis diterangkan sebagai berikut :

E K (M) = C (Proses Enkripsi)

D K (C) = M (Proses Deskripsi) Keterangan :

E K : Enkripsi.

D K : Deskripsi. M

: Message (Pesan sebelum dienkripsi)

C : Cipher (Pesan setelah dienkrisi)

Tipe-tipe cipher :

Ciphers

Classical

Rotor Machine

Public Key

Private Key

Stream Chiper Block Cipher

Gambar 2.3. Skema Tipe-tipe Cipher

Menurut Munir (2006), Algoritma kunci simetri mengacu pada metode enkripsi yang dalam hal ini baik pengirim maupun penerima memiliki kunci yang sama. Algoritma kunci simetri modern beroperasi dalam mode bit dan dapat dikelompokkan menjadi dua kategori:

a. Cipher aliran (Stream Cipher) Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk bit tunggal yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan bit per bit. Cipher aliran mengenkripsi satu bit setiap kali.

b. Cipher blok (Block Cipher) Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya. Misalnya, panjang blok adalah 64 bit, maka itu berarti algoritma enkripsi memperlakukan 8 karakter setiap kali enkripsi (1 karakter = 8 bit dalam pengkodean ASCII). Cipher blok mengenkripsi satu blok bit setiap kali.

5. Sistem Kriptografi (cryptosystem) Menurut Schneier (1996), kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi. Sistem kriptografi (cryptosystem) adalah kumpulan yang terdiri dari algoritma kriptografi, semua plainteks dan cipherteks yang mungkin, dan kunci.

6. Penyadap Penyadap (eavesdropper) adalah orang yang mencoba menangkap pesan selama ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi sebanyak-banyaknya mengenai sistem kriptogafi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan cipherteks. Nama lain penyadap: enemy, adversary, intruder, interceptor, bad guy.

7. Kriptoanalis dan Kriptologi Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang berlawanan yaitu kriptanalisis. Kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis. Kriptologi (cryptology) adalah studi mengenai kriptografi dan kriptanalisis.

Kriptologi

Kriptografi Kriptanalis

Ilmu dan seni untuk menjaga Ilmu dan seni untuk memecahkan keamanan pesan

pesan yang terenkripsi (cipherteks)

Gambar 2.4. Kriptologi, Kriptografi dan Kriptanalisis

2.1.5 Cipher Blok

Pada cipher blok, plainteks dibagi menjadi beberapa blok dengan panjang tetap. Ketika melakukan enkripsi, cipher blok mungkin saja menerima masukan 128-bit plainteks dan mengeluarkan 128-bit keluaran cipherteks. Transformasi selengkapnya dikontrol menggunakan masukan kedua, yaitu kunci. Begitu pula halnya dengan proses dekripsi, algoritma untuk melakukan dekripsi akan menerima masukan 128-bit cipherteks dan kunci kemudian menghasilkan keluaran 128-bit plainteks aslinya. Cipher blok mengenkripsi satu blok bit setiap kali.

Tabel 2.1 Beberapa contoh blok cipher

Cipher Blok

Ukuran Kunci (Bits)

Ukuran Blok Tahun

DES

56 64 1976 3DES

64 1978 AES

112 atau 168

128, 192 atau 256 128 1998 Minimum 0, maksimum 2040,

RC6 128 1998 multiple 8 bits, default 128 bits

Minimum 32, maksimum 448, Blowfish

64 1993 multiple 8 bits, default 128 bits

Minimum 128, maksimum 256, CAST-256

128 1998 multiple 32 bits, default 128 bits

Untuk lebih jelasnya, proses enkripsi dan dekripsi pada cipher blok dapat dilihat pada gambar berikut :

Plainteks

Kunci

Enkripsi Cipher Blok

Cipherteks

Gambar 2.5. Enkripsi Pada Cipher Blok

Cipherteks

Kunci

Dekripsi Cipher Blok

Plainteks

Gambar 2.6. Dekripsi Pada Cipher Blok

2.1.6 Cipher Berulang

Menurut Randy (2006), cipher berulang merupakan fungsi transformasi sederhana yang mengubah plainteks menjadi cipherteks dengan proses perulangan sejumlah kali. Pada setiap putaran digunakan kunci putaran yang dikombinasikan dengan plainteks. Secara formal, cipher berulang dinyatakan sebagai berikut :

Ci = f(Ci-1, P i )

Keterangan :

i = 1, 2, ..., r (r adalah jumlah putaran) P i = subkunci pada putaran ke-i

fi = fungsi transformasi (di dalamnya terdapat fungsi substitusi, permutasi, dan/atau ekspansi, kompresi) Plainteks dinyatakan dengan C 0 dan cipherteks dinyatakan dengan C r .

2.1.7 Jaringan Feistel (Feistel Network)

Menurut Randy (2006), model jaringan Feistel digunakan oleh hampir semua algoritma cipher blok. Jaringan ini ditemukan oleh Horst Feistel pada tahun 1970. Secara formal, operasi transformasi pada jaringan Feistel secara umum dapat dinyatakan sebagai:

(X L ) i = (X R ) i -1

(X R ) i = (X L ) i - 1 ⊕ f ((X R ) i -1, P i )

Keterangan :

X L = n-bit plainteks bagian kiri

X R = n-bit plainteks bagian kanan Dengan X (blok plainteks) = X L +X R , n merupakan setengah dari blok plainteks X

Proses enkripsi dan dekripsi dapat menggunakan model jaringan Feistel yang sama. Model jaringan Feistel bersifat reversible (dua arah) untuk proses enkripsi dan dekripsi. Sifat reversible ini memungkinkan mendekripsi cipherteks menjadi plainteks tanpa membuat algoritma baru. Contoh:

(X L ) i –1 ⊕ f((X R ) i – 1, P i ) ⊕ f((X R ) i – 1, P i ) = (X L ) i –1

Selain itu, sifat reversible tidak bergantung pada fungsi f sehingga fungsi f dapat dibuat serumit mungkin. Skema jaringan Feistel dapat dilihat pada Gambar

(X L ) i -1

Pi

(X R ) i -1

(X L ) i (X R ) i

Gambar 2.7. Skema Jaringan Feistel Secara Umum

2.1.8 Kotak-S (S-Box)

Menurut Munir (2006), Kotak-S adalah matriks yang berisi substitusi sederhana yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain. Pada kebanyakan algoritma cipher blok, Kotak-S memetakan m bit masukan menjadi n bit keluaran, sehingga Kotak-S tersebut dinamakan kotak m x n S-Box.

Kotak-S merupakan satu-satunya langkah nirlanjar (non-linear) di dalam algoritma, karena operasinya adalah look-up table. Masukan dari operasi look-up table dijadikan sebagai indeks Kotak-S, dan keluarannya adalah masukan di dalam Kotak-S.

Perancangan Kotak-S menjadi isu penting karena Kotak-S harus dirancang sedemikian sehingga kekuatan

kriptografinya bagus dan mudah diimplementasikan. Ada empat cara (pendekatan) yang dapat digunakan dalam mengisi Kotak-S:

1. Dipilih secara acak Untuk Kotak-S yang kecil, cara pengisian secara acak tidak aman, namun untuk Kotak-S yang besar cara ini cukup baik.

2. Dipilih secara acak lalu diuji Sama halnya seperti sebelumnya, namun nilai acak yang bangkit akan diuji apakah memenuhi sifat tertentu.

3. Dibuat oleh orang (man-made) Masukan di dalam Kotak-S dibangkitkan dengan teknik yang lebih intuitif.

4. Dihitung secara matematis (math-mode) Masukan di dalam Kotak-S dibangkitkan berdasarkan prinsip matematika yang terbukti aman dari serangan kriptanalis.

2.1.9 Algoritma Kriptografi Blowfish

Menurut Randy (2006), Blowfish adalah sebuah algoritma kriptografi yang beroperasi pada mode blok. Algoritma Blowfish merupakan algoritma yang diciptakan oleh seorang cryptanalyst bernama Bruce Schneier pada tahun 1993. Algoritma Blowfish termasuk ke dalam kriptografi kunci simetrik (Symmetric Cryptosystem ), dan metoda enkripsinya serupa dengan DES (Data Encryption Standard-Like Cipher ). Algoritma ini ditujukan untuk mikroprosessor besar (32 bit ke atas dengan cache data yang besar).

Algoritma Blowfish terdiri dari dua bagian yaitu ekspansi kunci dan enkripsi data. Ekspansi kunci mengubah sebuah kunci dengan panjang maksimal 448 bit kepada beberapa array subkunci dengan ukuran total 4168 byte. Secara umum, algoritma Blowfish dikembangkan untuk memenuhi kriteria sebagai berikut :

a) Cepat, pada implementasi yang optimal Blowfish dapat mencapai kecepatan

26 clock cycle per byte

b) Ringan, Blowfish dapat berjalan pada memori kurang dari 5KB

c) Sederhana, Blowfish hanya menggunakan operasi yang sederhana, yakni : penambahan (addition), XOR (Ekslusif OR), dan penelusuran tabel (table lookup ) pada bilangan yang di operasikan (operand) 32-bit

d) Tingkat keamanan yang variatif, panjang kunci Blowfish dapat bervariasi (minimum 32 bit, maksimum 448 bit, multiple (kelipatan) 8 bit, default 128 bit).

Algoritma Blowfish merupakan algoritma yang kuat, dan sampai saat ini belum ditemukan kelemahan yang berarti. Algoritma Blowfish pun dapat digabungkan dengan algoritma-algoritma enkripsi lainnya dalam mengenkripsi sebuah informasi/pesan untuk lebih menjamin isi dari pesan tersebut.

Enkripsi data terdiri dari sebuah fungsi sederhana yang mengalami putaran atau iterasi sebanyak 16 kali. Setiap putaran terdiri dari sebuah permutasi yang bergantung pada kunci dan substitusi yang bergantung pada kunci dan data. Seluruh operasi berupa penambahan dan XOR ( ⊕) dengan kata sepanjang 32 bit.

Operasi tambahan yang digunakan hanya berupa data look-up terhadap array dengan empat indeks yang dilakukan setiap putaran.

Blowfish menggunakan sejumlah besar subkunci. Kunci-kunci tersebut harus dibangkitkan terlebih dahulu sebelum proses enkripsi dan dekripsi data dilakukan.

Menurut Sukmawan (2000), alur proses enkripsi algoritma Blowfish dapat dijelaskan sebagai berikut:

1. P-array terdiri dari 18 buah subkunci dengan ukuran 32 bit:

P 1 ,P 2 , ..., P 18

2. Empat buah Kotak-S dengan ukuran 32 bit mempunyai masukan sebanyak 256 buah. Kotak-kotak tersebut adalah:

S 1,0 ,S 1,1 , ..., S 1,255 S 2,0 ,S 2,1 , ..., S 2,255 S 3,0 ,S 3,1 , ..., S 3,255 S 4,0 ,S 4,1 , ..., S 4,255

Subkunci dibangkitkan dengan menggunakan algoritma Blowfish.

3. Masukan terhadap jaringan Feistel ini adalah X, yang merupakan elemen data (plainteks) dengan ukuran 64-bit. Bila kurang dari 64-bit, maka akan dilakukan proses padding (penambahan bit).

4. Bagi X menjadi setengah bagian, yaitu dengan ukuran 32-bit. 32-bit pertama disebut X L , 32-bit yang kedua disebut X R .

5. Lakukan langkah-langkah berikut dalam 16 putaran (iterasi):

X L =X L ⊕P i

X R = F(X L ) ⊕X R Kemudian tukar X L dengan X R .

Keterangan:

i = 1, 2, …, 16 (menunjukkan nomor putaran/iterasi)

6. Setelah melakukan perulangan yang ke-16, lakukan lagi proses penukaran X L dengan X R .

7. Lakukan operasi XOR ( ⊕), yaitu : X R =X R ⊕P 17

8. Lakukan operasi XOR ( ⊕), yaitu : X L =X L ⊕P 18

9. Gabungkan kembali X L dan X R , yaitu : X = X R +X L Fungsi F yang terdapat pada jaringan Feistel didefinisikan sebagai berikut:

1. Bagi X L menjadi empat bagian yang berukuran 8 bit. Keempat bagian yang dihasilkan adalah a, b, c, dan d.

2. Fungsi F(X L ) didefinisikan sebagai berikut:

32 F(X 32 L ) = ((S 1,a +S 2,b mod 2 ) ⊕S 3,c )+S 4,d mod 2 Proses dekripsi dilakukan dengan langkah yang sama dengan proses enkripsi, kecuali P 1 ,P 2 , ..., P 18 digunakan dengan urutan terbalik dari proses enkripsi.

Gambar 2.8 Skema fungsi F pada algoritma Blowfish

Implementasi algoritma Blowfish yang memerlukan waktu cepat harus mengurangi jumlah putaran dan memastikan bahwa semua subkunci tersimpan dalam cache (penyimpanan sementara).

Karena algoritma ini merupakan algoritma yang sudah termasuk lama, tentu saja ada beberapa usaha kriptanalisis yang dilakukan terhadap algoritma ini, antara lain adalah:

1. John Kelsey membuat sebuah attack yang dapat mematahkan 3 iterasi Blowfish , namun tidak dapat mengembangkannya lebih lanjut. Attack ini

melakukan eksploitasi pada fungsi f dan fakta bahwa penambahan mod 2 32 dan XOR tidak commute.

2. Vikramjit Singh Chhabra mencari cara untuk menerapkan brute-force key search machine.

3. Serge Vaudenay melakukan penelitian pada varian Blowfish yang telah disederhanakan, dengan S-aBox yang diketahui, dan tidak key-dependent. Untuk varian ini, attack yang berbeda dapat menemukan P-Array dengan 28r+1 plainteks yang telah dipilih (r merupakan jumlah iterasi). Attack ini tidak mungkin dilakukan pada Blowfish dengan 8-iterasi dan lebih, karena lebih banyak plainteks yang dibutuhkan daripada yang dapat dibangkitkan dengan 64-bit cipher blok.

4. Tesis Ph.D milik Vincent Rijmen mencantumkan second-order differential attack pada 4 iterasi Blowfish. Namun, attack tersebut tidak dapat dilanjutkan lagi untuk iterasi selanjutnya.

2.1.10 Mode Operasi Enkripsi Cipher Blok

Pada algoritma kriptografi yang beroperasi pada cipher blok, dikenal beberapa mode operasi. Empat mode operasi yang lazim digunakan pada cipher blok adalah:

1. Electronic Code Book (ECB) Pada mode ECB, setiap mode plainteks M i dienkripsi secara individual dan independen menjadi blok cipherteks C i . Secara matematis proses enkripsi dengan mode ECB dapat dinyatakan sebagai berikut:

C i =E K (M i )

dan proses dekripsi sebagai berikut:

M i =D K (C i )

Dalam hal ini, M i dan C i merupakan blok plainteks dan cipherteks ke-i. Skema enkripsi dan dekripsi dengan mode ECB dapat dilihat pada Gambar

2.9 ENKRIPSI

DEKRIPSI Blok Plainteks M 1 Blok Cipherteks C 1

m 1 m 2 m .. m n

c 1 c 2 c ... c n

M = (m 1, m 2 , …, m n )

C = (c 1, c 2 , …, c n )

Kunci K

E Kunci K

Blok Cipherteks C 1 Blok Plainteks M 1

c 1 c 2 c ... c n

m 1 m 2 m .. m n

C = (c 1, c 2 , …, c n )

M = (m 1, m 2 , …, m n )

Gambar 2.9 Skema Enkripsi dan Dekripsi dengan Mode ECB Mode ini merupakan mode termudah dari keempat mode yang telah disebutkan di atas. Setiap blok plainteks dienkripsi secara independen, sehingga proses enkripsi tidak harus berlangsung secara linear atau proses enkripsi dapat dilakukan pada blok-blok secara tidak berurutan. Keuntungan mode ECB lainnya adalah kesalahan satu bit pada satu blok hanya akan mempengaruhi blok cipherteks yang berkorespondensi pada proses dekripsi.

Tetapi mode ECB lemah terhadap serangan. Dalam dunia nyata, kebanyakan bagian-bagian pesan cenderung akan muncul secara berulang di dalam sebuah teks. Dengan mode ECB, yang mengenkripsikan blok-blok secara independen, maka perulangan pesan pada plainteks mempunyai peluang yang besar untuk muncul berulang pula pada cipherteks. Dengan mengetahui informasi ini, kriptanalis dapat melakukan serangan dengan metode statistik secara mudah. Selain itu, mode ECB juga sangat rentan terhadap manipulasi cipherteks yang bertujuan untuk mengelabui pihak penerima pesan.

2. Cipher Block Chaining (CBC) Pada mode operasi CBC, terdapat mekanisme umpan balik pada sebuah blok, yaitu blok plainteks current di-XOR-kan terlebih dahulu dengan blok cipherteks hasil enkripsi sebelumnya. Selanjutnya hasil operasi XOR ini dimasukkan ke dalam fungsi enkripsi. Dengan demikian pada mode CBC, setiap blok cipherteks bergantung tidak hanya pada blok plainteksnya, tapi juga pada seluruh blok plainteks sebelumnya. Dekripsi dilakukan dengan cara memasukkan blok cipherteks current ke dalam fungsi dekripsi, kemudian meng-XOR-kan hasilnya dengan blok cipherteks sebelumnya. Secara matematis proses enkripsi dapat dinyatakan sebagai berikut:

C i =E K (M i ⊕C i-1 )

sedangkan proses dekripsi dapat dinyatakan sebagai berikut:

M i =D K (C i ) ⊕C i-1 yang dalam hal ini, C 0 = IV (Initialization Vector) . IV dapat diberikan oleh

pengguna atau dibangkitkan secara acak oleh aplikasi. IV ini merupakan rangkaian bit yang tidak bermakna dan hanya digunakan sebagai inisialisasi untuk membuat setiap blok cipherteks menjadi unik. Jadi, untuk

menghasilkan blok cipherteks pertama (C 1 ), IV digunakan untuk menggantikan blok cipherteks sebelumnya, C 0 . Sebaliknya pada proses

dekripsi, blok plainteks diperoleh dengan cara meng-XOR-kan IV dengan hasil dekripsi terhadap blok cipherteks pertama.

Dengan mode operasi CBC, kesalahan pada satu bit plainteks akan mempengaruhi blok cipherteks yang berkoresponden dan blok-blok cipherteks selanjutnya. Sedangkan kesalahan satu bit pada cipherteks hanya akan mempengaruhi satu blok plainteks yang berkoresponden dan satu bit pada blok berikutnya dengan posisi bit yang berkoresponden pula.

ENKRIPSI DEKRIPSI M i-1

M i-1

C i-1

C i-2 ⊕

Kunci K

Kunci K

C i-2

C i-1

M i-1 M i

Gambar 2.10. Skema Enkripsi dan Dekripsi dengan Mode CBC Terlepas dari kekurangan yang telah disebutkan di atas, mode CBC

dapat mengatasi kelemahan yang timbul pada mode ECB. Dengan mode ECB, blok-blok plainteks yang sama tidak menghasilkan blok-blok cipherteks yang sama. Karena itulah kriptanalisis lebih sulit untuk dilakukan pada mode CBC.

3. Cipher FeedBack (CFB) Mode CBC memiliki kelemahan, yaitu proses enkripsi hanya dapat dilakukan pada ukuran blok yang utuh, sehingga mode CBC tidak efisien jika diterapkan pada aplikasi komunikasi data. Permasalahan ini dapat diatasi pada mode CFB. Mode CFB mengenkripsikan data dalam unit yang lebih kecil daripada ukuran blok. Sehingga enkripsi dapat dilakukan meskipun data yang diterima belum lengkap. Proses enkripsi pada unit yang lebih kecil daripada ukuran blok ini membuat mode CFB berlaku seperti cipher aliran (stream cipher). Karena hal inilah, mode CFB dapat diterapkan pada aplikasi komunikasi data. Unit yang dienkripsi dapat berupa bit per bit, 2 bit, 3 bit dan seterusnya. Bila unit yang dienkripsi berupa satu karakter setiap kalinya, maka mode CFB ini disebut CFB 8-bit. Mode ini membutuhkan sebuah antrian yang berukuran sama dengan ukuran blok masukan. Secara formal, proses enkripsi mode CFB n-bit dapat dinyatakan sebagai berikut:

C i =M i ⊕ MSB b (E K (X i ))

X i+1 = LSB b-u (X i ) || C i X i+1 = LSB b-u (X i ) || C i

M i =C i ⊕ MSB b (D K (X i ))

X i+1 = LSB b-u (X i ) || C i

Keterangan:

X i : isi antrian dengan X i adalah IV

E K : fungsi enkripsi

D K : fungsi dekripsi K : kunci

b : panjang blok enkripsi u

: panjang unit enkripsi ||

: operasi penyambungan (concatenation) MSB : Most Significant Byte LSB : Least Significant Byte

Secara umum, CFB u-bit mengenkripsi plainteks sebanyak u-bit setiap kalinya, yang mana u  b (b=ukuran blok). Mode CFB membutuhkan sebuah antrian (queue) yang berukuran sama dengan ukuran blok masukan. Mode CFB mempunyai keunikan tersendiri, yaitu untuk proses enkripsi dan dekripsi digunakan fungsi yang sama. Skema enkripsi dan dekripsi dengan mode CFB 8-bit dapat dilihat pada Gambar 2.10

ENKRIPSI DEKRIPSI

Antrian 8-byte Antrian 8-byte

Left-most byte

p Left-most byte

Gambar 2.11. Skema Enkripsi dan Dekripsi dengan Mode CFB 8-Bit

Pada mode CFB pun terdapat perambatan kesalahan baik pada proses enkripsi maupun proses dekripsi. Pada proses enkripsi, kesalahan satu bit pada plainteks mempengaruhi blok cipherteks yang berkoresponden dan blok- blok cipherteks berikutnya. Sedangkan kesalahan satu bit pada blok cipherteks akan bit yang berkoresponden dan bit-bit lainnya selama bit error tersebut terdapat di dalam pergeseran bit (shift register). Pada mode CFB 8- bit dan ukuran blok 64 bit, maka kesalahan satu byte pada blok cipherteks akan mempengaruhi satu byte plainteks yang berkoresponden dan delapan byte berikutnya (lama byte error yang terdapat dalam shift register adalah delapan putaran).

4. Output FeedBack (OFB) Mode OFB bekerja dengan cara yang mirip dengan mode CFB, kecuali n-bit dari hasil fungsi enkripsi terhadap antrian disalin menjadi elemen paling kanan antrian. Secara formal, mode OFB n-bit dapat dinyatakan sebagai berikut:

C i =M i ⊕ MSB b (E K (X i ))

X i+1 = LSB b-u (X i ) || MSB b (E K (X i ))

sedangkan proses dekripsi dapat dinyatakan sebagai berikut:

M i =C i ⊕ MSB b (D K (X i ))

X i+1 = LSB b-u (X i ) || MSB b (E K (X i ))

Pada mode OFB tidak terdapat perambatan kesalahan. Kesalahan satu bit pada plainteks hanya mengakibatkan kesalahan satu bit yang berkoresponden pada cipherteks. Sebaliknya, kesalahan satu bit pada cipherteks hanya mengakibatkan kesalahan satu bit yang berkoresponden pada plainteks. Gambar 2.11 menunjukkan skema enkripsi dan dekripsi pada cipher blok untuk mode OFB 8-bit

ENKRIPSI DEKRIPSI

Antrian 8-byte Antrian 8-byte

Left-most byte

Left-most byte

Gambar 2.12 Skema Enkripsi dan Dekripsi pada mode OFB 8-Bit

Penggunaan mode-mode operasi tersebut tidak merubah fungsi enkripsi dan dekripsi yang telah didefinisikan.

2.2 Kerangka Pemikiran

Berdasarkan pendahuluan dan mengacu pada tinjauan pustaka, dapat disusun suatu kerangka pemikiran penulisan skripsi sebagai berikut:

1. Dilakukan analisis sistem terhadap aplikasi teknik pengamanan data teks menggunakan algoritma Blowfish.

2. Dengan adanya tahapan analisis sistem, dapat ditentukan kebutuhan sistem sehingga dapat dilakukan pembuatan aplikasi enkripsi dan dekripsi data teks menggunakan algoritma Blowfish.

3. Data teks dan kunci (private key) merupakan data masukan, yang kemudian di enkripsi dengan algoritma Blowfish dan disimpan menjadi sebuah file teks cipher. File teks cipher tersebut akan dibuka kembali dengan aplikasi yang sudah dibuat, kemudian dilakukan proses dekripsi, sehingga data teks semua berubah seperti semula.

`BAB III METODE PENELITIAN

Metode penelitian yang digunakan dalam penulisan skripsi ini adalah pengembangan sistem dan disertai dengan studi literatur. Langkah-langkah yang dilakukan untuk mencapai tujuan skripsi ini adalah sebagai berikut:

1. Melakukan studi literatur tentang algoritma Blowfish dan penerapannya.

2. Perencanaan sistem.

3. Analisis sistem teknik pengamanan data dengan menggunakan algoritma Blowfish untuk mengidentifikasi masalah, memahami cara kerja sistem dan mengenali kebutuhan.

4. Perancangan sistem, yaitu perancangan flowchart, form masukan dan form keluaran.

5. Implementasi sistem. Sistem dibangun berdasarkan algoritma yang telah ada menggunakan bahasa pemrograman Java 2 Standard Edition (J2SE).

6. Evaluasi sistem. Evaluasi sistem dilakukan untuk menguji tingkat efisiensi sistem.

7. Dalam membuat dan melakukan evaluasi sistem diperlukan seperangkat alat komputer. Adapun spesifikasi alat komputer yang digunakan sebagai berikut:

a. Hardware Tabel 3.1 Spesifikasi Hardware Jenis

Spesifikasi Notebook

Notebook Hewlett Packard 520 Processor

Intel(R) Celeron(R) 420 1.60Gz Memory

RAM DDR2 1.5GB

VGA Card Mobile Intel(R) 945 Express Chipset Family

Spesifikasi Sistem Operasi

- Microsoft(R) Windows(R) eXPerience (XP)

Professional SP3 - Ubuntu 9.10 Karmic Koala Bahasa

Java 2 Standard Edition

Pemrograman - Java Development Kit (JDK) 1.6.0_11 - Java Runtime Environment (JRE) 6

IDE

Netbeans 6.5

Database Server

MySQL Server 5.1

Database Manager Navicat Lite 8 for MySQL

BAB IV PEMBAHASAN

4.1 Analisis Sistem

Dalam melakukan analisis sistem, perlu diketahui terlebih dahulu alur sistem pengamanan data yang akan dibuat. Secara umum, alur sistem pengamanan data dapat digambarkan seperti Gambar 4.1.

Kunci

Kunci

(Private Key) (Private Key)

File Cipherteks

Plainteks Teks ter-Enkripsi Teks ter-Dekripsi Plainteks

Gambar 4.1 Alur Sistem Pengamanan Data Teks Berdasarkan Gambar 4.1 dengan mengacu pada Gambar 2.1, plainteks merupakan data teks berkode ASCII (American Standard Code for Information Interchange ) dimana setiap karakter memiliki nilai setara dengan 8 bits (1 byte).

Sistem (perangkat lunak) akan dijalankan dalam dua mode, yaitu mode enkripsi dan mode dekripsi. Di tiap-tiap mode akan memiliki data masukan berupa plainteks (bisa berupa teks yang langsung di tulis, maupun dalam bentuk file teks), kunci (private key), dan memilih mode operasi enkripsi (ECB, CBC, OFB, atau CFB). Untuk menghindari adanya weak key (kunci lemah) dalam penggunaan algoritma Blowfish, maka kunci dibuat dengan minimal 8 karakter. Setelah mengisi semua data masukan, selanjutnya dilakukan proses enkripsi dengan algoritma Blowfish. Hasil dari proses enkripsi ini dapat disimpan ke dalam file berekstensi .cip, yang selanjutnya akan menjadi cipherteks.

4.2 Diagram Alir (Flowchart) Aplikasi

Berikut flowchart (diagram alir) dari sistem perangkat lunak yang akan di buat:

Begin

Login Tidak Sukses ?

Ya

Enkripsi

Enkripsi / Dekripsi ?

Dekripsi

Ya Ya Input Data

Input Data

Plainteks Cipherteks

Mode Enkripsi Cipher Blok (ECB, CBC, CFB, OFB) Mode Enkripsi Cipher Blok (ECB, CBC, CFB, OFB)

Kunci Kunci

Ya Kunci = 0 /

Ya

Kunci = 0 / Kunci < 8 ?

Kunci < 8 ?

Tidak

Tidak Tidak

Proses Enkripsi Proses Dekripsi (Blowfish)

(Blowfish)

Cipherteks Plainteks

Logout? Logout?

Tidak Tidak

Quit? Quit?

Gambar 4.2 Diagram Alir Aplikasi Sistem Pengamanan Data Teks

4.3 Perancangan Sistem

4.3.1 Rancangan Database

Basis data yang dibutuhkan dalam sistem pengamanan data dengan algoritma Blowfish hanya digunakan untuk memvalidasi user dan password untuk login aplikasi. Basis data yang digunakan adalah MySQL. Struktur tabel basis data dalam sistem hanya berisi tabel user, yang berisi data username dan password untuk menjalankan program.

Tabel 4.1. Tabel User

Nama Fields Tipe Fields Panjang Fields Keterangan

user_id Varchar

24 ID username (primary key) pass_id

24 kata kunci (password) name

Varchar

Char

24 nama lengkap pengguna

4.3.2 Rancangan Form Login

Program login adalah form login pengguna sistem pengamanan data. Login dibutuhkan sebagai sistem verifikasi pengguna (authentication) yang memperbolehkan atau tidaknya pemakai mempergunakan sistem. Form login ini akan dihubungkan dengan database MySQL melalui penghubung JDBC (Java Database Connectivity ).

Gambar 4.3 Rancangan Form Sistem Login

4.3.3 Rancangan Form Enkripsi dan Dekripsi

Program enkripsi adalah form masukan data teks yang akan di proses untuk di enkripsi. Ada tiga jenis data yang akan dimasukkan, yaitu: plainteks, kunci (plainteks) dan mode enkripsi (ECB, CBC, CFB atau OFB). Plainteks bisa dibuka dari file teks yang sudah ada, atau bisa langsung memasukkannya secara manual.

Kunci ( Private Key) reset

Mode Enkripsi :

Size: ___ Bytes

Size: ___ Bytes

Time: __________ ms

Save Cipher

Gambar 4.4 Rancangan Form Sistem Enkripsi

Kunci ( Private Key) reset

Mode Dekripsi :

Size: ___ Bytes

Size: ___ Bytes

Time: __________ ms

Save Plain

Gambar 4.5 Rancangan Form Sistem Dekripsi

4.3.4 Validasi Data Masukan

Ketika user memasukkan data sebagai data masukan, dimungkinkan terjadinya kesalahan-kesalahan, yaitu: kunci kosong (blank password), plainteks bukan dalam standar ASCII (Sebagai contoh: huruf katakana dan hiragana). Oleh karena itu, untuk menghindari terjadinya hal tersebut, diperlukan beberapa langkah validasi.

Ketentuan-ketentuan yang digunakan dalam validasi data masukan adalah

1. tidak diperbolehkan tidak mengisi kata kunci (kunci kosong),

2. tidak diperbolehkan memasukkan karakter lain selain standar ASCII

4.4 Implementasi Sistem

Sistem dibangun berdasarkan algoritma Blowfish yang telah ada menggunakan bahasa pemrograman Java 2 Standard Edition dengan basis data MySQL Server 5.1 dan dukungan penghubung JDBC (Java Database Connectivity ) serta Navicat Lite 8 for MySQL sebagai database manager. Aplikasi ini diberi nama FUGU, bahasa Jepang untuk Ikan Kembung (Blowfish). Form-form yang ada pada sistem adalah sebagai berikut.

1. Form Login

2. Form Utama

3. Form Enkripsi

4. Form Dekripsi

5. Form Tentang Program Form login merupakan tampilan utama ketika sistem dijalankan. Form ini

digunakan untuk mengecek pengguna yang dapat menggunakan sistem. Tampilan form login seperti pada Gambar 4.6.

Setelah otentikasi berhasil, pengguna akan dibawa ke form utama. Form utama memuat pilihan mode sistem, yaitu: mode enkripsi atau mode dekripsi. Tampilan form utama seperti pada gambar 4.7.

Gambar 4.6 Tampilan Form Login

Gambar 4.7 Tampilan Form Utama

Form Enkripsi merupakan form inti dari sistem pengamanan data teks. Pada form ini, pengguna akan diminta memasukkan plainteks, kunci (private key), dan mode enkripsi cipher blok (ECB, CBC, CFB, atau OFB). Plainteks yang dimasukkan bisa berupa berkas teks yang tersimpan, maupun pesan teks secara langsung. Berkas teks umumnya berupa dokumen teks berformat ASCII (Contoh: *.txt, *.java, *.py, *.pl, *.sh, *.cnf , dan sebagainya). Tampilan form enkripsi terdapat pada Gambar 4.8.

Gambar 4.8 Tampilan Form Enkripsi

Gambar 4.9 Pesan Pemberitahuan Enkripsi yang Berhasil

Gambar 4.10 Pesan Peringatan Kesalahan Input Kunci Ketika pengguna melakukan input data dimungkinkan terjadi kesalahan/kelalaian, salah satunya adalah tidak memasukkan kunci private. Oleh karena itu diperlukan validasi untuk menangani kesalahan tersebut. Jika pengguna sengaja/tidak sengaja tidak mengisi kunci, maka akan muncul pesan kesalahan seperti pada Gambar 4.10. Apabila kunci, plainteks serta mode enkripsi telah diisi dengan benar, maka proses enkripsi dapat dilanjutkan. Gambar 4.9 menujukkan proses enkripsi telah berhasil dilakukan. Selanjutnya adalah menyimpan cipherteks ke dalam berkas berekstensi .cip sebagaimana terdapat pada Gambar

Gambar 4.11 Dialog Simpan Cipherteks Berekstensi .cip

Gambar 4.12 Pesan Konfirmasi Cipherteks Berhasil Disimpan Pada proses dekripsi, data masukan berupa berkas cipherteks (berkas dengan ekstensi .cip), kunci (private key), dan mode dekripsi cipher blok (ECB, CBC, CFB atau OFB).

Gambar 4.13 Tampilan Form Dekripsi