Implementasi Algoritma Blowfish Pada Aplikasi Enkripsi Dan Dekripsi Citra Berbasis Windows

6
BAB II
LANDASAN TEORI

2.1 Kriptografi
Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan
aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta
autentikasi data ( Schneier, 1997).
2.1.1 Terminologi
Kriptografi merupakan seni dan ilmu untuk menjaga keamanan data dengan metode tertentu,
dan pelakunya disebut kriptografer. Kriptografi disebut sebagai ilmu karena didalamnya
terdapat metode yang digunakan, dan dikatakan sebagai seni karena dalam membuat suatu
teknik kriptografi itu sendiri merupakan ciri tersendiri dari si pembuat dan memerlukan
teknik khusus dalam mendesainnya. (Munir, 2006)
Pada standar ISO 7498-2 menggunakan istilah encipher untuk proses enkripsi dan
decipher untuk proses dekripsi. Skema rangkaian proses enkripsi dan dekripsi ditunjukkan
secara umum pada Gambar 2.1.
Dalam kriptografi, proses enkripsi dilakukan menggunakan suatu algoritma dengan
beberapa parameter. Biasanya algoritma tidak dirahasiakan, bahkan enkripsi yang
mengandalkan kerahasiaan algoritma dianggap sesuatu yang tidak baik. Rahasia terletak di
beberapa parameter yang digunakan, jadi kunci ditentukan oleh parameter. Parameter yang

menentukan kunci dekripsi itulah yang harus dirahasiakan (parameter menjadi equivalen
dengan kunci).
kunci
Enkripi

Naskah Asli

Dekripsi

Naskah Acak

Naskah Asli

Gambar 2.1 : Proses Enkripsi dan Dekripsi (Kromodimeoljo,2010)

Universitas Sumatera Utara

7
2.1.2


Komponen Kriptografi

Pada dasarnya, kriptografi terdiri dari beberapa komponen (Ariyus, 2007) sebagai berikut :
1. Algoritma, merupakan himpunan aturan matematis yang digunakan dalam enkripsi dan
dekripsi.
2. Enkripsi, adalah transformasi data ke dalam bentuk yang tidak dapat terbaca tanpa
sebuah kunci tertentu.
3. Dekripsi, merupakan kebalikan dari enkripsi, yaitu transformasi data terenkripsi
kembali ke bentuknya semula.
4. Kunci, digunakan pada saat melakukan enkripsi dan dekripsi. Pada kriptografi modern,
keamanan enkripsi tergantung pada kunci, dan tidak tergantung kepada algoritmanya
apakah dilihat orang lain atau tidak.
5. Pesan asli (Plaintext), disebut juga dengan clear-text, merupakan teks asli yang akan
diproses menggunakan algoritma kriptografi tertentu untuk menjadi Ciphertext.
6. Ciphertext, merupakan pesan yang telah melalui proses enkripsi yang merupakan
himpunan karakter acak
7. Kriptologi, merupakan studi tentang kriptografi dan kriptanalisis.
8. Kriptanalisis (Cryptanalysist), merupakan aksi memecahkan mekanisme kriptografi
dengan cara menganalisisnya untuk menemukan kelemahan dari suatu algoritma
kriptografi sehingga akhirnya dapat ditemukan kunci atau teks asli.

9. Kriptosistem, adalah perangkat keras atau implementasi perangkat lunak kriptografi
yang diperlukan dalam mentransformasi sebuah pesan asli menjadi Ciphertext dan
juga sebaliknya.
2.1.3 Tujuan Kriptografi
Terdapat 4 tujuan dasar kriptografi ( Sharma, 2012) sebagai berikut:
 Confidentiality (kerahasiaan) yaitu isi pesan yang dikirim tidak diketahui oleh
pihak yang tidak berhak.


Data integrity (keutuhan data) yaitu isi pesan harus utuh, dimana tidak terjadi
manipulasi data (penghapusan, pengubahan atau penambahan) oleh pihak yang
tidak berhak.

Universitas Sumatera Utara

8


Authentication (keotentikan) yaitu berhubungan dengan identifikasi, baik secara
kesatuan sistem atau informasi itu sendiri.




Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu
pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa
pesan tersebut berasal dirinya).

2.2

Jenis-Jenis Algoritma Kriptografi
Terdapat dua jenis kriptografi jika dibagi berdasarkan kunci yang digunakan untuk
proses enkripsi dan dekripsi, yaitu algoritma simetris dan algoritma asimetris.

2.2.1

Algoritma Simetris

Jika kunci yang digunakan untuk proses enkripsi dan proses dekripsi sama, maka
algoritma tersebut disebut algoritma simetris (Ayushi, 2010). Keamanan dari pesan yang
dikirim tergantung pada kunci tersebut, apabila kunci tersebut diperoleh kepada orang

yang tidak berhak, maka dia dapat memperoleh isi pesan tersebut (Sadikin, 2012).
Algoritma simetris memiliki dua kategori yaitu stream algorithms dan block algorithms.
Stream algorithms beroperasi dalam satu bit tunggal selama satu selang waktu pada
plainteks. Block algorithms beroperasi dalam group bit-bit dalam satu selang waktu pada
plainteks.
Yang termasuk algoritma kunci simetris adalah Blowfish, OTP, DES, RC2, RC4,
RC5, IDEA, Twofish, Magenta, FEAL, CAST, Rijndael (AES), GOST, A5, Kasumi dan
lain-lainnya.

Gambar 2.2 :Skema Kunci Simetris ( Heriyanto, 1999).

Kelebihan kunci simetris:
a. Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritma asimetris.
b. Karena kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem real time
Kelemahan kunci simetris:
a. Untuk tiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan kunci yang
berbeda juga, sehingga akan terjadi kesulitan dalam manajemen kunci tersebut.

Universitas Sumatera Utara


9
b. Permasalahan dalam pengiriman kunci itu sendiri yang disebut “key distribution
problem” .
2.2.2 Algoritma Asimetris
Algoritma asimetris adalah sebuah teknik enkripsi yang menggunakan dua kunci yang
berbeda, yaitu kunci publik untuk proses enkripsi dan kunci privat untuk proses dekripsi
(Ayushi, 2010).
1. Kunci umum (public key), kunci yang boleh semua orang tahu (dipublikasikan)
2. Kunci rahasia (private key), kunci yang dirahasiakan ( hanya boleh satu orang yang
tahu ).
Dengan

kunci

mendekripsikanya,

publik,

hanya


orang

orang

dapat

yang

mengenkripsi

memilikki

kunci

tetapi

tidak

dapat


privat

yang

dapat

mendekripsikannya.Beberapa algoritma yang menggunakan asimetri adalah DSA, RSA,
DH, ECC, Kriptografi Quantum, dan lain sebagainya.

Gambar 2.3 : Skema Kunci Asimetris (Heriyanto, 1999).

Kelebihan kunci asimetris:
a. Masalah keamanan pada distribusi kunci dapat lebih baik
b. Masalah manajemen kunci yang lebih baik karena jumlah kunci yang lebih
sedikit, maksudnya untuk berkorespondensi secara rahasia dengan banyak pihak
tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat
dua buah kunci (disebut public-key) bagi para koresponden untuk mengenkripsi
pesan, dan private-key untuk mendekripsi pesan.
Kelemahan kunci asimetris:
a. Kecepatan yang lebih rendah bila dibandingkan dengan algoritma simetris


Universitas Sumatera Utara

10
b. Untuk tingkat keamanan sama, kunci yang digunakan lebih panjang
dibandingkan dengan algoritma simetris.

2.3.

Teori Bilangan

2.3.1. Operator Logika XOR
Operator logika Xor akan menghasilkan niilai True jika ekspresi di sebelah kiri Xor
berbeda dengan ekspresi di sebelah kanannya. Jadi, operator logika Xor dapat diartikan
“jika beda” akan bernilai True. Tabel hasil ekspresi logika Xor adalah sebagai berikut ini
Tabel 2.1. Tabel Operasi Logika Xor (Alam, 2005).
Ekspresi
False Xor False
FalseXor True
True Xor False

TrueXor True

Hasil
False
True
True
False

2.3.2. Faktor Persekutuan Terbesar
Faktor persekutuan Terbesar atau Greatest Common Divisor (GCD) merupakan bilangan
bulat terbesar yang merupakan pembagi yang sama dari dua bilangan bulat. Misalkan
adan b adalah dua bilangan bulat yang tidak nol. Greatest Common Divisor (GCD) dari a
dan b adalah bilangan bulat terbesar c sedemikian sehingga c|a dan c|b. Greatest
Common Divisor (GCD) dari a dan b dapat dinotasikan dengan GCD(�, b) (Munir,
2003).
2.3.3. Euclid
Salah satu cara untuk mendapatkan GCD(�, b) adalah membuat daftar semua faktor dari
�, membuat daftar semua dari b, dan kemudian mencari faktor yang terbesar yang ada
dalam kedua daftar. Akan tetapi, untuk bilangan yang sangat besar, membuat daftar
faktor bukanlah sesuatu yang mudah. Ada cara yang jauh lebih efisien untuk

mendapatkan GCD(�, b) yaitu dengan menggunakan algoritma Euclid (Eulidean
algorithm), yang seperti halnya dengan Chinese Remainder Theorem merupakan
algoritma penting yang berusia lebih dari 2000 tahun (Kromodimoeljo, 2010).
Contoh :
GCD(50, 20) adalah :
50 mod 20 = 10
20 mod 10 = 0

Universitas Sumatera Utara

11
Karena telah menghasilkan sisa pembagian sama dengan 0, maka proses berakhir dan
didapatlah GCD(50, 20) = 10.

2.3.4. Algoritma Euclid dan Extended Euclid
Teorema yang digunakan sebagai dasar dari algortima Euclid adalah sebagai berikut:
Jika � = qb + r

1.

maka

GCD(�, b) = GCD(b, r)………….……(1)

Algoritma Euclid menggunakan rumus di atas secara berulang untuk mendapatkan GCD,
yaitu dengan memperkecil kedua bilangan yang dijadikan patokan untuk GCD setiap kali
mengulang, tanpa merubah nilai GCD itu sendiri.Hasil dari komputasi GCD di dapat saat
kedua patokan untuk GCD tidak dapat diperkecil lagi.
Untuk melakukan komputasi d = GCD(�, b), pertama dilakukan preprocessing
sebagai berikut :
Jika � = 0 maka d = |b| dan jika b = 0 maka d = |�| (GCDtidak dapat dikomputasi jika �
= b = 0).

2.

Karena GCD(�, b) = GCD(-�, b) = GCD(�, -b) = GCD(-�, -b), kita dapat
mentransformasikan komputasi menjadi d = GCD(|�|, |b|), jadi kedua bilangan menjadi
positif.

3.

Karena GCD(�, b) = GCD(b,�), kita dapat saling tukar � dan b jika �b.

4. Jika � = b maka d = �.

Setelah preprocessing, jika � ≠ 0, b≠ 0, � ≠b, maka komputasi sudah dirubah menjadi
d = GCD(�, b) dengan �>b >0 (Kromodimoeljo, 2010).

2.4 Algoritma Blowfish

Blowfish adalah algoritma kunci simetri, yang berarti menggunakan kunci yang sama untuk
melakukan enkripsi dan dekripsi file. Blowfish juga merupakan cipher block, yang berarti selama
proses enkripsi dan dekripsi, Blowfish akan membagi pesan menjadi blok-blok dengan ukuran
yang sama panjang. Panjang blok untuk algoritma Blowfish adalah 64-bit. Pesan yang bukan
merupakan kelipatan delapan byte akan ditambahkan bit-bit tambahan (padding) sehingga
ukuran untuk tiap blok sama.
Algoritma dalam Blowfish terbagi menjadi dua bagiian, yaitu key expansion dan data
encryption.
Proses key expansion akan melakukan konversi sebuah kuci mulai dari 56 byte sampai
beberapa array subkunci dengan total mencapai 4168 byte. Proses data encryptionterjadi pada

Universitas Sumatera Utara

12
jaringan feistel, mengandung fungsi pengulangan sederhana sebanyak enam belas kali. Setiap
iterasi, terdiri dari sebuah perutasi yang tidak bergantung pada kunci dan sebuah subsitusi yang
tidak bergantung pada data dan kunci. Semua operasi merupakan penambahan dan XOR pada
word 32-bit. Operasi penambahan yang dilakukan hanya merupakan empat indeks array data
lookup pada setiap iterasi.

2.4.1 Langkah kerja Blowfish
A. Proses Ekspansi Kunci
1. Inisialisasi P-array yang pertama dan juga empat S-box, berututan, dengan string
yang telah pasti.String tersebut terdiri dari digit-digit heksadesimal dari phi, tidak
termasuk angka tiga di awal.
Contoh :
P1= 0x243f6a88
P2= 0x85a308d3
P3= 0x13198a2e
P4= 0x03707344
dan seterusnya sampai dengan P18.
2. XOR-kan P1 dengan 32-bit awal kunci, XOR-kan P2 dengan 32-bit berikutnya dari
kunci, dan seterusnya untuk semua bit kunci. Jika panjang kunci ternyata kurang dari
jumlah Pbox, maka siklus perhitungan akan diulangi hingga semua P ter-XOR-kan.
3. Enkripsikan string yang seluruhnya nol (all-zero string) dengan algoritma Blowfish,
menggunakan subkunci yang telah didekripsikan pada langkah 1 dan 2.
4. Gantikan P1 dan P2 dengan keluaran dari langkah 3
5. Enkripsikan keluaran langkah 3 menggunakan algoritma Blowfish dengan subkunci
yang telah dimodifikasi.
6. Gantikan P3 dan P4 dengan keluaran dari langkah 5.
7. Lanjutkan langkah-langkah di atas, gantikan seluruh elemen P-array dan kemudian
keempat S-box secara berurutan, dengan hasil keluaran algoritma Blowfish yang
terus-menerus berubah.

Universitas Sumatera Utara

13
B. Proses Enkripsi
1. Berdasarkan metode enkripsi Blowfish, untuk langkah awal yaitu file inputan atau file
soal akan dirubah menjadi binary. Proses enkripsi dan dekripsi Blowfish dilakukan
dengan pemecahan file menjadi per 64 bit. Dan kemudian 64 bit ini diinisialkan “x”.
2. Masukan data “x” 64 bit ini kemudian dipecah menjadi dua bagian yang disebut
dengan XR (X Right) dan XL (X Left) masing-masing 32 bit.
3. Menurut buku “Pengantar Ilmu Kriptografi” karangan Dony Ariyus [9], proses
enkripsi maupun dekripsi dilakukan dengan iterasi fungsi sederhana sebanyak 16 kali.
Berikut rumus enkripsi :
XL = XL XOR p[i]
XR = F(XL) XOR XR
Tukar XL dan XR
Dimana rumus F adalah F(XL) = ((S[1,a] + S2[2,b] mod 232) XOR S[3,c]) + S[4,d]
4. Setelah iterasi ke-16, tukar XL dan XR lagi untuk melakukan pembatalan penukaran
terakhir.
5. Dari semua langkah di atas, langkah terakhir adalah kembali menggabungkan XR dan
XL untuk mendapatkan cipherteks.
Proses enkripsi dengan algoritma Blowfish ini dapat digambarkan melalui bagan
di bawah ini :

Universitas Sumatera Utara

14

Gambar 2.4 : Alur Proses Enkripsi Blowfish
6. Untuk Proses Dekripsi, langkah sama persis dengan proses enkripsi, hanya saja
urutan Pbox digunakan dengan urutan terbalik.

2.5. Citra
Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek.Citra sebagai
keluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog berupa
sinyal-sinyal video seperti gambar pada monitor televisi, atau bersifat digital yang dapat
langsung disimpan pada suatu media penyimpanan (Sutoyo et al. 2009).
Citra tidak sama dengan teks yang hanya memberikan informasi secara jelas dengan katakata yang dipaparkan. Citra memberikan informasi dengan memberikan gambaran visual dan
terkadang informasi yang diberikan dapat memacu imajinasi dari orang yang melihat citra
tersebut.
Citra merupakan keluaran dari suatu sistem perekaman data yang bersifat optik, analog
ataupun digital. Perekaman data citra dapat dibagi menjadi dua yaitu:
1. Citra Analog

Universitas Sumatera Utara

15
Citra analog adalah citra yang bersifat kontinu, seperti gambar pada monitor
televisi, foto sinar-X, foto yang tercetak di kertas foto, lukisan , pemandangan alam,
hasil CT scan, gambar-gambar yang terekam pada pita kaset, dan lain sebaginya
(Sutoyo et al. 2009).
2. Citra Digital
Citra digital adalah citra yang dapat diolah oleh komputer (Sutoyo et al.
2009).Citra digital terdiri dari sinyal-sinyal yang dapat dibedakan dan mempunyai
fungsi yang tidak kontinu yakni berupa titik-titik warna pembentuk citra.Hasil
perekaman citra digital dapat disimpan pada suatu media magnetik (Handriyati,
2013).
Citra digital adalah citra yang terdiri dari sinyal-sinyal frekuensi elektromagnetis
yang sudah di-sampling sehingga dapat ditentukan ukuran titik gambar tersebut yang
pada umumnya disebut piksel (Santi, 2010).
Secara umum, pengolahan citra digital menunjuk pada pemrosesan gambar dua
dimensi menggunakan komputer.Dalam konteks yang lebih luas, pengolahan citra
digital mengacu pada pemrosesan setiap data dua dimensi. Citra digital merupakan
sebuah larik (array) yang berisi nilai-nilai real maupun komplek yang
direpresentasikan dengan deretan bit tertentu (Handriyati, 2013).
Suatu citra dapat didefinisikan sebagai fungsi f(x,y) berukuran M baris dan N
kolom, dengan x dan y adalah koordinat spasial, dan amplitudo f di titik koordinat
(x,y) dinamakan intensitas atau tingkat keabuan dari citra pada titik tersebut. Apabila
nilai x,y, dan nilai amplitudo f secara keseluruhan berhingga (finite) dan bernilai
diskrit maka dapat dikatakan bahwa citra tersebut adalah citra digital (Handriyati,
2013). Gambar 2.5 menunjukkan posisi koordinat citra digital.

Gambar 2.5. Posisi koordinat citra digital
2.5.1

Jenis-jenis Citra Digital

Ada banyak cara untuk menyimpan citra digital di dalam memori. Cara penyimpanan
menentukan jenis citra digital yang terbentuk. Beberapa jenis citra digital yang sering
digunakan adalah citra biner, citra grayscale dan citra warna(Abdul, 2013).

Universitas Sumatera Utara

16
2.5.1.1 Citra Biner
Citra biner merupakan citra yang telah melalui proses pemisahan pixelpixelberdasarkan derajat keabuan yang dimiliki. Citra biner adalah citra yang hanya
direpresentasikan nilai tiap pixel-nya dalam satu bit (satu nilai binary). Citra biner
adalah citra digital yang hanya memiliki dua kemungkinan nilai pixel yaitu hitam dan putih.
Salah satu contoh dari gambar biner dapat dilihat pada Gambar 1. Dibutuhkan satu bit
dimemori untuk menyimpan kedua warna ini. Setiap pixel pada citra bernilai 0 untuk
warna hitam dan 1 untuk warna putih [] (Abdul kadir, 2013).

Gambar 2.6 Citra Biner
2.5.1.2. Citra Grayscale
Citra grayscale menggunakan warna tingkatan keabuan. Warna abu-abu merupakan
satu-satunya warna pada ruang RGB dengan komponen merah, hijau, dan biru yang
mempunyai nilai intensitas yang sama. Citra grayscale memiliki kedalaman warna 8 bit
(256 kombinasi warna keabuan). Salah satu contoh gambar dari citra grayscaledapat
dilihat pada Gambar 2.7. Banyaknya warna yang ada tergantung pada jumlah bit yang
disediakan di memori untuk menampung kebutuhan warna ini (Darma, 2010).

Gambar 2.7 Citra Grayscale
2.5.1.3. Citra Warna
Citra berwarna, atau biasa dinamakan citra RGB, merupakan jenis citra yang
menyajikan warna dalam bentuk komponen R (red), G (green), dan B (blue). Setiap
komponen warna menggunakan 8 bit (nilainya berkisar antara 0 sampai dengan 255).

Universitas Sumatera Utara

17
Dengan demikian, kemungkinan warna yang bisa disajikan mencapai 255 x 255 x 255 atau
16.581.375 warna.Itu sebabnya format ini dinamakan true color karena memiliki jumlah
warna yang cukup besar.Adapun salah satu contoh dari citra RGB seperti pada Gambar 2.8
(Darma, 2010).

Gambar 2.8 Citra RGB

Universitas Sumatera Utara