Implementasi Algoritma Kriptografi Hill Cipher dan Kompresi Data Menggunakan Algoritma Levenstein Dalam Pengamanan File Teks
BAB II
LANDASAN TEORI
2.1. Kompresi
2.1.1. Definisi Kompresi
Kompresi data adalah ilmu atau seni yang merepresentasikan informasi dalam bentuk
yang lebih compact (Shanmugasundaram, 2011). 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 teknik untuk
mengurangi ukuran data agar penyimpanannya jauh lebih padat dan juga untuk
mengurangi waktu pengiriman data tersebut (Budiman & Rachmawati, 2017).
Kompresi data bertujuan untuk mengurangi jumlah bit yang digunakan untuk
menyimpan atau mengirimkan informasi (Gailly, 1995).
Tujuan daripada kompresi data tidak lain adalah untuk mengurangi data yang
berlebihan (Redundancy Data) sehingga ukuran data menjadi lebih kecil dan lebih
ringan sehingga mengurangi biaya untuk penyimpanan (Rani, 2016).
Proses kompresi dan dekompresi data dapat ditunjukkan pada diagram blok
seperti pada Gambar 2.1.
Universitas Sumatera Utara
7
Kompresi
Uncompressed Data
Dekompresi
Compressed Data
Compressed Data
Uncompressed Data
Gambar 2.1 Diagram Blok Proses Kompresi dan Dekompresi Data (Pu, 2006)
2.1.2. Penggolongan Kompresi
Secara garis besar terdapat 2 buah penggolongan algoritma kompresi data yaitu
kompresi lossy dan kompresi lossless (Merdiyan, M. 2005).
1. Kompresi Lossless merupakan metoda kompresi data yang memungkinkan data
asli dapat disusun kembali dari data hasil kompresi maka rasio kompresi pun tidak
dapat terlalu besar untuk memastikan semua data dapat dikembalikan ke bentuk
semula (Sidhu et al, 2014). Contoh metode ini adalah Levenstein Code, Elias
Gamma Code, Shannon-Fano Coding, Huffman Coding, Arithmetic Coding, Run
Length Encoding dan lain-lain.Konsep dasar kompresi lossless dapat dilihat pada
Gambar 2.2.
Gambar 2.2. Ilustrasi Kompresi Lossless (Sayood, 2006)
2. Kompresi Lossy adalah suatu metode untuk mengkompresi dan mendekompresi
data yang dimana data setelah didekompresi mungkin berbeda dari data aslinya,
tetapi perbedaan itu cukup dekat (Sidhu et al, 2014). Metode ini paling sering
digunakan untuk kompres data multimedia (Audio file dan gambar). Format
kompresi Lossy mengalami generation loss yaitu jika mengalami proses kompresidekompresi berulang kali maka akan menyebabkan kehilangan kualitas secara
progresif. Contoh metode ini adalah Transform Coding, Wavelet, dan lainlain.Konsep dasar kompresi lossy dapat dilihat pada Gambar 2.3.
Universitas Sumatera Utara
8
Gambar 2.3. Ilustrasi Kompresi Lossy (Sayood, 2006)
2.1.3. Pengukuran Kinerja Kompresi Data
Ada beberapa faktor pembanding yang digunakan dalam penelitian ini, yaitu Ratio of
Compression (RC), Compression Ratio (CR), Redundancy (Rd).
1. Ratio of Compression (Rc)
Ratio of Compression (Rc) adalah perbandingan antara ukuran data sebelum
dikompresi dengan ukuran data setelah dikompresi (Salomon, 2007).
2. Compression Ratio (Cr)
Compression Ratio (Cr) adalah persentasi besar data yang telah dikompresi yang
didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan
ukuran data sebelum dikompresi (Salomon, 2007).
3. Saving Percentages / Space Saving (SS)
Saving Percentages menghitung persentasi penyusutan dari data sebelum
dilakukan kompresi (Rani, 2016).
2.1.4. Konsep Kompresi Data
Proses kompresi sendiri didasarkan pada bahwa isi file akan dibaca secara per byte (8
bit) sehingga menghasilkan nilai pembacaan antara 0 hingga 255.Suatu metode pada
kompresi data akan menghasilkan bit-bit (satuan terkecil pembentuk data) data baru
Universitas Sumatera Utara
9
yang lebih pendek dibandingkan oleh bit-bit data sebelum dikompresi. Bit-bit data
yang lebih pendek tersebut biasanya tidak akan bisa dibaca oleh komputer sebelum
dilakukan proses encoding. Didalam komputer satu karakter direpresentasikan oleh
bilangan ASCII (American Standard Code For Information Interchange) sebanyak
delapan bit dalam bilangan biner. Jika ternyata jumlah bit-bit data tersebut bukan
merupakan kelipatan delapan. Maka dibentuk variabel baru sebagai penambahan ke
bit-bit data itu agar bit-bit data tersebut habis dibagi delapan. Variabel ini adalah
padding dan flag bits.
1. Flag Bits
Flag bits adalah penambahan bilangan biner sepanjang delapan bit setelah padding
dimana flag bits ini adalah sejumlah bilangan yang memberikan sebuah tanda bahwa
terdapat n buah padding di dalam bit-bit data hasil dari kompresi. Penambahan flag
bits ini dimaksudkan untuk mempermudah dalam membaca bit-bit data hasil kompresi
pada saat proses dekompresi. Contoh misalkan bit-bit data yang telah diberikan
padding adalah 10010110. Karena terdapat 1 bit penambahan padding maka flag
bitsnya adalah bilangan biner dari 1 dengan panjang 8 bit yaitu 00000001. Sehingga
bit-bit datanya menjadi 1001011000000001 setelah diberikan flag bits.
2. Padding
Padding adalah penambahan bit 0 sebanyak kekurangan jumlah bit-bit data pada hasil
proses kompresi sehingga jumlah keseluruhan bit-bit data tersebut merupakan
kelipatan delapan (habis dibagi delapan). Contoh misalkan dihasilkan bit-bit data hasil
kompresi yaitu 1001011. Terdapat 7 bit data dalam bilangan biner. Maka dilakukan
penambahan bit 0 sebanyak 1 kali agar jumlah bit-bit data tersebut habis dibagi
delapan. Sehingga bit bit data itu menjadi 10010110 setelah diberikan padding.
2.1.5. Algoritma Levenstein Code
Pada tahun 1968 Vladimir Levenstein mengembangkan kode Levenstein yang dapat
digunakan untuk bilangan bulat non-negatif. Proses encoding dan decoding dilakukan
dibeberapa tahap (Antoni et al, 2014).
Levenstein kode untuk nol adalah 0 tunggal. Untuk kode angka positif n,
berikut adalah langkah encode-nya (Antoni et al, 2014):
Universitas Sumatera Utara
10
1. Set angka pertama dari C dengan 1. Letakkan kode-sejauh-ini pada string kosong.
2. Ambil nilai biner dari n tanpa angka 1 (buang indeks ke-0 dari nilai biner) di awal
dan tambahkan pada kode-sejauh-ini.
3. Nyatakan M sebagai jumlah bit yang ditambahkan pada tahap 2.
4. Jika M ≠ 0, tambahkan C dengan 1 dan lakukan langkah 2 kembali, tetapi dengan
nilai M, bukan n.
5. Jika M = 0, tambahkan 1 sejumlah
diikuti dengan 0 ke kode-sejauh-ini dan
berhenti.
. Nilai biner dari 4 adalah “100”, kita
Untuk contoh kasus, kita anggap
ambil “00” dan didapatkan
dan �
yaitu “10”, kita ambil “0” dan didapatkan
Kemudian hitung nilai biner dari
dan �
maka kode sejauh ini adalah “000”. Kemudian hitung nilai biner
yaitu “1”, kita ambil ” ” dan didapatkan
Karena
maka kode sejauh ini adalah “00”.
maka kode sejauh ini adalah “000”.
maka kode adalah tambahkan “1” sejumlah � yaitu 3 diikuti “0” dan
digabungkan dengan kode sejauh ini sehingga menjadi 1110000. Sehingga 4 pada
kode Levenstein adalah 1110|0|00.
Tabel 2.1 Tabel Kode Levenstein (Salomon, 2007)
n Kode Levenstein N
Kode Levenstein
0
0
9
11100
1 001
1
10
10
11100
1 010
2
110
0
11
11100
1 011
3
110
1
12
11100
1 100
4
1110 0 00
13
11100
1 101
5
1110 0 01
14
11100
1 110
6
1110 0 10
15
11100
1 111
7
1110 0 11
16 111100 0 00
0000
8
11100 1 000
17 111100 0 00
0001
Decoding dilakukan dengan Brute Force Decoding sebagai berikut:
1. Baca flag bits (8 bit paling akhir) untuk mengetahui jumlah padding bits.
2. Periksa mulai dari bit pertama (paling kiri),
3. Bila bit ke- terdapat dalam tabel kode Levenstein, ubah ke string yang sesuai.
Universitas Sumatera Utara
11
4. Bila bit ke- tidak terdapat dalam tabel, baca string di depannya, bit
sampai
kumpulan bit tersebut terdapat dalam tabel.
5. Lakukan langkah 3 dan 4 sampai batas sebelum padding.
2.2. Kriptografi
2.2.1. Definisi Kriptografi
Kriptografi berasal dari Bahasa Yunani : “cryptos” artinya rahasia, sedangkan
“graphein” artinya tulisan. 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
adalah suatu ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara
menyandikan ke dalam bentuk yang tidak dapat dimengerti maknanya.
Fungsi-fungsi mendasar dalam kriptografi adalah enkripsi dan dekripsi.
Enkripsi adalah proses mengubah suatu pesan asli (plaintext) menjadi suatu pesan
dalam bahasa sandi (ciphertext). Enkripsi bisa diartikan dengan cipher atau kode,
dimana pesan asli (plaintext) diubah menjadi kode-kode tersendiri sesuai metode yang
disepakati kedua belah pihak, baik pengirim maupun penerima (Prerna et al, 2014).
Sedangkan dekripsi adalah proses mengubah pesan dalam suatu bahasa sandi
(ciphertext) menjadi pesan asli (plaintext) kembali. Urutan proses kriptografi dapat
dilihat pada Gambar 2.4 berikut :
Plaintext
Enkripsi
Chipertext
Dekripsi
Plaintext
Gambar 2.4 Urutan proses kriptografi (Widyartono, A. 2011).
2.2.2. Tujuan Kriptografi
Kriptografi bertujuan untuk memberikan layanan keamanan (Kurniawan, Y. 2004)
sebagai berikut:
1.
Kerahasiaan (Confidentiality)
Layanan yang ditujukan untuk menjaga pesan tidak dapat dibaca oleh pihakpihakyang tidak berhak.
2.
Keutuhan Data (Integrity)
Penerima harus dapat memeriksa apakah pesan telah dimodifikasi ditengah
jalanatau tidak. Seorang penyusup seharusnya tidak dapat memasukkan tambahan
Universitas Sumatera Utara
12
kedalam pesan, mengurangi atau mengubah pesan selama data berada
diperjalanan.
3.
Autentikasi (Message Authentication)
Penerima pesan dapat memastikan keaslian pengirimnya. Penyerang tidak dapat
berpura- pura sebagai orang lain.
4.
Menolak Penyangkalan (Nonrepudiation)
Pengirim seharusnya tidak dapat mengelak bahwa dialah pengirim pesan yang
sesungguhnya. Tanpa kriptografi, seseorang dapat mengelak bahwa dialah
pengirim email yang sesungguhnya.
2.2.3. Sistem Kriptografi
Sistem kriptografi adalah algoritma, seluruh kemungkinan plaintext, ciphertext dan
kunci. P adalah notasi yang digunakan untuk plaintext, C adalah ciphertext, E adalah
fungsi enkripsi dan D adalah fungsi dekripsi (Schneier, 1996). Sedangkan untuk kunci
dapat dinotasikan sebagai K.
Berdasarkan kunci yang dipakai, algoritma kriptografi dibagi menjadi tiga,
yaitu algoritma simetri (menggunakan satu kunci untuk enkripsi dan dekripsi),
algoritma asimetri (menggunakan kunci yang berbeda untuk enkripsi dan dekripsi)
dan fungsi hash (Ariyus, 2008).
Selain berdasarkan kunci yang dipakai, karakteristik kriptografi juga dibagi
berdasarkan tipe operasi yang dipakai untuk enkripsi dan dekripsi serta berdasarkan
tipe pengolahan pesan (Sadikin, 2012).
2.2.4. Jenis Kriptografi
Algoritma Kriptografi dibagi tiga berdasarkan kunci
yang dipakai,
yaitu
algoritmasimetri (menggunakan satu kunci untuk proses enkripsi dan dekripsi),
algoritmaasimetri (menggunakan kunci yang berbeda untuk proses enkripsi dan
dekripsi), dan fungsi hash (Ariyus, 2008).
1. Kriptografi Simetri
Algoritma simetris adalah algoritma yang menggunakan kunci enkripsi yang sama
dengan kunci dekripsinya (Kromodimoeljo, 2010). Istilah lain untuk algoritma
simetris adalah kriptografi kunci privat (private key cryptography) atau kriptografi
Universitas Sumatera Utara
13
konvensional (conventional cryptography). Skema Algoritma Simetri dapat dilihat
pada Gambar2.5.
Kunci
Plaintext
A
Enkripsi
Ciphertext
Plaintext
Dekripsi
B
Gambar 2.5 Skema Algoritma Simetris (Halim, A. 2013)
Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih
suatu kunci tertentu yang sama untuk dipakai bersama, dan kunci ini haruslah rahasia
bagi pihak yang tidak berkepentingan sehingga algoritma ini disebut juga algoritma
kunci rahasia (secret-key algorithm) (Ayushi, 2010). Jika kunci tersebut diketahui oleh
orang lain maka orang tersebut dapat melakukan enkripsi dan dekripsi pada pesan.
Yang termasuk algoritma kunci simetris adalah Hill Cipher, Affine Cipher, OTP, DES,
RC2, RC4, RC5, IDEA, Twofish, Magenta, FEAL, dan lain-lainnya.
2. Kriptografi Asimetri
Algoritma asimetris disebut juga dengan kriptografi kunci publik karena algortima ini
memiliki kunci yang berbeda untuk enkripsi dan dekripsi, dimana enkripsi
menggunakan public key dan untuk dekripsinya menggunakan private key. Public key
dan private key harus saling berpasangan secara matematis. Dengan memberikan
publickey, pembuat kunci berhak memberikan dan mendapatkan public key agar pesan
aman dan hanya bisa dibaca oleh si pembuat kunci. Dalam kriptografi kunci asimetri,
hampirsemua algoritma kriptografinya menggunakan konsep kunci publik, seperti
Rivest Shamir-Adleman (RSA), El-Gamal, Rabin dan sebagainya (Harahap, 2014).
Skema kriptografi asimetris ditunjukkan secara umum pada Gambar 2.6.
Universitas Sumatera Utara
14
Kunci Publik
Plainteks
Algoritma
Enkripsi
Kunci Rahasia
Cipherteks
Algoritma
Dekripsi
Plainteks
Gambar 2.6 Skema Algoritma Asimetris ( Halim, A. 2013)
Kriptografi asimetri ini dapat dianalogikan seperti kotak surat yang terkunci
dan memiliki lubang untuk memasukan surat. Setiap orang dapat memasukkan surat
ke dalam kotak surat tersebut, tetapi hanya pemilik surat yang memiliki kunci dan
yang dapat membuka kotak surat. Kunci publik dapat dikirim ke penerima melalui
saluran yang sama dengan saluran yang digunakan untuk mengirim pesan, tidak perlu
takut, karena pihak yang tidak berkepentingan tidak akan dapat mendekripsi pesan
tersebut, karena tidak memiliki kunci privat.
3. Fungsi Hash
Fungsi hash adalah sebuah fungsi yang masukannya adalah sebuah pesan dan
keluarannya adalah sebuah sidik pesan (message fingerprint) (Ariyus, 2008).
Fungsi hash sering disebut dengan fungsi hash satu arah (one-way function),
message digest, fingerprint, fungsi kompresi dan message authentication code
(MAC) yang merupakan suatu fungsi matematika yang mengambil masukan panjang
variabel dan mengubahnya ke dalam urutan biner dengan panjang yang tetap. Fungsi
hash biasanya diperlukan bila ingin membuat sidik jari dari suatu pesan. Sidik jari
pada pesan merupakan suatu tanda bahwa pesan tersebut benar-benar berasal dari
orang yang diinginkan (Ariyus, 2008). Beberapa fungsi hash yang banyak dipakai
adalah MD5 dan SHA.
2.2.5. Algoritma Hill Cipher
Hill Cipher termasuk dalam salah satu kriptosistem polialfabetik, artinya setiap
karakter alfabet bisa dipetakan ke lebih dari satu macam karakter alfabet. Lester S.Hill
yang menemukan Hill Cipher pada tahun 1929.Teknik Hill Cipher dikembangkan
oleh Lester S.Hill pada Hunter Collage. Hill Cipher menggunakan matriks untuk
Universitas Sumatera Utara
15
mentransformasi string berupa blok huruf (Simamora,2015).
={�
Misalkan m adalah bilangan bulat positif, dan �
�
� merupakan matriks yang nilai elemennya terdiri dari
suatu kunci K, dapat didefenisikan
���
���
�
dimana semua operasi dilakukan dalam matriks
26
�
26 },
dan
26 .
misalkan K
maka untuk
�
Cara kerja Hill Cipher dapat disederhanakan dengan cara perkalian dengan
matriks kunci (K). K merupakan sebuah matriks kunci �
memiliki multiplicative inverse
invers karena matriks
sehingga
∙
� yang invertible, yaitu
. Kunci harus memiliki
tersebut adalah kunci yang digunakan untuk melakukan
dekripsi. Cara mencari matriks kunci itu sendiri adalah dengan mencari GCD
(Greatest Common Divisor) dari matriks K tersebut. Cara kerja Hill Cipher dapat
diuraikan sebagai berikut. Pertama tentukan matriks kunci secara acak. Misal matriks
kuncinya:
(
)
Lalu buktikan matriks kunci tersebut apakah mempunyai invers atau tidak. Syarat
matriks punya invers yaitu determinan matriks
maka selanjutnya buktikan �
�
. Jika sudah memenuhi syarat,
.Sebagai contoh, buktikan apakah
matriks kunci ini mempunyai invers apabila diketahui
(
Determinan matriks :
(
:
)
)
Setelah didapat determinan maka dilakukan pembuktian selanjutnya :
�
�
�
���
���
Universitas Sumatera Utara
16
���
���
Maka terbukti matriks diatas merupakan matriks kunci karena memenuhi
�
syarat yaitu
�
. Setelah mendapatkan matriks kunci, maka rumus
enkripsi dan dekripsi sebagai berikut:
Enkripsi : �
Dekripsi : �
Dimana :
�
�
�
�
� ���
� ���
�
�
�
�
�
�
�
Langkah-langkah untuk proses enkripsi plaintext dengan Hill Cipher adalah
sebagai berikut (Ramadhani, 2016) :
1.
Pilih suatu matriks kunci
yang berupa matriks bujur sangkar yang dipakai
sebagai kunci.
2.
Transformasikan tiap huruf dalam teks ke bilangan bulat yang sesuai
.
3.
Kelompokkan barisan angka yang didapat ke dalam beberapa blok vektor � yang
panjangnya sama dengan ukuran matriks
4.
5.
Hitung �
∙ � ���
.
untuk tiap vektor �.
Kembalikan tiap angka dalam vektor sandi � ke huruf yang sesuai untuk
mendapatkan teks sandi. Skema kerja enkripsi Hill Cipher dapat dilihat pada
Gambar 2.7.
Universitas Sumatera Utara
17
Input Matriks Kunci
Plaintext
Tranformasi ke
Bentuk Nilai
Ciphertext
Tranformasi ke
Bentuk Huruf
Susun Matriks
Dalam Bentuk
Matriks �
�
Gambar 2.7 Illustrasi Enkripsi Hill Cipher
� ���
Untuk mentransformasikan plaintext maka pertama sekali semua alphanumerik
dinyatakan dalam Tabel 2.2 seperti berikut:
Tabel 2.2 Transformasi Alphanumerik
A
B
C
D
E
F
G
H
I
J
K
L
M
0
1
2
3
4
5
6
7
8
9
10
11
12
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
13
14
15
16
17
18
19
20
21
22
23
24
25
Contoh : Kode Hill dengan mengunakan matriks
(
dengan kunci matriks :
)
Plaintext adalah “SEMOGA”. Proses enkripsi dapat dilihat pada tabel 2.3.
Tabel 2.3 Enkripsi Hill Cipher
Kunci
Matriks
Hasil perkalian
Plaintext
Hasil Akhir
Ciphertext
kunci dengan
plaintext
(
)
(
)
(
)
(
(
) (
) ���
(
)
( )
(
) ���
(
)
( )
�
)
Jadi, enkripsi dari “SEMOGA” adalah “MAWQYC”.
Universitas Sumatera Utara
18
Algoritma proses pendekripsian Hill Cipher dapat diuraikan dalam bentuk
langkah-langkah sebagai berikut (Ramadhani, 2016) :
1. Hitung
�
matriks
�
.
���
sebagai
kunci
pembuka.
ada
jika
2. Transformasikan tiap huruf dalam teks ke bilangan bulat yang sesuai
.
3. Kelompokkan barisan angka yang didapat ke dalam beberapa blok vektor � yang
panjangnya sama dengan ukuran matriks
4. Hitung �
∙ � ���
.
untuk tiap vector �.
5. Kembalikan tiap angka dalam vektor sandi � ke huruf yang sesuai untuk
mendapatkan teks sandi. Gambar 2.8 berikut adalah ilustrasi dekripsi Hill Cipher
Hitung
Plaintext
Tranformasi ke
Bentuk Nilai
Ciphertext
Tranformasi ke
Bentuk Huruf
Susun Matriks
Dalam Bentuk
Matriks C
�
Gambar 2.8 Illustrasi Dekripsi Hill Cipher
� ���
Contoh : Kode Hill dengan mengunakan matriks 3×3 dengan kunci matriks :
)
(
Ciphertext adalah “MAWQYC”.
a. Cari Adjoint yaitu transpose matriks kofaktor dari matriks K yang ditunjukkan
pada Tabel 2.4.
Tabel 2.4 Adjoint dari Matriks K
K11
(
)
Universitas Sumatera Utara
19
K12
(
)
K13
(
)
K21
(
)
K22
(
)
K23
(
)
K31
(
)
K32
(
)
K33
(
)
Universitas Sumatera Utara
20
Maka didapatkan adjoint dari matriks K adalah :
�
(
�
(
2
2
2)
22
2
)
b. Cari determinan matriks K :
(
)
c. Cari invers determinan K
�
���
���
���
���
Kemudian cari nilai X seperti pada tabel 2.5.
Tabel 2.5 Proses Pencarian Invers determinan
X
d. Kemudian cari
���
1
3
2
6
3
9
4
12
9
1
.
�
�
Universitas Sumatera Utara
21
(
)
(
e. Buktikan
) ���
) ���
(
dan
saling invers apabila hasil perkalian keduanya
menghasilkan matriks identitas.
(
)
(
f. Proses dekripsi dapat dilihat pada tabel 2.6.
)
(
)
Tabel 2.6 Dekripsi Hill Cipher
Hasil perkalian
kunci dengan
Ciphertext
Hasil Akhir
Plaintext
ciphertext
(
)
(
)
(
)
(
(
)
(
) ���
(
)
( )
) (
) ���
(
)
( )
Jadi, Dekripsi dari “MAWQYC” adalah “SEMOGA” .
2.3. File Teks
Teks adalah kumpulan dari karakter – karakter atau string yang menjadi satu kesatuan.
Teks yang memuat banyak karakter didalamnya selalu menimbulkan masalah pada
media penyimpanan dan kecepatan waktu pada
saat transmisi data.
File
teks
merupakan file yang berisi informasi-informasi dalam bentuk teks. Data yang berasal
dari dokumen pengolah kata, angka yang digunakan dalam perhitungan, nama dan
alamat dalam basis data merupakan contoh masukan data teks yang terdiri dari
karakter, angka dan tanda baca (Pramilo, 2008).
Universitas Sumatera Utara
22
Masukan dan keluaran data teks direpresentasikan sebagai set karakter atau
sistem kode yang dikenal oleh sistem komputer. Ada tiga macam set karakter yang
umum digunakan untuk masukan dan keluaran pada komputer, yaitu ASCII, Unicode,
dan EBCDIC, ASCII (American Standard Code for Information Interchange)
merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex, dan
Unicode tetapi ASCII bersifat lebih universal. ASCII digunakan oleh komputer dan
alat komunikasi lain untuk menunjukkan teks. Kode ASCII memiliki komposisi
bilangan biner sebanyak 8 bit, dimulai dari 00000000 dan 11111111. Total kombinasi
yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan
desimal. Unicode adalah suatu standar industri yang dirancang untuk mengizinkan
teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan dan
dimanipulasi secara konsisten oleh komputer. EBCDIC (Extended Binary Code
Decimal Interchange Code) merupakan set karakter yang diciptakan oleh komputer
merk IBM. EBCDIC terdiri dari 256 karakter yang masing-masing berukuran 8 bit
(Sudewa, 2003). Kode ASCII dapat dilihat pada tabel 2.7 berikut:
Tabel 2.7 Kode ASCII
Dec
Char
Dec
Char
Dec
Char
Dec
Char
Dec
Char Dec
Char
0
NUL
43
+
86
V
129
HOP
172
¬
215
×
1
SOH
44
,
87
W
130
BPH
173
-
216
Ø
2
STX
45
-
88
X
131
NBH
174
®
217
Ù
3
ETX
46
.
89
Y
132
IND
175
¯
217
Ú
4
EOT
47
/
90
Z
133
NEL
176
°
218
Û
5
ENQ
48
0
91
[
134
SSA
177
±
219
Ü
6
ACK
49
1
92
\
135
ESA
178
²
220
Ü
7
BEL
50
2
93
]
136
HTS
179
³
221
Ý
8
BS
51
3
94
^
137
HTJ
180
´
222
Þ
9
TAB
52
4
95
_
138
VTS
181
µ
223
ß
10
LF
53
5
96
`
139
PLD
182
¶
224
à
11
VT
54
6
97
A
140
PLU
183
·
225
á
12
FF
55
7
98
B
141
RI
184
¸
226
â
13
CR
56
8
99
C
142
SS2
185
¹
227
ã
Universitas Sumatera Utara
23
14
SO
57
9
100
D
143
SS3
186
º
228
ä
15
SI
58
:
101
E
144
DCS
187
»
229
å
16
DLE
59
;
102
F
145
PU1
188
¼
230
æ
17
DC1
60
<
103
G
146
PU2
189
½
231
ç
18
DC2
61
=
104
H
147
STS
190
¾
232
è
19
DC3
62
>
105
I
148
CCH
191
¿
233
é
20
DC4
63
?
106
J
149
MW
192
À
234
ê
21
NAK
64
@
107
K
150
SPA
193
Á
235
ë
22
SYN
65
A
108
L
151
EPA
194
Â
236
ì
23
ETB
66
B
109
M
152
SOS
195
Ã
237
í
24
CAN
67
C
110
N
153
SGCI
196
Ä
238
î
24
EM
68
D
111
O
154
SCI
197
Å
239
ï
26
SUB
69
E
112
P
155
CSI
198
Æ
240
ð
27
ESC
70
F
113
Q
156
ST
199
Ç
241
ñ
28
FS
71
G
114
R
157
OSC
200
È
242
ò
29
GS
72
H
115
S
158
PM
201
É
243
ó
30
RS
73
I
116
T
159
APC
202
Ê
244
ô
31
US
74
J
117
U
160
Space
203
Ë
245
õ
32
(space)
75
K
118
V
161
¡
204
Ì
246
ö
33
!
76
L
119
W
162
¢
205
Í
247
÷
34
"
77
M
120
X
163
£
206
Î
248
ø
35
#
78
N
121
Y
164
¤
207
Ï
249
ù
36
$
79
O
122
Z
165
¥
208
Ð
250
ú
37
%
80
P
123
{
166
¦
209
Ñ
251
û
38
&
81
Q
124
|
167
§
210
Ò
252
ü
39
'
82
R
125
}
168
¨
211
Ó
253
ý
40
(
83
S
126
~
169
©
212
Ô
254
Þ
41
)
84
T
127
•
170
ª
213
Õ
255
ÿ
42
*
85
U
128
PAD
171
«
214
Ö
Universitas Sumatera Utara
24
2.4. Penelitian yang Relevan
Berikut ini beberapa penelitian yang terkait dengan algoritma RSA dan Levenstein:
a. Erdiansyah, Umri (2014) dalam skripsi yang berjudul Perbandingan Algoritma
Elias Delta Code Dengan Levenstein Untuk Kompresi File Teks. Dalam skripsi
ini, dapat disimpulkan bahwa, penelitian menunjukkan dalam kinerja metode
Elias Delta Code lebih baik dibandingkan dengan metode Levenstein dengan
rasio kompresi rata-rata sebesar 114.69% pada kompresi String Homogen, dan
rasio kompresi rata-rata sebesar 252.03% pada kompresi String Heterogen.
b. Yulandari, Zulaiha (2016) dalam skripsi yang berjudul Perbandingan Algoritma
Ternary Comma Code (Tcc) dan Levenstein Code dalam Kompresi File Text.
Dalam skripsi ini disimpulkan bahwa Hasil pengujian kompresi file teks *.txt
dengan karakter yang sama (homogen) dan berbeda (heterogen) menunjukkan
bahwa metode Ternary Comma Code lebih baik dibandingkan dengan metode
Levenstein Code.
c. Antoni (2014) dalam tesis yang berjudul Analisis Hasil Kompresi Data Teks pada
Algoritma Elias Gamma Code, Elias Delta Code dan Levenstein Code. Dalam
tesis ini disimpulkan bahwa Algoritma Levenstein Code baik digunakan jika nilai
terbesar yang akan dikodekan tidak diketahui sebelumnya, atau untuk kompres
data yang nilai kecil jauh lebih sering daripada nilai besar namun waktu yang
diperlukan untuk melakukan kompresi tidak secepat bila dibandingkan dengan
algoritma Elias Gamma Code dan Elias Delta Code.
d. Sihombing, Marlina (2014) dalam skripsi yang berjudul Sistem Kriptografi
Hybrid (Hill Cipher dan Knapsack) pada Pengamanan File. Dalam skripsi ini
disimpulkan bahwa pada enkripsi file dengan Algoritma Hill Cipher terdapat
perbedaan ukuran file asli dengan file yang terenkripsi, dimana file yang
terenkripsi akan lebih besar ukuran file-nya dibandingkan dengan ukuran file
aslinya.
e. Ramadhani,Fitri (2016) dalam skripsi yang berjudul Implementasi Algoritma Hill
Cipher 3x3 dan Rabin Public Key pada Pengirimam Short Message Service
(SMS). Dalam skripsi ini disimpulkan bahwa pada penelitian ini, proses enkripsi
dan dekripsi dari kombinasi algoritma Hill Cipher dan Rabin Public Key
memenuhi kriteria data. Waktu yang dibutuhkan untuk proses dekripsi lebih lama
dengan waktu proses enkripsi.
Universitas Sumatera Utara
LANDASAN TEORI
2.1. Kompresi
2.1.1. Definisi Kompresi
Kompresi data adalah ilmu atau seni yang merepresentasikan informasi dalam bentuk
yang lebih compact (Shanmugasundaram, 2011). 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 teknik untuk
mengurangi ukuran data agar penyimpanannya jauh lebih padat dan juga untuk
mengurangi waktu pengiriman data tersebut (Budiman & Rachmawati, 2017).
Kompresi data bertujuan untuk mengurangi jumlah bit yang digunakan untuk
menyimpan atau mengirimkan informasi (Gailly, 1995).
Tujuan daripada kompresi data tidak lain adalah untuk mengurangi data yang
berlebihan (Redundancy Data) sehingga ukuran data menjadi lebih kecil dan lebih
ringan sehingga mengurangi biaya untuk penyimpanan (Rani, 2016).
Proses kompresi dan dekompresi data dapat ditunjukkan pada diagram blok
seperti pada Gambar 2.1.
Universitas Sumatera Utara
7
Kompresi
Uncompressed Data
Dekompresi
Compressed Data
Compressed Data
Uncompressed Data
Gambar 2.1 Diagram Blok Proses Kompresi dan Dekompresi Data (Pu, 2006)
2.1.2. Penggolongan Kompresi
Secara garis besar terdapat 2 buah penggolongan algoritma kompresi data yaitu
kompresi lossy dan kompresi lossless (Merdiyan, M. 2005).
1. Kompresi Lossless merupakan metoda kompresi data yang memungkinkan data
asli dapat disusun kembali dari data hasil kompresi maka rasio kompresi pun tidak
dapat terlalu besar untuk memastikan semua data dapat dikembalikan ke bentuk
semula (Sidhu et al, 2014). Contoh metode ini adalah Levenstein Code, Elias
Gamma Code, Shannon-Fano Coding, Huffman Coding, Arithmetic Coding, Run
Length Encoding dan lain-lain.Konsep dasar kompresi lossless dapat dilihat pada
Gambar 2.2.
Gambar 2.2. Ilustrasi Kompresi Lossless (Sayood, 2006)
2. Kompresi Lossy adalah suatu metode untuk mengkompresi dan mendekompresi
data yang dimana data setelah didekompresi mungkin berbeda dari data aslinya,
tetapi perbedaan itu cukup dekat (Sidhu et al, 2014). Metode ini paling sering
digunakan untuk kompres data multimedia (Audio file dan gambar). Format
kompresi Lossy mengalami generation loss yaitu jika mengalami proses kompresidekompresi berulang kali maka akan menyebabkan kehilangan kualitas secara
progresif. Contoh metode ini adalah Transform Coding, Wavelet, dan lainlain.Konsep dasar kompresi lossy dapat dilihat pada Gambar 2.3.
Universitas Sumatera Utara
8
Gambar 2.3. Ilustrasi Kompresi Lossy (Sayood, 2006)
2.1.3. Pengukuran Kinerja Kompresi Data
Ada beberapa faktor pembanding yang digunakan dalam penelitian ini, yaitu Ratio of
Compression (RC), Compression Ratio (CR), Redundancy (Rd).
1. Ratio of Compression (Rc)
Ratio of Compression (Rc) adalah perbandingan antara ukuran data sebelum
dikompresi dengan ukuran data setelah dikompresi (Salomon, 2007).
2. Compression Ratio (Cr)
Compression Ratio (Cr) adalah persentasi besar data yang telah dikompresi yang
didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan
ukuran data sebelum dikompresi (Salomon, 2007).
3. Saving Percentages / Space Saving (SS)
Saving Percentages menghitung persentasi penyusutan dari data sebelum
dilakukan kompresi (Rani, 2016).
2.1.4. Konsep Kompresi Data
Proses kompresi sendiri didasarkan pada bahwa isi file akan dibaca secara per byte (8
bit) sehingga menghasilkan nilai pembacaan antara 0 hingga 255.Suatu metode pada
kompresi data akan menghasilkan bit-bit (satuan terkecil pembentuk data) data baru
Universitas Sumatera Utara
9
yang lebih pendek dibandingkan oleh bit-bit data sebelum dikompresi. Bit-bit data
yang lebih pendek tersebut biasanya tidak akan bisa dibaca oleh komputer sebelum
dilakukan proses encoding. Didalam komputer satu karakter direpresentasikan oleh
bilangan ASCII (American Standard Code For Information Interchange) sebanyak
delapan bit dalam bilangan biner. Jika ternyata jumlah bit-bit data tersebut bukan
merupakan kelipatan delapan. Maka dibentuk variabel baru sebagai penambahan ke
bit-bit data itu agar bit-bit data tersebut habis dibagi delapan. Variabel ini adalah
padding dan flag bits.
1. Flag Bits
Flag bits adalah penambahan bilangan biner sepanjang delapan bit setelah padding
dimana flag bits ini adalah sejumlah bilangan yang memberikan sebuah tanda bahwa
terdapat n buah padding di dalam bit-bit data hasil dari kompresi. Penambahan flag
bits ini dimaksudkan untuk mempermudah dalam membaca bit-bit data hasil kompresi
pada saat proses dekompresi. Contoh misalkan bit-bit data yang telah diberikan
padding adalah 10010110. Karena terdapat 1 bit penambahan padding maka flag
bitsnya adalah bilangan biner dari 1 dengan panjang 8 bit yaitu 00000001. Sehingga
bit-bit datanya menjadi 1001011000000001 setelah diberikan flag bits.
2. Padding
Padding adalah penambahan bit 0 sebanyak kekurangan jumlah bit-bit data pada hasil
proses kompresi sehingga jumlah keseluruhan bit-bit data tersebut merupakan
kelipatan delapan (habis dibagi delapan). Contoh misalkan dihasilkan bit-bit data hasil
kompresi yaitu 1001011. Terdapat 7 bit data dalam bilangan biner. Maka dilakukan
penambahan bit 0 sebanyak 1 kali agar jumlah bit-bit data tersebut habis dibagi
delapan. Sehingga bit bit data itu menjadi 10010110 setelah diberikan padding.
2.1.5. Algoritma Levenstein Code
Pada tahun 1968 Vladimir Levenstein mengembangkan kode Levenstein yang dapat
digunakan untuk bilangan bulat non-negatif. Proses encoding dan decoding dilakukan
dibeberapa tahap (Antoni et al, 2014).
Levenstein kode untuk nol adalah 0 tunggal. Untuk kode angka positif n,
berikut adalah langkah encode-nya (Antoni et al, 2014):
Universitas Sumatera Utara
10
1. Set angka pertama dari C dengan 1. Letakkan kode-sejauh-ini pada string kosong.
2. Ambil nilai biner dari n tanpa angka 1 (buang indeks ke-0 dari nilai biner) di awal
dan tambahkan pada kode-sejauh-ini.
3. Nyatakan M sebagai jumlah bit yang ditambahkan pada tahap 2.
4. Jika M ≠ 0, tambahkan C dengan 1 dan lakukan langkah 2 kembali, tetapi dengan
nilai M, bukan n.
5. Jika M = 0, tambahkan 1 sejumlah
diikuti dengan 0 ke kode-sejauh-ini dan
berhenti.
. Nilai biner dari 4 adalah “100”, kita
Untuk contoh kasus, kita anggap
ambil “00” dan didapatkan
dan �
yaitu “10”, kita ambil “0” dan didapatkan
Kemudian hitung nilai biner dari
dan �
maka kode sejauh ini adalah “000”. Kemudian hitung nilai biner
yaitu “1”, kita ambil ” ” dan didapatkan
Karena
maka kode sejauh ini adalah “00”.
maka kode sejauh ini adalah “000”.
maka kode adalah tambahkan “1” sejumlah � yaitu 3 diikuti “0” dan
digabungkan dengan kode sejauh ini sehingga menjadi 1110000. Sehingga 4 pada
kode Levenstein adalah 1110|0|00.
Tabel 2.1 Tabel Kode Levenstein (Salomon, 2007)
n Kode Levenstein N
Kode Levenstein
0
0
9
11100
1 001
1
10
10
11100
1 010
2
110
0
11
11100
1 011
3
110
1
12
11100
1 100
4
1110 0 00
13
11100
1 101
5
1110 0 01
14
11100
1 110
6
1110 0 10
15
11100
1 111
7
1110 0 11
16 111100 0 00
0000
8
11100 1 000
17 111100 0 00
0001
Decoding dilakukan dengan Brute Force Decoding sebagai berikut:
1. Baca flag bits (8 bit paling akhir) untuk mengetahui jumlah padding bits.
2. Periksa mulai dari bit pertama (paling kiri),
3. Bila bit ke- terdapat dalam tabel kode Levenstein, ubah ke string yang sesuai.
Universitas Sumatera Utara
11
4. Bila bit ke- tidak terdapat dalam tabel, baca string di depannya, bit
sampai
kumpulan bit tersebut terdapat dalam tabel.
5. Lakukan langkah 3 dan 4 sampai batas sebelum padding.
2.2. Kriptografi
2.2.1. Definisi Kriptografi
Kriptografi berasal dari Bahasa Yunani : “cryptos” artinya rahasia, sedangkan
“graphein” artinya tulisan. 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
adalah suatu ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara
menyandikan ke dalam bentuk yang tidak dapat dimengerti maknanya.
Fungsi-fungsi mendasar dalam kriptografi adalah enkripsi dan dekripsi.
Enkripsi adalah proses mengubah suatu pesan asli (plaintext) menjadi suatu pesan
dalam bahasa sandi (ciphertext). Enkripsi bisa diartikan dengan cipher atau kode,
dimana pesan asli (plaintext) diubah menjadi kode-kode tersendiri sesuai metode yang
disepakati kedua belah pihak, baik pengirim maupun penerima (Prerna et al, 2014).
Sedangkan dekripsi adalah proses mengubah pesan dalam suatu bahasa sandi
(ciphertext) menjadi pesan asli (plaintext) kembali. Urutan proses kriptografi dapat
dilihat pada Gambar 2.4 berikut :
Plaintext
Enkripsi
Chipertext
Dekripsi
Plaintext
Gambar 2.4 Urutan proses kriptografi (Widyartono, A. 2011).
2.2.2. Tujuan Kriptografi
Kriptografi bertujuan untuk memberikan layanan keamanan (Kurniawan, Y. 2004)
sebagai berikut:
1.
Kerahasiaan (Confidentiality)
Layanan yang ditujukan untuk menjaga pesan tidak dapat dibaca oleh pihakpihakyang tidak berhak.
2.
Keutuhan Data (Integrity)
Penerima harus dapat memeriksa apakah pesan telah dimodifikasi ditengah
jalanatau tidak. Seorang penyusup seharusnya tidak dapat memasukkan tambahan
Universitas Sumatera Utara
12
kedalam pesan, mengurangi atau mengubah pesan selama data berada
diperjalanan.
3.
Autentikasi (Message Authentication)
Penerima pesan dapat memastikan keaslian pengirimnya. Penyerang tidak dapat
berpura- pura sebagai orang lain.
4.
Menolak Penyangkalan (Nonrepudiation)
Pengirim seharusnya tidak dapat mengelak bahwa dialah pengirim pesan yang
sesungguhnya. Tanpa kriptografi, seseorang dapat mengelak bahwa dialah
pengirim email yang sesungguhnya.
2.2.3. Sistem Kriptografi
Sistem kriptografi adalah algoritma, seluruh kemungkinan plaintext, ciphertext dan
kunci. P adalah notasi yang digunakan untuk plaintext, C adalah ciphertext, E adalah
fungsi enkripsi dan D adalah fungsi dekripsi (Schneier, 1996). Sedangkan untuk kunci
dapat dinotasikan sebagai K.
Berdasarkan kunci yang dipakai, algoritma kriptografi dibagi menjadi tiga,
yaitu algoritma simetri (menggunakan satu kunci untuk enkripsi dan dekripsi),
algoritma asimetri (menggunakan kunci yang berbeda untuk enkripsi dan dekripsi)
dan fungsi hash (Ariyus, 2008).
Selain berdasarkan kunci yang dipakai, karakteristik kriptografi juga dibagi
berdasarkan tipe operasi yang dipakai untuk enkripsi dan dekripsi serta berdasarkan
tipe pengolahan pesan (Sadikin, 2012).
2.2.4. Jenis Kriptografi
Algoritma Kriptografi dibagi tiga berdasarkan kunci
yang dipakai,
yaitu
algoritmasimetri (menggunakan satu kunci untuk proses enkripsi dan dekripsi),
algoritmaasimetri (menggunakan kunci yang berbeda untuk proses enkripsi dan
dekripsi), dan fungsi hash (Ariyus, 2008).
1. Kriptografi Simetri
Algoritma simetris adalah algoritma yang menggunakan kunci enkripsi yang sama
dengan kunci dekripsinya (Kromodimoeljo, 2010). Istilah lain untuk algoritma
simetris adalah kriptografi kunci privat (private key cryptography) atau kriptografi
Universitas Sumatera Utara
13
konvensional (conventional cryptography). Skema Algoritma Simetri dapat dilihat
pada Gambar2.5.
Kunci
Plaintext
A
Enkripsi
Ciphertext
Plaintext
Dekripsi
B
Gambar 2.5 Skema Algoritma Simetris (Halim, A. 2013)
Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih
suatu kunci tertentu yang sama untuk dipakai bersama, dan kunci ini haruslah rahasia
bagi pihak yang tidak berkepentingan sehingga algoritma ini disebut juga algoritma
kunci rahasia (secret-key algorithm) (Ayushi, 2010). Jika kunci tersebut diketahui oleh
orang lain maka orang tersebut dapat melakukan enkripsi dan dekripsi pada pesan.
Yang termasuk algoritma kunci simetris adalah Hill Cipher, Affine Cipher, OTP, DES,
RC2, RC4, RC5, IDEA, Twofish, Magenta, FEAL, dan lain-lainnya.
2. Kriptografi Asimetri
Algoritma asimetris disebut juga dengan kriptografi kunci publik karena algortima ini
memiliki kunci yang berbeda untuk enkripsi dan dekripsi, dimana enkripsi
menggunakan public key dan untuk dekripsinya menggunakan private key. Public key
dan private key harus saling berpasangan secara matematis. Dengan memberikan
publickey, pembuat kunci berhak memberikan dan mendapatkan public key agar pesan
aman dan hanya bisa dibaca oleh si pembuat kunci. Dalam kriptografi kunci asimetri,
hampirsemua algoritma kriptografinya menggunakan konsep kunci publik, seperti
Rivest Shamir-Adleman (RSA), El-Gamal, Rabin dan sebagainya (Harahap, 2014).
Skema kriptografi asimetris ditunjukkan secara umum pada Gambar 2.6.
Universitas Sumatera Utara
14
Kunci Publik
Plainteks
Algoritma
Enkripsi
Kunci Rahasia
Cipherteks
Algoritma
Dekripsi
Plainteks
Gambar 2.6 Skema Algoritma Asimetris ( Halim, A. 2013)
Kriptografi asimetri ini dapat dianalogikan seperti kotak surat yang terkunci
dan memiliki lubang untuk memasukan surat. Setiap orang dapat memasukkan surat
ke dalam kotak surat tersebut, tetapi hanya pemilik surat yang memiliki kunci dan
yang dapat membuka kotak surat. Kunci publik dapat dikirim ke penerima melalui
saluran yang sama dengan saluran yang digunakan untuk mengirim pesan, tidak perlu
takut, karena pihak yang tidak berkepentingan tidak akan dapat mendekripsi pesan
tersebut, karena tidak memiliki kunci privat.
3. Fungsi Hash
Fungsi hash adalah sebuah fungsi yang masukannya adalah sebuah pesan dan
keluarannya adalah sebuah sidik pesan (message fingerprint) (Ariyus, 2008).
Fungsi hash sering disebut dengan fungsi hash satu arah (one-way function),
message digest, fingerprint, fungsi kompresi dan message authentication code
(MAC) yang merupakan suatu fungsi matematika yang mengambil masukan panjang
variabel dan mengubahnya ke dalam urutan biner dengan panjang yang tetap. Fungsi
hash biasanya diperlukan bila ingin membuat sidik jari dari suatu pesan. Sidik jari
pada pesan merupakan suatu tanda bahwa pesan tersebut benar-benar berasal dari
orang yang diinginkan (Ariyus, 2008). Beberapa fungsi hash yang banyak dipakai
adalah MD5 dan SHA.
2.2.5. Algoritma Hill Cipher
Hill Cipher termasuk dalam salah satu kriptosistem polialfabetik, artinya setiap
karakter alfabet bisa dipetakan ke lebih dari satu macam karakter alfabet. Lester S.Hill
yang menemukan Hill Cipher pada tahun 1929.Teknik Hill Cipher dikembangkan
oleh Lester S.Hill pada Hunter Collage. Hill Cipher menggunakan matriks untuk
Universitas Sumatera Utara
15
mentransformasi string berupa blok huruf (Simamora,2015).
={�
Misalkan m adalah bilangan bulat positif, dan �
�
� merupakan matriks yang nilai elemennya terdiri dari
suatu kunci K, dapat didefenisikan
���
���
�
dimana semua operasi dilakukan dalam matriks
26
�
26 },
dan
26 .
misalkan K
maka untuk
�
Cara kerja Hill Cipher dapat disederhanakan dengan cara perkalian dengan
matriks kunci (K). K merupakan sebuah matriks kunci �
memiliki multiplicative inverse
invers karena matriks
sehingga
∙
� yang invertible, yaitu
. Kunci harus memiliki
tersebut adalah kunci yang digunakan untuk melakukan
dekripsi. Cara mencari matriks kunci itu sendiri adalah dengan mencari GCD
(Greatest Common Divisor) dari matriks K tersebut. Cara kerja Hill Cipher dapat
diuraikan sebagai berikut. Pertama tentukan matriks kunci secara acak. Misal matriks
kuncinya:
(
)
Lalu buktikan matriks kunci tersebut apakah mempunyai invers atau tidak. Syarat
matriks punya invers yaitu determinan matriks
maka selanjutnya buktikan �
�
. Jika sudah memenuhi syarat,
.Sebagai contoh, buktikan apakah
matriks kunci ini mempunyai invers apabila diketahui
(
Determinan matriks :
(
:
)
)
Setelah didapat determinan maka dilakukan pembuktian selanjutnya :
�
�
�
���
���
Universitas Sumatera Utara
16
���
���
Maka terbukti matriks diatas merupakan matriks kunci karena memenuhi
�
syarat yaitu
�
. Setelah mendapatkan matriks kunci, maka rumus
enkripsi dan dekripsi sebagai berikut:
Enkripsi : �
Dekripsi : �
Dimana :
�
�
�
�
� ���
� ���
�
�
�
�
�
�
�
Langkah-langkah untuk proses enkripsi plaintext dengan Hill Cipher adalah
sebagai berikut (Ramadhani, 2016) :
1.
Pilih suatu matriks kunci
yang berupa matriks bujur sangkar yang dipakai
sebagai kunci.
2.
Transformasikan tiap huruf dalam teks ke bilangan bulat yang sesuai
.
3.
Kelompokkan barisan angka yang didapat ke dalam beberapa blok vektor � yang
panjangnya sama dengan ukuran matriks
4.
5.
Hitung �
∙ � ���
.
untuk tiap vektor �.
Kembalikan tiap angka dalam vektor sandi � ke huruf yang sesuai untuk
mendapatkan teks sandi. Skema kerja enkripsi Hill Cipher dapat dilihat pada
Gambar 2.7.
Universitas Sumatera Utara
17
Input Matriks Kunci
Plaintext
Tranformasi ke
Bentuk Nilai
Ciphertext
Tranformasi ke
Bentuk Huruf
Susun Matriks
Dalam Bentuk
Matriks �
�
Gambar 2.7 Illustrasi Enkripsi Hill Cipher
� ���
Untuk mentransformasikan plaintext maka pertama sekali semua alphanumerik
dinyatakan dalam Tabel 2.2 seperti berikut:
Tabel 2.2 Transformasi Alphanumerik
A
B
C
D
E
F
G
H
I
J
K
L
M
0
1
2
3
4
5
6
7
8
9
10
11
12
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
13
14
15
16
17
18
19
20
21
22
23
24
25
Contoh : Kode Hill dengan mengunakan matriks
(
dengan kunci matriks :
)
Plaintext adalah “SEMOGA”. Proses enkripsi dapat dilihat pada tabel 2.3.
Tabel 2.3 Enkripsi Hill Cipher
Kunci
Matriks
Hasil perkalian
Plaintext
Hasil Akhir
Ciphertext
kunci dengan
plaintext
(
)
(
)
(
)
(
(
) (
) ���
(
)
( )
(
) ���
(
)
( )
�
)
Jadi, enkripsi dari “SEMOGA” adalah “MAWQYC”.
Universitas Sumatera Utara
18
Algoritma proses pendekripsian Hill Cipher dapat diuraikan dalam bentuk
langkah-langkah sebagai berikut (Ramadhani, 2016) :
1. Hitung
�
matriks
�
.
���
sebagai
kunci
pembuka.
ada
jika
2. Transformasikan tiap huruf dalam teks ke bilangan bulat yang sesuai
.
3. Kelompokkan barisan angka yang didapat ke dalam beberapa blok vektor � yang
panjangnya sama dengan ukuran matriks
4. Hitung �
∙ � ���
.
untuk tiap vector �.
5. Kembalikan tiap angka dalam vektor sandi � ke huruf yang sesuai untuk
mendapatkan teks sandi. Gambar 2.8 berikut adalah ilustrasi dekripsi Hill Cipher
Hitung
Plaintext
Tranformasi ke
Bentuk Nilai
Ciphertext
Tranformasi ke
Bentuk Huruf
Susun Matriks
Dalam Bentuk
Matriks C
�
Gambar 2.8 Illustrasi Dekripsi Hill Cipher
� ���
Contoh : Kode Hill dengan mengunakan matriks 3×3 dengan kunci matriks :
)
(
Ciphertext adalah “MAWQYC”.
a. Cari Adjoint yaitu transpose matriks kofaktor dari matriks K yang ditunjukkan
pada Tabel 2.4.
Tabel 2.4 Adjoint dari Matriks K
K11
(
)
Universitas Sumatera Utara
19
K12
(
)
K13
(
)
K21
(
)
K22
(
)
K23
(
)
K31
(
)
K32
(
)
K33
(
)
Universitas Sumatera Utara
20
Maka didapatkan adjoint dari matriks K adalah :
�
(
�
(
2
2
2)
22
2
)
b. Cari determinan matriks K :
(
)
c. Cari invers determinan K
�
���
���
���
���
Kemudian cari nilai X seperti pada tabel 2.5.
Tabel 2.5 Proses Pencarian Invers determinan
X
d. Kemudian cari
���
1
3
2
6
3
9
4
12
9
1
.
�
�
Universitas Sumatera Utara
21
(
)
(
e. Buktikan
) ���
) ���
(
dan
saling invers apabila hasil perkalian keduanya
menghasilkan matriks identitas.
(
)
(
f. Proses dekripsi dapat dilihat pada tabel 2.6.
)
(
)
Tabel 2.6 Dekripsi Hill Cipher
Hasil perkalian
kunci dengan
Ciphertext
Hasil Akhir
Plaintext
ciphertext
(
)
(
)
(
)
(
(
)
(
) ���
(
)
( )
) (
) ���
(
)
( )
Jadi, Dekripsi dari “MAWQYC” adalah “SEMOGA” .
2.3. File Teks
Teks adalah kumpulan dari karakter – karakter atau string yang menjadi satu kesatuan.
Teks yang memuat banyak karakter didalamnya selalu menimbulkan masalah pada
media penyimpanan dan kecepatan waktu pada
saat transmisi data.
File
teks
merupakan file yang berisi informasi-informasi dalam bentuk teks. Data yang berasal
dari dokumen pengolah kata, angka yang digunakan dalam perhitungan, nama dan
alamat dalam basis data merupakan contoh masukan data teks yang terdiri dari
karakter, angka dan tanda baca (Pramilo, 2008).
Universitas Sumatera Utara
22
Masukan dan keluaran data teks direpresentasikan sebagai set karakter atau
sistem kode yang dikenal oleh sistem komputer. Ada tiga macam set karakter yang
umum digunakan untuk masukan dan keluaran pada komputer, yaitu ASCII, Unicode,
dan EBCDIC, ASCII (American Standard Code for Information Interchange)
merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex, dan
Unicode tetapi ASCII bersifat lebih universal. ASCII digunakan oleh komputer dan
alat komunikasi lain untuk menunjukkan teks. Kode ASCII memiliki komposisi
bilangan biner sebanyak 8 bit, dimulai dari 00000000 dan 11111111. Total kombinasi
yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan
desimal. Unicode adalah suatu standar industri yang dirancang untuk mengizinkan
teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan dan
dimanipulasi secara konsisten oleh komputer. EBCDIC (Extended Binary Code
Decimal Interchange Code) merupakan set karakter yang diciptakan oleh komputer
merk IBM. EBCDIC terdiri dari 256 karakter yang masing-masing berukuran 8 bit
(Sudewa, 2003). Kode ASCII dapat dilihat pada tabel 2.7 berikut:
Tabel 2.7 Kode ASCII
Dec
Char
Dec
Char
Dec
Char
Dec
Char
Dec
Char Dec
Char
0
NUL
43
+
86
V
129
HOP
172
¬
215
×
1
SOH
44
,
87
W
130
BPH
173
-
216
Ø
2
STX
45
-
88
X
131
NBH
174
®
217
Ù
3
ETX
46
.
89
Y
132
IND
175
¯
217
Ú
4
EOT
47
/
90
Z
133
NEL
176
°
218
Û
5
ENQ
48
0
91
[
134
SSA
177
±
219
Ü
6
ACK
49
1
92
\
135
ESA
178
²
220
Ü
7
BEL
50
2
93
]
136
HTS
179
³
221
Ý
8
BS
51
3
94
^
137
HTJ
180
´
222
Þ
9
TAB
52
4
95
_
138
VTS
181
µ
223
ß
10
LF
53
5
96
`
139
PLD
182
¶
224
à
11
VT
54
6
97
A
140
PLU
183
·
225
á
12
FF
55
7
98
B
141
RI
184
¸
226
â
13
CR
56
8
99
C
142
SS2
185
¹
227
ã
Universitas Sumatera Utara
23
14
SO
57
9
100
D
143
SS3
186
º
228
ä
15
SI
58
:
101
E
144
DCS
187
»
229
å
16
DLE
59
;
102
F
145
PU1
188
¼
230
æ
17
DC1
60
<
103
G
146
PU2
189
½
231
ç
18
DC2
61
=
104
H
147
STS
190
¾
232
è
19
DC3
62
>
105
I
148
CCH
191
¿
233
é
20
DC4
63
?
106
J
149
MW
192
À
234
ê
21
NAK
64
@
107
K
150
SPA
193
Á
235
ë
22
SYN
65
A
108
L
151
EPA
194
Â
236
ì
23
ETB
66
B
109
M
152
SOS
195
Ã
237
í
24
CAN
67
C
110
N
153
SGCI
196
Ä
238
î
24
EM
68
D
111
O
154
SCI
197
Å
239
ï
26
SUB
69
E
112
P
155
CSI
198
Æ
240
ð
27
ESC
70
F
113
Q
156
ST
199
Ç
241
ñ
28
FS
71
G
114
R
157
OSC
200
È
242
ò
29
GS
72
H
115
S
158
PM
201
É
243
ó
30
RS
73
I
116
T
159
APC
202
Ê
244
ô
31
US
74
J
117
U
160
Space
203
Ë
245
õ
32
(space)
75
K
118
V
161
¡
204
Ì
246
ö
33
!
76
L
119
W
162
¢
205
Í
247
÷
34
"
77
M
120
X
163
£
206
Î
248
ø
35
#
78
N
121
Y
164
¤
207
Ï
249
ù
36
$
79
O
122
Z
165
¥
208
Ð
250
ú
37
%
80
P
123
{
166
¦
209
Ñ
251
û
38
&
81
Q
124
|
167
§
210
Ò
252
ü
39
'
82
R
125
}
168
¨
211
Ó
253
ý
40
(
83
S
126
~
169
©
212
Ô
254
Þ
41
)
84
T
127
•
170
ª
213
Õ
255
ÿ
42
*
85
U
128
PAD
171
«
214
Ö
Universitas Sumatera Utara
24
2.4. Penelitian yang Relevan
Berikut ini beberapa penelitian yang terkait dengan algoritma RSA dan Levenstein:
a. Erdiansyah, Umri (2014) dalam skripsi yang berjudul Perbandingan Algoritma
Elias Delta Code Dengan Levenstein Untuk Kompresi File Teks. Dalam skripsi
ini, dapat disimpulkan bahwa, penelitian menunjukkan dalam kinerja metode
Elias Delta Code lebih baik dibandingkan dengan metode Levenstein dengan
rasio kompresi rata-rata sebesar 114.69% pada kompresi String Homogen, dan
rasio kompresi rata-rata sebesar 252.03% pada kompresi String Heterogen.
b. Yulandari, Zulaiha (2016) dalam skripsi yang berjudul Perbandingan Algoritma
Ternary Comma Code (Tcc) dan Levenstein Code dalam Kompresi File Text.
Dalam skripsi ini disimpulkan bahwa Hasil pengujian kompresi file teks *.txt
dengan karakter yang sama (homogen) dan berbeda (heterogen) menunjukkan
bahwa metode Ternary Comma Code lebih baik dibandingkan dengan metode
Levenstein Code.
c. Antoni (2014) dalam tesis yang berjudul Analisis Hasil Kompresi Data Teks pada
Algoritma Elias Gamma Code, Elias Delta Code dan Levenstein Code. Dalam
tesis ini disimpulkan bahwa Algoritma Levenstein Code baik digunakan jika nilai
terbesar yang akan dikodekan tidak diketahui sebelumnya, atau untuk kompres
data yang nilai kecil jauh lebih sering daripada nilai besar namun waktu yang
diperlukan untuk melakukan kompresi tidak secepat bila dibandingkan dengan
algoritma Elias Gamma Code dan Elias Delta Code.
d. Sihombing, Marlina (2014) dalam skripsi yang berjudul Sistem Kriptografi
Hybrid (Hill Cipher dan Knapsack) pada Pengamanan File. Dalam skripsi ini
disimpulkan bahwa pada enkripsi file dengan Algoritma Hill Cipher terdapat
perbedaan ukuran file asli dengan file yang terenkripsi, dimana file yang
terenkripsi akan lebih besar ukuran file-nya dibandingkan dengan ukuran file
aslinya.
e. Ramadhani,Fitri (2016) dalam skripsi yang berjudul Implementasi Algoritma Hill
Cipher 3x3 dan Rabin Public Key pada Pengirimam Short Message Service
(SMS). Dalam skripsi ini disimpulkan bahwa pada penelitian ini, proses enkripsi
dan dekripsi dari kombinasi algoritma Hill Cipher dan Rabin Public Key
memenuhi kriteria data. Waktu yang dibutuhkan untuk proses dekripsi lebih lama
dengan waktu proses enkripsi.
Universitas Sumatera Utara