Implementasi Algoritma Kriptografi Des, RSA Dan Algoritma Kompresi LZW Pada Berkas Digital

(1)

IMPLEMENTASI ALGORITMA KRIPTOGRAFI DES, RSA DAN ALGORITMA KOMPRESI LZW

PADA BERKAS DIGITAL SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer

M. YULI ANDRI 051401049

PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2009


(2)

PERSETUJUAN

Judul : IMPLEMENTASI ALGORITMA KRIPTOGRAFI

DES, RSA DAN ALGORITMA KOMPRESI LZW PADA BERKAS DIGITAL

Kategori : SKRIPSI

Nama : M. YULI ANDRI

Nomor Induk Mahasiswa : 051401049

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, 06 september 2009 Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

M. Andri B, ST, McompSc, MEM Dr . Tulus, M.Si NIP. 197510082008011011 NIP. 196209011988031002

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Prof. Dr. Muhammad Zarlis NIP. 195707011986011003


(3)

PERNYATAAN

IMPLEMENTASI ALGORITMA KRIPTOGRAFI DES, RSA DAN ALGORITMA KOMPRESI LZW PADA BERKAS DIGITAL

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, 06 September 2009

M. Yuli Andri 051401049


(4)

PENGHARGAAN

Alhamdulillah, puji syukur saya panjatkan kehadirat Allah SWT, yang telah memberikan rahmat dan hidayah-Nya serta segala sesuatunya dalam hidup, sehingga saya dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.

Ucapan terima kasih yang sebesar – besarnya saya sampaikan kepada Bapak Dr. Tulus, M.Si sebagai Dosen Pembimbing I dan Bapak M. Andri B, ST, McompSc, MEM sebagai Dosen Pembimbing II yang telah memberikan bimbingan, saran, dan masukan kepada saya untuk menyempurnakan kajian ini. Panduan ringkas, padat dan profesional telah diberikan kepada saya sehingga saya dapat menyelesaikan skripsi ini. Selanjutnya kepada para Dosen Penguji Bapak Ir. T Ahri Bahriun, M.Sc dan Bapak Ir. Arman Sani, MT atas saran dan kritikan yang sangat berguna bagi saya. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Program Studi S1 Ilmu Komputer, Bapak Prof. Dr. Muhammad Zarlis dan Bapak Syariol Sitorus, S.Si,MIT, Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen Program Studi S1 Ilmu Komputer FMIPA USU, dan pegawai di FMIPA USU.

Skripsi ini penulis persembahkan untuk orang yang penulis sayangi Ayahanda Drs. Zulkifli dan Ibunda Dra. Zuryal Afifah yang senantiasa memberikan segalanya baik moril maupun materil yang tidak terbalaskan kepada penulis selama hidup penulis. Dan juga penulis persembahkan kepada adik-adik penulis Rahmad Gunawan, Muhammad Alkhadri dan Mila Rahmiza Putri yang senantiasa memberikan dukungan kepada penulis. Penulis juga berterima kasih kepada orang yang penulis sayang Ghita Sandra, karena dukungan dan motivasi darinya penulis dapat menyelesaikan skripsi ini.

Penulis juga berterima kasih kepada temen seperjuangan penulis Said yang telah berjuang bersama penulis dari kecil, serta teman-teman Mario, Aldo, Rama, Jaya, Chandra, Mayang, Ayu, Dona, Yefri, David, dan Ahmad Zulhadmi. Serta kepada seluruh teman-teman penulis yang tidak bisa penulis sebutkan satu persatu.

Saya menyadari bahwa skripsi ini masih jauh dari kesempurnaan, karena kesempurnaan hanya milik Allah. Oleh karena itu saya menerima saran dan kritik yang bersifat membangun demi kesempurnaan skripsi ini. Sehingga dapat bermanfaat bagi kita semuanya.


(5)

ABSTRAK

Penelitian ini menggunakan algoritma RSA dan DES yang merupakan bagian dari algoritma enkripsi dalam kriptografi. Algoritma RSA merupakan bagian dari kriptografi asimetri yang mana kunci enkripsinya berbeda dengan kunci deskripsi. Algoritma DES merupakan bagian dari algoritma simetri, yaitu kunci yang digunakan untuk enkripsi sama dengan kunci yang digunakan untuk deskripsi. Disamping masalah keamanan berkas, masalah ukuran dari sebuah berkas juga menjadi perhitungan. Berkas yang berukuran besar dapat dimampatkan dengan melakukan proses kompresi. LZW merupakan salah satu algoritma kompresi yang menggunakan dictionary. Penggabungan antara algoritma kriptografi dan algoritma kompresi tersebut menjamin berkas tidak dapat dilihat oleh pengguna yang tidak berhak, menjamin berkas dapat disimpan dalam media berkapasitas rendah yang kesemuanya menyebabkan proses pengiriman yang lebih cepat. Pada algoritma RSA akan terjadi penambahan ukuran berkas, hal ini dapat dilihat dari salah satu contoh kasus yang mana ukuran berkas awal adalah 848 bytes, kemudian setelah dilakukan proses enkripsi ukuran berkas telah menjadi 3,98 KB. Pada algoritma kompresi LZW terjadi pengurangan ukuran sebagai contoh kasus berkas cipherteks yang awalnya berukuran 3,98 KB setelah dilakukan proses kompresi ukurannya menjadi 3,81 KB.


(6)

ABSTRACT

This research uses RSA and DES algorithms which are cryptographic encryption algorithms. RSA algorithm is one of asymmetric cryptography algorithms whose encryption key is different from its decryption key. Meanwhile, DES algorithm is one of symmetric cryptography algorithms whose encryption key is the same with its description key. Apart from its safety, the size of the file is also measured and big sized file may be compressed further. LZW is a compression algorithm which utilizes dictionaries. The fusion of these cryptography and compression algorithms makes sure that the file cannot be viewed by unauthorized users, and also makes sure that it can be saved in a low capacity media, which altogether makes the sending process faster. RSA algorithm may cause the size of the file to become larger which can be seen in one file whose initial size is 848 bytes and the RSA-encrypted size is 3.98 kilobytes. LZW algorithm is then applied to the encrypted file, reducing the size from 3.98 to 3.81 kilobytes.


(7)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metode Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Landasan Teori 6

2.1 Kriptografi 6

2.1.1. Definisi Kriptografi 6

2.1.2. Sejarah Kriptografi 7

2.1.3. Tujuan Kriptografi 11

2.1.4. Terminologi dan Konsep Dasar Kriptografi 12

2.1.5. Jenis Kriptografi 14

2.1.6. Algoritma DES 17

2.1.7. Algoritma RSA 29

2.2 Kompresi 35

2.2.1. Definisi Kompresi 35

2.2.2 Algoritma Kompresi LZW 36

Bab 3 Analisis Permasalahan 39

3.1 Analisis Algoritma RSA 41

3.2 Analisis Algoritma DES 46

3.3 Analisis Algoritma LZW 52

Bab 4 Implementasi

4.1 Umum 57

4.2 Proses Pembangkitan Kunci 58

4.3 Proses Enkripsi 59

4.4 Proses Deskripsi 61

4.5 Proses Kompresi 62


(8)

Bab 5 Penutup 70

5.1 Kesimpulan 70

5.2 Saran 71


(9)

DAFTAR TABEL

Halaman Tabel 2.1 Tabel jumlah pergeseran bit tiap putaran 22 Tabel 2.2 Tabel contoh cara kerja algoritma LZW 38 Tabel 3.1 Tabel aturan putaran dari pergeseran bit 47


(10)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Urutan proses kriptografi 7

Gambar 2.2 gambar scytale 8

Gambar 2.3 Mesin Enigma 10

Gambar 2.4 Perbandingan plainteks dengan cipherteks 12 Gambar 2.5 Hubungan antara, kriptografi, kriptologi dan kriptanalis 14

Gambar 2.6 Skema kriptografi simetri 15

Gambar 2.7 Skema kriptografi asimetri 16

Gambar 2.8 Skema global algoritma DES 19

Gambar 2.9 Skema dasar algoritma DES 20

Gambar 2.10 Proses pembangkitan kunci internal algoritma DES 23

Gambar 2.11 Rincian komputasi fungsi f 24

Gambar 2.12 Skema dasar perolehan Ri 27

Gambar 2.13 Skema dasar proses deskripsi algoritma DES 28

Gambar 3.1 Skema global proses enkripsi 39

Gambar 3.2 Skema global proses kompresi 40

Gambar 3.3 skema global untuk proses dekompresi 41

Gambar 3.4 Skema global proses deskripsi 41

Gambar 3.5 Flowchart pembangkitan pasangan kunci pada RSA 43

Gambar 3.6 Flowchart enkripsi RSA 44

Gambar 3.7 Flowchart deskripsi RSA 45

Gambar 3.8 Flowchart pembangkitan kunci dalam DES 48

Gambar 3.9 Flowchart enkripsi DES 50

Gambar 3.10 Flowchart deskripsi DES 52

Gambar 3.11 Flowchart proses kompresi LZW 54

Gambar 3.12 Flowchart proses dekompresi LZW 56

Gambar 4.1 Gambar antarmuka dari form utama 57

Gambar 4.2 Antarmuka proses enkripsi secara default 58 Gambar 4.3 Antarmuka hasil pembangkitan pasangan kunci 59

Gambar 4.4 Antarmuka proses enkripsi 60

Gambar 4.5 Antarmuka menyatakan kompresi sukses 60

Gambar 4.6 Antarmuka dari proses deskripsi 61

Gambar 4.7 Antarmuka informasi deskripsi berhasil 62 Gambar 4.8 Antarmuka kompresi ketika membuka berkas 62 Gambar 4.9 Antarmuka kompresi ketika menyimpan berkas 63 Gambar 4.10 Antarmuka menyatakan bahwa kompresi sukses 63 Gambar 4.11 Antarmuka proses dekompresi saat membuka berkas 64 Gambar 4.12 Antarmuka proses dekompresi saat menyimpan berkas 64 Gambar 4.13 Antarmuka menyatakan bahwa proses dekompresi sukses 65 Gambar 4.14 Antarmuka berkas yang belum dilakukan proses encoding 65 Gambar 4.15 Antarmuka berkas yang telah mengalami proses encoding 65 Gambar 4.16 Ukuran berkas sebelum proses enkripsi 66


(11)

Gambar 4.18 Ukuran berkas sebelum proses enkripsi (contoh 2) 67 Gambar 4.19 Ukuran berkas setelah proses enkripsi (contoh 2) 67 Gambar 4.20 Ukuran berkas sebelum proses kompresi 68 Gambar 4.21 Ukuran berkas setelah proses kompresi 68


(12)

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Masalah keamanan dan kerahasiaan merupakan salah satu aspek penting dari suatu data, pesan dan informasi. Pengiriman suatu pesan, data dan informasi yang sangat penting membutuhkan tingkat keamanan yang tinggi. Dengan perkembangan teknologi informasi sekarang ini yang begitu pesat, di mana setiap orang akan mudah untuk mendapatkan suatu pesan, data dan informasi. Berbagai cara dilakukan orang untuk mendapatkan data dan informasi tersebut. Mulai dari tingkatan yang mudah sampai kepada cara-cara yang lebih rumit. Dan berbagai cara pula orang berusaha untuk melindungi pesan tersebut agar tidak dapat diketahui oleh orang yang tidak memiliki hak atas pesan atau data tersebut.

Di samping usaha pengaman, sekarang ini orang juga berusaha melakukan proses pengecilan ukuran suatu data (kompresi suatu data). Tujuan dari kompresi ini adalah untuk mempercepat pengiriman data atau informasi tersebut. Kompresi data juga memiliki tujuan untuk dapat mengurangi ukuran data dan dapat disimpan pad media penyimpanann yang memiliki ukuran relatif kecil. Keamanan dan kecepatan merupakan hal yang penting dalam komunikasi menggunakan komputer dan jaringan komputer.

Ilmu yang mempelajari tentang proses pengaman data adalah kriptografi. Secara umum ada dua jenis kriptografi, yaitu kriptografi klasik dan kriptografi modern. Kriptografi klasik adalah suatu algoritma yang menggunakan satu kunci untuk mengamankan data. Dua teknik dasar yang biasa digunakan adalah substitusi


(13)

dan transposisi (permutasi). Sedangkan kriptografi modern adalah algoritma yang lebih kompleks daripada algoritma kriptografi klasik, hal ini disebabkan algoritma ini menggunakan komputer. Algoritma yang akan penulis gunakan adalah algoritma kriptografi modern.

Ada banyak algoritma yang digunakan oleh orang untuk melakukan pengamanan data tersebut, diantaranya adalah Algoritma Data Encryption Standard (DES) dan Algoritma RSA. Algoritma DES merupakan algoritma enkripsi yang paling banyak dipakai di dunia. Secara umum standar enkripsi data terbagi menjadi tiga kelompok, yaitu pemrosesan kunci , enkripsi 64 bit dan deskripsi data 64 bit yang mana setiap kelompok akan saling berinteraksi satu sama lain. Karena algoritma DES ini telah banyak digunakan dan telah ada yang dapat memecahkannya, maka di sini penulis akan melakukan penggabungan dari algoritma DES dan algoritma RSA, agar tingkat keamanan yang didapatkan semakin tinggi.

Selanjutnya dalam hal kompresi juga memiliki berbagai macam algoritma yang digunakan orang, salah satunya adalah algoritma LZW. Penulis juga ingin melakukan penggabungan antara algoritma kriptografi di atas dengan algoritma kompresi.

1.2 Rumusan Masalah

Berdasarkan latar belakang masalah diatas, maka dapat dirumuskan masalah sebagai berikut :

a. Bagaimana mengimplementasikan kriptografi dan kompresi data dengan berbagai algoritma sekaligus.

b. Bagaimana cara mengembalikan data yang sudah diolah menjadi data yang orisinal tanpa mengalami cacat sedikitpun.


(14)

1.3 Batasan Masalah

Agar pembahasan masalah ini tidak menyimpang, penulis akan memberikan beberapa batasan masalah, sebagai berikut :

a. Algoritma kriptografi yang digunakan yaitu algoritma kriptografi DES dengan Algoritma RSA.

b. Metode kompresi yang digunakan, yaitu metode dictionary dengan algoritma kompresi data lossless LZW.

c. Aplikasi ini hanya digunakan pada berkas teks saja.

d. Aplikasi ini hanya dapat digunakan dan dijalankan oleh operator yang memiliki dasar ilmu kriptografi.

e. Aplikasi bahasa yang digunakan adalah pemrograman Borland Delphi 7.

1.4 Tujuan Penelitian

a. Mengimplementasikan penggabungan antara algoritma-algoritma kriptografi dengan algoritma kompresi.

b. Menganalisis data yang telah dienkripsi untuk dapat dikompresi.

1.5 Manfaat Penelitian

Adapun manfaat dari penelitian ini adalah :

a. Memberikan keamanan data bagi para pengguna.

b. Memudahkan para pengguna dalam mengirim dan menyimpan data pada media penyimpanan yang relatif berkapasitas rendah.

1.6 Metodologi Penelitian

Dalam menyusun skripsi ini penulis melakukan beberapa metode untuk memperoleh data atau informasi dalam menyelesaikan permasalahan. Adapun metode yang dilakukan adalah :


(15)

1. Studi Literatur

Melalui studi ini penulis memperoleh data atau informasi dengan mengumpulkan, mempelajari dan membaca berbagai referensi baik itu dari buku-buku, jurnal, makalah, internet dan berbagai sumber lainnya yang menunjang dalam penulisan skripsi ini.

2. Analisis Data

• Menganalisa algoritma kriptografi DES, serta teknik-teknik yang digunakan.

• Menganalisa algoritma kriptografi RSA, serta teknik-teknik yang digunakan.

• Menganalisa algoritma kompresi LZW, serta teknik-teknik yang digunakan.

3. Perancangan Sistem

Merancang sistem aplikasi yang mengimplementasikan algoritma DES, RSA dan LZW dengan menggunakan bahasa pemrograman Borland Delphi 7.0

4. Pengujian Sistem

Melakukan pengujian terhadap aplikasi yang telah dirancang.

1.7 Sistematika Penulisan

Sistematika penulisan skripsi ini dibagi menjadi lima bab, yaitu :

BAB 1 Pendahuluan


(16)

BAB 2 Tinjauan Teoritis

Pada bab ini dibahas mengenai teori-teori yang mendukung pembahasan bab selanjutnya.

BAB 3 Analisis dan Pemodelan Perangkat Lunak

Berisikan analisis permasalahan dan kebutuhan kompilator, serta pemodelan sistem secara fungsional.

BAB 4 Perancangan dan Implementasi Perangkat Lunak

Berisikan gambaran rancangan struktur program serta memberikan gambaran dari rancang bangun yang lengkap kepada user dan pemakai komputer yang lain serta implementasinya yaitu menguji untuk menemukan kesalahan.

BAB 5 Kesimpulan dan Saran


(17)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

Kriptografi mempunyai peranan penting dalam dunia komputer. Hal ini disebabkan karena banyaknya informasi rahasia yang disimpan dan dikirmkan melalui media-media komputer. Informasi-informasi ini biasanya berisikan dokumen-dokumen penting dan data keuangan dari suatu instansi yang tidak ingin dibaca oleh orang yang tidak berhak atas informasi tersebut. Oleh karena itu ilmu kriptografi setiap saat selalu dikembangkan oleh orang untuk dapat menjaga fasilitas-fasilitas tersebut. Pada bab ini penulis akan membahas teori-teori yang berhubungan dengan ilmu kritografi.

2.1.1 Definisi Kriptografi

Kata kriptografi ini berasal dari bahasa Yunani. Dalam bahasa Yunani kriptografi terdiri dari dua buah kata yaitu cryptos dan graphia. Kata crypto berarti rahasia sedangkan graphia berarti tulisan. Berarti secara umum makna dari kata kriptografi adalah tulisan rahasia. Dan arti sebenarnya dari kriptografi adalah ilmu yang mempelajari tentang bagaimana menjaga kerahasiaan suatu pesan, agar isi pesan yang disampaikan tersebut aman sampai ke penerima pesan.(Dony Ariyus, 2008).

Dalam kamus Bahasa Inggris Oxford pengertian kriptografi adalah sebagai berikut :

“Sebuah teknik rahasia dalam penulisan, dengan karakter khusus, dengan menggunkan huruf dan karakter di luar bentuk aslinya, atau dengan


(18)

metode-metode lain yang hanya dapat dipahami oleh pihak-pihak yang memproses kunci, juga semua hal yang ditulis dengan cara seperti ini”.

Jadi secara umum dapat diartikan sebagai seni menulis atau memecahkan cipher.

Secara umum, kriptografi merupakan teknik pengamanan informasi yang dilakukan dengan cara mengolah informasi awal (plainteks) dengan suatu kunci tertentu menggunakan suatu metode enkripsi tertentu sehingga menghasilkan suatu informasi baru (chiperteks) yang tidak dapat dibaca secara langsung. Chiperteks tersebut dapat dikembalikan menjadi informasi awal (plainteks) melalui proses deskripsi. Urutan proses kriptografi secara umum dapat dilihat pada Gambar 2.1.

Gambar 2.1 Urutan proses kriptografi

2.1.2 Sejarah Kriptografi

Kriptografi mempunyai sejarah yang panjang dan menakjubkan. Informasi yang lengkap mengenai sejarah kriptografi dapat ditemukan di dalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi, mulai dari penggunaan kriptografi oleh Bangsa Mesir 4000 tahun yang lalu (berupa hieroglyph pada piramid) hingga penggunaan kriptografi abad ke-20.

Sebagian besar sejarah kriptografi merupakan bagian dari kriptografi klasik, yaitu metode kriptografi yang menggunakan kertas dan pensil atau menggunakan alat bantu mekanik yang sederhana. Kriptografi klasik secara umum dikelompokkan menjadi dua kategori, yaitu algoritma transposisi (transposition cipher) dan algoritma substitusi (substitution cipher). Algoritma transposisi adalah algoritma yang mengubah susunan-susunan huruf di dalam pesan, sedangkan algoritma substitusi yaitu mengganti setiap huruf atau kelompok huruf dengan sebuah huruf atau kelompok huruf yang lain.

plainteks cipherteks

plainteks


(19)

Penggunaan transposition cipher yaitu oleh tentara Sparta di Yunani pada permulaan tahun 400 SM. Mereka menggunakan apa yang dinamakan scytale (gambar 2.2a). Scytale terdiri dari sebuah kertas panjang dari daun papyrus yang dililitkan pada sebuah silinder dari diameter tertentu (diameter dari silinder merupakan kunci dari penyandian tersebut). Pesan ditulis baris per baris dan secara horizontal (gambar 2.2b). Apabila pita dilepas, maka setiap huruf akan tersusun secara acak membentuk pesan rahasia (pesan yang tidak dapat dibaca). Agar pesan tersebut dapat dibaca, maka pesan tersebut harus kembali dililitkan ke silinder yang diameternya sama dengan diameter silinder pengirim.

(a) (b)

Gambar 2.2. (a) Sebuah scytale; (b) Pesan ditulis secara horizontal, baris per baris. (Rinaldi Munir, 2006).

Contoh untuk substitution cipher adalah Caesar cipher. Pada zaman Romawi Kuno, disaat Julius Caesar ingin mengirimkan sebuah pesan rahasia kepada seorang jenderal di medan perang. Pesan tersebut akan dikirimkan melalui seorang kurir. Karena tingkat kerahasiaan pesan yang tinggi, maka Julius Caesar tidak mau mengambil resiko jika pesan tersebut sampai ke tangan musuh. Maka Caesar mensubstitusi pesan tersebut dengan cara mengganti huruf-huruf alfabet a menjadi d, b menjadi e, c menjadi f dan seterusnya. Sebelumnya kunci dari pesan tersebut telah diberitahu oleh Julius Caesar kepada jenderal yang akan menerima pesan tersebut. Dengan demikian, walaupun pesan tersebut jatuh ke pihak musuh, maka musuh tersebut tidak akan dapat membaca pesan tersebut.

Para kalangan gerejapun menggunakan kriptografi pada masa awal agama kristen. Tujuan penggunaannya adalah untuk menjaga tulisan relijius dari gangguan


(20)

otoritas politik atau budaya yang dominan pada saat itu. Yang sangat terkenal pada saat itu adalah Angka si Buruk Rupa (Number of the Beast) di dalam kitab perjanjian baru. Angka “666” menyatakan cara kriptografi untuk menyembunyikan pesan berbahaya; para ahli percaya bahwa pesan tersebut mengacu pada Kerajaan Romawi.

Kriptografi juga digunakan oleh para pecinta untuk berkomunikasi tanpa diketahui oleh orang lain. Ini kebanyakan digunakan oleh masayarakat India, hal ini terbukti dengan ditemukannya di dalam buku Kama Sutra yang merekomendasikan wanita seharusnya mempelajari seni dengan memahami cipher. Ratu Skotlandia, Queen Mary merupakan salah seorang korban pada abad ke-17. Ratu tersebut dipancung setelah ditemukannya surat rahasianya di balik penjara (surat yang terenkripsi berisi rencana pembunuhan terhadap Ratu Elizabeth I) berhasil dipecahkan oleh seorang pemecah kode.

Pada abad ke-15, ditemukan kode roda (wheel cipher) oleh Leo Battista Alberti. Kode ini terus dikembangkan menjadi alat enkripsi dan deskripsi hingga saat ini. Metode ini dikembangkan pada awalnya oleh Thomas Jefferson yang kemudian diberi nama roda kode Jefferson. Kemudian kode ini kembangkan lagi oleh Bazeries yang diberi nama silinder Bazeries. Alat ini lebih fleksibel, memungkinkan untuk dikembangkan secara terus menerus untuk menghindari code breaking. Meskipun demikian metode ini dapat dipecahkan oleh DeViaris pada tahun 1893. Meskipun demikian metode ini tetap terus dikembangkan dan dianggap aman untuk kasus-kasus tertentu.

Saat ditemukan pertama kali oleh Leon Albertini roda kode ini terdiri dari dua buah potongan silendris yaitu potongan silendris dalam dan potongan silendris luar, yang dikenal dengan cipher disk. Masing-masing potongan silendris memiliki seluruh label alfabet, dengan susunan yang tidak harus terurut dan sama. Potongan silendris luar merupakan alfabet untuk teks asli dan potongan silendris dalam merupakan alfabet untuk teks-kode dengan metode monoalphabetic substitution cipher alphabet, yaitu metode enkripsi yang mana satu karakter di teks asli diganti dengan satu karakter bersesuaian, atau fungsi satu ke satu.


(21)

Pada abad ke-20, kriptografi lebih banyak digunakan oleh kalangan militer. Pada perang dunia ke II, Pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan dengan Enigma. Mesin ini menggunakan beberapa buah rotor (roda berputar), dan melakukan proses enkripsi yang sangat rumit. Jerman percaya pesan akan dikirim melalui enigma tidak akan terpecahkan kode enkripsinya. Tetapi anggapan Jerman tersebut salah, setelah mempelajari mesin enigma bertahun-tahun, sekutu berhasil memecahkan kode tersebut. Setelah Jerman mengetahui kode-kode mereka telah terpecahkan, kemudian enigma mengalami beberapa kali perubahan.

Enigma yang digunakan Jerman bisa mengenkripsi satu pesan dengan 15 milyar kemungkinan. Enigma termasuk kriptografi berbasis rotor. Mesin berbasis rotor ini dibangun dan dipatenkan oleh beberapa orang penemu dari negara-negara yang berbeda dari tahun 1917 sampai 1921, di antaranya oleh warga Amerika Edward Hug Hebern, warga Jerman Arthur Scherbius, warga Belanda Alexander Koch, dan warga Swedia Arvid Gerhard Damm. Milik Koch dikembangkan oleh Arthur Scherbius yang dipatenkan diberi nama enigma. Angkatan Laut Jerman memperkenalkan mesin kode Scherbius. Tahun 1930, enigma untuk versi militer dibangun. Diperkirakan mesin enigma yang digunakan pada tahun 1935 sampai 1945 adalah 100.000 mesin. Mesin Enigma dapat dilihat pada Gambar 2.3.

Gambar 2.3 Mesin enigma yang digunakan tentara Jerman pada perang dunia ke II (Rinaldi Munir, 2006)

Perkembangan peralatan komputer digital memicu terbentuknya kriptografi modern. Dengan komputer digital, akan sangat mungkin untuk menghasilkan cipher


(22)

yang lebih kompleks dan rumit. Kriptografi klasik pada umumnya dienkripsi karakter per karakter (menggunakan alfabet tradisional), sedangkan kriptografi modern beroperasi pada string biner. Cipher yang lebih kompleks seperti halnya DES (Data Encryption Standard) dan RSA adalah algoritma modern yang sangat dikenal di dunia kriptografi. Kriptografi modern tidak hanya berkaitan dengan teknik menjaga kerahasisaan pesan, tetapi juga menghasilkan tanda tangan digital dan sertifikat digital. Dengan kata lain kriptografi modern tidak hanya memberikan aspek keamanan, tapi juga kepada aspek-aspek lain.

2.1.3 Tujuan Kriptografi

Aspek-aspek keamanan di dalam kriptografi adalah :

1. Confidentiality (kerahasiaan)

Layanan yang ditujukan untuk menjaga pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.

2. Authentication (otentikasi)

Penerima pesan dapat memastikan keaslian pengirimnya. Penyerang tidak dapat berpura-pura sebagai penerima ataupun pengirim pesan.

3. Integrity (data integritas)

Penerima harus dapat memeriksa apakah pesan telah dimodifikasi di tengah jalan atau tidak. Seorang penyusup seharusnya tidak dapat memasukkan tambahan ke dalam pesan, mengurangi atau mengubah pesan selama data berada di perjalanan.

4. Nonrepudiation (nirpenyangkalan)

Pengirim tidak dapat mengelak bahwa dia telah mengrim pesan, penerima juga tidak dapat mengelak bahwa dia telah menerima pesan tersebut.

Tujuan kriptografi secara umum adalah mewujudkan keempat aspek keamanan tersebut dalam teori dan praktek.(Dony Ariyus, Pengantar Ilmu Kriptografi, 2008).


(23)

2.1.4 Terminologi dan Konsep Dasar Kriptografi

Dalam bidang kriptografi akan ditemukan beberapa istilah atau terminologi. Isitilah-istilah tersebut sangat penting untuk diketahui dalam memahami ilmu kriptografi. Oleh karena itu penulis akan menjelaskan beberapa istilah penting dalam bidang kriptografi yang akan sering penulis gunakan dalam tulisan penulis. Berikut merupakan istilah-istilah penting tersebut.

a. Plainteks dan Cipherteks

Pesan merupakan data atau informasi yang dimengerti maknanya. Nama lain dari pesan adalah plainteks. Pesan tersebut dapat dikirim (melalui kurir, saluran telekomunikasi, dan lain-lain) dan dapat juga disimpan dalam media penyimpanan (kertas, storage, dan lain-lain). Pesan dapat berupa teks, video, gambar, dan lain-lain. Agar pesan tersebut tidak dapat dimengerti maknanya bagi pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang telah tersandikan tersebut dinamakan dengan cipherteks (ciphertext). Perbandingan antara plainteks dan chiperteks dapat kita lihat pada Gambar 2.4.

(a). Plainteks (b). Cipherteks Gambar 2.4 Perbandingan plainteks dan cipherteks (Rinald Munir, 2006)

b. Peserta Komunikasi

Komunikasi data melibatkan pertukaran pesan antara dua entitas. Entitas yang pertama adalah pengirim, yang berfungsi mengirim pesan kepada entitas lain. Entitas


(24)

kedua adalah penerima, yang berfungsi menerima pesan yang dikirimkan. Entitas-entitas ini dapat berupa orang, mesin (komputer), kartu kredit dan sebagainya. Contohnya mesin ATM berkomunikasi dengan komputer server di bank. Pengirim ingin mengirimkan pesan dengan aman sampai ke penerima. Jadi solusinya adalah dilakukan penyandian terhadap pesan tersebut agar tidak diketahui pihak-pihak yang tidak berkepentingan terhadap pesan tersebut.

c. Enkripsi dan Deskripsi

Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi (encryption) atau enchipering (standard nama menurut ISO 7498-2). Sedangkan proses mengembalikan pesan dari cipherteks ke plainteks dinamakan dengan deskripsi (descryption) atau dechipering (standard nama menurut ISO 7498-2). Proses enkripsi dan deskripsi dapat diterapkan pada pesan yang dikirim ataupun pesan yang disimpan. Encryption of data in motion mengacu pada enkripsi pesan yang ditransmisikan melalui saluran komunikasi, sedangkan istilah encryption of data at-rest mengacu pada enkripsi pesan yang tersimpan di dalam storage.

d. Kriptanalis dan Kriptologi

Kriptografi selalu memiliki perkembangan, karena kriptografi memiliki ilmu yang berlawan yang disebut dengan kriptanalisis. Kriptanalis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks, tanpa memerlukan kunci yang digunakan. Pelakunya disebut dengan kriptanalis. Jika seorang kriptopgrafer (istilah bagi pelaku kriptografi) mentransformasikan plainteks ke cipherteks dengan menggunakan kunci, maka sebaliknya seorang kriptanalis berusaha memecahkan cipherteks tersebut untuk menemukan plainteks atau kunci. Kriptologi (cryptology) adalah studi mengenai kriptografi dan kriptanalis. Hubungan antara kriptologi, kriptografi dan kriptanalis dapat dilihat pada Gambar 2.5.


(25)

Gambar 2.5 Hubungan antara kriptologi, kriptografi dan kriptanalisis

2.1.5 Jenis Kriptografi

Berdasarkan kunci enkripsi dan deskripsinya algoritma kriptografi terbagi menjadi dua bagian yaitu :

1. Kriptografi simetri

Konsep dasar dari kriptografi kunci simetri adalah, di mana kunci untuk enkripsi dan deskripsi sama. Istilah lain dari kriptografi simetri ini adalah kriptografi kunci privat (privat-key cryptography), kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional (conventional cryptography). Dalam kriptografi kunci simetri dapat diasumsikan bahwa si penerima dan pengirim pesan telah terlebih dahulu berbagi kunci sebelum pesan dikirimkan. Keamanan dari sistem ini terletak pada kerahasiaan kuncinya.

Semua kriptografi klasik menggunakan sistem kunci simetri ini. Sebelum tahun 1976 hanya kriptografi simetri inilah yang dikenal. Kriptografi modern juga ada yang masuk ke dalam lingkup kriptografi simetri ini diantaranya adalah algoritma DES (Data Encryption Standard), Triple-DES, dan lain-lain. Pada umumya cipher yang termasuk ke dalam kriptografi simetri ini beroperasi dalam mode blok (block cipher), yaitu setiap kali proses enkripsi atau deskripsi dilakukan terhadap satu blok data (yang berukuran tertentu), atau beroperasi dalam mode aliran (stream cipher),

Kriptologi


(26)

yaitu setiap kali enkripsi atau deskripsi dilakukan terhadap satu bit atau satu byte data. Proses dari skema kriptografi simetri dapat dilihat pada Gambar 2.6.

Kunci Privat, K Kunci Privat, K

Chiperteks, C

Plainteks, P Plainteks,P

Gambar 2. 6 Skema kriptografi simetri

Kelebihan Kriptografi Simetri adalah :

1. Proses enkripsi atau deskripsi kriptografi simetri membutuhkan waktu yang singkat.

2. Ukuran kunci simetri relatif lebih pendek.

3. Otentikasi pengiriman pesan langsung diketahui dari cipherteks yang diterima, karena kunci hanya diketahui oleh penerima dan pengirim saja.

Kekurangan Kriptografi Simetri adalah :

1. Kunci simetri harus dikirim melalui saluran komunikasi yang aman, dan kedua entitas yang berkomunikasi harus menjaga kerahasiaan kunci.

2. Kunci harus sering diubah, setiap kali melakasanakan komunikasi.

2. Kriptografi asimetri

Berbeda dengan kriptografi kunci simetri, kriptografi kunci publik memiliki dua buah kunci yang berbeda pada proses enkripsi dan deskripsinya. Nama lain dari kunci asimetri ini adalah kriptografi kunci-publik (public-key cryptography). Kunci untuk enkripsi pada kriptografi asimetri ini tidak rahasia (diketahui oleh publik), sedangkan kunci untuk deskripsi bersifat rahasia (kunci privat). Entitas pengirim akan mengenkripsi dengan menggunakan kunci publik, sedangkan entitas penerima

Enkripsi Ek(P) = C

Deskripsi Dk(C) = P


(27)

mendeskripsi menggunakan kunci privat. Skema dari kriptografi asimetri dapat dilihat pada Gambar 2.7.

Kunci publik, K1 Kunci Privat, K2

\ Chiperteks, C

Plainteks, P Plainteks, P

Gambar 2.7 Skema standar kriptografi kunci asimetri

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 mendeskripsi pesan tersebut, karena tidak memiliki kunci privat.

Kelebihan kriptografi asimetri adalah :

1. Hanya kunci privat yang perlu dijaga kerahasiaanya oleh setiap entitas yang berkomunikasi. Tidak ada kebutuhan mengirim kunci privat sebagaimana pada kunci simetri.

2. Pasangan kunci privat dan kunci publik tidak perlu diubah dalam jangka waktu yang sangat lama.

3. Dapat digunakan dalam pengaman pengiriman kunci simetri.

4. Beberapa algoritma kunci publik dapat digunakan untuk memberi tanda tangan digital pada pesan.

Enkripsi Ek1 (P) = C

Deskripsi Dk2 (C) = P


(28)

Kelemahan kriptografi asimetri adalah :

1. Proses enkripsi dan deskripsi umumnya lebih lambat dari algoritma simetri, karena menggunakan bilangan yang besar dan operasi bilangan yang besar. 2. Ukuran chiperteks lebih besar daripada plainteks.

3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetri.

2.1.6 Algoritma DES (Data Encryption Standard)

Algoritma merupakan salah satu algoritma kriptografi simetri. Algoritma DES merupakan algoritma standar untuk kriptografi simetri. Pada subbab ini penulis akan membahas dasar-dasar dan prinsip kerja dari algoritma DES itu sendiri.

2.1.6.1 Sejarah DES (Data Encryption Standard)

DES (Data Encryption Standard) merupakan salah satu algoritma cipher blok yang merupakan standard dari algoritma enkripsi kunci simetri. Sebenarnya nama DES merupakan standar dari algoritma enkripsi, sedangkan nama aslinya adalah DEA (Data Encryption Algorithm), namun nama DES lebih populer daripada nama DEA. Sebenarnya algortima DES merupakan algoritma kriptografi pertama yang dipublikasikan secara umum oleh United States Federal Register pada tanggal 17 Maret 1975.

Pada tahun 1960-1971 sebuah proyek pertama IBM bernama LUCIFER yang dipimpim oleh Horst Feistel untuk kiptografi komputer. Proyek ini dikenal sebagai blok kode pada pengoperasian blok 64 bit dan menggunakan kunci 128 bit. Proyek LUCIFER dikomersilkan dan disebut dengan DES (Data Encryption Standard).

National Institue of Standard and Technology (NIST) mengeluarkan proposal untuk standar nasional pada tahun 1973. Isi proposal tersebut merupakan kriteria untuk standar algoritma kriptografi sebagai berikut :


(29)

b. Algoritma harus lengkap dan mudah dimengerti,

c. Keamanan algoritma harus mempunyai kunci, bukan tergantung dari algoritma yang ada,

d. Algoritma harus available untuk semua user,

e. Algoritma harus dapat beradaptasi dengan berabagai aplikasi,

f. Algoritma harus ekonomis. Perangkat yang menggunakannya tidak membutuhkan suatu alat yang canggih,

g. Algoritma harus efisien bila digunakan,

Algoritma DES merupakan salah satu proposal terbaik tahun 1977. Tidak ada kritik yang datang dari kalangan ilmuwan tentang panjang kunci yang digunakan dan kotak-S yang merupakan bagian internal dari DES. Selama 20 tahun algoritma DES dipakai sebagai standar nasional hingga akhirnya diketahui bahwa algoritma DES tidak begitu aman, karena DES tidak memiliki struktur internal yang kuat. DES dievaluasi satu kali dalam lima tahun. Evaluasi yang pertama, 6 Maret 1987, dan evaluasi yang kedua pada 10 Desember 1992. Tetapi belum ada alternatif untuk menggantikan DES.

2.1.6.2 Enkripsi

DES merupakan algoritma cipher blok yang termasuk ke dalam sistem kriptografi simetri. DES beroperasi pada ukuran blok 64 bit. DES mengenkripsi 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit kunci internal (internal key). Kunci internal pada Algoritma DES dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit. Skema global dari proses algoritma DES akan dilihat pada Gambar 2.8.


(30)

Blok Plainteks

16 kali

Blok cipherteks

Gambar 2.8 Skema global algoritma DES

Skema global dari algoritma DES adalah sebagai berikut :

1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP).

2. Hasil permutasi awal kemudian di enchipering sebanyak 16 kali (16 putaran). Setiap putaran menggunakan kunci internal yang berbeda.

3. Hasil enchipering kemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1) menjadi blok chiperteks.

Skema algoritma DES dapat dilihat pada Gambar 2.9. IP

Enchipering


(31)

K1 ⊕

K2 ⊕

K16 ⊕

Gambar 2.9 Skema dasar algoritma DES

Plainteks

IP

L0 R0

f

R1 = L0 ⊕ f(R0, K1)

L1 = R0

R2 = L1 ⊕ f(R1, K2) f

L2 = R1

R15 = L14 ⊕ f(R14, K15)

L15 = R14

f

L16 = R15

R16 = L15 ⊕ f(R15, K16)

IP-1


(32)

Dalam algoritma DES, terdapat kunci eksternal dan kunci internal. Kunci internal dibangkitkan dari kunci eksternal yang diberikan oleh pengguna. Kunci internal dapat dibangkitkan sebelum proses enkripsi ataupun bersamaan dengan proses enkripsi. Kunci eksternal panjangnya adalah 64 bit atau delapan karakter. Karena ada 16 putaran, maka kunci internal yang dibutuhkan sebanyak 16 buah, yaitu K1,K2,...,K16. Untuk membangkitkan kunci internal diperlukan beberapa langkah.

Kunci eksternal 64 bit, di kompresi terlebih dahulu menjadi 56 bit menggunakan matriks permutasi kompresi PC-1. Dalam permutasi tiap bit kedelapan dari delapan byte kunci akan diabaikan. Sehingga akan ada pengurangan delapan bit dari 64 bit awal kunci eksternal. Matriks permutasi kompresi PC-1 :

57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4

Setelah di dapatkan 56 bit hasil permutasi, selanjutnya 56 bit ini akan dibagi menjadi dua bagian, kiri dan kanan, yang masing-masing panjangnya 28 bit. Kemudian kedua bagian tersebut akan disimpan ke dalam C0 dan D0.

C0 : berisi bit-bit dari K pada posisi :

57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26,18 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36

D0 : berisi bit-bit dari K pada posisi :

63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22 14, 6, 61, 53, 45, 37, 29, 21, 21, 13, 5, 28, 20, 12

Proses selanjutnya adalah, kedua bagian (C0 dan D0) digeser ke kiri (left shift)


(33)

wrapping atau round-shift. Bisa kita lihat pergeseran bit dari tiap putaran pada tabel 2.1.

Tabel 2.1 Jumlah pergeseran bit pada tiap putaran

Putaran, i Jumlah pergeseran bit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

Hasil dari pergeseran C0 dan D0 akan didapatkan nilai dari C1 dan C2. Begitu

seterusnya, sampai proses tersebut menghasilkan C16 dan D16. untuk mendapatkan

kunci internal pertama (K1), maka bit dari C0 dan D0 tadi dilakukan permutasi

kompresi dengan menggunakan matriks PC-2 berikut :

14 17 11 24 1 5 3 28 15 6 21 10

23 19 12 4 26 8 16 7 27 20 13 2

41 52 31 37 47 55 30 40 51 45 33 48

44 49 39 56 34 53 46 42 50 36 29 32

Jadi setiap kunci Ki mempunyai panjang 48 bit. Apabila proses pergerseran

bit-bit dijumlahkan semuanya, makanya jumlah seluruhnya sama dengan 28 putaran. Jumlah ini sama dengan jumlah bit pada Ci dan Di. Oleh karena itu, setelah putaran ke

16 akan didapatkan kembali C16 = C0 dan D16 = D0. Gambar 2.10 akan


(34)

K1 . . . . . . K2 . . . . . . K3

Gambar 2.10 Proses pembangkitan kunci internal pada algoritma DES

Proses enchipering terhadap blok plainteks dilakukan setelah permutasi awal. setiap blok plainteks mengalami 16 kali putaran enchiperin. Setiap putaran enchipering merupakan jaringan Feistel yang secara matematis dinyatakan sebagai :

Li = Ri-1 (2.1)

Ri = Li-1⊕ f(Ri-1,Ki) (2.2)

Kunci eksternal

Permutasi PC-1

C0 D0

Left Shift Left Shift

C1 D1

Permutasi PC-2

Left Shift Left Shift

Ci Di

Permutasi PC-2

Left Shift Left Shift

C16 D16

Permutasi PC-2


(35)

Diagram fungsi f diperlihatkan pada Gambar 2.11

Matriks Substitusi

Gambar 2.11 Rincian komput asi fungsi f

E merupakan fungsi ekspansi yang memperluas blok Ri-1 yang mempunyai

panjang 32 bit menjadi blok 48 bit. Fungsi ekspansi direalisasikan dengan matriks ekspansi sebagai berikut :

32 1 2 3 4 5 4 5 6 7 8 9

8 9 10 11 12 13 12 13 14 15 16 17

16 17 18 19 20 21 20 21 22 23 24 25

24 25 26 27 28 29 28 29 30 31 32 1

Ri-1

E(Ri-1)

Ki

E(Ri-1) ⊕ Ki = A

S1 S8

B


(36)

Hasil ekspansi E(Ri-1), yang panjangnya 48 bit di-XOR-kan dengan Ki yang panjangnya 48 bit menghasilkan vektor A yang panjangnya juga 48 bit. Kemudian vektor A dikelompokkan menjadi delapan bagian, yang masing-masing bagian berisi 6 bit, dan merupakan masukan dari proses substitusi.

Proses substitusi menggunakan delapan buah kotak-S (S-box). Kotak-S adalah matriks yang berisi substitusi sederhana yang memetakan satu atau lebih bit dengan satu atau lebih bit lainnya. Kotak-S merupakan satu-satunya nirlanjar di dalam algoritma, karena operasinya adalah look-up table. Masukan dari operasi look-up table dijadikan sebagai indeks kotak-S, dan keluarannya adalah entry di dalam kotak-S.

Dalam algoritma DES kotak-S yang digunakan adalah 6 x 4 S-box yang berarti menerima masukan enam bit dan menghasilkan keluaran empat bit. Kelompok enam bit pertama menggunakan S1, kelompokan enam bit berikutnya menggunakan S2 dan

seterusnya sampai menggunakan S8, sehingga secara keseluruhan akan menghasilkan

32 bit keluaran yang dinamakan dengan vektor B. Delapan kotak-S tersebut adalah :

S1

14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S2

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 S3

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12


(37)

S4

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 15 0 6 10 1 13 8 9 4 15 11 12 7 2 14 S5

2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 16

4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 S6

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8

9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 S7

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S8

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

Setelah didapat vektor B, maka selanjutnya pada vektor B dilakukan proses permutasi, yang bertujuan untuk mengacak hasil proses substitusi kotak-S. Permutasi dilakukan dengan menggunakan matriks permutasi P (P-box). Keluarannya menghasilkan P(B) yang juga merupakan keluaran dari fungsi f. Proses selanjutnya yaitu bit-bit P(B) di-XOR-kan dengan Li-1 untuk mendapatkan Ri. Berikut ini adalah matriks permutasi P(B).

16 7 20 21 29 12 28 17 1 15 23 26 5 8 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25


(38)

Skema sederhana perolehan Ri diperlihatkan pada gambar 2.12.

Gambar 2.12 Skema dasar perolehan Ri

Proses selanjutnya yaitu, permutasi terakhir yang dilakukan setelah 16 kali putaran terhadap gabungan dari blok kiri (L) dan blok kanan (R). Proses permutasi dilakukan dengan menggunakan matriks permutasi balikan (invers initial permutation) atau IP-1 sebagai berikut :

40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 2.1.6.3 Deskripsi

Pada algoritma DES proses deskripsi dan enkripsinya menggunakan kunci yang sama. Proses deskripsi pada cipherteks merupakan kebalikan dari proses enkripsi. Jika pada proses enkripsi urutan kunci yang digunakan adalah K1, K2, ... , K16, maka untuk

proses deskripsi urutan kunci yang digunakan adalah K16, K15, ... , K1. Masukan

awalnya adalah R16 dan L16 untuk dechipering. Blok R16 dan L16 diperoleh dengan mempermutasikan chiperteks dengan matriks permutasi IP-1. Skema proses deskripsi diperlihatkan pada Gambar 2.13.

Li-1

f


(39)

K16

K15 ⊕

K1 ⊕

Gambar 2.13 Skema dasar proses Deskripsi algoritma DES

chiperteks

IP-1

L16 R16

f

R15 = L0 ⊕ f(R16, K16)

L15 = R16

R14 = L15 ⊕ f(R15, K15) f

L14 = R15

R1= L2 ⊕ f(R2, K2)

L1 = R2

f

L0 = R1

R0 = L1 ⊕ f(R1, K1)

IP


(40)

2.1.7 Algoritma RSA (Rivest, Shamir, Adleman)

Secara umum aplikasi kunci publik terbagi menjadi 3 kategori :

1. Kerahasiaan Data

Hal ini sama dengan fungsi dari algoritma simetri, yaitu dapat digunakan untuk menjaga kerahasiaan suatu data melalui mekanisme enkripsi dan deksripsi. Contohnya adalah algoritma RSA.

2. Tanda tangan digital

Dengan menggunakan algoritma asimetri dapat membuktikan otentikasi pesan, maupun otentikasi pengirim (provide authentication) yaitu dengan tanda tangan digital. Contoh algoritma yang dapat digunakan adalah RSA.

3. Pertukaran kunci

Algoritma kriptografi kunci publik dapat digunakan untuk pengiriman kunci simetri (session keys). Contoh algoritma yang dapat digunakan untuk aplikasi ini adalah algoritma RSA.

Algoritma kriptografi kunci asimetri atau biasa disebut dengan algoritma kunci publik muncul karena adanya keterbatasan media perantara yang terjamin keamanannya untuk mendistribusikan kunci dalam kriptografi. Algoritma kriptografi simetri menggunakan kunci yang sama untuk proses enkripsi dan deskripsi, sehingga kedua belah pihak yang saling bertukar informasi maupun pihak penerima informasi harus berbagi kunci yang sama. Saluran-saluran komunikasi umum tidak mempunyai tingkat keamanan yang baik dalam pendistribusian kunci, sehingga kunci harus dikirim secara langsung melalui pihak ketiga yang dapat dipercaya.(Dony Ariyus, Computer Security, 2006)

Dengan permasalahan yang timbul di atas, digunakanlah algoritma kunci asimetri sebagai alternatif yang lebih aman. Dari berbagai algoritma kunci asimetri


(41)

yang paling populer adalah algoritma kriptografi RSA. Keamanan dari algoritma RSA ini terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Selama pemfaktoran bilangan yang besar menjadi faktor-faktor prima belum ditemuka n algoritma yang efektif, maka selama itu pula keamanan algoritma kriptografi RSA ini tetap terjamin keamanannya.

2.1.7.1 Sejarah RSA

Penemu pertama algoritma kriptografi kunci asimetri adalah Clifford Cocks, James H. Ellis dan Malcolm Williamson (sekelompok ahli matematika yang bekerja untuk United Kindom’s Government Communication Head Quarters, agen rahasia Inggris) pada awal tahun 1970. Pada waktu itu temuan itu dipublikasikan dan fakta mengenai temuan tersebut tetap menjadi rahasia hingga tahun 1997.

Algoritma kriptografi kunci asimetri untuk pertama kalinya dipublikasikan pada tahun 1976 oleh Whitfield Diffie dan Martin Hellman. Dua orang tersebut merupakan ilmuwan dari Stanford University, yang membahas metode pendistribusian kunci rahasia melalui saluran komunikasi umum (publik), yang kemudian metode tersebut dikenal dengan metode pertukaran kunci Diffie-Hellman (Diffie-Hellman Key Exchange).

Ide awal Clifford Cocks ditemukan kembali oleh sekelompok ilmuwan dari Massachussets Institute of Technology pada tahun 1977. sekelompok orang ini adalah Ron Rivest, Adi Shamir, dan Leonard Adleman. Mereka kemudian mempublikasikan temuan mereka pada tahun 1978 dan algoritma kriptografi kunci asimetri yang mereka temukan dikenal dengan nama algoritma kriptografi RSA. RSA itu sendiri merupakan akronim dari nama keluarga mereka, Rivest, Shamir, dan Adleman.

Pada tahun 1983, Massachussets Institute of Technology menerima hak paten atas sebuah makalah berjudul “Cryptography Communication System and Method” yang mengaplikasikan penggunaan algoritma kriptografi RSA. (Yusuf Kurniawan, 2004).


(42)

2.1.7.2 Proses Enkripsi dan Deskripsi RSA

Secara umum ada beberapa besaran-besaran yang harus diperhatikan dalam algoritma RSA, yaitu :

1. p dan q adalah bilangan prima ( rahasia )

2. n = p . q ( tidak rahasia )

3. φ(n) = ( p-1 ) ( q-1 ) ( rahasia ) 4. e ( kunci enkripsi ) ( tidak rahasia ) 5. d ( kunci deskripsi ) ( rahasia ) 6. m ( plainteks ) ( rahasia ) 7. c ( chiperteks ) ( tidak rahasia )

2.1.7.3 Rumus Algoritma RSA

Rumus untuk enkripsi :

Ee(m) = c ≡ me mod n (2.3)

Rumus untuk deskripsi :

Dd(c) = m ≡ cd mod n (2.4)

2.1.7.4 Algoritma Membangkitkan Pasangan Kunci

1. Memilih dua buah bilangan prima yaitu diberi simbol p dan q

2. Menghitung nilai n = p.q ( n ≠ p, karena jika n = p, maka nilai n = p2 dan akan dapat mudah mendapatkan nilai n ).

3. Hitung φ(n) = (p-1)(q-1).

4. Memilih kunci publik e yang relatif prima terhadap φ(n). 5. Bangkitkan kunci privat dengan menggunakan persamaan :


(43)

e n k

d =1+ Φ( ) (2.5)

Hasil dari algoritma di atas adalah :

a. Kunci publik adalah pasangan (e,n) b. Kunci privat adalah pasangan (d,n)

Penggunaan algoritma di atas dapat dicontohkan sebagai berikut :

Misalkan Ghiand dan Ahmad akan melakukan komunikasi. Mereka akan membangkitkan kunci publik dan kunci privat milik mereka. Ghiand memilih p = 47 dan q = 71, selanujutnya Ghiand menghitung :

n = p.q = 3337 (2.6)

dan

φ(n) = (p-1)(q-1) = 3220 (2.7)

Ghiand memilih kunci publik e = 79, karena 79 merupakan relatif prima terhadap 3220. Ghiand memberikan nilai e dan n kepada publik. Selanjutnya Ghiand akan membangkitkan kunci privat d dengan persamaan :

e n k

d =1+ Φ( )

Dengan mencoba nilai k =1,2,3,... diperoleh nilai d yang bulat adalah 1019. Ini merupakan kunci privat yang akan digunakan untuk mendeskripsikan cipherteks. Jadi pasangan yang dihasilkan adalah :


(44)

b. Kunci privat ( d = 1019, n = 3337 )

2.1.7.5 Algoritma Enkripsi / Deskripsi

Enkripsi

1. Ambil kunci publik penerima pesan, e, dan modulus n.

2. Plainteks dinyatakan dengan blok-blok m1, m2, ..., sedemikian sehingga setiap blok

merepresentasikan nilai di dalam selang [0, n-1].

3. Setiap blok mi dienkripsikan menjadi blok ci dengan rumus ci = mie mod n

Deskripsi

Setiap blok cipherteks ci dideskripsikan kembali menjadi blok mi dengan rumus :

mi = cid mod n

Algoritma di atas dapat dicontohkan sebagai berikut :

Ahmad akan mengirim pesan kepada Ghiand. Pesan yang akan dikirimkan adalah :

m = HARI INI

atau dalam desimal ( kode ASCII ) adalah :

7265827332737873

Kemudian nilai di atas akan dipecah menjadi blok-blok m. Nilai-nilai m harus lah masih dalam selang [0, 3337 – 1]. Maka blok yang akan terbentuk adalah :

m1 = 726 m4 = 273

m2 = 582 m5 = 787


(45)

Ahmad telah mengetahui kunci publik Ghiand adalah e = 79 dan n = 3337. Ahmad dapat mengenkripsikan pesan berikut :

c1 = 72679 mod 3337 = 215; c2 = 58279 mod 3337 = 776;

c3 = 73379 mod 3337 = 1743; c4 = 27379 mod 3337 = 933;

c5 = 78779 mod 3337 = 1731; c6 = 00379 mod 3337 = 158;

Jadi cipherteks yang di hasilkan adalah :

215 776 1743 933 1731 158

Maka pesan yang telah terenkripsi tersebut akan dikirimkan kepada Ghiand, yang mana Ghiand telah memiliki kunci privat :

d = 1019

Setelah itu cipherteks tersebut akan dideskripsikan oleh Ghiand sesbagai berikut :

m1 = 2151019 mod 3337 = 726 m2 = 7761019 mod 3337 = 582

m3 = 17431019 mod 3337 = 733 m4 = 9331019 mod 3337 = 273

m5 = 17311019 mod 3337 = 787 m6 = 1581019 mod 3337 = 003

maka akan dihasilkan kembali

m = 726 582 733 273 787 003

Yang dalam pengkodean ASCII dapat dibaca sebagai berikut :


(46)

2.1.7.6 Keamanan RSA

Pada dasarnya keamanan algoritma RSA ini terletak yaitu pada sulitnya memfaktorkan bilangan besar menjadi faktor-faktor prima. Pada RSA masalah pemfaktoran berbunyi : Faktorkan n menjadi dua faktor prima, p dan q, sedemikian hingga n = p.q. sekali n dapat difaktorkan menjadi p dan q, maka φ(n) = (p-1)(q-1) dapat dihitung. Selanjutnya kunci privatpun dapat dihitung.

2.2 Kompresi

Kompresi merupakan salah satu dari bidang ilmu komputer. Pada subbab ini penulis akan membahas teori-teori mengenai kompresi dan algoritma LZW sebagai algoritma kompresi yang penulis gunakan.

2.2.1 Definisi Kompresi

Kompresi data adalah ilmu atau seni merepresentasikan informasi dalam bentuk yang lebih compact. Pengertian lain dari data kompresi adalah proses mengkonversikan sebuah input data stream (stream sumber, atau data mentah asli) menjadi data stream lainnya (bitstream hasil, atau stream yang telah terkompresi) yang berukuran lebih kecil.(Ida Mengyi Pu, 2006).

Tujuan dari kompresi data adalah untuk merepresentasikan suatu data digital dengan sesedikit mungkin bit, tetapi tetap mempertahankan kebutuhan minimum untuk membentuk kembali data aslinya. Data digital ini dapat berupa text, gambar, suara, dan kombinasi dari ketiganya, seperti video.

Untuk membuat suatu data menjadi lebih kecil ukurannya dari pada data asli, diperlukan algoritma tertentu. Dalam algoritma kompresi data, tidak ada algoritma yang cocok untuk semua jenis data. Hal ini disebabkan karena data yang akan dikompres harus dianalisis terlebih dahulu, dan berharap menemukan pola tertentu


(47)

yang dapat digunakan untuk memperoleh data dalam bentuk yang lebih kecil. Karena itu, muncul banyak algoritma-algoritma kompresi data.

Secara garis besar, terdapat 2 buah penggolongan algoritma kompresi data kompresi lossy, dan kompresi lossless.

a. Kompresi Lossy

Algoritma kompresi dikatakan lossy atau disebut juga irreversible jika tidak dimungkinkan untuk membentuk data asli yang tepat sama dari data yang sudah dikompresi. Ada beberapa detail yang hilang selama proses kompresi. Contoh penggunaan algoritma lossy seperti pada data gambar, suara dan video. Karena cara kerja sistem pengelihatan dan pendengararn manusia yang terbatas, beberapa detail dapat dihilangkan, sehingga didapat data hasil kompresi yang seolah-olah sama dengan data asli.

b. Kompresi Lossless

Algoritma kompresi dikatakan lossless atau disebut juga reversible jika dimungkinkan untuk membentuk data asli yang tepat sama dari data yang sudah dikompresi. Tidak ada informasi yang hilang selama proses kompresi dan dekompresi. Teknik ini digunakan jika data tersebut sangat penting, jadi tidak di mungkinkan untuk menghilangkan beberapa detail.

2.2.2 Algoritma Kompresi LZW

Algoritma Lempel-Ziv-Welch (LZW), dikembangkan oleh Abraham Lempel, Jacob Ziv, dan Terry Welch. Dan dipublikasikan pada tahun 1984 oleh Terry Welch. LWZ dirancang sebagai peningkatan dari algoritma LZ78.

Algoritma ini mereduksi jumlah token yang dibutuhkan menjadi 1 simbol saja. Simbol ini merujuk kepada index dalam dictionary. Proses kerjanya mirip dengan algoritma LZ78, tetapi jika pada algoritma LZ78 dictionary dimulai dari keadaan kosong, LZW mengisi dictionary ini dengan seluruh simbol alfabet yang dibutuhkan.


(48)

Pada kasus yang umum, 256 index pertama dari dictionary akan diisi dengan karakter ASCII dari 0-255. Karena dictionary telah diisi dengan semua kemungkinan karakter terlebih dahulu, maka karakter inputan pertama akan selalu dapat ditemukan dalam dictionary. Inilah yang menyebabkan token pada LZW hanya memerlukan 1 simbol saja yang merupakan pointer pada dictionary. (Linawati dan Pangabean H.P, 2004).

Prinsip kerja LZW, dimulai dengan membaca karakter input satu persatu dan diakumulasi pada sebuah srting I. Lalu dilakukan pencarian dalam dictionary, apakah terdapat string I. Selama string I ditemukan didalam dictionary, string ini ditambahkan dengan satu karakter berikutnya, lalu dicari lagi dalam dictionary. Pada saat tertentu, menambahkan satu karakter x pada string I akan menyebabkan tidak ditemukan dalam dictionary. String I ditemukan, tetapi string Ix tidak. Dalam tahap ini, algoritma akan akan menulis index dari string I sebagai output, menambahkan string Ix kedalam dictionary, dan menginisialisasikan string I dengan x, lalu proses dimulai lagi dari awal.

Sebagai contoh, inputan adalah string : ada_beberapa_data_yang_hilang.

Langkah pertama adalah mengisi dictionary dengan semua kemungkinan karakter, yaitu karakter ASCII dari 0-255, yang berarti index dictionary 0-255 telah berisi. Lalu string I diisi dengan karakter ”a”. Didalam dictionary, karakter ”a” ada pada index ke 97. Lalu string I ditambah dengan karakter selanjutnya ”d”. Frase ”ad” tidak ditemukan, maka akan dihasilkan token 97, dan frase ”ad” ditambahkan pada index ke 256 dalam dictionary. String I sekarang berisi ”d”, karena d ada pada index ke 100, maka string I ditambahkan dengan karakter selanjutnya, menjadi ”da”. Untuk langkah selanjutnya dapat dilihat dari tabel.

Kumpulan output yang berupa angka-angka inilah sebagai hasil kompresi. Karena menggunakan konsep dictionary yang sama seperti LZ78, pengorganisasian dictionary juga diperlukan, misalnya seperti seberapa besar dictionary yang disediakan, dan apa yang akan dilakukan jika dictionary sudah penuh.

Banyak algoritma berbasis dictionary lainnya dikembangkan dari tiga algoritma ini. Misalnya algortima LZMW, LZAP dan LZY adalah variasi dari LZW. Atau algoritma LZFG yang merupakan gabungan dari LZ77 dan LZ78.


(49)

Tabel 2.2 merupakan contoh dari penggunaan algoritma kompresi LZW.

Tabel 2.2 Contoh cara kerja algoritma LZW

String I Di dalam dictionary? Entry baru Output Keterangan

A ada - -

Ad tidak [256] = ad 97 97 adalah index dari ”a”

D ada - -

Da tidak [257] = da 100 100 adalah index dari ”d”

A ada - -

a_ tidak [258] = a_ 97 97 adalah index dari ”a”

_ ada - -

_b tidak [259] = _b 95 95 adalah index dari ”_”

B ada - -

Be tidak [260] = be 98 98 adalah index dari ”b”

E ada - -

Eb tidak [261] = eb 101 101 adalah index dari ”e”

B ada - -

Be ada - -

Ber tidak [262] = be 260 262 adalah index dari ”be”


(50)

BAB 3

ANALISIS PERMASALAHAN

Analisis

Dalam merancang suatu sistem diperlukan analisis terhadap sistem yang akan dirancang tersebut terlebih dahulu. Tujuan dari analisis ini sendiri adalah agar sistem yang dirancang menjadi tepat guna dan ketahanan dari sistem tersebut akan lebih terjaga. Di samping itu dengan dilakukannya analisis kita akan dapat mempermudah kerja kita dalam membuat sistem, dan jika suatu saat nanti ada perbaikan atau penambahan dalam sistem tersebut, maka akan mudah untuk diselesaikan.

Sistem yang akan penulis rancang tediri dari dua proses secara garis besar, yaitu proses enkripsi dan proses kompresi. Dimana untuk proses enkripsi penulis akan menggunakan algoritma kriptografi RSA dan DES. Sedangkan untuk proses kompresi penulis akan menggunakan algoritma LZW dengan menggunakan metode lossless. Skema global dari proses enkripsi dapat dilihat pada Gambar 3.1.


(51)

Dari gambar di atas dapat dilihat bahwa plainteks (informasi awal) pertama kali dienkripsi menggunakan algoritma RSA. Dari proses yang pertama akan dihasilkan cipherteks sementara yang mana merupakan hasil enkripsi menggunakan algoritma RSA. Setelah itu proses selanjutnya yaitu, cipherteks sementara tadi akan dienkripsi kembali menggunakan algoritma DES, yang akan menghasilkan cipherteks dari keseluruhan proses enkripsi. Chiperteks inilah yang akan digunakan pada proses kompresi.

Gambar 3.2 merupakan skema global dari proses kompresi :

Gambar 3.2 Skema global proses kompresi

Dari gambar di atas dapat dilihat bahwa proses kompresi dilakukan terhadap berkas yang telah dienkripsi yang bertujuan agar berkas tersebut ukurannya dapat diperkecil. Hasil yang diharapkan adalah berkas chiperteks tersebut ukurannya dapat lebih kecil.

Di samping kedua proses di atas penulis juga akan melengkapi sistem ini dengan proses Dekompresi dan Deskripsi. Hal ini bertujuan agar berkas yang tadi telah dienkripsi dan dikompresi dapat kembali menjadi informasi awal yang dapat dimanfaatkan oleh orang yang berhak. Dalam proses pembalikan ini yang pertama penulis lakukan adalah mendekompresikan berkas hasil tadi, agar berkas tersebut ukurannya kembali menjadi berkas chiperteks sebelum dikompresi. Skema global proses dekompresi dapat dilihat pada Gambar 3.3.


(52)

Gambar 3.3 Skema global untuk proses dekompresi

Berkas cipherteks yang telah dikompresi akan di dekompresi kembali untuk menghasilkan berkas cipherteks yang akan dideskripsikan untuk mendapatkan kembali informasi awal (plainteks). Gambar 3.4 merupakan skema global dari proses deskripsi.

Gambar 3.4 Skema global proses Deskripsi

3.1 Analisis Algoritma RSA

Prinsip kerja algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan adalah untuk mendapatkan kunci


(53)

privat. Selama bilangan tersebut tidak dapat difaktorkan selama itu pula keamanan algoritma RSA terjamin. Dalam algoritma RSA terdapat beberapa besaran-besaran yang penting, yaitu sebagai berikut :

a. p dan q merupakan bilangan prima yang diambil secara acak, atau untuk lebih bagusnya dipilih oleh orang yang akan menerima pesan. Sifat dari kedua bilangan ini adalah rahasia, dimana hanya pengirim pesan dan penerima pesan saja yang mengetahui.

b. n = p.q. sifat dari n ini adalah tidak rahasia, yang berarti bisa diketahui oleh publik.

c. φ(n) = (p-1)(q-1). Sifat dari bilangan ini adalah rahasia. d. e(kunci enkripsi). Kunci enkripsi bersifat tidak rahasia. e. d(kunci deskripsi). Kunci deskripsi bersifat tidak rahasia.

f. m(plainteks). Plainteks merupakan informasi awal yang bersifat rahasia.

g. c(chiperteks). Chiperteks merupakan informasi yang telah dienkripsi yang bersifat tidak rahasia. (Dony Ariyus, 2006).

Langkah pertama dalam algoritma RSA ini adalah membangkitkan pasangan kunci (kunci publik, dan kunci privat). Sebagaimana yang telah kita ketahui kunci publik bersifat tidak rahasia dan boleh diketahui oleh semua orang, sedangkan kunci privat bersifat rahasia dan hanya orang berhak terhadap informasi tersebut saja yang dapat mengetahuinya. Berikut adalah langkah-langkah dalam membangkitkan pasangan kunci :

a. Pertama pilih dua buah bilangan prima secara acak. Bilangan itu diberi besaran p dan q.

b. Hitung nilai n = p.q c. Hitung φ(n) = (p-1)(q-1)

d. Pilih kunci publik yang disimbolkan dengan e. Syarat dari pemilihan kunci ini adalah e harus relatif prima terhadap φ(n).

e. Membangkitkan kunci privat dengan persamaan

e n k d =1+ Φ( )


(54)

Hasil dari algortima di atas adalah :

1. Kunci publik adalah pasangan (e,n). 2. Kunci privat adalah pasangan (d,n).

Gambar 3.5 merupakan flowchart dari pembangkitan kunci dalam algoritma RSA.


(55)

Proses selanjutnya adalah proses enkripsi. Langkah-langkah dari proses enkripsi adalah sebagai berikut :

a. Langkah pertama adalah mengambil nilai e dan n dari proses pembangkitan kunci.

b. Masukan teks yang akan dienkripsi(plainteks)

c. Berkas yang akan dienkripsi di ubah kedalam bentuk desimal sesuai dengan tabel ASCII. Berkas ini dilambangkan dengan

d. Membagi berkas tersebut menjadi beberapa blok (mi), dengan syarat mi < n

dan length(mi) = length(mi+1).

e. Setelah itu setiap blok dari berkas tersebut dienkripsikan menggunakan pasangan kunci publik.

Gambar 3.6 merupakan flowchart untuk enkripsi :


(56)

Setelah didapatkan cipherteksnya, dengan begitu informasi tersebut tidak akan dapat dibaca lagi oleh orang tanpa melalui proses deskripsi. Proses deskripsi pada algoritma RSA ini memerlukan yang dinamakan dengan kunci privat. Kunci privat hanya diketahui oleh orang yang berhak atas informasi tersebut. Gambar 3.7 merupakan flowchart dari proses deskripsi pada algoritma RSA


(57)

3.2 Analisis Algoritma DES

Prinsip kerja DES adalah pembagian informasi menjadi blok-blok tertentu, oleh karena itu DES termasuk salah satu algoritma chiper blok. Pesan-pesan tersebutpun akan diacak dengan menggunakan matriks-matriks standar yang ada pada algoritma DES. Proses pertama yang penulis lakukan adalah membangkitkan kunci pada algoritma DES. Langkah-langkah dalam pembangkitan kunci adalah sebagai berikut :

a. Masukkan kunci eksternal, yang panjangnya 64 bit atau delapan karakter. b. Kemudian kunci eksternal 64 bit tadi dipermutasikan dengan matriks

permutasi PC-1. sehingga panjang kunci yang tadinya 64 bit menjadi 56 bit. Matriks permutasi PC-1 :

57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4

c. Hasil permutasi yang panjangnya 56 bit tersebut kemudian dibagi menjadi dua blok, yaitu Cj dan Dj. Cj merupakan kumpulan dari bit pertama sampai bit ke

28, sedangkan Dj merupakan kumpulan dari bit ke 29 sampai 56.

d. Kemudian pada kedua blok dilakukan pergeseran dengan aturan seperti yang ditunjukkan Tabel 3.1.


(58)

Tabel 3.1 Tabel aturan putaran dari pergeseran bit

Putaran, i Jumlah pergeseran bit

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

Tabel diatas merupakan tabel aturan tentang pergeseran dari C0 dan D0,

dimana ketentuan pergeseran diatur oleh putaran.

e. Setelah mengalami proses penggeseran, kedua blok tersebut digabungkan kembali dan akan dipermutasikan dengan matriks permutasi PC-2. Berikut adalah matriks permutasi PC-2

14 17 11 24 1 5 3 28

23 19 12 4 26 8 16 7

41 52 31 37 47 55 30 40

44 49 39 56 34 53 46 42

f. Hasil permutasi dengan matriks PC-2 di atas yang dinamakan dengan kunci internal yang akan kita gunakan untuk setiap putaran pada proses enkripsi dan deskripsi algoritma DES. Flowchart pembangkitan kunci pada algoritma DES dapat dilihat pada Gambar 3.8.


(59)

Gambar 3.8 Flowchart pembangkitan kunci pada DES

Proses berikutnya yaitu proses enkripsi algoritma DES. Langkah–langkah proses enkripsi adalah sebagai berikut :

a. Pertama adalah menginputkan teks yang akan dienkripsi, dalam hal ini yang diinputkan adalah cipherteks hasil enkripsi menggunakan algoritma RSA. b. Selanjutnya teks tersebut akan dirubah menjadi bilangan biner dengan

mengacu kepada nilai indeks pada tabel ASCII.

c. Teks yang telah dirubah menjadi bilangan biner tersebut dalam hal pengerjaan enkripsi dibagi menjadi 64 bit. Berarti pengerjaan untuk algoritma DES adalah setiap delapan karakter atau 64 bit.


(60)

d. Selanjutnya teks yang telah dibagi tadi kemudian di permutasi dengan matriks permutasi awal. Tujuannya adalah mengacak plainteks

57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4

e. Proses selanjutnya yaitu teks yang telah diacak tadi kemudian dibagi menjadi dua blok, yang masing-masing besarnya adalah 32 bit. Kedua blok tersebut dilambangkan dengan L0 dan R0

f. Proses selanjutnya yaitu melakukan putaran proses sebanyak 16 kali. Proses yang dilakukan dalam setiap putaran adalah sebagai berikut :

Li = Ri-1

Ri = Li-1⊕ K1

g. Setelah dilakukan sebanyak 16 kali, maka pada proses selanjutnya kedua blok tersebut akan digabungkan kembali.

h. Setelah penggabungan kedua blok, maka proses terakhir adalah melakukan permutasi dengan menggunakan matriks pertmutasi IP-1. Berikut adalah matriks IP-1.

40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25


(61)

Flowchart untuk proses enkripsi algoritma DES dapat dilihat pada Gambar 3.9.


(62)

Proses selanjutnya adalah proses deskripsi, yang mana bertujuan untuk membalik berkas kembali menjadi informasi yang dapat digunakan oleh pengguna. Langkah-langkah dari proses deskripsi adalah sebagai berikut :

a. Pertama chperteks hasil enkripsi menjadi input.

b. Kemudian pada cipherteks dilakukan proses invers permutasi dengan menggunakan matriks permutasi IP-1.

c. Terus cipherteks dibagi menjadi dua blok seperti pada proses enkripsi.

d. Setelah itu lakukan perputaran sebanyak 16 kali dengan memakai persamaan berikut : Lj-1 = Lj-1 + invers[Rj][PBOX]

Rj-1 = Lj

e. Kemudian kedua blok itu digabung kembali dan dilakukan invers permutasi dengan menggunakan matriks permutasi IP. Itulah hasil deskripsi menggunakan algoritma DES.


(63)

Gambar 3.10 merupakan flowchart untuk proses deskripsi algoritma DES.


(64)

3.3 Analisis Algoritma LZW

Algortima LZW merupakan salah satu algoritma yang menggunakan metode dictionary. Algoritma ini mereduksi jumlah token yang dibutuhkan menjadi satu simbol saja. Simbol ini merujuk kepada indeks dalam dictionary. LZW memulai isi kamus dengan nilai-nilai ASCII, yaitu dari 0-255. Berarti kamus dalam LZW secara otomatis sudah terisi sebanyak 256 karakter.

Prinsip kerja LZW dimulai dengan membaca karakter masukan satu persatu dan diakumulasikan pada sebuah string i. Lalu dilakukan pencarian dalam dictionary, apakah terdapat string i. selama string i ditemukan di dalam kamus, string ini akan ditambahkan dengan satu karakter berikutnya, setelah diperiksa di dalam kamus, maka tidak ditemukan karakter tersebut. Maka akan diambil karakter sebelumnya sebagai output dan karakter yang baru tersebut ditambahkan ke dalam kamus. Berikut merupakan langkah-langkah dalam melakukan kompresi LZW :

a. Proses pertama yang dilakukan adalah menginputkan berkas yang akan dikompresi.

b. Selanjutnya menginisialisasi 256 pertama dari kamus dengan karakter-karakter ASCII.

c. Baca karakter pertama dari berkas sumber, selanjutnya baca karakter berikutnya, jika karakter kedua terdapat dalam kamus, maka lanjutkan dengan membaca karakter berikutnya, akan tetapi jika karakter kedua tidak ada dalam kamus, maka tambahkan kedua karakter tersebut ke dalam kamus. Maka yang akan diambil sebagai outputnya adalah adalah karakter pertama, sedangkan karakter kedua dijadikan karakter pertama pada proses berikutnya.


(65)

Gambar3.11 merupakan flowchart dari proses kompresi dengan algoritma LZW


(66)

Setelah dilakukan proses kompresi, untuk dapat memanfaatkan kembali berkas yang telah dikompresi tersebut, maka perlu proses deskripsi, yaitu proses pembalikan ukuran data kembali seperti semula. Berikut langkah-langkah yang dilakukan dalam proses deskripsi :

a. Proses pertama yaitu membaca string masukan terhadap berkas-berkas yang telah dikompresi.

b. Proses berikutnya menginisialisasi isi dari kamus pertama dengan 256 karakter ASCII.

c. Konversi teks ke dalam bentuk token.

d. Kemudian baca token pertama selanjutnya disimpan pada variabel x.

e. Ambil nilai elemen pada indeks x dari kamus simpan pada variabel word, element dan output.

f. Selanjutnya baca satu token berikutnya dari teks, lalu simpan nilainya pada variabel x.

g. Jika nilai x terdapat dalam kamus, maka ambil nilai elemen pada indeks x dari kamus simpan pada variabel element, akan tetapi jika nilai x tidak terdapat dalam kamus variabel element berisi word ditambahkan dengan karakter pertama dari word, kemudian tambahkan word dengan karakter pertama dari element ke dalam kamus.

h. Proses selanjutnya yaitu tambahkan isi element ke dalam variabel output, dan kemudian pindahkan nilai variabel element ke word. Lakukan proses di atas sampai akhir dari berkas teks tersebut.


(67)

Gambar 3.12 merupakan flowchart dari proses dekompresi dengan algoritma LZW.


(68)

BAB 4

IMPLEMENTASI

4.1 Umum

Pada bab di jelaskan implementas dari sistem yang penulis rancang. Di sini seperti yang telah penulis bahwa secara menyeluruh penulis membagi sistem menjadi dua buah proses, yaitu proses enkripsi yang mana berfungsi mengubah plainteks menjadi chiperteks dan proses kompresi yang mana bertujuan agar memampatkan ukuran dari cipherteks yang terbentuk.

Pada implementasi sistem ini secara keseluruhan penulis membuat empat buah form, yang terdiri dari form utama yang berisikan tentang pilihan proses apa yang akan dilakukan. Bentuk antar muka form utama dapat dilihat dari Gambar 4.1.


(69)

Dari gambar gambar di atas dapat dilihat bahwa di dalam form utama terdapat tiga buah menu. Menu tersebut yaitu menu file, menu kriptografi dan menu pemampatan. Pada menu file di dalamnya hanya terdapat menu exit, yang digunakan untuk keluar dari program. Pada menu kedua yaitu menu kriptografi terdapat tiga buah pilihan proses, yaitu pembangkitan kunci privat, proses enkripsi dan proses deskripsi. Sedangkan pada menu pemampatan terdapat dua proses yaitu proses kompresi dan proses dekompresi.

4.2 Proses pembagkitan kunci

Proses pembangkitan kunci terdapat dalam menu kriptografi, dimana seperti penulis jelaskan sebelumnya bahwa pembagkitan kunci ini merupakan pembangkitan kunci untuk algoritma RSA. Disini secara default akan tertera nilai 0 terlebih dahulu pada masing-masing masukan. Variabel yang menjadi masukannya adalah variabel p,q dan nilai dari kunci publik. Antar muka dari proses tersebut dapat dilihat pada Gambar 4.2.

Gambar 4.2 Antarmuka proses enkripsi secara default

Jika nilai p = 47, q = 71 dan kunci publik (e) = 79, maka hasilnya dapat dilihat pada Gambar 4.3.


(70)

Gambar 4.3 Antarmuka hasil pembangkitan pasangan kunci

Syarat dari nilai p dan q adalah keduanya harus merupakan bilangan prima. Sedangkan masukan untuk kunci pubik(e) harus relatif prima terhadap φ(n). φ(n) = (p-1)(q-1).

Setelah didapat pasangan kunci publik (e dan n), dan pasangan kunci privat (d dan n), maka tahap selanjutnya proses enkripsi dan deskripsi dapat dilakukan.

4.3 Proses Enkripsi

Proses enkripsi yaitu proses dimana perubahan informasi yang dapat kita baca (palainteks) menjadi informasi yang tidak dapat kita mengerti (cipherteks). Pada sistem ini proses enkripsi yang penulis lakukan menggunakan dua buah algoritma kriptografi yaitu algoritma RSA dan algoritma DES. Proses pertama yang penulis lakukan adalah mengenkripsi pesan tersebut dengan menggunakan algoritma RSA, sedangkan selanjutnya hasil enkripsi dengan menggunakan RSA akan dienkripsi kembali dengan menggunakan algoritma DES.

Pada proses enkripsi ini yang kita perlu masukan adalah kunci untuk algoritma RSA, sedangkan untuk algoritma DES penulis telah langsung menginputkan kuncinya kedalam listing program yang penulis buat.


(71)

Gambar 4.4 Antarmuka proses enkripsi

Setelah kita memasukkan kunci publik, nilai n, file input, dan file output maka klik tombol enkripsi. Nilai kunci publik adalah nilai kunci publik yang kita bangkitkan pada proses pembangkitan kunci sebelumnya. Nilai n juga kita dapat dari hasil pembangkitan kunci publik. File input merupakan sumber berkas yang akan kita enkripsi, sedangkan file output adalah memasukkan lokasi dimana kita akan menyimpan hasil dari enkripsi kita. Setelah kita mengklik tombol enkripsi maka akan muncul pesan seperti pada Gambar 4.5.

Gambar 4.5 Antarmuka informasi bahwa enkripsi sukses

Setelah pesan tersebut keluar, maka berkas yang anda masukan tadi telah dienkripsi.


(72)

4.4 Proses Deskripsi

Deskripsi merupakan proses pengembalian berkas cipherteks menjadi berkas plainteks. Jadi secara umum proses deskripsi merupakan kebalikan dari proses enkripsi. Jika sebelumnya pada proses enkripsi menggunakan algoritma RSA terlebih dahulu dan kemudian diikuti dengan algoritma DES, maka pada proses deskripsi merupakan kebalikannya, yaitu langkah pertama yang dilakukan adalah mendeskripsi cipherteks menggunakan algoritma DES dan baru diikuti dengan deskripsi menggunakan algoritma RSA.

Gambar 4.6 merupakan antar muka dari proses deskripsi.

Gambar 4.6 Antarmuka proses deskripsi

Setelah kita memasukkan kunci privat, nilai n, file input, dan file output maka klik tombol enkripsi. Nilai kunci privat adalah nilai kunci publik yang kita bangkitkan pada proses pembangkitan kunci sebelumnya. Nilai n juga kita dapat dari hasil pembangkitan kunci publik. File input merupakan sumber berkas yang akan kita deskripsi, sedangkan file output adalah memasukkan lokasi dimana kita akan menyimpan hasil dari deskripsi kita. Setelah kita mengklik tombol enkripsi maka akan muncul pesan seperti pada Gambar 4.7.


(73)

Gambar 4.7 Antarmuka informasi bahwa deskripsi sukses

Setelah pesan tersebut keluar, maka berkas yang anda masukan tadi telah dideskripsi.

4.5 Proses Kompresi

Kompresi yaitu proses pemampatan atau pengukuran ukuran dari sebuah data ataupun informasi. Hal ini berguna sebagai penyimpanan dalam media berkapasitas rendah. Dan juga dapat mempercepat proses pengiriman data melalui media telekomunikasi. Gambar 4.8 merupakan antar muka dari proses kompresi.


(74)

Gambar 4.9 merupakan antar muka penyimpanan berkas yang akan dikompresi.

Gambar 4.9 Antarmuka proses kompresi ketika menyimpan berkas

Dari dua gambar di atas gambar pertama merupakan proses membuka berkas yang akan dikompresi, sedangkan gambar kedua adalah dimana kita akan menyimpan berkas hasil kompresi. Setelah itu, kemudian tekan tombol save dan proses kompresi akan berhasil dengan tanda akan keluar kotak seperti Gambar 4.10.

Gambar 4.10 Antarmuka informasi bahwa kompresi sukses

4.6 Proses Dekompresi

Proses dekompresi yaitu proses pengembalian berkas yang telah dimampatkan tadi ke ukuran semula. Tujuannya adalah agar berkas tersebut bisa dideskripsi kembali dan bisa menjadi informasi yang berguna kembali oleh pihak yang berkepentingan. Gambar 4.11 merupakan antarmuka dari proses deskripsi.


(1)

67

M. Yuli Andri : Implementasi Algoritma Kriptografi Des, Rsa Dan Algoritma Kompresi LZW Pada Berkas Digital, 2009.

Berikut merupakan contoh kedua perbandingan ukuran berkas sebelum dienkripsi dan sesudah dienkripsi, yang akan diperlihatkan oleh Gambar 4.18 dan Gambar 4.19.

Gambar 4.18 Ukuran berkas sebelum proses enkripsi (contoh 2)


(2)

M. Yuli Andri : Implementasi Algoritma Kriptografi Des, Rsa Dan Algoritma Kompresi LZW Pada Berkas Digital, 2009.

Dari kedua contoh di atas dapat dilihat bahwa ukuran berkas akan menjadi lebih besar setelah dilakukan proses enkripsi, hal ini disebabkan karena pada algoritma RSA akan dilakukan proses perpangkatan pada nilai-nilai dari setiap karakter yang akan dienkripsi.

Perubahan juga terjadi pada proses kompresi. Ukuran berkas sebelum dan sesudah proses kompresi dapat dilihat pada Gambar 4.20 dan Gambar 4.21.

Gambar 4.20 Ukuran berkas sebelum proses kompresi


(3)

69

M. Yuli Andri : Implementasi Algoritma Kriptografi Des, Rsa Dan Algoritma Kompresi LZW Pada Berkas Digital, 2009.

Dari gambar 4.22 dan 4.23 di atas dapat dilihat pengurangan ukuran berkas. Berkas yang awalnya berukuran 3,98 KB akan mengalami pengurangan menjadi 3,81 KB setelah dilakukan proses kompresi. Dapat disimpulkan bahwa proses kompresi dapat dilakukan pada berkas cipherteks, akan tetapi pengurangan ukuran tidaklah maksimal, hal ini disebabkan karena untuk melakukan proses enkripsi pada cipherteks memerlukan ukuran kamus yang besar.


(4)

M. Yuli Andri : Implementasi Algoritma Kriptografi Des, Rsa Dan Algoritma Kompresi LZW Pada Berkas Digital, 2009.

BAB 5

PENUTUP

5.1 Kesimpulan

Berdasarkan pembahasan dan evaluasi dari bab – bab terdahulu, maka dapat ditarik kesimpulan sebagai berikut :

1. Proses enkripsi dapat dilakukan dengan menggunakan dua buah algoritma kriptografi yang berbeda yaitu algoritma kriptografi simetri dan algoritma asimetri.

2. Penggunaan dua buah algoritma kriptografi akan membuat berkas cipherteks semakin susah untuk dipecahkan. Karena seorang kriptanalis tidak akan mengetahui algoritma apa yang digunakan pada berkas teks tersebut.

3. Penggunaan algoritma RSA akan memudahkan bagi orang yang berkomunikasi untuk mendistribusikan kunci. Hal ini disebabkan karena untuk melakukan proses enkripsi dan deskripsi menggunakan kunci yang berbeda.

4. Penggunaan algoritma kriptografi asimetri dalam hal ini menggunakan algoritma RSA menyebabkan ukuran berkas teks semakin besar.

5. Proses kompresi juga dapat dilakukan pada chiperteks, namun proses kompresi yang dilakukan tidaklah maksimal. Hal ini disebabkan karena penggunaan bilangan ASCII yang begitu banyak akan membuat isi kamus akan semakin besar.


(5)

71

M. Yuli Andri : Implementasi Algoritma Kriptografi Des, Rsa Dan Algoritma Kompresi LZW Pada Berkas Digital, 2009.

5.2 Saran

Berikut adalah saran – saran untuk pengembangan lebih lanjut terhadap penelitian skripsi ini :

1. Untuk kedepannya diharapkan dapat dilakukan perbaikan-perbaikan terhadap sistem yang penulis buat, terutama dalam kompresi berkas akan dapat lebih maksimal dalam memampatkan berkas teks tersebut.

2. Secara umum metode dictionary yang pada sistem ini diwakilkan oleh algoritma kompresi LZW tidak cocok digunakan untuk memampatkan data yang bersifat cipherteks, karena berkas cipherteks akan membutuhkan kamus yang besar dalam proses kompresi. Karena ukuran kamus yang besar, maka hasil kompresi yang didapat tidaklah seperti yang diharapkan.

3. Untuk kedepannya agar sistem yang penulis buat dapat berkembang tidak hanya dalam penggunaan berkas teks, melainkan juga dapat digunakan untuk berkas-berkas seperti gambar, video, dan lain-lain.


(6)

M. Yuli Andri : Implementasi Algoritma Kriptografi Des, Rsa Dan Algoritma Kompresi LZW Pada Berkas Digital, 2009.

DAFTAR PUSTAKA

Ariyus, Dony. 2006. Computer Security. Yogyakarta: ANDI

Ariyus, Dony.2008.Pengantar Ilmu Kriptografi : teori, analisis dan implementasi. Yogyakarta : ANDI.

Chandra, A. J. 2006. Analisa perbandingan kinerja algoritma kompresi huffman, LZW (Lempe-Ziv-Welch) dan DMC (Dynamic Markov Compresions). Universitas Kristen Petra. Skripsi tidak diterbitkan.

Kurniawan, Yusuf. 2004. Kriptografi Keamanan Internet dan Jaringan Komunikasi. Cetakan Pertama. Bandung : Informatika Bandung.

Linawati dan Panggabean, H.P. 2004. Perbandingan Kinerja Algoritma Kompresi Huffman, LZW, dan DMC pada Berbagai Tipe File. Integral Vol. 9 No. 1: hal. 7-16.

Munir, Rinaldi. 2006. Kriptografi. Cetakan Pertama. Bandung : Informatika Bandung.

Pu, Ida Mengyi. 2006. Fundamental Data Compression. London: Butterworth- Heinemann. Astrianto Stefanus. 2009.