• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2019

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

Copied!
125
0
0

Teks penuh

(1)

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

(2)

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

2006

(3)

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

2006

(4)
(5)
(6)

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

kumenemukanmu…

(7)

DATANG BERSAMA-SAMA ADALAH SUATU

PERMULAAN,

TETAPI BERSAMA-SAMA ADALAH SUATU

KEMAJUAN

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)

(8)

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

Blowfish dioptimasisasikan untuk aplikasi dimana kunci tidak sering

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.

(9)

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.

(10)
(11)

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

(12)
(13)

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.1. Penyandian (Cryptography)... 4

(14)

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 Visual Basic 6.0 ... 18

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.2 Algoritma Dekripsi... 29

(15)

3.1.3.3 Fungsi F... 29

3.1.3.4 Variabel Kunci ... 31

3.1.3.5 Inisialisasi P-array...31

3.1.3.6 Inisialisasi Data ... 32

3.1.3.7 Perputaran Enkripsi ... 33

3.1.3.8 Perputaran Dekripsi... 33

3.2 Perancangan Sistem ... 34

3.2.1 Perancangan Antarmuka Pengguna... 34

3.3.1.1 Diagram Alir Sistem Enkripsi ... 35

3.3.1.2 Diagram Alir Sistem Dekripsi... 36

BAB IV IMPLEMENTASI ... 37

4.1 Enkripsi ... 38

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

4.1.2 Inisialisasi kunci (perluasan kunci) ... 39

4.1.3 Baca data asli (Plaintext)... 39

4.1.4 Proses enkripsi... 39

4.1.5 Enkripsi kunci dan simpan di file... 40

4.1.6 Tulis data terenkripsi ... 40

4.2. Dekripsi ... 40

4.2.1 Inisialisasi array P dan kotak substituís... 40

(16)

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.4.4 Form Phrase (frmPhrase) ... 50

(17)

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

(18)

DAFTAR TABEL

Halaman

Tabel 2.1 Tipe-tipe Variabel dan Konstanta pada Visual Basic 6.0... 19

Tabel 2.2 Operator Umum pada Visual Basic 6.0... 21

Tabel 2.3 Prioritas Operator Umum pada Visual Basic... 21

Tabel 2.4 Operator Perbandingan pada Visual Basic... 22

Tabel 2.5 Operator Logika pada Visual Basic... 22

(19)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Proses Enkripsi/Dekripsi Sederhana... 5

Gambar 2.2 Proses Enkripsi/Dekripsi Kunci Simetris ... 9

Gambar 2.3 Proses Enkripsi/Dekripsi Kunci Publik ... 11

Gambar 3.1 Diagram Alir Enkripsi ... 28

Gambar 3.2 Diagram Alir Dekripsi... 30

Gambar 3.3 Diagram Alir Fungsi F... 31

Gambar 3.4 Form Utama... 34

Gambar 3.5 Form About ... 35

Gambar 3.6 Diagram Alir Sistem Enkripsi ... 35

Gambar 3.7 Diagram Alir Sistem Dekripsi ... 36

Gambar 4.1 Diagram Alir Sistem... 37

Gambar 4.2. Form Utama (frmMain) ... 48

Gambar 4.3 Form Enkripsi (frmEncrypt) ... 49

Gambar 4.4 Pesan pemberitahuan bahwa proses enkripsi telah selesai ... 49

Gambar 4.5 Form Dekripsi (frmDecrypt)... 50

Gambar 4.6 Pesan pemberitahuan bahwa proses dekripsi telah selesai ... 50

Gambar 4.7 Form Phrase (frmPhrase) tanpa input kunci ... 51

Gambar 4.8 Form Phrase (frmPhrase) dengan input kunci dan input konfirmasi sama...51

Gambar 4.9 Pesan kesalahan jumlah masukan kunci ... 52

(20)

Gambar 4.10 Pesan masukan kunci yang salah... 52

Gambar 4.11 Form Help Topics (frmHelp)... 53

Gambar 4.12 Form About (frmAbout)... 53

(21)

1.1Latar 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 dibaca ke dalam bentuk yang semula.

(22)

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.2Rumusan 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.4Tujuan dan Manfaat Penulisan

(23)

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

(24)

2.1Penyandian (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.

(25)

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 encipherment atau enkripsi (encryption), sedangkan proses mentransformasikan 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 :

Gambar 2.1 Proses Enkripsi/Dekripsi Sederhana

Enkripsi Dekripsi

Plaintext Plaintext Plaintext

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.

(26)

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

(27)

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

Cipher adalah fungsi matematika yang digunakan untuk mengenkripsi

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

(28)

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.

(29)

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 byte data (per blok). Algoritma kunci simetris yang terkenal adalah RC4 dan DES (Data Encryption Standard).

Enkripsi Dekripsi

Plaintext Plaintext Plaintext

Kunci Kunci

Gambar 2.2 Proses Enkripsi/Dekripsi Kunci Simetris b. Asymmetric Algorithms

(30)

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.

(31)

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.

Gambar 2. 3 Proses Enkripsi/Dekripsi Kunci Publik

Enkripsi Dekripsi

Plaintext Plaintext

Kunci Umum Kunci Pribadi

Plaintext

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.

(32)

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

entry). Perbedaan mendasar adalah, pada Blowfish secara dinamis membentuk

(33)

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 putaran (standarnya adalah 16 putaran), secara harafiah 1 kunci dari214 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 nilaiS-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.

Blowfish dioptimasikan untuk aplikasi dimana kunci tidak sering

(34)

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-dependent. Semua operasi adalah penambahan dan XOR pada variable 32-bits.

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: P1, P2, . . . , P18

Empat 32-bits S-box masing-masing mempunyai 256 entri: S1, 0, S1, 1, . . . , S1, 255

S2, 0, S1, 1, . . . , S2, 255 S3, 0, S1, 1, . . . , S3, 255 S4, 0, S1, 1, . . . , S4, 255

(35)

Algoritma untuk mengenkrip:

Langkah 0 : bagi X menjadi dua 32-bits: XL XR Langkah 1 : untuk i = 1 sampai 16

XL = XL xor Pi

XR = F(XL) xor XR

tukar XL dan XR

Langkah 2 : tukar XL dan XR (batalkan penukaran terakhir) Langkah 3 : XR = XR xor P17

Langkah 4 : XL = XL xor P18

Langkah 5 : kombinasikan kembali XL dan XR

Fungsi F adalah: bagi XL menjadi empat bagian 8-bits: a, b, c dan d F(XL) = ((S1, a + S2, b mod 232) xor S3, c) + S4,c mod 232

Dekripsi sama persis dengan enkripsi, kecuali P1, P2, . . . , P18 digunakan pada 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 Pi.

2. XOR P1 dengan 32 bits pertama kunci, XOR P2 dengan 32 bits kedua dari kunci dan seterusnya untuk setiap bit dari kunci (sampai P18). Ulangi terhadap

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

(36)

4. Ganti P1 dan P2 dengan keluaran dari langkah (3).

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

6. Ganti P3 dan P4 dengan keluaran dari langkah (5).

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.

(37)

2.6 Pengenalan Visual Basic 6.0

Visual Basic merupakan bahasa pemrograman visual berbasis grafis

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

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

(38)

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

(39)

Tabel 2.1 Tipe-tipe Variabel dan Konstanta pada Visual Basic 6.0

Tipe Data Ukuran Kisaran/Batasan Akhiran

Byte 1 byte 0 sampai 255 Tidak Ada

floating point) 4 bytes

3.402823E38 sampai -1.401298E-45 (untuk nilai

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

positif)

!

Double-precision 8 bytes

-1.79769313486232D308 string ( variable-length); sepanjang string (fixed-length)

0 sampai dua milyar (untuk variable-length); 1 sampai 65.400 (untuk

fixed-length)

$

Date 8 bytes

1 January 100 sampai 31 December 9999

Tidak ada

Object 4 bytes Semua referensi objek Tidak ada

Variant

Setiap elemen sama batasannya dengan jenis

datanya

Tidak ada

Syarat-syarat atau aturan pemberian nama suatu variabel dan konstanta dalam Visual Basic adalah:

(40)

b. Terdiri atas huruf, angka dan underscore ( _ ). c. Karakter pertama harus sebuah huruf.

d. Tidak boleh memakai kata-kata yang sudah didefinisikan oleh Visual Basic atau reserved word.

Deklarasi variabel pada Visual Basic 6.0 dapat digantikan dengan menambahkan suatu karakter tertentu di akhir nama variabelnya. Sehingga pendeklarasian tipe data seuatu variabel di bawah iniadalah sama:

• Dim I as integer

• Dim I%

Pada Visual Basic 6.0 dimungkinkan pengguna untuk membuat sendiri suatu tipe data. Hal ini berguna dalam pengelompokkan data-data yang terbagi menjadi beberapa kategori. Untuk pembuatan tipe data tersebut digunakan perintah “Type”.

Contoh pemakaian perintah ”Type” dalam suatu penulisan program: Type Employee

Name As String

DateOfBirth As Date

HireDate As Date

End Type

Type data yang berkelompok tersebut digunakan dengan cara: Dim ProductManager As Employee

ProductManager.Name = “Erick Cody” ProductManager.DateOfBirth = #3-6-1970# ProductManager.HireDate = #8-1-2001#

(41)

diubah selama program berjalan. Contoh pendeklarasian konstanta adalah sebagai berikut:

• Const Dim I As Integer

• Const I = 100

2.6.2.2 Operator dalam Visual Basic 6.0

Operator umum yang tersedia dalam Visual Basic 6.0 adalah:

Operator Kegunaan Contoh

+ Penambahan 10 + 8 = 18

- Pengurangan 10 – 8 = 2

* Perkalian 10 * 8 = 80

/ Pembagian 10 / 8 = 1.25

\ Pembagian integer (angka bulat) 10 \ 8 = 1

mod Sisa pembagian 10 mod 8 = 2

^ Pangkat 10 ^ 2 = 100

& Menggabungkan string “Hello” & “World” = “Hello Word”

Tabel 2.2 Operator Umum pada Visual Basic 6.0

Dalam penulisan operator matematis, urutan dalam penulisannya harus diperhatikan, terutama pada saat harus menggunakan banyak operator matematis pada sebuah baris perintah. Urutan-urutan penulisan dan eksekusi dari operator-operator tersebut dapat dilihat pada tabel di bawah ini.

Prioritas Operator

1 ( )

2 ^ 3 -

4 * dan /

5 \ 6 mod

7 + dan -

Tabel 2.3 Prioritas Operator Umum pada Visual Basic

(42)

Operator-operator lain yang juga dipakai pada pemrograman Visual Basic adalah operator perbandingan (Tabel 2.4) dan operator logika (Tabel 2.5).

Operator Arti Contoh

= Sama dengan 10 = 10 adalah True

<> Tidak sama dengan 10 <> 10 adalah False > Lebih kecil dari 10 > 10 adalah False < Lebih besar dari 10 < 10 adalah False >= Lebih besar dari atau sama dengan 10 >= 10 adalah True <= Lebih kecil dari atau sama dengan 10 <= 10 adalah True

Tabel 2.4 Operator Perbandingan pada Visual Basic

Operator Keterangan

AND

Jika kedua ekspresi bernilai True, hasilnya adalah True. Jika salah satu tidak bernilai True, hasilnya adalah False.

OR Jika salah satu atau kedua ekspresi bernilai True, hasilnya adalah True.

NOT Merupakan negasi/kebalikan dari

operator sebelumnya.

XOR

Jika salah satu bernilai True, maka hasilnya adalah True. Jika kedua ekspresi bernilai True atau False semua maka hasilnya adalah False Tabel 2.5 Operator Logika pada Visual Basic

Operator-operator tersebut memiliki otoritas pada saat digunakan secara bersamaan pada suatu ekspresi yang cukup kompleks. Visual Basic akan menguji tiap-tiap operator matematis terlebih dahulu, kemudian baru menguji operator perbandingan, setelah itu baru operator logika pada urutan yang paling akhir. 2.6.2.3 If then Else

(43)

Kondisi yang diperlukan oleh perintah ini adalah kondisi benar (True) atau kondisi salah (False). Dan untuk memperoleh kondisi tersebut adalah dengan memakai operator-operator perbandingan, dan untuk menggabungkan beberapa kondisi sekaligus dalam suatu percabangan dengan menggunakan operator logika. Format dasar penulisan perintah ini adalah;

If (condition) then (statement1) Else

(statement2) End If

Condition adalah bagian yang menentukan pengambilan keputusan.

Jika Condition bernilai True maka statement1 akan dijalankan, dan sebaliknya bila condition bernilai False maka statement2 yang akan dieksekusi.

Perintah Else tidak harus mengikuti perintah If. Perintah Else digunakan bila ada statement dengan condition yang bernilai False.

Contoh penggunaan struktur If-Else adalah: Dim X As Integer

X = 1000

If X > 100 Then

Print “X lebih dari 100” Else

Print “X kurang dari atau sama dengan 100”

End If

2.6.2.4 Select Case

Perintah ini digunakan untuk percabangan dalam pemrograman. Percabangan dengan perintah ini sedikit berbeda dengan perintah If. Dengan

(44)

tidak dapat melakukan pemeriksaan terhadap banyak kondisi yang berbeda sekaligus karena perintah ini hanya memeriksa kondisi sebuah ekspresi.

2.6.2.5 For Next

Struktur ini digunakan untuk mengulang blok perintah dalam jumlah yang sudah ditentukan. Pada struktur ini, yang perlu dituliskan adalah nilai awal dan akhir variabel penghitung. Nilai variabel penghitung ini akan secara otomatis bertambah atau berkurang setiap kali suatu perulangan dikerjakan. Format perintah ini adalah:

For counter = awal To akhir Step pertambahan (statemen yang ingin diulang)

next counter

Proses pengulangan diwakili dengan suatu variabel awal dan akhir. Awal adalah nilai suatu variabel integer untuk menentukan harga awal suatu

perulangan. Akhir adalah nilai suatu variabel integer untuk menentukan harga

akhir suatu perulangan. Pertambahan adalah besarnya nilai perubahan dari nilai awal sampai nilai akhir, sedangkan ekspresi merupakan suatu blok perintah yang akan dikerjakan jika kondisi dari proses perulangan memenuhi syarat.

2.6.2.6 Do Loop

Perintah ini juga dapat untuk membuat suatu perulangan dalam program. Namun perintah ini menggunakan suatu pemeriksaan terhadap suatu kondisi untuk menentukan suatu perulangan dihentikan.

(45)

Atau

Do

(Statemen yang ingin diulang) Loop [While/Until] (Condition)

Perintah while/until dapat diletakkan di akhir perintah atau di awal

perintah. Jika while/until diletakkan di awal, maka sebelum melakukan perulangan yang pertama, program akan melakukan pemeriksaan kondisi terlebih dahulu. Jika kondisi terpenuhi, maka perulangan dapat dilakukan. Kemudian dilakukan pemeriksaan lagi sebelum melakukan perulangan berikutnya. Dengan cara ini dimungkinkan untuk tidak terjadi perulangan sama sekali karena kondisinya tidak terpenuhi pada pemeriksaan pertamanya.

Namun jika perintah while/until diletakkan di akhir perintah, maka perulangan akan dilakukan terlebih dahulu sebelum pemeriksaan dilakukan. Sehingga paling tidak akan terjadi sebuah perulangan. Perulangan berikutnya akan dilakukan bila kondisinya terpenuhi.

(46)

3.1 Analisa Sistem

3.1.1 Analisa Kebutuhan Sistem Umum

Dalam sistem enkripsi berkas dengan metode Blowfish fasilitas yang dibutuhkan oleh user untuk dapat berinteraksi dengan sistem adalah:

- Input BoxKunci : untuk memasukkan kata kunci untuk

melakukan enkripsi maupun dekripsi.

- Input Box Konfirmasi kunci : untuk memasukkan kembali kunci yang sama

untuk memastikan kunci yang dimasukkan sama.

- Tombol Enkripsi : tombol untuk melakukan proses enkripsi berkas terpilih yang bukan merupakan berkas terenkripsi.

- Tombol Dekripsi : tombol untuk melakukan proses dekripsi berkas terpilih yang telah terenkripsi.

- Tombol Browse : tombol untuk membuka kotak dialog Open untuk mencari berkas.

3.1.2 Analisa Teknologi

Perangkat keras (hardware) dan perangkat lunak (software) yang dipakai dalam pengembangan sistem ini adalah:

(47)

a. Hardware

- Prosessor : Pentium IV 1,6 GHz

- Harddisk : 80 GB

- Memory : 128 MB

b. Software

- Bahasa Pemrograman : Microsoft Visual Basic 6.0

- Sistem Operasi : Microsoft Windows® XP Professional service pack 2

3.1.3 Analisis Algoritma Blowfish

3.1.3.1 Algoritma Enkripsi

Blowfish merupakan algoritma yang terdiri dari 16 putaran. Kunci yang dimasukkan terdiri dari 64 bit. Kunci ini akan dibagi menjadi 32 bit blok kiri dan 32 bit blok kanan. Untuk setiap putaran, 32 bit kunci blok kiri akan di-XOR-kan dengan elemen pertama dari P-array (P1 sampai dengan P18). Hasil adalah P’, dan akan dikenakan fungsi F yang selanjutnya akan di-XOR-kan dengan 32 bit kunci blok kanan, disebut F’. Selanjutnya 32 bit blok kiri yang telah di-XOR-kan dengan P’ ditukar dengan 32 bit blok kanan yang telah di-XOR-kan dengan P’ yang telah dikenakan fungsi F (F’), proses ini akan dilakukan sampai pada P-array yang ke-16. P16’ akan di-XOR dengan P17 sedangkan P16’ akan di-XOR dengan P18, kemudian hasilnya akan digabung kembali sehingga menghasilkan

ciphertext 64 bit.

(48)

Mulai

Inisialisasi array P

Inisialisasi Data

Masukkan data Plaintext (x)

Masukkan Kunci (k)

Ya Tidak

xL = xL XOR Pi xR = F(xL) XOR xR

Tukar xL dengan xR i = i + 1

i = 16 xL = x(1:32) xR = x(33:64)

i = 1

Tukar xLdengan xR

xL= xL XORP18 xL= xR XOR P17

Selesai Ciphertext =xL, xR

(49)

3.1.3.2 Algoritma Dekripsi

Untuk algoritma dekripsi aturan yang digunakan sama seperti enkripsi hanya saja P1, P2, …, P18 digunakan secara terbalik. 64 bit ciphertext dibagi menjadi 2 bagian yang terdiri dari 31 bit blok kiri dan 32 bit blok kanan. 32 bit kiri akan di-XOR dengan P18 dan mengahasilkan 32 bit P18’. P18’ akan dikenakan fungsi F dan akan di-XOR-kan dengan 32 bit blok kanan. Pengulangan ini akan terus dilakukan sebanyak 16 kali. Setelah 16 kali perulangan tersebut akan dilanjutkan proses dimana P3 akan di-XOR-kan dengan 32 bit blok kanan dengan hasil P3’. P3’ dikenakan fungsi F dan kemudian di-XOR-kan dengan 32 bit kiri . Hasil dari proses ini adalah F’. P3’ akan di-XOR dengan P1 yang mengahasilkan P1’, sedangkan F’ akan di-XOR dengan P2 dengan hasil P2’. Selanjutnya P1’ dan P2’ digabung dan menghasilkan 64 bitplaintext. Diagram alirnya dapat dijabarkan pada gambar 3.2.

3.1.3.3 Fungsi F

Blowfish menggunakan fungsi F, yaitu fungsi yang dikenakan pada saat

menghitung nilai XR. Dalam fungsi F terdapat 4 buah S-boxes dimana setiap

S-boxes mempunyai 256 masukan yang berukuran 32 bit. Cara menghitung fungsi F menggunakan persamaan:

F(XL) = ((S1, a + S2, b mod 232) XOR S3, c ) + S4, d mod 232

(50)

Mulai

Inisialisasi P array

Inisialisasi Data

Masukkan data Ciphertext (x)

Masukkan Kunci (k)

xL = x(1:32) xR =x(33:64)

i = 16

Ya Tidak

xL = xL XOR Pi xR = F(xL) XOR xR

Tukar xL dengan xR i = i - 1

i = 3

Tukar xLdengan xR

xL= xL XORP2 xR= xR XOR P1

Selesai Ciphertext = xL, xR

(51)

F(xL) = ((S1, a + S2, b mod 232) XOR S3, c) + S4, d mod 232)) a = xL (1:8)

b = xL (9:16) c = xL (17:24) d = xL (25:32)

Mulai

Selesai

Gambar 3.3 Diagram Alir Fungsi F 3.1.3.4 Variabel Kunci

Blowfish menggunakan kunci yang bertipe string yang panjangnya bisa mencapai 56 karakter yang disimpan ke dalam suatu variabel kunci (K). Variabel kunci tersebut disebarkan ke dalam array dari K1 sampai dengan K14. Masing-masing dari K tersebut merupakan data berjumlah 32 bit. Variabel kunci ini selanjutnya akan digunakan pada saat inisialisasi P-array.

3.1.3.5 Inisialisasi P-array

Algoritma Blowfish menggunakan konstanta P-array dan S-boxes. Konstanta P-array ini berjumlah sebanyak 18 yang masing-masing berukuruan 32 bit. Kemudian terdapat 4 buah konstanta S-boxes yang terdiri dari 256 masukan dimana tiap masukan berukuran 32 bit. Konstanta P-array ini digunakan untuk memperkuat keamnan dari data dengan cara operasi XOR dengan kunci.

P-array diinisialisasi dengan cara 18 konstanta P-array dikenakan

(52)

berukuran 32 bit. Proses XOR akan dilakukan pada 14 P-array yang pertama dengan 14 kunci. Dimulai dari P1 di-XOR dengan K1 dan seterusnya sampai P14 di-XOR dengan K14 seperti algoritma berikut:

P1 = P1 XOR K1

P2 = P2 XOR K2

.

.

.

P14 = P14 XOR K14

Proses selanjutnya adalah, P-array dari P15 dikenakan operasi XOR dengan K1 kembali. Proses ini dapat dilihat pada algoritma dibawah.

P15 = P15 XOR K1

.

.

.

P18 = P18 XOR K4

3.1.3.6 Inisialisasi Data

(53)

3.1.3.7 Perputaran Enkripsi

Pada enkripsi blowfish, data yang sudah dimasukkan, dalam hal ini adalah data yang ada dalam suatu berkas, akan dibagi ke dalam blok-blok yang masing-masing bernilai 64 bit. Selanjutnya blok tersebut dibagi ke dalam XL dan

XR. XL dan XR tersebut akan diproses dimana XL di-XOR-kan dengan P1

menghasilkan XL1 dan XR di-XOR-kan dengan XL1 yang telah dikenakan fungsi F

dan menghasilkan XR1. Langkah ini dilakukan sampai pada XL dan XR ke-16.

Selanjutnya XL16 di-XOR-kan dengan P18 dan XR16 di-XOR-kan dengan P17.

for i = 1 to 16 do

XL[i] = XL[i] XOR P[i]

XR[i] = F(XL[i]) XOR XR[i]

XL[16} = XL[16] XOR P[18]

XR[16] = XR[16] XOR P[17]

3.1.3.8 Perputaran Dekripsi

Untuk dekripsi blowfish, sama seperti pada enkripsi hanya langkahnya dibalik. Untuk XL1 di-XOR-kan dengan P18 dan XR1 dikenakan operasi XOR

dengan XL yang sudah dikenakan fungsi F. Langkah ini dilakukan sampai pada XL

dan XR ke-16. Selanjutnya XL16 di-XOR-kan dengan P1 dan XR16 di-XOR-kan

dengan P2.

for i = 1 to 16 do

XL[i] = XL[i] XOR P[19-i]

XR[i] = F(XL[i]) XOR XR[i]

XL[17} = XL[16] XOR P[1]

(54)

3.2 Perancangan Sistem

3.2.1 Perancangan Antarmuka Pengguna a Perancangan Tampilan Utama

Form ini akan terbuka saat program aplikasi ini dijalankan. Segala operasi sistem terdapat di dalamnya. Apabila pada saat pencarian file yang kemudian dipilih adalah file yang belum terenkripsi, maka tombol untuk melakukan Tombol Enkripsi akan aktif dan Tombol Dekripsi tidka aktif. Demikian pula sebaliknya, apabila file yang dipilih adalah file terdekripsi, maka Tombol Enkripsi tidak aktif dan sebaliknya Tombol Dekripsi yang aktif.

Blowfish

Blowfish ?

File

Kunci

Konfirmasi

Hapus file asli

Simpan di direktori yang sama

Enkripsi Dekripsi

A

Gambar 3.4 Form Utama b Perancangan Tampilan Form Bantu

(55)

c Perancangan Tampilan Form About

Form ini akan terbuka saat pengguna menekan tombol A. Form ini berisi

informasi mengenai tujuan pembuatan program, identitas pembuat dan ucapan terima kasih.

Gambar 3.5 Form About

3.3.1.1 Diagram Alir Sistem Enkripsi

Gambar 3.6 Diagram Alir Sistem Enkripsi

Mulai Masukkan

kunci

Proses Enkripsi

Selesai Cari Berkas

Asli

(56)

3.3.1.2 Diagram Alir Sistem Dekripsi

Masukkan kunci

Proses Dekripsi Cari Berkas

Terenkripsi

Plaintext Mulai

Selesai

(57)

Dari hasil perancangan yang telah dilakukan dapat digambarkan langkah-langkah yang terjadi dalam proses enkripsi dan dekripsi dalam suatu diagram alir sebagai berikut:

Start

Enkripsi Dekripsi

T

Y Y

T kunci > 4 AND

kunci < 56 Input kunci Input/cari file

Enkripsi / Dekripsi?

Input kunci

input = kunci enkripsi Input/cari file

A B

Gambar 4.1 Diagram Alir Sistem

(58)

4.1 Enkripsi

Langkah-langkah yang terjadi selama proses enkripsi dapat dijelaskan pada bagian di bawah ini.

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

Pertama kali dikerjakan sistem pada awal program yaitu fungsi untuk membangkitkan subkunci (subkey) dan S-box. Subkunci akan digunakan untuk proses enkripsi. Sedangkan S-box dipakai dalam fungsi F, dimana S-box adalah suatu konstanta. Berikut baris perintah untuk membangkitkan P-array dan S-box.

Private Sub Class_Initialize() On Local Error Resume Next

m_RunningCompiled = ((2147483647 + 1) < 0) m_pBox(0) = &H243F6A88

m_pBox(1) = &H85A308D3 m_pBox(2) = &H13198A2E m_pBox(3) = &H3707344 m_pBox(4) = &HA4093822 m_pBox(5) = &H299F31D0 .

. .

m_pBox(12) = &HC0AC29B7 m_pBox(13) = &HC97C50DD m_pBox(14) = &H3F84D5B5 m_pBox(15) = &HB5470917 m_pBox(16) = &H9216D5D9 m_pBox(17) = &H8979FB1B m_sBox(0, 0) = &HD1310BA6

(59)

4.1.2 Inisialisasi kunci (perluasan kunci)

Kunci yang diinputkan sebagai kunci enkripsi dan dekripsi terlebih dahulu akan diperluas menjadi karakter acak sebanyak 56 byte. Kunci acak 56

byte tersimpan dalam variabel v. Adapun program lengkapnya adalah sebagai berikut:

Public Function RandomString(ByVal L As Integer) Dim t As Integer, v As String, X As Currency For X = 1 To L 'panjang kunci maks

Randomize

t = Int((3 * Rnd) + 1)

If t = 1 Then v = v & Chr(Int((26 * Rnd) + 1) + 96) If t = 2 Then v = v & Chr(Int((26 * Rnd) + 1) + 64) If t = 3 Then v = v & Chr(Int((9 * Rnd) + 1) + 48) Next

RandomString = v End Function

4.1.3 Baca data asli (Plaintext)

Program di bawah ini untuk membaca data dari suatu berkas yang akan dienkripsi. Data terlebih dahulu akan dibaca baru kemudian dilakukan enkripsi dengan fungsi EncryptString() dan disimpan dalam variabel DataBuffer.

Dim DataBuffer As String Open InPath For Binary As #1 DataBuffer = Space$(LOF(1)) Get #1, , DataBuffer

Close #1

DataBuffer = EncryptString(DataBuffer, Key, InHex)

4.1.4 Proses enkripsi

(60)

dengan Xl1 yang telah dikenakan fungsi F, menghasilkan Xr1. Langkah ini dilakukan sampai dengan Xl dan Xr ke-16. Selanjutnya Xl16 di-XOR-kan dengan P18, dan Xr16 di-XOR-kan dengan P17. Program lengkapnya sebagai berikut.

Private Static Sub EncryptBlock(Xl As Long, Xr As Long)

Xr = Xl Xor m_pBox(Rounds)

Xl = Temp Xor m_pBox(Rounds + 1) End Sub

4.1.5 Enkripsi kunci dan simpan di file

Program di bawah ini adalah program untuk melakukan konversi kunci ke dalam format ASCII dan menyimpan dalam satu berkas yang sama dengan berkas yang akan digunakan untuk menyimpan hasil enkripsi. Kunci ini akan digunakan pada saat mencocokkan kunci pada saat melakukan dekripsi.

Public Function Encrypt(EncryptString As String, Key As Integer, Optional Decrypt As Boolean = False) Dim str1, Result As String, i As Integer

str1 = EncryptString For i = 1 To Len(str1)

(61)

4.1.6 Tulis data terenkripsi

Data hasil enkripsi akan ditulis ke dalam berkas dengan baris program sebagai berikut:

Put #F1, , str Close #F1

Open sFile For Binary As #F1 Put #F1, Len(str) + 1, Buffer() Close #F1

End Function

4.2. Dekripsi

Langkah-langkah yang terjadi selama proses dekripsi dapat dijelaskan pada bagian di bawah ini.

4.2.1 Inisialisasi array P dan kotak substitusi

Pada langkah inisialisasi P-array dan S-box sama dengan langkah inisialisasi pada proses enkripsi.

4.2.2 Inisialisasi kunci (perluasan kunci)

Baris program untuk inisialisasi kunci ini sama dengan baris program inisialisasi kunci pada proses enkripsi.

4.2.3 Baca kunci enkripsi yang tersimpan di dalam berkas terenkripsi

Program berikut digunakan untuk mengambil kunci yang enkripsi yang tersimpan dalam berkas cipher yang akan dicocokkan dengan kunci yang diinputkan pada saat melakukan dekripsi.

Public Function GetPhrase(ByVal sFile As String) Dim F1 As Integer, str As String, str1 As String Dim L As Integer, Ph As String

F1 = FreeFile

Open sFile For Binary As #F1 L = Val(Input(2, F1))

str = Input(L, F1) Close #F1

Ph = Encrypt(str, 127, True) GetPhrase = Ph

(62)

4.2.4 Pengembalian kunci terenkripsi

Kunci yang telah diubah ke dlam bentuk ASCII akan dikembalikan lagi ke dalam bentuk awalnya untuk dicocokkan kesamaannya dengan kunci enkripsi.

4.2.5 Mengambil kunci inisialisasi 56 byte dan mengenkripsinya

Public Function Encrypt(EncryptString As String, Key As Integer, Optional Decrypt As Boolean = False) Dim str1, Result As String, i As Integer

str1 = EncryptString For i = 1 To Len(str1)

Encrypt = Result End Function

Kunci inisialisasi yang sudah diperluas sebelumnya akan diambil untuk kemudian dienkripsi sebelum proses dekripsi data dijalankan. Pengambilan dilakukan dari berkas terenkripsi (cipher). Program selengkapnya untuk proses tersebut di atas adalah sebagai berikut;

Public Function GetKey(ByVal sFile As String) DoEvents

Dim F1 As Integer, str As String, strKey As String F1 = FreeFile

Open sFile For Binary Access Read As #F1 str = Input(Len(Phrase) + 2 + 56, F1) Close #F1

str = Mid(str, 3 + Len(Phrase), Len(str)) str = Encrypt(str, 127, True)

GetKey = str Reset

(63)

4.2.6 Hapus kunci yang tersimpan pada berkas terdekripsi

Proses berikutnya adalah menghapus kunci yang sebelumnya tersimpan dalam berkas. Jadi, apabila suatu berkas sudah pernah dilakukan dekripsi, untuk selanjutnya tidak akan dapat dilakukan dekripsi lagi dikarenakan beberapa data yang dibutuhkan untuk proses dekripsi akan terhapus.

Public Function RemovePhraseKey(ByVal sFile As String)

DoEvents

Dim str As String, F1 As Byte, L As String, Buffer() As Byte

L = Len(GetPhrase(sFile)) + 58 F1 = FreeFile

Open sFile For Binary As #F1 ReDim Buffer(LOF(F1) - 1 - L) Get #F1, L + 1, Buffer()

Close #F1 Kill sFile F1 = FreeFile

Open sFile For Binary As #F1 Put #F1, , Buffer()

Close #F1 End Function

4.2.7 Dekripsi data dari berkas

Program berikut digunakan untuk melakukan dekripsi data yang diambil dari berkas cipher.

Dim DataBuffer As String Open InPath For Binary As #1 DataBuffer = Space$(LOF(1)) Get #1, , DataBuffer

Close #1

DataBuffer = DecryptString(DataBuffer, Key, InHex) Open OutPath For Output As #1

Print #1, DataBuffer Close #1

(64)

4.2.8 Dekripsi kunci

Public Function DecryptString(Text As String,

Optional Key As String, Optional InHex As Boolean) As String

On Error GoTo errorhandler GoSub begin

errorhandler: Exit Function

begin:

Dim byteArray() As Byte

If InHex = True Then Text = DeHex(Text) byteArray() = StrConv(Text, vbFromUnicode) Call DecryptByte(byteArray(), Key)

DecryptString = StrConv(byteArray(), vbUnicode) End Function

4.2.9 Dekripsi byte

Dim Offset As Long, OrigLen As Long, LeftWord As Long, RightWord As Long, CipherLen As Long,

CipherLeft As Long, CipherRight As Long, CurrPercent As Long, NextPercent As Long

If (Len(Key) > 0) Then Me.Key = Key CipherLen = UBound(byteArray) + 1

For Offset = 0 To (CipherLen - 1) Step 8

Call GetWord(LeftWord, byteArray(), Offset)

Call GetWord(RightWord, byteArray(), Offset + 4) Call DecryptBlock(LeftWord, RightWord)

LeftWord = LeftWord Xor CipherLeft RightWord = RightWord Xor CipherRight

Call GetWord(CipherLeft, byteArray(), Offset) Call GetWord(CipherRight, byteArray(), Offset + 4)

Call PutWord(LeftWord, byteArray(), Offset)

Call PutWord(RightWord, byteArray(), Offset + 4) If (Offset >= NextPercent) Then

(65)

NextPercent = (CipherLen * ((CurrPercent + 1) / 100)) + 1

RaiseEvent Progress(CurrPercent) End If

Next

Call CopyMem(OrigLen, byteArray(8), 4)

If (CipherLen - OrigLen > 19) Or (CipherLen -

OrigLen < 12) Then Call Err.Raise(vbObjectError, , "Incorrect size descriptor in Blowfish decryption") Call CopyMem(byteArray(0), byteArray(12), OrigLen) ReDim Preserve byteArray(OrigLen - 1)

If (CurrPercent <> 100) Then RaiseEvent Progress(100)

End Sub

4.2.10 Dekripsi blok

Proses dekripsi pada prinsipnya sama dengan proses enkripsi, hanya saja untuk P1 s.d P18 digunakan dalam urutan terbalik. Xl1 di-XOR-kan dengan P18 dan Xr1 di-XOR-kan dengan Xl yang sudah dikenakan fungsi F. Langkah ini dilakukan sampai Xl dan Xr ke-16, selanjutnya Xl16 dikenakan operasi XOR dengan P1 dan Xr16 di-XOR-kan dengan P2.

Private Static Sub DecryptBlock(Xl As Long, Xr As Long)

On Error GoTo errorhandler GoSub begin Xl = k Xor m_pBox(Rounds)

(66)

4.2.11 Tulis data terdekripsi j = j - 2 Next

End Sub

Fungsi dibawah ini digunakan untuk menuliskan hasil dekripsi ke dalam suatu berkas yang kemudian akan disimpan dalam dalam suatu berkas.

Open OutPath For Output As #1 Print #1, DataBuffer

Close #1

DecryptFile = True End Function

4.3. Fungsi-fungsi pendukung program 4.3.1 Hapus file asal

Fungsi berikut akan dikerjakan apabila pengguna memilih untuk menghapus file sumber, baik itu file asli ataupun file hasil dekripsi.

Public Sub WipeFile(sFile As String) Dim FF As Byte, i As Long

Randomize FF = FreeFile

Open sFile For Binary As #FF For i = 1 To LOF(FF)

Put #FF, , Chr$(0) Next

Reset

Kill sFile End Sub

4.3.2 Cek file sudah ada atau belum

(67)

Private Function FileExist(FilePath As String) As Boolean

On Error GoTo errorhandler GoSub begin

errorhandler: FileExist = False Exit Function

begin:

Open FilePath For Input As #1 Close #1

FileExist = True End Function

4.4Implementasi User Interface

Dalam program enkripsi dan dekripsi ini terdiri dari tiga form yang akan digunakan sebagai antarmuka antara pengguna dan sistem, yaitu Form Utama (frmMain), Form Enkripsi (frmEncrypt), serta Form Dekripsi (frmDecrypt). Hal ini berbeda dari perancangan yang sebelumnya dilakukan yang hanya memiliki satu form utama saja yang menjadi pusat terjadinya semua proses.

4.4.1 Form Utama (frmMain)

Form utama akan muncul pertama kali dan digunakan untuk memanggil Form Enkripsi (frmEncrypt) atau Form Dekripsi (frmDecrypt). Untuk melakukan enkripsi, pengguna dapat memilih menu Blowfish Æ Encrypt dan selanjutnya akan ditampilkan form Enkripsi File (frmEncrypt).

(68)

Gambar 4. 2. Form Utama (frmMain) 4.4.2 Form Enkripsi (frmEncrypt)

Form ini digunakan untuk melakukan proses enkripsi file. Dalam form ini terdapat 2 textbox. Pertama, digunakan untuk menampilkan nama dan direktori file asal yang akan dienkripsi. Dan yang kedua, digunakan untuk menampilkan nama dan direkstori file hasil enkripsi dengan ekstensi *.blf.

Nama dan direktori file tersebut dapat ditulis secara manual dengan catatan nama dan direktorinya benar atau dengan menekan tombol cari (tombol

) yang ada disebelah kanan dari masing-masing textbox.

Setelah itu pengguna dapat menekan tombol Encrypt File untuk melakukan operasi enkripsi. Tombol Encrypt File akan aktif begitu ada perubahan pada textbox, baik itu textbox pertama ataupun textbox kedua.

(69)

Gambar 4.3 Form Enkripsi (frmEncrypt)

Bila proses telah selesai akan muncul message box yang memberitahukan kepada pengguna bahwa proses telah selesai.

Gambar 4.4 Pesan pemberitahuan bahwa proses enkripsi telah selesai 4.4.3 F orm Dekripsi (frmDecrypt)

Pada prinsipnya form ini hampir sama seperti pada form Enkripsi, hanya saja proses pada form ini adalah proses kebalikan dari enkripsi, yaitu dekripsi.

File yang akan didekripsi (berekstensi *.blf) dituliskan pada textbox pertama atau akan ditampilkan secara langsung setelah melakukan pencarian

(70)

Gambar 4.5 Form Dekripsi (frmDecrypt)

Sama seperti pada form Enkripsi, terdapat optionbutton untuk melakukan pilihan apakah akan menghapus file asli atau tidak.

Setelah proses dekripsi selesai akan muncul messagebox yang memberitahukan bahwa proses dekripsi telah selesai.

Gambar 4.6 Pesan pemberitahuan bahwa proses dekripsi telah selesai 4.4.4 Form Phrase (frmPhrase)

(71)

pengguna belum memasukkan kunci ke dalam textbox seperti ditunjukkan pada gambar berikut:

Gambar 4.7 Form Phrase (frmPhrase) tanpa input kunci

Pertama kali pengguna harus memasukkan kunci untuk proses enkripsi maupun dekripsi berupa karakter bebas. Kemudian memasukkan konfirmasi kunci untuk memastikan bahwa kunci yang dimasukkan benar. Apabila kunci berbeda dengan kunci konfirmasi, maka tombol eksekusi tidak akan aktif, sehingga pengguna tidak bisa melanjutkan ke proses selanjutnya.

Gambar 4.8 Form Phrase (frmPhrase) dengan input kunci dan input konfirmasi sama

(72)

Gambar 4.9 Pesan kesalahan jumlah masukan kunci

Dan apabila pengguna melakukan kesalahan dalam memasukkan kunci enkripsi maupun dekripsi, akan ditampilkan pesan kesalahan seperti pada gambar.

Gambar 4.10 Pesan masukan kunci yang salah 4.5 Help

4.5.1 Form Help (frmHelp)

Form Bantu menampilkan penjelasan mengenai petunjuk singkat cara-cara penggunaan program. Baik itu untuk proses dekripsi maupun enkripsi. Juga dijelaskan mengenai ketentuan-ketentuan yang berhubungan langsung dengan program enkripsi dan dekripsi. Diantaranya adalah mengenai format file yang bisa dikenai proses enkripsi dan dekripsi, kunci dekripsi harus sama dengan kunci enkripsi, format file dari file hasil enkripsi dan penjelasan mengenai lokasi penyimpan dari file hasil enkripsi.

(73)

Gambar 4.11 Form Help Topics (frmHelp) 4.5.2 Form About (frmAbout)

Form About berisi tentang profil dari program enkripsi dan dekripsi file dengan metode Blowfish.

(74)

5.1 Analisa Hasil Perangkat Lunak

Setelah dilakukan uji coba, secara umum program enkripsi berkas dengan metode Blowfish dapat berjalan dengan baik. Program enkripsi dan dekripsi file ini dapat melakukan enkripsi dan dekripsi berkas berekstensi *.txt dan menyimpan hasil enkripsi dalam berkas dengan ekstensi *.blf, sedangkan hasil dekripsi kembali akan tersimpan dalam format berkas *.txt.

Adapun kelebihan dan kekurangan program ini adalah sebagai berikut: 5.1.1Kelebihan

1. Hasil enkripsi akan selalu berbeda-beda walaupun berkas yang dienkripsi adalah berkas yang sama dan mengggunakan kunci yang sama.

2. Dengan hasil yang berbeda-beda untuk setiap hasil enkripsi, akan semakin menyulitkan dalam pemecahan ciphertext tanpa mengetahui kunci enkripsi dan dekripsinya.

5.1.2 Kekurangan

1. Tampilan masih sederhana dan kurang menarik.

2. Tidak disertai fasilitas untuk melakukan enkripsi pada teks yang dimasukkan pada suatu textbox.

3. Program tidak dapat mendeteksi apakah berkas yang akan di dekripsi sudah pernah di dekripsi sebelumnya atau belum karena setiap kali suatu berkas di dekripsi, maka kunci yang tersimpan akan secara otomatis terhapus.

(75)

5.2 Analisa Piranti Pengembang (Visual Basic 6.0)

Visual Basic walaupun sebenarnya tidak begitu cocok untuk aplikasi

(76)

6.1Kesimpulan

Kriptografi merupakan proses menulis pesan secara rahasia yang terdiri dari dua proses, yaitu enkripsi dan dekripsi.

Enkripsi merupakan proses untuk merubah pesan asli (plaintext)ke dalam pesan acak (ciphertext). Sedangkan Dekripsi merupakan proses perubahan kembali dari ciphertext ke dalam plaintext.

Terdapat banyak metode kriptografi. Salah satunya adalah Blowfish, yang merupakan algoritma simetris yang menggunakan jaringan Feistel.

Berdasarkan hasil dari implementasi dan analisa dari proses enkripsi dan dekripsi dengan metode Blowfish, dapat disimpulkan antara lain:

1. Algoritma Blowfish dapat melakukan enkripsi dan dekripsi berkas dengan baik seperti yang dikemukan dalam landasan teori.

2. Secara umum program enkripsi dan dekripsi ini dapat berjalan dengan baik sesuai, sehingga dapat membantu pengguna dalam melakukan enkripsi dan dekripsi berkas.

3. Program dapat melakukan enkripsi berkas dengan ukuran tidak terbatas. 4. Program juga dapat melakukan dekripsi dari berkas yang sudah dienkripsi

sebelumnya.

Gambar

Gambar 2.1 Proses Enkripsi/Dekripsi Sederhana
Gambar 2.2 Proses Enkripsi/Dekripsi Kunci Simetris
Gambar 2. 3 Proses Enkripsi/Dekripsi Kunci Publik
Tabel 2.1 Tipe-tipe Variabel dan Konstanta pada Visual Basic 6.0
+7

Referensi

Dokumen terkait

Pengelolaan Wilayah Pesisir dan Pulau-Pulau Kecil terpadu merupakan pendekatan yang memberikan arah bagi pemanfaatan Sumber Daya Pesisir dan Pulau-Pulau Kecil secara

setelah kami pelajari dengan saksama Dokumen PRAKUALIFIKASI tersebut, dengan ini kami mengajukan Dokumen Administrasi Kualifikasi dan Dokumen Teknis Kualifikasi untuk pengadaan

Penelitian yang sudah dilakukan bertujuan untuk membuat suatu sistem berbasis web yang dapat digunakan dalam pengolahan data pelayanan pendataan tumbuh kembang

Sistem Administrasi Badan Hukum yang selanjutnya disingkat SABH adalah pelayanan jasa hukum pengesahan badan Perseroan, Yayasan dan Perkumpulan dengan

Berdasarkan uraian di atas menunjukkan bahwa untuk meningkatkan konsentrasi, maka seseorang perlu mengembangkan sikap dan perilaku jujur terhadap penutur apabila ia mempunyai

Eksperimen ini bertujuan untuk melihat pengaruh dari peningkatan clockspeed yang didapat setelah dilakuakan Overclock terhadapap kinerja sistem, Pada sistem komputer yang

efektivitas peroksidase yang diperoleh dari kulit batang ubi kayu dan menentukan persentase penurunan kadar fenol dengan penambahan peroksidase dari kulit batang ubi kayu

Berdasarkan data koordinat garis lintang dan bujur posisi pengguna hotspot di Universitas Muhammadiyah Ponorogo yang diolah dengan menerapkan algoritma K-Means,