Aplikasi Penyimpanan File On-Line Dengan Enkripsi Menggunakan Modifikasi Algoritma Vertical Bit Rotation (VBR) 32 Bit

(1)

ALGORITMA

VERTICAL BIT ROTATION

(VBR) 32 BIT

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana Program Strata Satu Jurusan Teknik Informatika

Fakultas Teknik dan Ilmu Komputer Universitas Komputer Indonesia

RONI SAPTO PURWANDOKO

10105266

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

2010


(2)

i

ABSTRAK

APLIKASI PENYIMPANAN FILE ONLINE DENGAN ENKRIPSI MENGGUNAKAN MODIFIKASI ALGORITMA VERTICAL BIT ROTATION (VBR) 32 BIT

Oleh

RONI SAPTO PURWANDOKO 10105266

Perkembangan internet dan website mendorong pemanfaatan internet sebagai tempat untuk menyimpan data. Berkembangnya teknik penyimpanan file secara online mempermudah penyimpanan dan penyebaran file tersebut.

Banyak fasilitas yang ditawarkan, namun dari sisi keamanan, tidak ada keamanan yang mutlak. Salah satu cara pengamanan file adalah menyandikan file tersebut dengan algoritma kriptografi, dan pada penelitian ini akan digunakan algooritma kriptografi Vertical Bit Rotation (VBR) sebagai algoritma kriptografi yang digunakan untuk menambah tingkat keamanan dalam hal menyimpan file secara online.

Algoritma kriptografi VBR adalah algoritma kriptografi yang masih dalam taraf pengembangan, sehingga belum diketahui tingkat keamanannya, dan dalam penelitian ini akan dilakukan perbaikan dan pengembangan terhadap algoritma kriptografi VBR sehingga dapat memiliki tingkat keamanan yang lebih baik.

Telah banyak penelitian yang mempergunakan Avalanche Effect sebagai parameter untuk menilai tingkat keamanan sebuah algoritma kriptografi. Pada penelitian ini juga mempergunakan avalanche effect sebagai parameter untuk mengetahui tingkat keamanan, baik sebelum pengembangan algoritma kriptografi VBR maupun sesudah pengembangan.

Dari penelitian ini dapat ditarik kesimpulan bahwa modifikasi algoritma kriptografi VBR 32 bit dapat digunakan untuk menyandikan file yang disimpan secara online. Dari nilai avalanche effect-nya dapat dikatakan bahwa hasil dari pengembangannya menjadikan modifikasi algoritma kriptografi VBR 32 bit masuk dalam kategori baik.


(3)

ii

APPLICATION FOR ONLINE FILE STORAGE WITH ENCRYPTION USING MODIFIED

VERTICAL BIT ROTATION (VBR) 32 BITS ALGORITHM

By

RONI SAPTO PURWANDOKO 10105266

Encourage the development of internet and website use of the Internet as a place to online file storage. The rise of online file storage techniques facilitate the storage and dissemination of the file.

Many of the facilities offered, but from the security side, there is no absolute security. One way of securing files are encrypted the file using cryptographic algorithms, and this study will be used Vertical Bit Rotation (VBR) as the cryptographic algorithms used to increase the level of security in terms of storing files online.

VBR is a cryptographic algorithm that are still in early stages of development, so that the safety level is unknown, and this research will be improved VBR so it can have a better level of security.

Have been many studies that use the Avalanche Effect as a parameter to assess the security level of a cryptographic algorithm. This research is also use the avalanche effect as a parameter to determine the level of security, both before the development of cryptographic algorithms VBR and after development.

From this study we can conclude that modified of VBR can be used to encode files stored online. From the value of its avalanche effect can be said that the results of the development, modified of VBR becomes in good category.


(4)

(5)

(6)

v

DAFTAR ISI

LEMBAR JUDUL

LEMBAR PENGESAHAN

ABSTRAK ... i

ABSTRACT ... ii

LEMBAR PERSEMBAHAN ... iii

KATA PENGANTAR ... iv

DAFTAR ISI ... v

DAFTAR TABEL ... ix

DAFTAR GAMBAR ... xi

DAFTAR SINGKATAN DAN SIMBOL ... xvi

DAFTAR LAMPIRAN ... xvii

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang Masalah ... 1

1.2 Identifikasi Masalah ... 4

1.3 Maksud dan Tujuan ... 5

1.4 Batasan Masalah ... 5

1.5 Metodologi Penelitian ... 6

1.6 Sistematika Penulisan ... 8

BAB II TINJAUAN PUSTAKA ... 9

2.1 Kriptografi ... 9

2.1.1 Pengertian Kriptografi ... 9


(7)

vi

2.1.3.2 Kriptografi Asimetri (Asymetric Cryptography) ... 11

2.1.4 Tinjauan Matematis ... 12

2.1.4.1 Konsep Dasar Kriptografi ... 12

2.1.4.2 Aritmatika Modular ... 13

2.1.5 Cipher Blok ... 14

2.1.6 Avalanche Effect ... 16

2.1.7 Proses Padding ... 16

2.2 Algoritma Kriptografi Vertical Bit Rotation (VBR) ... 17

2.2.1 Pembentukan Blok ... 17

2.2.2 Proses Enkripsi ... 18

2.2.3 Proses Dekripsi ... 20

BAB III ANALISIS DAN PERANCANGAN SISTEM ... 21

3.1 Analisis Masalah ... 21

3.2 Analisis Algoritma Kriptogafi VBR ... 22

3.2.1 Prosedural Enkripsi Dan Dekripsi Algoritma Kriptografi VBR ... 22

3.2.2 Analisis Blok Penyandian pada Algoritma Kriptografi VBR ... 23

3.2.3 Analisis Rotasi Bit pada Algoritma Kriptografi VBR ... 25

3.2.4 Analisis Kunci (K) dan Variabel Rotasi (r) ... 26

3.2.5 Tidak Ada Perubahan Bit pada Algoritma Kriptografi VBR ... 27

3.2.6 Avalanche Effect pada Algoritma Kriptografi VBR ... 27

3.3 Modifikasi pada Algoritma Kriptogafi VBR ... 29


(8)

vii

3.3.2 Penambahan SubBlok dan Proses Padding ... 30

3.3.3 Aturan Tambahan Variabel Rotasi (r) ... 32

3.3.4 Proses Modulo Variabel Rotasi ... 32

3.3.5 Proses Initial Rotation dan Proses Final Rotation ... 33

3.3.6 Modifikasi Kunci (K) ... 33

3.3.7 Ekspansi Kunci (K), Proses Add Key, dan Proses Add SubKey .. 34

3.3.8 Proses SubBlock Rotation ... 35

3.3.9 Proses Byte Substitution ... 36

3.3.10 Proses Binary Rotation dan Proses Inverse Binary Rotation ... 37

3.3.11 Putaran (Round) pada Algoritma Kriptograf VBR 32 Bit ... 38

3.3.12 Prosedural Enkripsi dan Dekripsi Algoritma Kriptografi VBR 32 Bit ... 38

3.3.12 Mirrored Key Generation (MKG) ... 39

3.4 Analisis Pengguna ... 40

3.5 Analisis Perangkat Lunak ... 41

3.6 Analisis Perangkat Keras ... 42

3.7 Gambaran Umum Sistem ... 42

3.8 Perancangan Sistem ... 43

3.8.1 Perancangan Model Sistem ... 43

3.8.1.1 Entity Relationship Diagram ... 43

3.8.1.2 Data Flow Diagram ... 44

3.8.1.3 Kamus Data ... 48

3.8.1.4 Spesifikasi Proses ... 54


(9)

viii

3.8.3 Perancangan Antarmuka (Interface) ... 62

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM ... 82

4.1 Implementasi ... 82

4.1.1 Perangkat Lunak Pendukung ... 82

4.1.2 Perangkat Keras ... 83

4.1.3 Implementasi Database ... 84

4.1.4 Implementasi Pengguna ... 84

4.1.5 Implementasi Data ... 85

4.1.6 Implementasi Antarmuka ... 85

4.2 Pengujian Sistem ... 93

4.2.1 Pengujian Terhadap Masukan ... 93

4.2.2 Pengujian Keamanan Berdasarkan Avalanche Effect ... 95

4.2.2.1 Pengujian dengan Kunci Berbeda 1 Bit ... 97

4.2.2.1 Pengujian dengan Plainteks Berbeda 1 Bit ... 97

4.2.3 Pengujian Pada Sistem Operasi 32 Bit dan Sistem Operasi 64 Bit . 98 4.3 Analisa Data Eksperimen (Nilai Avalanche Effect) ... 99

4.4 Analisa Modifikasi Algoritma Kriptografi VBR 32 Bit ... 101

BAB V KESIMPULAN DAN SARAN ... 103

5.1 Kesimpulan ... 103

5.2 Saran ... 104 DAFTAR PUSTAKA


(10)

1 BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Internet adalah teknologi yang berkembang sangat pesat. Keberadaannya sangat melekat pada kehidupan sehari-hari, baik itu pekerjaan, hiburan, maupun sesuatu yang pribadi. Tidak hanya di kota besar, kini internet mulai menyebar hingga ke desa. Dan tidak hanya secara konvensional menggunakan Personal Computer (PC) dengan modem, internet kini bisa diakses menggunakan notebook

melalui hotspot ataupun menggunakan telepon seluler.

Seiring berkembangnya teknologi internet, teknologi website, sebagai

interface yang menjembatani antara pengguna dan dunia maya, juga ikut berkembang. Berbagai macam bahasa pemrograman web digunakan, dan semakin lama semakin disempurnakan mengikuti perkembangan teknologi-teknologi yang berkaitan. Web design juga tak kalah berkembangnya, menjadikan dunia maya lebih menarik. Penggunaan aplikasi berbasis web sedang popular pada saat ini, karena perancangan, pembangunan, dan pengimplementasian serta penggunaan aplikasi berbasis web dirasa lebih mudah. Juga tergolong lebih mudah dalam hal perubahan dan pengembangan.

Begitu luasnya daerah yang bisa dijangkau oleh internet, sehingga dapat dipergunakan untuk penyebaran informasi, transaksi, dan penyimpanan data secara online. Penyimpanan file secara online sudah banyak dilakukan. Teknik ini mempermudah proses pengaksesan data karena tidak dibatasi kapan dan dimana kita membutuhkan file tersebut. Tidak lagi memerlukan tempat menyimpan data


(11)

dengan kapasitas besar yang harus dibawa kemana-mana. Hanya memerlukan koneksi internet dan langsung dapat mengakses file yang diinginkan, kapan saja, dimana saja. Telah banyak situs-situs yang menawarkan jasa penyimpanan data secara online, baik yang berbayar maupun yang gratis. Namun untuk yang gratis biasanya mendapatkan fasilitas yang lebih terbatas.

Data yang disimpan secara online tidak sepenuhnya aman. Padahal keamanan data yang disimpan secara online mutlak diperlukan. Mulai dari keamanan dari perubahan oleh yang tidak berhak merubahnya, hingga keamanan dari pencurian data tersebut. Terutama untuk data-data yang sifatnya rahasia, hanya pihak-pihak tertentu saja yang memiliki wewenang mengakses data tersebut. Biasanya, situs-situs penyimpanan data online memberikan keamanan penyimpanan data berupa pembatasan akses data menggunakan akun yang dilindungi dengan kata kunci. Namun pada dasarnya sistem ini masih belum aman sepenuhnya, karena data akun dapat di-hack oleh orang-orang yang berusaha mengambil data tersebut.

Kriptografi merupakan salah satu teknik pengamanan data dengan cara menyandikan data tersebut (enkripsi data dari plainteks menjadi cipherteks) menggunakan algoritma kriptografi tertentu dengan kunci (key) tertentu. Algoritma kriptografi yang sama digunakan pula untuk mengembalikan data yang telah disandikan menjadi kembali seperti semula (proses dekripsi). Kunci, berupa string yang sifatnya rahasia. Hanya pihak-pihak tertentu yang memiliki hak untuk mengakses file yang boleh mengetahui kunci ini, sehingga pihak-pihak yang tidak


(12)

3

memiliki kunci yang benar tidak akan bisa menggunakan atau membaca data tersebut.

Banyak ragam dari algoritma kriptografi, baik klasik maupun modern. Baik itu bersifat simetris maupun asimetris. Salah satunya adalah algoritma kriptografi

Vertical Bit Rotation (VBR), yang merupakan algoritma kriptografi yang terklasifikasi dalam algoritma kriptografi modern, namun memiliki kesederhanaan seperti algoritma kriptografi klasik, sehingga sangat cocok diterapkan dalam enkripsi data yang akan disimpan secara online.

Algoritma kriptografi VBR merupakan algoritma kriptografi yang baru. Saat ini belum ada penelitian khusus terhadap algoritma kriptografi VBR sehingga belum diketahui sejauh mana tingkat keamanan algoritma kriptografi VBR tersebut. Untuk menilai tingkat keamanan sebuah algoritma kriptografi dapat menggunakan banyak cara. Salah satunya adalah dengan menghitung nilai

avalanche effect dari data yang telah dienkripsi menggunakan algoritma kriptografi tersebut. Dengan mengetahui nilai avalanche effect dapat disimpulkan tingkat keamanan dari algoritma kriptografi tersebut.

Bila ingin menyimpan data secara online dengan menggunakan teknik kriptografi, biasanya data tersebut dienkripsi terlebih dahulu menggunakan perangkat lunak tertentu, lalu disimpan pada penyimpanan data online. Namun alangkah lebih mudah bila seseorang yang ingin menyimpan data secara online

dengan teknik kriptografi tanpa perlu memasang (install) perangkat lunak untuk mengenkripsi terlebih dahulu. Hal ini bisa terjadi bila proses enkripsi data terjadi


(13)

di server, sehingga data yang disimpan tidak perlu dienkripsi terlebih dahulu, namun tersimpan dalam bentuk terenkripsi (cipherteks).

1.2 Identifikasi Masalah

Karena terdapat masalah-masalah seperti yang telah dipaparkan pada latar belakang, yaitu :

1. data yang disimpan secara online tidak sepenuhnya aman, karena masih bisa diambil oleh pihak-pihak yang tidak memiliki hak dengan cara menembus keamanan yang telah dibuat,

2. diperlukan sebuah aplikasi berbasis web untuk menyimpan data dengan enkripsi menggunakan algoritma kriptografi secara online, sehingga tidak diperlukan perangkat lunak lain untuk melakukan enkripsi sebelum melakukan penyimpanan secara online,

3. belum diketahui sejauh mana tingkat keamanan algoritma kriptografi Vertical Bit Rotation (VBR), karena belum ada pengujian secara resmi,

maka diperlukan sebuah aplikasi dapat membantu memecahkan masalah-masalah tersebut.

Oleh karena itu dapat dirumuskan masalah bagaimana membangun Aplikasi Penyimpanan File Online Dengan Enkripsi Menggunakan Modifikasi Algoritma

Vertical Bit Rotation (VBR) 32 Bit, serta melakukan penelitian lebih lanjut mengenai tingkat keamanan dari algoritma kriptografi Vertical Bit Rotation


(14)

5

1.3 Maksud dan Tujuan

Dari masalah-masalah yang telah dirumuskan, dimaksudkan untuk membuat sebuah Aplikasi Penyimpanan File Online Dengan Enkripsi Menggunakan Modifikasi Algoritma Vertical Bit Rotation (VBR) 32 Bit, serta melakukan penelitian lebih lanjut mengenai tingkat keamanan dari Algoritma kriptografi

Vertical Bit Rotation (VBR).

Adapun tujuan dari penelitian dan pembuatan aplikasi ini adalah : 1. membuat aplikasi penyimpanan file online berbasis web,

2. meningkatkan keamanan penyimpanan fileonline dengan enkripsi data menggunakan algoritma kriptografi, yaitu algoritma kriptografi VBR, 3. menganalisa tingkat keamanan algoritma kriptografi VBR dengan

menghitung nilai Avalanche Effect-nya, melakukan pengembangan dan perbaikan pada algoritma kriptografi VBR agar memiliki tingkat keamanan yang tinggi.

1.4 Batasan Masalah

Aplikasi yang akan dibangun adalah aplikasi berbasis web dengan kemampuan :

1. menyimpan (upload) data berupa file pada penyimpanan fileonline, 2. meng-enkripsi file pada saat penyimpanan fileonline,

3. mendekripsi file ketika file tersebut diambil (download) dari penyimpanan fileonline,

4. mengambil (download) data berupa file yang terdekripsi dari penyimpanan fileonline,


(15)

5. tidak ada pembatasan tipe file, namun akan dibatasi dengan maksimal ukuran sebesar 20 MB,

6. proses enkripsi dan dekripsi file menggunakan bahasa pemrograman PHP, menggunakan modifikasi algoritma kriptografi VBR 32 bit.

Untuk pengembangan algoritma kriptografi VBR, tetap menggunakan prinsip-prinsip dasar dari algoritma kriptografi VBR, yaitu perputaran bit secara vertikal, dan dilakukan pengujian menghiung nilai Avalanche Effect sebagai parameter tingkat keamanan.

1.5 Metodologi Penelitian

Dalam sebuah penelitian diperlukan sebuah metodologi agar penelitian menjadi lebih sistematis dan terarah, sehingga maksud dan tujuan dari penelitian tersebut dapat tercapai sesuai dengan yang telah direncanakan. Metodologi penelitian ada beberapa macam. Pada penelitian ini akan digunakan salah satu metodologi penelitian. Karena penelitian ini memiliki rentang waktu yang terbatas dan relatif pendek, serta memiliki waktu-waktu deadline, maka akan digunakan metodologi penelitian Waterfall. Adapun skema dari metodologi penelitian

Waterfall dapat dilihat seperti pada gambar 1.1.


(16)

7

Rekayasa Sistem : Tahap ini merupakan kegiatan pengumpulan data sebagai pendukung pembangunan sistem serta menentukan ke arah mana aplikasi ini akan dibangun.

Analisis Sistem : Mengumpulkan kebutuhan secara lengkap kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh aplikasi yang akan dibangun. Tahap ini harus dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap.

Perancangan Sistem : Perancangan antarmuka dari hasil analisis kebutuhan yang telah selesai dikumpulkan secara lengkap.

Pengkodean Sistem : Hasil perancangan sistem diterjemahkan ke dalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Aplikasi yang dibangun langsung diuji baik secara unit. Pengujian Sistem : Penyatuan unit-unit program kemudian diuji secara

keseluruhan.

Pemeliharaan Sistem : Mengoperasikan aplikasi dilingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan karena adaptasi dengan situasi yang sebenarnya.


(17)

Umpan Balik : Merupakan respon dari pengguna sistem yang bisa digunakan untuk mengetahui sejauh mana aplikasi yang dibangun diterima oleh penggunanya.

1.6 Sistematika Penulisan

Sistematika penulisan laporan penelitian ini dibagi dalam beberapa bab dengan pokok pembahasan secara umum sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisi latar belakang masalah, perumusan masalah, maksud dan tujuan, batasan masalah, metodologi penelitian, sistematika penulisan.

BAB II TINJAUAN PUSTAKA

Bab ini akan membahas semua literatur yang menjadi dasar dibangunnya aplikasi ini. Semua teori yang dipakai akan dibahas secara detail dan lengkap. BAB III ANALISIS DAN PERANCANGAN SISTEM

Bab ini berisi analisis kebutuhan dalam membangun aplikasi ini sesuai dengan metode pembangunan perangkat lunak yang digunakan. Selain itu terdapat juga perancangan antarmuka untuk aplikasi yang akan dibangun sesuai dengan hasil analisis yang telah dibuat.

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini berisi hasil implementasi dari hasil analisis dan perancangan yang telah dibuat disertai juga dengan hasil pengujian dari aplikasi ini yang dilakukan secara local maupun online.

BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan tentang keseluruhan dari pembangunan aplikasi ini dan saran tentang aplikasi ini untuk penelitian selanjutnya.


(18)

9 BAB II

TINJAUAN PUSTAKA

2.1 Kriptografi

2.1.1 Pengertian Kriptografi

Ada beberapa definisi yang telah dikemukakan di dalam berbagai literatur. Kata kriptografi berasal dari bahasa Yunani yaitu cryptos yang berarti rahasia dan

graphein yang berarti tulisan [5]. Kriptografi adalah suatu ilmu yang mempelajari penulisan secara rahasia dengan menggunakan teknik-teknik metematika.

Dalam menjaga kerahasiaan data dengan kriptografi, data sederhana yang dikirim (plainteks) diubah ke dalam bentuk data sandi (cipherteks), kemudian data sandi tersebut hanya dapat dikembalikan ke bentuk data sebenarnya hanya dengan menggunakan kunci (key) tertentu yang dimiliki oleh pihak yang sah saja. Tentunya hal ini menyebabkan pihak lain yang tidak memiliki kunci tersebut tidak akan dapat membaca data yang sebenarnya sehingga dengan kata lain data akan tetap terjaga

2.1.2 Tujuan Kriptografi

Kriptografi bertujuan untuk memberikan layanan pada aspek-aspek keamanan antara lain [5] :

1. kerahasiaan (confidentiality), yaitu menjaga supaya pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak,

2. integritas data (data integrity), yaitu memberikan jaminan bahwa untuk tiap bagian pesan tidak akan mengalami perubahan dari saat data


(19)

dibuat/dikirim oleh pengirim sampai dengan saat data tersebut dibuka oleh penerima data,

3. otentikasi (authentication), yaitu berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan,

4. nirpenyangkalan (non repudiation), yaitu memberikan cara untuk membuktikan bahwa suatu dokumen datang dari seseorang tertentu sehingga apabila ada seseorang yang mencoba mengakui memiliki dokumen tersebut, dapat dibuktikan kebenarannya dari pengakuan orang tersebut.

2.1.3 Jenis Algoritma Kriptografi

Berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, kriptografi dapat dibedakan menjadi 2 macam, yaitu kriptografi simetri (symetric cryptography) dan kriptografi asimetri (asymetric cryptography) [9].

2.1.3.1 Kriptografi Simetri (Symetric Cryptography)

Pada sistem kriptografi simetri, kunci untuk proses enkripsi sama dengan kunci untuk proses dekripsi. Keamanan sistem kriptografi simetri terletak pada kerahasiaan kunci. Istilah lain untuk kriptografi simetri adalah kriptografi kunci privat (private key cryptography) atau kriptografi konvensional (conventional cryptography).


(20)

11

Gambar 2.1 Kriptografi Simetri (Symetric Cryptography)

Algoritma kriptografi simetri dapat dikelompokkan menjadi dua kategori antara lain :

1. Cipher aliran (stream cipher)

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

2. Cipher blok (block cipher)

Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya. Cipher blok mengenkripsi satu blok bit setiap kali.

2.1.3.2 Kriptografi Asimetri (Asymetric Cryptography)

Pada sistem kriptografi asimetri, kunci untuk proses enkripsi tidak sama dengan kunci untuk proses dekripsi. Istilah lain untuk kriptografi asimetri adalah kriptografi kunci publik (public key cryptography), sebab kunci untuk enkripsi tidak rahasia dan dapat diketahui oleh siapapun, sementara kunci untuk dekripsi hanya diketahui oleh penerima pesan.


(21)

Gambar 2.2 Kriptografi Asimetri (Asymetric Cryptography)

2.1.4 Tinjauan Matematis

2.1.4.1 Konsep Dasar Kriptografi

Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi-relasi himpunan yaitu himpunan yang berisi elemen plainteks dan himpunan yang berisi elemen cipherteks [4]. Enkripsi dan dekripsi merupakan fungsi transformasi antara dua himpunan tersebut. Bila himpunan plainteks dinotasikan dengan P dan himpunan cipherteks dinotasikan dengan C, sedangkan fungsi enkripsi dinotasikan dengan E dan fungsi dekripsi dinotasikan dengan D maka proses enkripsi dan dekripsi dapat dinyatakan dalam notasi matematis sebagai berikut :

( )

P C

E = (2.1)

( )

C P

D = (2.2)

Karena proses enkripsi dan dekripsi bertujuan untuk memperoleh kembali data asal, maka :

( )

(

E P

)

P

D = (2.3)

Relasi antara himpunan plainteks dengan himpunan cipherteks merupakan korespondensi satu-satu. Hal ini merupakan keharusan untuk mencegah terjadinya


(22)

13

ambigu dalam dekripsi yaitu satu elemen cipherteks menyatakan lebih dari satu elemen plainteks.

Pada metode kriptografi simetris hanya menggunakan satu buah kunci untuk proses enkripsi dan dekripsi. Bila kunci dinotasikan dengan k maka proses enkripsi dan dekripsi kriptografi simetris dapat dinyatakan sebagai berikut :

( )

P C Ek =

( )

C P Dk =

maka

( )

(

E P

)

P

Dk k = (2.4)

Pada metode kriptografi asimetris menggunakan kunci umum untuk enkripsi dan kunci pribadi untuk dekripsi. Bila kunci umum dinotasikan dengan

pk dan kunci pribadi dinotasikan dengan sk, maka proses enkripsi dan dekripsi kriptografi asimetris dapat dinyatakan sebagai berikut :

( )

P C Epk =

( )

C P Dsk =

maka

( )

(

E P

)

P

Dsk pk = (2.5)

2.1.4.2 Aritmatika Modular

Aritmatika modular merupakan operasi matematika yang banyak diimplementasikan pada metoda kriptografi [2]. Pada metoda kriptografi simetris, operasi aritmatika modular yang sering dipakai adalah operasi penjumlahan


(23)

modulo dua dalam operasi XOR (Exclusive OR) dengan dinotasikan ⊕. Nilai operasi XOR dapat dilihat pada tabel berikut ini :

Tabel 2.1 Tabel nilai operasi XOR

a b ab

0 0 0 0 1 1 1 0 1 1 1 0 Dari tabel 2.1 dapat dilihat sifat-sifat untuk operasi XOR :

0 = ⊕A A

A A⊕0=

A

A⊕1= ′ dengan A′ adalah kebalikan (komplemen) nilai A

2.1.5 Cipher Blok

Pada cipher blok, rangkaian bit-bit plainteks dibagi menjadi blok-blok bit dengan panjang sama. Enkripsi dilakukan terhadap blok bit plainteks menggunakan bit-bit kunci (yang ukurannya sama dengan blok plainteks). Algoritma enkripsi menghasilkan blok cipherteks yang berukuran sama dengan blok plainteks. Dekripsi dilakukan dengan cara yang serupa seperti enkripsi.

Misalkan blok plainteks

( )

P yang berukuran n bit dinyatakan sebagai vektor

(

p p pn

)

P= 1, 2,K, (2.6)

yang dalam hal ini p i adalah bit 0 atau bit 1 untuk i=1,2,K,n dan blok cipherteks

( )

C adalah


(24)

15

(

c c cn

)

C = 1, 2,K, (2.7)

yang dalam hal ini ci adalah bit 0 atau bit 1 untuk i=1,2,K,n. Bila plainteks dibagi menjadi m buah blok, barisan blok-blok plainteks dinyatakan sebagai

(

P1,P2,KPm

)

Untuk setiap blok plainteks Pi, bit-bit penyusunnya dapat dinyatakan sebagai vektor

(

i i in

)

i p p p

P = 1, 2,K, (2.8)

Enkripsi dengan kunci K dinyatakan dengan persamaan

( )

P C

Ek = (2.9)

sedangkan dekripsi dengan kunci K dinyatakan dengan persamaan

( )

C P

Dk = (2.10)

Skema enkripsi dan dekripsi dengan cipherblok dapat dilihat pada gambar 2-3.


(25)

2.1.6 Avalanche Effect

Salah satu karakteristik untuk menentukan baik atau tidaknya suatu algoritma kriptografi adalah dengan melihat avalanche effect-nya [4]. Perubahan yang kecil pada plainteks maupun kunci akan menyebabkan perubahan yang signifikan terhadap cipherteks yang dihasilkan. Atau dengan kata lain, perubahan satu bit pada plainteks maupun kunci akan menghasilkan perubahan banyak bit pada cipherteks. Suatu avalanche effect dikatakan baik jika perubahan bit yang dihasilkan berkisar antara 45-60% (sekitar separuhnya, 50 % adalah hasil yang sangat baik) [7]. Hal ini dikarenakan perubahan tersebut berarti membuat perbedaan yang cukup sulit untuk kriptanalis melakukan serangan. Nilai

avalanche effect dirumuskan dengan :

( )

100%

_ _ _ = ∗

total bit berubah bit AE Effect

Avalanche (2.11)

2.1.7 Proses Padding

Proses padding adalah proses penambahan byte-byte dummy berupa karakter NULL pada byte-byte sisa yang masih kosong pada blok terakhir plaintext, sehingga ukurannya menjadi sama dengan ukuran blok penyandian [4]. Sebagian besar ukuran arsip yang akan disandikan tidak merupakan kelipatan dari ukuran blok penyandian, sehingga blok terakhir dari arsip memiliki ukuran yang lebih kecil dari ukuran blok penyandian. Hal ini mengakibatkan tidak sesuainya perhitungan matematis pada blok terakhir pada penerapan beberapa algoritma kriptografi yang perhitungan matematisnya mengharuskan ukuran blok penyandian sesuai dengan yang telah ditentukan.


(26)

17

2.2 Algoritma Kriptografi Vertical Bit Rotation (VBR)

Algoritma kriptografi Vertical Bit Rotation (VBR), dibuat oleh Hanson Prihantoro Putro dalam makalahnya berjudul “Teknik Kriptografi Block Chiper dengan VBR (Perputaran Bit Vertical)” [3]. Algoritma kriptografi ini masuk dalam jenis kriptografi simetris dan masuk dalam kategori cipher blok. Pembuatan algoritma kriptografi ini lebih bertujuan pada membuat algoritma kriptografi modern namun memiliki kesederhanaan seperti algoritma kriptografi klasik.

2.2.1 Pembentukan blok

Algoritma kriptografi VBR menggunakan blok dengan ukuran maksimal 256 byte. Namun untuk mendapatkan satu blok, tidak perlu dilakukan padding

karena tanpa padding pun algoritma kriptografi ini masih dapat berjalan.

Pertama-tama, sebuah arsip yang akan disandikan dibaca bit-bitnya, lalu dibagi sesuai dengan ukuran blok penyandian yaitu sebesar N byte. Dari satu blok, dipecah lagi per satu buah karakter, yaitu 8 bit, lalu pecahan-pecahan tersebut diurutkan secara vertikal. Sehingga didapatkan sebuah tabel bit yang terdiri dari 8 kolom dan N baris untuk N adalah jumlah (ukuran) blok penyandian. Apabila blok penyandian berukuran 256 byte, maka akan didapatkan tabel bit berukuran 8 kolom dan 256 baris. Sebagai contoh dapat dilihat pada gambar 2.4.


(27)

Karakter Plainteks

Kode ASCII 49

I 0 1 0 0 1 0 0 1 Tabel Bit

4E

N 0 1 0 0 1 1 1 0 46

F 0 1 0 0 0 1 1 0 4F

O 0 1 0 0 1 1 1 1 52

R 0 1 0 1 0 0 1 0 4D

M 0 1 0 0 1 1 0 1 41

A 0 1 0 0 0 0 0 1 54

T 0 1 0 1 0 1 0 0 49

I 0 1 0 0 1 0 0 1 4B

K 0 1 0 0 1 0 1 1 41

A 0 1 0 0 0 0 0 1 = = = = = = = = = = =

Gambar 2.4 Pembentukan blok penyandian pada algoritma kriptografi VBR

2.2.2 Proses Enkripsi

Proses enkripsi dilakukan pada setiap blok penyandian, blok per blok, hingga pada blok terakhir. Apabila ukuran blok terakhir lebih kecil dari blok penyandian yang telah ditentukan, tidak dilakukan padding sebagaimana dilakukan pada beberapa algoritma kriptografi lainnya.

Enkripsi dilakukan dengan cara menggeser ke bawah dari masing-masing kolom pada tabel bit yang telah didapat pada saat pembentukan blok penyandian. Besarnya pergeseran telah ditetapkan terlebih dahulu, sebesar r bit, pada sebuah kolom, sehingga pada setiap blok akan mengalami besar pergeseran yang sama untuk kolom yang sama. Namun untuk masing-masing kolom dapat mengalami pergeseran dengan besar yang berbeda. Karena pada tabel bit terdapat 8 kolom bit, maka diperlukan pula 8 variabel nilai untuk menggeser bit-bit pada setiap kolom (r1, r2, r3, … r8). Contoh untuk enkripsi kata INFORMATIKA menggunakan


(28)

19

nilai-nilai penggeser r1 hingga r8 masing-masing adalah 11, 4, 2, 5, 10, 9, 5, 7, dapat dilihat pada gambar 2.5.

Gambar 2.5 Proses enkripsi pada algoritma kriptografi VBR

Proses enkripsi akan menghasilkan cipherteks yang dapat dilihat sebagai karakter seperti pada gambar 2.6.

Gambar 2.6 Hasil enkripsi algoritma kriptografi VBR


(29)

Variabel rotasi yang berjumlah 8 buah dapat diambil dari kunci yang terdiri dari 8 karakter (8 byte = 64 bit) yang diambil nilai ASCIInya.

2.2.3 Proses Dekripsi

Sama halnya dengan proses enkripsi, proses dekripsi dilakukan pada setiap blok penyandian, blok per blok, hingga pada blok terakhir, dan tidak dilakukan

padding pada blok terakhir.

Pada proses dekripsi, juga dilakukan pergeseran pada tiap-tiap kolom pada tabel bit. Hanya saja bila pada proses enkripsi dilakukan pergeseran ke bawah, maka pada proses dekripsi dilakukan sebaliknya, yaitu digeser ke atas. Nilai dari pergeseran setiap kolom pada proses dekripsi harus sama dengan nilai pergeseran setiap kolom pada proses enkripsi. Karena bila tidak sama, proses dekripsi menjadi tidak sempurna dan tidak akan didapatkan arsip yang benar sebagai hasil dari proses dekripsi. Sesuai dengan contoh pada proses enkripsi, contoh untuk proses dekripsi dapat dilihat pada gambar 2.7.


(30)

21 BAB III

ANALISA DAN PERANCANGAN SISTEM

Tahap analisis dan perancangan adalah suatu tahap penguraian dari suatu sistem kedalam bagian-bagian atau komponen-komponennya untuk mengidentifikasi dan mengevaluasi permasalahan yang ditemukan dan dibuatkan suatu usulan penyelesaian masalah dan pengembangan sistem yang sesuai.

Pada bab ini akan diuraikan kebutuhan-kebutuhan dari “Aplikasi Penyimpanan File Online Dengan Enkripsi Menggunakan Algoritma Vertical Bit Rotation (VBR)”, baik kebutuhan perangkat lunak maupun kebutuhan perangkat keras. Dan mengadakan sebuah analisis mengenai algoritma kriptografi VBR sehingga ditemukan kekurangan-kekurangannya dan mencari solusi pemecahannya.

3.1 Analisis Masalah

Terdapat masalah-masalah seperti telah dijelaskan sebelumnya pada bab I maka perlu dianalisa satu per satu agar didapatkan solusi terbaik untuk pemecahan masalah-masalah tersebut.

Pertama dalam mengatasi permasalahan keamanan dalam menyimpan file online akan digunakan teknik kriptografi. Dengan menggunakan algoritma kriptografi, file yang disimpan akan disandikan dengan sebuah kunci yang hanya diketahui oleh orang yang menyimpannya. Kunci tidak disimpan dalam database


(31)

Kedua, akan dibangun sebuah aplikasi penyimpanan file online berbasis

web. Web dipilih karena memiliki kelebihan yaitu membuat aplikasi ini dapat berjalan pada semua platform sistem operasi. Aplikasi ini dapat berjalan pada beberapa macam internet browser yang merupakan aplikasi standard pada sebuah sistem operasi seperti Internet Explorer, Mozilla Firefox, Opera, Google Chrome dan Safari. Dengan menggunakan aplikasi berbasis web, pengguna tidak perlu lagi meng-install aplikasi tertentu untuk mengenkripsi file yang akan disimpan secara

online.

Ketiga, akan diambil data nilai Avalanche Effect dari ekperimen-eksperimen, sebagai indikator tingkat keamanan dari penyandian yang dilakukan. Dari nilai-nilai ini nantinya akan dapat ditarik kesimpulan sebagai tingkat keamanan algoritma kriptografi VBR.

3.2 Analisis Algoritma Kriptografi VBR

3.2.1 Prosedural Enkripsi Dan Dekripsi Algoritma Kriptografi VBR

Algoritma kriptografi VBR memiliki proses-proses yang sederhana dengan yaitu pembentukan tabel bit, pembentukan nilai variabel rotasi dan rotasi bit secara vertikal. Proses pembentukan nilai variabel rotasi dilakukan pada kunci, sedangkan pembentukan tabel bit dilakukan pada plainteks, sehingga dua proses ini dapat dilakukan secara paralel. Setelah dua proses itu selesai, barulah dapat dilakukan proses selanjutnya yaitu perputaran bit secara vertikal. Dalam algoritma kriptografi VBR tidak terdapat perulangan proses, masing-masing proses berjalan satu kali. Untuk lebih jelasnya dapat dilihat pada prosedural enkripsi dan dekripsi


(32)

23

yang digambarkan dalam bentuk flowchart seperti yang terlihat pada gambar 3.1 untuk proses enkripsi dan pada gambar 3.2 untuk proses dekripsi.

Gambar 3.1 Prosedural proses enkripsi algoritma kriptografi VBR

Gambar 3.2 Prosedural proses dekripsi algoritma kriptografi VBR

3.2.2 Analisis Blok Penyandian Pada Algoritma Kriptografi VBR

Algoritma Kriptografi VBR merupakan algoritma kriptografi simetri yang termasuk dalam kategori block cipher. Dalam algoritma ini dilakukan enkripsi atau dekripsi per blok penyandian (B) dengan ukuran blok penyandian maksimal 256 byte.


(33)

Apabila ukuran blok penyandian yang ditetapkan adalah N byte, maka akan dilakukan enkripsi maupun dekripsi setiap N byte dari file hingga pada byte

terakhir dari file. Bila f adalah jumlah blok penyandian dari sebuah file, maka akan terjadi f kali iterasi proses enkrisi atau dekripsi. Ilustrasi pembentukan blok penyandian dapat dilihat pada gambar 3.3.

Gambar 3.3 Pembagian file kedalam blok penyandian

Dari satu blok penyandian, akan dibentuk sebuah tabel bit yang terdiri dari 8 bit kolom dan N bit baris. Caranya dengan memecah blok penyandian kedalam N

buah bagian, dimana satu bagiannya memiliki besar 1 byte atau sama dengan 8 bit. Lalu bagian bagian tersebut disusun secara vertikal.


(34)

25

Untuk blok penyandian terakhir (Bf) tidak selalu berukuran N byte karena ukuran sebuah file tidak selalu merupakan kelipatan dari ukuran blok penyandian. Sehingga ada kemungkinan ukuran dari blok penyandian terakhir (Bf) kurang dari N byte.

Pada algoritma kriptografi VBR tidak ada proses padding, sehingga apabila ukuran blok yang akan disandikan kurang dari ukuran blok penyandian yang telah ditentukan, tidak akan dilakukan penambahan byte-byte dummy untuk melengkapi. Hal ini membuat algoritma kriptografi VBR tidak stabil. Misalnya blok penyandian hanya terdiri dari 1 byte, tabel bit hanya memiliki 1 baris bit, sehingga proses rotasi bit tidak dapat dilakukan.

3.2.3 Analisis Rotasi Bit pada Algoritma Kriptografi VBR

Proses enkripsi dan dekripsi pada algoritma kriptografi VBR adalah memutar (rotate) sejauh r bit secara vertikal bit-bit yang ada pada tabel 8 kolom N

baris pada setiap blok penyandian. Memutar bit adalah menggeser rangkaian bit sehingga pada satu ujungnya terdapat bit yang berada diluar area rangkaian dan di ujung lainnya mengalami kekosongan. Lalu meletakkan bit yang berada diluar area rangkaian pada tempat yang kosong pada ujung lain dari rangkaian tersebut.


(35)

Besar rotasi pada setiap kolom tidak selalu sama dan tidak selalu berbeda. Sehingga untuk melakukan enkripsi ataupun dekripsi diperlukan variabel rotasi untuk masing-masing kolom. Untuk mendapatkan variabel-variabel rotasi (r) ini diolah dari kunci penyandian.

Namun dalam kenyataannya, pergeseran bit sangat dipengaruhi oleh sistem operasi yang digunakan. Untuk sistem operasi 32 bit, pergeseran maksimal yang dapat dilakukan adalah sebesar 32 bit. Sedangkan pergeseran yang diharapkan terjadi pada proses rotasi vertikal maksimal adalah 256 bit. Maka ada ketidak-mampuan dalam melakukan proses bila algoritma kriptografi VBR dipaksakan untuk diterapkan pada mesin dengan sistem operasi 32 bit.

3.2.4 Analisis Kunci (K) dan Variabel Rotasi (r)

Proses rotasi pada setiap kolom besarnya tergantung pada variabel rotasi (r). Proses ini membutuhkan variabel-variabel rotasi untuk merotasi kolom bit pada tabel bit sesuai dengan jumlah kolom pada tabel bit. Ukuran maksimal dari blok penyandian (N) adalah 256. Angka ini dapat diwakili oleh karakter ASCII. Sehingga untuk mendapatkan variabel rotasi, bisa didapat dari nilai karakter ASCII yang dimasukkan melalui kunci. Dari pemikiran ini maka dapat disimpulkan bahwa dibutuhkan karakter-karakter ASCII yang diambil nilai desimalnya untuk menjadi nilai dari variabel-variabel rotasi yang dibutuhkan.

Jumlah kolom pada tabel bit adalah 8 kolom bit. Sehingga bila satu buah kolom membutuhkan satu buah nilai variabel rotasi, maka dibutuhkan 8 buah nilai variabel rotasi. Bila nilai variabel rotasi diambil dari nilai desimal masing-masing karakter pada kunci, maka dibutuhkan sebuah kunci dengan panjang 8 karakter.


(36)

27

Bila membandingkan dengan AES-128 yang menjadi standard penyandian saat ini, panjang kunci 8 karakter (64 bit) dapat dinilai tidak memenuhi standard, karena AES-128 menggunakan kunci dengan panjang 128 bit.

Sedangkan variabel rotasi (r) yang mengambil nilai desimal dari karakter ASCII kunci, tidak memiliki batasan tertentu. Sehingga r dapat bernilai nol (0) ataupun sama dengan ukuran blok penyandian. Apabila kondisi ini terjadi, maka tidak akan terjadi rotasi bit atau rotasi terjadi namun bit kembali pada tempat semula, dan blok penyandian tidak terenkripsi.

3.2.5 Tidak Ada Perubahan Bit pada Algoritma Kriptografi VBR

Sistem kerja algoritma kriptografi VBR adalah merotasi (menggeser) bit sehingga hanya ada perpindahan bit tanpa ada bit yang berubah. Perbandingan jumlah bit 1 (satu) dan jumlah bit 0 (nol) pada plainteks mapun cipherteks akan sama. Sehingga dapat disimpulkan apabila sebuah plainteks memiliki satu macam bit baik itu bit 1 (satu) maupun bit 0 (nol), bila dienkripsi dengan algoritma kriptografi VBR akan menghasilkan cipherteks yang sama dengan plainteks. Dengan kata lain plainteks tidak terenkripsi.

3.2.6 Avalanche Effect pada Algoritma Kriptografi VBR

Tingkat keamanan dari sebuah algoritma kriptografi dapat diukur dengan menggunakan parameter nilai Avalanche Effect [4]. Berikut akan dianalisa kemungkinan nilai avalanche effect pada algoritma kriptografi VBR.

1. Perbedaan bit pada kunci

Dapat dipastikan, perubahan 1 bit pada kunci akan berpengaruh pada satu nilai variabel rotasi. Perubahan 1 buah nilai variabel rotasi


(37)

hanya akan berpengaruh pada 1 buah kolom bit dari total kolom bit ada 8 buah. Apabila N adalah jumlah baris pada tabel bit, dan maksimal perubahan bit pada satu kolom adalah N buah bit, maka nilai Avalanche_Effect maksimal (AEmaks) dapat dihitung sebagai berikut :

(

)

100%

8 _ ∗ ∗ = N N AE Effect

Avalanche maksimal maks

(

)

12,5% _Effectmaksimal AEmaks = Avalanche

2. Perbedaan bit pada plainteks

Algoritma kriptografi VBR mengandalkan perpindahan bit tanpa merubah bit tersebut. Dapat dipastikan, perubahan 1 bit pada plainteks akan merubah 1 bit pada cipherteks. Apabila diambil ukuran blok terkecil, yaitu 1 byte (8 bit), maka nilai

Avalanche_Effect maksimal (AEmaks) dapat dihitung sebagai berikut:

(

)

100%

8 1 _Effectmaksimal AEmaks = ∗ Avalanche

(

)

12,5% _Effectmaksimal AEmaks = Avalanche

Dari analisa perhitungan avalanche effect baik dengan merubah bit pada kunci maupun merubah bit pada plainteks, didapatkan nilai avalanche effect

maksimal adalah 12,5%. Dengan demikian dapat disimpulkan bahwa algoritma kriptografi VBR belum masuk dalam kategori algoritma kriptografi yang baik.


(38)

29

3.3 Modifikasi pada Algoritma Kriptografi VBR

Dari hasil analisa pada algoritma kriptografi VBR didapatkan beberapa kelemahan sebagai berikut :

1. Tidak adanya padding menyebabkan blok penyandian dengan ukuran terkecil yaitu 1 byte (8 bit) tidak dapat dienkripsi.

2. Maksimal pergeseran bit, yaitu pergeseran 256 bit, tidak dapat dilakukan pada mesin dengan sistem operasi 32 bit.

3. Panjang kunci (8 byte) belum memenuhi standard.

4. Untuk semua nilai variabel rotasi 0 (nol) atau sama dengan ukuran blok penyandian menyebabkan plainteks tidak terenkripsi.

5. Algoritma kriptografi VBR tidak dapat diterapkan pada blok penyandian yang memiliki bit yang sama.

6. Maksimal nilai avalanche effect algoritma kriptografi VBR belum masuk dalam kategori baik.

Disebabkan adanya kelemahan-kelemahan pada algoritma kriptografi VBR maka akan dirancang sebuah modifikasi pada algoritma kriptografi VBR yang diberi nama Algoritma Kriptografi VBR 32 Bit.

3.3.1 Modifikasi Ukuran Tabel Bit

Tabel bit dibentuk dengan memiliki baris berjumlah maksimal 32 bit. Ukuran 32 bit adalah ukuran yang sangat sesuai untuk diterapkan, karena pada umumnya komputer masih menggunakan sistem operasi 32 bit. Disamping itu, dengan menerapkan 32 bit sebagai maksimal pergeseran bit, proses ini masih dapat bekerja pada sistem operasi 64 bit.


(39)

Modifikasi dalam pembuatan blok pada algoritma kriptografi VBR 32 bit dapat dilihat pada gambar 3.6.

Gambar 3.6 Perubahan metode pembentukan blok

Karena terjadi pengurangan jumlah baris pada tabel bit menjadi 32 bit baris, maka ukuran blok akan menjadi kecil bila mempertahankan lebar kolom yang hanya 8 bit. Solusinya adalah menambah ukuran dari kolom bit menjadi 32 bit seperti yang terlihat pada gambar 3.6. Perubahan ukuran tabel bit menyebabkan maksimal dari ukuran blok penyandian menjadi 128 byte.

Pemilihan sistem operasi tidak akan mempengaruhi penambahan ukuran kolom karena pergeseran bit dilakukan secara vertikal. Namun perubahan ini berpengaruh pada kebutuhan variabel rotasi yang yang juga bertambah sesuai dengan pertambahan jumlah kolom.

3.3.2 Penambahan SubBlock dan Proses Padding

Pada algoritma kriptografi VBR 32 bit ditambahkan istilah SubBlock.

SubBlock merupakan bagian dari blok penyandian, yang besarnya 16 byte. Ukuran maksimal blok penyandian adalah 128 byte sehingga terdiri dari 8 SubBlock. Digunakan SubBlock bertujuan untuk menghindari penambahan byte dummy yang terlalu besar pada proses padding.


(40)

31

Sebelum melakukan proses enkripsi, perlu dipastikan bahwa ukuran blok penyandiaan merupakan kelipatan 16 byte (1 SubBlock). Teknik untuk memastikan ukuran blok digunakan operator modulo dan didapatkan sisa hasil bagi. Bila N adalah ukuran blok penyandian dengan satuan byte, maka nilai sisa hasil bagi dapat diperoleh dengan rumus :

S = N MOD 16 (3.1)

dimana : S = nilai sisa hasil bagi;

N = ukuran blok penyandian dalam satuan byte (N > 0).

Bila nilai S yang didapat sama dengan nol(0), maka tidak perlu dilakukan

padding. Bila S lebih dari nol(0), maka akan dicari jumlah karakter NULL (NNULL)

yang akan ditambahkan serta ukuran baru dari blok penyandian dengan rumus :

NNULL = 16 – S (3.2)

Npad = N + NNULL (3.3)

dimana : NNULL = jumlah karakter NULL (jumlah padding);

S = nilai sisa hasil bagi;

Npad = ukuran blok penyandian setelah proses padding (byte);

N = ukuran blok penyandian dalam satuan byte (N > 0).

Jumlah baris (nB) pada tabel bit setelah dilakukan proses padding dapat

dihitung dengan menggunakan rumus :

nB = Npad / 4 (3.4)

dimana : nB = jumlah baris pada tabel bit;


(41)

Susunan pembentukkan tabel bit pada algoritma kriptografi VBR 32 bit memiliki 32 kolom bit (4 byte) dan baris yang merupakan kelipatan 4 bit. Rangkaian blok penyandian akan dibagi kedalam per 32 bit, lalu disusun vertikal menjadi baris pertama, kedua dan seterusnya. Penggambaran pembentukan tabel bit dapat dilihat pada gambar 3.7.

Gambar 3.7 Pembentukan Tabel Bit

3.3.3 Aturan Tambahan Variabel Rotasi (r)

Untuk menghindari nilai variabel rotasi (r) adalah 0 (nol) atau sama dengan jumlah baris (nB) pada tabel bit maka dibuat sebuah aturan tambahan untuk

variabel rotasi. Bila r = 0 atau r = nB, maka r = 1. Sehingga nilai r memiliki range

antara 1 hingga nB-1 (0 < r < nB).

3.3.4 Proses Modulo Variabel Rotasi

Maksimal jumlah baris pada tabel bit adalah 32 baris. Proses padding tidak serta merta menjadikan jumlah baris menjadi 32 baris, hanya menjadikan kelipatan 4 baris, sehingga memiliki kemungkinan bahwa jumlah baris kurang dari 32. Hal ini dapat menyebabkan nilai variabel rotasi lebih besar daripada jumlah baris pada tabel bit. Agar kondisi ini tidak terjadi maka dilakukan proses Modulo Variabel Rotasi, yaitu mencari nilai modulus (sisa hasil bagi) dari


(42)

33

variabel rotasi (r) dengan jumlah baris (nB) pada tabel bit sebagai angka pembagi, seperti pada rumus berikut :

rn’ = rn MOD nB (3.5)

dimana : rn’ = nilai variabel rotasi setelah proses Modulo;

rn = nilai variabel rotasi sebelum proses Modulo; nB = jumlah baris pada tabel bit.

Sesuai dengan aturan tambahan untuk variabel rotasi, apabila r’ bernilai 0 (nol) maka r’ = 1.

3.3.5 Proses Initial Rotation dan Proses Final Rotation

Proses Initial Rotation dan Final Rotation adalah proses rotasi secara vertikal masing-masing kolom pada tabel bit. Besar dari rotasi tergantung pada nilai variabel rotasi. Proses Initial Rotation terdapat pada proses enkripsi yang memiliki arah rotasi ke bawah, sedangkan proses Final Rotation terdapat pada proses dekripsi yang memiliki arah rotasi ke atas.

3.3.6 Modifikasi Kunci (K)

Pada algoritma kriptografi VBR 32 bit, besar maksimal pergeseran bit pada setiap kolom sebesar 31 bit. Namun karena jumlah kolom bit menjadi 32 kolom, maka dibutuhkan 32 nilai variabel rotasi. Bila mengambil nilai desimal dari karakter ASCII, akan menjadi terlalu besar, karena nilai maksimal karakter ASCII adalah 255. Untuk mendapatkan nilai maksimal 31, dibutuhkan angka biner dengan ukuran 5 bit. Setiap nilai variabel rotasi terdiri dari 5 bit, maka dibutuhkan 160 bit untuk mendapatkan 32 nilai variabel rotasi. 160 bit sama dengan 20 byte, atau bisa diwakili oleh 20 karakter ASCII 8 bit. Sehingga dapat dipakai kunci


(43)

berupa string dengan ukuran 20 karakter untuk mendapatkan 32 variabel rotasi. Atau bila dirasa akan ada kesulitan menggunakan kunci dengan panjang 20 byte, dapat pula digunakan 2 buah kunci dengan panjang masing-masing 10 byte. Hal ini hanya untuk mempermudah pengguna dalam menggunakan kunci.

Teknik kunci 20 byte ataupun 2 buah kunci masing-masing 10 tidak dipakai pada penelitian ini. Penelitian ini memilih sebuah alternatif untuk mendapatkan 32 variabel rotasi dari kunci sepanjang 128 bit (16 byte = 16 karakter). Bila 16 byte dibagi menjadi 32 bagian, maka masing-masing bagian akan terdiri dari 4 bit. Variabel rotasi terdiri dari 5 buah bit, maka 1 bit terakhir (bit ke-5) didapatkan dari bit awal bagian berikutnya. Pada variabel rotasi terakhir mengambil bit awal dari bagian pertama sebagai bit ke-5. Penggambaran untuk mendapatkan nilai variabel rotasi dapat dilihat pada gambar 3.14.

Gambar 3.8 Pembentukan variabel rotasi

3.3.7 Ekspansi Kunci (K), Proses Add Key, dan Proses Add SubKey

Ekspansi kunci dilakukan untuk membangkitkan 4 buah SubKey (SK), yang digunakan pada proses Add SubKey. Ekspansi kunci dilakukan dengan menambahkan angka hexadesimal ’27 09 19 85’H yang digeser kekiri (bitwise)


(44)

35

ditambah ’27 09 19 85’H yang digeser sejauh 4 – n byte, atau digeser (4-n) * 8 bit, kearah kiri.

(

)

{

}

[

27091985 << 4− ×8

]

=Key n

SKn H (3.6)

dimana : SKn = SubKey ke n.

Misal kunci terdiri dari 16 byte ‘11H’, akan membentuk SubKey kedua

(SK2), dapat dilihat seperti pada gambar 3.15.

Gambar 3.9 Pembangkitan SubKey

Proses Add Key adalah penambahan Key (kunci) pada setiap SubBlock pada blok penyandian, dan proses Add SubKey adalah penambahan SubKey pada setiap

SubBlock. SubKey dibangkitkan dari proses ekspansi kunci. Penambahan SubKey

dilakukan urut mulai dari yang pertama hingga keempat, lalu berulang dari awal. Setiap SubKey ditambahkan pada setiap SubBlock. Untuk putaran berikutnya, penambahan SubKey dimulai dari SubKey berikutnya pula.

3.3.8 Proses SubBlock Rotation

Pada proses SubBlock Rotation, bila sebuah SubBlock digambarkan sebagai kotak byte 4x4 (Square), maka kotak tersebut diputar sebesar 90o.


(45)

Gambar 3.10 Rotasi SubBlock searah jarum jam

Pada proses enkripsi pemutaran dilakukan searah jarum jam dan pada proses dekripsi dilakukan sebaliknya.

3.3.9 Proses Byte Substitution

Byte Substitution dilakukan dengan cara mengganti setiap byte pada

SubBlock berdasarkan S-Box yang tersedia. S-Box biasa digunakan pada algoritma

blockcipher, dan sangat berpengaruh pada kehandalan algoritma kriptografi. Pada algoritma kriptografi VBR 32 bit digunakan sebuah S-Box yang dibangkitkan secara involusi acak yang dapat dilihat pada tabel 3.1.


(46)

37

Bila SubBlock seperti pada gambar 3.11, maka dilakukan penggantian setiap byte pada SubBlock berdasarkan nilai byte tersebut. Anggap saja byte merupakan angka hexadesimal ‘xy’, maka akan dicari persamaannya pada S-Box dengan menelusuri nilai ‘x’ dan nilai ‘y’, dari byte pertama hingga byte terakhir.

Gambar 3.11 Proses Byte Substitution

Suatu misal, seperti pada gambar 3.11, byte pertama adalah “23H”. Pada

kondisi ini, x = 2 dan y = 3, kemudian dapat dilihat pasangan xy tersebut pada S-Box seperti yang terlihat pada tabel 3.1. Bila dilihat pada S-Box, maka “23H” akan

digantikan dengan “33H”. Begitu seterusnya hingga pada byte terakhir.

3.3.10 Proses Binary Rotation dan Proses Inverse Binary Rotation

Proses Binary Rotation sama dengan proses Initial Rotation, yaitu merotasi secara vertikal kolom yang ada pada tabel bit. Pada proses Binary Rotation, besar rotasi sesuai Binary Rotaion Variable yang didapat dari jumlah bit ‘1’ pada kolom tersebut, memiliki arah rotasi ke bawah, dan digunakan dalam proses enkripsi.

Proses Inverse Binary Rotation memiliki kesamaan dengan proses Binary Rotation, hanya saja memiliki arah rotasi ke atas dan digunakan dalam proses dekripsi.


(47)

3.3.11 Putaran (Round) pada Algoritma Kriptografi VBR 32 Bit

Untuk menambah tingkat keamanan, didesain sebuah iterasi proses berupa putaran-putaran yang memiliki perulangan dinamik. Untuk proses enkripsi, diawali dengan Initial Round lalu diikuti Full Round dengan perulangan yang dapat ditentukan kemudian. Sedangkan pada proses dekripsi terdiri dari Full Round yang berulang dengan jumlah perulangan harus sama dengan jumlah perulangan Full Round pada proses enkripsi. Lalu proses dekripsi dilanjutkan dengan Final Round yang merupakan kebalikan dari proses Initial Round pada proses enkripsi.

Untuk proses enkripsi, Initial Round terdiri dari proses Add Key dan proses

Initial Rotation, sedangkan Full Round terdiri dari proses SubBlock Rotation, proses Byte Substitution, proses Add SubKey dan proses Binary Rotation. Sedangkan pada proses dekripsi, Full Round terdiri dari proses Inverse Binary Rotation, proses Add SubKey, proses SubBlock Rotation, proses Byte Substitution, dan Final Round terdiri dari proses Final Rotation dan proses Add Key.

3.3.12 Prosedural Enkripsi dan Dekripsi Algoritma Kriptografi VBR 32 Bit Proses enkripsi dan proses dekripsi memiliki urutan yang berbeda. Dengan

flowchart, proses enkripsi dan dekripsi algoritma kriptografi VBR 32 bit dapat tergambarkan proses demi proses sehingga dapat diketahui proses apa saja yang ada baik pada proses enkripsi maupun proses enkripsi. Berikut flowchart dari proses enkripsi yang dapat dilihat pada gambar 3.12. Sedangkan untuk flowchart


(48)

39

Gambar 3.12 Prosedural Proses Enkripsi

Gambar 3.13 Prosedural Proses Dekripsi

3.3.13 Mirrored Key Generation (MKG)

Mirrored Key Generation (MKG) adalah sebuah sistem perubahan kunci penyandian sehingga kunci memiliki ukuran yang sesuai dengan yang diinginkan.


(49)

Cara kerja MKG adalah menduplikasi secara terbalik kunci penyandian lalu menggabungkannya. Dengan MKG ukuran kunci akan menjadi dua kali lipat dari ukuran asal. Syarat dari MKG hanya boleh menduplikasi sebanyak satu kali. Hal ini untuk menjaga kekuatan kunci penyandian. Sehingga ukuran awal kunci penyandian minimal setengah dari ukuran kunci yang dibutuhkan. Dalam penelitian kali ini dibutuhkan kunci penyandian dengan ukuran 16 byte. Jadi minimal ukuran kunci yang harus dimasukkan menjadi 8 byte.

Gambar 3.14 Proses MKG

Inovasi MKG pada penelitian ini diterapkan untuk masukkan kata kunci pada Aplikasi Penyimpanan File Online, bukan penambahan proses pada Algoritma Kriptografi VBR. Inovasi MKG ini semata-mata untuk mendapatkan panjang kunci yang cocok dengan kebutuhan.

3.4 Analisis Pengguna

Karakteristik user dalam sistem berbasis web ini yang diutamakan adalah pengguna yang telah paham tentang dasar penggunaan komputer dan mengetahui tentang bagaimana menggunakan internet browser. Karena sistem ini masih menggunakan satu bahasa, yaitu Bahasa Indonesia, sehingga pengguna wajib dapat berbahasa Indonesia.


(50)

41

Dalam sistem ini ada dua macam user, yaitu user sebagai administrator dan

user sebagai pengguna (penyimpan file online). Penjelasan dari kedua user tersebut adalah sebagai berikut :

1. User sebagai Administrator

User Administrator memiliki wewenang untuk mengelola distribusi file.

Administrator dapat menambah, mengubah, dan menghapus lokasi-lokasi pendistribusian file online yang disimpan oleh user pengguna. 2. User sebagai pengguna

Pengguna yang ingin menyimpan file-nya dalam penyimpanan file online. User harus mendaftar terlebih dahulu sebagai anggota sehingga memiliki akun, agar dapat melakukan login sebagai syarat utama dalam proses menyimpan ataupun mengambil file online.

3.5 Analisis Perangkat Lunak

Analisis perangkat lunak disini adalah pembahasan tentang kerja sistem yang akan dibuat kemudian difokuskan pada perangkat lunak. Perangkat lunak yang digunakan dalam pembuatan sistem yaitu sebagai berikut :

1. Sistem Operasi Microsoft Windows Vista Basic 2. Notepad++ v5.5.1 (UNICODE) sebagai script editor

3. XAMPP 7.1 sebagai web server (Apache server dan MySQL server) 4. MDaemon 4.0.2 sebagai Mail server

5. Cerberus FTP Server 1.71 sebagai FTP server


(51)

7. Flock, Google Chrome, Internet Explorer, Mozilla Firefox, Opera, Safari sebagai internet browser.

3.6 Analisis Perangkat Keras

Analisis perangkat keras disini adalah pembahasan tentang kerja sistem yang akan dibuat kemudian difokuskan pada perangkat keras. Spesifikasi minimum yang digunakan dalam menjalankan aplikasi ini adalah :

1. Seperangkat Personal Computer (PC) dengan spesifikasi sebagai berikut :

a. Processor 1,8Ghz atau lebih baik b. Harddisk 40 GB

c. Memory Card (RAM) 256 MB d. Monitor

e. Keyboard dan Mouse

2. Modem atau ethernet card dipergunakan sebagai koneksi internet

3.7 Gambaran Umum Sistem

Sistem yang akan dibangun ini digunakan sebagai aplikasi untuk menyimpan dan mengambil file secara online, dan dapat mengenkripsi file pada saat penyimpanan file serta mendekripsi file pada saat file tersebut diambil dari penyimpanan file online. Proses enkripsi ataupun dekripsi terjadi di server, sehingga user tidak perlu meng-install software untuk melakukan enkripsi ataupun dekripsi file. File tersimpan dalam penyimpanan file online dalam keadaan terenkripsi, dan kunci penyandian tidak disimpan pada database.


(52)

43

3.8 Perancangan Sistem

3.8.1 Perancangan Model Sistem 3.8.1.1 Entity Relationship Diagram

Pada sistem yang akan dibangun memiliki 4 entitas yang berada dalam sistem. Entitas tersebut adalah :

1. User (user sebagai pengguna) 2. Admin (user sebagai administrator)

3. File (file yang akan disimpan secara online) 4. Distribusi (data lokasi penyimpanan file)

Masing-masing entitas memiliki properti dan memiliki hubungan antar entitas. Properti dan hubungan antar entitas dapat digambarkan sebagai entity relationship diagram dari sistem ini, dapat dilihat pada gambar 3.21.


(53)

3.8.1.2 Data Flow Diagram

Dalam pembangunan aplikasi dibutuhkan sebuah pemodelan sistem. Salah satu pemodelan sistem yang banyak digunakan adalah Data Flow Diagram [8].

Data Flow Diagram adalah representasi grafis yang menggambarkan aliran data dan proses perubahan data dari input menjadi output [6].

1. Diagram Konteks / DFD Level 0


(54)

45

2. DFD Level 1


(55)

3. DFD Level 2 Proses 1 Login

Gambar 3.18 DFD Level 2 Proses 1 Login

4. DFD Level 2 Proses 2 Akun


(56)

47

5. DFD Level 2 Proses 4 Perubahan Password

Gambar 3.20 DFD Level 2 Proses 4 Perubahan Password

6. DFD Level 2 Proses 5 Pengelolaan File


(57)

7. DFD Level 2 Proses 7 Distribusi

Gambar 3.22 DFD Level 2 Proses 7 Distribusi

3.8.1.3 Kamus Data

Tabel 3.2 Kamus data

Nama input_login

Penggunaan - Level 1 Proses 1 Login (input)

- Level 2 Proses 1.1 Cek Password (input)

Deskripsi Berisi data yang dibutuhkan untuk melakukan proses Login input_login = email + password

email = [ A...Z | a...z | @ | . | _ ]

password = { any charactes }

Nama data_login

Penggunaan - Level 1 Proses 1 Login (input)

- Level 2 Proses 1.1 Cek Password (input) - Level 1 Proses 2 Akun (input)

- Level 2 Proses 2.1 Pendaftaran (input) - Level 2 Proses 2.2 Aktivasi (input)


(58)

49

- Level 2 Proses 2.3 Reset Password (input) - Level 1 Proses 4 Perubahan Password (input) - Level 2 Proses 4.1 Cek Password (input) - Level 1 Proses 5 Pengelolaan File (input) - Level 2 Proses 5.1 Tampil Kotak File (input) - Level 2 Proses 5.2 Tampil Kotak Sampah (input) - Level 2 Proses 5.3 Upload (input)

- Level 1 Proses 7 Distribusi (input)

- Level 2 Proses 7.1 Tambah Distribusi (input) - Level 2 Proses 7.2 Tampil Distribusi (input) - Level 2 Proses 7.3 Detail Distribusi (input) - Level 2 Proses 7.4 Ubah Distribusi (input) - Level 2 Proses 7.5 HapusDistribusi (input) - Level 2 Proses 7.6 Ubah Aktivasi (input) - Level 1 Proses 6 Logout (input)

- Level 1 Proses 1 Login (output)

- Level 2 Proses 1.2 Ubah Status Login (output) - Level 1 Proses 6 Logout (output)

Deskripsi

Berisi data status login, telah login atau belum, identitas user yang telah login beserta nama, serta level yang menunjukkan apakah user tersebut sebagai user pengguna atau sebagai user administrator.

data_login = status + email + nama

status = [ Null | ’OK’ ]

email = [Null | A...Z | a...z | @ | . ] nama = [Null | A..Z | a..z | space ]

level = [ Null | 0..1 ]

Nama info_login

Penggunaan - Level 1 Proses 1 Login (output)

- Level 2 Proses 1.2 Ubah Status Login (output) Deskripsi

Informasi keberhasilan melakukan login : 0 = sukses;

1 = akun belum aktif;

2 = email/username belum terdaftar info_login = [ 0..2 ]

Nama data_admin

Penggunaan - Level 1 Proses 1 Login (input)

- Level 2 Proses 1.1 Cek Password (input) Deskripsi Berisi data sesuai dengan tabel admin. data_admin = username + password + nama username = [ A...Z | a...z ]

password = {any charactes}


(59)

Nama data_user

Penggunaan - Level 1 Proses 1 Login (input)

- Level 2 Proses 1.1 Cek Password (input) - Level 1 Proses 2 Akun (input)

- Level 2 Proses 2.1 Pendaftaran (input) - Level 2 Proses 2.2 Aktivasi (input) - Level 2 Proses 2.3 Reset Password (input) - Level 1 Proses 3 Kirim Via Email (input) - Level 1 Proses 4 Ubah Password (input) - Level 1 Proses 4.1 Cek Password (input) - Level 1 Proses 2 Akun (output)

- Level 2 Proses 2.1 Pendaftaran (output) - Level 2 Proses 2.2 Aktivasi (output) - Level 2 Proses 2.3 Reset Password (output) - Level 1 Proses 4 Ubah Password (output) - Level 1 Proses 4.2 Simpan Password (input) Deskripsi Berisi data sesuai dengan tabel user.

data_user = email + password + nama + kode_aktivasi + pertanyaan + jawaban + status_akun

email = [ A...Z | a...z | @ | . ]

password = {any charactes}

nama = [ A..Z | a..z | space ] kode_aktivasi = [ 0..9 ]

pertanyaan = { legal charactes }

jawaban = { legal charactes }

status_akun = [ 0..1 ] Nama input_akun

Penggunaan - Level 1 Proses 2 Akun (input) - Level 2 Proses 2.1 Pendaftaran (input) - Level 2 Proses 2.2 Aktivasi (input) - Level 2 Proses 2.3 Reset Password (input) Deskripsi

Berisi data user untuk keperluan pengelolaan akun mulai dari pendaftaran awal, aktivasi akun, reset password hingga ubah password.

input_akun = input_daftar + email + kode_aktivasi + jawaban + password

input_daftar = email + password + nama + pertanyaan + jawaban email = [ A...Z | a...z | @ | . ]

password = {any charactes}

nama = [ A..Z | a..z | space ] kode_aktivasi = [ 0..9 ]

pertanyaan = { legal charactes }


(60)

51

Nama info_pendaftaran

Penggunaan - Level 1 Proses 2 Akun (output) - Level 2 Proses 2.1 Pendaftaran (output) Deskripsi

Informasi keberhasilan melakukan pendaftaran : 0 = sukses;

1 = email terdaftar, akun belum aktif; 2 = akun aktif;

info_pendaftaran = [ 0..2 ] Nama info_aktivasi

Penggunaan - Level 1 Proses 2 Akun (output) - Level 2 Proses 2.2 Aktivasi (output)

Deskripsi

Informasi keberhasilan melakukan aktivasi : 0 = sukses;

1 = email belum terdaftar; 2 = akun sudah aktif; 3 = kode aktivasi salah; info_aktivasi = [ 0..3 ]

Nama info_reset

Penggunaan - Level 1 Proses 2 Akun (output)

- Level 2 Proses 2.3 Reset Password (output)

Deskripsi

Informasi keberhasilan reset password : 0 = sukses;

1 = email belum terdaftar; 2 = akun belum aktif; 3 = jawaban salah; info_reset = [ 0..3 ]

Nama input_ubah

Penggunaan - Level 1 Proses 4 Ubah Password (input) - Level 2 Proses 4.1 Cek Password (input)

Deskripsi Berisi password lama untuk klarifikasi dan password baru yang akan disimpan.

input_ubah = password + password_baru

password = {any charactes}

password_baru = {any charactes} Nama info_ubah

Penggunaan - Level 1 Proses 4 Ubah Password (output) - Level 2 Proses 4.2 Simpan Password (output) Deskripsi

Informasi keberhasilan perubahan password : 0 = sukses;

1 = salah password;

info_ubah = [ 0..1 ]

Nama data_file

Penggunaan - Level 1 Proses 5 Pengelolaan File (input) - Level 2 Proses 5.1 Tampil Kotak File (input) - Level 2 Proses 5.2 Tampil Kotak Sampah (input) - Level 2 Proses 5.3 Upload (input)


(61)

- Level 2 Proses 5.4 Download (input) - Level 1 Proses 5 Pengelolaan File (output) - Level 2 Proses 5.3 Upload (output) - Level 2 Proses 5.5 Hapus (output) - Level 2 Proses 5.6 Kembalikan (output) - Level 2 Proses 5.7 Buang (output) Deskripsi Berisi data sesuai dengan tabel file.

data_file = id_file + tgl_upload + email + id_distribusi + namex + ukuran + tersimpan + status_file

id_file = [ 0..9 ]

tgl_upload = { date format (yyyy-mm-dd) } jam_start = { time format (hh:mm:ss) } jam_fin = { time format (hh:mm:ss) } email = [ A...Z | a...z | @ | . ]

id_distribusi = [ 0..9 ]

namex = { legal filename }

ukuran = [ 0..9 ]

tersimpan = [ 0..9 ]

status_file = [ 0..2 ] Nama plainteks

Penggunaan - Level 1 Proses 5 Pengelolaan File (input) - Level 2 Proses 5.3 Upload (input)

- Level 1 Proses 5 Pengelolaan File (output) - Level 2 Proses 5.4 Download (output) Deskripsi

File yang akan masuk dalam proses enkripsi dan disimpan pada penyimpanan on-line, dan hasil proses dekripsi yang diambil dari penyimpanan.

plainteks = { file }

Nama cipherteks

Penggunaan - Level 1 Proses 5 Pengelolaan File (input) - Level 2 Proses 5.4 Download (input) - Level 1 Proses 5 Pengelolaan File (output) - Level 2 Proses 5.3 Upload (output)

Deskripsi File yang telah dienkripsi dan disimpan pada penyimpanan on-line.

cipherteks = { file }

Nama kunci

Penggunaan - Level 1 Proses 5 Pengelolaan File (input) - Level 2 Proses 5.3 Upload (input) - Level 2 Proses 5.4 Download (input)

Deskripsi String sebagai salah satu komponen dalam proses enkripsi dan dekripsi.


(62)

53

Nama info_logout

Penggunaan - Level 1 Proses 6 Logout (output)

Deskripsi Informasi keberhasilan logout. info_ubah = [ logout_ok ]

Nama data_dist

Penggunaan - Level 1 Proses 5 Pengelolaan File (input) - Level 2 Proses 5.3 Upload (input) - Level 2 Proses 5.4 Download (input) - Level 1 Proses 7 Distribusi (input)

- Level 2 Proses 7.1 Tambah Distribusi (input) - Level 2 Proses 7.2 Tampil Distribusi (input) - Level 2 Proses 7.3 Detail Distribusi (input) - Level 2 Proses 7.4 Ubah Distribusi (input) - Level 2 Proses 7.5 Hapus Distribusi (input) - Level 2 Proses 7.6 Ubah Aktivasi (input) - Level 1 Proses 7 Distribusi (output)

- Level 2 Proses 7.1 Tambah Distribusi (output) - Level 2 Proses 7.2 Tampil Distribusi (output) - Level 2 Proses 7.3 Detail Distribusi (output) - Level 2 Proses 7.4 Ubah Distribusi (output) - Level 2 Proses 7.5 Hapus Distribusi (output) - Level 2 Proses 7.6 Ubah Aktivasi (output) Deskripsi Berisi data sesuai dengan tabel distribusi.

data_file = id + host + username + password + folder + tipe + mpf + max + status_distribusi + admin

id = [ 0..9 ]

host = [ Null | A...Z | a...z ]

username = [ Null | A...Z | a...z ] password = [ Null | {any charactes}] folder = [ A...Z | a...z ]

tipe = [ Null | ’HTTP’ | ’FTP’]

mpf = [ 0..9 ]

max = [ 0..9 ]

status_distribusi = [ 0..1 ] admin = [ A...Z | a...z ]


(63)

3.8.1.4 Spesifikasi Proses

Tabel 3.3 Proses 1.1 Cek Password

No. Proses : 1.1

Nama : Cek Password Input : data_login, input_login, data_user Output : error_login, email, level

Deskripsi :

if (data_login[status] != ”OK”) { username = input_login[email] if (data_admin[username] != NULL) { if (input_login[password] == data_admin[password]) { email = username; level = 1;

error_login = 0; } else {

error_login = 3; }

} elseif (data_user[input_login[email]] != NULL) { if (data_user[status_akun] == 2) {

if (input_login[password] == data_user[password]) { email = username; level = 0;

error_login = 0; } else {

error_login = 3; }

} else {

error_login = 1; }

} else {

error_login = 2; }

}

Tabel 3.4 Proses 1.2 Ubah Status Login

No. Proses : 1.2

Nama : Ubah Status Login Input : error_login, email, level Output : data_login, info_login

Deskripsi :

if (error_login == 0) {

data_login[status] = ”OK”; data_login[email] = email; data_login[level] = level; } else {

data_login[status] = ”NOK”; data_login[email] = ””; }

info_login = error_login;

Tabel 3.5 Proses 2.1 Pendaftaran

No. Proses : 2.1

Nama : Pandaftaran


(64)

55

Output : data_user, email, info_pendaftaran

Deskripsi :

if (data_login[status] != ”OK”) { email = input_daftar[email]; if (data_user[email] == NULL) {

SQL(INSERT INTO user VALUES input_daftar); info_pendaftaran = 0;

} else {

if (data_user[status_akun] == 1) { info_pendaftaran = 2;

// email terdaftar, aktif } else {

info_pendaftaran = 1;

// email terdaftar, belum aktif }

} }

Tabel 3.6 Proses 2.2 Aktivasi

No. Proses : 2.2

Nama : Aktivasi

Input : data_login, email, kode_aktivasi, data_user Output : data_user, email, info_aktivasi

Deskripsi :

if (data_login[status] != ”OK”) { if (data_user[email] == NULL) {

info_aktivasi = 1; // email belum terdaftar } else {

if (data_user[status_akun] == 0) {

if (kode_aktivasi==data_user[kode_aktivasi]) { SQL(UPDATE user SET kode_aktivasi=’’, status_akun=2);

info_aktivasi = 0; // sukses } else {

info_aktivasi = 3; // kode salah }

} else {

info_aktivasi = 2; // akun sudah aktif }

} }

Tabel 3.7 Proses 2.3 Reset Password

No. Proses : 2.3

Nama : Reset Password

Input : data_login, email, jawaban, password, data_user, Output : data_user, info_reset, email

Deskripsi :

if (data_login[status] != ”OK”) { if (data_user[email] == NULL) {

info_reset = 1; // email belum terdaftar } else {

if (data_user[status_akun] == 2) { if (jawaban ==

data_user[jawaban]) { SQL(UPDATE user SET password); info_reset = 0; // sukses } else {

info_reset = 3; // jawaban salah }


(65)

} else {

info_reset = 2; // akun belum aktif }

} }

Tabel 3.8 Proses 3 Kirim Via Email

No. Proses : 3

Nama : Kirim Via Email Input : email, data_user Output : data_user (ke email user)

Deskripsi : mail(to:email,message:data_user);

Tabel 3.9 Proses 4.1 Cek Password

No. Proses : 4.1

Nama : Cek Password

Input : data_login, password, password_baru Output : error_ubah, password

Deskripsi :

if (data_login[status] == ”OK”) { email = data_login[email];

if (data_user[password] == password) { password = password_baru;

error_ubah = 0; } else {

error_ubah = 1; // password salah }

}

Tabel 3.10 Proses 4.2 Simpan Password

No. Proses : 4.2

Nama : Simpan Password Input : error_ubah, password Output : data_user, info_ubah

Deskripsi :

if (error_ubah == 0) {

SQL(UPDATE user SET password) info_ubah = 0; // sukses } else {

info_ubah = 1; // salah password }

Tabel 3.11 Proses 5.1 Tampil Kotak File

No. Proses : 5.1

Nama : Tampil Kotak File

Input : data_login, id_file, kunci, data_file Output : data_file, id_file

Deskripsi :

if (data_login[status] == ”OK”) { SQL(SELECT * FROM file

WHERE email=data_login[email] AND status_file=1;)


(66)

57

Tabel 3.12 Proses 5.2 Tampil Kotak Sampah

No. Proses : 5.2

Nama : Tampil Kotak Sampah Input : data_login, id_file, data_file Output : data_file, id_file

Deskripsi :

if (data_login[status] == ”OK”) { SQL(SELECT * FROM file

WHERE email=data_login[email] AND status_file=2);

}

Tabel 3.13 Proses 5.3 Upload

No. Proses : 5.3

Nama : Upload Input : data_login, plainteks, kunci Output : cipherteks, data_file

Deskripsi :

if (data_login[status] == ”OK”) { handle = fopen(plainteks,”rb”);

handle2 = fopen(data_dist + cipherteks,”wb”); blok = enkrip(fread(handle),kunci);

fwrite(handle2,blok);

SQL(INSERT INTO file VALUES data_file); }

Tabel 3.14 Proses 5.4 Download

No. Proses : 5.4

Nama : Download

Input : id_file, kunci, data_file, cipherteks Output : plainteks

Deskripsi :

SQL(SELECT data_file FROM file WHERE id_file); handle = fopen(data_dist + cipherteks,”rb”); handle2 = fopen(plainteks,”wb”);

blok = dekrip(fread(handle),kunci); fwrite(handle2,blok);

Tabel 3.15 Proses 5.5 Hapus

No. Proses : 5.5

Nama : Hapus Input : id_file Output : data_file

Deskripsi : SQL(UPDATE file SET data_file[status_file]=2 WHERE id_file);

Tabel 3.16 Proses 5.6 Kembalikan

No. Proses : 5.6

Nama : Kembalikan Input : id_file Output : data_file


(67)

Deskripsi : SQL(UPDATE file SET data_file[status_file]=1 WHERE id_file);

Tabel 3.17 Proses 5.7 Buang

No. Proses : 5.7

Nama : Buang Input : id_file Output : data_file, id_file

Deskripsi : SQL(DELETE FROM file WHERE id_file); DELETE (data_dist + cipherteks[id_file]);

Tabel 3.18 Proses 6 Logout

No. Proses : 6

Nama : Logout Input : data_login

Output : data_login, info_logout

Deskripsi :

if (data_login[status] == ”OK”) { data_login[status] = ”NOK”; data_login[email] = ””; info_logout = 0;

}

Tabel 3.19 Proses 7.1 Tambah Distribusi

No. Proses : 7.1

Nama : Tambah Distribusi Input : data_login, data_dist Output : data_dist

Deskripsi :

if ((data_login[status] == ”OK”) && (data_login[level] == 1)) {

SQL(INSERT INTO distribusi VALUE (data_dist)); }

Tabel 3.20 Proses 7.2 Tampil Distribusi

No. Proses : 7.2

Nama : Tampil Distribusi Input : data_login, data_dist Output : data_dist

Deskripsi :

if ((data_login[status] == ”OK”) && (data_login[level] == 1)) {

SQL(SELECT * FROM distribusi WHERE admin=data_login[email]) }

Tabel 3.21 Proses 7.3 Detail Distribusi

No. Proses : 7.3

Nama : Detail Distribusi

Input : data_login, data_dist Output : data_dist

Deskripsi : if ((data_login[status] == ”OK”) && (data_login[level] == 1)) {


(1)

Gambar 3.63 Pesan M10 ... 78

Gambar 3.64 Pesan M11 ... 78

Gambar 3.65 Pesan M12 ... 78

Gambar 3.66 Pesan M13 ... 79

Gambar 3.67 Pesan M14 ... 79

Gambar 3.68 Pesan M15 ... 79

Gambar 3.69 Pesan M16 ... 79

Gambar 3.70 Pesan M17 ... 79

Gambar 3.71 Pesan M18 ... 80

Gambar 3.72 Pesan M19 ... 80

Gambar 3.73 Pesan M20 ... 80

Gambar 3.74 Pesan M21 ... 80

Gambar 3.75 Pesan M22 ... 80

Gambar 3.76 Pesan M23 ... 81

Gambar 3.77 Pesan M24 ... 81

Gambar 3.78 Jaringan Simantik ... 81

Gambar 4.1 Implementasi database ... 84

Gambar 4.2 Tampilan Utama (sebelum Log In) ... 86

Gambar 4.3 Form Log In ... 86

Gambar 4.4 Menu mengadopsi sistem Drop Down ... 86


(2)

xv

Gambar 4.9 Tampilan Pendaftaran, konfirmasi akhir data user ... 88

Gambar 4.10 Tampilan Pendaftaran sukses ... 88

Gambar 4.11 Tampilan Aktivasi akun ... 88

Gambar 4.12 Tampilan Aktivasi akun sukses ... 88

Gambar 4.13 Tampilan Reset Password, memasukkan email ... 89

Gambar 4.14 Tampilan Reset Password, memasukkan jawaban ... 89

Gambar 4.15 Tampilan Reset Password, memasukkan password baru ... 89

Gambar 4.16 Tampilan Reset password sukses ... 89

Gambar 4.17 Tampilan Utama (setelah Log In sebagai user pengguna) ... 90

Gambar 4.18 Nama user ditampilkan dan terdapat tombol Log Out ... 90

Gambar 4.19 Tampilan Upload File ... 90

Gambar 4.20 Tampilan daftar file dalam kotak penyimpanan ... 90

Gambar 4.21 Tampilan daftar file dalam kotak sampah ... 91

Gambar 4.22 Tampilan download file ... 91

Gambar 4.23 Tampilan perubahan password ... 91

Gambar 4.24 Tampilan Home (Log In sebagai user administrator) ... 92

Gambar 4.25 Tampilan daftar distribusi ... 92

Gambar 4.26 Tampilan detail distribusi ... 92

Gambar 4.27 Tampilan tambah atau ubah distribusi ... 93

Gambar 4.28 Rata-rata nilai Avalanche Effect (beda bit pada kunci) ... 100

Gambar 4.29 Rata-rata nilai Avalanche Effect (beda bit pada plainteks) ... 100


(3)

DAFTAR SINGKATAN DAN SIMBOL

Singkatan / Simbol Nama Pemakaian pertama

kali pada halaman

VBR Vertical Bit Rotation 3

PC Personal Computer 1

AE avalanche effect 16

B blok penyandian 23

C cipherteks 12

D dekripsi 12

E enkripsi 12

f jumlah blok penyandian dari 1 buah file

24

k kunci 13

N ukuran blok penyandian 17

nB jumlah baris pada tabel bit setelah dilakukan proses padding

31

NNULL Jumlah karakter NULL yang ditambahkan pada proses padding

31

Npad ukuran blok setelah proses padding 31

NULL karakter kosong 16

P plainteks 12

pk kunci umum 13


(4)

xvii

DAFTAR LAMPIRAN


(5)

DAFTAR PUSTAKA

[1] Alan Dennis, Barbara Haley Wixom, System Analysis and Design, John Wiley & Sons, New York, edisi kedua, 2003.

[2] Avon Budiyono, Enkripsi Data Kunci Simetris dengan Algoritma Kriptografi LOKI97, Institut Teknologi Bandung, Bandung, 2004. [3] Hanson Prihantoro Putro, Teknik Kriptografi Block Cipher dengan VBR

(Perputaran Bit Vertikal), STEI ITB, Bandung, 2007.

[4] Maman Abdurohman, Analisis Performansi Algoritma Kriptografi RC6, Institut Teknologi Bandung, Bandung, 2002.

[5] Rinaldi Munir, Kriptografi, Informatika, Bandung, 2006.

[6] Roger S. Pressman, Software Engineering – A practitioner’s Approach, Mc Graw Hill, New York, edisi kelima, 1982.

[7] Schneier, Bruce, Applied Cryptography, John Wiley & Sons, New York, edisi kedua, 1996.

[8] Yourdon, Edward, Just Enough Structured Analysis, 2006.

http://www.yourdon.com/jesa/pdf/JESA_ueior.pdf, 14 Juli 2010, 01.22 WIB.

[9] Yusuf Kurniawan, Kriptografi: Keamanan Internet dan Jaringan Komunikasi, Informatika, Bandung, 2004.


(6)

BIODATA PENULIS

Nama Lengkap : Roni Sapto Purwandoko

NIM : 10105266

Tempat/Tanggal Lahr : Bandung, 7 Juni 1980 Jenis Kelamin : Laki-laki

Agama : Islam

Alamat Lengkap : Jl. Pluto Raya no. 10 – Margahayu Raya Buah Batu – Bandung 40286

No Telp : 083829553057

PENDIDIKAN

1987 – 1993 : Taman Muda – Taman Siswa, Turen, Malang, Jawa Timur 1993 – 1996 : SMP Negeri 1, Turen, Malang, Jawa Timur

1996 – 1999 : SMA Negeri 1, Malang, Jawa Timur

1999 – 2005 : Program Strata I (S1), Jurusan Teknik Elektro Sekolah Tinggi Teknologi Telkom, Bandung 2005 – 2010 : Program Strata I (S1), Jurusan Teknik Informatika

Fakultas Teknik dan Ilmu Komputer Universitas Komputer Indonesia, Bandung