TEKNIK PENGAMANAN DATA
MENGGUNAKAN ALGORITMA
BLOWFISH
oleh
PRASETYO BAWONO
M0103045
SKRIPSI
Ditulis dan diajukan untuk memenuhi sebagian persyaratan
Memperoleh gelar Sarjana Sains Matematika
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SEBELAS MARET
SKRIPSI
TEKNIK PENGAMANAN DATA
MENGGUNAKAN ALGORITMA
BLOWFISH
yang disiapkan dan disusun oleh
PRASETYO BAWONO
NIM. M0103045
dibimbing oleh
Pembimbing I,
Drs. YS. Palgunadi, M.Sc
NIP. 19560407 198303 1 004
Pembimbing II,
Drs. Siswanto, M.Si
NIP. 19670813 199203 1 002
telah dipertahankan di depan Dewan Penguji
pada hari Kamis, tanggal 28 Januari 2010
dan dinyatakan telah memenuhi syarat.
Anggota Tim Penguji
Tanda Tangan
1.
Titin Sri Martini, S.Si, M.Kom
NIP. 19750120 200812 2 001
1
. ………...
2.
Bowo Winarno, S.Si, M.Kom
NIP. 19810430 200812 1 001
2
. ………...
3.
DR. Sutanto, DEA
NIP. 19710302 199603 1 001
3
. ………...
Disahkan oleh
Fakultas Matematika dan Ilmu Pengetahuan Alam
Dekan,
Prof. Drs. Sutarno, M.Sc, Ph.D
Ketua Jurusan Matematika
ABSTRAK
Prasetyo
Bawono,
2010.
TEKNIK
PENGAMANAN
DATA
MENGGUNAKAN ALGORITMA BLOWFISH. Fakultas Matematika dan Ilmu
Pengetahuan Alam, Universitas Sebelas Maret.
Kriptografi merupakan suatu ilmu untuk menjaga kerahasiaan data / pesan
sehingga data tidak dapat diketahui oleh pihak lain. Algoritma Blowfish
merupakan salah satu algoritma kriptografi modern yang telah teruji dan banyak
dipakai oleh berbagai pihak. Sistem operasi OpenBSD memasukkan Blowfish
sebagai algoritma enkripsi utama dalam mengamankan
user
di dalam sistemnya
(
user authentication
). Selain itu, PuTTY sebuah program SSH (
Secure Shell
)
Client untuk Microsoft® Windows® pun juga menggunakan Blowfish sebagai
salah satu metode enkripsinya.
Algoritma Blowfish merupakan algoritma yang berjalan pada mode cipher
blok dengan operasi yang sangat sederhana. Blowfish menggunakan operasi
penambahan, ekslusif OR (XOR) dan penelusuran tabel. Tujuan penelitian ini
adalah membuat aplikasi sederhana enkripsi data teks (pesan) dengan
menggunakan algoritma Blowfish dalam empat mode enkripsi cipher blok: ECB
(
Electronic Code Book
), CBC (
Cipher Block Chainning
), CFB (
Cipher FeedBack
)
dan OFB (
Output FeedBack
).
Metode yang digunakan dalam menulis skripsi adalah studi literatur
tentang keamanan data, kriptografi (algoritma Blowfish), perencanaan sistem,
pembuatan aplikasi algoritma Blowfish, pengujian dan analisa aplikasi algoritma
Blowfish dengan notasi Big O.
Evaluasi terhadap aplikasi enkripsi pesan menggunakan algoritma
Blowfish dalam empat mode terhadap tiga buah file dengan ukuran yang
berbeda-beda (22 bytes, 202 Kilobytes dan 1,1 Megabytes) menunjukkan hasil selisih
waktu yang tidak jauh berbeda. Sedangkan untuk kompleksitas waktu dari
ke-empat mode adalah O(
n
), dimana
n
merupakan banyaknya karakter yang
dienkripsi.
ABSTRACT
Prasetyo Bawono, 2010. DATA SECURITY
SYSTEM USING
BLOWFISH ALGORITHM. Faculty of Mathemathics and Natural Sciences,
Sebelas Maret University.
Cryptography is a science aiming to keep the data confidentiality
hindering it from being eavesdropped by other parties. One of modern
cryptography using a symmetric key method that has been tested and widely used
is Blowfish algorithm. It is included in OpenBSD as main encryption algorithm to
secure users in the system (
user authentication
). PuTTY, a SSH (
Secure Shell
)
Client program for Microsoft® Windows® also uses Blowfish as one of its
encryption method.
Blowfish is an algorithm that runs on a block cipher with a very simple
operation. It uses addition operation, XOR and look-up tables. The purpose of this
research is to create a simple application of text data (messages) encryption by
using Blowfish algorithm in four block cipher encryption modes: ECB (
Electronic
Code Book
), CBC (
Cipher Block Chaining
), CFB (
Cipher FeedBack
), and OFB
(
Output FeedBack
).
The method used in writing this thesis is a literature study on data security,
cryptography (especially Blowfish algorithm), system planning, developing of
Blowfish algorithm application, and tests and analysis of Blowfish algorithm
application using Big Oh notation.
Evaluation of the messages encryption application using Blowfish
algorithm in four modes to three files with different sizes (22 bytes, 202
Kilobytes, and 1,1 Megabytes) showed that there was no significant difference in
the run time. However, the time complexity of the all four modes was O(
n
), where
n
was the total characters encrypted.
KATA PENGANTAR
Assalamu’alaikum Warahmatullahi Wabarokatu
h
.
Bismillahirrahmaanirrahiim
. Segala puji hanya milik Allah ‘
Azza Wa
Jalla. Rabb
semesta alam yang telah memberikan segala nikmat, sehingga skripsi
yang berjudul
“
Teknik Pengamanan Data Menggunakan Algoritma
Blowfish
”
dapat terselesaikan.
Penulis juga menyadari akan keterbatasan yang dimiliki, ketergantungan
akan bantuan dan dukungan pribadi-pribadi disekitarnya. Terselesaikannya skripsi
ini tidak terlepas dari bantuan berbagai pihak. Untuk itu, penulis mengucapkan
terima kasih kepada :
1.
Drs. YS. Palgunadi, M.Sc, selaku pembimbing I dan Drs. Siswanto, M.Si,
selaku pembimbing II yang telah meluangkan waktunya untuk membimbing,
mengarahkan, dan memberikan motivasi kepada penulis dalam penyusunan
skripsi ini.
2.
Umi Salamah, S.Si, M.Kom, selaku dosen pembimbing akademik atas segala
kesabarannya selama ini.
3.
Drs. Sutrimo, M.Si, selaku Ketua Jurusan Matematika, Fakultas Matematika
dan Ilmu Pengetahuan Alam, Universitas Sebelas Maret.
4.
Prof. Drs. Sutarno, M.Sc, Ph.D, selaku Dekan Fakultas Matematika dan Ilmu
Pengetahuan Alam, Universitas Sebelas Maret.
5.
Ibunda, Ayahanda, kakak-kakakku, adikku, dan seluruh keluarga yang telah
mendoakan, dan banyak memberikan bantuan, serta dukungan kepada penulis.
6.
DR. Sutanto, DEA., selaku kepala UPT PUSKOM UNS, yang telah
menyediakan berbagai fasilitas kepada penulis.
7.
Titin Sri Martini, S.Si, M.Kom dan Bowo Winarno, S.Si, M.Kom selaku
dosen penguji.
8.
Rekan-rekan di UPT PUSKOM UNS dan di PT. Javatechno Mandiri
9.
Saudaraku di jurusan Matematika FMIPA UNS dan Syiar Kegiatan Islam
(SKI) FMIPA UNS.
10.
Saudaraku di Wisma Madina.
11.
Dan semua pihak yang tidak dapat disebutkan satu persatu dalam tulisan ini.
Penulis menyadari bahwa skripsi ini masih jauh dari sempurna, untuk itu saran
dan kritik yang bersifat membangun sangat diharapkan. Akhirnya semoga karya
tulis ini dapat bermanfaat bagi pembaca dan dapat memberikan sumbangan
kebaikan pada perkembangan peradaban ilmu pengetahuan dan teknologi
informasi.
Wassalamu’alaikum Warahmatullahi Wabaro
katuh
.
Surakarta, Januari 2010
DAFTAR ISI
Halaman
HALAMAN JUDUL ...
i
PENGESAHAN ...
ii
ABSTRAK ...
iii
ABSTRACT ...
iv
KATA PENGANTAR ...
v
DAFTAR ISI ...
vii
DAFTAR GAMBAR ...
ix
DAFTAR TABEL ...
x
DAFTAR LAMPIRAN ...
xi
BAB I. PENDAHULUAN
1.1 Latar Belakang Masalah ...
1
1.2 Perumusan Masalah ...
2
1.3 Batasan Masalah...
2
1.4 Tujuan Penelitian ...
2
1.5 Manfaat Penelitian ...
3
BAB II. LANDASAN TEORI
2.1 Tinjauan Pustaka ...
4
2.1.1 Algoritma ...
4
2.1.2 Lambang Diagram Alir (
Flowchart
) ...
4
2.1.3 Keamanan Data ...
4
2.1.4 Kriptografi ...
6
2.1.5 Cipher Blok ...
10
2.1.6 Cipher Berulang ...
12
2.1.7 Jaringan Feistel (
Feistel Network
) ...
12
2.1.8 Kotak-S (
S-Box
) ...
13
2.1.9 Algoritma Kriptografi Blowfish ...
14
2.1.10 Mode Operasi Enkripsi Cipher Blok ...
17
BAB III. METODOLOGI PENELITIAN ...
24
BAB IV. PEMBAHASAN
4.1
Analisis Sistem ...
26
4.2
Diagam Alir (
Flowchart
) Aplikasi ...
27
4.3
Perancangan Sistem ...
28
4.3.1
Rancangan
Database
...
28
4.3.2
Rancangan
Form Login
...
28
4.3.3
Rancangan
Form
Enkripsi dan Dekripsi ...
29
4.3.4
Validasi Data Masukan ...
30
4.4
Implementasi Sistem ...
31
4.5
Evaluasi Sistem ...
36
4.5.1
Struktur Algoritma Blowfish ...
36
4.5.2
Uji Coba Aplikasi ...
40
4.5.3
Analisis Algoritma dengan Notasi Big O ...
41
BAB V. PENUTUP
5.1
Kesimpulan ...
45
5.2
Saran ...
46
DAFTAR PUSTAKA ...
47
DAFTAR GAMBAR
Halaman
Gambar 2.1 Simbol Umum
Flowchart
...
4
Gambar 2.2 Skema Enkripsi dan Dekripsi ...
8
Gambar 2.3 Skema Tipe-tipe Cipher ...
9
Gambar 2.4
Kriptologi, Kriptografi dan Kriptanalisis
...
10
Gambar 2.5 Enkripsi Pada Cipher Blok ...
11
Gambar 2.6 Dekripsi Pada Cipher Blok ...
11
Gambar 2.7 Skema Jaringan
Feistel
Secara Umum ...
13
Gambar 2.8 Skema Fungsi F pada algoritma
Blowfish
...
16
Gambar 2.9 Skema Enkripsi dan Dekripsi dengan Mode ECB ...
18
Gambar 2.10 Skema Enkripsi dan Dekripsi dengan Mode CBC ...
20
Gambar 2.11 Skema Enkripsi dan Dekripsi dengan Mode CFB 8-Bit ...
21
Gambar 2.12 Skema Enkripsi dan Dekripsi dengan Mode OFB 8-bit ...
23
Gambar 4.1 Alur Sistem Pengamanan Data Teks ...
26
Gambar 4.2 Diagram Alir Aplikasi Sistem Pengamanan Data Teks ...
27
Gambar 4.3 Rancangan
Form
Sistem Login
...
28
Gambar 4.4 Rancangan
Form
Sistem Enkripsi
...
29
Gambar 4.5 Rancangan
Form
Sistem Dekripsi
...
30
Gambar 4.6 Tampilan
Form
Login ...
31
Gambar 4.7 Tampilan
Form
Utama
...
32
Gambar 4.8 Tampilan
Form
Enkripsi ...
33
Gambar 4.9 Pesan Pemberitahuan Enkripsi yang Berhasil ...
33
Gambar 4.10 Pesan Peringatan Kesalahan
Input
Kunci ...
34
Gambar 4.11 Dialog Simpan Cipherteks Berekstensi
.cip
...
34
Gambar 4.12 Pesan Konfirmasi Cipherteks Berhasil Disimpan ...
35
Gambar 4.13 Tampilan
Form
Dekripsi ...
35
Gambar 4.14 Pesan pemberitahuan dekripsi berhasil disimpan ...
36
Gambar 4.15 Skema Jaringan Feistel Pada Algoritma
Blowfish
...
37
Gambar 4.16
Chart
Waktu Enkripsi Tiap Mode ...
40
DAFTAR TABEL
Halaman
Tabel 2.1 Beberapa Contoh Blok Cipher ...
11
Tabel 3.1 Spesifikasi
Hardware
...
24
Tabel 3.2 Spesifikasi
Software
...
25
Tabel 4.1 Tabel User ...
28
Tabel 4.2
Pseudo Code
Jaringan Feistel Algoritma Blowfish
...
38
Tabel 4.3
Pseudo Code
fungsi iterasi F()
...
38
Tabel 4.4
Pseudo Code
Pembangkitan Sub-kunci
...
39
Tabel 4.5 Data Masukan Uji Coba Aplikasi Proses Enkripsi
...
40
Tabel 4.6 Data Masukan Uji Coba Aplikasi Proses Dekripsi
...
41
Tabel 4.7 Kompleksitas Waktu Algoritma
Blowfish
...
43
DAFTAR LAMPIRAN
Halaman
Lampiran 1 8366 Digit HEX dari Pi (
Key
Expansion
) ...
48
Lampiran 2 Form Login (LoginForm.java) ...
51
Lampiran 3 Form Utama (FuguView.java) ...
54
Lampiran 4 Form Enkripsi (BlowfishEnc.java) ...
57
Lampiran 5 Form Dekripsi (BlowfishDec.java) ...
69
Lampiran 6 Class Koneksi Database (DriverConnection.java) ...
80
Lampiran 7 Class Algoritma Blowfish (BlowfishEngine.java) ...
82
Lampiran 8 Class Mode Enkripsi CBC (CBCBlockCipher.java) ...
95
Lampiran 9 Class Mode Enkripsi CFB (CFBBlockCipher.java) ... 101
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Perkembangan
Information and Communication Technology
(ICT) atau
Teknologi Informasi dan Komunikasi (TIK) dari waktu ke waktu kian meningkat.
Kebutuhan manusia akan perangkat informasi dan komunikasi seakan menjadi
kebutuhan yang tidak terpisahkan dalam kehidupan sehari-hari. Setiap hari,
inovasi dalam bidang ini senantiasa dinamis. Salah satu contohnya adalah
komunikasi data pada jaringan komputer.
Jaringan komputer pada awalnya dikembangkan untuk menghubungkan
antar pihak yang saling mempercayai, dengan tujuan untuk saling menukar
informasi (data). Namun seiring berjalannya waktu dan berkembangnya ilmu
pengetahuan, ada salah satu aspek pendukung yang sangat diperlukan, yaitu
masalah keamanan data.
Dibalik kemudahan serta efisiensi biaya dalam hal berkomunikasi,
berbagai macam jenis komunikasi data yang ada belum tentu aman untuk
digunakan, karena belum tentu adanya standar keamanan yang diterapkan untuk
masing-masing perangkat komunikasi data tersebut. Salah satu contoh yang
pernah terjadi adalah adanya penyadapan pembicaraan melalui telepon antara
Presiden B.J. Habibie dan Jaksa Agung Andi Ghalib pada tahun 1999,
sebagaimana yang termuat dalam majalah Panji Masyarakat tanggal 24 Februari
1999. Hal ini semakin membuktikan bahwa keamanan data (pada contoh ini
adalah data suara) sangat dibutuhkan. Apalagi jika percakapan informasi yang
terjadi adalah bersifat rahasia dan diterapkan dalam ruang lingkup kenegaraan.
Solusi yang dapat dilakukan adalah dengan cara mengengkripsi data (teks,
suara dan visual). Teknik ini memiliki tingkat keamanan yang jauh lebih tinggi.
Enkripsi dilakukan pada data sebelum data tersebut dikirimkan, sehingga pihak
yang tidak berhak tidak dapat memahami data yang dikirimkan tersebut meskipun
dekripsi, yaitu kebalikan dari proses enkripsi. Mengubah data yang terenkripsi
menjadi data semula. Dekripsi hanya bisa dilakukan oleh pihak yang berhak.
Enkripsi dan dekripsi merupakan bagian dari kinerja sebuah algoritma
kriptografi. Algoritma enkripsi yang akan digunakan dalam tugas akhir ini adalah
algoritma
Blowfish
.
1.2 Perumusan Masalah
Berdasarkan latar belakang masalah, rumusan masalah dalam penulisan
skripsi ini adalah
1.
Bagaimana menentukan proses enkripsi dan dekripsi data teks
menggunakan algoritma
Blowfish
?
2.
Bagaimana membuat program aplikasi komputer yang dapat melakukan
enkripsi dan dekripsi data berdasarkan algoritma
Blowfish
?
1.3 Batasan Masalah
Batasan masalah yang digunakan dalam penulisan skripsi ini adalah
1.
Data yang akan dienkripsi dan dekripsi adalah data digital, terutama data teks.
2.
Perangkat lunak penerapan teknik pengamanan data
ini dibuat dengan
menggunakan bahasa pemrograman
Java 2
Standard Edition
(J2SE).
1.4 Tujuan Penelitian
Tujuan penelitian dalam skripsi ini adalah
1.
Dapat menentukan proses enkripsi dan dekripsi menggunakan algoritma
Blowfish
.
2.
Dapat membuat program aplikasi komputer yang dapat melakukan enkripsi
1.5 Manfaat Penelitian
Manfaat penelitian dari skripsi adalah
1.
Manfaat teoritis
Secara teoritis, manfaat yang diperoleh adalah dapat memahami proses
enkripsi dan dekripsi data menggunakan algoritma
Blowfish
.
2.
Manfaat praktis
Sedangkan manfaat praktis yang diperoleh adalah dapat membangun aplikasi
perangkat lunak yang akan mengenkripsi data teks
menggunakan algoritma
Blowfish
. Serta mengetahui, mempermudah dan mempercepat proses
BAB II
LANDASAN TEORI
2.1 Tinjauan Pustaka
2.1.1 Algoritma
Menurut Budiyanto (2003), algoritma adalah urutan langkah-langkah logis
penyelesaian masalah yang disusun secara sistematis dan logis.
2.1.2 Lambang
Flowchart
(Diagram Alir)
Arti dari lambang yang digunakan dalam pembuatan
flowchart
yaitu,
Simbol Terminator
Simbol Proses
Simbol Keputusan
Simbol Alur
Simbol Dokumen
Gambar 2.1. Simbol Umum
Flowchart
2.1.3 Keamanan Data
Secara umum data dibagi menjadi dua, yaitu: data yang bersifat rahasia
dan tidak bersifat rahasia. Dalam hal ini, pesan yang diperhatikan dan perlu
diamankan adalah pesan yang bersifat rahasia.
Beberapa ancaman dan serangan yang harus diperhatikan dalam sistem
keamanan data menurut Susanto (2004), adalah sebagai berikut :
1.
Leakage
(kebocoran) adalah pengambilan informasi oleh penerima yang tidak
berhak.
2.
Tampering
adalah pengubahan informasi yang tidak legal
3.
Vandalism
adalah gangguan operasi sistem tertentu, pelaku tidak mengharap
keuntungan apapun.
Metode penyerangan yang biasa digunakan untuk mengganggu keamanan
data menurut Susanto (2004), antara lain :
1.
Eavesdropping
, mendapatkan duplikasi pesan tanpa ijin.
2.
Masquerading
, mengirim atau menerima pesan menggunakan identitas lain
tanpa ijin mereka.
3.
Message Tampering
, mencegat atau menangkap pesan dan mengubah isinya
sebelum dilanjutkan ke pihak penerima sebenarnya. ”
Man in the middle
attack
” adalah bentuk
message tampering
dengan mencegat pesan pertama
pada pertukaran kunci enkripsi pada pembentukan suatu saluran yang aman.
Penyerang menyisipkan kunci lain yang memungkinkan dia untuk
mendekripsi pesan berikutnya sebelum dienkripsi oleh penerima.
4.
Replaying
, menyimpan pesan yang ditangkap untuk pemakaian berikutnya.
5.
Denial of service
, membanjiri saluran atau sumber lain dengan beberapa pesan
yang bertujuan untuk menggagalkan pengaksesan oleh pemakai lain.
Dalam keamanan data perlu diadakan pemisahan antara kebijakan dan
mekanisme kemanan, yang akan membantu memisahkan kebutuhan
implementasinya, karena kebijakan dapat menspesifikasikan kebutuhan dan
mekanisme dapat menerapkan spesifikasi kebijakan tersebut.
Menurut Susanto (2004), sebuah kebijakan keamanan meliputi :
1.
Access Control
, yaitu perlindungan data terhadap pemakaian tak legal.
2.
Authentication
, yaitu menyediakan jaminan identitas seseorang.
3.
Confidentially
(kerahasiaan), yaitu pengungkapan terhadap identitas tak legal.
4.
Nonrepudiation
(penyangkalan), yaitu melindungi terhadap penolakan
komunikasi yang sudah pernah dilakukan.
1.
Enkripsi
, dapat digunakan untuk menyediakan kerahasiaan pesan,
Authentication
dan perlindungan identitas.
2.
Digital Signature
(tanda tangan digital), dapat digunakan untuk menyediakan
authentication
, perlindungan identitas, dan
nonrepudiation
3.
Checksum Algorithm
(
Hash
), dapat digunakan untuk menyediakan
perlindungan integritas.
2.1.4
Kriptografi
Menurut Schneier (1996), kriptografi adalah ilmu dan seni untuk menjaga
keamanan pesan.
Menurut Menezes
et al
(1996), kriptografi adalah ilmu yang mempelajari
teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi
seperti kerahasiaan, integritas data, serta otentikasi.
Menurut Munir (2006), kriptografi (
cryptography
) berasal dari Bahasa
Yunani: ”
cryptos
” artinya ”
secret
” (rahasia), sedangkan ”
graphein
” artinya
”
writing
” (tulisan), Jadi, kriptografi berarti ”
secret writing
” (tulisan rahasia).
Definisi yang digunakan di dalam buku-buku yang lama (sebelum tahun 1980-an)
menyatakan bahwa kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan
pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti
lagi maknanya. Definisi ini mungkin cocok pada masa lalu di mana kriptografi
digunakan untuk keamanan komunikasi penting seperti komunikasi di kalangan
militer, diplomat, dan mata-mata (
spy
). Namun saat ini kriptografi lebih dari
sekadar
privacy
, tetapi juga untuk tujuan
data integrity
,
authentication,
dan
non-repudation
.
Menurut Munir (2006), di dalam kriptografi terdapat beberapa
terminologi/istilah penting yang perlu diketahui yaitu :
1.
Pesan
,
Plainteks, dan Cipherteks
Pesan (
message
) adalah data atau informasi yang dapat dibaca atau dimengerti
maknanya. Nama lain untuk pesan adalah plainteks (
plaintext
) atau teks jelas
(
cleartext
). Pesan dapat berupa data atau informasi yang dikirim (melalui
perekam (kertas,
storage
, dsb). Pesan yang tersimpan tidak hanya berupa teks,
tetapi juga dapat berbentuk citra (
image
), suara/bunyi (
audio
), dan video, atau
berkas biner lainnya.
Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan
perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang
tersandi disebut cipherteks (
ciphertext
) atau kriptogram (
cryptogram
).
Cipherteks harus dapat ditransformasikan kembali menjadi plainteks semula
agar pesan yang diterima bisa dibaca.
2.
Pengirim dan penerima
Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim
(
sender
) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima
(
receiver
) adalah entitas yang menerima pesan. Entitas disini dapat berupa
orang, mesin (komputer), kartu kredit, dan sebagainya. Pengirim tentu
menginginkan pesan yang dikirim tidak dapat dibaca/diketahui oleh pihak
lain, kecuali yang berhak menerimanya. Maka, pesan harus disandikan
menjadi cipherteks.
3.
Enkripsi dan Dekripsi
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi
(
encryption
) atau
enciphering
(standard nama menurut
ISO 7498-2
).
Sedangkan proses mengembalikan cipherteks menjadi plainteks semula
dinamakan dekripsi (
decryption
) atau
deciphering
(standard nama menurut
ISO 7498-2
). Istilah
encryption of data in motion
mengacu pada enkripsi
pesan yang ditransmisikan melalui saluran komunikasi. Sedangkan istilah
encryption of data at-rest
mengacu pada enkripsi dokumen yang disimpan di
dalam storage.
4.
Cipher dan Kunci
Algoritma kriptografi disebut juga cipher, yaitu aturan untuk
enciphering
dan
deciphering
, atau fungsi matematika yang digunakan untuk enkripsi dan
dekripsi. Kunci (
key
) adalah parameter yang digunakan untuk transformasi
Enkripsi Dekripsi
Plainteks Cipherteks Plainteks
Kunci Kunci
Gambar 2.2. Skema Enkripsi dan Dekripsi
Plainteks
merupakan data masukan berupa teks berkode standar ASCII
(
American Standard Code for Information Interchange
). ASCII merupakan
suatu standar internasional dalam kode huruf dan simbol seperti halnya Hex
dan Unicode, tetapi ASCII lebih bersifat universal. Kode ASCII memiliki
komposisi bilangan biner sebanyak 8 bit. Dimulai dari 00000000 hingga
11111111. Total kombinasi yang dihasilkan sebanyak 256, yang dimulai dari
kode 0 hingga 255 dalam sistem bilangan Desimal.
Menurut Anjar Syafari (2007), Proses enkripsi dan deskripsi secara matematis
diterangkan sebagai berikut :
E
K(M) = C (Proses Enkripsi)
D
K(C) = M (Proses Deskripsi)
Keterangan :
E
K: Enkripsi.
D
K: Deskripsi.
M
:
Message
(Pesan sebelum dienkripsi)
Tipe-tipe cipher :
Ciphers
Classical Rotor Machine Modern
Substitution Transposition Public Key Private Key
Stream Chiper Block Cipher
Gambar 2.3. Skema Tipe-tipe Cipher
Menurut Munir (2006), Algoritma kunci simetri mengacu pada metode
enkripsi yang dalam hal ini baik pengirim maupun penerima memiliki kunci
yang sama. Algoritma kunci simetri modern beroperasi dalam mode bit dan
dapat dikelompokkan menjadi dua kategori:
a.
Cipher aliran (
Stream Cipher
)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk
bit tunggal yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan
bit per bit. Cipher aliran mengenkripsi satu bit setiap kali.
b.
Cipher blok (
Block Cipher
)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk
blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit
yang panjangnya sudah ditentukan sebelumnya. Misalnya, panjang blok
adalah 64 bit, maka itu berarti algoritma enkripsi memperlakukan 8
karakter setiap kali enkripsi (1 karakter = 8 bit dalam pengkodean
ASCII
).
Cipher blok mengenkripsi satu blok bit setiap kali.
5.
Sistem Kriptografi
(
cryptosystem
)
Menurut Schneier (1996), kriptografi membentuk sebuah sistem yang
dinamakan sistem kriptografi. Sistem kriptografi (
cryptosystem
) adalah
6.
Penyadap
Penyadap (
eavesdropper
) adalah orang yang mencoba menangkap pesan
selama ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi
sebanyak-banyaknya mengenai sistem kriptogafi yang digunakan untuk
berkomunikasi dengan maksud untuk memecahkan cipherteks. Nama lain
penyadap:
enemy, adversary, intruder, interceptor, bad guy.
7.
Kriptoanalis dan Kriptologi
Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang
berlawanan yaitu kriptanalisis. Kriptanalisis (
cryptanalysis
) adalah ilmu dan
seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci
yang digunakan. Pelakunya disebut kriptanalis. Kriptologi (
cryptology
) adalah
studi mengenai kriptografi dan kriptanalisis.
Kriptografi
Ilmu dan seni untuk menjaga keamanan pesan
Kriptanalis
Ilmu dan seni untuk memecahkan pesan yang terenkripsi (cipherteks)
Kriptologi
Gambar 2.4. Kriptologi, Kriptografi dan Kriptanalisis
2.1.5 Cipher Blok
Pada cipher blok, plainteks dibagi menjadi beberapa blok dengan panjang
tetap. Ketika melakukan enkripsi, cipher blok mungkin saja menerima masukan
128-bit plainteks dan mengeluarkan 128-bit keluaran cipherteks. Transformasi
selengkapnya dikontrol menggunakan masukan kedua, yaitu kunci. Begitu pula
halnya dengan proses dekripsi, algoritma untuk melakukan dekripsi akan
menerima masukan 128-bit cipherteks dan kunci kemudian menghasilkan
keluaran 128-bit plainteks aslinya. Cipher blok mengenkripsi satu blok bit setiap
Tabel 2.1 Beberapa contoh blok cipher
Cipher Blok
Ukuran Kunci (Bits)
Ukuran Blok
Tahun
DES
56
64
1976
3DES
112 atau 168
64
1978
AES
128, 192 atau 256
128
1998
RC6
Minimum 0, maksimum 2040,
multiple
8 bits,
default
128 bits
128
1998
Blowfish
Minimum 32, maksimum 448,
multiple
8 bits,
default
128 bits
64
1993
CAST-256
Minimum 128, maksimum 256,
multiple
32 bits,
default
128 bits
128
1998
Untuk lebih jelasnya, proses enkripsi dan dekripsi pada cipher blok dapat
dilihat pada gambar berikut :
Enkripsi Cipher Blok Kunci
Plainteks
Cipherteks
Gambar 2.5. Enkripsi Pada Cipher Blok
Dekripsi Cipher Blok Kunci
Cipherteks
Plainteks
2.1.6 Cipher Berulang
Menurut Randy (2006), cipher berulang merupakan fungsi transformasi
sederhana yang mengubah plainteks menjadi cipherteks dengan proses perulangan
sejumlah kali. Pada setiap putaran digunakan kunci putaran yang dikombinasikan
dengan plainteks. Secara formal, cipher berulang dinyatakan sebagai berikut :
Ci = f(Ci-1, P
i)
Keterangan :
i
= 1, 2, ...,
r
(
r
adalah jumlah putaran)
P
i= subkunci pada putaran ke-
i
fi
= fungsi transformasi (di dalamnya terdapat fungsi substitusi, permutasi,
dan/atau ekspansi, kompresi)
Plainteks dinyatakan dengan
C
0dan cipherteks dinyatakan dengan
C
r.
2.1.7 Jaringan Feistel (
Feistel Network
)
Menurut Randy (2006), model jaringan
Feistel
digunakan oleh hampir
semua algoritma cipher blok. Jaringan ini ditemukan oleh Horst Feistel pada tahun
1970. Secara formal, operasi transformasi pada jaringan
Feistel
secara umum
dapat dinyatakan sebagai:
(X
L)
i=
(X
R)
i-1
(X
R)
i= (X
L)
i-
1
⊕
f
(
(X
R)
i-1,
P
i)
Keterangan :
X
L=
n-
bit plainteks bagian kiri
X
R=
n-
bit plainteks bagian kanan
Dengan
X
(blok plainteks) =
X
L+
X
R, n merupakan setengah dari blok plainteks
X
Proses enkripsi dan dekripsi dapat menggunakan model jaringan
Feistel
yang sama. Model jaringan
Feistel
bersifat
reversible
(dua arah) untuk proses
enkripsi dan dekripsi. Sifat
reversible
ini memungkinkan mendekripsi cipherteks
(X
L)
i–
1
⊕
f
(
(X
R)
i–
1,
P
i)
⊕
f
(
(X
R)
i–
1,
P
i) =
(X
L)
i–
1
Selain itu, sifat
reversible
tidak bergantung pada fungsi
f
sehingga fungsi
f
dapat dibuat serumit mungkin. Skema jaringan
Feistel
dapat dilihat pada Gambar
2.7.
(X
L)
i - 1(X
R)
i - 1(X
L)
i(X
R)
iF
Pi
Gambar 2.7. Skema Jaringan
Feistel
Secara Umum
2.1.8 Kotak-S (
S-Box
)
Menurut Munir (2006), Kotak-S adalah matriks yang berisi substitusi
sederhana yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain.
Pada kebanyakan algoritma cipher blok, Kotak-S memetakan
m
bit masukan
menjadi
n
bit keluaran, sehingga Kotak-S tersebut dinamakan kotak
m x n S-Box
.
Kotak-S merupakan satu-satunya langkah nirlanjar (non-linear) di dalam
algoritma, karena operasinya adalah
look-up table
. Masukan dari operasi
look-up
table
dijadikan sebagai indeks Kotak-S, dan keluarannya adalah masukan di
dalam Kotak-S.
Perancangan Kotak-S menjadi isu penting karena Kotak-S harus dirancang
sedemikian
sehingga
kekuatan
kriptografinya
bagus
dan
mudah
diimplementasikan. Ada empat cara (pendekatan) yang dapat digunakan dalam
mengisi Kotak-S:
1.
Dipilih secara acak
2.
Dipilih secara acak lalu diuji
Sama halnya seperti sebelumnya, namun nilai acak yang bangkit akan diuji
apakah memenuhi sifat tertentu.
3.
Dibuat oleh orang (
man-made
)
Masukan di dalam Kotak-S dibangkitkan dengan teknik yang lebih intuitif.
4.
Dihitung secara matematis (
math-mode
)
Masukan di dalam Kotak-S dibangkitkan berdasarkan prinsip matematika
yang terbukti aman dari serangan kriptanalis.
2.1.9 Algoritma Kriptografi Blowfish
Menurut Randy (2006),
Blowfish
adalah sebuah algoritma kriptografi yang
beroperasi pada mode blok. Algoritma
Blowfish
merupakan algoritma yang
diciptakan oleh seorang
cryptanalyst
bernama Bruce Schneier pada tahun 1993.
Algoritma
Blowfish
termasuk ke dalam kriptografi kunci simetrik (S
ymmetric
Cryptosystem
), dan metoda enkripsinya serupa dengan DES (
Data Encryption
Standard-Like Cipher
). Algoritma ini ditujukan untuk mikroprosessor besar (32
bit ke atas dengan
cache
data yang besar).
Algoritma
Blowfish
terdiri dari dua bagian yaitu ekspansi kunci dan
enkripsi data. Ekspansi kunci mengubah sebuah kunci dengan panjang maksimal
448 bit kepada beberapa
array
subkunci dengan ukuran total 4168
byte.
Secara
umum, algoritma
Blowfish
dikembangkan untuk memenuhi kriteria sebagai
berikut :
a)
Cepat, pada implementasi yang optimal
Blowfish
dapat mencapai kecepatan
26
clock cycle per byte
b)
Ringan,
Blowfish
dapat berjalan pada memori kurang dari 5KB
c)
Sederhana,
Blowfish
hanya menggunakan operasi yang sederhana, yakni :
penambahan (
addition
), XOR (Ekslusif OR), dan penelusuran tabel (
table
lookup
) pada bilangan yang di operasikan (
operand
) 32-bit
d)
Tingkat keamanan yang variatif, panjang kunci
Blowfish
dapat bervariasi
(minimum 32 bit, maksimum 448 bit,
multiple
(kelipatan)
8 bit,
default
128
Algoritma
Blowfish
merupakan algoritma yang kuat, dan sampai saat ini
belum ditemukan kelemahan yang berarti. Algoritma
Blowfish
pun dapat
digabungkan dengan algoritma-algoritma enkripsi lainnya dalam mengenkripsi
sebuah informasi/pesan untuk lebih menjamin isi dari pesan tersebut.
Enkripsi data terdiri dari sebuah fungsi sederhana yang mengalami putaran
atau iterasi sebanyak 16 kali. Setiap putaran terdiri dari sebuah permutasi yang
bergantung pada kunci dan substitusi yang bergantung pada kunci dan data.
Seluruh operasi berupa penambahan dan XOR (
⊕
) dengan kata sepanjang 32 bit.
Operasi tambahan yang digunakan hanya berupa
data look-up
terhadap
array
dengan empat indeks yang dilakukan setiap putaran.
Blowfish
menggunakan sejumlah besar subkunci. Kunci-kunci tersebut
harus dibangkitkan terlebih dahulu sebelum proses enkripsi dan dekripsi data
dilakukan.
Menurut Sukmawan (2000), alur proses enkripsi algoritma
Blowfish
dapat
dijelaskan sebagai berikut:
1.
P-array
terdiri dari 18 buah subkunci dengan ukuran 32 bit:
P
1, P
2, ..., P
182.
Empat buah Kotak-S dengan ukuran 32 bit mempunyai masukan sebanyak
256 buah. Kotak-kotak tersebut adalah:
S
1,0, S
1,1, ..., S
1,255S
2,0, S
2,1, ..., S
2,255S
3,0, S
3,1, ..., S
3,255S
4,0, S
4,1, ..., S
4,255Subkunci dibangkitkan dengan menggunakan algoritma
Blowfish
.
3.
Masukan terhadap jaringan
Feistel
ini adalah
X
, yang merupakan elemen data
(plainteks) dengan ukuran 64-bit. Bila kurang dari 64-bit, maka akan
dilakukan proses
padding
(penambahan bit).
4.
Bagi
X
menjadi setengah bagian, yaitu dengan ukuran 32-bit. 32-bit pertama
5.
Lakukan langkah-langkah berikut dalam 16 putaran (
iterasi
):
X
L=
X
L⊕
P
iX
R= F(
X
L)
⊕
X
RKemudian tukar
X
Ldengan
X
R.
Keterangan:
i
= 1, 2, …, 16 (menunjukkan nomor putaran/iterasi)
6.
Setelah melakukan perulangan yang ke-16, lakukan lagi proses penukaran
X
Ldengan
X
R.
7.
Lakukan operasi XOR (
⊕
), yaitu :
X
R=
X
R⊕
P
178.
Lakukan operasi XOR (
⊕
), yaitu :
X
L=
X
L⊕
P
189.
Gabungkan kembali
X
Ldan
X
R, yaitu :
X
=
X
R+
X
LFungsi F yang terdapat pada jaringan
Feistel
didefinisikan sebagai berikut:
1.
Bagi
X
Lmenjadi empat bagian yang berukuran 8 bit. Keempat bagian yang
dihasilkan adalah
a, b, c,
dan
d
.
2.
Fungsi F(
X
L) didefinisikan sebagai berikut:
F(
X
L) = ((S
1,a+ S
2,bmod 2
32)
⊕
S
3,c) + S
4,dmod 2
32Proses dekripsi dilakukan dengan langkah yang sama dengan proses enkripsi,
kecuali
P
1, P
2, ..., P
18digunakan dengan urutan terbalik dari proses enkripsi.
S-Box 1 32 bits
S-Box 2
S-Box 3
S-Box 4
32 bits 32 bits 32 bits
8 bits 8 bits 8 bits 8 bits
Implementasi algoritma
Blowfish
yang memerlukan waktu cepat harus
mengurangi jumlah putaran dan memastikan bahwa semua subkunci tersimpan
dalam
cache
(penyimpanan sementara).
Karena algoritma ini merupakan algoritma yang sudah termasuk lama,
tentu saja ada beberapa usaha kriptanalisis yang dilakukan terhadap algoritma ini,
antara lain adalah:
1.
John Kelsey membuat sebuah
attack
yang dapat mematahkan 3 iterasi
Blowfish
, namun tidak dapat mengembangkannya lebih lanjut.
Attack
ini
melakukan eksploitasi pada fungsi f dan fakta bahwa penambahan mod 2
32dan XOR tidak
commute
.
2.
Vikramjit Singh Chhabra mencari cara untuk menerapkan
brute-force key
search machine.
3.
Serge Vaudenay melakukan penelitian pada varian
Blowfish
yang telah
disederhanakan, dengan S-aBox yang diketahui, dan tidak
key-dependent
.
Untuk varian ini,
attack
yang berbeda dapat menemukan
P-Array
dengan
28r+1 plainteks yang telah dipilih (r merupakan jumlah iterasi).
Attack
ini
tidak mungkin dilakukan pada
Blowfish
dengan 8-iterasi dan lebih, karena
lebih banyak plainteks yang dibutuhkan daripada yang dapat dibangkitkan
dengan 64-bit cipher blok.
4.
Tesis Ph.D milik Vincent Rijmen mencantumkan second-order differential
attack pada 4 iterasi
Blowfish
. Namun,
attack
tersebut tidak dapat dilanjutkan
lagi untuk iterasi selanjutnya.
2.1.10 Mode Operasi Enkripsi Cipher Blok
Pada algoritma kriptografi yang beroperasi pada cipher blok, dikenal
beberapa mode operasi. Empat mode operasi yang lazim digunakan pada cipher
blok adalah:
1.
Electronic Code Book
(ECB)
Pada mode ECB, setiap mode plainteks
M
idienkripsi secara individual
C
i=
E
K(
M
i)
dan proses dekripsi sebagai berikut:
M
i=
D
K(
C
i)
Dalam hal ini,
M
idan
C
imerupakan blok plainteks dan cipherteks ke-
i
.
Skema enkripsi dan dekripsi dengan mode ECB dapat dilihat pada Gambar
2.9
E
Blok Plainteks
M
1Kunci
K
Blok Cipherteks
C
1E
Blok Plainteks
M
1 KunciK
c
1c
2c
...c
n Blok CipherteksC
1C = (c1, c2, …, cn)
ENKRIPSI
DEKRIPSI
c
1c
2c
...c
n C = (c1, c2, …, cn)m
1m
2m
..m
nM = (m1, m2, …, mn)
m
1m
2m
..m
nM = (m1, m2, …, mn)
Gambar 2.9 Skema Enkripsi dan Dekripsi dengan Mode ECB
Mode ini merupakan mode termudah dari keempat mode yang telah
disebutkan di atas. Setiap blok plainteks dienkripsi secara independen,
sehingga proses enkripsi tidak harus berlangsung secara linear atau proses
enkripsi dapat dilakukan pada blok-blok secara tidak berurutan. Keuntungan
mode ECB lainnya adalah kesalahan satu bit pada satu blok hanya akan
mempengaruhi blok cipherteks yang berkorespondensi pada proses dekripsi.
Tetapi mode ECB lemah terhadap serangan. Dalam dunia nyata,
kebanyakan bagian-bagian pesan cenderung akan muncul secara berulang di
dalam sebuah teks. Dengan mode ECB, yang mengenkripsikan blok-blok
secara independen, maka perulangan pesan pada plainteks mempunyai
peluang yang besar untuk muncul berulang pula pada cipherteks. Dengan
mengetahui informasi ini, kriptanalis dapat melakukan serangan dengan
metode statistik secara mudah. Selain itu, mode ECB juga sangat rentan
terhadap manipulasi cipherteks yang bertujuan untuk mengelabui pihak
2.
Cipher Block Chaining
(CBC)
Pada mode operasi CBC, terdapat mekanisme umpan balik pada
sebuah blok, yaitu blok plainteks
current
di-XOR-kan terlebih dahulu dengan
blok cipherteks hasil enkripsi sebelumnya. Selanjutnya hasil operasi XOR ini
dimasukkan ke dalam fungsi enkripsi. Dengan demikian pada mode CBC,
setiap blok cipherteks bergantung tidak hanya pada blok plainteksnya, tapi
juga pada seluruh blok plainteks sebelumnya. Dekripsi dilakukan dengan cara
memasukkan blok cipherteks
current
ke dalam fungsi dekripsi, kemudian
meng-XOR-kan hasilnya dengan blok cipherteks sebelumnya. Secara
matematis proses enkripsi dapat dinyatakan sebagai berikut:
C
i=
E
K(
M
i⊕
C
i-1)
sedangkan proses dekripsi dapat dinyatakan sebagai berikut:
M
i=
D
K(
C
i)
⊕
C
i-1yang dalam hal ini,
C
0= IV (Initialization Vector)
.
IV
dapat diberikan oleh
pengguna atau dibangkitkan secara acak oleh aplikasi.
IV
ini merupakan
rangkaian bit yang tidak bermakna dan hanya digunakan sebagai inisialisasi
untuk membuat setiap blok cipherteks menjadi unik. Jadi, untuk
menghasilkan blok cipherteks pertama (
C
1),
IV
digunakan untuk
menggantikan blok cipherteks sebelumnya,
C
0. Sebaliknya pada proses
dekripsi, blok plainteks diperoleh dengan cara meng-XOR-kan
IV
dengan
hasil dekripsi terhadap blok cipherteks pertama.
Dengan mode operasi CBC, kesalahan pada satu bit plainteks akan
mempengaruhi blok cipherteks yang berkoresponden dan blok-blok
cipherteks selanjutnya. Sedangkan kesalahan satu bit pada cipherteks hanya
akan mempengaruhi satu blok plainteks yang berkoresponden dan satu bit
E
KGambar 2.10. Skema Enkripsi dan Dekripsi dengan Mode CBC
Terlepas dari kekurangan yang telah disebutkan di atas, mode CBC
dapat mengatasi kelemahan yang timbul pada mode ECB. Dengan mode
ECB, blok-blok plainteks yang sama tidak menghasilkan blok-blok cipherteks
yang sama. Karena itulah kriptanalisis lebih sulit untuk dilakukan pada mode
CBC.
3.
Cipher FeedBack
(CFB)
Mode CBC memiliki kelemahan, yaitu proses enkripsi hanya dapat
dilakukan pada ukuran blok yang utuh, sehingga mode CBC tidak efisien jika
diterapkan pada aplikasi komunikasi data. Permasalahan ini dapat diatasi
pada mode CFB. Mode CFB mengenkripsikan data dalam unit yang lebih
kecil daripada ukuran blok. Sehingga enkripsi dapat dilakukan meskipun data
yang diterima belum lengkap. Proses enkripsi pada unit yang lebih kecil
daripada ukuran blok ini membuat mode CFB berlaku seperti cipher aliran
(
stream cipher
). Karena hal inilah, mode CFB dapat diterapkan pada aplikasi
komunikasi data. Unit yang dienkripsi dapat berupa bit per bit, 2 bit, 3 bit dan
seterusnya. Bila unit yang dienkripsi berupa satu karakter setiap kalinya,
maka mode CFB ini disebut CFB 8-bit. Mode ini membutuhkan sebuah
antrian yang berukuran sama dengan ukuran blok masukan. Secara formal,
proses enkripsi mode CFB
n
-bit dapat dinyatakan sebagai berikut:
C
i=
M
i⊕
MSB
b(
E
K(
X
i))
sedangkan untuk proses dekripsi dapat dinyatakan sebagai berikut:
M
i=
C
i⊕
MSB
b(
D
K(
X
i))
X
i+1=
LSB
b-u(
X
i) ||
C
iKeterangan:
X
i: isi antrian dengan
X
iadalah IV
E
K: fungsi enkripsi
D
K: fungsi dekripsi
K
: kunci
b
:
panjang blok enkripsi
u
: panjang unit enkripsi
||
: operasi penyambungan (
concatenation
)
MSB :
Most Significant Byte
LSB :
Least Significant Byte
Secara umum, CFB
u
-bit mengenkripsi plainteks sebanyak
u
-bit setiap
kalinya, yang mana u
b (b=ukuran blok). Mode CFB membutuhkan sebuah
antrian (
queue
) yang berukuran sama dengan ukuran blok masukan. Mode
CFB mempunyai keunikan tersendiri, yaitu untuk proses enkripsi dan dekripsi
digunakan fungsi yang sama. Skema enkripsi dan dekripsi dengan mode CFB
8-bit dapat dilihat pada Gambar 2.10
E
KK
m
i⊕
c
ip
i Antrian 8-byteLeft-most byte
ENKRIPSI
K
c
i⊕
m
ip
i Antrian 8-byteDEKRIPSI
D
KLeft-most byte
Pada mode CFB pun terdapat perambatan kesalahan baik pada proses
enkripsi maupun proses dekripsi. Pada proses enkripsi, kesalahan satu bit
pada plainteks mempengaruhi blok cipherteks yang berkoresponden dan
blok-blok cipherteks berikutnya. Sedangkan kesalahan satu bit pada blok-blok
cipherteks akan bit yang berkoresponden dan bit-bit lainnya selama bit
error
tersebut terdapat di dalam pergeseran bit (
shift register
). Pada mode CFB
8-bit dan ukuran blok 64 8-bit, maka kesalahan satu
byte
pada blok cipherteks
akan mempengaruhi satu
byte
plainteks yang berkoresponden dan delapan
byte
berikutnya (lama
byte
error
yang terdapat dalam
shift register
adalah
delapan putaran).
4.
Output FeedBack
(OFB)
Mode OFB bekerja dengan cara yang mirip dengan mode CFB,
kecuali
n
-bit dari hasil fungsi enkripsi terhadap antrian disalin menjadi
elemen paling kanan antrian. Secara formal, mode OFB
n
-bit dapat
dinyatakan sebagai berikut:
C
i=
M
i⊕
MSB
b(
E
K(
X
i))
X
i+1=
LSB
b-u(
X
i) ||
MSB
b(E
K(X
i))
sedangkan proses dekripsi dapat dinyatakan sebagai berikut:
M
i=
C
i⊕
MSB
b(
D
K(
X
i))
X
i+1=
LSB
b-u(
X
i) ||
MSB
b(E
K(X
i))
Pada mode OFB tidak terdapat perambatan kesalahan. Kesalahan satu
bit pada plainteks hanya mengakibatkan kesalahan satu bit yang
berkoresponden pada cipherteks. Sebaliknya, kesalahan satu bit pada
cipherteks hanya mengakibatkan kesalahan satu bit yang berkoresponden
pada plainteks. Gambar 2.11 menunjukkan skema enkripsi dan dekripsi pada
K
m
i⊕
c
ip
i Antrian 8-byteLeft-most byte
ENKRIPSI
K
c
i⊕
m
ip
i Antrian 8-byteDEKRIPSI
D
KLeft-most byte
E
KGambar 2.12 Skema Enkripsi dan Dekripsi pada mode OFB 8-Bit
Penggunaan mode-mode operasi tersebut tidak merubah fungsi enkripsi
dan dekripsi yang telah didefinisikan.
2.2 Kerangka Pemikiran
Berdasarkan pendahuluan dan mengacu pada tinjauan pustaka, dapat
disusun suatu kerangka pemikiran penulisan skripsi sebagai berikut:
1.
Dilakukan analisis sistem terhadap aplikasi teknik pengamanan data teks
menggunakan algoritma
Blowfish
.
2.
Dengan adanya tahapan analisis sistem, dapat ditentukan kebutuhan sistem
sehingga dapat dilakukan pembuatan aplikasi enkripsi dan dekripsi data teks
menggunakan algoritma
Blowfish
.
3.
Data teks dan kunci (
private key
) merupakan data masukan, yang kemudian
di enkripsi dengan algoritma Blowfish dan disimpan menjadi sebuah file teks
cipher. File teks cipher tersebut akan dibuka kembali dengan aplikasi yang
sudah dibuat, kemudian dilakukan proses dekripsi, sehingga data teks semua
`
BAB III
METODE PENELITIAN
Metode penelitian yang digunakan dalam penulisan skripsi ini adalah
pengembangan sistem dan disertai dengan studi literatur. Langkah-langkah yang
dilakukan untuk mencapai tujuan skripsi ini adalah sebagai berikut:
1.
Melakukan studi literatur tentang algoritma
Blowfish dan penerapannya.
2.
Perencanaan sistem.
3.
Analisis sistem teknik pengamanan data dengan menggunakan algoritma
Blowfish untuk mengidentifikasi masalah, memahami cara kerja sistem
dan mengenali kebutuhan.
4.
Perancangan sistem, yaitu perancangan
flowchart
,
form
masukan dan
form
keluaran.
5.
Implementasi sistem. Sistem dibangun berdasarkan algoritma yang telah
ada menggunakan bahasa pemrograman Java 2 Standard Edition (J2SE).
6.
Evaluasi sistem. Evaluasi sistem dilakukan untuk menguji tingkat efisiensi
sistem.
7.
Dalam membuat dan melakukan evaluasi sistem diperlukan seperangkat
alat komputer. Adapun spesifikasi alat komputer yang digunakan sebagai
berikut:
a.
Hardware
Tabel 3.1
Spesifikasi
Hardware
Jenis
Spesifikasi
Notebook
Notebook Hewlett Packard 520
Processor
Intel(R) Celeron(R) 420 1.60Gz
Memory
RAM DDR2 1.5GB
VGA Card
Mobile Intel(R) 945 Express Chipset Family
b. Software
Tabel 3.2
Spesifikasi
Software
Jenis
Spesifikasi
Sistem Operasi
-
Microsoft(R) Windows(R) eXPerience (XP)
Professional SP3
-
Ubuntu 9.10 Karmic Koala
Bahasa
Pemrograman
Java 2 Standard Edition
-
Java Development Kit (JDK) 1.6.0_11
-
Java Runtime Environment (JRE) 6
IDE
Netbeans 6.5
Database Server
MySQL Server 5.1
BAB IV
PEMBAHASAN
4.1 Analisis Sistem
Dalam melakukan analisis sistem, perlu diketahui terlebih dahulu alur
sistem pengamanan data yang akan dibuat. Secara umum, alur sistem pengamanan
data dapat digambarkan seperti Gambar 4.1.
Teks ter-Enkripsi Teks ter-Dekripsi
Plainteks Plainteks
File Cipherteks Kunci
(Private Key)
Kunci (Private Key)
Gambar 4.1 Alur Sistem Pengamanan Data Teks
Berdasarkan Gambar 4.1 dengan mengacu pada Gambar 2.1, plainteks
merupakan data teks berkode ASCII (
American Standard Code for Information
Interchange
) dimana setiap karakter memiliki nilai setara dengan 8 bits (1 byte).
Sistem (perangkat lunak) akan dijalankan dalam dua mode, yaitu mode
enkripsi dan mode dekripsi. Di tiap-tiap mode akan memiliki data masukan
berupa plainteks (bisa berupa teks yang langsung di tulis, maupun dalam bentuk
file teks), kunci (
private key
), dan memilih mode operasi enkripsi (ECB, CBC,
OFB, atau CFB). Untuk menghindari adanya
weak key
(kunci lemah) dalam
penggunaan algoritma Blowfish, maka kunci dibuat dengan minimal 8 karakter.
Setelah mengisi semua data masukan, selanjutnya dilakukan proses enkripsi
dengan algoritma Blowfish. Hasil dari proses enkripsi ini dapat disimpan ke
dalam file berekstensi
.cip
, yang selanjutnya akan menjadi cipherteks.
4.2 Diagram Alir (
Flowchart
) Aplikasi
Berikut
flowchart
(diagram alir) dari sistem perangkat lunak yang akan di buat:
Login