7
BAB 2 LANDASAN TEORI
Bab 2 membahas tinjauan teoritis yang berkaitan dengan algoritma kriptografi LUC dan algoritma kompresi Goldbach Codes.
2.1 Kriptografi Informasi dalam sebuah data memiliki nilai penting, dimana isi data dari informasi tersebut harus dijaga kerahasiaannya dari pihak yang ingin melakukan pembobolan data. Berkembangnya zaman menuju era teknologi yang sangat maju, kini kriptografi telah banyak digunakan untuk pengamanan data seperti gambar, pesan, audio, berkas biner maupun dokumen.
2.1.1 Definisi kriptografi Kata-kata “cryptography”, “cryptology” dan “cryptanalysis” umunya berubah-ubah dan masing-masing dari kata tersebut memiliki makna yang berbeda. Cryptography yang awal katanya menggunakan kata “crypt”, dalam bahasa Yunani kruptos yang artinya sembunyi. Kata terakhir “graphy” mengacu pada arti tulisan. Kriptografi memiliki arti sebagai tulisan yang tersembunyi. (Batten, 2013). Secara umum, kriptografi mengacu pada bagian enkripsi untuk membangun sebuah sistem transmisi rahasia. Sistem transmisi rahasia tersebut merupakan proses enkripsi dalam kriptografi, dimana mengubah plainteks (informasi awal) menjadi cipherteks. Pada gambar 2.1 adalah proses kriptografi secara umum:
Universitas Sumatera Utara
8
Kunci
Kunci
Cipherteks Plainteks
Enkripsi
Dekrispi
Plainteks
Gambar 2.1 Urutan Proses Kriptografi (Munir, 2006)
Proses kriptografi pada umumnya, mengubah plainteks menjadi cipherteks, yang mana hasil dari cipherteks berupa simbol-simbol atau notasi angka yang tidak dapat dibaca oleh orang awam. Umunya, proses enkripsi dan dekrisp memerlukan kunci untuk menghasilkan cipherteks dan plainteks yang diinginkan. Cipherteks dapat dikembalikan menjadi tulisan awal dengan dilakukannya proses dekripsi.
2.1.2 Sejarah kriptografi Secara historis ada empat kelompok orang yang berkontribusi terhadap perkembangan kriptografi, dimana mereka menggunakan kriptografi untuk menjamin kerahasiaan dalam komunikasi pesan penting, yaitu kalangan militer (termasuk intelijen dan matamata), kalangan diplomatik, dan penulis buku harian. Diantara empat kelompok ini, kalangan militer yang memberikan kontribusi paling penting karena pengiriman pesan di dalam suasana perang membutuhkan teknik enkripsi dan dekripsi yang rumit. Kriptografi mengalami perkembangan yang sangat pesat pada masa peperangan. Pada masa peperangan, terdapat tuntutan untuk menyampaikan informasi yang tidak boleh diketahui oleh musuh. Terdapat beberapa cara enkripsi pesan pada zaman perang, enkripsi yang paling sering digunakan adalah enkripsi manual yang dilakukan secara langsung oleh manusia. Namun ada beberapa negara yang melakukan enkripsi dengan menggunakan mesin. Contohnya negara Jerman dan Jepang. Penggunaan alat tersebut bertujuan untuk memudahkan proses enkripsi dan data menjadi lebih aman.
Universitas Sumatera Utara
9
Pada zaman Romawi kuno, Julius Caesar telah menggunakan teknik kriptografi yang dijuluki Caesar Cipher untuk mengirimkan pesan rahasia. Meskipun teknik yang digunakan masih belum memadai. Pada pedang dunia ke-II, pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan mesin Enigma. Mesin Enigma menggunakan beberapa buah rotor (roda berputar) untuk melakukan enkripsi dengan cara yang sangat rumit. Awalnya, pihak sekutu kesulitan untuk memecahkan kode mesin kriptografi Jerman, namun seiring berjalannya waktu pihak sekutu mempelajari mesin Enigma dan berhasil memecahkan kode tersebut. Mesin Enigma dapat dilihat pada gambr 2.2
Gambar 2.2. Mesin Enkripsi Enigma yang digunakan oleh Tentara Jerman pada Masa Perang Dunia ke-II. (Munir, 2006)
Masa depan kriptografi akan dipengaruhi oleh perkembangan matematika terutama dalam hal algoritma. Perkembangan algoritma untuk proses kriptografi sering diggunakan dalam bidang teknologi. Banyak aplikasi kriptografi yang diimplementasikan untuk memenuhi pengamanan data sebuah instansi atau perangkat telekomunikasi.
Universitas Sumatera Utara
10
2.1.3 Tujuan kriptografi Kriptografi bertujuan untuk memberikan aspek keamanan sebuah pesan atau informasi yang akan dikirim. Berikut ini aspek-aspek keamanan dalam kriptografi (Forouzan, 2007): 1. Kerahasiaan Data (Data Confidentialy) Kerahasiaan data dirancang untuk memproteksi data dari penyerangan yang ingin membuka data. 2. Integritas Data (Data Integrity) Integritas data adalah sebuah rancangan untuk memproteksi data dari modifikasi, penyisipan, penghapusan, dan orang yang tidak memiliki hak untuk membalas sebuah pesan. 3. Otentikasi (Authentication) Mengidentifikasi kebenaran sumber pesan baik dari si pengirim maupun si penerima. Dua pihak harus saling berkomunikasi untuk mengotentikasi satu sama lain sehingga ia dapat memastikan sumber pesan yang dikirim melalui saluran asalanya atau tidak. 4. Menolak Penyangkalan (Non-Repudiation) Memberikan perlindungan dengan cara penolakan sebuah data baik dari si pengirim ataupun si penerima. Dalam non-repudiation akan membuktikan apakah data tersebut orisinil, penerima data dapat membuktikan identitas dari si pengirim jika disangkal. Non-repudiaton juga membuktikan dengan bukti pengiriman, apakah pesan yang dikirim diterima langsung oleh si penerima pesan. 5. Acces Control Memberikan akses data yang tidak sah. Akses dalam istilah ini adalah sangat luas dan dapat melibatkan membaca, menulis, memodifikasi, program eksekusi dan sebagainya.
Universitas Sumatera Utara
11
2.1.4 Terminologi dan konsep dasar kriptografi Dalam ilmu kriptografi akan ditemukan beberapa istilah atau terminologi yang sangat penting untuk diketahui dalam memahami kriptografi. Oleh karena itu, penulis akan menjelaskan beberapa istilah penting dalam kriptografi yang akan sering digunakan dalam penulisan. Berikut beberapa istilah penting dalam kriptografi.
a) Plainteks dan Cipherteks Dalam memahami bidang ilmu kriptografi, sering muncul kata plainteks. Plainteks diartikan sebagai pesan awal atau pesan asli dari si pengirim yang. Umunya, plainteks merupakan sebuah pesan yang belum mengalami perubahan sama sekali. Plainteks dapat berupa teks, dokumen, video ataupun audio. Plainteks yang akan dikirim oleh si pengirim dapat diubah menjadi kode-kode, simbol ataupun angka yang tidak diketahui maknanya, istilah ini disebut sebagai cipherteks. Cipherteks adalah sebuah metode untuk merahasiakan tulisan tangan, dimana plainteks (pesan awal) diubah menjadi cipherteks. Berikut ini merupakan perbandingan antara plainteks dan cipherteks pada gambar 2.3
Gambar 2.3 Perbandingan Plainteks dan Cipherteks. (Munir, 2005).
Universitas Sumatera Utara
12
b) Sender dan Recipient Pertukaran informasi data atau pengiriman data melibatkan dua entitas, dimana adanya sender (pengirim) dan recipient (penerima). Entitas disini tidak hanya orang yang melakukan pengiriman pesan dan penerima pesan, tetapi juga dapat berupa mesin komputer, kartu kredit, dan sebagainya. Orang dapat bertukar informasi dengan orang lain, contoh Bob mengirim pesan kepada Alice. Sedangkan didalam mesin komputer seperti mesin ATM yang berkomunikasi dengan komputer server di bank. Pengirim tentu ingin mengirimkan pesan dan menyimpan pesan secara aman, ia yakin bahwa tidak ada pihak lain yang membaca pesan tersebut. Hal ini dapat dilakukan dengan melakukan proses penyandian pesan atau cipherteks.
c) Enkripsi dan Dekripsi Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi (encryption) atau enchipering (standard nama menurut ISO 7498-2). Sedangkan proses mengembalikan pesan dari cipherteks ke plainteks dinamakan dengan dekripsi
(descryption) atau dechipering (standard nama
menurut ISO 7498-2). Proses enkripsi dan dekripsi dapat diterapkan pada pesan yang dikirim ataupun pesan yang disimpan. Encryption of data in motion mengacu pada enkripsi pesan yang ditransmisikan melalui saluran komunikasi, sedangkan istilah encryption of data at-rest mengacu pada enkripsi pesan yang tersimpan di dalam storage.
d) Kriptanalis dan Kriptologi Ilmu kriptografi untuk menjaga kerahasiaan plainteks dari kriptanalis. Kriptanalis berusaha mengungkap plainteks atau kunci rahasia yang dipakai untuk plainteks. Kriptanalis juga dapat menemukan kelemahan dari sistem kriptografi yang pada
Universitas Sumatera Utara
13
akhirnya mengarah dan menemukan kunci unutk mengungkap isi plainteks (Munir, 2006). Kriptologi dapat juga diartikan sebagai seni dan ilmu untuk membuat dan memecahkan kode rahasia. Kriptologi dibagi menjadi kriptografi (seni dan ilmu membuat kode rahasia), kriptanalisis (ilmu dan seni untuk memecahkan chiperteks menjadi plainteks tanpa mengetahui kunci yang digunakan).
2.1.5 Jenis kriptografi Kriptografi berdasarkan kunci enkripsi dan dekripsinya terbagi menjadi dua, yaitu:
1. Kriptografi Simetri Kriptografi Simetri adalah Salah satu jenis algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Sistem kriptografi kunci-simetri diasumsikan sebagai pengirim dan penerima sudah memiliki kunci yang sama. (Zelvina, 2012). Keamanan Algoritma Simetri terletak pada kerahasiaan kuncinya. Contoh algoritma simetri adalah DES (Data Encryption Standar), AES (Advanced Encryption Standard), RC4, Vernam, dll. Proses enkripsi dan dekripsi algoritma simetri terdapat pada Gambar 2.4: Kunci Privat, K
Kunci Privat, K
Plainteks ,P
Enkripsi EK (P) =C
Cipherteks, C
Dekripsi
Plainteks, P
DK (C) = P
Gambar 2.4 Skema Kriptografi Simetri. Kunci Simetri Sama dengan Kunci Dekripsi, yaitu K (Munir, 2006)
Universitas Sumatera Utara
14
a. Kelebihan Kriptografi Simetri 1. Algoritma kriptografi simetri dirancang sehingga proses enkripsi/dekripsi
membutuhkan waktu yang singkat. 2. Ukuran kunci simetri relatif pendek. 3. Algoritma kriptografi simetri dapat digunakan untuk membangkitkan
bilangan acak. 4. Algorima kriptografi simetri dapat disusun untuk menghasilkan cipher
yang lebih kuat. 5. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang
diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan saja.
b. Kekurangan Kriptografi Simetri 1. Kunci simetri harus dikirim melalui saluran yang aman. Kedua entitas yang berkomunikasi harus menjaga kerahasisan kunci ini. 2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi.
2. Kriptografi Asimetri Algoritma asimetri adalah algoritma kriptografi yang enkripsi dan dekripsnya menggunakan kunci yang berbeda. Kunci enkripsi tidak bersifat rahasia atau diketahui oleh umum yang dinamakan sebagai public key (kunci public). Kunci dekripsi disimpan dan digunakan hanya untuk penerima pesan yang dinamakan sebagai kunci private key (kunci privat). Contoh Algoritma Asimetri adalah RSA (Rivest Shamir Adleman), ECC (Elliptical Curve Cryptography), Elgamal, Algoritma LUC, dan sebagainya. Dalam Gambar 2.5 memperlihatkan proses aliran enkripsi dan dekripsi.
Universitas Sumatera Utara
15
Kunci Publik, K1
Enkripsi Plainteks, P
EK1 (P) = C
Kunci Privat, K2 Cipherteks, C
Dekripsi DK2 (C) = P
Plainteks
Gambar 2.5 Skema Algoritma Asimetri (Munir, 2006)
a. Kelebihan Kriptografi Asimetri 1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomunikasi (tetapi, otentikasi kunci publik tetap harus terjamin). Tidak ada kebutuhan mengirim kunci privat sebagaimana pada sistem simetri. 2. Pasangan kunci publik/kunci privat tidak perlu diubah, bahkan dalam periode waktu yang panjang. 3. Dapat digunakan untuk mengamankan pengiriman kunci simetri. 4.
Beberapa algoritma kunci-publik dapat digunakan untuk memberi tanda tangan digital pada pesan (akan dijelaskan pada materi kuliah selanjutnya)
b. Kekurangan Kriptografi Asimetri 1.
Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri, karena enkripsi dan dekripsi menggunakan bilangan yang besar dan melibatkan operasi perpangkatan yang besar.
2.
Ukuran cipherteks lebih besar daripada plainteks (bisa dua sampai empat kali ukuran plainteks).
3.
Ukuran kunci relatif lebih besar daripada ukuran kunci simetri.
Universitas Sumatera Utara
16
4.
Karena kunci publik diketahui secara luas dan dapat digunakan setiap orang, maka cipherteks tidak memberikan informasi mengenai otentikasi pengirim.
5. Tidak ada algoritma kunci-publik yang terbukti aman (sama seperti block cipher). Kebanyakan aalgoriam mendasakan keamanannya pada sulitnya memecahkan persoalan-persoalan aritmetik (pemfaktoran, logaritmik, dsb) yang menjadi dasar pembangkitan kunci
2.2 Algoritma LUC Algoritma ini merupakan salah satu jenis algoritma asimetri. Pada sub bab ini penulis akan menjelaskan tentang Algoritma LUC beserta cara kerja algoritma LUC itu sendiri.
2.2.1
Perkembangan algoritma LUC
Pada tahun 1993, Smith dan Michael menyatakan bahwa algoritma LUC merupakan algoritma yang dijabarkan dari deret Lucas. Sehingga didapat rumus enkripsi dan dekripsi dari barisan lucas tersebut. Algoritma LUC mempunyai ciri khas dari algoritma kriptografi asimetri yang lain, dimana setiap katakter dari string berupa teks atau plainteks yang dimasukkan, lalu dikonversi kedalam bentuk bilangan dengan kode ASCII (American Standard Code for Information Interchange). Inputan file teks berupa file berecord, setip kalimat merupakan satu record. Plainteks dipecah kedalam blok berisi 2 karakter yang kemudian dilakukannya enkripsi pada tiap-tiap blok. Cipherteks yang diperoleh merupakan merupakan hasil gabungan dari blok-blok plainteks yang telah di enkripsi. Untuk proses dekripsi, tiap-tiap blok dikonversi kembali dengan kode ASCII untuk menghasilkan plainteks yang diinginkan.
Besaran-besaran yang digunakan
pada Algoritma LUC adalah:
Universitas Sumatera Utara
17
a. Bilangan prima p dan q b. Kode ASCII 255 c. Plainteks berupa file berecord d. Kunci e merupakan public key dan kunci d yang bersifat private key.
2.3 Landasan Matematika Algoritma LUC Dalam mempelajari algoritma kriptografi, sebaiknya memahami terlebih dahulu konsep-konsep dasar perhitungan matematis yang akan digunakan dalam suatu algoritma kriptografi tersebut.
2.3.1
Aritmatika modulo
Aritmatika modulo merupakan salah satu peran yang penting dalam komputasi integer, khususnya pada aplikasi kriptografi. Operator yang digunakan pada aritmatika modulo adalah mod (modulo) yang menyatakan sisa hasil pembagian. Diberikan a bilangan bulat dan m adalah bilangan bulat > 0. Operasi a mod m (dibaca ”a modulo m”) memberikan sisa yang merupakan hasil dari pembagian a dengan m. Dengan kata lain, a mod m = r , sehingga a = m.q + r, dengan 0 ≤ r < m. Dinotasikan: a mod m = r , = m.q + r, dengan 0 ≤ r < m. Sebagai contoh: Jika 11 mod 3 = 2 , maka 11 = 3(3) + 2.
2.3.2
Least Common Multiple (LCM)
Least Common Multiple (LCM) dari suatu himpunan bilangan adalah bilangan terkecil yang merupakan kelipatan dari setiap anggota himpunan itu. Juga merupakan bahasa lain dari KPK (Kelipatan Persekutuan Terkecil). Contoh, LCM dari 4 dan 6 dengan perhitungan manual dapat ditulis seperti dibawah ini:
Universitas Sumatera Utara
18
4 = 4, 8, 16, 24, 38, 32, 36, 40,… 6 = 6, 12, 18, 24, 30, 36, 42, … Kelipatan persekutuannya adalah bilangan-bilangan yang muncul pada kedua baris geometri tersebut, yakni 12, 24, dan 36. Jadi, LCM dari 4 dan 6 adalah 12.
2.3.3 Fermat’s Little Theorem Teorema Little Fermat memberikan uji yang baik untuk ketidakprimaan. Peranan penting Fermat’s Little Theorem dalam kriptografi adalah mempermudah perhitungan matematis prima sebagai dasar dari teknik enkripsi asimetris. Untuk bilangan prima (p) dan bilangan bulat (a) , a p≡ a (mod p). Di mana p adalah bilangan bulat dan a adalah urutan bilangan yang lebih kecil dari p. Jika hasilnya ≠ 1, maka p bukan bilangan prima. Sebaliknya, jika hasilnya = 1, maka p bilangan prima. Berikut ini contoh penerapan metode Fermat: a. Bila p = 6 Maka 1 ≤a< 6, didapat a = {1, 2, 3, 4, 5} a p-1mod p 16-1 mod 6 = 15 mod 6 = 1 26-1 mod 6 = 25 mod 6 = 2 36-1 mod 6 = 35 mod 6 = 3 46-1 mod 6 = 45 mod 6 = 4 56-1 mod 6 = 55 mod 6 = 5
Setelah melakukan perhitungan untuk memastikan apakah 6 bilangan prima atau tidak, ditemukan hasil ≠ 1 yaitu (2, 3, 4, 5), maka dipastikan bahwa 6 bukan merupakan bilangan prima.
b. Bila p = 7 Maka 1 ≤ a< 7, didapat a = {1, 2, 3, 4, 5, 6} a p-1mod p 1 7-1 mod 7 = 16 mod 7 = 1
Universitas Sumatera Utara
19
2 7-1 mod 7 = 26 mod 7 = 1 3 7-1 mod 7 = 36 mod 7 = 1 4 7-1 mod 7 = 46 mod 7 = 1 5 7-1 mod 7 = 56 mod 7 = 1 6 7-1 mod 7 = 66 mod 7 = 1
Hasil diatas menunjukkan perhitungan untuk memastikan apakah 7 bilangan prima atau tidak, ditemukan hasil dari semua perhitungan = 1, maka jelas bahwa 7 merupakan bilangan prima.
2.3.4. Algoritma Lehman Algoritma Lehman membagi suatu bilangan yang akan diuji, misal p dengan bilangan prima kurang dari 256 pengujian, dengan cara membangkitkaan bilangan acak a yang lebih kecil dari p dan dihitung a(p-1)/2mod p yang bernilai 1 atau -1. Berarti p berpeluang prima sebesar 50% yang apabila langkah ini dulang dan lolos sebanyak t kali, maka akan menghasilkan sebuah bilangan prima p yang mempunyai kesalahan tidak lebih dari 1/2t.
2.3.5 Algoritma Euclidean Bilangan terbesar yang mampu membagi setiap seluruh anggota himpunan bilangan tersebut dan menghasilkan bilangan bulat. Dua buah bilangan bulat a dan b , dimana salah satu dari keduanya tidak sama dengan 0, dikatakan relatif prima jika gcd(a,b) = 1. Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar (PBB) dari dua bilangan bulat. Algoritma ini didasarkan pada pernyataan bahwa ada dua buah bilangan bulat tak negatif yakni m dan n dimana nilai m ≥ n. Adapun tahaptahap pada algoritma Euclidean adalah: 1. Jika n = 0 maka m adalah PBB (m, n); stop. Kalau tidak (yaitu n ≠ 0) lanjutkan ke langkah nomor 2. 2. Bagilah m dengan n dan misalkan sisanya adalah r.
Universitas Sumatera Utara
20
3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah nomor 1.
Algoritma Euclidean dapat digunakan untuk mencari dua buah bilangan bulat yang relatif prima. Contoh: m = 80, n = 12 ; memenuhi syarat karena m ≥ n 80 = 6.12 + 8 12 = 1.8 + 4 8 = 2.4 + 0, sisa pembagi terakhir adalah 0 maka (80,12) = 4
2.3.6 Bilangan relatif prima Dua buah bilangan bulat a dan b dikatakan relatif prima jika FPB atau GCD (greatest common divisor) dari a dan b bernilai 1. Contoh : 17 dan 11 relatif prima sebab FPB (17, 11) = 1. Begitu juga 23 dan 7 relatif prima karena FPB (23, 7) = 1. Tetapi 15 dan 3 tidak relatif prima sebab FPB (15, 3) = 3 ≠ 1.
2.3.7 Invers Modulo Jika a dan m relatif prima, gcd (a, m) = 1, dan m > 1, maka dapat menemukan invers (balikan) dari a modulo m. Balikan a modulo m adalah bilangan bulat a-1 , sehingga: aa-1 ≡ 1 (mod m) Dari definisi relatif prima, diketahui bahwa gcd (a,m) = 1 sehingga terdapat bilangan bulat p dan q, sehingga pa + qm =1 yang mengimplikasikan bahwa pa + qm ≡ 1 (mod m), karena qm ≡ 0 (mod m), maka pa ≡ 1 (mod m)
Universitas Sumatera Utara
21
Sebagai contoh: karean gcd (4,9) = 1, maka invers modulo dari 4 (mod 9) ada. 9 = 2. 4 + 1 Susunan persamaan diatas menjadi: -2 . 4 + 1 . 9 = 1. Dari persamaan terakhir, diperoleh -2 merupakan invers modulo dari 4 mod 9. Periksa bahwa : -2.4 ≡ 1 (mod 9) (9 habis membagi -2. 4-1 = -9).
2.4 Prinsip Kerja Algoritma LUC
2.4.1
Proses pembangkit kunci algoritma LUC: a. Dibutuhkan nilai p dan q yang diambil secara acak, dimana p ≠ q. Jumlah p dan q tidak melebihi dua digit bilangan prima. Perkalian nilai p dan q dibutuhkan untuk mencari nilai modulus N. 1. Algoritma Kunci Publik a) Pilih dua buah bilangan prima sembarang, misal p dan q dimana p ≠ q. p = 47 q = 17 b) Hitung nilai n = p x q. n=pxq n = 47 x 17 = 799 c) Hitung t = (p-1).(q-1).(p+1).(q+1) = (47-1).(17-1).(47+1).(17+1) = (46).(16).(48).(18) = 635904
Universitas Sumatera Utara
22
d) Menentukan nilai e (bilangan relatif prima). Pilih e secara acak dimana Z < e < n-1 dan GCD (e,t) = 1 RP (p-1) = RP 46 = { 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43} RP (q-1) = RP 16 = {3, 5, 7, 11, 13} RP (p+1) = RP 48 = {3, 5, 7, 11, 13, 17, 19, 29, 31, 37, 41, 43, 47} RP (q+1) = RP 18 = {3, 5, 7, 11, 13, 17} Hasil perhitungan bilangan relatif prima diatas terdapat beberapa bilangan yang sama, yaitu {3, 5, 7, 11, 13, 17, 19, 29, 31, 37, 41, 43, 47}. Maka pilih e = 13, GCD (13, 635904) = 1. e) Hitung RN = LCM (p-1, q-1, p+1, q+1) RN = LCM (46, 16, 48, 18) = 3312 f) Hitung d sehingga mendapatkan hasil e.d mod RN = 1. Pada tabel 1 merupakan tabel perhitungan untuk mencari d. Tabel 2.1 Perhitungan Untuk Mencari d D
e.d mod RN = 1 13. d mod 3312 = 1
1
13
2
26
3
39
4
52
..2293
1 d = 2293 = 1
Universitas Sumatera Utara
23
2.4.2
Proses enkripsi
Langkah-langkah dalam mengirimkan pesan dengan menggunakan Algoritma LUC sebagai berikut: a. Dalam melakukan proses enkripsi, setiap karakter dari string berupa text atau plainteks dikonversikan kedalam kode ASCII Misal : plainteks = A Kode ASCII = 65. b. Plainteks A dengan Kode ASCII 65 c. Enkripsi dengan rumus: V [ 2…e ] = ( m. V [ i – 1] – V [ i – 2] ) mod n V[0]=2 V [ 1 ] = 65 V [ 2…e ] = ( 65. V [ i – 1] – V [ i – 2] ) mod 799 C = Ciphertext = V[ e ] = V [13] = 608.
2.4.3 Proses Dekripsi Langkah-langkah dalam melakukan proses dekripsi LUC adalah: a) Dapatkan hasil cipherteks C = Cipherteks b) Dekripsi dengan rumus bertingkat: V [0] = 2 V [1] = C = 608 V [ 2…d ] = ( C. V [ i – 1] – V [ i – 2] ) mod n
Universitas Sumatera Utara
24
V [2…d] = (608. V [ i – 1] – V [ i – 2] ) mod 799 m = V[d] m = V [2293] = 65 = “A”
2.5 Definisi Kompresi Kompresi data adalah proses yang dapat mengubah sebuah aliran data masukan (sumber data atau data asli) ke dalam aliran data yang lain yang memiliki ukuran yang lebih kecil (Salomon, 2007). Penggunaan kompresi data dapat mengurangi ukuran dari sebuah file yang sangat berguna ketika memproses, menyimpan, dan mengirim sebuah file dengan ukuran yang besar. Jika algoritma kompresi yang digunakan bekerja dengan baik, seharusnya ada perbedaan yang signifikan antara file asli dan file yang telah dikompresi. Secara garis besar terdapat 2 buah penggolongan algoritma kompresi, yaitu: 1. Kompresi Loseless Kompresi Loseless membangun kembali data asli yang sama persis dengan data yang di kompresi. Selama melakukan proses kompresi, tidak ada informasi yang hilang dari data tersebut. Contoh aplikasi lossless compression : WINRAR dan WINZIP Contoh format file lossless compression : *.zip, *.rar, document file (*.doc, *.xls, *.ppt), file executable (*.exe). Gambar dibawah ini sebagai contoh proses kompresi dan dekompresi Loseless.
Universitas Sumatera Utara
25
Pada gambar 2.6 merupakan visualisasi algoritma kompresi dan dekompresi loseless.
BBAAB
Algoritma Kompresi
0010100
0010100
Algoritma Dekompresi
BBAAB
Gambar 2.6 Proses algoritma kompresi dan dekompresi loseless
Pada contoh diatas, BBAAB dikompresi lalu menghasilkan bit angka 0010100. Hasil kompresi tersebut kemudian didekompresi kembali untuk menghasilkan data yang sama dengan data awal yaitu BBAAB. Tidak ada kekurangan data dalam proses kompresi Loseless tersebut.
2. Kompresi Lossy adalah suatu metode untuk mengkompresi data dan mendekompresinya dimana data yang dikompresi mungkin berbeda dari data aslinya, tetapi perbedaan itu cukup dekat. Metode ini paling sering digunakan untuk kompresi data multimedia (audio file dan gambar).
Gambar 2.7
dibawah ini sebagai contoh proses kompresi dan dekompresi Lossy. Algoritma Kompresi
2,78128
00001110000010
00001110000010
Algoritma Dekompresi
2,78
Gambar 2.7 Proses kompresi dan dekompresi lossy
Universitas Sumatera Utara
26
Ada beberapa angka dari bilangan 2,78128 yang tidak begitu mempunyai peranan yang penting dalam penyimpanan data, sehingga dapat hilang selama proses kompresi. Data seperti gambar, multimedia, video, dan suara akan lebih mudah dikompresi dengan menggunakan teknik kompresi lossy. Kompresi lossy tidak memungkinkan untuk membangun kembali data yang telah dikompresi sama persis dengan data yang sebelum dikompresi. Tetapi, daya seperti gambar multimedia, video, dan suara walaupun telah dikompresi dengan menggunakan teknik kompresi lossy tidak menghambat pengguna untuk melihat ataupun mendengar secara keseluruhan. Contoh aplikasi lossy compression: aplikasi pengkompres suara (mp3 compressor), gambar (adobe photoshop, paint), video (xilisoft) Contoh format file lossy compression : MP3, JPEG, MPEG
2.5.1 Algoritma kompresi Goldbach Codes Algoritma Goldbach Codes ditemukan oleh seorang matematikawan asal Prussia yang bernama Christian Goldbach. Dimana Algortima Goldbach Codes menyatakan bahwa setiap bilangan genap > 2 merupakan hasil dari dua buah bilangan prima. Seperti pada tabel 2.2 merupakan goldbach G0 Code yang berisi Codeword.
Tabel 2.2 Goldbach G0 Code N
2(n+3)
Primes
Codeword
1
8
3+5
11
2
10
3+7
101
3
12
5+7
011
4
14
3 + 11
1001
5
16
5 + 11
0101
6
18
7 + 11
0011
Universitas Sumatera Utara
27
7
20
7 + 13
00101
8
22
5 + 17
010001
9
24
11 + 13
00011
Tabel diatas merupakan angka-angka yang sudah diubah ke dalam Codeword. Pilih salah satu angka genap pada table Goldbach G0 Codes, misal 20. Angka 20 merupakan penjumlahan dua bilangan prima, yaitu 7 + 13, yang mana dalam Codeword adalah 00101. Dimana setiap bit disusun dari kiri ke kanan berdasarkan urutan yang telah di tetapkan, 13, 11, 7, 5 dan 3. Seperti pada Tabel 3 yang merupakan contoh angka yang akan dimasukkan kedalam Goldbach G0 Codes. Contoh: String = “375” , |string| = 3 ∑ ( karakter yang berbeda dalam string) = {375} ∑=3 Setelah mendapatkan ∑ ( karakter yang berbeda dalam string), selanjutnya ∑ dimasukkan ke dalam ASCII seperti tabel 2.3 dibawah ini.
Tabel 2.3 String diubah kedalam ASCII Char
ASCII Code
ASCII Bin
Bit
Freq
Bit x Freq
3
51
00110011
8
1
8
7
55
00110111
8
1
8
5
53
00110101
8
1
8 Jumlah = 24
Lalu string juga diubah kedalam Goldbach G0 Codes. Pada tabel 2.4 string diubah kedalam Goldbach Codes.
Universitas Sumatera Utara
28
Tabel 2.4 String diubah kedalam Goldbach G0 Codes. Char
Freq
N
2(n+3)
Prime
Goldbach
Bit
G0 Codes
Bit
x
Freq
3
1
1
2(1+3)
8
11
2
2
7
1
1
2(1+3)
8
11
2
2
5
1
1
2(1+3)
8
11
2
2
Jumlah = 6 Maka kompresi untuk 375 adalah 111111 Dekompresi 3
7
5
11 11 11
2.5.2 Konsep kompresi data Untuk proses kompresi menggunakan Goldbach Codes kita merujuk pada Tabel 2.5.1, Dimana Goldbach Codes, proses kompresi sendiri didasarkan pada bahwa isi file akan dibaca secara per byte (8 bit) sehingga menghasilkan nilai pembacaan antara 0 hingga 255. Suatu metode pada kompresi data akan menghasilkan bit-bit (satuan terkecil pembentuk data) data baru yang lebih pendek dibandingkan oleh bit-bit data sebelum dikompresi. Bit-bit data yang lebih pendek tersebut biasanya tidak akan bisa dibaca oleh komputer sebelum dilakukan proses encoding. Pada proses encoding bit-bit data tersebut di-encode setiap delapan bitnya sehingga membentuk satu karakter yang dapat dibaca oleh komputer. Begitu juga sebaliknya, pada saat dekompresi bit-bit data tersebut di-decode kembali agar membentuk bit-bit data semula yang akan digunakan dalam proses dekompresi. Karena pada saat proses dekompresi dibutuhkan bit-bit data sebelum di Encode untuk dapat dibaca kembali dalam proses dekompresi.Didalam komputer satu
Universitas Sumatera Utara
29
karakter direpresentasikan oleh bilangan ASCII (American Standard Code For Information Interchange) sebanyak delapan bit dalam bilangan biner. Jika ternyata jumlah bit-bit data tersebut bukan merupakan kelipatan delapan. Maka dibentuk variabel baru sebagai penambahan ke bit-bit data itu agar bit-bit data tersebut habis dibagi delapan. Variabel ini adalah padding dan flagging
1. Padding Padding adalah penambahan bit 0 sebanyak kekurangan jumlah bit-bit data pada hasil proses kompresi sehingga jumlah keseluruhan bit-bit data tersebut merupakan kelipatan delapan (habis dibagi delapan). Contoh misalkan dihasilkan bit-bit data hasil kompresi yaitu 1001011. Terdapat 7 bit data dalam bilangan biner. Maka dilakukan penambahan bit 0 sebanyak 1 kali agar jumlah bit-bit data tersebut habis dibagi delapan. Sehingga bit-bit data itu menjadi 10010110 setelah diberikan padding. Contoh Padding: Pada hasil kompresi Goldbach dengan string 375 adalah 111111, terdapat 6 bit data dalam bilanngan biner. Lalu, dilakukan penambahan bit 0 sebanyak dua kali 11111100 agar bit data tersebut habis dibagi delapan.
2. Flagging Flagging adalah penambahan bilangan biner sepanjang delapan bit setelah padding dimana flagging ini adalah sejumlah bilangan yang memberikan sebuah tanda bahwa terdapat n buah padding di dalam bit-bit data hasil dari kompresi. Penambahan flagging ini dimaksudkan untuk mempermudah dalam membaca bit-bit data hasil kompresi pada saat proses dekompresi. Contoh misalkan bit-bit data yang telah diberikan padding adalah 11111100. Karena terdapat 2 bit penambahan padding maka flag nya adalah bilangan biner dari 2 dengan panjang 8 bit yaitu 00000001. Sehingga bit-bit datanya menjadi 1111110000110010 setelah diberikan flagging.
Universitas Sumatera Utara
30
2.5.3. Pengukuran kinerja kompresi data Pada tahap kompresi data, terdapat beberapa faktor atau variable yang biasa digunakan untuk mengukur kualitas dari suatu teknik kompresi data, diantaranya adalah: a. Ratio of Compression (Rc) Ratio of Compression merupakan hasil perbandingan antara ukuran fiile yang telah dikompresi dengan file yang belum di kompresi.
= =4
b. Compression Ratio (Cr) Compression Ratio (Cr) adalah persentasi besar data yang telah dikompresi yang didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran data sebelum dikompresi. x 100%
=
X 100%
= 0,25 %
c. Redundancy (Rd) Redundancy (Rd) adalah kelebihan yang terdapat di dalam data sebelum dilakukannya proses kompresi. Dihitung Redundancy data dengan cara persentasi dari hasil selisih antara ukuran data sebelum dikompresi dengan data setelah dikompresi.
Universitas Sumatera Utara
31
Rd = 100% - Cr = 100% - 0,25% = 99,75 %
d. Space Saving (SS) Space Saving adalah persentase selisih antara data yang belum dikompresi dengan besar data yang dikompresi. SS = 1 - Cr = 1 – 0,25% = 0.7
Universitas Sumatera Utara