Tugas Akhir Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Informatika

  ENKRIPSI FILE DENGAN METODE BLOWFISH Tugas Akhir Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Informatika Disusun oleh: T. DWIARSO BUDI ARIYANTO NIM : 995314092 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS SANATA DHARMA YOGYAKARTA

FILE ENCRYPTION USING BLOWFISH METHOD

  

Final Project

Submitted as Partial Fulfillment of the Requirement

For the Undergraduate Degree of Sarjana Teknik

In Informatics Engineering Department

  

Arranged by:

T. DWIARSO BUDI ARIYANTO

Student Number : 995314092

INFORMATICS ENGINEERING STUDY PROGRAM

  

INFORMATICS ENGINEERING DEPARTMENT

ENGINEERING FACULTY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

  ENKRIPSI FILE DENGAN METODE BLOWFISH Tugas Akhir Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Informatika Disusun oleh: T. DWIARSO BUDI ARIYANTO NIM : 995314092 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS SANATA DHARMA YOGYAKARTA

  Kupersembahkan untuk : U Tuhan Yesus Kristus, Engkaulah sumber kehidupan, kekuatan dan bahagiaku…

  U Bunda Maria, kupersembahkan hidupku bersama Engkau, Persembahan Termulia...

  

U Malaikat Agung Mikael, yang memberi aku

kekuatan

  U Malaikat Agung Gabriel, yang membuka pikiran dan hatiku

  

U Malaikat Agung Rafael, yang telah memberi

aku kesehatan

  U Keluargaku khususnya Bapak, Ibu dan Kakakku

  U Keluarga Siroto, terima kasih untuk bimbingan dan doanya

  U My Sweety Angel (Mimith), akhirnya

HALAMAN MOTTO

  

DAN BEKERJA BERSAMA-SAMA ADALAH SEBUAH

KESUKSESAN

  (Orang bijak) ARTI SEBUAH PERSAHABATAN ADALAH KESETIAAN DAN KEJUJURAN

  (Dedicated to all my best friends)

  

INTI HIDUP SEJATI ADALAH SEDERHANA, MELAYANI, CINTA

KASIH DAN PENGORBANAN

  ( St. Swidjayanto., S. Pd)

  Intisari

  merupakan metode enkripsi yang mirip dengan DES (des-like

  Blowfish cipher ) dan diciptakan oleh Bruce Schneier yang ditujukan untuk mikroprosesor

  besar (32 bit ke atas dengan cache data yang besar).. Blowfish dikembangkan untuk memenuhi kriteria disain yang cepat, kompak, sederhana dan keamanan yang variable. dioptimasisasikan untuk aplikasi dimana kunci tidak sering

  Blowfish berubah.

  Pada tugas akhir ini akan dibuat perangkat lunak untuk mengimplementasikan algoritma Blowfish untuk melakukan enkripsi dan dekripsi file. Jenis file hanya dibatasi untuk jenis file teks (*.txt).

  Hasil implementasi program menunjukkan ciphertext tidak akan pernah sama walaupun dilakukan pada berkas yang sama dan menggunakan kunci yang sama.

  

Abstract

  Blowfish represent encryption method which looks like DES (DES-like cipher) was created by Bruce Schneier for bigger microprocessor (up to 32 bit using bigger data cache). Blowfish is developed to fulfill criterion of quickly compact simply, security and vairous designed.

  Blowfish optimalized for the application where key often unchangeable, like communications band or automatic file encryption. At this final assignment, it will be made a software for the implementation of Blowfish algorithm to conduct decryption and encryption file. The type of file is limited only for text file (*.txt).

  The result of encryption never equal although it is conducted at a same file and using the same key.

KATA PENGANTAR

  Puji dan syukur kepada Tuhan Yang Maha Esa atas segala rahmat dan kasih-Nya sehingga penulis dapat menyelesaikan tugas akhir yang berjudul Enkripsi File dengan Metode Blowfish. Tugas akhir ini disusun guna memenuhi salah satu persyaratan untuk memperoleh gelar Sarjana Teknik di Jurusan Teknik Informatika, Universitas Sanata Dharma.

  Penyusunan tugas akhir ini tidak terlepas dari bantuan, bimbingan serta dukungan dari berbagai pihak yang sangat bermanfaat bagi penulis. Maka pada kesempatan ini penulis mengucapkan terimakasih yang sebesar-besarnya kepada :

  1. Bapak Albertus Agung Hadhiatma, S.T., M.Sc. 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 Informatika yang telah memberikan bekal pengetahuan kepada penulis.

  3. Para dosen penguji yang telah memberikan saran dan masukan yang berguna bagi kesempurnaan tugas akhir ini.

  4. Bapak Belle dan Mas Agus yang telah membantu kelancaran pada saat sidang, terimakasih banyak.

  5. Para karyawan dan staff Fakultas Teknik (Mas Trie, Pak Jito, Mas Gito), khususnya Jurusan Teknik Informatika (mBak Marni, Mas Danang), terima kasih atas bantuannya, terutama buat pak Dar, terima kasih restunya

  6. Bapak, Ibu, dan kakakku tersayang yang telah memberikan perhatian, kasih sayang dan dukungan yang sangat besar kepada penulis

  

DAFTAR ISI

  Halaman HALAMAN JUDUL INGGRIS ......................................................................... i HALAMAN JUDUL........................................................................................... ii HALAMAN PERSETUJUAN PEMBIMBING ................................................. iii HALAMAN PENGESAHAN ............................................................................ iv HALAMAN PERSEMBAHAN ........................................................................ v HALAMAN MOTTO ......................................................................................... vi

  INTISARI............................................................................................................ vii ABSTRACT........................................................................................................viii PERNYATAAN KEASLIAN KARYA ............................................................. ix KATA PENGANTAR ....................................................................................... x DAFTAR ISI ...................................................................................................... xii DAFTAR TABEL ..............................................................................................xvii DAFTAR GAMBAR ....................................................................................... xviii

  BAB I PENDAHULUAN .................................................................................. 1

  1.1. Perumusan Masalah ........................................................................ 1

  1.2. Rumusan Masalah ........................................................................... 2

  1.3. Batasan Masalah .............................................................................. 2

  1.4. Tujuan Manfaat Penulisan ............................................................... 2

  1.5. Sistematika Penulisan ...................................................................... 3

  BAB II LANDASAN TEORI ............................................................................ 4

  2.2. Enkripsi (Encryption) dan Dekripsi (Decryption)............................ 5

  2.3. Algoritma Kriptografi ..................................................................... 7

  2.4. Kunci ............................................................................................... 11

  2.5. Algoritma Blowfish.......................................................................... 12

  2.5.1. Pengantar .............................................................................. 12

  2.5.2. Cara Kerja............................................................................. 14

  2.5.3. Keamanan Blowfish ............................................................. 16

  2.6. Pengenalan Visual Basic ................................................................. 17

  2.6.1 Struktur Aplikasi Visual Basic 6.0 ....................................... 17

  2.6.2 Dasar-dasar Pemrograman 6.0 ........................ 18

  Visual Basic

  2.6.3 Variabel dan Konstanta ........................................................ 19

  2.6.4 Operator dalam Visual Basic 6.0.......................................... 20

  2.6.5 If then Else............................................................................ 21

  2.6.6 Select Case ........................................................................... 22

  2.6.7 For Next................................................................................ 23

  2.6.8 Do Loop................................................................................ 24

  BAB III ANALISA DAN PERANCANGAN ................................................... 26

  3.1 Analisa Sistem.................................................................................. 26

  3.1.1 Analisa Kebutuhan Sistem Umum ....................................... 26

  3.1.2 Analisa Teknologi ................................................................ 26

  3.1.3 Analisis Algoritma Blowfish ................................................ 27

  3.1.3.1 Algoritma Enkripsi................................................. 27

  3.1.3.3 Fungsi F.................................................................. 29

  BAB IV IMPLEMENTASI ................................................................................ 37

  4.1.6 Tulis data terenkripsi ............................................................ 40

  4.1.5 Enkripsi kunci dan simpan di file......................................... 40

  4.1.4 Proses enkripsi...................................................................... 39

  4.1.3 Baca data asli (Plaintext)...................................................... 39

  4.1.2 Inisialisasi kunci (perluasan kunci) ...................................... 39

  4.1.1 Inisialisasi array P (P-array/subkey) dan kotak substitusi (S-box) .................................................................................. 38

  4.1 Enkripsi ............................................................................................ 38

  3.3.1.2 Diagram Alir Sistem Dekripsi................................ 36

  3.1.3.4 Variabel Kunci ....................................................... 31

  3.3.1.1 Diagram Alir Sistem Enkripsi ................................ 35

  3.2.1 Perancangan Antarmuka Pengguna...................................... 34

  3.2 Perancangan Sistem ......................................................................... 34

  3.1.3.8 Perputaran Dekripsi................................................ 33

  3.1.3.7 Perputaran Enkripsi ................................................ 33

  3.1.3.6 Inisialisasi Data ...................................................... 32

  3.1.3.5 Inisialisasi P-array ................................................. 31

  4.2. Dekripsi ............................................................................................ 40

  4.2.2 Inisialisasi kunci (perluasan kunci) ...................................... 41

  4.2.3 Baca kunci enkripsi yang tersimpan di dalam berkas terenkripsi ............................................................................ 41

  4.2.4 Pengembalian kunci terenkripsi ........................................... 41

  4.2.5 Mengambil kunci inisialisasi 56 byte dan mengenkripsinya 42

  4.2.6 Hapus kunci yang tersimpan pada berkas terdekripsi .......... 42

  4.2.7 Dekripsi data dari berkas...................................................... 42

  4.2.8 Dekripsi kunci ...................................................................... 43

  4.2.9 Dekripsi byte......................................................................... 43

  4.2.10 Dekripsi blok ........................................................................ 44

  4.2.11 Tulis data terdekripsi ............................................................ 45

  4.3. Fungsi-fungsi pendukung program .................................................. 45

  4.3.1 Hapus file asal ...................................................................... 45

  4.3.2 Cek file sudah ada atau belem .............................................. 45

  4.4.3 Meng-XOR-kan kunci dengan data berkas .......................... 46

  4.4 Implementasi User Interface ............................................................ 46

  4.4.1 Form Utama (frmMain) ........................................................ 47

  4.4.2 Form Enkripsi (frmEncrypt)................................................. 47

  4.4.3 Form Dekripsi (frmDecrypt) ................................................ 49

  4.5 Help .................................................................................................. 51

  4.5.1 Form Help (frmHelp)............................................................ 51

  4.5.2 Form About (frmAbout)........................................................ 52

  BAB V ANALISA HASIL ................................................................................ 53

  5.1 Analisa Hasil Perangkat Lunak ........................................................ 53

  5.1.2 Kekurangan .......................................................................... 53 5.1.2 Kelebihan..............................................................................

  53

  5.2 Analisa Piranti Pengembang (Visual Basic 6.0)............................... 54

  BAB VI KESIMPULAN DAN SARAN ........................................................... 55

  6.1 Kesimpulan ..................................................................................... 55

  6.2 Saran ................................................................................................ 56 DAFTAR PUSTAKA ........................................................................................ 57 LAMPIRAN

  

DAFTAR TABEL

  Halaman

Tabel 2.1 Tipe-tipe Variabel dan Konstanta pada Visual Basic 6.0.................... 19Tabel 2.2 Operator Umum pada Visual Basic 6.0............................................... 21Tabel 2.3 Prioritas Operator Umum pada Visual Basic ...................................... 21Tabel 2.4 Operator Perbandingan pada Visual Basic.......................................... 22Tabel 2.5 Operator Logika pada Visual Basic .................................................... 22

  

DAFTAR GAMBAR

  Halaman

Gambar 2.1 Proses Enkripsi/Dekripsi Sederhana............................................ 5Gambar 2.2 Proses Enkripsi/Dekripsi Kunci Simetris .................................... 9Gambar 2.3 Proses Enkripsi/Dekripsi Kunci Publik ....................................... 11Gambar 3.1 Diagram Alir Enkripsi ................................................................. 28Gambar 3.2 Diagram Alir Dekripsi................................................................. 30Gambar 3.3 Diagram Alir Fungsi F................................................................. 31Gambar 3.4 Form Utama................................................................................. 34Gambar 3.5 Form About ................................................................................. 35Gambar 3.6 Diagram Alir Sistem Enkripsi ..................................................... 35Gambar 3.7 Diagram Alir Sistem Dekripsi ..................................................... 36Gambar 4.1 Diagram Alir Sistem.................................................................... 37Gambar 4.2. Form Utama (frmMain) ............................................................... 48Gambar 4.3 Form Enkripsi (frmEncrypt) ........................................................ 49Gambar 4.4 Pesan pemberitahuan bahwa proses enkripsi telah selesai .......... 49Gambar 4.5 Form Dekripsi (frmDecrypt)........................................................ 50Gambar 4.6 Pesan pemberitahuan bahwa proses dekripsi telah selesai .......... 50Gambar 4.7 Form Phrase (frmPhrase) tanpa input kunci .............................. 51Gambar 4.8 Form Phrase (frmPhrase) dengan input kunci dan input konfirmasi sama...........................................................................51Gambar 4.10 Pesan masukan kunci yang salah................................................. 52Gambar 4.11 Form Help Topics (frmHelp)....................................................... 53Gambar 4.12 Form About (frmAbout)............................................................... 53

BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

  Seiring dengan perkembangan jaman yang diikuti dengan perkembangan teknologi, informasi semakin mudah didapat, diakses dan didistribusikan oleh siapa saja. Terlepas dari fungsi dan tujuan informasi tersebut, keamanan dan keakuratan informasi menjadi hal yang utama dan harus diperhatikan, baik itu oleh perseorangan, terlebih lagi bagi instansi atau intitusi yang tentunya memiliki informasi-informasi yang sifatnya rahasia dan hanya boleh diakses oleh pihak- pihak yang merupakan bagian dari instansi atau intitusi tersebut. Hal ini tentu saja dilakukan untuk mencegah adanya penyalahgunaan informasi yang bisa berupa pemalsuan, pencurian ataupun perubahan informasi.

  Untuk mengatasi permasalahan tersebut sebenarnya ada beberapa tindakan yang bisa dilakukan, salah satu diantaranya adalah dengan melakukan teknik penyandian atau cryptography.

  Penyandian merupakan teknik untuk menyamarkan atau menyandikan informasi, data atau pesan agar tidak bisa dengan mudah diakses oleh pihak-pihak yang tidak berkepentingan. Bagian dari penyandian itu sendiri sebenarnya ada dua macam, yaitu enkripsi dan dekripsi. Enkripsi adalah proses transformasi informasi atau data ke dalam bentuk yang tidak dapat dibaca orang lain tanpa adanya suatu kunci, sedangkan dekripsi adalah proses tranformasi dari bentuk yang tidak dapat

  Dari berbagai metode penyandian yang ada hingga saat ini, salah satunya adalah metode cryptography Blowfish. Metode ini pertama kali ditemukan oleh Bruce Schneier. Blowfish dioptimasikan untuk aplikasi dimana kunci tidak berubah, seperti jalur komunikasi atau enkripsi file otomatis. Blowfish merupakan blok cipher 64-bit dengan panjang kunci variabel. Terdiri dari dua bagian, yaitu

  

key expansion dan enkripsi data. Key expansion merubah kunci yang panjangnya

  dapat mencapai 448 bit menjadi beberapa array subkunci (subkey) dengan total 4168 byte. Enkripsi data terdiri dari fungsi sederhana yang diiterasikan sebanyak 16 kali. Semua operasi yang terjadi adalah penambahan dan XOR pada variabel 32-bit.

  1.2 Rumusan Masalah

  Dari uraian tersebut di atas, rumusan masalah pada tugas akhir ini adalah “Bagaimana membuat perangkat lunak untuk mengimplementasikan enkripsi dan dekripsi file dengan metode Blowfish?”

  1.3 Batasan Masalah

  Mengingat banyaknya permasalahan yang berhubungan dengan enkripsi dan deskripsi data, maka penulis membuat batasan masalah sebagai berikut: a. Program dibuat untuk pemakaian single user.

  b. Uji coba hanya pada berkas dokumen teks berekstensi *.txt.

  1.4 Tujuan dan Manfaat Penulisan

  Tujuan yang ingin dicapai dalam tugas akhir ini adalah untuk membuat suatu aplikasi untuk enkripsi data agar tidak mudah diakses oleh user yang tidak

1.5 Sistematika Penulisan

  Pembahasan keseluruhan tugas akhir ini dibagi menjadi lima bab, yaitu:

  BAB I PENDAHULUAN Berisi pendahuluan, latar belakang masalah, rumusan masalah, batasan masalah, tujuan, manfaat, dan sistematika penulisan. BAB II LANDASAN TEORI Berisi landasan teori yang dipakai untuk pembahasan penulisan tugas akhir. BAB III PERANCANGAN Membahas tentang gambaran perancangan sistem aplikasi yang

  dibuat dan bagaimana pengujian serta validasi model dilakukan sebelum implementasi dan pada saat implementasi.

  BAB IV IMPLEMENTASI Berisi implementasi dari rancangan sistem yang dibuat pada bab

  sebelumnya serta implementasi desain ke dalam bahasa pemrograman yang sesungguhnya.

  BAB V ANALISA HASIL Berisi analisis kerja program yang telah dibangun, kelebihan dan kekurangannya. BAB VI KESIMPULAN DAN SARAN Berisi kesimpulan setelah dilakukan perancangan dan

  implementasi algoritma ke dalam program dan saran-saran

BAB II LANDASAN TEORI

2.1 Penyandian (Cryptography)

  Kriptografi berasal dari bahasa Yunani crypto dan graphia yang berarti penulisan rahasia. Kriptografi salah satu cabang dari kriptologi, ilmu yang mempelajari tentang keamanan komunikasi, yang menggunakan persamaan matematis dalam prosesnya. Tujuannya untuk menjaga kerahasiaan (confidentially) dan keaslian (authentication) informasi.

  Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali.

  

Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada

  penerima (receiver). Setelah sampai pada penerima, ciphertext tersebut ditransformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.

  Beberapa terminologi dasar dari kriptografi serta hal-hal yang berkaitan dengan terminologi-terminologi tersebut, yaitu:

  1. Kriptografi dapat digunakan untuk meningkatkan keamanan komunikasi meskipun komunikasi tersebut dilakukan melalui media komunikasi yang sangat tidak aman (misalnya Internet). Kita juga dapat menggunakan kriptografi untuk melakukan enkripsi file-file sensitif kita, sehingga orang lain tidak dapat mengartikan data-data yang ada.

  2. Kriptografi dapat digunakan untuk memberikan jaminan integritas data serta menjaga kerahasiaan.

  3. Dengan menggunakan kriptografi, maka sangat mungkin untuk me-verifikasi asal data dan pesan.

  4. Pada saat menggunakan metoda kriptografi, hanya kunci sesi yang harus tetap dijaga kerahasiaannya, sedangkan algoritma, ukuran kunci dan format file dapat dibaca oleh siapapun tanpa mempengaruhi keamanan.

  Dua operasi dasar kriptografi adalah enkripsi (dekripsi sebagai proses kebalikannya) dan signing (verifikasi signature sebagai proses kebalikannya).

2.2 Enkripsi (Encryption) dan Dekripsi (Decryption)

  Proses tranformasi dari plaintext menjadi ciphertext disebut proses atau enkripsi (encryption), sedangkan proses mentransformasikan

  encipherment

  kembali ciphertext menjadi plaintext disebut proses dekripsi (decryption). Untuk mengenkripsi dan mendekripsi data kriptografi menggunakan suatu algoritma (cipher) dan kunci (key).

  Secara sederhana istilah-istilah di atas dapat digambarkan sebagai berikut : Plaintext Plaintext Plaintext

  Enkripsi Dekripsi

Gambar 2.1 Proses Enkripsi/Dekripsi Sederhana

   Cryptographer merupakan pelaku yang melakukan pengamanan terhadap

  suatu pesan; sedangkan cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext dan orang yang melakukannya disebut cryptanalyst.

  Cryptographic system atau cryptosystem adalah suatu fasilitas untuk

  mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan.

  Terdapat beberapa alasan penggunaan kriptografi dalam sistem komunikasi, yaitu sebagai berikut::

  1. Confidentiality Merupakan suatu layanan yang digunakan untuk memberikan kerahasiaan pesan dan menyimpan data dengan menyembunyikan informasi dengan teknik-teknik enkripsi.

  2. Message Integrity Adalah sebuah layanan yang memberi jaminan bahwa pesan tidak akan mengalami perubahan dari saat pesan tersebut dibuat sampai pada saat data tersebut dibuka. Untuk menjamin integritas data, diperlukan mekanisme untuk mencegah adanya manipulasi data oleh pihak yang tidak berhak. Hal-hal yang termasuk ke dalam manipulasi data adalah penyisipan, penghapusan dan perubahan data.

  3. Non Repudiation Merupakan sebuah layanan yang dapat mencegah terjadinya penolakan terhadap sebuah transaksi ataupun penolakan terhadap dokumen yang dikirim oleh seseorang. Dengan ini, seorang pengirim pesan dapat membuktikan bahwa pesan yang dikirimkan telah diterima oleh si penerima pesan.

  Sebaliknya si penerima pesan juga dapat membuktikan bahwa pesan yang diterima merupakan pesan yang dikirim oleh si pengirim pesan.

  4. Authentication Merupakan suatu proses untuk membuktikan dan menguji suatu informasi tertentu. Juga digunakan untuk memeriksa suatu dokumen, memeriksa identitas dari seorang pengirim pesan, memeriksa tanggal dan waktu kapan suatu data dikirim, serta untuk memeriksa identitas pengguna sebuah komputer dan sebagainya.

  Tiga syarat utama yang harus dipenuhi oleh suatu cryptosystem yang baik, yaitu:

  1. Proses enkripsi dan dekripsi harus efisien untuk semua penggunaan kunci.

  2. Penggunaan kriptosistem tersebut harus mudah.

  3. Keamanan dari suatu kriptosistem tergantung pada keamanan dari kunci yang dipakai, bukannya dari algoritma yang digunakan untuk enkripsi atau dekripsi (Purba, 2001).

2.3 Algoritma Kriptografi

  adalah fungsi matematika yang digunakan untuk mengenkripsi

  Cipher

  dan mendekripsi. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk mengenkripsi dan mendekripsi data.

  Algoritma kriptografi bekerja dalam kombinasi dengan menggunakan kunci seperti kata, nomor maupun frase tertentu. Kunci merupakan nilai yang sangat spesifik dan bekerja dengan algoritma kriptografi untuk menghasilkan paling mendasar. Dengan kunci itulah seseorang dapat melakukan proses enkripsi dan dekripsi.

  Algoritma kriptografi terdiri dari algoritma enkripsi (E) dan algoritma dekripsi (D). Algoritma enkripsi menggunakan kunci enkripsi (KE), sedangkan algoritma dekripsi menggunakan kunci dekripsi (KD). Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut :

  KE (M) = C (Proses Enkripsi) KD (C) = M (Proses Dekripsi)

  Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya.

  Dengan demikian keamanan suatu pesan tergantung pada kunci ataupun kunci-kunci yang digunakan, dan tidak tergantung pada algoritma yang digunakan. Sehingga algoritma-algoritma yang digunakan tersebut dapat dipublikasikan dan dianalisis, serta produk-produk yang menggunakan algoritma tersebut dapat diproduksi massal. Tidaklah menjadi masalah apabila seseorang mengetahui algoritma yang kita gunakan. Selama ia tidak mengetahui kunci yang dipakai, ia tetap tidak dapat membaca pesan.

  Berdasarkan kunci yang dipakai, algoritma kriptografi dapat dibedakan atas dua golongan, yaitu : a. Symmetric Algorithms Algoritma kriptografi simetris atau disebut juga algoritma kriptografi konvensional merupakan algoritma yang menggunakan kunci untuk proses enkripsi sama dengan kunci untuk proses dekripsi. Algoritma ini merupakan algoritma yang paling umum dan paling tua.

  Kunci yang dipakai sering berubah-ubah, oleh sebab itu kunci yang dipakai sering disebut sebagai session key, yaitu kunci yang dipakai hanya pada satu sesi proses enkripsi. Algoritma ini termasuk sangat cepat bila dibandingkan dengan algoritma kunci publik/asimetrik sehingga sangat cocok dipakai untuk melakukan enkripsi data yang sangat besar.

  Algoritma kriptografi simetris dibagi menjadi 2 kategori yaitu algoritma aliran (Stream Ciphers) dan algoritma blok (Block Ciphers). Pada algoritma aliran, proses penyandiannya berorientasi pada satu bit atau satu byte data. Sedang pada algoritma blok, proses penyandiannya berorientasi pada sekumpulan bit atau data (per blok). Algoritma kunci simetris yang terkenal adalah RC4 dan DES

  byte (Data Encryption Standard).

  Kunci Kunci Plaintext Plaintext Plaintext

  Enkripsi Dekripsi

Gambar 2.2 Proses Enkripsi/Dekripsi Kunci Simetris b.

   Asymmetric Algorithms

  Algoritma kriptografi asimetris adalah algoritma yang menggunakan juga algoritma kunci umum (public key algorithm) karena kunci untuk enkripsi dibuat umum (public key) atau dapat diketahui oleh setiap orang, tapi kunci untuk dekripsi hanya diketahui oleh orang yang berwenang mengetahui data yang disandikan atau sering disebut kunci pribadi (private key). Algoritma ini bekerja berdasarkan fungsi satu arah, dengan fungsi yang mudah untuk dikalkulasi akan tetapi sangat sulit untuk dibalik/invers atau reverse tanpa adanya informasi yang detil. Algoritma ini menggunakan fungsi-fungsi asimetrik untuk membuat fungsi satu arah, yaitu suatu kunci dimana dapat dengan mudah dilakukan satu operasi (enkripsi atau verifikasi tanda/sign) akan tetapi sangat sulit untuk menginvers operasi (dekripsi atau membuat tanda/sign) tanpa adanya informasi yang selengkap-lengkapnya.

  Algoritma kunci publik dilakukan dengan menggabungkan secara kriptografi dua buah kunci yang berhubungan yang disebut sebagai pasangan kunci publik dan kunci privat. Kedua kunci tersebut dibuat pada waktu yang bersamaan dan berhubungan secara matematis. Secara matematis, kunci privat dibutuhkan untuk melakukan operasi invers terhadap kunci publik dan kunci publik dibutuhkan untuk melakukan operasi invers terhadap operasi yang dilakukan oleh kunci publik.

  Kunci publik dapat didistribusikan secara luas, tetapi kunci privat disimpan di tempat yang tersembunyi dan akan diperoleh fungsi dari banyak ke satu. Semua orang dapat menggunakan kunci publik untuk melakukan operasi kriptografi akan tetapi hanya orang yang memegang kunci privat yang dapat juga diperoleh fungsi dari satu ke banyak, yaitu pada saat orang yang memegang kunci privat melakukan operasi enkripsi maka semua orang yang memiliki kunci publik dapat melakukan invers terhadap data hasil enkripsi tersebut. Contoh algoritma terkenal yang menggunakan kunci asimetris adalah RSA dan ECC.

  Kunci Umum Kunci Pribadi Plaintext Plaintext Plaintext

  Enkripsi Dekripsi

  Gambar 2. 3 Proses Enkripsi/Dekripsi Kunci Publik

2.4 Kunci (key)

  Kunci merupakan nilai yang sangat spesifik dan bekerja dengan algoritma kriptografi untuk menghasilkan teks terenkripsi yang spesifik pula.

  Kunci merupakan bagian terkecil yang paling mendasar. Ukuran kunci diwujudkan dalam bentuk bit. Dengan kunci itulah seseorang dapat melakukan proses enkripsi dan dekripsi.

  Dalam konsep kriptografi kunci publik, semakin besar nilai kunci tersebut, semakin aman pula teks terenkripsi. Tetapi dengan syarat, perbandingannya dengan algoritma yang sama, karena algoritma konvensional dan kunci publik memiliki algoritma yang benar-benar berbeda.

  Semakin besar ukuran kunci, keamanan kriptografi semakin terjamin untuk periode waktu yang sangat lama. Untuk hal tersebut, maka sangat penting untuk menentukan berapa besar kunci yang digunakan untuk sebuah aplikasi. Semakin besar, maka semakin aman, tetapi semakin lambat untuk diaplikasikan

2.5 Algoritma Blowfish

2.5.1 Pengantar

  Blowfish merupakan metode yang mirip dengan DES (DES-like cipher) dan diciptakan oleh Bruce Schneier pada tahun 1993 yang ditujukan untuk mikroposesor besar (32 bits ke atas dengan cache data yang besar).

  Blowfish menggantikan DES dengan ukuran 64 bits blok dengan panjang

  kunci yang variabel yaitu sampai 448 bytes (Scheneier, 1994). Walupun sama dengan DES dalam hal ukuran bloknya, yaitu 64 bits, tetapi Blowfish memiliki kunci variabel 8 bits, dari 40 sampai dengan 448 bits (56 bytes). Selama proses inisialisasi, dengan mengabaikan panjang data, suatu kunci akan bekerja penuh pada struktur internal dari 4.168 bytes. Nilai setup mahal, karena memiliki sel iterasi dari enkripsi untuk menghasilkan suatu penjadwalan kunci. Tapi kunci itu sendiri tidak berpengaruh pada kinerja Blowfish itu sendiri. Dengan kata lain, kecepatan pada kunci 448 bit adalah sama dengan kunci 56 bit. Hal ini memungkinkan kunci untuk disimpan dalam media penyimpanan yang benar- benar aman, dan dibutuhkan suatu protokol khusus dalam kinerjanya. Inisialisasi kunci dapat dihindari dengan menspesifikasikan kunci secara langsung setelah kunci tersebut terbentuk (tentunya dengan menyimpan kunci 4168 bytes dari paling banyak 56 bytes harus disimpan).

  Struktur secara keseluruhan tidak jauh berbeda dengan DES. Array subkunci delapan belas 32-bit subkunci (DES enam belas 48-bit subkunci). Ada 4 S-boxes, yang masing-masing panjangnya 256 entry (DES 4 S-boxes dengan 64

  ). Perbedaan mendasar adalah, pada Blowfish secara dinamis membentuk

  entry

  Dalam Blowfish, semua data adalah rangkaian angka 32 dan 8 bits, yang dirancang untuk bisa bekerja pada sistem dengan jumlah dan pertukaran bit eksternal yang minimal. Hal ini menjadikan Blowfish sebagai algoritma kriptografi yang cepat. Blowfish dianggap algoritma yang paling kuat dan diterima saat ini. Algoritma ini bisa dimasuki lusinan produk-produk bebas dan terbatas. Belum ada kesalahan yang cukup berarti dari algoritma ini. Dengan pengurangan

  14

  putaran (standarnya adalah 16 putaran), secara harafiah 1 kunci dari 2 sangatlah lemah (Vav, 1996). Kelemahan ini memungkinkan pihak-pihak penyerang mengetahui apakah suatu kunci lemah tersebut terpakai atau tidak, tetapi tidak akan diketahui kunci tersebut secara spesifik (and it also allows some other more

  

abstract attacks ). Kunci lemah muncul karena secara dinamis Blowfish

  membentuk S-boxes yang pada beberapa kasus Blowfish akan menghasilkan beberapa perilaku buruk ketika beberapa nilai S-boxes digandakan. Tidak ada cara untuk mengetahui kunci mana yang lemah, selain dilakukan suatu iterasi dan kemudian melihat nilai dari S-boxes untuk dapat mengetahuinya. Hingga saat ini, belum ditemukan kunci lemah pada proses dengan 16 putaran penuh. dioptimasikan untuk aplikasi dimana kunci tidak sering

  Blowfish

  berubah, seperti jalur komunikasi atau enkripsi file otomatis. Blowfish jauh lebih cepat dari DES bila diimplementasikan pada 32 bits mikroprosesor dengan cache data yang besar, seperti Pentium dan Power PC, Blowfish tidak cocok untuk aplikasi seperti packet switching, dengan perubahan kunci yang sering, atau sebagai fungsi hash satu arah. Kebutuhan memorinya yang besar tidak

2.5.2 Cara Kerja Blowfish merupakan blok cipher 64-bits dengan panjang kunci variabel.

  Algoritma ini terdiri dari dua bagian: key expansion dan enkripsi data. Key

  

expansion merubah kunci yang dapat mencapai 448 bits menjadi beberapa array

subkunci (subkey) dengan total 4168 bytes.

  Enkripsi data terdiri dari iterasi fungsi sederhana sebanyak 16 kali. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci dan data- . Semua operasi adalah penambahan dan XOR pada variable 32-bits.

  dependent

  Tambahan operasi lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran.

  Blowfish menggunakan subkunci yang besar. Kunci ini harus dihitung sebelum enkripsi atau dekripsi data.

  Array P terdiri dari delapan belas 32-bits subkunci: P , P , . . . , P

  1

  2

18 Empat 32-bits S-box masing-masing mempunyai 256 entri:

  S , S , . . . , S

  1, 0 1, 1 1, 255

  S , S , . . . , S

  2, 0 1, 1 2, 255

  S , S , . . . , S

  3, 0 1, 1 3, 255

  S , S , . . . , S

  4, 0 1, 1 4, 255

  merupakan algoritma yang menerapkan jaringan Feistel (Feistel

  Blowfish network ) yang terdiri dari 16 putaran. Inputnya adalah X, elemen 64 bits. Algoritma untuk mengenkrip: Langkah 0 : bagi X menjadi dua 32-bits: X L

  X R

  Langkah 1 : untuk i = 1 sampai 16

  X L = X L xor Pi

  = F(X ) xor X

  X R L R

  tukar X L dan X R Langkah 2 : tukar X dan X (batalkan penukaran terakhir) L R Langkah 3 : X = X xor P R R

  17 Langkah 4 : X L = X L xor P

  18 Langkah 5 : kombinasikan kembali X dan X L R

  Fungsi F adalah: bagi X L menjadi empat bagian 8-bits: a, b, c dan d

  32

  32 F(X ) = ((S + S mod 2 ) xor S ) + S mod 2 L 1, a 2, b 3, c 4,c

  Dekripsi sama persis dengan enkripsi, kecuali P , P , . . . , P digunakan pada

  1

  2

  18 urutan yang terbalik.

  Subkunci dihitung dengan menggunakan algoritma Blowfish, metodenya adalah sebagai berikut:

  1. Pertama-tama inisialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri digit heksadesimal dari P .

  i

  2. XOR P dengan 32 bits pertama kunci, XOR P dengan 32 bits kedua dari

  1

  2

  kunci dan seterusnya untuk setiap bit dari kunci (sampai P ). Ulangi terhadap

  18 bit kunci sampai seluruh P-array di XOR dengan bit kunci.

  3. Enkrip semua string nol dengan algoritma Blowfish dengan menggunakan

  4. Ganti P dan P dengan keluaran dari langkah (3).

  1

  2

  5. Enkrip keluaran dari langkah (3) dengan algoritma Blowfish dengan subkunci yang sudah dimodifikasi.

  6. Ganti P dan P dengan keluaran dari langkah (5).

  3

  4

  7. Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, dan kemudian keempat S-box secara berurutan, dengan keluaran yang berubah secara kontinyu dari algoritma Blowfish.

  Total diperlukan 521 iterasi untuk menghasilkan semua subkunci yang dibutuhkan. Aplikasi kemudian dapat menyimpan subkunci ini dan tidak dibutuhkan langkah-langkah proses penurunan ini berulang kali, kecuali kunci yang digunakan berubah.

2.5.3 Keamanan Blowfish

  Tidak ada kelemahan yang berarti dari algoritma Blowfish yang dapat ditemukan sampai saat ini, kecuali ada weak key, dimana dua entri dari S-box mempunyai nilai yang sama. Tidak ada cara untuk mencek weak key sebelum melakukan key expansion. Bila dikuatirkan hal ini dapat mengurangi keamanannya maka dapat dibuat rutin untuk mengecek entri S-box, walaupun hal ini tidak perlu.

  Sampai saat ini tidak ada cryptoanalysis yang berhasil terhadap Blowfish, akan tetapi untuk amannya, jangan menggunakan Blowfish dengan kurang dari 16 putaran (round).

2.6 Pengenalan Visual Basic 6.0

  merupakan bahasa pemrograman visual berbasis grafis

  Visual Basic

  (GUI-Graphical User Interface). Visual Basic 6.0 merupakan pemrograman

  

event-driven programming yang berarti program menunggu respon dari pengguna

  yang dapat berupa kejadian (event) tertentu, seperti penekanan tombol mouse, pemilihan menu, dan lain sebagainya. Ketika suatu event terdeteksi, kode yang berhubungan dengan event (event procedure) tersebut akan dipanggil dan dijalankan. Visual Basic 6.0 juga termasuk bahasa pemrograman Object Oriented

  

Programming (OOP) atau bahasa pemrograman yang berorientasi obyek.

  Penulisan kode program dalam Visual Basic 6.0 tidak tergantung pada penggunaan huruf besar maupun huruf kecil.

2.6.1 Struktur Aplikasi Visual Basic 6.0

  Aplikasi pada Visual Basic 6.0 terdiri atas bagian-bagian ini:

  a. Form, yaitu sebuah bidang untuk mendisain dan meletakkan objek-objek rangkaian perintah-perintah/user interface yang akan dikerjakan oleh aplikasi.

  b. Control, tampilan grafis pada form untuk interaksi dengan pemakai (text box, ).

  label box, scroll bar, command button

  c. Properties, variabel atau predikat yang dimiliki sebuah obyek Visual Basic (Form dan Control). Contoh: Name, Caption, Size, Color, Position dan Text.

  d. Method, serangkaian perintah yang tersedia pada suatu objek untuk mengerjakan tugas khusus sesuai dengan tujuan method.

  e. Event Procedure, kode yang berhubungan obyek. Kode ini akan dieksekusi f. General Procedure, kode-kode yang tidak berhubungan langsung dengan obyek.

  g. Modules, kumpulan dari prosedur-prosedur umum (general procedure), deklarasi variabel dan definisi konstanta yang digunakan oleh aplikasi. i. Project (.vbp, .mak)

2.6.2 Dasar-dasar Pemrograman Visual Basic 6.0

2.6.2.1 Variabel dan Konstanta Variabel dan konstanta digunakan untuk menampung data sementara.

  Variabel dan konstanta lebih merupakan suatu penamaan untuk alamat dalam memori sistem. Ukuran penyimpanan variabel dan konstanta diukur dalam satuan

  byte .

  Tipe Data Ukuran Kisaran/Batasan Akhiran Byte 1 byte 0 sampai 255 Tidak Ada

  2 bytes atau False Tidak ada

  Boolean True

  Integer 2 bytes -32.768 sampai 32.768 %

  • 2.147.483.648

  Long Integer 4 bytes sampai &

  2.147.483.647

  • 3.402823E38 sampai - 1.401298E-45 (untuk nilai negatif );

  Single (precision

  4 bytes !

  1.401298E-45 sampai

  floating point)

  3.402823E38 (untuk nilai positif)

  • 1.79769313486232D308

  Double-precision 8 bytes sampai #

  1.79769313486232D308

  • 92233720368547735808

  Currency 8 bytes sampai @

  92233720368547735808 10 bytes + panjang 0 sampai dua milyar (untuk (variable- );

  string variable-length

  $

  String

  ); sepanjang 1 sampai 65.400 (untuk fixed-

  length

  (fixed-length) )

  string length

  1 January 100 8 bytes sampai Tidak ada

  Date

  31 December 9999 4 bytes Semua referensi objek Tidak ada

  Object

  • 1.79769313486232D308 16 bytes (untuk sampai

  ); 22 bytes + 1.79769313486232D308 (with

  number

  Tidak ada

  Variant

  panjang string number); (untuk character) 0 sampai 2 milyar (with

  character ) User defined Setiap elemen sama

  Sebesar elemen (menggunakan batasannya dengan jenis Tidak ada yang dibutuhkan tipe) datanya