6
BAB 2 LANDASAN TEORI
2.1 Kriptografi 2.1.1 Pengertian Kriptografi Kriptografi merupakan metode untuk mengirimkan pesan rahasia sehingga hanya penerima pesan yang dimaksud dapat menghapus, menyamarkan atau membaca pesan tersebut. Kriptografi berasal dari kata bahasa Yunani yaitu kryptos yang berarti tersembunyi dan grapein yang berarti menulis. Pesan asli disebut plainteks dan pesan yang telah disandikan disebut cipherteks. Pesan yang telah dienkapsulasi dan dikirim disebut kriptogram. Proses mengubah plainteks menjadi cipherteks disebut enkripsi. Membalikkan proses cipherteks menjadi plainteks disebut dekripsi. Siapapun yang terlibat dalam kriptografi disebut kriptografer. Pada sisi lain, studi tentang teknik matematika karena berusaha untuk mengalahkan metode kriptografi disebut pembacaan sandi. Cryptanalysts adalah orang-orang berlatih pembacaan sandi (Mollin,2007). Pada kriptografi, pesan asli disebut plaintext dan pesan yang disamarkan disebut ciphertext. Proses menyamarkan plaintext menjadi ciphertext disebut enkripsi. Sedangkan proses untuk mengubah ciphertext kembali menjadi plaintext disebut dekripsi (Mollin,2007). Skema rangkaian proses enkripsi dan dekripsi ditunjukkan secara umum pada Gambar 2.1. Plaintext
Enkripsi
Ciphertext
Dekripsi
Plaintext
Gambar 2.1. Skema Proses Enkripsi dan Dekripsi
Universitas Sumatera Utara
7
Plaintext adalah pesan yang akan diamankan. Pada awalnya, plaintext hanya berbentuk data teks. Namun seiring dengan perkembangan, plaintext kini bisa berbentuk teks, citra (image), suara/bunyi (audio) dan video. Sedangkan ciphertext adalah hasil dari plaintext yang telah disamarkan. Enkripsi (encryption) adalah proses mengubah pesan asli (plaintext) sedemikian rupa menjadi pesan tersandi (ciphertext). Sedangkan dekripsi (decryption) adalah proses mengubah kembali pesan tersandi (ciphertext) menjadi pesan asli (plaintext). Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi, yaitu : 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 (Integrity) Integritas adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya. 3. Otentikasi (Authentication) 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 lainlain. 4. Ketiadaan Penyangkalan (Non-repudiation). Ketiadaan penyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat (Schneier, Bruce. 1996).
Universitas Sumatera Utara
8
2.1.2 Jenis-Jenis Algoritma Kriptografi Algoritma Kriptografi dapat diklasifikasikan menjadi dua jenis berdasarkan proses enkripsi dan deskripsi nya, yaitu algoritma simetris dan algoritma asimetris. Dan berdasarkan perkembangannya terbagi menjadi algoritma kriptografi modern dan klasik. 2.1.2.1 Algoritma Simetris Algoritma simetris kadang disebut juga algoritma konvensional. Algoritma ini menggunakan kunci yang sama pada saat proses enkripsi dan dekripsi. Pengirim harus memberitahu kuncinya terlebih dahulu, agar penerima dapat mendekripsi ciphertext. Keamanan algoritma simetris terletak pada kunci nya, agar data tetep terjaga kunci harus tetap dirahasiakan. Adapun algoritma yang termasuk ke dalam algoritma simetris adalah OTP, DES, RC2, RC4, RC5, IDEA, Twofish, Playfair Cipher, Magenta, FEAL, SAFER, LOKI, CAST, Rijndael (AES), Blowfish, GOST, A5, Kasumi dan lain-lainnya. Skema kriptografi simetris dapat dilihat pada Gambar 2.2.
Plaintext, P
Enkripsi Ek(P) =C
Ciphertext, C
Dekripsi Dk(C) = P
Plaintext, P
Kunci Privat, K
Gambar 2.2. Skema Kriptografi Simetris PRIVAT
2.1.2.2 Algoritma Asimetris Berbeda dengan kriptografi simetri, kriptografi asimetri menggunakan dua kunci yang berbeda pada saat proses enkripsi dan dekripsinya. Kunci pada proses enkripsi asimetris ini tidak rahasia (public key) dan kunci pada proses dekripsi bersifat rahasia (private key), sehingga algoritma asimetris disebut juga dengan algoritma kunci publik. Pengirim akan mengenkripsi dengan menggunakan kunci public, sedangkan penerima mendeskripsi menggunakan kunci privat. Adapun algoritma yang menggunakan kunci asimetris adalah seperti Rivest-Shamir-Adleman (RSA), ElGamal, Rabin dan lain-lain. Skema kriptografi asimetris dapat dilihat pada Gambar 2.3.
Universitas Sumatera Utara
9
Plaintext, P
Enkripsi Ek1(P) = C
Dekripsi Dk2(C) = P
Ciphertext, C
Kunci Publik, k1
Plaintext, P
Kunci Rahasia, k2
Gambar 2.3. Skema Kriptografi Asimetris
2.2 Playfair Cipher Playfair Cipher merupakan salah satu contoh algoritma klasik yang ditemukan oleh Charles Wheatstone, salah seorang Pioneer Telegraf. Kemudian algoritma ini dipopularkan oleh Lyon Playfair pada tahun 1854. Algoritma Playfair Cipher termasuk ke dalam polygram cipher (Munir, 2006). Proses enkripsi dengan menggunakan algoritma Playfair Cipher, dilakukan dengan mengenkripsi dua huruf atau pasangan-pasangan huruf. Kunci yang di gunakan dalam proses enkripsi harus disepakati oleh pengirim dan penerima pesan terlebih dahulu, agar pesan dapat di deskripsi oleh penerima pesan. Kunci tersebut disusun pertama kali dalam sebuah bujur sangkar yang memiliki ukuran 5x5, setelah itu sisa dari elemen-elemen bujur sangkar yang masih kosong akan diisi dengan seluruh alfabet (A-Z) terkecuali J. Sebagai contoh, misalkan kata kunci yang disetujui oleh pengirim dan penerima pesan adalah IMILKOM. Contoh matriks kunci Playfair Cipher dengan penulisan kunci dalam baris dapat dilihat pada Tabel 2.1. Tabel 2.1. Contoh matriks kunci „ILKOM‟ I
M
L
K
O
A
B
C
D
E
F
G
H
N
P
Q
R
S
T
U
V
W
X
Y
Z
Dengan penulisan kunci dalam baris
Universitas Sumatera Utara
10
Setelah bujur sangkar terisi penuh dengan kata kunci dan huruf alphabet. Proses enkripsi dilanjutkan dengan proses pengaturan pesan yang ingin dienkripsi, sebagai berikut (Azhari, 2014) : 1. Ganti huruf „J‟ yang terdapat pada pesan yang ingin dienkripsi dengan huruf „I‟. 2. Tulis kembali pesan dengan kedalam pasangan huruf atau bigram. 3. Bila terdapat bigram yang memiliki huruf yang sama, maka sisipkan dengan huruf „X‟ ditengahnya. 4. Bila huruf terakhir tidak memiliki pasangan (jumlah huruf pada pesan ganjil), maka tambahkan huruf „X‟ sebagai pasangannya. Contoh Plaintext : ILKOM Karena bigram terakhir tidak memiliki pasangan maka, ditambahkan huruf X pada bigram terakhir, menjadi (Azhari, 2014) : IL KO MX Setelah plaintext disusun kedalam bigram dan sesuai dengan aturan diatas, pesan dapat dienkripsi dengan menggunakan matriks kunci pada Tabel 2.1. Dengan ketentuan sebagai berikut (Azhari, 2014) : 1.
Bila dua huruf dalam satu bigram berada pada baris kunci yang sama, maka masing-masing huruf digantikan dengan huruf disebelah kanannya.
2.
Bila dua huruf dalam satu bigram berada pada kolom kunci yang sama, maka masing-masing huruf digantikan dengan huruf yang berada dibawahnya.
3.
Bila dua huruf dalam satu bigram tidak berada pada baris maupun kolom yang sama, maka huruf pertama digantikan dengan huruf pada perpotongan baris huruf pertama dengan kolom huruf kedua. Dan huruf kedua digantikan dengan huruf pada titik sudut keempat dari persegi yang dibentuk dari 3 huruf yang digunakan sebelumnya.
Contoh : Matriks kunci di tulis kembali, dapat dilihat pada Table 2.2 :
Universitas Sumatera Utara
11
Tabel 2.2. Contoh matriks kunci I
M
L
K
O
A
B
C
D
E
F
G
H
N
P
Q
R
S
T
U
V
W
X
Y
Z
Plaintext dalam bentuk bigram, sebagai berikut : IL KO MX Ciphertext yang dihasilkan, sebagai berikut : MK OI LW Untuk mendekripsikan pesan nya, dengan kunci yang telah diketahui sebelumnya oleh si penerima, maka dilakukan seperti enkripsi pesan dengan membentuk pasangan huruf dari Ciphertext . Hanya saja aturan yang digunakan untuk dekripsi merupakan kebalikan dari enkripsi pesan (Azhari, 2014).
2.2.1 Playfair Cipher dengan Teknik Pemutaran Kunci Dua Arah Ide untuk mencegah terjadinya pasangan huruf yang terus berulang memiliki hasil enkripsi yang sama adalah dengan mengganti matriks yang digunakan pada saat enkripsi. Teknik pemutaran kunci dua arah merupakan suatu cara untuk mengganti matriks agar berbeda dari kunci matriks untuk mengenkripsi bigram sebelumnya. Teknik pemutaran kunci dua arah dilakukan dengan memutar 4 huruf disekitar huruf pertama dengan menempatkan huruf pertama yang dienkripsi searah jarum jam, kemudian memutar 4 huruf disekitar huruf kedua berlawanan arah jarum jam (Azhari, 2014). Proses pemutaran matriks kunci memiliki aturan sebagai berikut: 1.
Pilihlah 4 huruf disekitar huruf bigram plaintext. Yaitu huruf itu sendiri, huruf disebelah kanannya, huruf disebelah kanan bawah dan huruf dibawahnya.
2.
Apabila huruf plaintext terletak di paling bawah atau paling kanan, maka sebelah kanan dari huruf itu adalah huruf dipaling kiri pada baris huruf plaintext berada dan sebelah bawah huruf plaintext terletak di paling atas dari kolom tempat huruf plaintext berada.
Universitas Sumatera Utara
12
3.
Untuk setiap huruf pertama pada bigram plaintext, 4 huruf yang berada disekitarnya (pada poin nomor 1) diputar searah jarum jam.
4.
Untuk setiap huruf kedua pada bigram plaintext, 4 huruf yang berada disekitarnya (pada poin nomor 1) diputar berlawanan jarum jam.
5.
Proses ini diulang terus sampai seluruh plaintext selesai dienkripsi. Contoh pada matriks kunci “IMILKOM” pada Tabel 2.3, bigram “IL” terlebih
dahulu dienkripsi, hasilnya yaitu “MK” baru matriks kunci diputar. Pada matrik kunci, huruf yang berada disekitar „I‟ dapat dilihat pada Tabel 2.3. Tabel 2.3. Matriks Kunci 4 huruf disekitar huruf „I‟ sebelum diputar
I
M
L
K
O
A
B
C
D
E
F
G
H
N
P
Q
R
S
T
U
V
W
X
Y
Z
Kemudian matrik 4 huruf tersebut diputar searah jarum jam, sehingga hasilnya dapat dilihat pada Tabel 2.4. Tabel 2.4. Matriks 4 huruf disekitar huruf „I‟ setelah diputar A
I
L
K
O
B
M
C
D
E
F
G
H
N
P
Q
R
S
T
U
V
W
X
Y
Z
Selanjutnya matrik kunci, huruf yang berada disekitar „L‟ dapat dilihat pada Tabel 2.5.
Universitas Sumatera Utara
13
Tabel 2.5. Matriks 4 huruf disekitar huruf „L‟ sebelum diputar A
I
L
K
O
B
M
C
D
E
F
G
H
N
P
Q
R
S
T
U
V
W
X
Y
Z
Kemudian matrik 4 huruf tersebut diputar berlawanan jarum jam, sehingga hasilnya dapat dilihat pada Tabel 2.6. Tabel 2.6. Matriks 4 huruf disekitar huruf „L‟ setelah diputar A
I
K
D
O
B
M
L
C
E
F
G
H
N
P
Q
R
S
T
U
V
W
X
Y
Z
Kunci matriks pada Tabel 2.6 digunakan untuk mengenkripsi bigram kedua pada plaintext. Proses ini terus berulang sampai plaintext habis dienkripsi. Dengan menggunakan teknik pemutaran kunci dua arah, maka ciphertext yang dihasilkan dari plaintext “ILKOM” adalah: Plaintext (setelah disusun sesuai dengan bigram dan aturan): IL KO MX Ciphertext yang dihasilkan: MK DA CW Dapat dilihat ciphertext yang dihasil dari algoritma Playfair Cipher klasik dengan Playfair Cipher Modifikasi teknik pemutaran kunci dua arah memiliki perbedaan meskipun dengan plaintext yang sama.
2.3 Kompresi Data Kompresi adalah sebuah proses mengubah ukuran data menjadi lebih kecil dari ukarannya yang semula sehingga dapat lebih menghemat kebutuhan tempat penyimpanan dan waktu untuk transmisi data . Saat ini terdapat berbagai tipe
Universitas Sumatera Utara
14
algoritma kompresi , antara lain: Huffman, IFO, LZHUF, LZ77 dan variannya (LZ78, LZW, GZIP), Dynamic Markov Compression (DMC), Block-Sorting Lossless, Run Length Encoding (RLE), Shannon-Fano, Arithmetic, PPM (Prediction by Partial Matching), Burrows-Wheeler Block Sorting, dan Half Byte. Untuk melakukan kompresi data telah banyak algoritma yang telah dikembangkan. Namun, secara umum algoritma kompresi data dapat di bagi menjadi dua kelompok besar berdasarkan dapat tidaknya rekontuksi ke data asli dilakukan yaitu:
1. Kompresi Lossless Kompresi lossless adalah kompresi yang menjaga keakuratan dari data yang telah di kompres, bila selama proses kompresi terjadi perubahan atau hilangnya informasi dari data bahkan hanya beberapa bit saja, tidak dapat ditoleransi. Sehingga teknik kompresi ini bersifat reversible yaitu hasil kompresi dapat dikembalikan ke bentuk semula secara utuh. Teknik kompresi lossless ini lebih cocok diaplikasikan pada teks, gambar medis, atau photo hasil satelit dimana hilangnya beberapa detail pada data dapat berakibat fatal. Contoh algoritma lossless adalah Run Length Encoding, Arithmetic Coding, Huffman Coding, dan lain-lain.
2. Kompresi Lossy Berbeda dengan teknik kompresi lossless, pada kompresi lossy perubahan atau hilangnya beberapa informasi pada data dapat ditoleransi, sehingga hasil kompresi tidak bisa lagi dikembalikan ke bentuk semula (irreversible). Namun, hasil kompresi masih bisa mempertahankan informasi utama pada data. Kompresi ini cocok diaplikasikan pada file suara, gambar atau video. Umumnya teknik ini menghasilkan kualitas hasil kompresi yang rendah, namun rasio kompresinya cenderung tinggi. Contoh algoritma kompresi lossy adalah Fractal Compression, Wavelet Compression, Wyner-Ziv Coding (WZC), dan lain-lain.
Universitas Sumatera Utara
15
2.4
Run Length Encoding
Algoritma Run Length Encoding mengurangi ukuran karakter string yang berulang. Algoritma ini memanfaatkan karakter yang berulang secara berurutan pada sebuah data dengan mengkodekannya dengan sebuah string yang terdiri dari jumlah karakter yang berulang dan diikuti dengan karakter itu sendiri. Sehingga banyak tidaknya karakter yang berulang pada sebuah data menjadi penentu keberhasilan kompresi algoritma RLE. Setiap kode perlu ditambahkan sebuah penanda (marker byte) yang berfungsi untuk menghindari keambiguan pada saat decoding. Jadi, secara umum format kode yang dihasilkan oleh algoritma RLE dapat dilihat pada Tabel 2.7. Tabel 2.7. Format kode karakter berulang m
n
s
Keterangan : m : Sebuah penanda (marker byte). n : Jumlah deret karakter yang berulang. s : Karakter yang berulang tersebut. Contoh : String : “AAABBBBBCCDDDCCCCC” Kompresi RLE : “#3A#4B#2C#3D#5C” Sebaiknya yang dipilih sebagai penanda m, adalah karakter yang jarang digunakan pada data (seperti tanda #, ^, |, atau ~). Namun, apabila penanda m terdapat pada data, cukup dengan mengkodekannya sebanyak dua kali, sehingga apabila penanda tersebut muncul dua kali secara berturut-turut saat decoding, maka penanda tersebut dianggap sebagai karakter asli. 2.5
Kompleksitas Algoritma Secara informal algoritma adalah suatu prosedur komputasi yang terdefenisi
dengan baik yang mengambil beberapa nilai atau sekumpulan nilai sebagai input dan menghasilkan beberapa nilai atau sekumpulan nilai sebagai output. Dengan demikian algoritma adalah suatu urutan langkah-langkah komputasi yang mentransformasikan input menjadi output (Cormen & Thomas H, 2001). Secara singkat, algoritma merupakan langkah-langkah logis untuk pemecahan suatu masalah. Untuk
Universitas Sumatera Utara
16
menerangkan model abstrak pengukuran waktu dan ruang maka digunakan suatu fungsi yang menjelaskan bagaimana ukuran masukan data (n) mempengaruhi perfomansi algoritma yang disebut sebagai kompleksitas algoritma. Pada saat penentuan kompleksitas algoritma, ada beberapa istilah yang sering digunakan untuk menunjukkan kinerja suatu algoritma untuk ukuran input n, yaitu best-case, average-case, dan worst-case yang masing-masing menyatakan kompleksitas keadaan terbaik, keadaan rata-rata, dan keadaan terburuk dari suatu algoritma. Namun, pada prakteknya penentuan nilai pasti untuk setiap case tersebut sulit dilakukan. Jadi, yang dilakukan hanyalah analisis asimtotik dari suatu algoritma, yaitu bagaimana pertumbuhan fungsi (growth of function) suatu algoritma dipengaruhi oleh input n yang semakin membesar menuju ke tak terhingga (infinity). Dalam analisis asimtotik, ada beberapa notasi yang sering digunakan untuk menunjukkan batas-batas fungsi asimtot, yaitu notasi Big-O, Big-Omega, dan BigTheta yang masing-masing menunjukkan batas atas (upper bound), batas bawah (lower bound), dan batas atas dan batas bawah (tight bound) dari fungsi asimtot.
2.5.1
Big – O Notasi Big-O adalah notasi matematika yang digunakan untuk menggambarkan
suatu fungsi asimtotik. Notasi Big-O sering juga digunakan untuk menjelaskan seberapa besar ukuran dari suatu data mempengaruhi penggunaan sebuah algoritma dari sumber komputasi. Notasi ini pertama kali diperkenalkan pada tahun 1894 oleh Paul Bachman, yaitu pada volume kedua dari bukunya Analytische Zahlentheorie (analisis teori bilangan) sehingga notasi Big-O biasa juga disebut sebagai notasi Landau (Landau notation), Bachman-Landau notation, atau notasi asimtotik (asymptotic notation). Notasi big O adalah fungsi yang berkaitan dengan kelajuan proses dari pada kelajuan pertambahan data. Notasi big O merupakan sesuatu nilai dari penyeleasian masalah dengan merujuk proses kerja dari penyelesaian masalah tersebut. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Keefesien algoritma diukur dari beberapa jumlah waktu dan ruang (space) memory yang dibutuhkan untuk menjalankannya. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses. Dengan menggunakan besaran kompleksitas waktu dan ruang algoritma, dapat menentukan laju peningkatan
Universitas Sumatera Utara
17
waktu dan ruang yang diperlukan algoritma dengan meningkatkan ukuran masukan n. Untuk menjelaskan konsep Big-O, diasumsikan terdapat dua fungsi f dan g, dengan kecepatan tingkat pertumbungan yang berbeda. Misalnya, f(n) = 100n2, dan g(n) = n4. Perbandingan pertumbuhan fungsi f dan g dapat dilihat pada Table 2.8, grafik fungsi f dan g dapat dilihat pada Gambar 2.4.
Tabel 2.8 Perbandingan g
Pertumbuhan fungsi f dan g
n
f(n)
g(n)
10
10.000
10.000
50
250.000
6.250.000
100
1.000.000
100.000.000
150
2.250.000
506.250.000
f
1
10
Gambar 2.4 Grafik fungsi f dan g Dari tabel 2.8 terlihat bahwa fungsi g(n) memiliki tingkat pertumbuhan yang lebih cepat dari pada f(n) saat n > 10, dan dapat dikatakan bahwa f(n) adalah Big-O dari g(n). Defenisi (Big-O): Misalkan f(n) dan g(n) adalah dua fungsi asimtot nonnegatif. Dapat dikatakan bahwa f(n) = O(g(n)), jika dan hanya jika terdapat dua konstanta positif C dan n0 sehingga demikian f(n) ≤ Cg(n) saat n ≥ n0. Makna notasi Big-O adalah jika sebuah algoritma mempunyai waktu asimptotik O(f(n)), maka jika n dibuat semakin besar, waktu yang dibutuhkannya tidak akan pernah melebihi suatu konstanta C dikali dengan f(n). Jadi, f(n) adalah batas lebih atas (upper bound) dari T(n) untuk n yang besar. Kita katakana T(n) berorde paling besar f(n) (Munir, 2006).
Universitas Sumatera Utara
18
2.6 Penelitian yang Relevan Berikut ini beberapa penelitian tentang kriptografi dan kompresi data yang berkaitan dengan algoritma Playfair Cipher dan Run Length Encoding : 1.
Pada penelitian Namira (2014), diimplementasikan algoritma kriptografi knapsack
dan
algoritma
kompresi data
Run
Length Encoding
untuk
mengamankan dan kompresi file teks. Kesimpulan dari penelitian ini Kombinasi Algoritma Knapsack dan RLE pada file Teks tepat digunakan apabila dalam suatu plainteks (pesan asli) memiliki banyak perulangan karakter. 2.
Berdasarkan penelitian oleh Lutvianus Satria (2015), membangun aplikasi enkripsi dan dekripsi pesan elektronik (SMS) dengan metode Playfair Cipher pada Smartphone berbasis Android. Hasil pengujian yang dilakukan di beberapa versi android menunjukan bahwa aplikasi enkripsi dan dekripsi SMS menggunakan metode Playfair Cipher berjalan dan berfungsi dengan baik di semua versi android yang diujikan.
3.
Penelitian oleh Ahmad S (2015). Analisis Perbandingan Metode Playfair Cipher dan Elgamal pada Kriptografi Citra. Kesimpulan dari penelitian ini adalah berdasarkan hasil pengujian pada tahap enkripsi, hasil enkripsi dengan menggunakan metode Playfair Cipher lebih baik dari hasil enkripsi metode ElGamal dikarenakan secara kasat mata, hasil citra yang dienkripsi dengan metode ElGamal masih menunjukkan corak/pola yang lebih jelas/menyerupai citra sebelum dienkripsi dibandingkan dengan citra yang dienkripsi dengan metode Playfair Cipher.
Universitas Sumatera Utara