• Tidak ada hasil yang ditemukan

BAB 2 LANDASAN TEORI 2.1. Kriftografi - Perancangan Perangkat Lunak Pengaman File Text Menggunakan Algoritma El Gamal dan Kompresi File Tex Menggunakan Algoritma Huffman

N/A
N/A
Protected

Academic year: 2019

Membagikan "BAB 2 LANDASAN TEORI 2.1. Kriftografi - Perancangan Perangkat Lunak Pengaman File Text Menggunakan Algoritma El Gamal dan Kompresi File Tex Menggunakan Algoritma Huffman"

Copied!
11
0
0

Teks penuh

(1)

BAB 2

LANDASAN TEORI

2.1. Kriftografi

2.1.1. Definisi Kriptografi

Kriptografi (Crypthography) berasal dari bahasa Yunani yaitu dari dua suku kata Crypto dan

Graphia. Crypto artinya menyembunyikan, sedangkan graphia artinya ilmu. Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data, yang dilakukan oleh seorang Kriptographer [Ariyus, Dony. 2008].

Dalam kriptografi, setiap orang dimungkinkan untuk bebas memilih metode untuk merahasiakan pesan. Metode tersebut berbeda-beda untuk setiap pelaku kriptografi sehingga penulisan pesan rahasia mempunyai estetika tersendiri. Estetika penulisan pesan rahasia ini menjadikan kriptografi sebagai sebuah seni. Pada perkembangan selanjutnya, kriptografi dikenal sebagai disiplin ilmu yang menggunakan teknik matematika untuk keamanan informasi, seperti privasi dan autentikasi.

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi, yaitu [Schneier, Bruce. 1996]:

1. Kerahasiaan (Confidentiality)

Kerahasiaan adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.

2. Integritas Data (Data Integrity)

(2)

3. Otentikasi (Autentication)

Otentikasi adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri, dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.

4. Ketiadaan Penyangkalan (Non-repudiation).

Ketiadaan penyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman terciptanya suatu informasi oleh yang mengirimkan/membuat.

2.2. Algoritma El Gamal

El Gamal merupakan suatu sistem kriptografi asimetris, yang pertama kali ditemukan oleh Taher El Gamal pada tahun 1984. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga bisa digunakan untuk enkripsi dan dekripsi [Mollin, R. A. 2007].

2.2.1. Algoritma Membangkitan Pasangan Kunci

1. Pilih bilangan prima p ( p harus dites melalui primality test untuk membukitkan merupakan bilangan prima atau tidak, p dapat di-share di antara anggota kelompok).

2. Pilih dua buah bilangan acak, g dan x, dengan syarat g<p dan 1  x p– 2.

3. Hitung y = gx mod p [Schneier, Bruce. 1996]. Hasil dari algoritma ini:

a. Kunci public: tripel (y, g, p) b. Kunci privat: pasangan (x, p)

2.2.1.1. Algoritma Miller - Rabin

Algoritma pengujian bilangan prima ini juga disebut algoritma Selfridge-Miller-Rabin atau

(3)

probabilistik Miller-Rabin yang memiliki komputasi yang ringan dan memberikan probabilitas yang tinggi. Berikut ini adalah algoritma Miller-Rabin (Cormen, et al. 2009).

Langkah 1: Pilih bilangan yang ingin diuji keprimaannya n, dimana n≥3 dan n

merupakan bilangan ganjil (nmod 2 ≠ 0).

Langkah 2: Hitung n-1 = u2t, dimana u adalah bilangan ganjil dan t≥1. Representasi bilangan biner dari n-1 adalah representasi biner dari bilangan ganjil u yang diikuti oleh bit 0 sebanyak t.

Langkah 3: Uji n yang akan diperiksa keprimaannya dengan bilangan integer

sembarang a, dimana 2≤an-1 sebanyak s kali. Jika pengujian sudah

sampai s kali, maka lanjutkan ke Langkah 6.

Langkah 4: Hitung ≡au (mod n).

Langkah 5: Hitung sebanyak t kali dimana 1≤it. Jika , 1 (mod n) dan ≢n-1 maka hentikan

algoritma dengan menyatakan n adalah bilangan komposit. Selain dari itu, maka lanjut ke Langkah 3.

Langkah 6: Jika , maka hentikan algoritma dengan menyatakan n

adalah bilangan komposit. Jika tidak, maka hentikan algoritma dan nyatakan n adalah kemungkinan bilangan prima.

Contoh :

Langkah 1: misalnya bilangan prima n = 11 Langkah 2: n-1 = u2t

11 – 1 = u2¹

10 = u2 2u = 10

u = 5

Langkah 3: misalkan a = 4 Langkah 4: ≡au (mod n)

mod n = au

mod n = 45

mod n = 1024

= 1024 mod 11

= 1

(4)

2.2.2. Enkripsi El Gamal

Berikut adalah langkah mengenkripsi sebuah pesan pada algoritma El Gamal [Munir, Rinaldi. 2006],

1. Susun plainteks menjadi blok-blok m1, m2, …, (nilai setiap blok di dalam selang [0, p– 1].

2. Pilih bilangan acak k, yang dalam hal ini 1  k p– 2.

3. Setiap blok m dienkripsi dengan rumus [Munir, Rinaldi. 2006]:

a = gk mod p

b = ykm mod p

Pasangan a dan b adalah cipherteks untuk blok pesan m. Jadi, ukuran cipherteks dua kali ukuran plainteksnya [Munir, Rinaldi. 2006].

2.2.3. Dekripsi El Gamal

Berikut ini adalah langkah-langkah dalam mendekripsi sebuah pesan plaintext dengan menggunakan algoritma El Gamal [Munir, Rinaldi. 2006],

1. Gunakan kunci privat x untuk menghitung (ax)– 1 = ap – 1 – x mod p

2. Hitung plainteks m dengan persamaan [Munir, Rinaldi. 2006]:

m = b/ax mod p = b (ax)– 1 mod p

2.2.4. Contoh Cara Kerja El Gamal

Berikut ini ada contoh cara kerja El Gamal dalam mengenkripsi dan mendekripsi sebuah pesan, sebagai berikut:

p = bilangan prima k = bilangan acak m = plaintext a dan b = chiperteks

x = bilangan acak Misal p = 2357, g = 2 dan x = 1751.

Hitung: y = gx mod p = 21751 mod 2357 = 1185 Hasil: Kunci public: (y = 1185, g = 2, p = 2357)

Kunci privat: (x = 1751, p = 2357).

(5)

Bob menghitung

a = gk mod p = 21520 mod 2357 = 1430

b = ykm mod p= 11851520 (2035) mod 2357 = 697

Jadi, cipherteks yang dihasilkan adalah (1430, 697). Bob mengirim cipherteks ini ke Alice, oleh alice 1/ax = (ax)– 1 = a p – 1 – x mod p = 1430605 mod 2357 = 872

m = b/ax % p = 697 (872) mod 2357 = 2035

2.3. Algoritma Huffman

Algoritma Huffman adalah salah satu algoritma kompresi. Algoritma huffman merupakan

algoritma yang paling terkenal untuk mengompres teks. Terdapat tiga fase dalam menggunakan algoritma Huffman untuk mengompres sebuah teks, pertama adalah fase pembentukan pohon Huffman, kedua fase encoding dan ketiga fase decoding. Pengkodean Huffman adalah teknik untuk mengompresi data. Algoritma greedy Huffman melihat terjadinya masing-masing karakter dan sebagai string biner secara optimal Huffman coding

adalah bentuk coding statistik yang mencoba untuk mengurangi jumlah bit yang diperlukan untuk merepresentasikan string dari simbol [Mathur, M. K., Loonker, S. & Saxena, D. 2012].

Prinsip yang digunakan oleh algoritma Huffman adalah karakter yang sering muncul di-encoding dengan rangkaian bit yang pendek dan karakter yang jarang muncul di-encoding

dengan rangkaian bit yang lebih panjang. Teknik kompresi algoritma Huffman mampu memberikan penghematan pemakaian memori sampai 30%. Algoritma Huffman mempunyai kompleksitas O (n log n) untuk himpunan dengan n karakter. Algoritma Huffman, yang dibuat oleh seorang mahasiswa MIT bernama David Huffman pada tahun 1952, merupakan salah satu metode paling lama dan paling terkenal dalam kompresi teks. Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan kode Morse, yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit, dimana karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dan karakter yang jarang muncul dikodekan dengan rangkaian bit yang lebih panjang [Mathur, M. K., Loonker, S. & Saxena,

D. 2012].

(6)

kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan ditransmisikan. Sedangkan berdasarkan teknik pengkodean simbol yang digunakan, algoritma Huffman menggunakan metode symbolwise. Metode symbolwise adalah metode yang menghitung peluang kemunculan dari setiap simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang jarang muncul.

Metode Huffman Dinamis merupakan kelanjutan dari metode Huffman statis dengan menambah atau mengurangi suatu proses tertentu pada metode Huffman statis. Ide dasar dari metode ini adalah meringkas tahapan metode Huffman tanpa perlu menghitung jumlah karakter keseluruhan dalam membangun pohon biner.

Metode Huffman dinamis adalah suatu metode dengan kemungkinan kemunculan dari setiap simbol tidak dapat ditentukan dengan pasti selama pengkodean. Hal ini disebabkan oleh perubahan pengkodean secara dinamis berdasarkan frekuensi dari simbol yang telah diolah sebelumnya. Metode ini dikembangkan oleh trio Faller, Gallager dan Knuth, kemudian dikembangkan lebih lanjut oleh Vitter [Merdiyan, Meckah dan Wawan Indarto, 2007].

2.3.1. Kompresi Data

Kompresi data dalam bidang ilmu komputer, ilmu pengetahuan dan seni adalah sebuah penyajian informasi kedalam bentuk yang lebih sederhana [Arizka, R. U. 2011]. Kompresi data dapat diartikan juga sebagai proses yang dapat mengubah sebuah aliran data masukan (sumber atau data asli) kedalam aliran data yang lain (keluaran atau data yang dikompresi) yang memiliki ukuran yang lebih kecil.

Metode kompresi data dapat dikelompokkan dalam dua kelompok besar yaitu metode lossless

dan metode lossy yaitu: 1. Metode lossless

Pada teknik ini tidak ada kehilangan informasi. Jika data dikompresi secara lossless, data asli dapat direkonstruksi kembali sama persis dari data yang telah dikompresikan, dengan kata lain data asli tetap sama sebelum dan sesudah kompresi. Secara umum teknik

lossless digunakan untuk penerapan yang tidak bisa mentoleransi setiap perbedaan antara data asli dan data yang telah direkonstruksi. Data berbentuk tulisan misalnya file teks, harus dikompres menggunakan teknik lossless, karena kehilangan sebuah karakter saja dapat mengakibatkan kesalahpahaman. Lossless compression disebut juga dengan

(7)

-metode ini adalah Shannon-Fano Coding, Huffman Coding, Arithmetic Coding, Run Length Encoding dan lain sebagainya [Arizka, R. U. 2011].

2. Metode lossy

Pada teknik ini akan terjadi kehilangan sebagian informasi. Data yang telah dimanfaatkan dengan teknik ini secara umum tidak bisa direkonstruksi sama persis dari data aslinya. Di dalam banyak penerapan, rekonstruksi yang tepat bukan suatu masalah.

Sebagai contoh, ketika sebuah sample suara ditransmisikan, nilai eksak dari setiap

sample suara belum tentu diperlukan, tergantung pada yang memerlukan kualitas suara yang direkonstruksi, sehingga banyaknya jumlah informasi yang hilang di sekitar nilai dari setiap

sample dapat ditoleransi. Biasanya teknik ini membuang bagian-bagian data yang sebenarnya tidak begitu berguna, tidak begitu dirasakan, tidak begitu dilihat sehingga manusia masih beranggapan bahwa data tersebut masih bisa digunakan walaupun sudah dikompresi, misalnya pada gambar dan MP3, contoh metode ini adalah Transform Coding, Wavelet, dan lain-lain. Lossy compression disebut juga irreversible compression karena data asli mustahil untuk dikembalikan seperti semula. Kelebihan teknik ini adalah rasio kompresi yang tinggi dibanding metode lossless.

Keuntungan dari metode lossy atas lossless adalah dalam beberapa kasus metode lossy

menghasilkan file kompresi yang lebih kecil dibandingkan dengan metode lossless. Metode

lossy sering digunakan untuk mengkompresi suara, gambar dan video karena data tersebut dimaksudkan kepada human interpretation dimana pikiran dapat dengan mudah “mengisi

bagian-bagian yang kosong” atau melihat kesalahan yang sangat kecil atau inkonsistensi. Sedangkan lossless digunakan untuk mengkompresi data untuk diterima ditujuan dalam kondisi asli seperti dokumen teks. Lossy akan mengalami generation loss pada data sedangkan pada lossless tidak terjadi karena data yang hasil dekompresi sama dengan data asli.

2.3.2. Dekompresi

(8)

tersebut, jadi isi dari file sudah tertulis oleh catatan header sehingga hanya tinggal menuliskan kembali pada saat proses dekompresi.

Secara umum proses kompresi dan dekompresi lossless dapat dilihat pada gambar 2.1.

Kompresi Dekompresi

Gambar 2.1 Alur Teknik lossless Kompresi-Dekompresi Data

2.3.3. Pembentukan Pohon Huffman

Kode Huffman pada dasarnya merupakan kode prefiks (prefix code). Kode prefiks adalah himpunan yang berisi sekumpulan kode biner, dimana pada kode prefik ini tidak ada kode biner yang menjadi awal bagi kode biner yang lain. Kode prefiks biasanya direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk cabang kiri pada pohon biner diberi label 0, sedangkan pada cabang kanan pada pohon biner diberi label 1. Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke daun merupakan kode prefiks untuk karakter yang berpadanan. Pohon biner ini biasa disebut pohon Huffman.

Langkah-langkah pembentukan pohon Huffman adalah sebagai berikut:

1. Baca semua karakter di dalam teks untuk menghitung frekuensi kemunculan setiap karakter. Setiap karakter penyusun teks dinyatakan sebagai pohon bersimpul tunggal. Setiap simpul di-assign dengan frekuensi kemunculan karakter tersebut.

2. Terapkan strategi algoritma greedy sebagai berikut: gabungkan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar. Setelah digabungkan akar tersebut akan mempunyai frekuensi yang merupakan jumlah dari frekuensi dua buah pohon-pohon

penyusunnya.

3. Ulangi langkah 2 sampai hanya tersisa satu buah pohon Huffman, agar pemilihan dua pohon yang akan digabungkan berlangsung cepat, maka semua yang ada selalu terurut menaik berdasarkan frekuensi.

Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA” membutuhkan representasi

7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai berikut: Data Asli

(.txt, .doc)

(9)

A = 01000001 B = 01000010 A = 01000001 C = 01000011 C = 01000011 D = 01000100 A = 01000001

Pada string di atas, frekuensi kemunculan A = 3, B = 1, C = 2, dan D = 1,

Gambar 2.2 Pohon Huffman untuk Karakter “ABACCDA”

2.3.4. Proses Encoding

Encoding adalah cara menyusun string biner dari teks yang ada. Proses encoding untuk satu karakter dimulai dengan membuat pohon Huffman terlebih dahulu. Setelah itu, kode untuk satu karakter dibuat dengan menyusun nama string biner yang dibaca dari akar sampai ke daun pohon Huffman.

(10)

2. Mulai dari akar, baca setiap bit yang ada pada cabang yang bersesuaian sampai ketemu daun dimana karakter itu berada

3. Ulangi langkah 2 sampai seluruh karakter di encoding

Sebagai contoh kita dapat melihat tabel dibawah ini, yang merupakan hasil encoding

untuk pohon Huffman pada tabel 2.1.

Tabel 2.1 Kode Huffman untuk Karakter “ABCD”

Karakter String Biner Huffman

A 0

B 110

C 10

D 111

2.3.5. Proses Decoding

Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun kembali data dari

string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan dengan dua cara, yang pertama dengan menggunakan pohon Huffman dan yang kedua dengan menggunakan tabel kode Huffman.

Langkah-langkah men -decoding suatu string biner dengan menggunakan pohon Huffman adalah sebagai berikut:

1. Baca sebuah bit dari string biner. 2. Mulai dari akar.

3. Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian. 4. Ulangi langkah 1, 2 dan 3 sampai bertemu daun. Kodekan rangkaian bit yang telah

dibaca dengan karakter di daun.

(11)

Gambar 2.3 Proses Decoding dengan Menggunakan Pohon Huffman

Setelah kita telusuri dari akar, maka kita akan menemukan bahwa string yang mempunyai kode Huffman “111” adalah karakter D.

Cara yang kedua adalah dengan menggunakan tabel kode Huffman. Sebagai contoh kita akan menggunakan kode Huffman pada Tabel 1 untuk merepresentasikan string

“ABACCDA”. Dengan menggunakan Tabel 1 string tersebut akan direpresentasikan menjadi

rangkaian bit: 0 110 0 10 10 1110. Jadi, jumlah bit yang dibutuhkan hanya 13 bit. Dari Tabel 1 tampak bahwa kode untuk sebuah simbol/karakter tidak boleh menjadi awalan dari kode simbol yang lain guna menghindari keraguan (ambiguitas) dalam proses dekompresi atau

decoding, karena tiap kode Huffman yang dihasilkan unik, maka proses decoding dapat dilakukan dengan mudah. Contoh: saat membaca kode bit pertama dalam rangkaian bit

“011001010110”, yaitu bit “0”, dapat langsung disimpulkan bahwa kode bit “0” merupakan pemetaan dari simbol “A”. Kemudian baca kode bit selanjutnya, yaitu bit “1”. Tidak ada

kode Huffman “1”, lalu baca kode bit selanjutnya, sehingga menjadi “11”. Tidak ada juga

kode Huffman “11”, lalu baca lagi kode bit berikutnya, sehingga menjadi “110”. Rangkaian

kode bit “110” adalah pemetaan dari simbol “B”.

2.3.6. Kompleksitas Algoritma Huffman

Gambar

Gambar 2.2   Pohon Huffman untuk Karakter “ABACCDA”
Tabel 2.1 Kode Huffman untuk Karakter “ABCD”
Gambar 2.3 Proses Decoding dengan Menggunakan Pohon Huffman

Referensi

Dokumen terkait

2.6.1 Hipotesis nol (H0): tidak ada hubungan yang signifikan pada pengaruh bermain game online terhadap risiko gangguan mata miopi pada mahasiswa FKIK dan FTI

Dengan demikian dapat dikatakan bahwa pemanfaatan tanah desa nagari talang binjai boleh digunakan dan di manfaatkan oleh masyarakat nagari Talang Binjai untuk

pengaruh game online terhadap risiko gangguan mata miopi berat pada mahasiswa serta reaksi individu yang mengalami. miopi dan koreksi lensa

Fasa yang terbentuk semakin berkurang dengan waktu milling yang semakin

Tujuan umum dalam penyusunan makalah ini yaitu untuk mengetahui dan memahami tentang konsep dasar penyakit sindrom nefrotik dan asuhan keperawatan yang benar pada pasien dengan

The product of the pozzolanic reaction (secondary C-S-H) can incorporate alkali metal ions into their structure and reduce the alkalinity of the pore solution. At the same time, the

Kondisi lingkungan yang panas dapat menyebabkan cekaman pada tubuh sapi potong yang salah satunya akan berdampak pada peningkatan suhu rektal, frekuensi pernapasan, denyut

I ndofood Sukses Makm ur ( I NDF) akan m engerek har ga t epung t erigu karena sej ak Mei 2018 harga t epung t elah naik 10% sebagai dam pak kenaikan harga gandum di pasar global