Implementasi Algoritma Elias Delta dan Algoritma ElGamal Dalam Kompresi dan Pengamanan Citra
7
BAB 2
LANDASAN TEORI
Bab ini akan membahas tinjauan teoritis yang berkaitan dengan algoritma kompresi
Elias Delta Code dan algoritma kriptografi ElGamal.
2.1 Kompresi
2.1.1. Definisi Kompresi
Kompresi data adalah ilmu atau seni yang merepresentasikan informasi dalam bentuk
yang lebih compact. Istilah kompresi tersebut diterjemahkan dari kata bahasa Inggris
“compression” yang berarti pemampatan. Dalam bidang teknik, kompresi berarti proses
memampatkan sesuatu yang berukuran besar sehingga menjadi kecil. Dengan demikian,
kompresi data berarti proses untuk memampatkan data agar ukurannya menjadi lebih
kecil (Komputer, 2003).
Kompresi terdiri dari dua komponen, algoritma encoding yaitu proses
pengkodean menggunakan bit yang lebih sedikit dibandingkan dengan kode yang
sebelumnya. Kemudian algoritma decoding yang merekonstruksi pesan asli atau
perkiraan dari representasi kompresi. Kedua komponen ini biasanya saling terikat
karena keduanya harus memahami representasi kompresi bersama-sama (Blelloch,
2013).
Pada suatu data terdapat bagian-bagian data yang berulang untuk mewakili
informasi yang sama. Bagian data berulang disebut dengan data yang berlebihan
(redudancy data). Maka teknik kompresi menjadi hal penting dalam penyimpanan dan
transmisi data. Sehingga dibutuhkan cara yang efisien untuk menyimpan dan
mengirimkan file untuk mengurangu waktu eksekusi dan penghematan memori (Ellabla
dan Irshid, 2001). Tujuan daripada kompresi data adalah untuk mengurangi data
berlebihan tersebut sehingga ukuran data menjadi lebih kecil dalam proses transmisi
(Putra, 2010).
Universitas Sumatera Utara
8
2.1.2. Penggolongan Algoritma Kompresi
Secara garis besar terdapat 2 buah penggolongan algoritma kompresi data yaitu
kompresi lossless dan kompresi lossy (Merdiyan, 2005).
1.
Kompresi Lossless merupakan metode kompresi data yang memungkinkan data
asli dapat disusun kembali secara utuh, tanpa menghilangkan informasi apapun
(Kavitha, 2016). Kompresi lossless memiliki derajat kompresi yang lebih rendah
tetapi dengan akurasi data yang terjaga antara sebelum dan sesudah proses
kompresi. Contoh metode ini adalah Elias Delta Code, Elias Gamma Code,
Levenstein Code, Shannon-Fano Coding, Run Length Encoding, dan lain-lain.
Konsep dasar kompresi lossless dapat dilihat pada Gambar 2.1.
LOSSLESS
Compressed
Original
Restored
Gambar 2.1 Ilustrasi Kompresi Lossless
2.
Kompresi Lossy merupakan metoda kompresi data yang tidak menghasilkan data
asli secara utuh, sehingga ada informasi yang hilang saat proses kompresi.
Kompresi Loosy menghapus informasi-informasi yang tidak ditangkap oleh mata
manusia. (Mamta, 2012)Teknik ini digunakan untuk mengurangi ukuran data
dalam penyimpanan dan pengiriman data. (Kavitha, 2016). Contoh metode ini
adalah Transform Coding, Wavelet, dan lain-lain. Konsep dasar kompresi lossy
dapat dilihat pada Gambar 2.2.
LOSSY
Compressed
Original
Restored
Gambar 2.2. Ilustrasi Kompresi Lossy
Universitas Sumatera Utara
9
2.1.3 Konsep Kompresi Data
Di dalam komputer, satu karakter direpresentasikan dalam bilangan ASCII (American
Standard Code For Information Interchange) yaitu 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 bitbit data tersebut habis dibagi delapan. Variabel ini adalah padding dan flag.
1.
Padding
Padding adalah penambahan bit 0 pada hasil proses kompresi sehingga jumlah
keseluruhan bit-bit data tersebut merupakan kelipatan delapan (habis dibagi
delapan). 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 setelah diberikan
padding, bit bit data itu menjadi 10010110.
2.
Flag
Flag adalah tanda bagi banyaknya pad dalam angka biner 8-bit. Penambahan flag
ini dimaksudkan untuk mempermudah dalam membaca bit-bit data hasil kompresi
pada saat proses dekompresi. Misalkan bit-bit data yang telah diberikan padding
adalah 10010110. Karena terdapat 1 bit penambahan padding maka flag-nya adalah
bilangan biner dari 1 dengan panjang 8 bit yaitu 00000001. Sehingga setelah
diberikan flag, bit-bit datanya menjadi 1001011000000001 (Crowly, 2015).
2.1.4. Pengukuran kinerja kompresi data
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa faktor
atau variabel yang biasa digunakan untuk mengukur kualitas dari suatu teknik kompresi
data tersebut, yaitu :
1.
Ratio of Compression (Rc)
Ratio of Compression (Rc) adalah perbandingan antara ukuran data sebelum
dikompresi dengan ukuran data setelah dikompresi.
Rc =
ukuran data sebelum dikompresi
ukuran data setelah dikompresi
(Salomon & Motta, 2010)
Universitas Sumatera Utara
10
Misalkan didapat sebuah nilai Ratio of Compression sebesar 2.75. Artinya besar
data sebelum kompresi adalah 2.75 kali lipat dari besar data setelah dikompresi.
2.
Compression Ratio (CR)
Compression Ratio (CR) adalah persentasi besar data yang telah dikompresi yang
didapat dari hasil perbandingan antara ukuran data setelah dikompresi (output
stream) dengan ukuran data sebelum dikompresi (input stream).
CR =
ukuran data setelah dikompresi
ukuran data sebelumdikompresi
100%
(Salomon & Motta, 2010)
Misalkan didapat sebuah nilai Compression Ratio sebesar 35%. Itu berarti setelah
dikompresi ukuran data adalah 35% dari data sebelum dikompresi.
3.
Space Savings (SS)
Space Savings (SS) adalah besarnya penghematan storage akibat kompresi. Space
Savings data yaitu persentasi dari hasil selisih antara ukuran data sebelum
dikompresi dengan data setelah dikompresi.
SS = -
ukuran data setelah dikompresi
ukuran data sebelumdikompresi
100%
(Salomon & Motta, 2010)
Misalkan didapat sebuah nilai Space Savings sebesar 14%. Itu berarti besarnya
storage yang dihemat adalah 14%.
2.1.5. Elias Delta Code
Elias Delta Code adalah salah satu kode prefix yang paling banyak digunakan. Elias
Delta Code merupakan satu dari tiga Elias Code yang dipelopori oleh Peter Elias. Di
dalam kode ini, setiap karakter direpresentasikan dengan pemetaan kode sumber ke
sejumlah variabel bit. (Walder et al, 2011).
Aturan untuk mengkodekan sebuah bilangan dengan menggunakan Elias Delta Code
adalah sebagai berikut :
1. Tuliskan n dalam bilangan biner (binary). Bit yang paling kiri akan menjadi 1.
2. Hitung jumlah bit-nya, hapus bit paling kiri dari.
Universitas Sumatera Utara
11
3. Tambahkan perhitungan dalam bilangan biner pada bagian kiri dari n, setelah bit
paling kiri dari n dihapus.
4. Kurangi 1 dari perhitungan pada langkah ke-2 dan tambahkan jumlah nol ke kode.
Sehingga mengkodekan sebuah bilangan dengan menggunakan Elias Delta Code juga
dapat dinyatakan dalam rumus:
∆=
Keterangan:
b
�ℎ
−
∗" "+
+
= bilangan biner dari n (string)
M = panjang digit pada b
Mb = bilangan biner dari M (string)
L = b yang sudah dihapus indeks ke-0 (bit paling kiri)
Misal untuk mengetahui kode elias delta dari n=3, maka dapat ditentukan dengan:
= “11”
b
M =2
Mb = “10”
= “1”
L
∆=
=
=
=
−
�ℎ
−
∗ " "+"
∗ " "+"
∗" "+
"+" "
+
"+" "
Maka dapat diperoleh tabel kode elias delta seperti pada Tabel 2.1.
Tabel 2.1 Tabel Kode Elias Delta (Salomon, 2007)
1 = 20 + 0 → |L| = 0 → 1
10 = 23 + 2 → |L| = 3 → 00100010
2 = 21 + 0 → |L| = 1 → 0100
11 = 23 + 3 → |L| = 3 → 00100011
3 = 21 + 0 → |L| = 1 → 0101
12 = 23 + 4 → |L| = 3 → 00100010
4 = 22 + 0 → |L| = 2 → 01100
13 = 23 + 5 → |L| = 3 → 00100101
5 = 22 + 1 → |L| = 2 → 01101
14 = 23 + 6 → |L| = 3 → 0010001
6 = 22 + 2 → |L| = 2 → 01110
15 = 23 + 7 → |L| = 3 → 00100111
7 = 22 + 3 → |L| = 2 → 01111
16 = 24 + 0 → |L| = 4 → 001010000
8 = 23 + 0 → |L| = 3 → 00100000
17 = 24 + 1 → |L| = 4 → 001010001
9 = 23 + 1 → |L| = 3 → 00100001
18 = 24 + 2 → |L| = 4 → 001010010
Universitas Sumatera Utara
12
Untuk proses dekompresi dapat dilakukan dengan Brute Force Decode, dalam langkahlangkah berikut:
1.
Baca flag bit (8-bit dari kanan) untuk mengetahui berapa jumlah padding bit.
2.
Hasil decode dilakukan dengan langkah berikut:
Periksa dimulai dari bit pertama (paling kiri), n=1
a. Bila bit ke-n terdapat dalam tabel Elias Delta Code, ubah ke string yang sesuai.
b. Bila bit ke-n tidak terdapat dalam tabel, baca string di depannya, bit n+1 sampai
kumpulan bit tersebut terdapat dalam tabel.
Lakukan perulangan langkah a dan b sampai batas bit sebelum padding.
Contoh :
Berikut ini adalah contoh proses kompresi berkas teks dengan metode Elias Delta Code.
Terdapat berkas teks yang berisikan string “SAFFIERA”. Untuk ukuran String dapat
dilihat pada Tabel 2.2.
Tabel 2.2. String yang Belum Dikompresi
char
ASCII Code
ASCII Code (Binary)
Bit
Frek
Bit x Frek
S
83
01010011
8
1
8
A
65
01000001
8
2
16
F
70
01000110
8
2
16
I
73
01001001
8
1
8
E
69
01000101
8
1
8
R
82
01010010
8
1
8
Total
64
Berdasarkan kode ASCII, satu karakter bernilai delapan bit bilangan biner. Sehingga 8
karakter pada string mempunyai nilai biner sebanyak 64 bit. Sebelum melakukan proses
kompresi, karakter tersebut diurutkan terlebih dahulu secara descending berdasarkan
frekuensi dari tiap karakter. Proses kompresi untuk Elias Delta Code dapat dilihat pada
Tabel 2.3.
Universitas Sumatera Utara
13
Tabel 2.3 String yang Sudah Dikompresi Dengan Elias Delta Code
Char Frek Elias Delta Code Bit Bit x Frek
A
2
1
1
2
F
2
0100
4
8
S
1
0101
4
4
I
1
01100
5
5
E
1
01101
5
5
R
1
01110
5
5
29
Total
Maka String “SAFFIERA” setelah dikompresi menjadi:
String bit = “01011010001000110001101011101”
Jumlah String bit adalah 29, tidak habis dibagi delapan dan sisanya 5. Sehingga
dibutuhkan penambahan bit 0 sebanyak 3 kali, padding “000” dan flag-nya adalah
bilangan biner dari 3 yaitu “00000011”.
Diperoleh:
String bit hasil kompresi = “0101101000100011000110101110100000000011”.
Total bit seluruhnya setelah penambahan padding dan flag adalah 40.
Ukuran data sebelum dikompresi
= 64 bit
Ukuran data setelah dikompresi
= 40 bit
Ratio of Compression (Rc) =
ukuran data sebelum dikompresi
ukuran data setelah dikompresi
=
64
40
= 1.6
Compression Ratio (Cr)
=
=
Space Saving (SS)
ukuran data setelah dikompresi
� 100%
ukuran data sebelum dikompresi
40
� 100%
64
= 62. %
= 1-
ukuran data setelah dikompresi
� 100%
ukuran data sebelumdikompresi
Universitas Sumatera Utara
14
=
−
40
� 100%
64
= 37,5%
2.2 Kriptografi
2.2.1. Definisi Kriptografi
Kriptografi ( cryptography ) berasal dari Bahasa Yunani yaitu “cryptos” yang artinya
“secret” (rahasia) dan “graphein” yang artinya “writing” (menulis). Jadi kriptografi
berarti “secret writing” (tulisan rahasia). Kriptografi juga diartikan ilmu menggunakan
perhitungan matematika untuk mengubah informasi menjadi aman dan memberikan
kekebalan terhadap penyerang informasi tersebut (Thakkar, 2015).
Kriptografi pada awalnya dijabarkan sebagai ilmu yang mempelajari bagaimana
menyembunyikan pesan. Namun pada pengertian modern kriptografi adalah ilmu yang
bersandarkan pada teknik matematika untuk menjaga keamanan informasi seperti
kerahasiaan, keutuhan data dan otentikasi entitas. Jadi pengertian kriptografi modern
adalah tidak hanya berurusan dengan penyembunyian pesan, namun lebih pada
sekumpulan teknik yang menyediakan keamanan informasi.
2.2.2. Tujuan Kriptografi
Tujuan utama kriptografi (Garg et al, 2014) adalah :
1. Kerahasiaan (confidentiality)
Kerahasiaan adalah layanan yang ditujukan untuk menjaga agar pesan tidak
dapat dibaca oleh pihak-pihak yang tidak berhak. Di dalam kriptografi, layanan
ini direalisasikan dengan menyandikan pesan menjadi cipherteks.
2. Integritas (integrity)
Integritas adalah layanan yang menjamin bahwa pesan masih asli/utuh atau
belum pernah dimanipulasi selama pengiriman. Untuk menjaga integritas data,
sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh
pihak-pihak yang tidak berhak, antara lain penyisipan, pengahapusan, dan
pensubtitusian data lain kedalam pesan yang sebenarnya.
3. Otentikasi (authentication)
Otentikasi adalah layanan yang berhubungan dengan identifikasi, baik
mengidentifikasi
kebenaran pihak-pihak
yang berkomunikasi
maupun
Universitas Sumatera Utara
15
mengidentifikasi
kebenaran
sumber
pesan.
Dua
pihak
yang
saling
berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat
memastikan sumber pesan.
4. Nirpenyangkalan (Non-repudiation)
Nirpenyangkalan adalah layanan untuk mencegah entitas yang berkomunikasi
melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan
pengiriman atau penerima pesan memberi otoritas kepada penerima pesan untuk
melakukan pembelian, namun kemudian ia menyangkal telah melakukan
pembeli.
2.2.3. Terminologi Kriptografi
Di dalam kriptografi, akan sering ditemukan berbagai istilah atau terminologi. Berikut
adalah beberapa istilah yang penting untuk diketahui.
1. Plaintext dan Ciphertext.
Plainteks (plaintext) atau teks-jelas (cleartext) adalah data atau informasi yang dapat
dibaca dan dimengerti maknanya (Othman et al, 2004). 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. Gambar 2.3 memperlihatkan contoh dari plainteks serta cipherteks yang
berkoresponden.
(a) Plainteks
(b) Cipherteks
Gambar 2.3 Plainteks berupa Teks dan Cipherteksnya
(Munir, 2006)
Universitas Sumatera Utara
16
2. Pengirim dan Penerima
Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya.
Penerima (receiver) adalah entitas yang menerima pesan. Entitas di sini dapat berupa
orang, mesin (komputer), kartu kredit, dan sebagainya.
3. Enkripsi dan Dekripsi
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi (encryption) atau
enciphering. Sedangkan, proses mengembalikan cipherteks menjadi plainteks
semula dinamakan dekripsi (decryption) atau deciphering (Anusha et al, 2016).
4. Kriptanalis dan Kriptologi
Kriptanalis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks
menjadi plainteks, tanpa memerlukan kunci yang digunakan. Pelakunya disebut
dengan cryptanalyst. Kriptanalis berusaha memecahkan cipherteks tersebut untuk
menemukan plainteks atau kunci. Kriptologi (cryptology) adalah studi mengenai
kriptografi dan kriptanalis.
2.2.4. Jenis-jenis Algoritma Kriptografi
Secara umum ada dua jenis kriptografi berdasarkan kuncinya, yaitu Algoritma Simetris
dan Algoritma Asimetris.
1. Algoritma Simetris
Algoritma simetris adalah suatu
algoritma yang memiliki kunci enkripsi dan
dekripsi yang sama (Pethe & Pande, 2014). Istilah lain untuk algoritma simetris
adalah kriptografi kunci privat (private key cryptography) atau kriptografi
konvensional
(conventional
cryptography).
Sistem
kriptografi
simetri
mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama
sebelum bertukar pesan. Keamanan sistem kriptografi simetri terletak pada
kerahasiaan kuncinya. Maka algortima simetris akan rentan mengalami masalah
dalam manajemen kunci dan pengirimannya. (Meng et al, 2009). Contoh algoritma
simetris adalah DES (Data Encryption Standart), AES (Advanced Encryption
Standart), blowfish dan twofish. Skema kriptografi simetri dapat dilihat pada gambar
2.4.
Universitas Sumatera Utara
17
P
C
enkripsi
Kunci privat
P
dekripsi
Saluran aman
Gambar 2.4 Skema Kriptografi Simetri
Keterangan:
P= Plainteks
C=Cipherteks
2. Algoritma Asimetris
Algoritma asimetris adalah algoritma yang memiliki dua buah kunci yaitu kunci
publik untuk melakukan enkripsi sedangkan kunci pribadi untuk melakukan dekripsi.
Dengan kata lain, kunci untuk enkripsi pada kriptografi asimetri ini tidak rahasia
(diketahui oleh publik), sedangkan kunci untuk dekripsi bersifat rahasia (kunci
privat). Algoritma ini mengurangi jumlah kunci yang dibutuhkan untuk pengiriman,
namun tetap menghasilkan pesan yang aman (Meng et al, 2009). Contoh algoritma
asimetris adalah ElGamal, RSA (Riverst Shamir Adleman) dan ECC (Elliptic Curve
Cryptography). Skema kriptografi asimetri dapat dilihat pada gambar 2.5.
Pembangkit
kunci
kunci publik
kunci privat
P
enkripsi
C
dekripsi
P
Gambar 2.5 Skema Kriptografi Asimetri
Universitas Sumatera Utara
18
2.2.5 Algoritma ElGamal
Algoritma ElGamal yang termasuk algoritma asimetris ini diusulkan oleh Taher
ElGamal pada tahun 1985. Keamanan dari algoritma ini didasarkan pada kesulitan
memecahkan masalah logaritma diskrit yang terdapat dalam grup (Taher, 1985).
Logaritma ini sendiri disebut logaritma diskrit karena nilainya berhingga dan
bergantung pada bilangan prima yang digunakan.
Persoalan logaritma diskrit pada grup perkalian terbatas dapat diformulasikan
pada Tabel 2.4.
Tabel 2.4 Formulasi Persoalan Logaritma Diskrit
Persoalan
Logaritma Diskrit
Diberikan
Grup(Zp,x), akar primitif α, y ϵ Zp
Temukan
X sehingga
αx = y mod p
Untuk menyelesaikan persoalan logaritma diskrit akar primitif α dapat
dipangkatkan dengan nilai eksponensial dari 1 sampai p-1, x adalah eksponiensial yang
memenuhi αx ≡ y mod p.
Penyelesaian persoalan logaritma diskrit menjadi sulit ketika order grup
perkalian besar. Bila order grup besar, percobaan nilai eksponensial dari 1 sampai p-1.
Maka algoritma ElGamal menggunakan konsep ini, dengan menggunakan bilangan
prima yang besar, maka sangat sulit atau bahkan tidak mungkin menurunkan kunci
privat dari kunci publik walaupun diserang dengan menggunakan sumber daya
komputer yang besar.
Algoritma ElGamal mempunyai kunci publik berupa tiga bilangan dan kunci
rahasia berupa satu bilangan. Algoritma ElGamal terdiri dari tiga proses, yaitu proses
pembentukan kunci, proses enkripsi dan proses dekripsi. Algoritma ini merupakan
cipher blok, yaitu melakukan proses enkripsi pada blok-blok plainteks dan
menghasilkan blok-blok cipherteks yang kemudian dilakukan proses dekripsi dan
hasilnya digabungkan.
Besaran-besaran yang digunakan dalam pembangkitan kunci publik algoritma
ElGamal (Taufiq, 2010) :
1. Bilangan prima, p (tidak rahasia)
2. Bilangan acak α sebagai akar primitf ( α < p) (tidak rahasia)
3. Bilangan acak d (d < p) (rahasia)
Universitas Sumatera Utara
19
4. Blok plainteks P (plainteks) (rahasia)
5. C1dan C2 (cipherteks) (tidak rahasia)
2.2.6. Landasan Matematika Algoritma ElGamal
1.
Modulo Exponensial
Modulo eksponensial sering digunakan dalam bidang kriptografi untuk menghitung
hasil enkripsi maupun hasil dekripsi. Permasalahan pada operasi modulo adalah
bagaimana menghitung xy (mod n) dengan n yang sangat besar. Terdapat beberapa
cara untuk menghitung modulo eksponensial, antara lain adalah dengan cara
iteratif.
function modexp (x, y, n){
z =1
for (i=1; i ≤ y; i++){
z = x * z mod n
}
return z
}
Contoh : Tentukan hasil dari 26 mod 30 dengan cara iterasi!
Diketahui nilai x = 2, y = 6 dan n = 30.
Penyelesaiannya dapat dilihat pada Tabel 2.5.
Tabel 2.5 Penyelesaian contoh soal modulo eksponensial
Iterasi (i)
Z
1
2 * 1 mod 30 = 2
2
2 * 2 mod 30 = 4
3
2 * 4 mod 30 = 8
4
2 * 8 mod 30 = 16
5
2 * 16 mod 30 = 2
6
2 * 2 mod 30 = 4
→ berhenti
Maka hasil dari 26 mod 30 adalah 4.
Universitas Sumatera Utara
20
2. Bilangan Prima
Sebuah bilangan bulat p > 1 disebut bilangan prima, jika bilangan tersebut hanya
memiliki pembagi positif 1 dan p. Bilangan bulat yang lebih dari 1 yang bukan
bilangan prima disebut bilangan komposit (Putra, E. 2013). Karena bilangan prima
harus lebih besar dari satu, maka barisan bilangan prima dimulai dari 2, yaitu 2, 3, 5
, 7, 11, 13, .... Seluruh bilangan prima adalah bilangan ganjil, kecuali dua yang
merupakan bilangan genap.
3.
Pembangkit Bilangan Prima dengan Teorema Agrawal Biswas
Algoritma pembangkit bilangan prima dalam kriptografi kunci publik dapat
membesarkan nilai bilangan prima yang dibangkitkan, sehingga meningkatkan
tingkat kerumitan terhadap pemecahan kode rahasia (Surahman, 2013). Algoritma
Agrawal Biswas merupakan salah satu algoritma pembangkit bilangan prima.
Teorema algoritma Agrawal Biswas dapat dilihat sebagai berikut (Agrawal, 2005)
1. Pilih bilangan n yang akan diuji keprimaannya, dengan syarat n > 100.
2. Bangkitkan bilangan acak Z, yang merupakan bilangan acak antara 3 dan n .
3. Jika (1 + Z)n mod n = (1 + Zn mod n) mod n, maka n adalah bilangan prima
4. Jika tidak, maka bilangan n adalah bukan bilangan prima.
Contoh : Tentukan apakah bilangan 2711 merupakan bilangan prima dengan
algoritma Agrawal Biswas.
Penyelesaian :
1. Bangkit nilai acak Z = 200
2. Lakukan perhitungan pertama,
(1 + Z)n mod n = (1 + 200)2711 mod 2711
= 201
3. Lakukan perhitungan kedua,
(1 + Zn mod n) mod n = (1 + 2002711 mod 2711) mod 2711
= ( 1 + 200) mod 2711
= 201
Perhitungan pertama dan perhitungan kedua menghasilkan nilai yang sama,
sehingga dapat ditentukan bahwa bilangan 2711 merupakan bilangan prima.
Universitas Sumatera Utara
21
4. Elemen Primitif
Selain bilangan prima, dalam kriptografi ElGamal juga digunakan elemen primitif
yang merupakan elemen pembangun dari grup Zp. Untuk mencari elemen ini
digunakan p=2q+1, dimana q merupakan bilangan prima. Jika elemen α memenuhi
α2 mod p ≠ 1 dan αq mod p ≠ 1, maka α merupakan elemen primitif (Jeffrey et al,
2008 ).
Untuk mengetahui suatu bilangan merupakan elemen primitif atau tidak dapat
dilakukan langkah-langkah sebagai berikut :
1. Input bilangan prima aman p ≥ 5.
=
2. Hitung
�−
3. Hitung α2 mod p dan αq mod p.
4. Jika α2 mod p = 1, maka α bukan elemen primitif.
5. Jika αq mod p = 1, maka α bukan elemen primitif.
6. Jika tidak terpenuhi dua persyaratan di atas maka q merupakan elemen primitif.
Misalkan p = 271 yang merupakan bilangan prima aman. Oleh karena itu, dapat
=
ditentukan bilangan prima
7 −
= 135. Untuk menunjukkan bahwa suatu
bilangan bulat a merupakan elemen primitif Z271*, harus ditunjukkan bahwa α2
271 ≠1 dan α135
271 ≠1. Perhitungan untuk beberapa nilai a yang
diberikan ditunjukkan pada Tabel 8.10.
Tabel 2.6 Perhitungan α2
A
271 dan α135
271
2
3
4
5
6
7
8
α
271
4
9
16
25
36
49
64
α135
271
1
1
1
1
270
1
1
2
Maka nilai a yang memenuhi syarat sebagai elemen primitif Z271* adalah 6.
Universitas Sumatera Utara
22
2.2.7. Prinsip Kerja Algoritma ElGamal
Algoritma ElGamal merupakan salah satu penerapan algoritma asimetris, sehingga
memiliki 2 buah kunci, yaitu kunci publik dan kunci privat. Skema sistem kriptografi
dengan algoritma ElGamal ditunjukkan pada Gambar 2.6.
Pilih p, α , d
β = αd mod p
Publik (p, α, β)
Privat (d)
P
c1 = αr mod p
c2 = P βr mod p
C
P = c2 x (c1 d)-1 mod p
P
Gambar 2.6 Sistem Kriptografi dengan Algoritma ElGamal
2.2.7.1 Proses Pembangkitan Kunci
Langkah-langkah dalam pembangkitan kunci
1. Pilih bilangan prima p besar sebagai basis grup perkalian (Z*p,x)
2. Pilih α sebagai akar primitif pada grup
3. Pilih d yang memenuhi 1 ≤ d ≤ p - 2
4. Hitung berapa β = αd mod p
Diperoleh kunci publik (p,α, β), kunci privat = d.
Contoh proses pembangkitan kunci
1. Pilih bilangan prima p = 271
2. Pilih α =107
3. Pilih d = 96.
4. β = αd mod p
= 10796 mod 271
= 39
Hasil dari perhitungan diperoleht:
1. Kunci publik (p,α, β) = (271, 107, 39)
2. Kunci privat (d)= (96)
Universitas Sumatera Utara
23
2.2.7.2 Proses Enkripsi
Langkah-langkah dalam mengenkripsi pesan:
1. Terima kunci publik (p,α, β) = (271, 107, 39)
2. Plainteks m disusun menjadi blok-blok m1, m2, …, mp-1 sedemikian sehingga
setiap blok merepresentasikan nilai di dalam rentang 0 sampai p – 1.
3. Ubah nilai blok pesan ke dalam nilai ASCII. Ekspresikan pesan P1 = C = 67
(ASCII) sebagai bilangan.
4. Ambil sebuah bilangan asli r < p-1. Misal r = 50
5. Hitung c1 = αr mod p
= 10750 mod 271
= 238
Hitung c2 = P1 x βr mod p
= 67 x 3950 mod 271
= 212
Maka dari perhitungan di atas, kita mendapatkan nilai c1 dan c2 sebagai
cipherteks nya yaitu (238, 212). Proses diatas akan berulang untuk membaca
semua blok pesan untuk menghasilkan cipherteks.
6. Kirim c1 = 238 dan c2 = 212.
2.2.7.3 Proses Dekripsi
Dalam mendeskripsi pesan digunakan perhitungan P = c2 x (c1d)-1 mod p.
Perhitungan tersebut dapat disederhanakan dengan teorema Fermat:
�=
�− −�
Untuk memepermudah perhitungan pada tiap-tiap blok pesan, maka dapat
dirumuskan dengan :
�=
�=
�− −�
�
Langkah-langkah dalam mendekripsi pesan:
1.
Terima (c1, c2) dari sender = ( 238, 212)
2.
Hitung Z =
�− −�
= 238271-1-96 mod 271
= 238174 mod 271
= 178
Universitas Sumatera Utara
24
Hitung P =
= 212
�
178 mod 271
= 67.
Maka diperoleh P = 67, dalam karakter dalam ASCII adalah C, sesuai dengan
plainteks yang dikirim sender.
3.
Kemudian menggabungkan blok m1, m2, ... menjadi plainteks yang utuh
2.3. Citra
Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek.
Citra analog adalah citra yang bersifat kontinu, seperti pada 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 sebagainya. Citra
analog tidak dapat dipresentasikan dalam komputer sehingga tidak bisa diproses di
komputer secara langsung. Oleh sebab itu, agar citra ini dapat diproses di komputer,
proses konversi analog ke digital harus dilakukan terlebih dahulu. Citra digital adalah
citra yang dapat diolah oleh komputer. Monitor akan menampilkan kotak-kotak kecil.
Namun yang disimpan dalam memori hanyalah angka-angka yang menunjukkan besar
intensitas pada masing-masing pixel tersebut.
Sebuah citra digital dapat mewakili oleh sebuah matriks yang terdiri dari M
kolom N baris, dimana perpotongan antara kolom dan baris disebut piksel (picture
element), yaitu elemen terkecil dari sebuah citra. Piksel mempunyai dua parameter,
yaitu koordinat dan intensitas atau warna. Nilai yang terdapat pada koordinat (x,y)
adalah f(x,y), yaitu besar intensitas atau warna dari piksel di titik itu. Gambar 2.7
menunjukkan matriks citra digital.
,
=
[
,
,
− ,
− ,
,
…
…
− ,
…
⋯
…
⋯
,
,
…
− ,
Gambar 2.7 Matriks Citra Digital
−
]
Keterangan:
f(x,y) = fungsi besar intensitas citra
M
= indeks kolom dari matriks
N
= indeks baris dari matriks
Universitas Sumatera Utara
25
Berdasarkan rumus tersebut, secara matematis citra digital dapat dituliskan
sebagai fungsi intensitas f (x,y), dimana harga x (baris) dan y (kolom) merupakan
koordinat posisi dan f(x,y) adalah nilai fungsi pada setiap titik (x,y) yang menyatakan
besar intensitas citra atau tingkat keabuan atau warna dari piksel di titik tersebut.
Semakin besar ukuran piksel pada suatu citra maka semakin halus citra digital tersebut
bila ditampilkan pada monitor dalam ukuran yang sama, seperti terlihat pada Gambar
2.8.
b. 100 x 102 piksel
a. 300 x 306 piksel
c. 50 x 51 piksel
Gambar 2.8 Perbandingan gambar dengan ukuran piksel berbeda
2.3.1. Jenis-Jenis Citra Digital
2.3.1.1 Citra Biner
Pada citra biner hanya terdapat 2 warna, yaitu hitam dan putih. Dalam penyimpanannya
dibutuhkan 1 bit pada di memori. Contoh citra biner dapat dilihat pada Gambar 2.9.
Gambar 2.9 Contoh Citra Biner
Universitas Sumatera Utara
26
2.3.1.2 Citra Grayscale
Pada citra grayscale banyaknya warna tergantung pada jumlah bit yang disediakan
memori untuk menampung kebutuhan warna. Semakin besar jumlah bit, maka semakin
halus gradasi warna yang dihasilkan. (Sutoyo et all, 2009). Perbandingan gradasi warna
untuk jumlah bit tertentu ditunjukkan pada Gambar 2.9.Contoh citra grayscale dapat
dilihat pada Gambar 2.10 dan Ccontoh citra grayscale (keabuan) ditunjukkan pada
Gambar 2.11.
Gambar 2.10 Perbandingan gradasi warna berdasarkan ukuran bit
Gambar 2.11 Contoh Citra Grayscale
2.3.1.3 Citra Warna (True Color)
Setiap pixel pada citra warna mewakili warna yang merupakan kombinasi dari tiga
warna dasar (RGB = Red Green Blue). Setiap warna dasar menggunakan penyimpan 8
Universitas Sumatera Utara
27
bit yang berarti setiap warna mempunyai gradasi sebanyak 255 warna. Satu piksel citra
warna diwakili oleh 3 byte, masing-masing byte mempresentasikan warna merah (Red),
hijau (Green), dan bitu (Blue). Gambar 2.12 adalah contoh penyimpanan citra warna
dalam memori.
Citra Warna
Penyimpanan dalam memori
R = 50
G = 80
B = 50
R = 40
G = 90
B = 80
R = 20
G = 20
B = 50
R = 70
G = 70
B = 70
R = 80
G = 90
B = 70
R = 10
G = 70
B = 10
R = 10 R = 10
G = 80 G = 40
B = 90 B = 90
R = 80
G = 20
B = 70
Gambar 2.12 Contoh penyimpanan citra warna dalam memori
Berikut contoh citra warna yang ditunjukkan pada Gambar 2.12.
Gambar 2.13 Contoh Citra Warna
Universitas Sumatera Utara
28
2.3.2. Citra Bitmap
Citra bitmap menyimpan data kode citra secara digital dan lengkap, yaitu cara
penyimpanannya adalah per piksel. Citra bitmap dipresentasikan dalam bentuk matriks
atau dipetakan dengan menggunakan bilangan biner atau sistem bilangan lain. Bitmap
merupakan media elektronik yang paling tepat untuk gambar-gambar dengan perpaduan
gradiasi warna yang rumit, seperti foto dan lukisan digital. Citra bitmap biasanya
diperoleh dengan cara scanner, camera digital, video capture, dan lain-lain. BMP
merupakan format umum untuk menyimpan citra bitmap dikembangkan oleh microsoft.
Pada format bitmap, citra disimpan sebagai suatu matriks di mana masing–
masing elemennya digunakan untuk menyimpan informasi warna untuk setiap pixel.
Jumlah warna yang dapat disimpan ditentukan dengan satuan bit-per-pixel. Semakin
besar ukuran bit-per-pixel dari suatu bitmap, semakin banyak pula jumlah warna yang
dapat disimpan. Dalam Windows dikenal bitmap dengan 1, 4, 8, 16, dan 24 bit per
piksel. Jumlah warna maksimum yang dapat disimpan dalam suatu bitmap adalah
sebanyak 2n, dimana n adalah banyaknya bit yang digunakan untuk menyimpan satu
titik dari bitmap. (Sutoyo,2009).
2.3.3. Perhitungan Hasil Rekontruksi Citra
Perbaikan citra pada dasarnya merupakan proses yang bersifat subjektif sehingga
parameter keberhasilannya bersifat subjektif pula. Untuk itu perlu adanya alat ukur
kuantitatif yang bisa digunakan untuk mengukur kinerja prosedur perbaikan citra.
Perhitungan yang dapat dilakukan adalah dengan menentukan Mean Squared Error
(MSE) dan Peak Signal to Noise Ratio (PSNR).
2.3.3.1 Mean Squared Error
Mean squared error (MSE) adalah nilai error kuadrat rata-rata dari yang asli (input)
dan piksel gambar yang dihasilkan (output) yang dinyatakan dengan persamaan sebagai
berikut. (Male et al, 2012)
Keterangan :
�� =
.
M
: panjang citra (dalam pixel)
N
: lebar citra (dalam pixel)
∑ ∑
=
=
,
−
′
,
Universitas Sumatera Utara
29
( , ) : intensitas citra di titik (i,j) citra asli
’(
, ) : intensitas citra di titik (i,j) citra hasil
Berikut diberikan contoh dari perhitungan untuk Mean Square Error
(MSE),yaitu: Dengan contoh potongan matriks 2x3 dari citra asli dan citra rekonstruksi:
Citra asli:
Citra rekonsruksi:
2
8
3
2
7
3
2
1
1
2
1
1
�� =
Maka nilai dari MSE =
1
6
−
−
=
=
∑ ∑
.
,
−
′
,
((2-2)2 + (8-7)2 + (3-3)2 + (2-2)2 + (1-1)2 + (1-1)2)
= 0,167
Semakin kecil/rendah nilai yang dihasilkan dari perhitungan Mean Square Error, maka
kualitas citra yang dihasilkan akan semakin baik. (Sutoyo,2009).
2.3.3.2 Peak Signal to Noise Ratio
Peak Signal to Noise Ratio (PSNR) adalah ukuran matematis dari kualitas citra
berdasarkan perbedaan pixel antara kedua gambar. Ukuran SNR adalah perkiraan
kualitas gambar yang direkonstruksi dibandingkan dengan gambar asli. Nilai PSNR
yang lebih tinggi menyiratkan kemiripan yang lebih erat antara hasil rekonstruksi dan
gambar asli. PSNR sering dinyatakan dalam skala logaritmik dalam decibel (dB). Nilai
PSNR dibawah 30 dB mengindikasikan kualitas yang relatif rendah, dimana distorsi
yang dikarenakan penyisipan terlihat jelas. Akan tetapi kualitas yang tinggi berada pada
nilai 40dB dan diatasnya (Cheddad, 2010). PSNR didefinisikan dengan persamaan
berikut.
PSNR = 10 log
s2
MSE
Dimana s adalah nilai maksimum dari pixel citra yang digunakan. Misalkan s = 255
untuk gambar 8-bit. (Al-Najjar & Soong, 2012)
Universitas Sumatera Utara
30
Berdasarkan contoh pada perhitungan Mean Squared Error sebelumnya, yaitu 0,167.
Maka nilai PSNR dapat diselesaikan dengan perhitungan berikut.
PSNR = 10 log
= 10 log
=
,9
s2
MSE
2552
,
Universitas Sumatera Utara
BAB 2
LANDASAN TEORI
Bab ini akan membahas tinjauan teoritis yang berkaitan dengan algoritma kompresi
Elias Delta Code dan algoritma kriptografi ElGamal.
2.1 Kompresi
2.1.1. Definisi Kompresi
Kompresi data adalah ilmu atau seni yang merepresentasikan informasi dalam bentuk
yang lebih compact. Istilah kompresi tersebut diterjemahkan dari kata bahasa Inggris
“compression” yang berarti pemampatan. Dalam bidang teknik, kompresi berarti proses
memampatkan sesuatu yang berukuran besar sehingga menjadi kecil. Dengan demikian,
kompresi data berarti proses untuk memampatkan data agar ukurannya menjadi lebih
kecil (Komputer, 2003).
Kompresi terdiri dari dua komponen, algoritma encoding yaitu proses
pengkodean menggunakan bit yang lebih sedikit dibandingkan dengan kode yang
sebelumnya. Kemudian algoritma decoding yang merekonstruksi pesan asli atau
perkiraan dari representasi kompresi. Kedua komponen ini biasanya saling terikat
karena keduanya harus memahami representasi kompresi bersama-sama (Blelloch,
2013).
Pada suatu data terdapat bagian-bagian data yang berulang untuk mewakili
informasi yang sama. Bagian data berulang disebut dengan data yang berlebihan
(redudancy data). Maka teknik kompresi menjadi hal penting dalam penyimpanan dan
transmisi data. Sehingga dibutuhkan cara yang efisien untuk menyimpan dan
mengirimkan file untuk mengurangu waktu eksekusi dan penghematan memori (Ellabla
dan Irshid, 2001). Tujuan daripada kompresi data adalah untuk mengurangi data
berlebihan tersebut sehingga ukuran data menjadi lebih kecil dalam proses transmisi
(Putra, 2010).
Universitas Sumatera Utara
8
2.1.2. Penggolongan Algoritma Kompresi
Secara garis besar terdapat 2 buah penggolongan algoritma kompresi data yaitu
kompresi lossless dan kompresi lossy (Merdiyan, 2005).
1.
Kompresi Lossless merupakan metode kompresi data yang memungkinkan data
asli dapat disusun kembali secara utuh, tanpa menghilangkan informasi apapun
(Kavitha, 2016). Kompresi lossless memiliki derajat kompresi yang lebih rendah
tetapi dengan akurasi data yang terjaga antara sebelum dan sesudah proses
kompresi. Contoh metode ini adalah Elias Delta Code, Elias Gamma Code,
Levenstein Code, Shannon-Fano Coding, Run Length Encoding, dan lain-lain.
Konsep dasar kompresi lossless dapat dilihat pada Gambar 2.1.
LOSSLESS
Compressed
Original
Restored
Gambar 2.1 Ilustrasi Kompresi Lossless
2.
Kompresi Lossy merupakan metoda kompresi data yang tidak menghasilkan data
asli secara utuh, sehingga ada informasi yang hilang saat proses kompresi.
Kompresi Loosy menghapus informasi-informasi yang tidak ditangkap oleh mata
manusia. (Mamta, 2012)Teknik ini digunakan untuk mengurangi ukuran data
dalam penyimpanan dan pengiriman data. (Kavitha, 2016). Contoh metode ini
adalah Transform Coding, Wavelet, dan lain-lain. Konsep dasar kompresi lossy
dapat dilihat pada Gambar 2.2.
LOSSY
Compressed
Original
Restored
Gambar 2.2. Ilustrasi Kompresi Lossy
Universitas Sumatera Utara
9
2.1.3 Konsep Kompresi Data
Di dalam komputer, satu karakter direpresentasikan dalam bilangan ASCII (American
Standard Code For Information Interchange) yaitu 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 bitbit data tersebut habis dibagi delapan. Variabel ini adalah padding dan flag.
1.
Padding
Padding adalah penambahan bit 0 pada hasil proses kompresi sehingga jumlah
keseluruhan bit-bit data tersebut merupakan kelipatan delapan (habis dibagi
delapan). 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 setelah diberikan
padding, bit bit data itu menjadi 10010110.
2.
Flag
Flag adalah tanda bagi banyaknya pad dalam angka biner 8-bit. Penambahan flag
ini dimaksudkan untuk mempermudah dalam membaca bit-bit data hasil kompresi
pada saat proses dekompresi. Misalkan bit-bit data yang telah diberikan padding
adalah 10010110. Karena terdapat 1 bit penambahan padding maka flag-nya adalah
bilangan biner dari 1 dengan panjang 8 bit yaitu 00000001. Sehingga setelah
diberikan flag, bit-bit datanya menjadi 1001011000000001 (Crowly, 2015).
2.1.4. Pengukuran kinerja kompresi data
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa faktor
atau variabel yang biasa digunakan untuk mengukur kualitas dari suatu teknik kompresi
data tersebut, yaitu :
1.
Ratio of Compression (Rc)
Ratio of Compression (Rc) adalah perbandingan antara ukuran data sebelum
dikompresi dengan ukuran data setelah dikompresi.
Rc =
ukuran data sebelum dikompresi
ukuran data setelah dikompresi
(Salomon & Motta, 2010)
Universitas Sumatera Utara
10
Misalkan didapat sebuah nilai Ratio of Compression sebesar 2.75. Artinya besar
data sebelum kompresi adalah 2.75 kali lipat dari besar data setelah dikompresi.
2.
Compression Ratio (CR)
Compression Ratio (CR) adalah persentasi besar data yang telah dikompresi yang
didapat dari hasil perbandingan antara ukuran data setelah dikompresi (output
stream) dengan ukuran data sebelum dikompresi (input stream).
CR =
ukuran data setelah dikompresi
ukuran data sebelumdikompresi
100%
(Salomon & Motta, 2010)
Misalkan didapat sebuah nilai Compression Ratio sebesar 35%. Itu berarti setelah
dikompresi ukuran data adalah 35% dari data sebelum dikompresi.
3.
Space Savings (SS)
Space Savings (SS) adalah besarnya penghematan storage akibat kompresi. Space
Savings data yaitu persentasi dari hasil selisih antara ukuran data sebelum
dikompresi dengan data setelah dikompresi.
SS = -
ukuran data setelah dikompresi
ukuran data sebelumdikompresi
100%
(Salomon & Motta, 2010)
Misalkan didapat sebuah nilai Space Savings sebesar 14%. Itu berarti besarnya
storage yang dihemat adalah 14%.
2.1.5. Elias Delta Code
Elias Delta Code adalah salah satu kode prefix yang paling banyak digunakan. Elias
Delta Code merupakan satu dari tiga Elias Code yang dipelopori oleh Peter Elias. Di
dalam kode ini, setiap karakter direpresentasikan dengan pemetaan kode sumber ke
sejumlah variabel bit. (Walder et al, 2011).
Aturan untuk mengkodekan sebuah bilangan dengan menggunakan Elias Delta Code
adalah sebagai berikut :
1. Tuliskan n dalam bilangan biner (binary). Bit yang paling kiri akan menjadi 1.
2. Hitung jumlah bit-nya, hapus bit paling kiri dari.
Universitas Sumatera Utara
11
3. Tambahkan perhitungan dalam bilangan biner pada bagian kiri dari n, setelah bit
paling kiri dari n dihapus.
4. Kurangi 1 dari perhitungan pada langkah ke-2 dan tambahkan jumlah nol ke kode.
Sehingga mengkodekan sebuah bilangan dengan menggunakan Elias Delta Code juga
dapat dinyatakan dalam rumus:
∆=
Keterangan:
b
�ℎ
−
∗" "+
+
= bilangan biner dari n (string)
M = panjang digit pada b
Mb = bilangan biner dari M (string)
L = b yang sudah dihapus indeks ke-0 (bit paling kiri)
Misal untuk mengetahui kode elias delta dari n=3, maka dapat ditentukan dengan:
= “11”
b
M =2
Mb = “10”
= “1”
L
∆=
=
=
=
−
�ℎ
−
∗ " "+"
∗ " "+"
∗" "+
"+" "
+
"+" "
Maka dapat diperoleh tabel kode elias delta seperti pada Tabel 2.1.
Tabel 2.1 Tabel Kode Elias Delta (Salomon, 2007)
1 = 20 + 0 → |L| = 0 → 1
10 = 23 + 2 → |L| = 3 → 00100010
2 = 21 + 0 → |L| = 1 → 0100
11 = 23 + 3 → |L| = 3 → 00100011
3 = 21 + 0 → |L| = 1 → 0101
12 = 23 + 4 → |L| = 3 → 00100010
4 = 22 + 0 → |L| = 2 → 01100
13 = 23 + 5 → |L| = 3 → 00100101
5 = 22 + 1 → |L| = 2 → 01101
14 = 23 + 6 → |L| = 3 → 0010001
6 = 22 + 2 → |L| = 2 → 01110
15 = 23 + 7 → |L| = 3 → 00100111
7 = 22 + 3 → |L| = 2 → 01111
16 = 24 + 0 → |L| = 4 → 001010000
8 = 23 + 0 → |L| = 3 → 00100000
17 = 24 + 1 → |L| = 4 → 001010001
9 = 23 + 1 → |L| = 3 → 00100001
18 = 24 + 2 → |L| = 4 → 001010010
Universitas Sumatera Utara
12
Untuk proses dekompresi dapat dilakukan dengan Brute Force Decode, dalam langkahlangkah berikut:
1.
Baca flag bit (8-bit dari kanan) untuk mengetahui berapa jumlah padding bit.
2.
Hasil decode dilakukan dengan langkah berikut:
Periksa dimulai dari bit pertama (paling kiri), n=1
a. Bila bit ke-n terdapat dalam tabel Elias Delta Code, ubah ke string yang sesuai.
b. Bila bit ke-n tidak terdapat dalam tabel, baca string di depannya, bit n+1 sampai
kumpulan bit tersebut terdapat dalam tabel.
Lakukan perulangan langkah a dan b sampai batas bit sebelum padding.
Contoh :
Berikut ini adalah contoh proses kompresi berkas teks dengan metode Elias Delta Code.
Terdapat berkas teks yang berisikan string “SAFFIERA”. Untuk ukuran String dapat
dilihat pada Tabel 2.2.
Tabel 2.2. String yang Belum Dikompresi
char
ASCII Code
ASCII Code (Binary)
Bit
Frek
Bit x Frek
S
83
01010011
8
1
8
A
65
01000001
8
2
16
F
70
01000110
8
2
16
I
73
01001001
8
1
8
E
69
01000101
8
1
8
R
82
01010010
8
1
8
Total
64
Berdasarkan kode ASCII, satu karakter bernilai delapan bit bilangan biner. Sehingga 8
karakter pada string mempunyai nilai biner sebanyak 64 bit. Sebelum melakukan proses
kompresi, karakter tersebut diurutkan terlebih dahulu secara descending berdasarkan
frekuensi dari tiap karakter. Proses kompresi untuk Elias Delta Code dapat dilihat pada
Tabel 2.3.
Universitas Sumatera Utara
13
Tabel 2.3 String yang Sudah Dikompresi Dengan Elias Delta Code
Char Frek Elias Delta Code Bit Bit x Frek
A
2
1
1
2
F
2
0100
4
8
S
1
0101
4
4
I
1
01100
5
5
E
1
01101
5
5
R
1
01110
5
5
29
Total
Maka String “SAFFIERA” setelah dikompresi menjadi:
String bit = “01011010001000110001101011101”
Jumlah String bit adalah 29, tidak habis dibagi delapan dan sisanya 5. Sehingga
dibutuhkan penambahan bit 0 sebanyak 3 kali, padding “000” dan flag-nya adalah
bilangan biner dari 3 yaitu “00000011”.
Diperoleh:
String bit hasil kompresi = “0101101000100011000110101110100000000011”.
Total bit seluruhnya setelah penambahan padding dan flag adalah 40.
Ukuran data sebelum dikompresi
= 64 bit
Ukuran data setelah dikompresi
= 40 bit
Ratio of Compression (Rc) =
ukuran data sebelum dikompresi
ukuran data setelah dikompresi
=
64
40
= 1.6
Compression Ratio (Cr)
=
=
Space Saving (SS)
ukuran data setelah dikompresi
� 100%
ukuran data sebelum dikompresi
40
� 100%
64
= 62. %
= 1-
ukuran data setelah dikompresi
� 100%
ukuran data sebelumdikompresi
Universitas Sumatera Utara
14
=
−
40
� 100%
64
= 37,5%
2.2 Kriptografi
2.2.1. Definisi Kriptografi
Kriptografi ( cryptography ) berasal dari Bahasa Yunani yaitu “cryptos” yang artinya
“secret” (rahasia) dan “graphein” yang artinya “writing” (menulis). Jadi kriptografi
berarti “secret writing” (tulisan rahasia). Kriptografi juga diartikan ilmu menggunakan
perhitungan matematika untuk mengubah informasi menjadi aman dan memberikan
kekebalan terhadap penyerang informasi tersebut (Thakkar, 2015).
Kriptografi pada awalnya dijabarkan sebagai ilmu yang mempelajari bagaimana
menyembunyikan pesan. Namun pada pengertian modern kriptografi adalah ilmu yang
bersandarkan pada teknik matematika untuk menjaga keamanan informasi seperti
kerahasiaan, keutuhan data dan otentikasi entitas. Jadi pengertian kriptografi modern
adalah tidak hanya berurusan dengan penyembunyian pesan, namun lebih pada
sekumpulan teknik yang menyediakan keamanan informasi.
2.2.2. Tujuan Kriptografi
Tujuan utama kriptografi (Garg et al, 2014) adalah :
1. Kerahasiaan (confidentiality)
Kerahasiaan adalah layanan yang ditujukan untuk menjaga agar pesan tidak
dapat dibaca oleh pihak-pihak yang tidak berhak. Di dalam kriptografi, layanan
ini direalisasikan dengan menyandikan pesan menjadi cipherteks.
2. Integritas (integrity)
Integritas adalah layanan yang menjamin bahwa pesan masih asli/utuh atau
belum pernah dimanipulasi selama pengiriman. Untuk menjaga integritas data,
sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh
pihak-pihak yang tidak berhak, antara lain penyisipan, pengahapusan, dan
pensubtitusian data lain kedalam pesan yang sebenarnya.
3. Otentikasi (authentication)
Otentikasi adalah layanan yang berhubungan dengan identifikasi, baik
mengidentifikasi
kebenaran pihak-pihak
yang berkomunikasi
maupun
Universitas Sumatera Utara
15
mengidentifikasi
kebenaran
sumber
pesan.
Dua
pihak
yang
saling
berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat
memastikan sumber pesan.
4. Nirpenyangkalan (Non-repudiation)
Nirpenyangkalan adalah layanan untuk mencegah entitas yang berkomunikasi
melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan
pengiriman atau penerima pesan memberi otoritas kepada penerima pesan untuk
melakukan pembelian, namun kemudian ia menyangkal telah melakukan
pembeli.
2.2.3. Terminologi Kriptografi
Di dalam kriptografi, akan sering ditemukan berbagai istilah atau terminologi. Berikut
adalah beberapa istilah yang penting untuk diketahui.
1. Plaintext dan Ciphertext.
Plainteks (plaintext) atau teks-jelas (cleartext) adalah data atau informasi yang dapat
dibaca dan dimengerti maknanya (Othman et al, 2004). 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. Gambar 2.3 memperlihatkan contoh dari plainteks serta cipherteks yang
berkoresponden.
(a) Plainteks
(b) Cipherteks
Gambar 2.3 Plainteks berupa Teks dan Cipherteksnya
(Munir, 2006)
Universitas Sumatera Utara
16
2. Pengirim dan Penerima
Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya.
Penerima (receiver) adalah entitas yang menerima pesan. Entitas di sini dapat berupa
orang, mesin (komputer), kartu kredit, dan sebagainya.
3. Enkripsi dan Dekripsi
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi (encryption) atau
enciphering. Sedangkan, proses mengembalikan cipherteks menjadi plainteks
semula dinamakan dekripsi (decryption) atau deciphering (Anusha et al, 2016).
4. Kriptanalis dan Kriptologi
Kriptanalis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks
menjadi plainteks, tanpa memerlukan kunci yang digunakan. Pelakunya disebut
dengan cryptanalyst. Kriptanalis berusaha memecahkan cipherteks tersebut untuk
menemukan plainteks atau kunci. Kriptologi (cryptology) adalah studi mengenai
kriptografi dan kriptanalis.
2.2.4. Jenis-jenis Algoritma Kriptografi
Secara umum ada dua jenis kriptografi berdasarkan kuncinya, yaitu Algoritma Simetris
dan Algoritma Asimetris.
1. Algoritma Simetris
Algoritma simetris adalah suatu
algoritma yang memiliki kunci enkripsi dan
dekripsi yang sama (Pethe & Pande, 2014). Istilah lain untuk algoritma simetris
adalah kriptografi kunci privat (private key cryptography) atau kriptografi
konvensional
(conventional
cryptography).
Sistem
kriptografi
simetri
mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama
sebelum bertukar pesan. Keamanan sistem kriptografi simetri terletak pada
kerahasiaan kuncinya. Maka algortima simetris akan rentan mengalami masalah
dalam manajemen kunci dan pengirimannya. (Meng et al, 2009). Contoh algoritma
simetris adalah DES (Data Encryption Standart), AES (Advanced Encryption
Standart), blowfish dan twofish. Skema kriptografi simetri dapat dilihat pada gambar
2.4.
Universitas Sumatera Utara
17
P
C
enkripsi
Kunci privat
P
dekripsi
Saluran aman
Gambar 2.4 Skema Kriptografi Simetri
Keterangan:
P= Plainteks
C=Cipherteks
2. Algoritma Asimetris
Algoritma asimetris adalah algoritma yang memiliki dua buah kunci yaitu kunci
publik untuk melakukan enkripsi sedangkan kunci pribadi untuk melakukan dekripsi.
Dengan kata lain, kunci untuk enkripsi pada kriptografi asimetri ini tidak rahasia
(diketahui oleh publik), sedangkan kunci untuk dekripsi bersifat rahasia (kunci
privat). Algoritma ini mengurangi jumlah kunci yang dibutuhkan untuk pengiriman,
namun tetap menghasilkan pesan yang aman (Meng et al, 2009). Contoh algoritma
asimetris adalah ElGamal, RSA (Riverst Shamir Adleman) dan ECC (Elliptic Curve
Cryptography). Skema kriptografi asimetri dapat dilihat pada gambar 2.5.
Pembangkit
kunci
kunci publik
kunci privat
P
enkripsi
C
dekripsi
P
Gambar 2.5 Skema Kriptografi Asimetri
Universitas Sumatera Utara
18
2.2.5 Algoritma ElGamal
Algoritma ElGamal yang termasuk algoritma asimetris ini diusulkan oleh Taher
ElGamal pada tahun 1985. Keamanan dari algoritma ini didasarkan pada kesulitan
memecahkan masalah logaritma diskrit yang terdapat dalam grup (Taher, 1985).
Logaritma ini sendiri disebut logaritma diskrit karena nilainya berhingga dan
bergantung pada bilangan prima yang digunakan.
Persoalan logaritma diskrit pada grup perkalian terbatas dapat diformulasikan
pada Tabel 2.4.
Tabel 2.4 Formulasi Persoalan Logaritma Diskrit
Persoalan
Logaritma Diskrit
Diberikan
Grup(Zp,x), akar primitif α, y ϵ Zp
Temukan
X sehingga
αx = y mod p
Untuk menyelesaikan persoalan logaritma diskrit akar primitif α dapat
dipangkatkan dengan nilai eksponensial dari 1 sampai p-1, x adalah eksponiensial yang
memenuhi αx ≡ y mod p.
Penyelesaian persoalan logaritma diskrit menjadi sulit ketika order grup
perkalian besar. Bila order grup besar, percobaan nilai eksponensial dari 1 sampai p-1.
Maka algoritma ElGamal menggunakan konsep ini, dengan menggunakan bilangan
prima yang besar, maka sangat sulit atau bahkan tidak mungkin menurunkan kunci
privat dari kunci publik walaupun diserang dengan menggunakan sumber daya
komputer yang besar.
Algoritma ElGamal mempunyai kunci publik berupa tiga bilangan dan kunci
rahasia berupa satu bilangan. Algoritma ElGamal terdiri dari tiga proses, yaitu proses
pembentukan kunci, proses enkripsi dan proses dekripsi. Algoritma ini merupakan
cipher blok, yaitu melakukan proses enkripsi pada blok-blok plainteks dan
menghasilkan blok-blok cipherteks yang kemudian dilakukan proses dekripsi dan
hasilnya digabungkan.
Besaran-besaran yang digunakan dalam pembangkitan kunci publik algoritma
ElGamal (Taufiq, 2010) :
1. Bilangan prima, p (tidak rahasia)
2. Bilangan acak α sebagai akar primitf ( α < p) (tidak rahasia)
3. Bilangan acak d (d < p) (rahasia)
Universitas Sumatera Utara
19
4. Blok plainteks P (plainteks) (rahasia)
5. C1dan C2 (cipherteks) (tidak rahasia)
2.2.6. Landasan Matematika Algoritma ElGamal
1.
Modulo Exponensial
Modulo eksponensial sering digunakan dalam bidang kriptografi untuk menghitung
hasil enkripsi maupun hasil dekripsi. Permasalahan pada operasi modulo adalah
bagaimana menghitung xy (mod n) dengan n yang sangat besar. Terdapat beberapa
cara untuk menghitung modulo eksponensial, antara lain adalah dengan cara
iteratif.
function modexp (x, y, n){
z =1
for (i=1; i ≤ y; i++){
z = x * z mod n
}
return z
}
Contoh : Tentukan hasil dari 26 mod 30 dengan cara iterasi!
Diketahui nilai x = 2, y = 6 dan n = 30.
Penyelesaiannya dapat dilihat pada Tabel 2.5.
Tabel 2.5 Penyelesaian contoh soal modulo eksponensial
Iterasi (i)
Z
1
2 * 1 mod 30 = 2
2
2 * 2 mod 30 = 4
3
2 * 4 mod 30 = 8
4
2 * 8 mod 30 = 16
5
2 * 16 mod 30 = 2
6
2 * 2 mod 30 = 4
→ berhenti
Maka hasil dari 26 mod 30 adalah 4.
Universitas Sumatera Utara
20
2. Bilangan Prima
Sebuah bilangan bulat p > 1 disebut bilangan prima, jika bilangan tersebut hanya
memiliki pembagi positif 1 dan p. Bilangan bulat yang lebih dari 1 yang bukan
bilangan prima disebut bilangan komposit (Putra, E. 2013). Karena bilangan prima
harus lebih besar dari satu, maka barisan bilangan prima dimulai dari 2, yaitu 2, 3, 5
, 7, 11, 13, .... Seluruh bilangan prima adalah bilangan ganjil, kecuali dua yang
merupakan bilangan genap.
3.
Pembangkit Bilangan Prima dengan Teorema Agrawal Biswas
Algoritma pembangkit bilangan prima dalam kriptografi kunci publik dapat
membesarkan nilai bilangan prima yang dibangkitkan, sehingga meningkatkan
tingkat kerumitan terhadap pemecahan kode rahasia (Surahman, 2013). Algoritma
Agrawal Biswas merupakan salah satu algoritma pembangkit bilangan prima.
Teorema algoritma Agrawal Biswas dapat dilihat sebagai berikut (Agrawal, 2005)
1. Pilih bilangan n yang akan diuji keprimaannya, dengan syarat n > 100.
2. Bangkitkan bilangan acak Z, yang merupakan bilangan acak antara 3 dan n .
3. Jika (1 + Z)n mod n = (1 + Zn mod n) mod n, maka n adalah bilangan prima
4. Jika tidak, maka bilangan n adalah bukan bilangan prima.
Contoh : Tentukan apakah bilangan 2711 merupakan bilangan prima dengan
algoritma Agrawal Biswas.
Penyelesaian :
1. Bangkit nilai acak Z = 200
2. Lakukan perhitungan pertama,
(1 + Z)n mod n = (1 + 200)2711 mod 2711
= 201
3. Lakukan perhitungan kedua,
(1 + Zn mod n) mod n = (1 + 2002711 mod 2711) mod 2711
= ( 1 + 200) mod 2711
= 201
Perhitungan pertama dan perhitungan kedua menghasilkan nilai yang sama,
sehingga dapat ditentukan bahwa bilangan 2711 merupakan bilangan prima.
Universitas Sumatera Utara
21
4. Elemen Primitif
Selain bilangan prima, dalam kriptografi ElGamal juga digunakan elemen primitif
yang merupakan elemen pembangun dari grup Zp. Untuk mencari elemen ini
digunakan p=2q+1, dimana q merupakan bilangan prima. Jika elemen α memenuhi
α2 mod p ≠ 1 dan αq mod p ≠ 1, maka α merupakan elemen primitif (Jeffrey et al,
2008 ).
Untuk mengetahui suatu bilangan merupakan elemen primitif atau tidak dapat
dilakukan langkah-langkah sebagai berikut :
1. Input bilangan prima aman p ≥ 5.
=
2. Hitung
�−
3. Hitung α2 mod p dan αq mod p.
4. Jika α2 mod p = 1, maka α bukan elemen primitif.
5. Jika αq mod p = 1, maka α bukan elemen primitif.
6. Jika tidak terpenuhi dua persyaratan di atas maka q merupakan elemen primitif.
Misalkan p = 271 yang merupakan bilangan prima aman. Oleh karena itu, dapat
=
ditentukan bilangan prima
7 −
= 135. Untuk menunjukkan bahwa suatu
bilangan bulat a merupakan elemen primitif Z271*, harus ditunjukkan bahwa α2
271 ≠1 dan α135
271 ≠1. Perhitungan untuk beberapa nilai a yang
diberikan ditunjukkan pada Tabel 8.10.
Tabel 2.6 Perhitungan α2
A
271 dan α135
271
2
3
4
5
6
7
8
α
271
4
9
16
25
36
49
64
α135
271
1
1
1
1
270
1
1
2
Maka nilai a yang memenuhi syarat sebagai elemen primitif Z271* adalah 6.
Universitas Sumatera Utara
22
2.2.7. Prinsip Kerja Algoritma ElGamal
Algoritma ElGamal merupakan salah satu penerapan algoritma asimetris, sehingga
memiliki 2 buah kunci, yaitu kunci publik dan kunci privat. Skema sistem kriptografi
dengan algoritma ElGamal ditunjukkan pada Gambar 2.6.
Pilih p, α , d
β = αd mod p
Publik (p, α, β)
Privat (d)
P
c1 = αr mod p
c2 = P βr mod p
C
P = c2 x (c1 d)-1 mod p
P
Gambar 2.6 Sistem Kriptografi dengan Algoritma ElGamal
2.2.7.1 Proses Pembangkitan Kunci
Langkah-langkah dalam pembangkitan kunci
1. Pilih bilangan prima p besar sebagai basis grup perkalian (Z*p,x)
2. Pilih α sebagai akar primitif pada grup
3. Pilih d yang memenuhi 1 ≤ d ≤ p - 2
4. Hitung berapa β = αd mod p
Diperoleh kunci publik (p,α, β), kunci privat = d.
Contoh proses pembangkitan kunci
1. Pilih bilangan prima p = 271
2. Pilih α =107
3. Pilih d = 96.
4. β = αd mod p
= 10796 mod 271
= 39
Hasil dari perhitungan diperoleht:
1. Kunci publik (p,α, β) = (271, 107, 39)
2. Kunci privat (d)= (96)
Universitas Sumatera Utara
23
2.2.7.2 Proses Enkripsi
Langkah-langkah dalam mengenkripsi pesan:
1. Terima kunci publik (p,α, β) = (271, 107, 39)
2. Plainteks m disusun menjadi blok-blok m1, m2, …, mp-1 sedemikian sehingga
setiap blok merepresentasikan nilai di dalam rentang 0 sampai p – 1.
3. Ubah nilai blok pesan ke dalam nilai ASCII. Ekspresikan pesan P1 = C = 67
(ASCII) sebagai bilangan.
4. Ambil sebuah bilangan asli r < p-1. Misal r = 50
5. Hitung c1 = αr mod p
= 10750 mod 271
= 238
Hitung c2 = P1 x βr mod p
= 67 x 3950 mod 271
= 212
Maka dari perhitungan di atas, kita mendapatkan nilai c1 dan c2 sebagai
cipherteks nya yaitu (238, 212). Proses diatas akan berulang untuk membaca
semua blok pesan untuk menghasilkan cipherteks.
6. Kirim c1 = 238 dan c2 = 212.
2.2.7.3 Proses Dekripsi
Dalam mendeskripsi pesan digunakan perhitungan P = c2 x (c1d)-1 mod p.
Perhitungan tersebut dapat disederhanakan dengan teorema Fermat:
�=
�− −�
Untuk memepermudah perhitungan pada tiap-tiap blok pesan, maka dapat
dirumuskan dengan :
�=
�=
�− −�
�
Langkah-langkah dalam mendekripsi pesan:
1.
Terima (c1, c2) dari sender = ( 238, 212)
2.
Hitung Z =
�− −�
= 238271-1-96 mod 271
= 238174 mod 271
= 178
Universitas Sumatera Utara
24
Hitung P =
= 212
�
178 mod 271
= 67.
Maka diperoleh P = 67, dalam karakter dalam ASCII adalah C, sesuai dengan
plainteks yang dikirim sender.
3.
Kemudian menggabungkan blok m1, m2, ... menjadi plainteks yang utuh
2.3. Citra
Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek.
Citra analog adalah citra yang bersifat kontinu, seperti pada 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 sebagainya. Citra
analog tidak dapat dipresentasikan dalam komputer sehingga tidak bisa diproses di
komputer secara langsung. Oleh sebab itu, agar citra ini dapat diproses di komputer,
proses konversi analog ke digital harus dilakukan terlebih dahulu. Citra digital adalah
citra yang dapat diolah oleh komputer. Monitor akan menampilkan kotak-kotak kecil.
Namun yang disimpan dalam memori hanyalah angka-angka yang menunjukkan besar
intensitas pada masing-masing pixel tersebut.
Sebuah citra digital dapat mewakili oleh sebuah matriks yang terdiri dari M
kolom N baris, dimana perpotongan antara kolom dan baris disebut piksel (picture
element), yaitu elemen terkecil dari sebuah citra. Piksel mempunyai dua parameter,
yaitu koordinat dan intensitas atau warna. Nilai yang terdapat pada koordinat (x,y)
adalah f(x,y), yaitu besar intensitas atau warna dari piksel di titik itu. Gambar 2.7
menunjukkan matriks citra digital.
,
=
[
,
,
− ,
− ,
,
…
…
− ,
…
⋯
…
⋯
,
,
…
− ,
Gambar 2.7 Matriks Citra Digital
−
]
Keterangan:
f(x,y) = fungsi besar intensitas citra
M
= indeks kolom dari matriks
N
= indeks baris dari matriks
Universitas Sumatera Utara
25
Berdasarkan rumus tersebut, secara matematis citra digital dapat dituliskan
sebagai fungsi intensitas f (x,y), dimana harga x (baris) dan y (kolom) merupakan
koordinat posisi dan f(x,y) adalah nilai fungsi pada setiap titik (x,y) yang menyatakan
besar intensitas citra atau tingkat keabuan atau warna dari piksel di titik tersebut.
Semakin besar ukuran piksel pada suatu citra maka semakin halus citra digital tersebut
bila ditampilkan pada monitor dalam ukuran yang sama, seperti terlihat pada Gambar
2.8.
b. 100 x 102 piksel
a. 300 x 306 piksel
c. 50 x 51 piksel
Gambar 2.8 Perbandingan gambar dengan ukuran piksel berbeda
2.3.1. Jenis-Jenis Citra Digital
2.3.1.1 Citra Biner
Pada citra biner hanya terdapat 2 warna, yaitu hitam dan putih. Dalam penyimpanannya
dibutuhkan 1 bit pada di memori. Contoh citra biner dapat dilihat pada Gambar 2.9.
Gambar 2.9 Contoh Citra Biner
Universitas Sumatera Utara
26
2.3.1.2 Citra Grayscale
Pada citra grayscale banyaknya warna tergantung pada jumlah bit yang disediakan
memori untuk menampung kebutuhan warna. Semakin besar jumlah bit, maka semakin
halus gradasi warna yang dihasilkan. (Sutoyo et all, 2009). Perbandingan gradasi warna
untuk jumlah bit tertentu ditunjukkan pada Gambar 2.9.Contoh citra grayscale dapat
dilihat pada Gambar 2.10 dan Ccontoh citra grayscale (keabuan) ditunjukkan pada
Gambar 2.11.
Gambar 2.10 Perbandingan gradasi warna berdasarkan ukuran bit
Gambar 2.11 Contoh Citra Grayscale
2.3.1.3 Citra Warna (True Color)
Setiap pixel pada citra warna mewakili warna yang merupakan kombinasi dari tiga
warna dasar (RGB = Red Green Blue). Setiap warna dasar menggunakan penyimpan 8
Universitas Sumatera Utara
27
bit yang berarti setiap warna mempunyai gradasi sebanyak 255 warna. Satu piksel citra
warna diwakili oleh 3 byte, masing-masing byte mempresentasikan warna merah (Red),
hijau (Green), dan bitu (Blue). Gambar 2.12 adalah contoh penyimpanan citra warna
dalam memori.
Citra Warna
Penyimpanan dalam memori
R = 50
G = 80
B = 50
R = 40
G = 90
B = 80
R = 20
G = 20
B = 50
R = 70
G = 70
B = 70
R = 80
G = 90
B = 70
R = 10
G = 70
B = 10
R = 10 R = 10
G = 80 G = 40
B = 90 B = 90
R = 80
G = 20
B = 70
Gambar 2.12 Contoh penyimpanan citra warna dalam memori
Berikut contoh citra warna yang ditunjukkan pada Gambar 2.12.
Gambar 2.13 Contoh Citra Warna
Universitas Sumatera Utara
28
2.3.2. Citra Bitmap
Citra bitmap menyimpan data kode citra secara digital dan lengkap, yaitu cara
penyimpanannya adalah per piksel. Citra bitmap dipresentasikan dalam bentuk matriks
atau dipetakan dengan menggunakan bilangan biner atau sistem bilangan lain. Bitmap
merupakan media elektronik yang paling tepat untuk gambar-gambar dengan perpaduan
gradiasi warna yang rumit, seperti foto dan lukisan digital. Citra bitmap biasanya
diperoleh dengan cara scanner, camera digital, video capture, dan lain-lain. BMP
merupakan format umum untuk menyimpan citra bitmap dikembangkan oleh microsoft.
Pada format bitmap, citra disimpan sebagai suatu matriks di mana masing–
masing elemennya digunakan untuk menyimpan informasi warna untuk setiap pixel.
Jumlah warna yang dapat disimpan ditentukan dengan satuan bit-per-pixel. Semakin
besar ukuran bit-per-pixel dari suatu bitmap, semakin banyak pula jumlah warna yang
dapat disimpan. Dalam Windows dikenal bitmap dengan 1, 4, 8, 16, dan 24 bit per
piksel. Jumlah warna maksimum yang dapat disimpan dalam suatu bitmap adalah
sebanyak 2n, dimana n adalah banyaknya bit yang digunakan untuk menyimpan satu
titik dari bitmap. (Sutoyo,2009).
2.3.3. Perhitungan Hasil Rekontruksi Citra
Perbaikan citra pada dasarnya merupakan proses yang bersifat subjektif sehingga
parameter keberhasilannya bersifat subjektif pula. Untuk itu perlu adanya alat ukur
kuantitatif yang bisa digunakan untuk mengukur kinerja prosedur perbaikan citra.
Perhitungan yang dapat dilakukan adalah dengan menentukan Mean Squared Error
(MSE) dan Peak Signal to Noise Ratio (PSNR).
2.3.3.1 Mean Squared Error
Mean squared error (MSE) adalah nilai error kuadrat rata-rata dari yang asli (input)
dan piksel gambar yang dihasilkan (output) yang dinyatakan dengan persamaan sebagai
berikut. (Male et al, 2012)
Keterangan :
�� =
.
M
: panjang citra (dalam pixel)
N
: lebar citra (dalam pixel)
∑ ∑
=
=
,
−
′
,
Universitas Sumatera Utara
29
( , ) : intensitas citra di titik (i,j) citra asli
’(
, ) : intensitas citra di titik (i,j) citra hasil
Berikut diberikan contoh dari perhitungan untuk Mean Square Error
(MSE),yaitu: Dengan contoh potongan matriks 2x3 dari citra asli dan citra rekonstruksi:
Citra asli:
Citra rekonsruksi:
2
8
3
2
7
3
2
1
1
2
1
1
�� =
Maka nilai dari MSE =
1
6
−
−
=
=
∑ ∑
.
,
−
′
,
((2-2)2 + (8-7)2 + (3-3)2 + (2-2)2 + (1-1)2 + (1-1)2)
= 0,167
Semakin kecil/rendah nilai yang dihasilkan dari perhitungan Mean Square Error, maka
kualitas citra yang dihasilkan akan semakin baik. (Sutoyo,2009).
2.3.3.2 Peak Signal to Noise Ratio
Peak Signal to Noise Ratio (PSNR) adalah ukuran matematis dari kualitas citra
berdasarkan perbedaan pixel antara kedua gambar. Ukuran SNR adalah perkiraan
kualitas gambar yang direkonstruksi dibandingkan dengan gambar asli. Nilai PSNR
yang lebih tinggi menyiratkan kemiripan yang lebih erat antara hasil rekonstruksi dan
gambar asli. PSNR sering dinyatakan dalam skala logaritmik dalam decibel (dB). Nilai
PSNR dibawah 30 dB mengindikasikan kualitas yang relatif rendah, dimana distorsi
yang dikarenakan penyisipan terlihat jelas. Akan tetapi kualitas yang tinggi berada pada
nilai 40dB dan diatasnya (Cheddad, 2010). PSNR didefinisikan dengan persamaan
berikut.
PSNR = 10 log
s2
MSE
Dimana s adalah nilai maksimum dari pixel citra yang digunakan. Misalkan s = 255
untuk gambar 8-bit. (Al-Najjar & Soong, 2012)
Universitas Sumatera Utara
30
Berdasarkan contoh pada perhitungan Mean Squared Error sebelumnya, yaitu 0,167.
Maka nilai PSNR dapat diselesaikan dengan perhitungan berikut.
PSNR = 10 log
= 10 log
=
,9
s2
MSE
2552
,
Universitas Sumatera Utara