You are on page 1of 118

PERANCANGAN DAN IMPLEMENTASI SISTEM KEAMANAN DATA MENGGUNAKAN ALGORITMA SIMETRI TEA DENGAN BAHASA PEMROGRAMAN DELPHI 7.

SKRIPSI

YUNITA SARI 041401031

PROGRAM STUDI S1 ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA MEDAN 2009

Yunita Sari : Perancangan Dan Implementasi Sistem Keamanan Data Menggunakan Algoritma Simetri Tea Dengan Bahasa Pemrograman Delphi 7.0, 2009. USU Repository 2009

PERSETUJUAN

Judul

Kategori Nama Nomor Induk Mahasiswa Program Studi Departemen Fakultas

: PERANCANGAN DAN IMPLEMENTASI SISTEM KEAMANAN DATA MENGGUNAKAN ALGORITMA SIMETRI TEA DENGAN BAHASA PEMROGRAMAN DELPHI 7.0 : SKRIPSI : YUNITA SARI : 041401031 : SARJANA (S1) ILMU KOMPUTER : ILMU KOMPUTER : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA Diluluskan di Medan, 17 Maret 2009

Komisi Pembimbing Pembimbing 2

: Pembimbing 1

Syahriol Sitorus, S.Si, MIT NIP. 132 174 687

Prof. Dr. Iryanto, M.Si NIP. 130 353 140

Diketahui/Disetujui oleh Program Studi S1 Ilmu Komputer Ketua,

Prof. Dr. Muhammad Zarlis NIP 131 570 434

PERNYATAAN

PERANCANGAN DAN IMPLEMENTASI SISTEM KEAMANAN DATA MENGGUNAKAN ALGORITMA SIMETRI TEA DENGAN BAHASA PEMROGRAMAN DELPHI 7.0

SKRIPSI

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

Medan, 17 Maret 2009

Yunita Sari 041401031

PENGHARGAAN

Puji dan syukur penulis panjatkan kepada Allah SWT, dengan limpahan karunia-Nya kertas kajian ini berhasil diselesaikan dalam waktu yang telah ditetapkan. Ucapan terima kasih penulis sampaikan kepada Bapak Prof. Dr. Iryanto, M.Si selaku pembimbing 1 dan Bapak Syahriol Sitorus S.Si, MIT selaku Sekretaris Program Studi S-1 Ilmu Komputer serta pembimbing 2 pada penyelesaian skripsi ini yang telah memberikan panduan, motivasi serta kepercayaan yang penuh kepada penulis untuk menyempurnakan kajian ini, panduan ringkas dan padat serta profesional telah diberikan kepada penulis agar penulis dapat menyelesaikan penelitian ini. Selanjutnya kepada Bapak Drs. Muhammad Firdaus, M.Si selaku pembimbing akademik yang telah memberikan banyak arahan dalam perkuliahan pada penulis sejak penulis berada di Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara hingga menyelesaikan ujian sarjana lengkap. Kepada Bapak Prof. Dr. Muhammad Zarlis selaku Ketua Program Studi S-1 Ilmu Komputer serta pembanding 1 dan Bapak Drs. Agus Salim Harahap, M.Si selaku pembanding 2 Skripsi yang telah banyak memberikan saran, Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen serta seluruh pegawai pada Program Studi Ilmu Komputer FMIPA USU, pegawai di FMIPA USU, pegawai di Biro Rektor USU. Teristimewa ayahanda dan ibunda tercinta atas teladan, kasih sayang, doa, dukungan materil dan semangat yang telah diberikan kepada penulis selama ini, semoga segala kebaikan ini juga dibalas dengan kebaikan disisiNya. Selanjutnya kepada Ismail Arif, S.Kom, Nisa Dewi Asmar, S.Kom, Dewi Try Agustina, S.Kom, Bang Rahmat Muliadi, S.Si terima kasih atas kelapangan waktu yang diberikan kepada penulis untuk berbagi ilmu. Selanjutnya, kepada teman-teman terbaik, Saidul Akmal, Fika Dewi Atma Putri, Nencyawaty atas motivasi, kebaikan dan perhatiannya. Nurvida Sovyanna Br. Sinulingga, Dedi Setiawan, Sutisna Saputra, Leni SY, S.Kom, Dian MS, S.Kom, Dewi Yanti, S.Kom, Sri F, Farida Y dan Atika Z, S.Kom serta rekan-rekan kuliah angkatan 04 yang telah banyak memberikan motivasi serta bantuan kepada penulis.

ABSTRAK

Keamanan data merupakan salah satu aspek terpenting dalam teknologi informasi. Dengan tingkat keamanan yang tinggi, diharapkan informasi yang disajikan dapat terjaga keasliannya. Pada tugas akhir ini dibentuk suatu sistem yang mengamankan data dan informasi yang tersimpan pada komputer dari gangguan para kriptanalis. Sistem ini dibangun menggunakan perangkat lunak Borland Delphi 7.0. Metodologi untuk membentuk sistem menggunakan pendekatan model air terjun. Tahapan yang penulis lakukan untuk melakukan proses pembentukan sistem tersebut meliputi tahapan analisis permasalahan, perancangan aplikasi yang melibatkan diagram alir data, algoritma dan flowchart beserta pemodelan struktur program dan desain antar muka aplikasi, sehingga aplikasi yang terbentuk menjadi mudah dipergunakan dan memiliki fungsi yang optimal. Dengan menggunakan Algoritma TEA yang merupakan algoritma kriptografi kunci rahasia, permasalahan tersebut dapat diatasi. Kekuatan algoritma ini terletak pada jaringan feistel (meliputi operasi subtitusi, permutasi dan modular arithmetic) dan bilangan delta yang berasal dari golden number.

DESIGN AND IMPLEMENTATION OF DATA SECURITY SYSTEM BY USING TEA SYMETRI ALGORITHM BY DEPLHI 7.0 PROGRAMMING LANGUAGE ABSTRACT

Data security is one of the important aspect in the information technology. With security level is high, desire information that coursed can protected authenticity. In this writing, a system that secure data and information which stored on computer of perturbation by cryptanalysts was formed. The system is built by using Borland Delphi 7.0 application. The methodologies to form the system use the approach of waterfall model. The steps which is done to conduct the application in forming the process covered the step analysis of the problems, designing application containing data flow diagram, algorithms, and flowchart along with the program structure and user interface design, so that the application formed become easy to use and optimally functioned. By using this TEA cryptographic Algorithm which is private key cryptography algorithm, that issues can be solved. The strength of this algorithm lies on the feistel network ( that is use substitution operation, permutation, and modular arithmetic) and the delta number is derived from the golden number.

DAFTAR ISI

Halaman PERSETUJUAN PERNYATAAN PENGHARGAAN ABSTRAK ABSTRACT DAFTAR ISI DAFTAR TABEL DAFTAR GAMBAR BAB 1 PENDAHULUAN 1.1. Latar Belakang Masalah 1.2. Rumusan Masalah 1.3. Batasan Masalah 1.4. Tujuan Penelitian 1.5. Manfaat Penelitian 1.6. Metode Penelitian 1.7. Sistematika Penulisan BAB 2 LANDASAN TEORI 2.1. Kriptografi 2.1.1. Definisi Kriptografi 2.1.2. Sejarah Kriptografi 2.1.3. Tujuan Kriptografi 2.1.4. Konsep Dasar Kriptografi 2.1.4.1. Message, Plaintext, dan Ciphertext 2.1.4.2. Peserta Komunikasi 2.1.4.3. Kriptologi 2.1.4.4. Algoritma Kriptografi 2.1.4.5. Sistem Kriptografi 2.1.4.6. Kategori Cipher Kunci-Simetri 2.4.6.1 Kategori Cipher Kunci-Simetri 2.1.4.7. Prinsip Prinsip Perancangan Cipher Blok 2.2. Tiny Encryption Algorithm 2.3. Masalah Keamanan Informasi Di Negara Republik Indonesia 2.3.1. Hari Persandian Nasional 2.3.2. Informasi Rahasia dalam UU KIP 2.3.3. Standar Keamanan Nasional 2.4. Rekayasa Perangkat Lunak 2.5. Pemrograman dengan Delphi 7.0 BAB 3 ANALISIS DAN PEMODELAN PERANGKAT LUNAK 3.1. Analisis Permasalahan Tiny Encryption Algorithm (TEA) 3.2. Analisis Kebutuhan Tiny Encryption Algorithm (TEA) 3.3. Analisis Proses Enkripsi Algoritma TEA 2 3 4 5 6 7 9 10 11 11 12 12 13 13 13 14 16 16 17 19 20 20 20 21 22 23 27 31 31 99 41 46 46 47 48 51 53 54 54 54 56

3.4. Analisis Proses Deskripsi Algoritma TEA 3.5. Pemodelan Fungsional 3.5.1. DFD dan Spesifikasi Proses 3.5.2. Kamus Data BAB 4 PERANCANGAN DAN IMPLEMENTASI 4.1. Perancangan 4.1.1. Perancangan Struktur Data 4.1.2. Perancangan Struktur Program 4.1.3. Perancangan Antarmuka Pemakai 4.1.4. Perancangan Prosedural 4.2. Implementasi BAB 5 PENUTUP 5.1. Kesimpulan 5.2. Saran DAFTAR PUSTAKA LAMPIRAN A TABEL LAPORAN PENGUJIAN PROGRAM LAMPIRAN B LISTING PROGRAM LAMPIRAN C TABEL KODE ASCII

61 61 61 69 72 72 72 73 75 79 84 90 90 91 92 93 94 114

DAFTAR TABEL

Halaman Tabel 2.1 Tabel 3.1 Tabel 3.2 Tabel 3.4 Tabel 3.5 Tabel 3.6 Tabel 3.7 Perbandingan Estimasi Proses Algoritma TEA dengan Algoritma Simetri lainnya. Spesifikasi proses diagram konteks/DFD Level 0 Spesifikasi proses diagram level 1 Spesifikasi Proses DFD Level 2 Proses 2 (Proses Enkripsi) Spesifikasi Proses DFD Level 3 Proses 3 (Proses Deskripsi) Kamus Data Proses Enkripsi Kamus Data Proses Deskripsi 45 62 64 66 68 70 71

10

DAFTAR GAMBAR

Halaman Gambar 2.1 Gambar 2.2 Gambar 2.3 Gambar 2.4 Gambar 2.5 Gambar 2.6 Gambar 2.7 Gambar 2.8 Gambar 2.9 Gambar 2.10 Gambar 2.11 Gambar 2.12 Gambar 2.13 Gambar 2.14 Gambar 3.1 Gambar 3.2 Gambar 3.3 Gambar 3.4 Gambar 4.1 Gambar 4.2 Gambar 4.3 Gambar 4.4 Gambar 4.5 Gambar 4.6 Gambar 4.7 Gambar 4.8 Gambar 4.9 Mesin Enkripsi Enigma Proses Enkripsi dan Deskripsi Contoh Plainteks dan Cipherteks Skema Komunikasi dengan Proses Enkripsi Hubungan Kriptografi, Kriptanalisis dan Steganografi Proses Enkripsi Deskripsi Menggunakan Algoritma Simetri Proses Enkripsi Deskripsi Menggunakan Algoritma Asimetri Skema enkripsi dan dekripsi dengan mode ECB Skema enkripsi dan dekripsi dengan mode CBC Skema enkripsi dengan mode CFB Skema dekripsi dengan mode CFB Skema dekripsi dengan mode OFB Skema enkripsi dengan mode OFB Skema Algoritma TEA Diagram Konteks/DFD Level 0 Diagram Level 1 Diagram Level 2 (Proses Enkripsi) Diagram Level 2 (Proses Deskripsi) Struktur Program KripTEA Rancangan Layar Utama KripTEA Rancangan Layar Encryption Rancangan Layar Descryption Rancangan Form About Flowchart Prosedur Enkripsi Flowchart Prosedur Deskripsi Tampilan Layar Utama KripTEA Tampilan Layar Encryption Enkripsi File Gambar 4.11 Tampilan Layar Descryption Gambar 4.12 Tampilan Layar Descryption Pada Saat Menampilkan Output Deskripsi File Gambar 4.13 Tampilan Layar About 89 87 88 18 20 21 22 23 24 55 32 34 36 37 38 38 42 62 63 65 67 74 76 77 78 79 81 83 84 85 86

Gambar 4.10 Tampilan Layar Encryption Pada Saat Menampilkan Output

11

BAB 1

PENDAHULUAN

1.1 Latar Belakang Masalah

Masalah keamanan dan kerahasiaan data merupakan hal yang sangat penting dalam suatu organisasi maupun pribadi. Apalagi jika data tersebut berada dalam suatu jaringan komputer yang terhubung/terkoneksi dengan jaringan lain. Hal tersebut tentu saja akan menimbulkan resiko bilamana informasi yang sensitif dan berharga tersebut diakses oleh orang-orang yang tidak berhak. Yang mana jika hal tersebut sampai terjadi, kemungkinan besar akan merugikan bahkan

membahayakan orang yang mengirim pesan atau menerima pesan, maupun organisasinya. Informasi yang terkandung di dalamnya pun bisa saja berubah sehingga menyebabkan salah penafsiran oleh penerima pesan. Selain itu data yang dibajak tersebut akan memiliki kemungkinan rusak bahkan hilang yang akan menimbulkan kerugian material yang besar.

Oleh karena itu, untuk menghindari agar hal tersebut tidak terjadi, digunakanlah sebuah program khusus proteksi/enkripsi data. Saat ini banyak beredar program khusus proteksi data, pada umumnya program tersebut tidak hanya menyediakan satu metoda saja, tetapi beberapa jenis sehingga kita dapat memilih yang menurut kita paling aman. Dewasa ini, dalam dunia dengan arus informasi yang semakin global, kriptografi telah menjadi suatu bagian yang tidak dapat dipisahkan dari sistem keamanan jaringan. Ada berbagai algoritma kriptografi yang sekarang ini telah dan sedang dikembangkan, salah satunya diantaranya algoritma kunci simetris ataupun asimetris (pembagian berdasarkan kunci). Salah satu metode enkripsi data adalah Tiny Encryption Algorithm (TEA). Tiny Encryption algorithm (TEA) merupakan suatu algoritma sandi yang diciptakan oleh David Wheeler dan Roger Needham dari Computer Laboratory, Cambridge University, England pada bulan November 1994. Algoritma ini

12

merupakan algoritma penyandian block cipher yang menggunakan proses feistel network dengan panjang kunci 128 bit, dengan cara memproses 64-bit input sekali waktu dan menghasilkan 64-bit output.

Dalam tugas akhir ini penulis akan membahas bagaimana kinerja dari algoritma Tiny Encrytion Algorithm (TEA) dalam proses enkripsi dan deskripsi pesan, sejauh manakah tingkat keamanannya.

1.2 Rumusan Masalah

Dalam tugas akhir ini penulis akan membahas masalah tentang : a. Bagaimana merancang sistem keamanan data menggunakan Algoritma simetri Tiny Encryption algorithm (TEA). b. Bagaimana mengimplementasikan Tiny Encryption Algorithm (TEA) dalam bentuk aplikasi sederhana menggunakan bahasa pemrograman Delphi 7.0.

1.3 Batasan Masalah

a. Dalam penelitian ini hanya membahas mengenai proses penyandian pesan yang meliputi : proses enkripsi dan deskripsi pesan menggunakan algoritma TEA serta mengimplementasikannya dalam sebuah program sederhana. b. Dalam penelitian ini hanya membahas mengenai proses penyandian yang dilakukan pada pesan dalam format teks (seperti dalam format *.doc dan *.txt). c. Tidak membahas mengenai mekanisme pemecahan kunci sandi (kriptanalisis). d. Tidak membahas tentang cara memecahkan masalah feistel network, penjumlahan bilangan delta ((5/4)1/2 - 1/2 ~ 0.618034) 232 yang merupakan konsep dasar dari algoritma TEA.

13

e. Proses enkripsi dan deskripsi dilakukan secara sederhana hanya pada data yang disimpan di dalam storage, bukan pada data yang dikirim (ditransmisikan) dalam suatu saluran komunikasi. f. Sistem yang dibangun lebih memfokuskan pada kerahasian data

(confidentiality). g. Aplikasi dibuat menggunakan bahasa pemrogaraman Delphi 7.0.

1.4 Tujuan Penelitian

Adapun tujuan dari Tugas Akhir ini adalah merancang suatu sistem keamanan data yang cukup handal yang dapat digunakan dalam hal pengamanan data agar tidak dapat diganggu ataupun diakses oleh pihak yang tidak berhak meskipun digunakan pada jaringan yang tidak aman, sehingga keamanan data tetap terjaga.

1.5 Manfaat Penelitian

Adapun manfaat dari penelitian yang dilakukan adalah untuk mengetahui sejauh manakah keamanan data dapat terjaga dengan menggunakan algoritma Tiny Encryption Algorithm (TEA) dan menilik lebih lanjut bahwa masih banyak algoritma yang lebih baik daripada DES khususnya dalam pengamanan data serta dengan adanya software yang dirancang nantinya diharapkan akan memudahkan bagi siapa saja yang ingin melindungi datanya agar tidak dapat dibaca oleh pihakpihak yang tidak berhak.

14

1.6

Metode Penelitian

Adapun langkah-langkah yang akan ditempuh dalam proses penelitian selama pengerjaan tugas akhir ini adalah sebagai berikut : a. Studi literatur. Penulisan ini dimulai dengan studi kepustakaan, yaitu dengan mengumpulkan bahan-bahan referensi baik dari buku, artikel, paper, jurnal, makalah, situs internet mengenai algoritma kriptografi Tiny Encryption Algorithm (TEA) dan konsep matematis yang mendasarinya serta

pemrograman untuk pembuatan aplikasinya, dan beberapa referensi lainnya untuk menunjang pencapaian tujuan tugas akhir yang dibuat. b. Analisis permasalahan. Pada tahap ini dilakukan analisis terhadap Tiny Encryption Algorithm (TEA) baik dari aspek matematis maupun proses penyandiannya. c. Perancangan Sistem. Perancangan sistem yang dapat menjaga keamanan data. d. Implementasi sistem yang dirancang kedalam sebuah bahasa pemrograman. e. Testing Program. Untuk mengetahui sejauh manakah tingkat kesuksesan program yang dibuat. f. Penyusunan laporan dan penarikan kesimpulan. Menyusun laporan hasil analisis dan perancangan ke dalam format penulisan tugas akhir disertai penarikan kesimpulan.

1.7 Sistematika Penulisan

BAB 1 : PENDAHULUAN Bab ini akan menjelaskan mengenai latar belakang pemilihan judul, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan.

BAB 2 : LANDASAN TEORI Pada bab ini dibahas mengenai teori-teori yang mendukung pembahasan bab selanjutnya.

15

BAB 3 : ANALISIS DAN PEMODELAN PERANGKAT LUNAK Berisikan analisa permasalahan dan kebutuhan algoritma Tiny Encryption Algorithm (TEA) serta pemodelan sistem secara fungsional.

BAB 4 : PERANCANGAN DAN IMPLEMENTASI Berisikan gambaran rancangan struktur program dan desain antar muka, serta memberikan gambaran dari rancang bangun yang lengkap kepada user dan pemakai komputer yang lain serta implementasinya yaitu menguji untuk menemukan kesalahan serta implementasi enkripsi/dekripsi data menggunakan algoritma Tiny Encryption Algorithm (TEA).

BAB 5 : PENUTUP Bab terakhir akan memuat kesimpulan isi dari keseluruhan uraian bab-bab sebelumnya dan saran-saran dari hasil yang diperoleh yang diharapkan dapat bermanfaat dalam pengembangan selanjutnya.

16

BAB 2

LANDASAN TEORI

2.1 Kriptografi

2.1.1 Definisi Kriptografi

Untuk dapat mengenal kriptografi diperlukan pemahaman mengenai masalah yang berhubungan dengan keamanan informasi secara umum. Keamanan informasi membangun dirinya sendiri dalam berbagai cara sesuai dengan situasi dan kebutuhan (Menezes, van Oorschot dan Vanstone, 1996).

Kata kriptografi berasal dari bahasa Yunani, kryps yang berarti tersembunyi dan grphein yang berarti tulisan. Sehingga kata kriptografi dapat diartikan berupa frase tulisan tersembunyi.

Bishop (2005) menyatakan bahwa kriptografi merupakan seni dan ilmu yang ditujukan untuk menyembunyikan arti yang sesungguhnya.

Menezes, van Oorschot dan Vanstone (1996) menyatakan bahwa kriptografi adalah suatu studi teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, otentikasi entitas dan otentikasi keaslian data. Kriptografi tidak hanya berarti penyediaan keamanan informasi, melainkan sebuah himpunan teknik-teknik.

Selain definisi di atas, Scheiner (1996) mengemukakan pendapatnya tentang defenisi kriptografi yaitu : ilmu dan seni untuk menjaga keamanan pesan. Penggunaan kata seni di dalam definisi di atas berasal dari fakta sejarah bahwa pada masa-masa awal sejarah kriptografi, setiap orang mungkin mempunyai cara yang unik untuk merahasiakan pesan. Cara-cara unik tersebut mungkin berbeda-beda pada setiap

17

pelaku kriptografi sehingga setiap cara menulis pesan rahasia pesan mempunyai nilai estetika tersendiri sehingga kriptografi berkembang menjadi sebuah seni merahasiakan pesan (kata graphy di dalam cryptography itu sendiri sudah menyiratkan sebuah seni) (Munir, 2006).

2.1.2 Sejarah Kriptografi

Kriptografi mempunyai sejarah yang sangat menarik dan panjang. Kriptografi sudah digunakan 4000 tahun yang lalu dan diperkenalkan oleh bangsa mesir untuk mengirim pesan ke pasukan militer yang berada di lapangan. Mereka menggunakan hieroglyphcs untuk menyembunyikan tulisan dari pihak yang tidak diinginkan. Hieroglyphcs diturunkan dari bahasa Yunani hieroglyphica yang berarti ukiran rahasia. Hieroglyphs berevolusi menjadi hieratic, yaitu stylized script yang lebih mudah untuk digunakan. Dengan demikian, pesan tersebut tidak dapat terbaca oleh pihak musuh walaupun kurir pembawa pesan tersebut tertangkap oleh musuh. Demikianlah hingga penggunaan kriptografi pada abad ke-20 (Menezes, van Oorschot dan Vanstone, 1996) ( Ariyus, 2005).

Sejarah kriptografi sebagian besar merupakan sejarah kriptografi klasik, yaitu metode enkripsi yang menggunakan kertas dan pensil atau mungkin dengan bantuan alat mekanik sederhana. Secara umum algoritma kriptografi klasik dikelompokkan menjadi dua kategori, yaitu algoritma transposisi (transposition cipher) dan algoritma substitusi (substitution cipher). Transposition cipher mengubah susunan huruf-huruf di dalam pesan, sedangkan substitution cipher mengganti setiap huruf atau kelompok huruf dengan sebuah huruf atau kelompok huruf lain.

Sejarah kriptografi klasik mencatat penggunaan cipher transposisi oleh tentara Sparta di Yunani pada permulaan tahun 400 SM. Mereka menggunakan alat yang namanya scytale. Scytale terdiri dari sebuah kertas panjang dari daun papyrus yang dililitkan pada sebuah silinder dari diameter tertentu (diameter silender menyatakan kunci penyandian). Pesan ditulis secara horizontal, baris per baris. Bila pita

18

dilepaskan, maka huruf-huruf di dalamnya telah tersusun secara acak membentuk pesan rahasia. Untuk membaca pesan, penerima pesan harus melilitkan kembali kertas tersebut ke silinder yang diameternya sama dengan diameter silinder pengirim.

Sedangkan algoritma substitusi paling awal dan paling sederhana adalah Caesar cipher, yang digunakan oleh raja Yunani kuno, Julius Caesar. Caranya adalah dengan mengganti setiap karakter di dalam alfabet dengan karakter yang terletak pada tiga posisi berikutnya di dalam susunan alfabet (Munir, 2006).

Pada perang dunia kedua, Jerman menggunakan enigma atau juga disebut dengan mesin rotor yang digunakan Hitler untuk mengirim pesan kepada tentaranya. Jerman sangat percaya bahwa pesan yang dikirim melalui enigma tidak terpecahkan kode kode enkripsinya. Akan tetapi, anggapan tersebut keliru. Ternyata setelah bertahun tahun, sekutu dapat memecahkan kode kode tersebut setelah mempelajarinya. Setelah jerman mengetahui bahwa kode kode tersebut dapat terpecahkan, enigma yang digunakan pada perang dunia kedua beberapa kali mengalami perubahan. Demikianlah, karena Enigma berhasil dipecahkan oleh pihak Sekutu dan keberhasilan memecahkan Enigma sering dikatakan sebagai faktor yang memperpendek perang dunia kedua (Ariyus, 2005).

Gambar 2.1 Mesin enkripsi Enigma

19

Kriptografi modern dipicu oleh perkembangan peralatan komputer digital. Dimulai dari usaha Feistel dari IBM di awal tahun 70-an dan mencapai puncaknya pada 1977 dengan pengangkatan DES (Data Encryption Standard) sebagai standar pemrosesan informasi federal Amerika Serikat untuk mengenkripsi informasi yang belum diklasifikasi. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah. Kemudian karena lama kelamaan DES dianggap tidak aman, maka untuk menjawab tantangan dalam dunia kriptografi, NIST (National Institue of Standards and Technology) sebagai standar pengolah informasi Federal AS bersiap siap mengganti DES. pada tahun 1997 dimulailah diadakan kontes yang diikuti oleh 21 pelamar. Kemuidan pada bulan agustus 1999 terpilihlah 5 kandidat sebagai finalis : Mars ( IBM Amerika), RC6 (RSA corp, Amerika), Rijndael(belgia), Serpent(Israel, Norwegia, dan Inggris), dan Twofish (Counterpane Amerika). ( Kurniawan, 2004).

2.1.3 Tujuan Kriptografi

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi, yaitu : a. Kerahasiaan (confidentiality), adalah layanan yang digunakan untuk menjaga isi informasi dari siapapun kecuali yang memiliki otoritas atau kunci sandi untuk membuka/mengupas informasi yang telah disandi. Ada beberapa pendekatan untuk menjaga kerahasiaan, dari pengamanan secara fisik hingga penggunaan algoritma matematika yang membuat data tidak dapat dipahami. Istilah lain yang senada dengan confidentiality adalah secrecy dan privacy. b. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya. Di dalam kriptografi, layanan ini direalisasikan dengan menggunakan tanda-tangan digital (digital signature). Pesan yang telah ditandatangani menyiratkan bahwa pesan yang dikirim adalah asli.

20

c.

Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian isi datanya, waktu pengiriman, dan lain-lain. Oleh karena itu, layanan integritas data selalu dikombinasikan dengan layanan otentikasi sumber pesan. Di dalam kriptografi, layanan ini direalisasikan dengan menggunakan tanda-tangan digital (digital signature). Tanda-tangan digital menyatakan sumber pesan.

d. Non-Repudiasi atau nirpenyangkalan, adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat. (Kurniawan, 2004).

2.1.4 Konsep Dasar Kriptografi

2.1.4.1 Message, Plaintext, dan Ciphertext

Pesan (message) adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks atau data asli yang bisa memberikan informasi bila dibaca/dianalisa (cleartext). Ciphertext adalah data yang sudah mengalami proses kriptografi, sehingga informasi yang terkandung di dalamnya biasa disembunyikan. Ciphertext inilah yang kemudian akan dikirimkan melalui jaringan. Encrypt/enkripsi adalah proses untuk mengubah Plaintext menjadi Ciphertext. Decrypt/deskripsi adalah proses untuk mengubah Ciphertext menjadi Plaintext kembali. Secara sederhana proses tersebut digambarkan sebagai berikut :

Gambar 2.2 Proses Enkripsi Deskripsi

21

Adapun dasar matematis yang mendasari proses enkripsi dan deskripsi adalah relasi dua himpunan yaitu himpunan berisi elemen plaintext dan himpunan berisi elemen ciphertext. ( Schneier, 1996).
B.

Adapun tujuan dari adanya enkripsi adalah untuk meningkatkan keamanan data tetapi juga berfungsi untuk : 1. Melindungi data agar tidak dapat dibaca oleh orang-orang yang tidak berhak. 2. Mencegah agar orang-orang yang tidak berhak, menyisipkan atau mengahapus data.

(a) Plainteks (teks)

(b) Cipherteks dari (a)

Gambar 2.3 Contoh plainteks dan cipherteks.

2.1.4.2 Peserta Komunikasi

a. Entitas atau peserta adalah orang atau sesuatu yang mengirim, menerima, atau memanipulasi informasi. Entitas bisa berupa orang, terminal komputer, kartu kredit, dan sebagainya. Jadi, orang bisa bertukar pesan dengan orang lainnya (contoh: Alice berkomunikasi dengan Bob) sedangkan di dalam jaringan komputer, mesin (komputer) berkomunikasi dengan mesin (contoh: mesin ATM berkomunikasi dengan komputer server di bank). b. Pengirim adalah entitas dalam komunikasi yang mengirimkan informasi kepada entitas lainnya lainnya. c. Penerima adalah entitas dalam komunikasi yang diharapkan menerima informasi.

22

d. Penyusup (adversary) adalah entitas diluar pengirim dan penerima yang mencoba untuk membobol keamanan informasi. Penyusup biasanya bertindak seolah-olah sebagai pengirim yang sah ataupun penerima yang sah. Adapun keterangan tersebut dapat dilihat pada gambar berikut :

Gambar 2.4 Skema komunikasi dengan proses enkripsi

2.1.4.3 Kriptologi Kriptologi berasal dari bahasa Yunani, krypts yang berarti tersembunyi dan lgos yang berarti kata. Jadi, kriptologi dapat diartikan sebagai frase kata yang tersembunyi (Oppliger, 2005). Kriptologi dapt juga diartikan sebagai seni dan ilmu untuk membuat dan memecahkan kode rahasia. Kriptologi dibagi menjadi kriptografi (seni dan ilmu membuat kode rahasia), kriptanalisis (ilmu dan seni untuk memecahkan chiperteks menjadi plainteks tanpa mengetahui kunci yang digunakan) dan steganografi (metoda menyembunyikan pesan atau data lainnya) (Oppliger, 2005). Pelaku kriptanalisis disebut kriptanalis. Jika seorang kriptografer

(cryptographer) mentransformasikan plainteks menjadi cipherteks dengan suatu algoritma dan kunci maka sebaliknya seorang kriptanalis berusaha untuk memecahkan cipherteks tersebut untuk menemukan plainteks atau kunci.

23

Gambar 2.5. Hubungan kriptografi, kriptanalisis dan steganografi

2.1.4.4 Algoritma Kriptografi Berdasarkan kunci yang dipakai algoritma kriptografi dapat dibedakan menjadi 2 golongan yaitu algoritma kriptografi simetris dan asimetris.

1. Algoritma Simetri Algoritma kriptografi simetris maksudnya adalah proses enkripsi dan dekripsi dilakukan dengan memakai 1 key yang sama. Istilah lain untuk kriptografi kuncisimetri adalah kriptografi kunci privat (private-key cryptography), kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional (conventional cryptography). Sistem kriptografi kunci-simetri (atau disingkat menjadi kriptografi simetri saja), mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama sebelum bertukar pesan. Keamanan sistem kriptografi simetri terletak pada kerahasiaan kuncinya. Jadi, pembuat pesan dan penerimanya harus memiliki kunci yang sama persis. Sehingga siapapun yang memiliki kunci tersebut termasuk pihak pihak yang tidak diinginkan dapat membuat dan membongkar rahasia cipherteks. Berikut ini adalah gambaran proses enkripsi dan deskripsi menggunakan algoritma simetri :

24

Gambar 2.6 Proses Enkripsi Deskripsi Menggunakan Algoritma Simetri

Contoh algoritma kriptografi simetris yang terkenal diantaranya adalah TEA, DES, Blowfish, IDEA, RC4, dan lain sebagainya. Salah satu kelemahan algoritma ini adalah permasalahan distribusi kunci (key distribution).

Algoritma kriptografi simeteris dibagi menajdi 2 kategori yaitu algoritma aliran (Stream Ciphers) dan algoritma blok (Block Cipher). Pada algoritma aliran, proses penyandiannya berorientasi pada satu bit atau satu byte data. Sedang pada algoritma blok, proses penyandiannya berorientasi pada sekumpulan bit atau byte data (per blok).

Kelebihan kriptografi simetri: 1. Algoritma kriptografi simetri dirancang sehingga proses enkripsi/dekripsi membutuhkan waktu yang singkat. 2. Ukuran kunci simetri relatif pendek. 3. Algoritma kriptografi simetri dapat digunakan untuk membangkitkan bilangan acak. 4. Algorima kriptografi simetri dapat disusun untuk menghasilkan cipher yang lebih kuat. 5. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan saja.

25

Kelemahan kriptografi simetri: 1. Kunci simetri harus dikirim melalui saluran yang aman. Kedua entitas yang berkomunikasi harus menjaga kerahasisan kunci ini. 2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi.

2. Algoritma Asimetri

Pada kriptografi asimetris masing-masing pihak yang berkepentingan memiliki 2 key, yaitu secrete / private key (SK) dan public key (PK). Nama lainnya adalah kriptografi kunci-publik (public-key cryptography). SK harus tetap disimpan dan dijaga kerahasiaannya dengan tidak pernah mengirimkannya melalui jalur pengiriman data. Sedangkan PK turut dikirimkan ke pihak penerima data. Perpaduan antara SK dan PK inilah yang nantinya dipakai pada proses enkripsi dan dekripsi.

Berikut adalah gambaran untuk proses enkripsi dan deskripsi yang mengggunakan algoritma asimetri :

Gambar 2.7 Proses Enkripsi Deskripsi Menggunakan Algoritma Asimetri

Contoh algoritma kriptografi asimetris, atau yang juga dikenal dengan kriptografi public key, misalnya adalah RSA, DSA, ECC, dan HECC, Elgamal, Hill Cipher, dan lain sebagainya.

Keuntungan dari Algoritma ini ada dua. Pertama, tidak ada kebutuhan untuk mendistribusikan kunci privat sebagaimana pada sistem kriptografi simetri. Kunci publik dapat dikirim ke penerima melalui saluran yang sama dengan saluran yang

26

digunakan untuk mengirim pesan. Saluran untuk mengirim pesan umumnya tidak aman.

Kedua, jumlah kunci dapat ditekan. Untuk berkomunikasi secara rahasia dengan banyak orang tidak perlu kunci rahasia sebanyak jumlah orang tersebut, cukup membuat dua buah kunci, yaitu kunci publik bagi para koresponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan kriptografi kunci-simetris dimana jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi.

Kelebihan kriptografi kunci-publik (asimetri): 1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomuniaksi (tetapi, otentikasi kunci publik tetap harus terjamin). Tidak ada kebutuhan mengirim kunci kunci privat sebagaimana pada sistem simetri. 2. Pasangan kunci publik/kunci privat tidak perlu diubah, bahkan dalam periode waktu yang panjang. 3. Dapat digunakan untuk mengamankan pengiriman kunci simetri. 4. Beberapa algoritma kunci-publik dapat digunakan untuk memberi tanda tangan digital pada pesan.

Kelemahan kriptografi kunci-publik (asimetri): 1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri, karena enkripsi dan dekripsi menggunakan bilangan yang besar dan melibatkan operasi perpangkatan yang besar. 2. Ukuran cipherteks lebih besar daripada plainteks (bisa dua sampai empat kali ukuran plainteks). 3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetri. 4. Karena kunci publik diketahui secara luas dan dapat digunakan setiap orang, maka cipherteks tidak memberikan informasi mengenai otentikasi pengirim. 5. Tidak ada algoritma kunci-publik yang terbukti aman (sama seperti block cipher). Kebanyakan algoritma mendasarkan keamanannya pada sulitnya memecahkan persoalan-persoalan aritmetik (pemfaktoran, logaritmik, dan sebagainya) yang menjadi dasar pembangkitan kunci.

27

2.1.4.5 Sistem Kriptografi Sistem kriptografi adalah suatu 5- tuple (P, C, K, E, D) yang memenuhi kondisi sebagai berikut : 1. P adalah himpunan plainteks, 2. C adalah himpunan cipherteks, 3. K atau ruang kunci (keyspace), adalah himpunan kunci, 4. E adalah himpunan fungsi enkripsi : 5. D adalah himpunan fungsi dekripsi : , 6. Untuk setiap terdapat dan . Setiap dan

merupakan fungsi sedemikian hingga , untuk setiap plainteks . .

Suatu sistem kriptografi merupakan sebuah himpunan algoritma, seluruh kemungkinan plainteks, cipherteks, kunci, dan proses manajemen kunci yang digunakan. Sistem kriptografi merupakan suatu fasilitas untuk mengkonversikan plainteks menjadi cipherteks, dan sebaliknya. (Oppliger, 2005) .

1.

Keamanan Sistem Kriptografi

Suatu sistem kriptografi dikatakan aman jika para penyusup (adversary) dengan kemampuan yang dimilikinya tidak dapat memecahkan atau membobol sistem tersebut.

Berdasarkan kemampuan yang dimiliki penyusup, terdapat dua jenis keamanan sistem kriptografi, yaitu (Oppliger, 2005) : a. Keamanan tak kondisional : jika penyusup tidak dapat membobol sistem dengan kemampuan komputer yang tidak terbatas. Keamanan ini berhubungan dengan teori informasi dan teori probabilitas. b. Keamanan kondisional : jika secara teoritis mungkin bagi penyusup untuk membobol sistem tapi secara komputasi tidaklah mungkin (karena keterbatasan

28

sumberdaya dan kemampuan penyusup untuk mengakses informasi). Kemanan ini berhubungan dengan teori kompleksitas.

Sistem kriptografi dikatakan aman bila memiliki keadaan sebagai berikut : a. Bila harga untuk membobol sistem lebih besar daripada nilai informasi yang dibuka. b. Bila waktu yang diperlukan untuk membobol sistem tersebut lebih lama daripada lamanya waktu yang diperlukan oleh informasi itu untuk tetap aman. c. Bila jumlah data yang dienkrip dengan kunci dan algoritma yang sama lebih sedikit dari jumlah data yang diperlukan untuk menembus algoritma tersebut (Kurniawan, 2004).

Pengamanan selalu bertolak belakang dengan kenyamanan. Semakin aman, sebuah sistem akan semakin tidak nyaman karena akan memerlukan beberapa langkah tambahan yang dirasa merepotkan. Dan semakin nyaman dan bebas, sebuah sistem menjadi semakin tidak aman.

2. Jenis-jenis Serangan Berdasarkan keterlibatan penyerang dalam melakukan kegiatannya : a. Serangan pasif (passive attack) : penyerang tidak terlibat dalam komunikasi antara pengirim dan penerima, penyerang hanya melakukan penyadapan untuk memperoleh data atau informasi sebanyak-banyaknya Metode yang digunakan dalam melakukan penyadapan ini biasanya wiretapping, electromagnetic eavesdropping atau acoustic eavesdropping b. Serangan aktif (active attack) : penyerang mengintervensi komunikasi dan ikut mempengaruhi sistem untuk keuntungan dirinya. Penyerang mengubah aliran pesan seperti menghapus sebagian ciphertext, mengubah ciphertext, menyisipkan potongan ciphertext palsu, me-replay pesan lama, mengubah informasi yang tersimpan, dsb.

29

3. Metode Serangan Pada Kriptografi Terdapat beberapa metode melakukan serangan kriptografi yang pada dasarnya berupa metode yang berbasiskan plaintext dan metode yang berbasiskan ciphertext. a. Hanya ciphertext yang diketahui : Kriptanalis (orang yang melakukan kripanalisis) hanya memiliki ciphertext tanpa memiliki plaintext-nya. Sebelum melakukan serangan, kriptanalis selalu membuat asumsi algoritma sandi yang digunakan dalam ciphertext itu untuk menentukan tehnik memecahkannya. Teknik yang digunakan untuk menemukan plaintext/kunci : 1. Analisa frekuensi huruf : setiap bahasa memiliki kekhasan atas huruf-huruf yang digunakannya. Frekuensi kemunculan setiap huruf dalam suatu bahasa menjadi ciri penting yang dapat dipakai sebagai patokan untuk menganalisis

plaintext/kunci suatu teks sandi. Teknik ini umumnya digunakan untuk memecahkan metode penyandian sederhana seperti misalnya kriptografi model Caesar. 2. Exhaustive attack/brute-force attack : yaitu teknik untuk mengungkap

plaintext/kunci dengan mencoba secara sistematis semua kemungkinan kunci. Walaupun tehnik ini akan berhasil menemukan plaintext/kunci, namun waktu yang dibutuhkan relatif lama dan sangat bergantung kepada kecepatan mesin (komputer) yang melakukan serangan ini. 3. Analytical attack : yaitu teknik memecahkan teks sandi dengan melakukan analisis kelemahan algoritma kriptografinya untuk mengurangi kemungkinan kunci yang memang tidak ada (pasti tidak muncul). Dilakukan dengan cara memecahkan persamaan-persamaan matematik (yang diperoleh dari definisi suatu algoritma kriptografi) yang mengandung perubahperubah yang merepresentasikan plaintext atau kunci. Dengan menggabungkan metode analytical attack dan exhaustive attack akan mempercepat diketemukannya plaintext/kunci.

30

b. Ciphertext terpilih : Kriptanalis memilih ciphertext, dan kemudian melalui ciphertext itu berusaha untuk mendapatkan plaintext yang sesuai. Biasanya dilakukan untuk menyerang kriptografi sistem kunci publik. c. Plaintext dan ciphertext diketahui : Kriptanalis mempunyai baik plaintext maupun ciphertext-nya dan berusaha untuk mencari hubungan diantara keduanya. Biasanya dilakukan untuk menemukan kunci dan algoritma penyandiannya yang akan berguna untuk memecahkan pesan tersandi berikutnya. Beberapa pesan biasanya terdapat format baku (template) yang sudah terstruktur. Format baku ini merupakan celah yang membuka peluang untuk menerka ciphertext dari plaintext yang bersesuaian. Misalnya : From, To, kepada, dari, perihal, di dalam sebuah e-mail Dengan hormat, wassalam, best regards, pada surat resmi. #include, program, go, di dalam source code d. Plaintext terpilih : Kriptanalis memilih plaintext tertentu, yaitu plaintexts yang lebih mengarahkan ke penemuan kunci, untuk disandikan dan

mempelajari/membandingkan hasil sandinya (ciphertext). Biasanya cara ini digunakan untuk memecahkan sandi pada metode penyandian asimetris, yang mana kripanalis biasanya telah memiliki kunci publik-nya. e. Ciphertext atau plaintext diketahui secara adaptif : Kriptanalis memilih blok plaintext atau ciphertext yang besar, lalu disandi, kemudian memilih blok lainnya yang lebih kecil berdasarkan hasil serangan sebelumnya, begitu seterusnya. f. Kunci terpilih : Kriptanalis memiliki pengetahuan mengenai hubungan antara kunci-kunci yang berbeda, dan kemudian memilih kunci yang tepat untuk membuka pesan bersandi. Biasanya digunakan untuk mengetahui algoritma penyandian suatu pesan. g. Social engineering rubber-hose cryptanalysis : Mencari informasi algoritma/kunci sandi melalui kegiatan intelijen, mengancam, mengirim surat gelap, memeras

31

(black-mail)

atau

melakukan penculikan/penyiksaan sampai orang

yang

memegang kunci memberinya kunci untuk membuka pesan.

2.1.4.6 Kategori Cipher Kunci-Simetri Algoritma kunci-simetri mengacu pada metode enkripsi yang dalam hal ini baik pengirim maupun penerima memiliki kunci yang sama.

Algoritma kunci-simetri modern beroperasi dalam mode bit dan dapat dikelompokkan menjadi dua kategori:

1. Cipher Aliran (Stream Cipher) Algoritma kriptografi beroperasi pada plaintext/ciphertext dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsi/didekripsikan bit per bit. Cipher aliran mengenkripsi satu bit pada setiap kali proses enkripsi.

2. Cipher Blok (Block Cipher) Algoritma kriptografi beroperasi pada plaintext/ciphertext dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya. Misalnya panjang blok adalah 64 bit, maka itu berarti algoritma enkripsi memerlukan 8 karakter setiap kali enkripsi (1 karakter = 8 bit dalam pengkodean ASCII). Cipher blok mengenkripsi satu blok bit pada setiap kali proses enkripsi. (Munir, 2006)

2.1.4.6.1 Mode Operasi Cipher Blok

Plaintext dibagi menjadi beberapa blok dengan panjang tetap. Beberapa mode operasi dapat diterapkan untuk melakukan enkripsi terhadap keseluruhan blok plaintext. Empat mode operasi yang lazim diterapkan pada sistem blok cipher adalah:

32

1. Electronik Code Book (ECB)

Pada mode ini, setiap blok plainteks menjadi blok cipherteks sebagai

dienkripsi secara individual dan independen

. Secara matematis, enkripsi dengan mode ECB dinyatakan

= dan dekripsi sebagai =

( )

( )

yang dalam hal ini, K adalah kunci, sedangkan plainteks dan cipherteks ke-i.

dan

masing-masing adalah blok

Istilah code book di dalam ECB muncul dari fakta bahwa blok plainteks yang sama selalu dienkripsi menjadi blok cipherteks yang sama, maka secara teoritis dimungkinkan membuat buku kode plaintext dan ciphertext yang berkoresponden. Namun, semakin besar ukuran blok, semakin besar pula ukuran buku kodenya. Misalkan jika blok berukuran 64 bit, maka buku kode terdiri dari -1 buah kode

(entry), yang berarti terlalu besar untuk disimpan. Lagipula semua kunci mempunyai buku kode yang berbeda (Munir, 2006).

Gambar 2.8 Skema enkripsi dan dekripsi dengan mode ECB

33

Kelebihan Mode ECB: 1. Karena tiap blok plainteks dienkripsi secara independen, maka kita tidak perlu mengenkripsi file secara linier. Kita dapat mengenkripsi 5 blok pertama, kemudian blok-blok di akhir, dan kembali ke blok-blok di tengah dan seterusnya. Mode ECB cocok untuk mengenkripsi arsip (file) yang diakses secara acak, misalnya arsiparsip basis data. Jika basis data dienkripsi dengan mode ECB, maka sembarang record dapat dienkripsi atau didekripsi secara independen dari record lainnya (dengan asumsi setiap record terdiri dari sejumlah blok diskrit yang sama banyaknya). Jika mode ECB dikerjakan dengan prosesor paralel (multiple processor), maka setiap prosesor dapat melakukan enkripsi atau dekripsi blok plainteks yang berbeda-beda. 2. Jika satu atau lebih bit pada blok cipherteks mengalami kesalahan, maka kesalahan ini hanya mempengaruhi cipherteks yang bersangkutan pada waktu dekripsi. Blokblok cipherteks lainnya bila didekripsi tidak terpengaruhi oleh kesalahan bit cipherteks tersebut.

Kekurangan Mode ECB: 1. Karena bagian plainteks sering berulang (sehingga terdapat blok-blok plainteks yang sama), maka hasil enkripsinya menghasilkan blok cipherteks yang sama. Misalnya kriptanalis mempelajari bahwa blok plainteks 5EB82F (dalam notasi HEX) dienkripsi menjadi blok AC209D, maka setiap kali ia menemukan

cipherteks AC209D, ia dapat langsung mendekripsikannya menjadi 5EB82F. 2. Pihak lawan dapat memanipulasi cipherteks untuk membodohi atau mengelabui penerima pesan. Manipulasi misalnya dengan menghapus atau menyisipkan beberapa buah blok ciphertext baru.

Kedua kekurangan di atas dapat diatasi dengan mengatur enkripsi tiap blok individual bergantung pada semua blok-blok sebelumnya. Dengan cara ini, blok plaintext yang identik akan menghasilkan blok cipherteks yang berbeda.

34

2. Cipher Block Chaining (CBC)

Mode ini menerapkan mekanisme umpan-balik (feedback) pada sebuah blok, yang dalam hal ini hasil enkripsi blok sebelumnya di-umpan-balikkan ke dalam enkripsi blok yang current (sekarang). Caranya, blok plainteks yang current di-XOR-kan terlebih dahulu dengan blok cipherteks hasil enkripsi sebelumnya, selanjutnya hasil peng-XOR-an ini masuk ke dalam fungsi enkripsi. Dengan mode CBC, setiap blok cipherteks bergantung tidak hanya pada blok plainteksnya, tetapi juga pada seluruh blok plainteks sebelumnya (Munir, 2006).

Dekripsi dilakukan dengan memasukkan blok cipherteks yang current ke fungsi dekripsi, kemudian meng-XOR-kan hasilnya dengan blok cipherteks sebelumnya. Dalam hal ini, blok cipherteks sebelumnya berfungsi sebagai umpanmaju (feedforward) pada akhir proses dekripsi.

Gambar 2.9 Skema enkripsi dan dekripsi dengan mode CBC

Secara matematis, enkripsi dan dekripsi dengan mode CBC dinyatakan sebagai = = ( ( )

Pada enkripsi blok pertama,

= IV (initialization vector). IV dapat diberikan

oleh pengguna atau dibangkitkan secara acak oleh program. Jadi, untuk menghasilkan

35

blok cipherteks pertama ( ), IV digunakan untuk menggantikan blok cipherteks sebelumnya, . Sebaliknya pada dekripsi, blok plainteks pertama diperoleh dengan

cara meng-XOR-kan IV dengan hasil dekripsi terhadap blok cipherteks pertama. IV tidak perlu rahasia. Jadi, untuk m buah blok plainteks, enkripsinya adalah:

= = =

( ( ( . . .

) ) )

dan dekripsi m buah blok cipherteks adalah :

= = =

( ( ( . . .

Kelebihan Mode CBC: Karena blok-blok plainteks yang sama tidak menghasilkan blok-blok cipherteks yang sama, maka kriptanalis menjadi lebih sulit dalam memecahkan pesan tersandi tersebut.

Kekurangan Mode CBC: Karena blok cipherteks yang dihasilkan selama proses enkripsi bergantung pada blokblok cipherteks sebelumnya, maka kesalahan satu bit pada sebuah blok plainteks akan merambat pada blok cipherteks yang berkoresponden dan semua blok cipherteks

36

berikutnya. Tetapi hal ini berkebalikan pada proses dekripsi, kesalahan satu bit pada blok cipherteks, hanya mempengaruhi blok plainteks yang berkoresponden dan satu bit pada blok plainteks berikutnya (pada posisi bit yang berkoresponden pula). Kesalahan bit cipherteks biasanya terjadi karena adanya gangguan (noise) saluran komunikasi data selama transmisi atau malfunction pada media penyimpanan.

3. Cipher Feedback (CFB)

Pada mode CFB, data dienkripsi dalam unit yang lebih kecil daripada ukuran blok. Unit yang dienkripsikan dapat berupa bit per bit (jadi seperti cipher aliran atau stream cipher), 2 bit, 3 bit, dan seterusnya. Bila unit yang dienkripsikan satu karakter setiap kalinya, maka mode CFB-nya disebut CFB 8-bit (Munir, 2006).

Gambar 2.10 Skema enkripsi dengan mode CFB

Secara umum, CFB p-bit mengenkripsi plainteks sebanyak p bit setiap kalinya, yang dalam hal ini p n (ukuran blok). Dengan kata lain, CFB mengenkripsi cipher blok seperti pada cipher aliran. Mode CFB membutuhkan sebuah antrian (queue) yang berukuran sama dengan ukuran blok masukan. Tinjau mode CFB 8-bit yang bekerja pada blok berukuran 64-bit (setara dengan 8-byte).

37

Gambar 2.11 Skema dekripsi dengan mode CFB

Algoritma enkripsi dengan mode CFB adalah sebagai berikut:

1. Antrian diisi dengan IV (initialization vector) seperti pada mode CBC. 2. Enkripsikan antrian dengan kunci K. Delapan bit paling kiri dari hasil enkripsi berlaku sebagai keystream ( ) yang kemudian di-XOR-kan dengan karakter 8-bit dari plainteks menjadi karakter 8-bit pertama dari cipherteks. Karakter cipherteks ini dikirim (pada aplikasi komunikasi data) atau disimpan (pada aplikasi penyimanan data). Salinan (copy) dari karakter cipherteks ini juga dimasukkan ke dalam antrian (menempati 8 posisi bit paling kanan antrian), dan semua byte lainnya di dalam antrian digeser ke kiri menggantikan 8 bit pertama yang sudah digunakan. 3. Karakter plainteks berikutnya dienkripsikan dengan cara yang sama seperti pada langkah 2. 4. Dekripsi dilakukan sebagai kebalikan dari proses enkripsi. Baik enkripsi maupun dekripsi, algoritma E dan D yang digunakan sama.

Perambatan kesalahan: kesalahan 1-bit pada blok plainteks akan merambat pada blok-blok cipherteks yang berkoresponden dan blok-blok cipherteks selanjutnya pada proses enkripsi. Hal yang kebalikan juga terjadi pada proses dekripsi.

38

4. Output Feedback (OFB)

Mode OFB mirip dengan mode CFB, kecuali p-bit dari hasil enkripsi terhadap antrian disalin menjadi elemen posisi paling kanan di antrian. Dekripsi dilakukan sebagai kebalikan dari proses enkripsi (Munir, 2006).

Gambar 2.12 Skema enkripsi dengan mode OFB

Gambar 2.13 Skema dekripsi dengan mode OFB

Perambatan kesalahan: kesalahan 1-bit pada blok plainteks hanya mempengaruhi blok cipherteks yang berkoresponden saja. Begitu pula pada proses dekripsi, kesalahan 1bit pada blok cipherteks hanya mempengaruhi blok plainteks yang bersangkutan saja. Karakteristik kesalahan semacam ini cocok untuk transmisi analog yang di-digitasi, seperti suara atau video, yang dalam hal ini kesalahan 1-bit dapat ditolerir, tetapi penjalaran kesalahan tidak dibolehkan.

39

2.1.4.7

Prinsip Prinsip Perancangan Cipher Blok

Perancangan algoritma kriptografi yang berbasis blok mempertimbangkan beberapa prinsip berikut:

1. Prinsip Confusion dan Diffusion dari Shannon

Pada tahun 1949, Shannon mengemukakan dua prinsip (properties) penyandian (encoding) data di dalam makalahnya yang berjudul Communication Theory of Secrecy Systems. Kedua prisnsip ini dipakai dalam perancangan cipher blok yang kuat. Kedua prinsip Shannon itu adalah :

a. Confusion Prinsip ini menyembunyikan hubungan apapun yang ada antara plainteks, cipherteks, dan kunci. Sebagai contoh, pada cipher substitusi seperti Caesar Cipher, hubungan antara cipherteks dan plainteks mudah diketahui, karena satu huruf yang sama pada plainteks diganti dengan satu huruf yang sama pada cipherteksnya. Akibatnya, huruf yang paling sering muncul di dalam plainteks akan sering muncul pula di dalam cipherteksnya sehingga cipherteks tersebut mudah dipecahkan dengan teknik analisis frekuensi. Dengan demikian kita katakan Caesar Cipher tidak menganut prinsip confusion. Karena prinsip confusion akan membuat kriptanalis frustasi untuk mencari pola-pola statistik yang muncul pada cipherteks. Confusion yang bagus membuat hubungan statistik antara plainteks, cipherteks, dan kunci menjadi sangat rumit.

b. Diffusion Prinsip ini menyebarkan pengaruh satu bit plainteks atau kunci ke sebanyak mungkin cipherteks. Sebagai contoh, pengubahan kecil pada plainteks sebanyak satu atau dua bit menghasilkan perubahan pada cipherteks yang tidak dapat diprediksi. Prinsip diffusion juga menyembunyikan hubungan statistik antara plainteks, cipherteks, dan kunci sehingga membuat kriptanalisis menjadi sangat sulit. Untuk mendapatkan keamanan yang bagus, prisnip confusion dan diffusion diulang berkali-kali pada sebuah blok tunggal dengan kombinasi yang berbeda-beda.

40

2. Cipher berulang (Iterated Cipher)

Fungsi transformasi sederhana yang mengubah plainteks menjadi cipherteks diulang sejumlah kali. Pada setiap putaran digunakan sub-kunci (subkey) atau kunci putaran (round key) yang dikombinasikan dengan plainteks.

3. Jaringan Feistel (Feistel Network)

Jaringan Feistel ditemukan oleh Horst Feistel tahun 1970. Model jaringan Feistel adalah sebagai berikut: 1. Bagi blok yang panjangnya n bit menjadi dua bagian, kiri (L) dan kanan (R), yang masing-masing panjangnya n/2 (hal ini mensyaratkan n harus genap). 2. Defenisikan cipher blok berulang dimana hasil dari putaran ke-i ditentukan dari hasil putaran sebelumnya, yaitu: = f( yang dalam hal ini, i = 1,2,,r (r adalah jumlah putaran). = sub-kunci (subkey) pada putaran ke-i f = fungsi transformasi (di dalamnya terdapat fungsi substitusi, permutasi dan/atau ekspansi, kompresi). )

Plainteks adalah gabungan L dan R awal, atau secara formal dinyatakan dengan ( ), sedangkan cipherteks didapatkan dari L dan R hasil dari putaran

terakhir setelah terlebih dahulu dipertukarkan, atau secara formal dinyatakan sebagai ( ).

41

4. Kunci lemah (Weak Key)

Kunci lemah adalah kunci yang menyebabkan tidak adanya perbedaan antara enkripsi dan dekripsi. Dekripsi terhadap cipherteks tetap mengahasilkan plainteks semula, namun enkripsi dua kali berturut-turut terhadap plainteks akan menghasilkan kembali plainteksnya.

5. Kotak-S (S-box)

Kotak-S adalah matriks yang berisi substitusi sederhana yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain. Pada kebanyakan algoritma cipher blok, kotak-S memetakan m bit masukan menjadi n bit keluaran, sehingga kotak-S tersebut dinamakan kotak m x n S-box.

2.2

Tiny Encryption Algorithm (TEA)

Tiny Encryption Algorithm (TEA) merupakan suatu algoritma sandi yang diciptakan oleh David Wheeler dan Roger Needham dari Computer Laboratory, Cambridge University, England pada bulan November 1994. Sistem penyandian Tiny Encryption Algorithm (TEA) menggunakan proses feistel network dengan menambahkan fungsi matematik berupa penambahan dan

pengurangan sebagai operator pembalik selain XOR. Hal ini dimaksudkan untuk menciptakan sifat non-linearitas. Pergeseran dua arah (ke kiri dan ke kanan) menyebabkan semua bit kunci dan data bercampur secara berulang ulang.

Tiny Encryption Algorithm (TEA)memproses 64-bit input sekali waktu dan menghasilkan 64-bit output. Tiny Encryption Algorithm (TEA) menyimpan 64-bit input kedalam L0 dan R0 masing masing 32-bit. Sedangkan 128-bit kunci disimpan kedalam k[0], k[1], k[2], dan k[3] yang masing masing berisi 32-bit. Diharapkan

42

teknik ini cukup dapat mencegah penggunaan teknik exshautive search secara efektif. Hasil outputnya akan disimpan dalam L16 dan R16. (D. Wheeler and R. Needham, 1994).

Bilangan delta konstan yang digunakan adalah 9E3779B9, dimana bilangan delta berasal dari golden number ((5/4)1/2 - 1/2 ~ 0.618034) 232 . Berbeda dengan sruktur feistel yang semula hanya mengoperasikan satu sisi yaitu sisi sebelah kanan dengan sebuah fungsi F, pada algoritma Tiny Encryption Algorithm (TEA) kedua sisi dioperasikan dengan sebuah fungsi yang sama.

Berikut adalah gambaran proses pada algoritma TEA:

Gambar 2.14 Gambaran Proses Algoritma TEA

43

Untuk melakukan enkripsi, proses diawali dengan input-bit teks terang sebanyak 64-bit. Kemudian 64-bit teks terang tersebut dibagi menjadi dua bagian, yaitu sisi kiri (L0) sebanyak 32-bit dan sisi kanan (R0) sebanyak 32-bit. Setiap bagian teks terang akan dioperasikan sendiri-sendiri. R0 (z) akan digeser kekiri sebanyak empat (4) kali dan ditambahkan dengan kunci k[0]. Sementara itu z ditambah dengan sum (delta) yang merupakan konstanta. Hasil penambahan ini di-XOR-kan dengan penambahan sebelumnya. Kemudian di-XOR-kan dengan hasil penambahan antara z yang digeser kekanan sebanyak lima (5) kali dengan kunci k[1]. Hasil tersebut kemudian ditambahkan dengan L0 (y) yang akan menjadi R1. Sisi sebelah kiri akan mengalami proses yang sama dengan sisi sebelah kanan. L0 (y) akan digeser kekiri sebanyak empat (4) kali lalu ditambahkan dengan kunci k[2]. Sementara itu, Y ditambah dengan sum (delta). Hasil penambahan ini di-XORkan dengan penambahan sebelumnya. Kemudian di-XOR-kan dengan hasil penambahan antara Y yang digeser ke kanan sebanyak lima (5) kali dengan unci k[3]. Hasil tersebut kemudian ditambahkan dengan R0 (Z) yang akan menjadi L1. Berikut adalah langkah langkah penyandian dengan algoritma TEA dalam satu cycle (dua round) : 1. Pergeseran (shift) Blok teks terang pada kedua sisi yang masing masing sebanyak 32-bit akan digeser kekiri sebanyak empat (4) kali dan digeser ke kanan sebanyak lima (5) kali. 2. Penambahan Setelah digeser kekiri dan kekanan, maka Y dan Z yang telah digeser akan ditambahkan dengan kunci k[0]-k[3]. Sedangkan Y dan Z awal akan ditambahkan dengan sum (delta). 3. Peng-XOR-an Setelah dioperasikan dengan penambahan pada masing-masing register maka akan dilakukan peng-XOR-an dengan rumus untuk satu round adalah sebagai berikut :

44

y = y + (((z<<4)+k[0])^z+sum^((z>>5)+k[1])) z = z + (((y<<4)+k[2]^y+sum^((y>>5)+k[3])) dalam hal ini sum=sum+delta. Hasil penyandian dalam satu cycle satu blok teks terang 64-bit menjadi 64-bit teks sandi adalah dengan menggabungkan y dan z. Untuk penyandian pada cycle berikutnya y dan z ditukar posisinya, sehingga y1 menjadi z1 dan z1 menjadi y1 lalu dilanjutkan proses seperti langkah-langkah diatas sampai dengan 16 cycle (32 round). 4. Key Schedule Pada algoritma TEA, key schedule-nya sangat sederhana. Yaitu kunci k[0] dan k[1] konstan digunakan untuk round ganjil sedangkan kunci k[2] dan k[3] konstan digunakan untuk round genap. Dalam proses dekripsi sama halnya seperti pada proses penyandian yang berbasis feistel cipher lainnya. Yaitu pada prinsipnya adalah sama pada saat proses enkripsi. Namun hal yang berbeda adalah penggunaan teks sandi sebagai input dan kunci yang digunakan urutannya dibalik. Pada proses dekripsi semua round ganjil menggunakan k[1] terlebih dahulu kemudian k[0], demikian juga dengan semua round genap digunakan k[3] terlebih dahulu kemudian k[2].

Adapun beberapa keunggulan dari algoritma Tiny Encryption Algorithm (TEA) ini adalah : a. Pada Algoritma Tiny Encryption Algorithm (TEA) panjang kuncinya yaitu 128bit, merupakan jumlah kunci yang cukup panjang untuk algoritma kriptografi modern saat ini yang dapat menahan serangan kriptanalis. b. Teknik yang digunakan TEA cukup baik, yaitu pada setiap prosesnya menggunakan jaringan feistel yang memuat operasi permutasi, subtitusi dan modular arithmatic berupa XOR dan penambahan bilangan delta yang diharapkan dari operasi tersebut menciptakan efek difusi dan konfusi yang baik, karena semakin baik efek difusi dan konfusi yang dihasilkan suatu algoritma makin semakin baik pula tingkat keamanannya.

45

c. Ukuran blok input pada TEA yaitu 64-bit, sebuah jumlah yang cukup panjang untuk menghindari analisis pemecahan kode dan cukup kecil agar dapat bekerja dengan cepat. d. Tidak membutuhkan S-Box dan P-Box dalam proses enkripsi dan deskripsinya, karena S-Box dan P-Box tersebut tidak dapat dijamin keamanannya dikarenakan struktur dari S-Box dan P-Box tersebut hanya diketahui oleh NSA (National Security Agency) dan diubah menurut saran dari NSA, sehingga jika S-Box dan PBox tersebut diubah maka maka sangat mungkin sekali algoritma yang digunakan akan lebih mudah dibobol. Selain itu, juga dapat meminimalkan penggunaan memory pada saat melakukan proses enkripsi dan deskripsi sehingga dapat memaksimalkan proses. e. Algoritma TEA diketahui sangat kuat terhadap metode penyerangan berupa hanya ciphertext yang diketahui, plaintext yang diketahui dan plaintext terpilih.

Sedangkan kelemahan dari algoritma Tiny Encryption Algorithm (TEA) ini adalah karena TEA ini termasuk kedalam kelompok Algoritma Simetri, maka masih rentan untuk dibobol, karena dalam algortima simetri masalah utama memang terletak dari segi pendistribusian kuncinya, dimana harus benar-benar aman pada saat mendistribusikan kunci yang akan digunakan. Berdasarkan data yang didapat,

estimasi proses enkripsi dan deskripsi algoritma TEA yang dibandingkan dengan algoritma simetri lainnya secara umum adalah sebagai berikut :
Summary Block Size Author Bits Diffie & Hellman 64 Schneier 64 IBM & NSA 64 Lai & Massey 64 Matsui 64 Daemon & Rijmen 128 Aman (stream) Wheeler & Needham 64 Wheeler & Needham 64 Key Size Bits 168 256 56 128 128 128 128 128 128 Speed** (m:s) 4:05 0:55 1:42 1:07 2:50 0:39 0:46 0:46 1:03

Type 3DES Blowfish DES IDEA Misty1 Square Summer TEA 16 TEA 32

**Speed is time to copy a 50MB file from a normal disk to a ScramDisk on a 166 Mhz Pentium.

Tabel 2.1 Perbandingan Estimasi Proses Algoritma TEA dengan Algoritma Simetri lainnya.

46

2.3

Masalah Keamanan Informasi Di Negara Republik Indonesia

2.3.1 Hari Persandian Nasional Tidak banyak masyarakat yang mengetahui kalau tanggal 4 April dicanangkan sebagai hari Persandian Nasional di Indonesia. Mungkin karena mitos persandian adalah rahasia, sehingga pencanangan hari jadinya pun dirahasiakan. Pada tanggal 4 April 1946, tepatnya Pemerintah Indonesia mulai merintis Persandian sebagai bagian resmi Pemerintah Indonesia. Saat itu Menhan RI memerintahkan dr. Roebiono Kertopati untuk merintis sebuah badan yang mengelola persandian pemerintah. Usia Institusi Pemerintah yang mengurusi persandian yang kini sudah menginjak tahun ke-62, adalah usia yang terbilang cukup matang bagi perkembangan sebuah institusi. Pengalaman jatuh bangun dalam mempertahankan eksistensi, pertarungan dalam pengamanan pemberitaan, persaingan dalam ilmu dan teknologi, suka duka membesarkan organisasi dan sebagainya menjadi kekayaan tersendiri yang jika disikapi dengan positif akan menjadi aset berharga yang patut didokumentasikan sebagai sejarah. Di era teknologi informasi yang berkembang sangat pesat, tantangan yang menghadang menjadi begitu banyaknya. Tantangan tersebut menjadi tugas tersendiri yang harus diselesaikan oleh institusi yang menangani persandian yaitu Lembaga Sandi Negara (Lemsaneg). Salah satu tantangan yang perlu mendapatkan penanganan segera adalah adanya kebutuhan pengamanan informasi dihadapkan dengan kebebasan memperoleh informasi. Baru-baru ini telah disahkan oleh DPR RI Undang-undang Informasi dan Transfer Elektronik (UU ITE) dan Undang-undang Keterbukaan Informasi Publik (UU KIP). Sedangkan RUU Kerahasiaan Negara belum disahkan dan regulasi tentang keamanan informasi belum ada. Karena pengamanan informasi merupakan kegiatan yang tidak terlihat, seseorang sering abai terhadap pengamanan jenis ini. Terlebih lagi jika data/informasi

47

tersebut dicuri atau hilangpun tidak diketahui. Kita baru akan menyadari bahwa ada data/informasi yang telah hilang atau dicuri orang atau dimanipulasi setelah akibat yang ditimbulkannya mulai terlihat. Jadi sesungguhnya semua informasi patut diberikan pengamanan, terlebih lagi informasi yang bersifat rahasia seperti data-data pribadi, akun keuangan atau kesehatan. Tingkat pengamanan yang diberikan mengikuti tingkat kerahasiaan dari informasinya. Jadi kekhawatiran bahwa regulasi keamanan informasi akan berbenturan dengan regulasi kebebasan informasi hanyalah ilusi. Kedua regulasi tersebut justru akan saling mendukung. Momen hari persandian yang baik ini selayaknya dijadikan sebagai pelecut semangat untuk berkarya menyelesaikan tugas yang diberikan oleh perkembangan teknologi informasi dan komunikasi, UU ITE, UU KIP dan karena kebutuhan gaya hidup di era masyarakat informasi. Serta tugas yang tidak kalah penting adalah mensosialisasikan dan mencatatkan hari persandian nasional di lembar negara RI..

2.3.2 Informasi Rahasia dalam UU KIP UU KIP atau Undang Undang Republik Indonesia nomor 14 tahun 2008 tentang Keterbukaan Informasi Publik, ditujukan untuk mengatur hal ihwal informasi yang berkaitan dengan kepentingan umum dan negara. Seperti disebutkan dalam penjelasannya, keberadaan Undang-undang tentang Keterbukaan Informasi Publik sangat penting sebagai landasan hukum yang berkaitan dengan : 1. Hak setiap Orang untuk memperoleh Informasi 2. Kewajiban Badan Publik menyediakan dan melayani permintaan Informasi secara cepat, tepat waktu, biaya ringan/proporsional, dan cara sederhana 3. Pengecualian bersifat ketat dan terbatas; 4. Kewajiban Badan Publik untuk membenahi sistem dokumentasi dan pelayanan Informasi.

48

Dengan membuka akses publik terhadap Informasi diharapkan Badan Publik termotivasi untuk bertanggung jawab dan berorientasi pada pelayanan rakyat yang sebaik-baiknya. Dengan demikian, hal itu dapat mempercepat perwujudan

pemerintahan yang terbuka yang merupakan upaya strategis mencegah praktik korupsi, kolusi, dan nepotisme (KKN), dan terciptanya kepemerintahan yang baik (good governance). Ditegaskan juga sebagai bahan pertimbangan pembuatan UU ini salah satunya adalah bahwa informasi merupakan kebutuhan pokok setiap orang bagi

pengembangan pribadi dan lingkungan sosialnya serta merupakan bagian penting bagi ketahanan nasional.

2.3.3 Standar Keamanan Nasional Teknologi informasi dan komunikasi telah sangat maju dan menembus pada hampir semua aspek organisasi. Pengolahan dan penyimpanan informasi telah menjadi aspek yang menentukan kehidupan organisasi. Sehingga standarisasi keamanan informasi secara nasional bagi sebuah pemerintahan negara tentunya juga menjadi sangat penting. Tujuan utama membuat Standar Keamanan Informasi Nasional (sebutan singkatnya SKIN) adalah agar kegiatan pengamanan informasi pemerintah menjadi efisien dan efektif, sehingga tidak mudah untuk dibongkar pihak asing. Standar keamanan informasi ini penekanannya lebih pada syarat, prosedur, kebijakan, pengelolaan serta pendidikan dan pelatihan. Standarisasi yang dimaksud disini bukanlah standar teknis (spesifikasi), bukan pengarahan ke suatu teknologi atau produk, bukan kumpulan tip serta bukan sebagai jaminan dan berfungsinya sebuah alat keamanan informasi. Pendekatan ini memungkinkan SKIN diaplikasikan dan diterapkan dalam berbagai tipe organisasi dan aplikasi. Selain itu, SKIN akan memudahkan dalam menciptakan regulasi yang dapat memberikan keputusan apakah sebuah kegiatan keamanan informasi sudah baik atau belum, apakah sebuah informasi perlu mendapat perlakuan pengamanan atau tidak dan

49

juga dapat menentukan sampai tingkat berapa pengamanan yang diperlukan, dan sebagainya. Sehingga regulasi tentang keamanan informasi tidak perlu menciptakan badan/institusi lagi yang khusus untuk mengambil keputusan keamanan informasi atau tingkat kerahasiaan sebuah data/informasi. Standarisasi yang akan dipakai bisa saja mengacu pada standar internasional yang sudah ada atau bisa juga sama sekali baru disesuaikan dengan kekhasan keadaan di dalam negeri sendiri. Standar keamanan informasi yang sudah terkenal adalah BS7799 yaitu Code of Practise for Information Security Management, yang dikeluarkan oleh pemerintah Inggris (UKAS the United Kingdom Accreditation Service) dan kemudian diadopsi secara internasional menjadi ISO27001 yaitu Information Security Management System (ISMS) oleh organisasi internasional urusan standarisasi (ISO International Organization for Standardization). Sedangkan SKIN mungkin belum dibuat oleh pemerintah Indonesia (saya tidak menemukannya di SNI). Seandainya memang belum dibuat, tulisan ini ditujukan untuk memicu standarisasi keamanan informasi dalam lingkup nasional Indonesia. Saat ini informasi adalah suatu aset organisasi penting dan berharga yang harus dilindungi dari ancaman yang mungkin timbul untuk menjamin kesinambungan bisnis dan meminimalisir kerugian atas ketidakamanan yang terjadi. Oleh karena itu, pengelolaan informasi yang baik sangat penting untuk meningkatkan kesuksesan dalam kompetisi disemua sektor. ISO27001 dalam pengelolaan informasinya berfokus pada melindungi : a. Kerahasiaan (confidentiality) : memastikan bahwa informasi hanya dapat diakses oleh pihak yang memang berwenang. b. Keutuhan (integrity) : menjaga kelengkapan dan keakuratan informasi serta metode pemrosesannya. c. Ketersediaan (availability) : memastikan bahwa pihak yang berwenang dapat mengakses informasi dan aset lainnya ketika memerlukannya.

50

Untuk SKIN, perlu ditambahkan satu syarat yaitu d. Tidak dapat disangkal (non repudiation) : memastikan bahwa pihak pengakses tersebut adalah memang pihak yang benar, sehingga dapat dijadikan sebagai alat bukt i sesuai UU ITE tahun 2008 bila diperlukan. Standarisasi keamanan informasi pada dasarnya adalah mengenai pengelolaan resiko yang dilakukan dengan cara mengembangkan manajemen risiko dan strategi mitigasi melalui pengidentifikasian aset, ancaman dan vulnerabilities serta pengukuran resiko. Analisa risiko keamanan informasi (security risk assessment) adalah metode untuk memaksimalkan penggunaan aset organisasi yang terbatas melalui pengukuran risiko dan pengelolaan risiko yang dapat ditoleransi. Untuk kemudian dapat menetapkan syarat-syarat keamanan informasi dan jenis pengendalian yang diperlukan untuk meminimalisir ancaman dan risiko tersebut yang disesuaikan dengan benefit organisasi yang paling optimal. Pengendalian adalah cara yang dipilih untuk menyingkirkan atau meminimalkan risiko ke level yang dapat diterima. Berikut adalah dasar-dasar pengendalian yang biasa digunakan untuk membuat security risk assessment : 1. Pengendalian kebijakan keamanan informasi : ditujukan sebagai dukungan manajemen, komitmen dan pengarah dalam pencapaian tujuan pengamanan informasi. 2. Pengendalian keamanan informasi secara organisasional : ditujukan pada kebutuhan kerangka kerja manajemen yang membuat, menyokong dan mengelola infrastruktur keamanan informasi. 3. Pengendalian dan pengklasifikasian aset : ditujukan pada kemampuan infratruktur keamanan informasi untuk melindungi aset organisasi. 4. Pengendalian keamanan personel : ditujukan pada kemampuan untuk

meminimalisir resiko yang timbul akibat interaksi antar/dengan manusia.

51

5. Pengandalian keamanan fisik dan lingkungannya : ditujukan pada perlindungan terhadap resiko yang timbul secara fisik di tempat/lingkungan sekitar sistem berada. 6. Pengendalian komunikasi dan manajemen operasional : ditujukan pada kemampuan organisasi untuk menjamin ketepatan dan keamanan operasional asetasetnya. 7. Pengendalian akses : ditujukan pada kemampuan organisasi untuk mengontrol akses kepada aset-aset organisasi berdasarkan kebutuhan bisnis dan keamanan. 8. Pengendalian pengembangan dan pemeliharaan sistem : ditujukan pada kemampuan organisasi untuk menjamin terintegrasi dan terpeliharanya

pengendalian terhadap sistem keamanan informasi yang tepat. 9. Pengendalian kelangsungan manajemen bisnis : ditujukan pada kemampuan organisasi untuk menghadapi hambatan yang timbul sehingga operasional organisasi dapat berjalan dengan baik. 10. Pengendalian kepatuhan : ditujukan pada kemampuan organisasi untuk secara disiplin mematuhi semua regulasi, peraturan, kontrak dan syarat-syarat yang telah dibuat.

2.4 Rekayasa Perangkat Lunak

Rekayasa perangkat lunak adalah disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari awal spesifikasi sistem sampai pemeliharaan sistem setelah digunakan.( Kendall & Kendall, 2003).

Ada banyak proses dalam pembuatan perangkat lunak, namun ada kegiatan kegiatan yang mendasar yang umum bagi semua proses perangkat lunak. Kegiatan tersebut adalah :

52

1) Penspesifikasian perangkat lunak. Fungsionalitas perangkat lunak dan batasan operasinya harus didefenisikan. 2) Perancangan dan implementasi perangkat lunak. Perangkat lunak yang memenuhi syarat harus dibuat. 3) Pemvalidasian perangkat lunak. Perangkat lunak tersebut harus divalidasi untuk menjamin bahwa perangkat lunak bekerja sesuai dengan apa yang diinginkan. 4) Pengevaluasian perangkat lunak. Peragkat lunak harus dapat berkembang untuk menghadapi kebutuhan yang berubah-ubah.

Untuk memodelkan proses rekayasa perangkat lunak dapat dilakukan dengan beberapa pendekatan yaitu : 1) Model air terjun (waterfall). Model ini mengambil kegiatan proses dasar seperti spsifikasi, pengembangan, validasi dan evolusi dan merepresentasikannya sebagai fase-fase yang berbeda seperti spesifiksi persyaratan, perancangan perangkat lunak, implementasi, pengujian dan seterusnya. 2) Pegembangan evolusioner. Suatu sistem awal dikembangkan dengan cepat dri spesifikasi abstrak. 3) Pengembangan sistem formal. Pendekatan ini didasarkan atas pembuatan spesifikasi sistem matematis dan pentrnsformasian sistem ini dengan metode matematis untuk membangun program. 4) Pengembangan berdasarkan pemakaian ulang. Pedekatan ini didasarkan adanya komponen yang dapat dipakai ulang dalam jumlah yang signifikan.

Pada proses peracangan perangkat lunak dilakukan beberapa kegitan seperti: 1) Perancangan arsitektural. Subsistem-subsistem yang membentuk sistem dan hubungan mereka diidentifikasi dan didokumentasi. 2) Spesifikasi abstrak. Untuk setiap subsistem, spesifikasi abstrak dari layanan dan batasan operasinya harus ditentukan. 3) Perancangan antarmuka. Untuk setiap subsistem, antarmuka subsistem dirancang dan didokumentasi 4) Perancangan komponen. Layanan dialokasikan pada komponen yang berbeda dan antarmuka komponen-komponen dirancang.

53

5) Perancangan struktur data. Struktur data yang dipakai pada implementasi sistem dirancang secara rinci dan dispesifikasi. 6) Perancangan algoritma. Algoritma yang digunakan untuk memberikan layanan dirancang secra rinci dan dispesifikasi.

2.5 Pemrograman dengan Delphi 7.0

Delphi merupakan software buatan Borland yang sangat populer. Berbeda dengan software Windows umumnya, Delphi bukanlah software aplikasi seperti MS Office atau permainan game. Delphi adalah sebuah bahasa pemrograman, development language, aplikasi untuk membuat aplikasi. Delphi digunakan untuk membangun aplikasi Windows, aplikasi grafis, aplikasi visual, bahkan aplikasi jaringan (client/server) dan berbasis internet.

Adapun kelebihan dari bahasa pemrograman Delphi, adalah : a. Delphi memiliki IDE (Integrated Development Environment) atau lingkungan pengembangan yang lengkap. b. Delphi mempunyai kecepatan kompilasi yang tidak perlu diragukan kecepatannya. c. Delphi menggunakan bahasa Object Pascal yang telah mendunia. d. Delphi bersifat multi purpose, dapat digunakan untuk berbagai keperluan pengembangan aplikasi, mulai perhitungan sederhana sampai aplikasi multimedia bahkan yang terkoneksi ke Internet. (Husni, 2004).

54

BAB 3

ANALSIS DAN PEMODELAN PERANGKAT LUNAK

3.1 Analisis Permasalahan Tiny Encryption Algorithm ( TEA )

Tahapan analisis terhadap suatu sistem dilakukan sebelum tahapan perancangan dilakukan. Adapun tujuan dilakukannya analisis terhadap suatu sistem adalah untuk mengetahui alasan mengapa sistem tersebut diperlukan, yaitu dengan merumuskan kebutuhan kebutuhan dari sistem tersebut untuk meminimalisir sumber daya yang berlebih serta membantu merencanakan penjadwalan pembentukan sistem,

meminimalkan distorsi distorsi yang mungkin terdapat di dalam sistem tersebut sehingga dapat bekerja secara optimal.

Salah satu unsur terpenting yang harus dipertimbangkan dalam tahapan analisa sistem ini yaitu masalah perangkat lunak, karena nantinya perangkat lunak yang digunakan haruslah sesuai dengan masalah yang akan diselesaikan. Untuk itu, analisa yang dilakukan terhadap perangkat lunak algoritma TEA ini akan dibagi kedalam beberapa aspek, yaitu analisis kebutuhan perangkat lunak algoritma TEA, analisis proses enkripsi dan deskripsi algoritma TEA serta analisis fungsi perangkat lunak algoritma TEA.

3.2 Analisis Kebutuhan Tiny Encryption Algorithm ( TEA )

Faktor yang mendasari dibentuknya perangkat lunak dengan algortima TEA ini adalah keamanan data. Keamanan data telah menjadi aspek yang sangat penting dari suatu sistem informasi. Sebuah sistem informasi umumnya hanya ditujukan bagi segolongan tertentu. Oleh karena itu sangatlah penting untuk mencegahnya agar tidak jatuh kepada pihak pihak yang tidak berhak. Untuk keperluan tersebut, maka diperlukan sebuah teknik kriptografi dengan menggunakan metode enkripsi dan deskripsi pesan.

55

Salah satu metode enkripsi dan deskripsi data yang digunakan adalah Tiny Encryption Algorithm ( TEA ).

Setiap sistem yang akan dibangun selalu memiliki kebutuhan. Analisa yang dilakukan terhadap kebutuhan suatu sistem dapat berfungsi untuk meminimalkan sumber daya yang berlebih dari sistem tersebut serta membantu pembentukan penjadwalan pembentukan sistem. Analisa yang dilakukan untuk mencari kebutuhan dari algoritma TEA ini dapat dilakukan dengan cara mengetahui siapa yang akan menggunakan perangkat lunak tersebut, tampilan antar muka yang akan digunakan, serta apa yang akan dihasilkan oleh perangkat lunak tersebut.

Berdasarkan analisa yang dilakukan terhadap keperluan perangkat lunak maka dapat diambil kesimpulan bahwa nama dari perangkat lunak yang akan dibangun adalah KripTEA, dimana Krip menunjukkan fungsi dari perangkat lunak dan TEA merupakan nama algoritma yang digunakan. Perangkat lunak yang akan dibangun nantinya akan menghasilkan file ciphertext dari proses enkripsi dan file plaintext dari proses deskripsi, serta penjelasan tentang cara penggunaan perangkat lunak. Kemudian pengguna dari perangkat lunak ini adalah setiap individu yang membutuhkan keamanan data, untuk itu sistem yang dibangun nantinya harus dapat dipakai oleh setiap orang secara umum. Maka perangkat lunak yang dibentuk harus memiliki antarmuka yang sederhana dan mudah untuk digunakan. Adapun sumber daya dari sistem untuk membangun perangkat lunak tersebut yaitu digunakan sistem operasi Microsoft Windows XP dan menggunakan bahasa pemrograman Borland Delphi 7.0. Untuk memudahkan perancangan perangkat lunak tersebut dibutuhkan algoritma dan Flowchart dari setiap mekanisme yang ada. Alasan mengapa digunakan algoritma dan flowchart adalah karena dengan menggunakan algoritma dan flowchart dapat digambarkan secara jelas alur dari proses, struktur perulangan serta teknik pengambilan keputusan. Setelah algoritma dan flowchart terbentuk, barulah dilakukan proses pembentukan sistem.

56

3.3 Analisis Proses Enkripsi Algoritma TEA

Untuk melakukan enkripsi, proses diawali dengan input-bit teks terang sebanyak 64bit. Kemudian 64-bit teks terang tersebut dibagi menjadi dua bagian, yaitu sisi kiri (L0) sebanyak 32-bit dan sisi kanan (R0) sebanyak 32-bit. Setiap bagian teks terang akan dioperasikan sendiri-sendiri. R0 (z) akan digeser kekiri sebanyak empat (4) kali dan ditambahkan dengan kunci k[0]. Sementara itu z ditambah dengan sum (delta) yang merupakan konstanta. Hasil penambahan ini di-XOR-kan dengan penambahan sebelumnya. Kemudian di-XOR-kan dengan hasil penambahan antara z yang digeser kekanan sebanyak lima (5) kali dengan kunci k[1]. Hasil tersebut kemudian ditambahkan dengan L0 (y) yang akan menjadi R1. Sisi sebelah kiri akan mengalami proses yang sama dengan sisi sebelah kanan. L0 (y) akan digeser kekiri sebanyak empat (4) kali lalu ditambahkan dengan kunci k[2]. Sementara itu, Y ditambah dengan sum (delta). Hasil penambahan ini di-XORkan dengan penambahan sebelumnya. Kemudian di-XOR-kan dengan hasil penambahan antara Y yang digeser ke kanan sebanyak lima (5) kali dengan kunci k[3]. Hasil tersebut kemudian ditambahkan dengan R0 (Z) yang akan menjadi L1. Misalkan : Plaintext Kunci : bacabuku : S1 ILMU KOMPUTER

Bagi plaintext menjadi 2 blok kedalam blok R Dan Blok L: R = baca L = buku Begitu juga dengan kunci, menjadi 4 blok k[0], k[1], k[2], k[3] : k[0] = S1spasiI k[1] = LMUspasi k[2] = KOMP k[3] = UTER

57

ubah plaintext serta kunci dalam kode ASCII kemudian ke biner dengan proses sebagai berikut : b 98 01100010 a 97 01100001 c 99 01100011 a 97 01100001 b 98 01100010 u 117 01110101 k 107 01101011 u 117 01110101 S 83 01010011 1 49 00110001 Spasi 32 00100000 I 73 01001001 L 76 01001100 M 77 01001101 U 85 01010101 Spasi 32 00100000 K 75 01001011 O 79 01001111 M 77 01001101 P 80 01010000 U 85 01010101 T 84 01010100 E 69 01000101 R 82 01010010 Sehingga didapat : Cipher R (Z) : 01100010 01100001 01100011 01100001 Cipher L (Y) : 01100010 01110101 01101011 01110101

K[0] : 01010011 00110001 00100000 01001001 K[1] : 01001100 01001101 01010101 00100000

58

K[2] : 01001011 01001111 01001101 01010000 K[3] : 01010101 01010100 01000101 01010010

Cipher R (Z) akan mengalami pergeseran bit ke kiri sebanyak 4 bit dan pergeseran bit ke kanan sebanyak 5 bit. Cipher R : 01100010 01100001 01100011 01100001 Menjadi Zsl ( Z shift left) Zsr ( R shift right) : 00100110 00010110 00110110 00010110 : 01001100 00101100 01101100 00101100

Zsl ditambahkan dengan kunci k[0] : Zsl K[0] : 00100110 00010110 00110110 00010110 : 01010011 00110001 00100000 01001001 01110111 00110111 00110110 01011111

Sedangkan Zsr ditambahkan dengan k[1] : Rsr K[1] : 01001100 00101100 01101100 00101100 : 01001100 01001101 01010101 00100000 01001100 01101101 01111101 00101100

Kemudian Cipher R (Z) tidak mengalami pergeseran bit ditambahkan dengan bilangan delta, dimana bilangan delta yang digunakan secara konstan yaitu : 9E3779B9 atau dalam biner 10011110 00110111 01111001 10111001. R (Z) : 01100010 01100001 01100011 01100001 Delta : 10011110 00110111 01111001 10111001 11111110 01110111 01111011 11111001

Kemudian di XOR kan dengan cipher Zsl yang ditambah k[0] : 11111110 01110111 01111011 11111001 01110111 00110111 00110110 01011111 10001001 01000000 01001101 10101110

59

Kemudian di XOR kan dengan Zsr yang ditambah k[1] : 10001001 01000000 01001101 10101110 01001100 00101100 01101100 00101100 11000101 01101100 00101101 10000010

Untuk cipher L (Y) proses yang terjadi pada dasarnya sama seperti pada cipher R (Z), yakni cipher L (Y) juga yang mengalami pergeseran bit ke kiri sebanyak 4 bit dan ke kanan sebanyak 5 bit. Cipher L (Y) : 01100010 01110101 01101011 01110101 Menjadi Ysl : 00100110 01010111 01001001 01010111 Ysr : 01001100 10101110 01101101 10101110

Lsl ditambahkan dengan k[2] : Ysl K[2] : 00100110 01010111 01001001 01010111 : 01001011 01001111 01001101 01010000 01101111 01011111 01001101 01010111

Ysr ditambahkan dengan k[3] : Ysr K[3] : 01001100 10101110 01101101 10101110 : 01010101 01010100 01000101 01010010 01011101 11111110 01101101 11111110

Cipher L (Y) yang tidak mengalami pergeseran ditambahkan dengan delta L (Y) : 01100010 01110101 01101011 01110101 Delta : 10011110 00110111 01111001 10111001 11111110 01110111 01111011 11111101

Kemudian di XOR kan dengan Ysl yang ditambah k[2] : 11111110 01110111 01111011 11111101 01101111 01011111 01001101 01010111 10010001 00101000 00110110 10101010

60

Kemudian di XOR kan dengan Ysr yang ditambah k[3] : 10010001 00101000 00110110 10101010 01011101 11111110 01101101 11111110 11001100 11010110 01011011 01010100

Hasil akhir cipher R (Z) ditambahkan dengan cipher L (Z) yang tidak mengalami pergeseran, yang mana hasilnya akan dijadikan cipher L1 (Y1) untuk round berikutnya. Demuikian juga halnya hasil akhir pada cipher L (Y) akan ditambahkan dengan cipher R (Z) yang tidak mengalami pergeseran yang akan dijadikan cipher R1 (Z1) pada round berikutnya : R (Z) : 11000101 01101100 00101101 10000010 L (Y) : 01100010 01110101 01101011 01110101 11100111 01111101 01101111 11110111 L1 (Y1)

L (Y) : 11001100 11010110 01011011 01010100 R (Z) : 01100010 01100001 01100011 01100001 11101110 11110111 01111011 01110101 R1 (Z1)

Demikianlah penjelasan proses enkripsi yang terjadi pada 2 round ( 1 cycle), untuk round berikutnya dilakukan proses yang sama seperti round sebelumnya, hanya saja untuk proses round yang selanjutnya menggunakan cipher hasil round sebelumnya.

61

3.4 Analisis Proses Deskripsi Algoritma TEA

Untuk proses deskripsi pada algoritma TEA sama halnya dengan proses enkripsinya. Hanya saja terjadi perbedaan pada penjadwalan kuncinya yaitu pada proses enkripsi untuk cipher R yang mengalami pergeseran bit ke kiri sebanyak 4 bit digunakan kunci k[0] pada proses deskripsi digunakan kunci k[1], untuk cipher R yang mengalami pergeseran ke kanan sebanyak 5 bit menggunakan kunci [1] pada proses deskripsi menggunakan kunci k[0]. Begitu juga halnya dengan cipher L, pada proses enkripsi untuk cipher L yang mengalami pergeseran ke kiri sebanyak 4 bit menggunakan kunci k[2] pada proses deskripsi digunakan kunci k[3]. Untuk cipher L yang mengalami pergeseran ke kanan sebanyak 5 bit digunkan kunci k[3] pada proses deskripsi digunkan kunci k[2].

3.5 Pemodelan Fungsional

Hasil yang diharapkan dari tahapan membangun suatu sistem adalah bagaimana caranya agar sistem yang dibangun memiliki fungsi yang berdayaguna maksimal. Oleh karena itu, maka fungsi fungsi yang ada pada sistem tersebut perlu dianalisis. Adapun pada perangkat lunak algoritma TEA, secara garis besar terdiri atas 2 fungsi yaitu fungsi enkripsi dan fungsi deskripsi. Untuk melengkapi mekanisme dari kedua fungsi tersebut maka terdapat fungsi-fungsi pendukung, seperti fungsi untuk input data secara browsing file ataupun secara manual, serta fungsi untuk mendapatkan informasi dari panjang file, dan fungsi-fungsi lainnya.

3.5.1 Data Flow Diagram ( DFD )

Data Flow Diagram ( DFD ) dapat digunakan untuk menggambarkan aliran informasi dan proses data yang bergerak dari pemasukan data hingga keluaran. Keuntungan penggunaan Data Flow Diagram ( DFD ) ini adalah memudahkan pemakai yang kurang menguasai bidang komputer untuk mengerti sistem yang akan dikerjakan atau

62

dikembangkan. Berikut adalah Data Flow Diagram ( DFD ) dari perangkat lunak yang akan dirancang. (Kendall & Kendall, 2003).

Order_perintah, plaintext, ciphertext, kunci_enkripsi, kunci_deskripsi user File_output (ciphertext/pesan rahasia, plaintext/pesan asli)

P.0 Sistem keamanan data Menggunakan algoritma TEA

Gambar 3.1 Diagram Konteks/DFD Level 0

DFD level 0 di atas menggambarkan sistem secara garis besar yang memperlihatkan masukan, proses, dan keluaran dari sistem yang akan dirancang. Tiny Encryption Algorithm kriptosistem akan menghasilkan keluaran berupa file output.

Proses yang terjadi pada diagram konteks atau DFD Level 0 di atas dapat dijelaskan dengan menggunakan spesifikasi proses pada tabel 3.1 berikut :

Tabel 3.1 Spesifikasi proses diagram konteks/DFD Level 0

No/Nama

Input

Keterangan Proses

Output

P.0/ Sistem Keamanan data menggunakan Algoritma TEA

Order Perintah, plaintext, ciphertext, kunci_enkripsi, kunci_deskripsi

Sistem yang bertujuan mengamankan data (file) menggunakan algoritma kriptografi simetri Tiny Encryption Algorithm (TEA)

File Output (ciphertext/pesan rahasia, plaintext/pesan asli)

Pengembangan proses yang terjadi pada DFD level 0 di atas dapat di jabarkan pada DFD level 1 berikut :

63

File_output (ciphertext/pesan rahasia)

Plaintext, kunci_enkripsi

Order_enkripsi

P.2 Proses enkripsi algoritma TEA

Order_perintah

user

P.1 Pilih proses yang akan dijalankan Order_deskripsi

+
P.3 Proses deskripsi Algoritma TEA

Ciphertext, kunci_deskripsi

File_output (plaintext/pesan asli)

Gambar 3.2 Diagram Level 1

Pada gambar di atas dapat dilihat bahwa terdapat 2 pilihan proses yang dapat dilakukan pada kriptosistem ini yaitu : 1. Proses Enkripsi Proses Enkripsi adalah proses untuk mengubah Plaintext (pesan asli) menjadi Ciphertext (pesan rahasia). Untuk melakukan proses enkripsi, user harus menginput plaintext serta menginput kunci (password). 2. Proses Deskripsi Proses Deskripsi adalah proses untuk mengubah Ciphertext (pesan tersandi) menjadi Plaintext (pesan asli) kembali. Untuk melakukan proses deskripsi, user harus menginput ciphertext yang telah terenkripsi sebelumnya dan menggunakan kunci yang sama pada saat proses enkripsi.

Spesifikasi proses dari DFD level 1 pada Gambar 3.2 akan dijelaskan pada tabel berikut :

64

Tabel 3.2 Spesifikasi proses diagram level 1 No/ Nama Input Keterangan Proses P.1/ pilih proses yang akan dijalankan Order_Perintah Konfirmasi order perintah untuk melakukan proses Enkripsi atau proses Dekripsi P.2/ proses enkripsi algoritma TEA Order_perintah Enkripsi, plaintext, kunci_enkripsi P.3/ Proses Order_perintah Dekripsi data Enkripsi data File Output (ciphertext/pesan rahasia) File Output (plaintext/pesan asli) Order Enkripsi atau Order Dekripsi Output

deskripsi Algoritma Dekripsi, TEA ciphertext, kunci_deskripsi

Proses enkripsi dilakukan pada file. Setiap karakter yang ada pada file dikonversikan ke kode ASCII kemudian ke biner. Karakter-karakter tersebut dienkripsi menggunakan kunci rahasia. Berikut adalah gambar diagram alir untuk proses enkripsi :

65

D3

Plaintext

File_output D1 File_data
P.3.9 Proses gabung plaintext

File_data Order_deskripsi user Krk_plain


P.3.1 Browsing file D2

Kode ASCII

Kunci deskripsi 128 bit

P.3.8 Konversi dari ASCII

Kode_ASCII

ciphertext

k[0], k[1], k[2], k[3]

P.3.3 Partisi kunci 128 bit menjadi k[0], k[1], k[2], k[3] masing masing 32 bit

ASCII_plain

P.3.2 Proses potong ciphertext

k[0], k[1], k[2], k[3]

P.3.7 Konversi biner Ke ASCII

subblok_cipher

Biner_plain

P.3.4 Proses deskripsi I

cipher2

P.3.5 Proses deskripsi II

cipher1

P.3.6 Proses gabung keseluruhan blok 64 bit

Gambar 3.3 Diagram level 2 (Proses Enkripsi)

66

Berikut adalah tabel spesifikasi proses enkripsi :

Tabel 3.3 Spesifikasi Proses DFD Level 2 Proses 2 (proses enkripsi) No/ Nama Input Keterangan Proses P.2.1/ Browsing File File Data, order_enkripsi Melakukan browsing file yang akan File data dienkripsi (Plaintext) Output

P.2.2/ Potong File

Plaintext

Memotong isi file menjadi blokblok karakter

krk_plain

P.2.3/ Konversi ke ASCII P.2.4/ Konversi ke biner P.2.5/ proses partisi jadi 64 bit P.2.6/ Proses partisi 64 bit jadi 2 subblok bit 32 bit

krk_plain, kode_ASCII ASCII_plain

Mengkonversikan karakter plainteks ke dalam kode ASCII Mengkonversikan kode ASCII plainteks ke biner

ASCII_plain

Biner_plain

Biner_plain

Mempartisi keseluruhan bit plaintext menjadi blok-blok 64-bit

Blok_plain

Blok_plain

Mempartisi setiap blok-blok plainteks 64-bit menjadi 2 subblok 32-bit Mempartisi masukan kunci 128 bit menjadi k[0, k[1], k[2], k[3] yang masing masing 32 bit

Subblok_pla in

P.2.7/ Partisi kunci Kunci enkripsi 128 bit menjadi k[0], 128 bit k[1], k[2], k[3] masing masing 32 bit P.2.8/ Proses Enkripsi I P.2.9/ Proses Enkripsi II P.2.10/ Proses gabung ciphertext Cipher2 Cipher1 Subblok_plain

K[0], k[1], k[2], k[3]

Melakukan proses enkripsi tahap I

Cipher1

Melakukan proses enkripsi tahap I I

Cipher2

Menggabungkan seluruh karakter cipherteks

File_Output (Ciphertext)

67

Untuk mengembalikan cipherteks menjadi plaintext kembali agar dapat dipahami, maka dilakukan proses dekripsi pada file tersebut. Untuk melakukan proses dekripsi digunakan kunci yang sama pada saat melakukan proses enkripsi. Proses dekripsi dapat dilihat pada gambar DFD level 2 proses dekripsi berikut :

D3

Plaintext

File_output D1 File_data
P.3.9 Proses gabung plaintext

File_data Order_deskripsi user Krk_plain


P.3.1 Browsing file D2

Kode ASCII

Kunci deskripsi 128 bit

P.3.8 Konversi dari ASCII

Kode_ASCII

ciphertext

k[0], k[1], k[2], k[3]

P.3.3 Partisi kunci 128 bit menjadi k[0], k[1], k[2], k[3] masing masing 32 bit

ASCII_plain

P.3.2 Proses potong ciphertext

k[0], k[1], k[2], k[3]

P.3.7 Konversi biner Ke ASCII

subblok_cipher

Biner_plain

P.3.4 Proses deskripsi I

cipher2

P.3.5 Proses deskripsi II

cipher1

P.3.6 Proses gabung keseluruhan blok 64 bit

Gambar 3.4 Diagram level 2 (Proses Deskripsi)

68

Berikut adalah tabel spesifikasi proses deskripsi :

Tabel 3.4 Spesifikasi Proses DFD Level 2 Proses 3 (Proses Deskripsi)

Spesifikasi proses dekripsi dapat dilihat pada tabel berikut : Proses No/Nama Input Keterangan P.3.1/Browsing file File Data, order_enkripsi P.3.2/ Proses potong ciphertext Ciphertext Melakukan browsing file yang akan dideskripsi Memotong pesan yang akan didekripsi menjadi blok-blok cipher 64-bit, lalu mempartisi ke dalam 2 subblok 32-bit untuk didekripsi pada tahap I P.3.3/ Partisi kunci 128 bit menjadi k[0], k[1], k[2], k[3] masing masing 32 bit P.3.4/ Proses deskripsi I P.3.5/proses deskripsi II P.3.6/ Proses gabung keseluruhan blok 64 bit P.3.7/ Konversi biner ke ASCII P.3.8/ Konversi dari ASCII P.3.9/ Proses gabung plaintext ASCII_plain, kode_ASCII Krk_plain Biner_Plain Cipher2 Cipher1 Melakukan proses dekripsi tahap I I Menggabungkan setiap 32-bit subblok ciphertext menjadi blokblok 64 bit Mengkonversi setiap blok-blok plainteks menjadi kode ASCII nya Mengkonversi setiap kode ASCII menjadi karakter-karkter nya Menggabungkan seluruh karakterkarakter plainteks Subblok_Cipher Melakukan proses dekripsi tahap I Kunci deskripsi 128 bit

Output File data (ciphertext) Subblok_Ci pher

Mempartisi masukan kunci 128 bit K[0], k[1], menjadi k[0], k[1], k[2], k[3] yang masing masing 32 bit k[2], k[3]

Cipher1

Cipher2

Biner_Plain

ASCII_Plain

Krk_plain

File_Output (Plaintext)

69

3.5.2 Kamus Data

Kamus data merupakan suatu data yang disusun untuk memudahkan proses analisis dan desain. Selain suatu dokumen, kamus data mengumpulkan dan mengkoordinasi istilah-istilah data yang terdapat pada diagram alir. Penganalisis sistem harus hati-hati dalam mengkatalogkan istilah-istilah yang berbeda-beda yang menunjuk pada item yang sama. Kehati-hatian ini membantu dalam menghindari duplikasi, memungkinkan adanya komunikasi yang baik antara bagian-bagian yang saling berbagi basis data, dan membuat upaya pemeliharaan lebih bermanfaat. Kamus data juga bertindak sebagai standar tetap untuk elemen-elemen data.( Kendall & Kendall, 2003)

Masukan-masukan kamus data bisa dibuat setelah diagram aliran data dilengkapi atau bisa juga disusun saat diagram aliran data sedang dikembangkan. Penganalisis sistem bisa saja membuat suatu diagram aliran data level 0 dan sekaligus membuat masukan-masukan data awal. Selanjutnya, sewaktu penganalisis sistem mengembangkan diagram level data menjadi diagram anak, penganalisis juga bisa memodifikasi masukan-masukan kamus data yang baru sesuai dengan aliran data pada diagram alir anak.

Berikut ini merupakan kamus data yang berisikan data yang digunakan pada diagram alir data pada proses enkripsi dan dekripsi.

70

3.5.2.1 Kamus Data Proses Enkripsi

Tabel 3.5 Kamus Data Proses Enkripsi

Nama ASCII_plain

Tipe data Integer

Deskripsi Karakter plainteks yang telah diubah ke dalam kode ASCII

Biner_plain

Integer

Bentuk biner plainteks dari setiap kode ASCII karakter pesan

Blok_plain

Integer

Blok-blok 64-bit plainteks hasil partisi plainteks

Blok_cipher

Integer

Hasil penggabungan seluruh cipher yang diperoleh

Cipher1 Cipher2 File_data

Integer Integer Boolean

Hasil proses enkripsi tahap I Hasil proses enkripsi tahap II Semua jenis file yang tersimpan di komputer

File_Output Krk_plain Kode_ASCII Kunci_enkripsi

Boolean Char Integer string

File hasil enkripsi Karakter plainteks yang telah dipotong Bentuk desimal kode ASCII Kunci enkripsi yang diinput oleh user maksimal 16 karakter

k[0], k[1], k[2], k[3]

string

128 bit kunci yang dipartisi menjadi 4 blok yang masing masing 32 bit untuk proses enkripsi

Order_enkripsi

String

Perintah untuk melakukan browsing file.

Plaintext

boolean

File yang akan dienkripsi

71

3.5.2.2 Kamus Data Proses Deskripsi

Tabel 3.6 Kamus Data Proses Deskripsi

Nama ASCII_plain

Tipe data Integer

Deskripsi kode ASCII hasil konversi dari biner plainteks

Blok_cipher Cipherteks Cipher2 Cipher1 File_data

Integer boolean Integer Integer Boolean

blok ciphertext hasil deskripsi File yang akan didekripsi Karakter cipher yang telah dipotong Hasil proses dekripsi tahap I Semua jenis file yang tersimpan di komputer

File_output

Boolean

File hasil dekripsi (gabungan seluruh karakter plainteks)

Krk_plain

Char

Karakter plainteks yang telah dikonversi dari kode ASCII

Kunci_deskripsi

String

Kunci dekripsi maksimal 16

yang

diinput

user

k[0], k[1], k[2], k[3]

string

128 bit kunci yang dipartisi menjadi 4 blok yang masing masing 32 bit untuk proses deskripsi

Order_deskripsi

String

Perintah untuk melakukan browsing file.

Subblok_cipher

Integer

Hasil proses dekripsi tahap II

72

BAB 4

PERANCANGAN DAN IMPLEMENTASI

4.1 Perancangan

Perancangan merupakan tahap kedua dari siklus hidup pengembangan sistem perangkat lunak. Perancangan memiliki tujuan untuk menentukan kondisi akhir yang diharapkan dari perangkat lunak yang akan dibangun dan merumuskan cara yang harus dilakukan untuk memperoleh hasil tersebut.

Pada perangkat lunak dengan algoritma TEA, tahap perancangan yang dilakukan mencakup perancangan struktur program, perancangan antar muka pemakai dan perancangan algoritma dan flowchart perangkat lunak KripTEA

4.1.1 Perancangan Struktur Data

Perancangan data merupakan aktivitas pertama (dan beberapa sering mengatakan yang terpenting) dari empat aktivitas desain yang dilakukan selama rekayasa perangkat lunak. Pengaruh struktur data pada struktur program dan kompleksitas prosedural menyebabkan perancangan data berpengaruh penting terhadap kualitas perangkat lunak. Tanpa melihat perancangan yang digunakan, data yang dirancang dengan baik dapat membawa kepada struktur program dan modularitas yang lebih baik, serta mengurangi kompleksitas prosedural (Pressman, 2002).

73

Perancangan data yang digunakan pada perangkat lunak KripTEA adalah sebagai berikut :

file_data, plainteks : boolean

order_perintah, cipher, kunci_enkripsi : string;

kode_ASCII, ASCII_Plain, Biner_plain: integer

cipherteks, cipher, blok_plain : Boolean

kunci_deskripsi, k[0], k[1], k[2], k[3] : string

blok_cipher, krk_plain : integer

4.1.2 Perancangan Struktur Program

Struktur program, disebut juga hirarki kontrol, merepresentasikan organisasi komponen program (modul) serta mengimplikasikan suatu hirarki kontrol. Suatu hirarki kontrol tidak mengimplikasikan aspek prosedural dari perangkat lunak, seperti urutan proses, kejadian/urutan dari keputusan, atau pengulangan operasi. Banyak notasi yang berbeda yang digunakan untuk merepresentasikan hirarki kontrol, yang paling umum adalah diagram pohon (Pressman, 2002). Adapun struktur program dari perangkat lunak KripTEA dapat dilihat pada gambar berikut :

74

Main Menu

Enkripsi

Deskripsi

Baca Plaintext

Baca Kunci Enkripsi

Baca Ciphertext

Baca Kunci Deskripsi

Potong Plaintext

Potong Kunci Enkripsi

Potong Ciphertext

Potong Kunci Deskripsi

Konversi pesan Ke kode ASCII

Konversi kunci Ke kode ASCII

Konversi Dari Biner ke kode ASCII

Konversi kunci Ke kode ASCII

Konversi kode ASCII Kedalam biner

Konversi dari Kode ASCII

Gabung Ciphertext

Gabung Plaintetxt

Gambar 4.1. Struktur Program KripTEA

75

4.1.3 Perancangan Antar Muka Pemakai

Antar muka pemakai (user interface) adalah aspek sistem komputer atau program yang dapat dilihat, didengar, atau dipersepsikan oleh pengguna manusia, dan perintahperintah atau mekanisme yang digunakan pemakai untuk mengendalikan operasi dan memasukkan data. Berikut ini merupakan perancangan antar muka pemakai perangkat lunak KripTEA.

4.1.3.1 Tampilan Form Utama

Tampilan ini merupakan tampilan utama dari perangkat lunak KripTEA yang dibuat sesederhana mungkin untuk memudahkan para pengguna perangkat lunak. Pada tampilan Utama yang merupakan tampilan awal ini terdapat Judul Program, dan fasilitas yang ada pada KripTEA, yaitu Encryption, Descryption, About (penjelasan tentang sistem) serta tombol exit.

Jika dipilih menu Encryption maka selanjutnya akan tampil form Enkripsi Pesan dan jika yang dipilih adalah Descryption maka yang muncul adalah tampilan form Dekripsi pesan. Sedangkan jika yang dipilih adalah menu About maka yang tampil adalah penjelasan tentang sistem. Untuk keluar dari menu utama maka dipilih tombol Exit yang merupakan pilihan untuk keluar secara keseluruhan dari software.

Tampilan layar utama pada KripTEA adalah seperti pada gambar 4.2 berikut :

76

KripTEA V.1.0 SISTEM KEAMANAN DATA MENGGUNAKAN ALGORITMA TEA MENU UTAMA

ENCRYPTION DESCRYPTION ABOUT EXIT

Gambar 4.2 Rancangan Layar Utama KripTEA

4.1.3.2 Tampilan Form Encryption Pada KripTEA, plainteks yang akan dienkripsi di browse dari komputer melalui file browser, kemudian pilih format file yang akan digunakan pada proses enkripsi melalui filter data, selanjutnya pilih file yang akan dienkripsi yang terdapat pada file list. Untuk melakukan proses enkripsi kilik tombol encryption. Setelah melakukan pemilihan file, input password untuk melakukan proses enkripsi. Untuk membatalkan proses atau kembali ke menu utama dapat menglik tombol back. Tampilan layar menu encryption adalah sebagai berikut :

77

Enryption/Descryption Encryption Descryption

Data Encryption

Password (key) Filter Data :

File Browser :

File List :

Encryption

Back

Gambar 4.3 Rancangan Layar Enkripsi

78

4.1.3.3 Tampilan Form Descryption

Tampilan ini akan ditampilkan ketika pengguna sistem hendak melakukan proses dekripsi terhadap suatu file yang telah terenkrip. Proses dekripsi hanya dapat dilakukan dengan benar jika kunci rahasia yang diinput user bernilai benar. Tampilan form dekripsi dapat dilihat pada gambar berikut :

Encryption/Descryption Encryption Descryption

Data Descryption

Password (key) Filter Data :

File Browser :

File List :

Descryption

Back

Gambar 4.4 Rancangan Layar Deskripsi

79

File yang akan didekripsi di-browse dari komputer, dimana file haruslah dalam format *.tea . Jika user ingin mengganti file yang ingin didekripsi atau membatalkan proses maka user dapat mengklik tombol Back. Untuk melakukan proses deskripsi haruslah menginputkan password yang sama seperti pada proses enkripsi.

4.1.3.4 Tampilan Form About Tampilan ini digunakan untuk memberikan penjelasan tentang perangkat lunak. ABOUT Berisikan Penjelasan Tentang Perangkat Lunak

ICON TEA

OK Gambar 4.5 Rancangan Form About

4.1.4 Perancangan Prosedural Perancangan prosedural terjadi setelah perancangan data, perancangan struktur program dan antar muka dibangun. Dalam dunia nyata, spesifikasi prosedural diperlukan untuk menetapkan detail algoritma yang akan digunakan dalam suatu bahasa ibu seperti bahasa Indonesia. Sayangnya, ada satu masalah kecil. Perancangan prosedural harus menentukan detail desain, prosedural tanpa ada ambiguitas. Oleh karena itu, untuk menghindari adanya ambiguitas pada perancangan prosedural, perancangan prosedural perangkat lunak KripTEA menggunakan algoritma dan flowchart.

Pada perangkat lunak KripTEA, terdapat dua prosedur utama, yaitu prosedur Encryption dan prosedur Descryption. Selain ketiga prosedur tersebut, masih terdapat beberapa prosedur yang mendukung proses kerja kedua prosedur utama tersebut.

80

Adapun nama prosedur-prosedur pendukung yang terdapat pada perangkat lunak KripTEA ini antara lain: Password.

Adapun algoritma dan flowchart untuk KripTEA adalah sebagai berikut :

4.1.4.1 Algoritma dan Flowchart untuk proses Enkripsi

Prosedur ini digunakan untuk melakukan proses encryption. Rincian prosesnya dipaparkan oleh algoritma berikut:

1. start. 2. input blok plaintext 64 bit. 3. partisi blok plaintext menjadi 2 sub blok 32 bit, L0 (Y) = 32 bit dan R0 (Z) = 32 bit. 4. input blok kunci enkripsi 128 bit. 5. partisi blok kunci enkripsi menjadi 4 sub blok kunci k0 = 32 bit, k1=32 bit, k2 = 32 bit dan k3 = 32 bit. 6. i = 1. 7. Tahap I enkripsi L0 = L0 + f (R0, k[0], k[1], sum) 8. Tahap II enkripsi R0 = R0 + f (L0, k[2], k[3], sum) 9. i = i - 1. 10. Periksa apakah i <= 32. 11. Jika tidak kembali ke langkah ( 7 ). 12. Jika ya, gabung ciphertext 12. Stop

Gambaran aliran proses kerja dari prosedur enkripsi dapat ditunjukkan oleh gambar 4.6 pada flowchart berikut:

81

START

BLOK PLAINTEXT = 64 BIT

PARTISI BLOK PESAN MENJADI 2 SUBBLOK

R0 ( Z) = 32 bit dan L0 (Y) = 32 bit

BLOK KUNCI = 128 BIT

PARTISI KUNCI MENJADI 4 SUBBLOK KUNCI K0 = 32 bit, K1 = 32 bit, K2 = 32 bit, K3 = 32 bit

i=1

L0 ( Y) = L0 (Y) + f (R0 (Z), k[0], k[1], sum)

R0 (Z) = R0 (Z) + f (L0 (Y), k[2], k[3], sum)

i=i-1

Tidak

i <= 32

CIPHERTEKS (Y, Z)

STOP

Gambar 4.6 Flowchart Prosedur Enkripsi

82

4.1.4.2 Algoritma dan Flowchart untuk proses Deskripsi

Prosedur ini digunakan untuk melakukan proses enkripsi. Rincian prosesnya dipaparkan oleh algoritma berikut:

1. Start 2. input blok ciphertext 64 bit. 3. partisi blok ciphertext menjadi 2 sub blok 32 bit, L0 (Y) = 32 bit dan R0 (Z) = 32 bit. 4. input blok kunci deskripsi 128 bit. 5. partisi blok kunci deskripsi menjadi 4 sub blok kunci k0 = 32 bit, k1=32 bit, k2 = 32 bit dan k3 = 32 bit. 6. i = 1. 7. Tahap I deskripsi L0 = L0 + f (R0, k[1], k[0], sum). 8. Tahap II deskripsi R0 = R0 + f (L0, k[3], k[2], sum). 9. i = i - 1. 10. Periksa apakah i <= 32. 11. Jika tidak kembali ke langkah ( 7 ). 12. Diperoleh pesan asli (plaintext) 13. Stop

Gambaran aliran proses kerja dari prosedur dekripsi dapat ditunjukkan pada gambar 4.7 berikut ini :

83

START

BLOK CIPHERTEXT = 64 BIT

PARTISI BLOK PESAN MENJADI 2 SUBBLOK

R0 (Z)= 32 bit dan L0 ( Y)= 32 bit

BLOK KUNCI = 128 BIT

PARTISI KUNCI MENJADI 4 SUBBLOK KUNCI K0 = 32 bit, K1 = 32 bit, K2 = 32 bit, K3 = 32 bit

i=1

L0 = L0 + f (R0, k[1], k[0], sum)

R0 = R0 + f (L0, k[3], k[2], sum)

i=i-1

Tidak

i <= 32

PLAINTEXT (Y, Z)

PESAN ASLI

STOP

Gambar 4.7 Flowchart Prosedur Deskripsi

84

4.2

Implementasi

Implementasi dari perangkat lunak merupakan tahap akhir dari proses pengembangan perangkat lunak setelah melalui tahapan perancangan. Agar proses implementasi dari perangkat lunak dapat bekerja secara sempurna, maka terlebih dahulu perangkat lunak tersebut harus diuji untuk mengetahui kelemahan dan kesalahan yang ada untuk kemudian dievaluasi.

Jika program dijalankan maka tampilan yang muncul adalah tampilan utama seperti berikut :

Gambar 4.8 Tampilan Layar Utama KripTEA

85

Jika user memilih menu encryption maka akan tampil form berikut :

Gambar 4.9 Tampilan Layar Encryption

86

Setelah user memilih file yang akan di enkripsi serta memasukkan password kemudian mengklik tombol encryption maka akan tampak proses encryption pada form berikut ini :

Gambar 4.10 Tampilan Layar Encryption Pada Saat Menampilkan Output Enkripsi File

87

Setelah dilakukan proses enkripsi nama file tersebut akan ditambahkan dengan ekstensi tea yang dapat terlihat pada filter data TEA untuk proses deskripsi. Pada program aplikasi ini file file input dan file output tetap tersimpan pada tempat yang sama, dalam artian bahwa meskipun telah dilakukan proses enkripsi, user juga tetap dapat memilki file aslinya.

Pada saat user memilih menu descryption akan tampil form berikut :

Gambar 4.11 Tampilan Layar Descryption

88

Setelah user memilih file yang akan di deskripsi serta memasukkan password kemudian mengklik tombol descryption maka akan tampak proses descryption pada form berikut ini :

Gambar 4.12 Tampilan Layar Descryption Pada Saat Menampilkan Output Deskripsi File

89

Terlihat bahwa file yang telah di deskripsi tampak seperti tidak menunjukkan perubahan. Oleh karena itu, apabila user ingin mengetahui jelas bahwa baik proses enkripsi ataupun proses deskripsi menunjukkan perubahan yang jelas, user dapat merename file asli atau memindahkannya ke drive atau folder yang berbeda.

Sementara pada menu About, akan ditampilkan keterangan tentang program seperti terlihat pada gambar di bawah ini :

Gambar 4.13 Tampilan Layar About .

90

BAB 5

PENUTUP

5.1 Kesimpulan

Setelah melakukan pembahasan pada setiap bab dan sub bab dalam Tugas Akhir ini, maka dapat ditarik beberapa kesimpulan yaitu:

1. Algoritma kriptografi TEA lebih aman daripada algoritma kriptografi DES. Hal ini dikarenakan jumlah round serta panjang kuncinya yang lebih panjang dan prosedur algoritma enkripsinya yang dirancang lebih kuat daripada algoritma DES serta tidak membutuhkan S-Box dan P-Box dalam proses enkripsi dan deskripsinya sehingga meminimalkan penggunaan memory dan dapat memaksimalkan proses.

2. Algoritma TEA dengan 16 cycles (32 round) sangat cocok digunakan unutk membangun sistem keamanan data yang mengandalkan kecepatan proses yang optimal. Selain itu, juga dapat digunakan algoritma TEA dengan 32 cycles (64 round) jika menginginkan tingkat keamanan yang lebih tinggi.

3. Dalam penelitian ini, nilai maksimum file plaintext yang dienkrip dibatasi dengan kapasitas hanya 10 MB, sebab dengan kapasitas file plaintext tersebut proses enkripsi masih berada pada kondisi yang relatif cepat untuk melakukan proses enkripsi.

4. Kapasitas file plaintext sama dengan kapasitas ciphertext, sehingga dapat dijadikan sebagai otentikasi data.

91

5.2 Saran Berdasarkan pengalaman dan pengetahuan yang penulis miliki, maka penulis menyarankan untuk para pembaca:

1. Dalam melakukan proses enkripsi, sebaiknya usahakan untuk tidak menggunakan kunci yang sama untuk mengenkripsi file yang berbeda. Selanjutnya, agar kinerja algoritma lebih optimal sebaikya algoritma TEA digabungkan dengan algoritma kriptografi asimetris (hybrid cryptography), dimana algoritma TEA hanya digunakan untuk proses enkripsi dan deskripsi pesan, sementara untuk pembentukan kunci digunakan algoritma asimetris agar kunci yang didistribusikan tetap aman.

2. Untuk otentikasi pesan, sebaiknya sistem ini dilengkapi dengan tanda tangan digital dan untuk kebutuhan yang meluas perlu dilakukan penelitian untuk proses enkripsi dan dekripsi pada file data dengan format lainnya, seperti untuk file image dan suara serta implementasi dapat dikembangkan pada transaksi online, internet banking, lembaga intelejen, militer serta pada alatalat telekomunikasi seperti telepon seluler, dan jaringan komunikasi nirkabel (wireless).

92

DAFTAR PUSTAKA

Ariyus, Dony. 2005. Computer Security. Yogyakarta : Andi Offset. Bishop, Matt. 2005. Introduction To Computer Security. Pearson Education, Inc. D. Wheeler and R. Needham. 1994. TEA a Tiny Encryption Algorithm. Diakses pada tanggal 15 April 2008. Tersedia di : http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm Husni. 2004. Pemrograman Database Dengan DELPHI. Yogyakarta : Graha Ilmu. Kendall & Kendall. 2003. Analisis dan Perancangan Sistem Jilid 1. Jakarta : PT. Prenhallindo. Kurniawan, Yusuf. 2004. Kriptografi Kemanan Komunikasi. Bandung : Informatika. Internet dan Jaringan

Malik, Jaja Jamaludin. 2006. Membuat Form Cantik Untuk Aplikasi Delphi. Yogyakarta : Andi Offset. Madcoms. Pemrograman Borland Delphi 7. Yogyakarta : Andi Offset

Menezes, et al. 1996. Handbook of Applied Cryptography. USA : CRC Press, Inc.

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

Oppliger, Rolf. 2005. Contemporary cryptography. USA : Artech House, Inc.

Pressman, RS. 2002. Rekayasa Perangkat Lunak Pendekatan Pratisi. Yogyakarta : Andi. Schneier, Bruce. 1996. Applied Cryptography, Second Edition : Protocol, Algorithms and Source Code in C. John Wiley and Sons, Inc. Wahana Komputer. 2003. Tips & Trik Pemrograman Delphi 7.0. Yogyakarta : Andi Offset. Vikram Reddy Andem. 2003. A Crytanalysis Of The Tiny Encryption. Diakses tanggal 9 April 2008. Tersedia di : http://www.cs.ua.edu/SecurityResearchGroup/VRAndem.pdf.

93

LAMPIRAN A: TABEL LAPORAN HASIL PENGUJIAN PROGRAM

Pengujian berikut dilakukan untuk mengetahui perbedaan estimasi waktu yang dibutuhkan untuk melakukan proses enkripsi maupun dekripsi. Adapun komputer yang dipergunakan untuk pengujian adalah : Komputer dengan processor intel pentium IV, 2.40 Ghz, RAM 512 MB

Kapasitas Plaintext 1 KB 2 KB 3 KB 4 KB 5 KB 6 KB 7 KB 8 KB 9 KB 10 KB 100 KB 200 KB 300 KB 400 KB 500 KB 600 KB 700 KB 800 KB 900 KB 1 MB 2 MB 3 MB 4 MB 5 MB . . 10 MB

Kapasitas Ciphertext 1 KB 2 KB 3 KB 4 KB 5 KB 6 KB 7 KB 8 KB 9 KB 10 KB 100 KB 200 KB 300 KB 400 KB 500 KB 600 KB 700 KB 800 KB 900 KB 1 MB 2 MB 3 MB 4 MB 5 MB . . 10 MB

Keterangan Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil . .

Estimasi Waktu (Detik) 0.001663 detik 0.001970 detik 0.002508 detik 0.002656 detik 0.002788 detik 0.002976 detik 0.003382 detik 0.003663 detik 0.003947 detik 0.004150 detik 0.040260 detik 0.076666 detik 0.128789 detik 0.175867 detik 0.200810 detik 0.228786 detik 0.290885 detik 0.336655 detik 0.347948 detik 0.421862 detik 0.750612 detik 1.228843 detik 1.781458 detik 2.442434 detik . . 4.873422 detik

Dalam penelitian ini, pengujian dibatasi hingga 10 MB, karena dengan kapasitas file tersebut proses enkripsi masih berada pada kondisi yang relatif cepat.

94

LAMPIRAN B : LISTING PROGRAM

1. Modul Utama
program KripTEA; uses Forms, fTest in 'fTest.pas' {Form1}, uTeaSet in 'uTeaSet.pas', Main in 'Main.pas' {Form2}, about in 'about.pas' {AboutBox}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm1, Form1); Application.CreateForm(TAboutBox, AboutBox); Application.Run; end.

2. Form Utama
unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, StdCtrls, Buttons, ExtCtrls; type TForm2 = class(TForm) Bevel1: TBevel; Label1: TLabel; Label2: TLabel; Bevel2: TBevel; Bevel3: TBevel; Label3: TLabel; bbENCRYPTION: TBitBtn; bbDESCRYPTION: TBitBtn; bbABOUT: TBitBtn; bbEXIT: TBitBtn; XPManifest1: TXPManifest; procedure bbENCRYPTIONClick(Sender: TObject); procedure bbDESCRYPTIONClick(Sender: TObject); procedure bbABOUTClick(Sender: TObject); procedure bbEXITClick(Sender: TObject); private { Private declarations } public

95

{ Public declarations } id : string; end; var Form2: TForm2; implementation uses fTest, about; {$R *.dfm} procedure TForm2.bbENCRYPTIONClick(Sender: TObject); begin id:='enkripsi'; Form1.ShowModal; end; procedure TForm2.bbDESCRYPTIONClick(Sender: TObject); begin id:='dekripsi'; Form1.ShowModal; end; procedure TForm2.bbABOUTClick(Sender: TObject); begin AboutBox.ShowModal; end; procedure TForm2.bbEXITClick(Sender: TObject); begin application.Terminate; end; end.

3. Unit TEASet
unit uTeaSet; interface const Delta: longword = $9e3779b9; type TLong2 = array[0.. 1] of Longword; TTeaKey = array[0..3] of Longword;

// //

64-bit = 128-bit =

8-byte 16-byte

procedure TeaEncrypt(var data: TLong2; const key: TTeaKey); procedure TeaDecrypt(var data: TLong2; const key: TTeaKey); // comparison of TTeaKey type variables function SameKey(const key1, key2: TTeaKey): boolean; // random key generation procedure RandKey(var key: TTeaKey); // key := 0

96

procedure ClearKey(var key: TTeaKey); // data := 0 procedure ClearData(var data: TTeaData); // data2 := 0 procedure ClearLong2Data(var data2: TLong2Data); // random Long2 generation procedure RandLong2(var dat: TLong2); // inc(Long2) procedure IncLong2(var dat: TLong2); // dec(Long2) procedure DecLong2(var dat: TLong2); // dat := 0 procedure ClearLong2(var dat: TLong2); // result = dat1 XOR dat2 function XORLong2(dat1, dat2: TLong2): TLong2; // Conversion routine Key <- string procedure StrToKey(const s: string; var key: TTeaKey); // Conversion routine string <- Key function KeyToStr(const key: TTeaKey): string; // Conversion routine Long2 <- string procedure StrToLong2(const s: string; var dat: TLong2); // Conversion routine string <- Long2 function Long2ToStr(const dat: TLong2): string; // Conversion routine Long2Data <- string procedure StrToLong2Data(const s: string; var dat: ExtraDim: integer); // Conversion routine string <- Long2Data function Long2DataToStr(const dat: TLong2Data): string; // Conversion routine Data <- string procedure StrToData(const s: string; var data: TTeaData); // Conversion routine string <- Data procedure DataToStr(var s: string; const data: TTeaData); // data <- File procedure LoadLong2Data(const FileName: string; var TLong2Data; var aFileSize: Int64; ExtraDim: integer); // File <- data procedure SaveLong2Data(const FileName: string; const TLong2Data; const aFileSize: Int64); // Clear and delete file function WipeFile(const FileName: string): boolean; // reads a file of longword procedure ReadData(const FileName: string; var data: TTeaData); implementation uses math, SysUtils, Classes; procedure TeaEncrypt(var data: TLong2; const key: TTeaKey); var y,z,sum: Longword; a:byte;

TLong2Data;

data2:

data2:

97

begin y:=data[0]; z:=data[1]; sum:=0; for a:=0 to 31 do begin { c code: sum += delta; y += (z << 4)+key[0] ^ z += (y << 4)+key[2] ^ } inc(sum,Delta); inc(y,((z shl 4)+key[0]) inc(z,((y shl 4)+key[2]) end; data[0]:=y; data[1]:=z end;

z+sum ^ (z >> 5)+key[1]; y+sum ^ (y >> 5)+key[3];

xor (z+sum) xor ((z shr 5)+key[1])); xor (y+sum) xor ((y shr 5)+key[3]));

procedure TeaDecrypt(var data: TLong2; const key: TTeaKey); var y,z,sum: Longword; a:byte; begin y:=data[0]; z:=data[1]; sum:=delta shl 5; for a:=0 to 31 do begin { c code: z -= (y << 4)+key[2] ^ y+sum ^ (y >> 5)+key[3]; y -= (z << 4)+key[0] ^ z+sum ^ (z >> 5)+key[1]; sum -= delta; } dec(z,((y shl 4)+key[2]) xor (y+sum) xor ((y shr 5)+key[3])); dec(y,((z shl 4)+key[0]) xor (z+sum) xor ((z shr 5)+key[1])); dec(sum,Delta); end; data[0]:=y; data[1]:=z end; // Conversion routine Long2Data <- string procedure StrToLong2Data(const s: string; ExtraDim: integer); var sa, sb: AnsiString; i, n, j: integer; ss: string; begin sa := AnsiString(s); sb := StringOfChar(' ', Length(sa) mod 8); sa := sa + sb; n := Length(sa) div 8; SetLength(dat, n + ExtraDim); SetLength(ss, 8); for i := 0 to n-1 do begin for j := 1 to 8 do ss[j] := sa[j+8*i];

var

dat:

TLong2Data;

98

StrToLong2(ss, dat[i]); end;

sa := ''; sb := ''; end; // Conversion routine string <- Long2Data function Long2DataToStr(const dat: TLong2Data): string; var s, ss: AnsiString; i: integer; begin ss := ''; for i := Low(dat) to High(dat) do begin s := Long2ToStr(dat[i]); ss := ss + s; end; result := ss; end;

procedure StrToKey(const s: string; var key: TTeaKey); var sa, sb: AnsiString; i, n: integer; begin sa := AnsiString(s); sb := StringOfChar(' ',16); n := min(Length(sa),16); for i := 1 to n do sb[i] := sa[i]; for i := 1 to 16 do TByte16(key)[i-1] := ord(sb[i]); sa := ''; sb := ''; end; function KeyToStr(const key: TTeaKey): string; var s: AnsiString; i: integer; begin SetLength(s,16); for i := 1 to 16 do begin s[i] := Chr(TByte16(key)[i-1]); end; result := s; end; procedure StrToData(const s: string; var data: TTeaData); var sa: AnsiString; i, n, m: integer; begin sa := AnsiString(s); n := Length(sa) div 4; m := Length(sa) mod 4;

99

if m <> 0 then begin inc(n); sa := sa + StringOfChar(' ',m); end; if n < 2 then // n = 1 begin n := 2; sa := sa + StringOfChar(' ',4); end; SetLength(data,n); for i := 0 to n-1 do for m := 0 to 3 do TByte4(data[i])[m] := ord(sa[i*4+m+1]); sa := ''; end; procedure DataToStr(var s: string; const data: TTeaData); var sa: AnsiString; i, n, m: integer; b: byte; begin n := Length(data); SetLength(sa,n*4); for i := 0 to n-1 do for m := 0 to 3 do begin b := TByte4(data[i])[m]; sa[i*4+m+1] := Chr(b); end; s := Trim(sa); sa := ''; end; procedure LoadLong2Data(const TLong2Data; FileName: string; var data2:

var aFileSize: Int64; ExtraDim: integer); var infile: TFileStream; L, i, j, m, dim: integer; // Int64; // buf : longword; buf : TByte8; begin L := 8; m := L; try infile := TFileStream.Create(FileName,fmOpenRead); aFileSize := infile.Size; dim :=(aFileSize+L-1) div L; SetLength(data2, dim + ExtraDim); for i := 0 to dim-1 do begin m := infile.Read(buf,L); data2[i] := TLong2(buf); end; finally

100

infile.Free; end; for j := m to L-1 do TByte8(data2[dim-1])[j] := $0; // TByte8(data2[dim-1])[j-1] := $0; if ExtraDim > 0 then for i := dim to Length(data2)-1 do ClearLong2(data2[i]); end; procedure SaveLong2Data(const TLong2Data; FileName: string; const data2:

const aFileSize: Int64); var outfile: TFileStream; L, i, m, n, dim: integer; // Int64; // buf : longword; buf : TByte8; begin L := 8; try outfile := TFileStream.Create(FileName,fmCreate); m := aFileSize mod L; if m = 0 then m := L; dim :=(aFileSize+L-1) div L; for i := 0 to dim-1 do begin buf := TByte8(data2[i]); if (i = (dim-1)) and (m <> 0) then n := m else n := L; outfile.Write(buf,n); end; finally outfile.Free; end; end; procedure ReadData(const FileName: string; var data: TTeaData); var i, n: integer; ww: longword; wwf: file of longword; begin try AssignFile(wwf,FileName); Reset(wwf); n := FileSize(wwf); SetLength(data,n); for i := 0 to n-1 do begin read(wwf,ww); data[i] := ww; end; finally CloseFile(wwf); end; end;

101

end.

4. Form Enkripsi/Deskripsi
unit fTest; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uTeaSet, StdCtrls, ComCtrls, FileCtrl, ExtCtrls, Buttons; type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; Memo1: TMemo; Label1: TLabel; EditN: TEdit; ButtonCreate: TButton; Label2: TLabel; ButtonTEAcode: TButton; ButtonTEAdec: TButton; ButtonXTeaCode: TButton; ButtonXTeaDec: TButton; Label3: TLabel; ButtonEncode: TButton; ButtonDecode: TButton; ButtonXXcode: TButton; ButtonXXdec: TButton; ButtonClear: TButton; TabSheet2: TTabSheet; ButtonEncrypt: TButton; OpenDialog1: TOpenDialog; ButtonWipeFile: TButton; EditPass: TEdit; Label4: TLabel; TabSheet3: TTabSheet; ButtonDecrypt: TButton; Label5: TLabel; Edit1: TEdit; Label6: TLabel; Bevel1: TBevel; DriveComboBox1: TDriveComboBox; DirectoryListBox1: TDirectoryListBox; Label7: TLabel; Bevel3: TBevel; FileListBox1: TFileListBox; bbEncryption: TBitBtn; bbBack: TBitBtn; FileListBox2: TFileListBox; Bevel2: TBevel; Label8: TLabel; Label9: TLabel; DirectoryListBox2: TDirectoryListBox; DriveComboBox2: TDriveComboBox;

102

Bevel4: TBevel; bbDescryption: TBitBtn; BitBtn1: TBitBtn; Label10: TLabel; Mask: TEdit; Label11: TLabel; Edit2: TEdit; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Memo2: TMemo; Memo3: TMemo; FilterComboBox1: TFilterComboBox; FilterComboBox2: TFilterComboBox; procedure FormCreate(Sender: TObject); procedure bbEncryptionClick(Sender: TObject); procedure bbDescryptionClick(Sender: TObject); procedure MaskChange(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure FormActivate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure bbBackClick(Sender: TObject); procedure FileListBox1Click(Sender: TObject); procedure FileListBox2Click(Sender: TObject); private { Private declarations } n: integer; data: TTeaData; data2: TLong2Data; MasterKey: TTeaKey; fFileSize: Int64; fFileName: string; FileSelected : TStringList; public { Public declarations } Freq, StartCount, StopCount: Int64; x : integer; TimingSeconds: real; MyStatus: TMemoryStatus; end; function GetCPUSpeed : Double; function MailGetFileSize(const FileName: String) : Int64; var Form1: TForm1;

implementation uses Main; {$R *.dfm} function GetCPUSpeed: Double; const DelayTime = 500; var TimerHi, TimerLo : DWORD;

103

PriorityClass, Priority : Integer; begin PriorityClass := GetPriorityClass(GetCurrentProcess); Priority := GetThreadPriority(GetCurrentThread); SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL); Sleep(10); asm dw 310Fh mov TimerLo, eax mov TimerHi, edx end; Sleep(DelayTime); asm dw 310Fh sub eax, TimerLo sub edx, TimerHi mov TimerLo, eax mov TimerHi, edx end; SetThreadPriority(GetCurrentThread, Priority); SetPriorityClass(GetCurrentProcess, PriorityClass); Result :=TimerLo/ (1000.0 * DelayTime); end; function MailGetFileSize(const FileName: String): Int64 ; var myFile: THandle; myFindData: TWin32FindData; begin // set default value Result := 0; // get the file handle. myFile := FindFirstFile(PChar(FileName), myFindData); if (myFile <> INVALID_HANDLE_VALUE) then begin Windows.FindClose(myFile); Int64Rec(Result).Lo := myFindData.nFileSizeLow; Int64Rec(Result).Hi := myFindData.nFileSizeHigh; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; n := 0; FileSelected := TStringList.Create; end; procedure TForm1.ButtonCreateClick(Sender: TObject); var i: integer; begin

104

ButtonClear.Click; Memo1.Lines.Add('----- MasterKey:'); RandKey(MasterKey); for i := 0 to 3 do begin Memo1.Lines.Add(IntToStr(MasterKey[i])); end; Memo1.Lines.Add(' '); n := StrToInt(EditN.Text); if n < 2 then n := 2; SetLength(data, n); Memo1.Lines.Add('----- Initial Data:'); for i := 0 to Length(data)-1 do begin data[i] := Random(2147483647); Memo1.Lines.Add(IntToStr(data[i])); end; Memo1.Lines.Add(' '); ButtonTEAcode.Enabled := (n = 2); ButtonTEAdec.Enabled := (n = 2); ButtonXTEAcode.Enabled := (n = 2); ButtonXTEAdec.Enabled := (n = 2); ButtonDecode.Enabled := (n > 1); ButtonEncode.Enabled := (n > 1); ButtonXXcode.Enabled := (n > 1); ButtonXXdec.Enabled := (n > 1); end; procedure TForm1.ButtonTEAcodeClick(Sender: TObject); var i: integer; dat: TLong2; begin dat[0] := data[0]; dat[1] := data[1]; TeaEncrypt(dat,MasterKey); data[0] := dat[0]; data[1] := dat[1]; Memo1.Lines.Add('>>>>> Encrypted Data:'); for i := 0 to Length(data)-1 do Memo1.Lines.Add(IntToStr(data[i])); end; procedure TForm1.ButtonTEAdecClick(Sender: TObject); var i: integer; dat: TLong2; begin dat[0] := data[0]; dat[1] := data[1]; TeaDecrypt(dat,MasterKey); data[0] := dat[0]; data[1] := dat[1]; Memo1.Lines.Add('<<<<< Decrypted Data:'); for i := 0 to Length(data)-1 do Memo1.Lines.Add(IntToStr(data[i])); end; procedure TForm1.ButtonEncodeClick(Sender: TObject);

105

var i: integer; begin BlockTeaEncrypt(data,MasterKey); Memo1.Lines.Add('>>>>> Encrypted Data:'); for i := 0 to Length(data)-1 do Memo1.Lines.Add(IntToStr(data[i])); end; procedure TForm1.ButtonDecodeClick(Sender: TObject); var i: integer; begin BlockTeaDecrypt(data,MasterKey); Memo1.Lines.Add('<<<<< Decrypted Data:'); for i := 0 to Length(data)-1 do Memo1.Lines.Add(IntToStr(data[i])); end; procedure TForm1.ButtonClearClick(Sender: TObject); begin Memo1.Clear; end; procedure TForm1.ButtonXXcodeClick(Sender: TObject); var i: integer; begin XXTeaEncrypt(data,MasterKey); Memo1.Lines.Add('>>>>> Encrypted Data:'); for i := 0 to Length(data)-1 do Memo1.Lines.Add(IntToStr(data[i])); end; procedure TForm1.ButtonXXdecClick(Sender: TObject); var i: integer; begin XXTeaDecrypt(data,MasterKey); Memo1.Lines.Add('<<<<< Decrypted Data:'); for i := 0 to Length(data)-1 do Memo1.Lines.Add(IntToStr(data[i])); end; procedure TForm1.ButtonXTeaCodeClick(Sender: TObject); var i: integer; dat: TLong2; begin dat[0] := data[0]; dat[1] := data[1]; XTeaEncrypt(dat,MasterKey); data[0] := dat[0]; data[1] := dat[1]; Memo1.Lines.Add('>>>>> Encrypted Data:'); for i := 0 to Length(data)-1 do Memo1.Lines.Add(IntToStr(data[i])); end; procedure TForm1.ButtonXTeaDecClick(Sender: TObject);

106

var i: integer; dat: TLong2; begin dat[0] := data[0]; dat[1] := data[1]; XTeaDecrypt(dat,MasterKey); data[0] := dat[0]; data[1] := dat[1]; Memo1.Lines.Add('<<<<< Decrypted Data:'); for i := 0 to Length(data)-1 do Memo1.Lines.Add(IntToStr(data[i])); end; procedure TForm1.ButtonEncryptClick(Sender: TObject); var i, dim, ExtraDim: integer; // Int64; s: string; temp: TLong2; dat: TLong2; begin ExtraDim := 4; OpenDialog1.InitialDir := ExtractFileDir(Application.ExeName); if OpenDialog1.Execute then begin fFileName := OpenDialog1.FileName; try LoadLong2Data(fFileName, data2, fFileSize, ExtraDim); except on E: Exception do ShowMessageFmt('Cannot load file %$ %s',[fFileName,E.Message]); end; end else begin ShowMessage('No file selected.'); exit; end; dim := Length(data2) - ExtraDim; StrToLong2('XTEA_CNT', temp); data2[dim] := temp; StrToLong2('Ver 1.00', temp); data2[dim+1] := temp; data2[dim+2] := TLong2(fFileSize); ClearLong2(temp); data2[dim+3] := temp; s := EditPass.Text; StrToKey(s, MasterKey); RandLong2(dat); // ClearLong2(dat); for i := 0 to Length(data2)-1 do begin temp := dat; XTeaEncrypt(temp,MasterKey); data2[i] := XORLong2(temp, data2[i]); IncLong2(dat); end;

107

for i := Length(fFileName) downto 1 do if fFileName[i] = '.' then begin fFileName[i] := '_'; break; end; fFileName := fFileName+'.tea'; fFileSize := 8*(dim + ExtraDim); try SaveLong2Data(fFileName, data2, fFileSize); except on E: Exception do ShowMessageFmt('Cannot save file %s',[fFileName,E.Message]); end; end;

%$

procedure TForm1.ButtonDecryptClick(Sender: TObject); var L, i: integer; // Int64; s: string; temp: TLong2; dat: TLong2; begin OpenDialog1.InitialDir := ExtractFileDir(Application.ExeName); if OpenDialog1.Execute then begin fFileName := OpenDialog1.FileName; try LoadLong2Data(OpenDialog1.FileName, data2, fFileSize, 0); except on E: Exception do ShowMessageFmt('Cannot load file %$ %s',[fFileName,E.Message]); end; end else begin ShowMessage('No file selected.'); exit; end; s := EditPass.Text; StrToKey(s, MasterKey); L := Length(data2); // dim := Length(data) - ExtraDim; dat := data2[L-1]; XTeaDecrypt(dat,MasterKey); for i := Length(data2)-2 downto 0 do begin DecLong2(dat); temp := dat; XTeaEncrypt(temp,MasterKey); data2[i] := XORLong2(temp, data2[i]); end;

fFileName := Copy(fFileName,1,Length(fFileName)-4);

108

for i := Length(fFileName) downto 1 do if fFileName[i] = '_' then begin fFileName[i] := '.'; break; end; fFileSize := Int64(data2[L-2]); try SaveLong2Data(fFileName, data2, fFileSize); except on E: Exception do ShowMessageFmt('Cannot save file %s',[fFileName,E.Message]); end; end; procedure TForm1.bbEncryptionClick(Sender: TObject); var i, dim, ExtraDim: integer; // Int64; s: string; temp: TLong2; dat: TLong2; begin if EditPass.Text<> '' then begin ExtraDim := 4; { OpenDialog1.InitialDir := ExtractFileDir(Application.ExeName); if OpenDialog1.Execute then begin fFileName := OpenDialog1.FileName; try LoadLong2Data(fFileName, data2, fFileSize, ExtraDim); except on E: Exception do ShowMessageFmt('Cannot load file %$ %s',[fFileName,E.Message]); end; end else begin ShowMessage('No file selected.'); exit; end; } fFileName := FileListBox1.FileName; if fFileName<>'' then begin try LoadLong2Data(fFileName, data2, fFileSize, ExtraDim); except on E: Exception do ShowMessageFmt('Cannot load file %$ %s',[fFileName,E.Message]); end; end else begin ShowMessage('No file selected.'); exit; end;

%$

109

QueryPerformanceFrequency(Freq); QueryPerformanceCounter(StartCount); dim := Length(data2) - ExtraDim; StrToLong2('XTEA_CNT', temp); data2[dim] := temp; StrToLong2('Ver 1.00', temp); data2[dim+1] := temp; data2[dim+2] := TLong2(fFileSize); ClearLong2(temp); data2[dim+3] := temp; s := EditPass.Text; StrToKey(s, MasterKey); RandLong2(dat); // ClearLong2(dat); for i := 0 to Length(data2)-1 do begin temp := dat; XTeaEncrypt(temp,MasterKey); data2[i] := XORLong2(temp, data2[i]); IncLong2(dat); end; for i := Length(fFileName) downto 1 do if fFileName[i] = '.' then begin fFileName[i] := '_'; break; end; fFileName := fFileName+'.tea'; fFileSize := 8*(dim + ExtraDim); try SaveLong2Data(fFileName, data2, fFileSize); except on E: Exception do ShowMessageFmt('Cannot save file %$ : %s',[fFileName,E.Message]); end; QueryPerformanceCounter(StopCount); TimingSeconds := (StopCount - StartCount) / Freq; Memo2.Lines.Add('Selesai Enkripsi '+IntToStr(FileSelected.Count)+' File.dengan waktu proses : '+floatToStr(TimingSeconds)+' detik') ; Memo2.Lines.Add('Dengan Kecepatan Prosessor : ' + Format('%f Mhz', [GetCPUSpeed])); MyStatus.dwLength:=SizeOf(MyStatus); GlobalmemoryStatus(MyStatus); with Memo2.Lines do begin Add(FloatToStr( MyStatus.dwMemoryLoad)+'% memory ram yang sedang digunakan'); Add('Jumlah physical memory = '+FloatToStr( MyStatus.dwTotalPhys/1024)+' Kb'); Add('Jumlah available physical memory = '+FloatToStr( MyStatus.dwAvailPhys/1024)+ ' Kb '); Add(FloatToStr( MyStatus.dwTotalPageFile/1024)+ ' Kb that can be stored in the paging file');

110

Add(FloatToStr( MyStatus.dwAvailPageFile/1024)+ ' Kb available in the paging file'); end; Memo2.Lines.Add('======================================'); FileListBox1.Refresh; FileListBox1.Update; end else showmessage('Password Key tidak boleh kosong !'); end; procedure TForm1.bbDescryptionClick(Sender: TObject); var L, i: integer; // Int64; s: string; temp: TLong2; dat: TLong2; begin if edit1.Text<>'' then begin { OpenDialog1.InitialDir := ExtractFileDir(Application.ExeName); if OpenDialog1.Execute then begin fFileName := OpenDialog1.FileName; try LoadLong2Data(OpenDialog1.FileName, data2, fFileSize, 0); except on E: Exception do ShowMessageFmt('Cannot load file %$ %s',[fFileName,E.Message]); end; end else begin ShowMessage('No file selected.'); exit; end; } fFileName := FileListBox2.FileName; if fFileName<>'' then begin try LoadLong2Data(fFileName, data2, fFileSize, 0); except on E: Exception do ShowMessageFmt('Cannot load file %$ %s',[fFileName,E.Message]); end; end else begin ShowMessage('No file selected.'); exit; end; QueryPerformanceFrequency(Freq); QueryPerformanceCounter(StartCount); s := Edit1.Text; StrToKey(s, MasterKey); L := Length(data2); // dim := Length(data) - ExtraDim; dat := data2[L-1];

111

XTeaDecrypt(dat,MasterKey); for i := Length(data2)-2 downto 0 do begin DecLong2(dat); temp := dat; XTeaEncrypt(temp,MasterKey); data2[i] := XORLong2(temp, data2[i]); end;

fFileName := Copy(fFileName,1,Length(fFileName)-4); for i := Length(fFileName) downto 1 do if fFileName[i] = '_' then begin fFileName[i] := '.'; break; end; fFileSize := Int64(data2[L-2]); try SaveLong2Data(fFileName, data2, fFileSize); except on E: Exception do ShowMessageFmt('Cannot save file %$ : %s',[fFileName,E.Message]); end; QueryPerformanceCounter(StopCount); TimingSeconds := (StopCount - StartCount) / Freq; Memo3.Lines.Add('Selesai Dekripsi '+IntToStr(FileSelected.Count)+' File.dengan waktu proses : '+floatToStr(TimingSeconds)+' detik') ; Memo3.Lines.Add('Dengan Kecepatan Prosessor : ' + Format('%f Mhz', [GetCPUSpeed])); MyStatus.dwLength:=SizeOf(MyStatus); GlobalmemoryStatus(MyStatus); with Memo3.Lines do begin Add(FloatToStr( MyStatus.dwMemoryLoad)+'% memory ram yang sedang digunakan'); Add('Jumlah physical memory = '+FloatToStr( MyStatus.dwTotalPhys/1024)+' Kb'); Add('Jumlah available physical memory = '+FloatToStr( MyStatus.dwAvailPhys/1024)+ ' Kb '); Add(FloatToStr( MyStatus.dwTotalPageFile/1024)+ ' Kb jumlah paging file yang dapat disimpan'); Add(FloatToStr( MyStatus.dwAvailPageFile/1024)+ ' Kb available in the paging file'); end; Memo3.Lines.Add('======================================'); FileListBox2.Refresh; FileListBox2.Update; end else showmessage('Password key tidak boleh kosong !'); end; procedure TForm1.MaskChange(Sender: TObject);

112

begin FileListBox1.Mask:=Mask.Text; end; procedure TForm1.Edit2Change(Sender: TObject); begin FileListBox2.Mask:=Edit2.Text; end; procedure TForm1.FormActivate(Sender: TObject); begin if Form2.id='enkripsi' then PageControl1.ActivePage:=TabSheet2; if Form2.id='dekripsi' then PageControl1.ActivePage:=TabSheet3;

end; procedure TForm1.BitBtn1Click(Sender: TObject); begin close; end; procedure TForm1.bbBackClick(Sender: TObject); begin close; end; procedure TForm1.FileListBox1Click(Sender: TObject); var i : integer; begin FileSelected.Clear; for i := 0 to FileListBox1.Items.Count-1 do begin if FileListBox1.Selected[i] then begin FileSelected.Add(FileListBox1.Items.Strings[i]); Label14.Caption:='File yang dipilih : ' FileListBox1.Items.Strings[i]+' '+floatToStr(MailGetFileSize(FileListBox1.FileName)/1024)+' Kb )'; end; end; Label15.Caption:=FileListBox1.FileName; end; procedure TForm1.FileListBox2Click(Sender: TObject); var i : integer; begin Label16.Caption:=FileListBox2.FileName; FileSelected.Clear; for i := 0 to FileListBox2.Items.Count-1 do begin if FileListBox2.Selected[i] then begin FileSelected.Add(FileListBox2.Items.Strings[i]);

+ (

113

Label17.Caption:='File yang dipilih : ' FileListBox2.Items.Strings[i]+' '+floatToStr(MailGetFileSize(FileListBox2.FileName)/1024)+' Kb )'; end; end; end; end.

+ (

5. Form About
unit about; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls; type TAboutBox = class(TForm) Panel1: TPanel; ProgramIcon: TImage; OKButton: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; private { Private declarations } public { Public declarations } end; var AboutBox: TAboutBox; implementation {$R *.dfm} end.

114

LAMPIRAN C : TABEL KODE ASCII

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

HEX
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37

00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100 00001101 00001110 00001111 00010000 00010001 00010010 00010011 00010100 00010101 00010110 00010111 00011000 00011001 00011010 00011011 00011100 00011101 00011110 00011111 00100000 00100001 00100010 00100011 00100100 00100101 00100110 00100111 00101000 00101001 00101010 00101011 00101100 00101101 00101110 00101111 00110000 00110001 00110010 00110011 00110100 00110101 00110110 00110111

BIN

SYMBOL
NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7

Null char Start of Heading Start of Text End of Text End of Transmission Enquiry Acknowledgment Bell Back Space Horizontal Tab Line Feed Vertical Tab Form Feed Carriage Return Shift Out / X-On Shift In / X-Off Data Line Escape Device Control 1 (oft. XON) Device Control 2 Device Control 3 (oft. XOFF) Device Control 4 Negative Acknowledgement Synchronous Idle End of Transmit Block Cancel End of Medium Substitute Escape File Separator Group Separator Record Separator Unit Separator Space Exclamation mark Double quotes (or speech marks) Number Dollar Procenttecken Ampersand Single quote Open parenthesis (or open bracket) Close parenthesis (or close bracket) Asterisk Plus Comma Hyphen Period, dot or full stop Slash or divide Zero One Two Three Four Five Six Seven

DESCRYPTION

115

56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75

00111000 00111001 00111010 00111011 00111100 00111101 00111110 00111111 01000000 01000001 01000010 01000011 01000100 01000101 01000110 01000111 01001000 01001001 01001010 01001011 01001100 01001101 01001110 01001111 01010000 01010001 01010010 01010011 01010100 01010101 01010110 01010111 01011000 01011001 01011010 01011011 01011100 01011101 01011110 01011111 01100000 01100001 01100010 01100011 01100100 01100101 01100110 01100111 01101000 01101001 01101010 01101011 01101100 01101101 01101110 01101111 01110000 01110001 01110010 01110011 01110100 01110101

8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u

Eight Nine Colon Semicolon Less than (or open angled bracket) Equals Greater than (or close angled bracket) Question mark At symbol Uppercase A Uppercase B Uppercase C Uppercase D Uppercase E Uppercase F Uppercase G Uppercase H Uppercase I Uppercase J Uppercase K Uppercase L Uppercase M Uppercase N Uppercase O Uppercase P Uppercase Q Uppercase R Uppercase S Uppercase T Uppercase U Uppercase V Uppercase W Uppercase X Uppercase Y Uppercase Z Opening bracket Backslash Closing bracket Caret - circumflex Underscore Grave accent Lowercase a Lowercase b Lowercase c Lowercase d Lowercase e Lowercase f Lowercase g Lowercase h Lowercase i Lowercase j Lowercase k Lowercase l Lowercase m Lowercase n Lowercase o Lowercase p Lowercase q Lowercase r Lowercase s Lowercase t Lowercase u

116

118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179

76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3

01110110 01110111 01111000 01111001 01111010 01111011 01111100 01111101 01111110 01111111 10000000 10000001 10000010 10000011 10000100 10000101 10000110 10000111 10001000 10001001 10001010 10001011 10001100 10001101 10001110 10001111 10010000 10010001 10010010 10010011 10010100 10010101 10010110 10010111 10011000 10011001 10011010 10011011 10011100 10011101 10011110 10011111 10100000 10100001 10100010 10100011 10100100 10100101 10100110 10100111 10101000 10101001 10101010 10101011 10101100 10101101 10101110 10101111 10110000 10110001 10110010 10110011

v w x y z { | } ~

Lowercase v Lowercase w Lowercase x Lowercase y Lowercase z Opening brace Vertical bar Closing brace Equivalency sign - tilde Delete Euro sign Single low-9 quotation mark Latin small letter f with hook Double low-9 quotation mark Horizontal ellipsis Dagger Double dagger Modifier letter circumflex accent Per mille sign Latin capital letter S with caron Single left-pointing angle quotation Latin capital ligature OE Latin captial letter Z with caron Left single quotation mark Right single quotation mark Left double quotation mark Right double quotation mark Bullet En dash Em dash Small tilde Trade mark sign Latin small letter S with caron Single right-pointing angle quotation mark Latin small ligature oe Latin small letter z with caron Latin capital letter Y with diaeresis Non-breaking space Inverted exclamation mark Cent sign Pound sign Currency sign Yen sign Pipe, Broken vertical bar Section sign Spacing diaeresis - umlaut Copyright sign Feminine ordinal indicator Left double angle quotes Not sign Soft hyphen Registered trade mark sign Spacing macron - overline Degree sign Plus-or-minus sign Superscript two - squared Superscript three - cubed

117

180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241

B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1

10110100 10110101 10110110 10110111 10111000 10111001 10111010 10111011 10111100 10111101 10111110 10111111 11000000 11000001 11000010 11000011 11000100 11000101 11000110 11000111 11001000 11001001 11001010 11001011 11001100 11001101 11001110 11001111 11010000 11010001 11010010 11010011 11010100 11010101 11010110 11010111 11011000 11011001 11011010 11011011 11011100 11011101 11011110 11011111 11100000 11100001 11100010 11100011 11100100 11100101 11100110 11100111 11101000 11101001 11101010 11101011 11101100 11101101 11101110 11101111 11110000 11110001

Acute accent - spacing acute Micro sign Pilcrow sign - paragraph sign Middle dot - Georgian comma Spacing cedilla Superscript one Masculine ordinal indicator Right double angle quotes Fraction one quarter Fraction one half Fraction three quarters Inverted question mark Latin capital letter A with grave Latin capital letter A with acute Latin capital letter A with circumflex Latin capital letter A with tilde Latin capital letter A with diaeresis Latin capital letter A with ring above Latin capital letter AE Latin capital letter C with cedilla Latin capital letter E with grave Latin capital letter E with acute Latin capital letter E with circumflex Latin capital letter E with diaeresis Latin capital letter I with grave Latin capital letter I with acute Latin capital letter I with circumflex Latin capital letter I with diaeresis Latin capital letter ETH Latin capital letter N with tilde Latin capital letter O with grave Latin capital letter O with acute Latin capital letter O with circumflex Latin capital letter O with tilde Latin capital letter O with diaeresis Multiplication sign Latin capital letter O with slash Latin capital letter U with grave Latin capital letter U with acute Latin capital letter U with circumflex Latin capital letter U with diaeresis Latin capital letter Y with acute Latin capital letter THORN Latin small letter sharp s - ess-zed Latin small letter a with grave Latin small letter a with acute Latin small letter a with circumflex Latin small letter a with tilde Latin small letter a with diaeresis Latin small letter a with ring above Latin small letter ae Latin small letter c with cedilla Latin small letter e with grave Latin small letter e with acute Latin small letter e with circumflex Latin small letter e with diaeresis Latin small letter i with grave Latin small letter i with acute Latin small letter i with circumflex Latin small letter i with diaeresis Latin small letter eth Latin small letter n with tilde

118

242 243 244 245 246 247 248 249 250 251 252 253 254 255

F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

11110010 11110011 11110100 11110101 11110110 11110111 11111000 11111001 11111010 11111011 11111100 11111101 11111110 11111111

Latin small letter o with grave Latin small letter o with acute Latin small letter o with circumflex Latin small letter o with tilde Latin small letter o with diaeresis Division sign Latin small letter o with slash Latin small letter u with grave Latin small letter u with acute Latin small letter u with circumflex Latin small letter u with diaeresis Latin small letter y with acute Latin small letter thorn Latin small letter y with diaeresis

You might also like