BAB 2
LANDASAN TEORI
Bab ini akan membahas tinjauan teoritis yang berkaitan dengan algoritma Elgamal
dan algoritma Double Playfair Cipher.
2.1 Kriptografi
2.1.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 adalah ilmu mengenai teknik enkripsi dimana data diacak
menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang
yang tidak memiliki kunci dekripsi (Kromodimoeljo, 2009).
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.1.2. Tujuan Kriptografi
Tujuan kriptografi 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
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
mengidentifikasi kebenaran sumber pesan. Dua pihak yang saling berkomunikasi
harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan sumber
pesan.
4. Nirpenyangkalan (Non-repidiation)
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.1.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.
Pesan (message) adalah data atau informasi yang dapat dibaca dan dimengerti
maknanya. Nama lain untuk pesan adalah plainteks (plaintext) atau teks-jelas
(cleartext). 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.1 memperlihatkan contoh dari plainteks
(a) Plainteks (b) Cipherteks
Gambar 2.1 Plainteks berupa Teks dan Cipherteksnya (Munir, Rinaldi. 2006)
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.
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.1.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. Istilah lain untuk algoritma simetris adalah kriptografi kunci
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.Contoh algoritma simetris
adalah DES (Data Encryption Standard), AES (Adcanced Encryption Standard),
blowfish dan twofish. Skema kriptografi simetri dapat dilihat pada gambar 2.2.
Gambar 2.2 Skema Kriptografi Simetris 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), artinya siapapun bisa menggunakan kunci tersebut
untuk melakukan enkripsi. Sedangkan kunci untuk dekripsi bersifat rahasia (kunci
privat).Contoh algoritma asimetris adalah ElGamal, RSA (Riverst Shamir
Adleman) dan ECC (Elliptic Curve Cryptography). Skema kriptografi asimetri
dapat dilihat pada gambar 2.3.
Gambar 2.3 Skema Kriptografi Asimetris
Algoritma simetris dan asimetris memiliki keunggulan tersendiri dari masing-masing
konsep kerjanya. Pada algoritma simetris, kecepatan operasi enkripsi dan dekripsi
lebih tinggi dan ukuran kuncinya juga relatif pendek bila dibandingkan dengan Algoritma
Enkripsi
Algoritma Dekripsi
Kunci Rahasia
Plaintext Ciphertext Plaintext
Algoritma Dekripsi
Kunci Publik Kunci Rahasia
Plaintext Ciphertext
Algoritma Enkripsi
algoritma asimetris. Namun algoritma asimetris memiliki manajemen kunci yang lebih
baik. Tidak seperti algoritma simetris yang harus sering mengubah kunci setiap kali
melakasanakan komunikasi, pasangan kunci privat dan kunci publik pada algoritma
asimetris tidak perlu diubah dalam jangka waktu yang sangat lama.
2.2 Algoritma The Sieve of Eratosthenes
Eratosthenes (276-194 S.M) adalah seorang petugas perpustakaan ketiga dari
perpustakaan terkenal di Alexandria dan adalah seorang sarjana yang sangat hebat.
Eratosthenes dikenang dengan pengukurannya terhadap keliling dari dari bumi,
memperkirakan jarak antara bumi dengan matahari dan bulan,dalam matematika,
untuk penemuan dari sebuah algoritma untuk mencari bilangan bilangan prima, yang
dikenal sebagai Algoritma Sieve of Eratosthenes.
Sieve of Eratosthenes adalah sebuah algoritma klasikuntuk menemukan
seluruh bilangan prima sampai ke sebuah n yang ditentukan. Mulai dengan array of
integer yang belum dicoret dari 2 ke n. Integer pertama yang belum dicoret
Universitas Sumatera Utara yaitu 2, adalah bilangan prima pertama. Coret seluruh
kelipatan daribilangan prima ini. Ulangi pada integer selanjutnya yang belum dicoret.
Sebagai contoh, berikut adalah array pada awalnya:
23 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2526 27
Karena 2 belum dicoret, maka 2 adalah bilangan pertama.Coret seluruh kelipatan 2,
yaitu 4, 6, 8, 10, 12,dst.
23 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2526 27
Integer selanjutnya yang belum dicoret adalah 3, maka 3adalah prima dan coret
seluruh kelipatan 3, seperti 6, 9. 12,dst.
2 34 5 6 7 8910 11 12 13 141516 17 18 19 202122 23 24 252627
5 adalah bilangan prima selanjutnya dan coret seluruh kelipatan 5. Satu-satunya
bilangan yang dicoret dalam range ini adalah 25.
Maka bilangan prima setelah 2,3 dan 5 yaitu7, 11, 13, 17, 19, dan 23.
Metode Sieve of Eratosthenes sangat cepat, sehingga tidak ada alasan untuk
menyimpan daftar bilangan prima yangbesar pada komputer, karena implementasi
yang efisien darialgoritma ini dapat mendapatkan bilangan-bilangan tersebutlebih
cepat daripada komputer harus membacanya dari mediapenyimpanan. Pada faktanya
permasalahan dengan algoritmaseperti yang disajikan di atas tidaklah selalu tentang
kecepatan,tetapi lebih ke penggunaan tempat, Mollin ( 2007).
2.3 Algoritma ElGamal 2.3.1 Definisi ElGamal
Algoritma ElGamal yang termasuk algoritma simetris ini diusulkan oleh Taher
ElGamal pada tahun 1984. Keamanan dari algoritma ini didasarkan pada kesulitan
memecahkan masalah logaritma diskrit yang terdapat dalam grup. 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.1.
Tabel 2.1 Formulasi Persoalan Logaritma Diskrit
Persoalan Logaritma Diskrit
Diberikan Grup(Z*p,x), akar primitif α, y ϵZ*p
Temukan X sehingga α* = 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 α* ≡ 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
privat dari kunci publik walaupun diserang dengan menggunakan sumber daya
komputer yang besar.
Algoritma ElGamal mempunyai kunci publik berupa tiga pasang bilangan
dan kunci rahasia berupa satu bilangan. Algoritma ini mempunyai kerugian pada
cipherteksnya yang mempunyai panjang dua kali lipat dari plainteksnya. Akan tetapi,
algoritma ini mempunyai kelebihan pada enkripsi. Untuk plainteks yang sama,
algoritma ini memberikan cipherteks yang berbeda setiap kali plainteks dienkripsi.
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, M. 2010) :
1. Bilangan prima, p (tidak rahasia)
2. Bilangan acak α sebagai akar primitf ( α < p) (tidak rahasia)
3. Bilangan acak d (d< p) (rahasia)
4. Blok plainteks P (plainteks) (rahasia)
5. C1dan C2 (cipherteks) (tidak rahasia)
2.3.2. 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 mod exp (x, y, n){
z =1
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.2.
Tabel 2.2 Penyelesaian contoh soal modulo eksponensial
Iterasi (i) Z
Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar atau
greatest common divisor dari dua bilangan bulat. Algoritma ini didasarkan pada
A ← B
B ← R
end while return A
Contoh : Temukan gcd(1041,723)
Penyelesaiannya dapat dilihat pada Tabel 2.3.
Tabel 2.3 Penyelesaian contoh soal gcd
A B R = A mod B
1041 723 318
723 318 87
318 87 57
87 57 30
57 30 27
30 27 3
27 3 0
3 0
Jadi gcd (1041, 723) = 3
3. Inversi Modulo
Jika a dan n relatif prima dan n > 1, maka inversi dari a mod n dapat ditemukan.
Inversi dari a (mod n), juga disebut inversi perkalian, dimana bilangan bulat a-1
sedemikian sehingga:
aa-1≡ 1 (mod n)
Pembuktian dari persamaan diatas dapat dilihat dari definisi relatif prima
diketahui bahwa GCD(a, n) = 1.
Contoh : Inversi dari 7 (mod 11)
Tabel 2.4 Penyelesaian contoh soal inversi modulo
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.
5. Bilangan Relatif Prima
Dua buah bilangan bulat a dan b dikatakan relatif prima jika pembagi persekutuan
terbesar atau GCD (greatest common divisor) dari a dan b bernilai 1.
Contoh :
Apakah A dan B merupakan relatif prima bila:
a. A = 20, B = 3
b. A = 20, B = 5
Tabel 2.5 Penyelesaian contoh soal relatif prima (a)
A B R = A mod B
20 3 2
3
2
2
1
1
0
Tabel 2.6 Penyelesaian contoh soal relatif prima (b)
A B R = A mod B
20 5 0
5 0
Maka :
a. 20 dan 3 relatif prima karena gcd (20, 3) = 1.
b. 20 dan 5 tidak relatif prima karena gcd (20, 5) = 5 ≠ 1.
2.4.1. Prinsip Kerja Algoritma ElGamal
Algoritma ElGamal merupakan salah satu penerapan algoritma asimetris, sehingga
memiliki 2 buah kunci, yaitu kunci publik dan kunci privat.
2.4.1.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
3. Pilih d = 96.
4. β =αd mod p
=10796 mod 271
= 39
Hasil dari perhitungan diperoleh:
1. Kunci publik (p,α, β) = (271, 107, 39)
2. Kunci privat (d)=(96)
2.4.1.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 βrmod p
= 67 x 3950mod 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.
2.4.1.3 Proses Dekripsi
Dalam mendeskripsi pesan digunakan perhitungan P = c2 x (c1d)-1 mod p.
Perhitungan tersebut dapat disederhanakan dengan teorema Fermat:
�= �2��1 �−1−�����
Untuk memepermudah perhitungan pada tiap-tiap blok pesan, maka dapat
dirumuskan dengan :
�= �1 �−1−� ����
� =�2������
Langkah-langkah dalam mendekripsi pesan:
1. Terima (c1, c2) dari sender = ( 238, 212)
2. Hitung Z = �1 �−1−�����
= 238271-1-96 mod 271
= 238174 mod 271
= 178
Hitung P=�2������
= 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.4. Algoritma Double Playfair Cipher
Double playfair atau yang biasa disebut juga dengan two-square cipher muncul
sebagai metode enkripsi yang lebih baik dibandingkan dengan playfair. Double
Playfair adalah perpanjangan dari playfair, sebagai turunan dari playfair cipher,
double playfair cipher juga dianggap sebagai algoritma kriptografi klasik. Dalam
double playfair cipher, cara penempatan kunci dalam persegi huruf masih sama
dengan playfair biasa. Bedanya adalah, ada dua persegi yang diletakkan
bersampingan. Berarti, ada sebuah kunci yang dibagi menjadi dua subkunci. Seperti
Playfair, Double Playfair cipher menggunakan kotak 5x5. Gambar 2.4
memperlihatkan contoh dari persegi untuk dekripsi enkripsi double playfair cipher.
Gambar 2.4 Contoh persegi untuk dekripsi enkripsi double playfair (Widjayanti, R. 2012).
Contoh, penulis menggunakan pesan: “TUGAS MAKALAH”. Sehingga
digraph-digraph yang akan dienkripsikan adalah “TU GA SM AK AL AH”. Di beberapa
sumber, ada juga variasi untuk lebih menyulitkan kriptanalis. Yakni dengan membagi
kalimat yang ingin dienkripsikan (dengan periode). Misalkan per empat huruf, maka
yang akan dienkripsikan adalah:
Perhatikan bahwa digraph AA di atas tidak perlu diberi selipan huruf X atau Z seperti
pada playfair cipher. Hal ini karena persegi kunci ada dua sehingga hal seperti itu
tidak diperlukan. Untuk makalah ini, penulis mengambil cara enkripsi tanpa
pembagian kalimat. Sehingga yang akan dienkripsi adalah:
Digraph pertama yang akan ditranslasikan adalah TU.
TUGA AL
SMAK AH
TS UM GA AK AA LH
Gambar 2.5 Langkah I enkripsi double playfair
Seperti yang disebutkan di atas, huruf T dan U berada di persegi yang berbeda. Hal ini
menghilangkan kemungkinan kedua huruf dalam digraph berada dalam kolom yang
sama. Berikutnya dicari perpotongan huruf T dan U yang diberi highlight.
Gambar 2.6 Langkah II enkripsi double playfair
Perpotongan huruf T dan U adalah huruf D dan I. Seperti aturan dalam playfair
cipher, huruf yang lebih dahulu dicantumkan dalam hasil enkripsi adalah huruf yang
satu baris dengan huruf pertama plaintext. Dengan demikian, alih-alih DI, hasil
enkripsi digraph pertama adalah ID. Dengan langkah yang sama didapatkan enkripsi
dari GA adalah DR. Namun, digraph SM yang akan dienkripsi berikutnya tidak
memiliki perpotngan karena berada dalam baris yang sama.
Gambar 2.7 Langkah III enkripsi double playfair
Cara mengatasinya sama dengan cara mengatasi baris yang sama di playfair cipher.
Yakni dengan menggeser huruf yang bersangkutan ke sebelah kanan. Sehingga
Gambar 2.8 Langkah IV enkripsi double playfair
Didapatkan hasilnya adalah TN. Ulangi langkah satu sampai empat enkripsi akan
didapatkan hasil sebagai berikut:
Perhatikan lagi bahwa di digraph terakhir, AH dienkripsi menjadi QH yang berarti
huruf H dienkripsi menjadi dirinya sendiri. Hal ini tidak mampu dilakukan oleh
playfair cipher, yang menjadi lubang untuk para kriptanalis.
TU GA SM AK AL AH
ID DR TN WQ OQ QH
2.5. File Citra
2.5.1. Pengertian Citra
Citra adalah suatu representasi (gambaran), kemiripan atau imitasi dari suatu objek.
Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto,
bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi, atau
bersifat digital yang dapat langsung disimpan pada suatu media penyimpanan (Sutoyo,
et al. 2009). Citra juga merupakan salah satu bentuk multimedia yang memegang
peranan sangat penting sebagai bentuk informasi visual. Citra memiliki beberapa jenis
format yaitu JPG, PNG, Bitmap, GIF dan lain-lain. Diantara multimedia lainnya, citra
sangat rentan untuk disalahgunakan seperti diduplikasi, dimodifikasi bahkan
dipalsukan. Maka dari itu keamanan suatu citra sangat dibutuhkan.Berikut ini adalah
contoh sebuah citra digital yang dipetakan sebagai suatu gabungan titik-titik atau
Piksel
Gambar 2.9 Citra Digital Dalam Piksel 2.5.2. Citra JPEG
Citra JPEG adalah standar kompresi file yang dikembangkan oleh Joint Photographic
Experts. JPEG banyak digunakan untuk menyimpan gambar-gambar dengan ukuran
lebih kecil. Karakteristika gambar dalam JPEG memiliki ekstensi .jpg dan .jpeg. JPEG
atau JPG mampu menayangkan warna dengan kedalaman 24-bit true color,
mengkompresi gambar dengan sifat lossy. Umumnya JPEG atau JPG digunakan untuk
menyimpan gambar-gambar hasil foto, jika gambar atau foto ditampilkan dengan
detail yang rumit dan bergradasi bisa menggunakan jenis file ini. File JPEG atau JPG
dapat menghasilkan gambar yang hampir sama seperti aslinya.