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