Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish

(1)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

STUDI ENKRIPSI DAN DEKRIPSI FILE DENGAN

MENGGUNAKAN ALGORITMA TWOFISH

SKRIPSI

SETI FAUZIAH TUMANGGOR

060823007

PROGRAM STUDI SARJANA MATEMATIKA

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2009


(2)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

STUDI ENKRIPSI DAN DEKRIPSI FILE DENGAN MENGGUNAKAN ALGORITMA TWOFISH

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

SETI FAUZIAH TUMANGGOR 060823007

PROGRAM STUDI SARJANA MATEMATIKA DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2009


(3)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

STUDI ENKRIPSI DAN DEKRIPSI FILE DENGAN

MENGGUNAKAN ALGORITMA TWOFISH

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

SETI FAUZIAH TUMANGGOR

060823007

PROGRAM STUDI SARJANA MATEMATIKA

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2009


(4)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

PERSETUJUAN

Judul : STUDI ENKRIPSI DAN DEKRIPSI FILE DENGAN

MENGGUNAKAN ALGORITMA TWOFISH

Kategori : SKRIPSI

Nama : SETI FAUZIAH TUMANGGOR

Nomor Induk Mahasiswaa : 060823007

Program Studi : SARJANA (S1) MATEMATIKA

Departemen : MATEMATIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Medan, Februari 2009

Komisi Pembimbing :

Pembimbing 2, Pembimbing1,

Drs. Marwan Harahap, M.Eng. Syahriol Sitorus, S.Si, M.IT.

NIP. 130422437 NIP. 132174687

Diketahui/Disetujui oleh

Departemen Matematika FMIPA USU Ketua,

Dr. Saib Suwilo, M.Sc. NIP. 131796149


(5)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

PERNYATAAN

STUDI ENKRIPSI DAN DEKRIPSI FILE DENGAN MENGGUNAKAN ALGORITMA TWOFISH

SKRIPSI

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

Medan, Februari 2009

Seti Fauziah Tumanggor 060823007


(6)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

PENGHARGAAN

Puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpahan rahmat dan karunia-Nya skripsi ini berhasil diselesaikan dalam waktu yang telah direncanakan.

Ucapan terima kasih saya sampaikan kepada Bapak Drs. Marwan Harahap, M.Eng, dan Bapak Syahriol Sitorus, S.Si, M.IT. selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan dan penuh kepercayaan kepada saya untuk menyempurnakan skripsi ini. Panduan ringkas, padat dan profesional telah diberikan kepada saya agar penulis dapat menyelesaikan tugas ini. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Dr. Saib Suwilo, M.Sc. dan Bapak Drs. Henri Rani Sitepu, M.Si., Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen pada Departemen Matematika FMIPA USU, pegawai di FMIPA USU, dan rekan-rekan kuliah. Akhirnya, tidak terlupakan kepada bapak, ibu dan semua ahli keluarga yang selama ini memberikan bantuan dan dorongan yang diperlukan. Semoga Tuhan Yang Maha Esa membalasnya.


(7)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

ABSTRAK

Sistem keamanan data dan kerahasiaan data merupakan salah satu aspek penting dalam perkembangan dunia komunikasi, khususnya komunikasi yang menggunakan komputer dan terhubung dengan jaringan. Dalam tugas akhir ini akan dibahas algoritma Twofish untuk mengenkripsi dan dekripsi file, dan implementasinya dengan menggunakan bahasa pemrograman Visual Basic 6.0, serta waktu yang dibutuhkan selama proses dekripsi file.


(8)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

ABSTRACT

System of data security and data secret are one of important aspect in growth of world communication, specially communication using computer and incircuit with network. In this final duty will be studied Twofish Algorithm for encrypting and decrypting of file, and the implementation using by Visual Basic 6.0 language program, and time required during the process of decryption file.


(9)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan 1

1.1Latar Belakang 1

1.2Perumusan Masalah 2

1.3Pembatasan Masalah 3

1.4Tujuan Penelitian 3

1.5Kontribusi Penelitian 3

1.6Tinjauan Pustaka 3

1.7Metode Penelitian 5

Bab 2 Landasan Teori 6

2.1 Teori Dasar Kriptografi 6

2.2 Algoritma Kriptografi 7

2.3 Tekhnik Kriptografi 10

2.3.1 Algoritma Simetrik 10

2.3.2Algoritma Asimetrik 11

2.4 Kriptografi Block Cipher 12

2.4.1 Cipher Berulang 12

2.4.2 Feistel Cipher 13

2.4.3 Padding 13

2.4.4 Ekspansi 14

2.4.5 Kompresi 14

2.6 Kunci Lemah dan Kunci Setengah Lemah 14

2.5 Twofish 14

2.5.1 Tujuan Desain Twofish 15

2.5.2 Blok Pembangun Twofish 16

2.5.3 Algoritma Twofish 20

2.7 Keamanan Twofish 23

Bab 3 Pembahasan 24

3.1 Analisa Masukan 24

3.2 Analisa Kebutuhan Perangkat Keras dan Perangkat Lunak 24


(10)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

3.4 Analisa Prosedural 25

3.4.1 Pembangkitan Kunci 25

3.4.2 Pembagian Plainteks 39

3.4.3 Proses Subtitusi 30

3.5 Perancangan Flowchart 31

3.6 Implementasi 32

3.7 Percobaan Enkripsi dan Dekripsi 34

3.8 Twofish Untuk Integritas Data 35

Bab 4 Kesimpulan dan Saran 38

4.1 Kesimpulan 38

4.2 Saran 38

Daftar Pustaka Lampiran


(11)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

DAFTAR TABEL

Halaman


(12)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

DAFTAR GAMBAR

Halaman

Gambar 2.1 Proses Enkripsi 7

Gambar 2.2 Proses Dekripsi 8

Gambar 2.3 Diagram proses enkripsi dan dekripsi algoritma simetris 10 Gambar 2.4 Diagram proses enkripsi dan dekripsi algoritma asimetris 11

Gambar 2.5 Struktur Algoritma Twofish 20

Gambar 3.1 Flowchart Aplikasi Enkripsi/Dekripsi Algoritma Twofish 31

Gambar 3.2 Form Tab Enkripsi 32

Gambar 3.3 Hasil Enkripsi 33

Gambar 3.4 Form Tab Dekripsi 33


(13)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

BAB 1

PENDAHULUAN

1.1Latar Belakang

Pada zaman sekarang ini, menjaga kerahasiaan informasi merupakan hal yang sangat penting. Sebagai contoh bagi perusahaan besar, penyimpanan dokumen serta data– data penting adalah kewajiban yang mesti dilakukan. Penyalahgunaan data–data rahasia perusahaan tersebut oleh pihak tertentu tentunya bisa saja menimbulkan kerugian yang sangat besar pada perusahaan tersebut. Contoh lainnya adalah komunikasi suara lewat jaringan internet. Kemungkinan pihak lain untuk mencuri informasi yang disampaikan lewat komunikasi elektronik tersebut sangat besar mengingat belum adanya sekuritas khusus terhadap aplikasi tersebut. Karenanya, salah satu alternatif yang dapat digunakan untuk menjaga kerahasiaan informasi tersebut adalah dengan menyamarkannya menjadi bentuk tersandi yang tidak bermakna. Hal tersebut dapat dilakukan dalam kriptografi.

Kriptografi merupakan salah satu metode pengamanan data yang dapat digunakan untuk menjaga kerahasiaan data, keaslian data serta keaslian pengirim. Metode ini bertujuan agar informasi yang bersifat rahasia yang dikirim melalui telekomunikasi umum seperti LAN atau internet, tidak dapat diketahui atau dimanfaatkan oleh orang yang tidak berkepentingan atau yang tidak berhak menerimanya. Kriptografi biasanya dalam bentuk enkripsi. Proses enkripsi merupakan proses untuk meng-encode dalam bentuk yang hanya dapat dibaca oleh sistem yang mempunyai kunci untuk membaca data tersebut. Proses enkripsi dapat dengan


(14)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

menggunakan software atau hardware. Hasil enkripsi tersebut cipher. Cipher kemudian didekripsi dengan device dan kunci yang sama tipenya (sama softwarenya serta sama kuncinya).

Dengan kriptografi terdapat berbagai macam sistem sandi yang tujuan penggunaan dan tingkat kerahasiaannya berbeda sesuai dengan permintaan user, tetapi dalam prakteknya user menginginkan kemudahan-kemudahan seperti: kerahasiaan data, kecepatan maupun biaya yang murah. Hal ini merupakan kendala dalam membuat suatu sistem kriptografi.

Kenyataan dalam proses pengamanan data dengan metode kriptografi sering kali dibutuhkan waktu yang relatif lama dibandingkan tanpa menggunakan metode kriptografi. Oleh karena itu, diusahakan membuat sistem yang sandi yang lebih cepat dalam kriptografi tanpa mengabaikan kaidah kerahasiaan yang ingin dicapai dan hanya membutuhkan biaya yang murah.

Kriptografi amat luas penggunaannya, oleh karena itulah, pada tahun 1972 dan 1974, National of Standart (sekarang bernama NIST) mengumumkan adanya standar enkripsi, yaitu DES (Data Encryption Standard). Dalam proses perkembangannya ternyata kunci dalam DES dirasa terlalu pendek bagi keamanan komersial akhirnya, NIST mengumumkan AES (Advanced Encryption Standard) pada tahun 1997. Salah satu kandidat AES adalah Twofish. Hal ini disebabkan Twofish memenuhi semua kriteria yang dibutuhkan NIST, yaitu 128-bit block, 128 bit, 192 bit dan 256 bit key (kata kunci), efisien pada platform manapun dan lain-lain, serta beberapa desain berat lainnya.

1.2PERUMUSAN MASALAH

Twofish merupakan algoritma yang beroperasi dalam mode blok. Algoritma Twofish sendiri merupakan pengembangan dari algoritma Blowfish. Adapun perumusan masalahnya yaitu: mengaplikasikan metode enkripsi dan dekripsi file dengan


(15)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

menggunakan algoritma twofish agar kriptanalisis sulit memecahkan ciphertextnya sehingga keamanan data tetap terjaga keasliannya.

1.3PEMBATASAN MASALAH

Pada penelitian ini, masalah dibatasi pada pengaplikasian metode enkripsi dan dekripsi file dengan menggunakan algoritma twofish. File yang dapat diproses adalah file-file yang ada pada Microsoft office, file berektensi jpg, pdf. Serta melihat sejauh mana kecepatan enkripsi dan dekripsi dalam algoritma Twofish.

1.4TUJUAN PENELITIAN

Skripsi ini bertujuan untuk mengaplikasikan metode enkripsi dan dekripsi file dengan menggunakan algoritma Twofish.

1.5KONTRIBUSI PENELITIAN

Bermanfaat untuk mengamankan informasi yang dapat di aplikasikan pada kebutuhan enkripsi dan pengamanan data. Sebagai contoh kriptografi dapat digunakan dalam jaringan komputer, aplikasi bisnis, internet, dan lain sebagainya yang membutuhkan keamanan informasi.

1.6TINJAUAN PUSTAKA

Kriptografi berasal dari bahasa Yunani. Menurt bahasa tersebut kata kriptografi dibagi menjadi dua, yaitu kripto dan graphia. Kripto berarti secret (rahasia) dan graphia berarti writing (tulisan). Menurut terminologinya kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang


(16)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

lain. Dalam perkembangannya kriptografi juga digunakan untuk mengidentifikasi pengiriman pesan dengan tanda tangan digital dan keaslian pesan dengan sidik jari digital. [2]

Algoritma adalah urutan langkah-langkah logis untuk menyelesaikan masalah yang disusun secara sistematis. Algoritma kriptografi merupakan langkah-langkah logis bagaimana menyembunyikan pesan dari orang-orang yang tidak berhak atas pesan tersebut. [3]

Kriptografi adalah suatu ilmu untuk menjaga kerahasiaan data. [5]

Lingkup keamanan data dari suatu sistem komputer mencakup hal-hal yang tidak saja berkaitan dengan :

1. Keamanan fisik

Komputer harus diletakkan pada tempat yang dapat dikontrol, karena kemungkinan penyalahgunaan dapat terjadi (user yang tidak disiplin meninggalkan komputer dalam keadaan hidup sehingga orang tidak berhak dapat menggunakan fasilitas komputer tersebut).

2. Keamanan akses

Seluruh akses terhadap sistem komputer secara administrasi harus dikontrol dan terdokumentasi, sehingga apabila ada suatu permasalahan dapat diketahui penyebabnya dan mencari solusi/pemecahannya.

3. Keamanan file adau data

Untuk file/data yang sensitif dan bersifat rahasia, diperlukan tingkat akses dan bahkan dapat dibuatkan suatu kode tertentu sehingga apabila ada file/data tersebut dicuri, isi informasinya tidak mudah didapat.

4. Keamanan jaringan

Dengan pemanfaatan jaringan publik, data yang ditransmisikan dalam jaringan harus aman dari kemungkinan dapat diketahui isi informasinya sehingga untuk informasi yang sensitif harus dibuatkan kode sandi tertentu untuk pengamanannya pada saat transmisi. [1]


(17)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

sebagai aspek-aspek keamanan yaitu: Kerahasiaan (confidentiality), Integritas Data (Data Integrity), Otentikasi (Authentication) dan Nirpenyangkalan (non-repudiation). [6]

Pesan atau informasi yang dapat dibaca disebut sebagai plaintext. Teknik untuk membuat pesan menjadi tidak dapat dibaca disebut sebagai enkripsi. Pesan yang tidak dapat dibaca tersebut disebut ciphertext. Proses yang merupakan kebalikan dari enkripsi disebut dekripsi. Jadi dekripsi akan membuat ciphertext menjadi plaintext. [8]

Twofish merupakan algoritma yang beroperasi dalam mode blok. Algoritma Twofish sendiri merupakan pengembangan dari algoritma blowfish. Perancangan dilakukan dengan memperhatikan kriteria-kriteria yang diajukan National Institute of Standards and Technology (NIST) untuk kompetisi Advanced Encryption Standard (AES). [4]

1.7METODE PENELITIAN

Dalam penyusunan skripsi ini, penulis menggunakan tahapan sebagai berikut: 1. Membahas karakteristik dan cara kerja algoritma enkripsi dengan metode twofish

dalam enkripsi dan dekripsi file.

2. Mengimplementasikan algoritma twofish ke dalam bahasa pemrograman dengan menggunakan bahasa pemrograman Visual Basic 6.0.

3. Menguji kinerja dari aplikasi yang telah di rancang, dengan mengenkripsi dan dekripsi berbagai sumber data.


(18)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

BAB 2

LANDASAN TEORI

2.1 Teori Dasar Kriptografi

Kriptografi berasal dari bahasa Yunani, crypto dan graphia. Crypto berarti secret (rahasia) dan graphia berarti writing (tulisan). Jadi kriptografi berarti secret writing (tulisan rahasia). Menurut terminologinya, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ketempat lain. Kriptografi pada dasarnya sudah dikenal sejak lama. Menurut catatan sejarah, kriptografi sudah digunakan oleh bangsa Mesir sejak 4000 tahun yang lalu oleh raja-raja Mesir pada saat perang untuk mengirimkan pesan rahasia kepada panglima perangnya melalui kurir-kurinya. Orang yang melakukan penyandian ini disebut

kriptografer, sedangkan orang yang mendalami ilmu dan seni dalam membuka atau

memecahkan suatu algoritma kriptografi tanpa harus mengetahui kuncinya disebut

kriptanalis.

Ada empat tujuan mendasar dari ilmu kriptografi, yaitu :

1. Kerahasiaan (Confidentiality), yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak


(19)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

penerima/pihak-pihak memiliki ijin). Layanan ini direalisasikan dengan menyandikan pesan menjadi cipherteks.

2. Integritas data (data integrity), 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 menyangkut penyisipan, penghapusan, dan pensubtitusian data lain ke dalam data yang sebenarnya.

3. Otentikasi (authentication) yaitu layanan yang berhubungan dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi.

4. Nirpenyangkalan (non-repudiation), yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya).

2.2 Algoritma Kriptografi

Ditinjau dari asal usulnya, kata algoritma mempunyai sejarah yang menarik. Kata ini muncul di dalam kamus Webster sampai akhir tahun 1975. Kata algorism mempunyai arti proses perhitungan dalam bahasa Arab. Algoritma berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad Ibnu Musa al-Khuwarizmi (al-Khuwarizmi dibaca oleh orang barat sebagai algorism). Kata algorism lambat laun berubahmenjadi algorithm.

Defenisi terminologi algoritma adalah urutan langkah-langkah logis untuk menyelesaikan masalah yang disusun secara matematis. Algoritma kriptografi merupakan langkah-langkah logis bagaimana menyembunyikan pesan dari orang-orang yang tidak berhak atas pesan tersebut.


(20)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

1. Enkripsi: proses menyandikan plainteks menjadi cipherteks. Dimana plainteks

disebut dengan pesan asli (pesan yang ingin dikirim), sedangkan cipherteks adalah pesan ter-enkrip (tersandi) yang merupakan hasil enkripsi.

Enkripsi

Plaintext Ciphertext

Gambar 2.1 Proses Enkripsi

2. Dekripsi: adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext,

sehingga berupa data awal/asli.

Deskripsi Plaintext

Ciphertext

Gambar 2.2 Proses Dekripsi

3. Kunci: yang dimaksud disini adalah kunci yang dipakai untuk melakukan enkripsi dan

dekripsi. Kunci terbagi menjadi dua bagian, kunci rahasia (private key) dan kunci umum (public key).

Sebelum membahas lebih jauh, berikut ini diberikan beberapa istilah yang umum digunakan dalam pembahasan kriptografi:

a. Pesan, Plainteks dan Cipherteks

Pesan (message) adalah data atau informasi yang dapat dibaca dan

dimengerti maknanya. Nama lain untuk pesan adalah plainteks (plaintext) atau teks-jelas (cleartext). Bentuk pesan yang tersandi disebut cipherteks (chipertext) atau kriptogram (cryptogram). Cipherteks harus dapat ditransformasikan kembali menjadi plainteks semula agar pesan yang diterima bisa dibaca.

b. Pengirim dan Penerima

Komunikasi data melibatkan pertukaran pesan antara 2 (dua) entitas.


(21)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

lainnya. Penerima (receiver) adalah entitas yang menerima pesan. Entitas di sini dapat berupa orang, mesin (komputer), kartu kredit dan sebagainya.

c. Enkripsi dan Dekripsi

Proses penyandian plainteks menjadi cipherteks disebut enkripsi (encryption) atau enciphering (standard nama menurut ISO 7498-2). Sedangkan proses mengembalikan cipherteks menjadi plainteks semula dinamakan dekripsi (decryption) atau deciphering (standard nama menurut ISO 7498-2).

d. Cipher dan Kunci

Algoritma kriptografi disebut juga cipher, yaitu aturan untuk enciphering dan deciphering atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk

enciphering dan deciphering.

konsep matematis yang mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu yang berisi elemenen plaintext dan yang berisi elemen chipertext. Enkripsi dan dekripsi merupakan fungsi transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen plaintext dinotasika dengan P, elemen-lemen chipertext dinotasikan dengan notasi D, maka secara matematis proses kriptografi dapat dinyatakan sebagai berikut :

Enkripsi : E(P)=C Dekripsi : D(C)=P

Pada skema enkripsi konvensional atau symentric-key, digunakan sebuah kunci untuk melakukan proses enkripsi dan dekripsinya. Kunci tersebut dinotasikan dengan K. Sehingga proses kriptografinya adalah sebagai berikut:

Enkripsi : EK(P)=C


(22)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Sedangkan pada sistem asymentric-key digunakan kunci umum (public

key) untuk enkripsi dan kunci pribadi (private key) untuk proses dekripsinya.

Sehingga kedua proses tersebut dinyatakan dengan : Enkripsi :EPK (P)=C

Dekripsi : DSK (C)=P atau DSK (EPK (P))=P

e. Sistem Kriptografi

Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi.

Sistem Kriptografi (cryptosystem) adalah kumpulan yang terdiri dari

algoritma kriptografi, semua plainteks dan cipherteks yang mungkin dan kunci. Di dalam sistem kriptografi, cipher hanyalah salah satu komponen saja.

f. Penyadap

Penyadap (eavesdropper) adalah orang yang mencoba menangkap pesan

selama ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi sebanyak-banyaknya mengenai sistem kriptografi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan cipherteks.

g. Kriptanalisis dan Kriptologi

Kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan

cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelakunya 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. Kriptologi (cryptologi) adalah studi mengenai kriptografi dan kriptanalisis.


(23)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Pada umumnya terdapat dua teknik yang digunakan dalam kriptografi, yakni: kunci simetris dan kunci asimetris (public-key).

2.3.1 Algoritma Kunci Simetris

Algoritma simetris (symmetric algorithm) adalah suatu algoritma dimana kunci enkripsi yang digunakan sama dengan kunci dekripsi sehingga algoritma ini disebut juga sebagai

single-key algorithm.

Gambar 2.3 Diagram proses enkripsi dan dekripsi algoritma simetris

Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih suatu suatu kunci tertentu yang sama untuk dipakai bersama, dan kunci ini haruslah rahasia bagi pihak yang tidak berkepentingan sehingga algoritma ini disebut juga algoritma kunci rahasia (secret-key algorithm).

Kelebihan :

• Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritma asimetrik. • Karena kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem

real-time.

Kelemahan :

• Untuk tiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan kunci yang berbeda juga, sehingga akan terjadi kesulitan dalam manajemen kunci tersebut.

Permasalahan dalam pengiriman kunci itu sendiri yang disebut “key

distribution problem”.

Contoh algoritma : TwoFish, Rijndael, Camellia


(24)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Algoritma asimetris (asymmetric algorithm) adalah suatu algoritma dimana kunci enkripsi yang digunakan tidak sama dengan kunci dekripsi. Pada algoritma ini menggunakan dua kunci yakni kunci publik (public key) dan kunci privat (private key). Kunci publik disebarkan secara umum sedangkan kunci privat disimpan secara rahasia oleh si pengguna. Walau kunci publik telah diketahui namun akan sangat sukar mengetahui kunci privat yang digunakan.

Gambar 2.4 Diagram proses enkripsi dan dekripsi algoritma asimetris

Pada umumnya kunci publik (public key) digunakan sebagai kunci enkripsi sementara kunci privat (private key) digunakan sebagai kunci dekripsi.

Kelebihan :

• Masalah keamanan pada distribusi kunci dapat lebih baik.

• Masalah manajemen kunci yang lebih baik karena jumlah kunci yang lebih sedikit.

Kelemahan :

• Kecepatan yang lebih rendah bila dibandingkan dengan algoritma simetris. • Untuk tingkat keamanan sama, kunci yang digunakan lebih

panjang dibandingkan dengan algoritma simetris. Contoh algoritma : RSA, DSA, ElGamal

2.4 Kriptografi Block Cipher

Block cipher merupakan sebuah fungsi yang memetakan n-bit blok plaintext ke n-bit blok ciphertext, dengan n adalah panjang blok. Blok cipher umumnya memproses plaintext ke dalam blok-blok yang cukup besar (≥ 64).


(25)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

2.4.1 Cipher Berulang

Pada teknik cipher berulang (iterated cipher), blok plaintext mengalami pengulangan fungsi transformasi beberapa kali untuk mendapatkan blok ciphertext. Fungsi transformasi pada umumnya merupakan gabungan proses subtitusi, permutasi, kompresi, atau ekspansi terhadap blok plaintext. Sebuah kunci pada setiap putaran akan dikombinasikan dengan plaintext. Parameter dalam cipher ini adalah jumlah putaran r, besar blok n dan besar kunci k. Sub-kunci Ki pada setiap putaran diperoleh dari penurunan kunci input K.

2.4.2 Feistel Cipher

Feistel cipher beroperasi terhadap panjang blok data tetap sepanjang n (genap),

kemudian membagi 2 blok tersebut dengan panjang masing-masing n/2, yang dinotasikan dengan L dan R. Feistel cipher menerapkan metode cipher berulang dengan masukan pada putaran ke-I yang didapat dari keluaran sebelumnya, yang secara matematis dapat dinyatakan sebagai berikut :

Li=Ri-1

Ri=Li-1 ⊕ f(Ri-1,Ki); i=1,2,3,…,r

Ki adalah kunci untuk putaran ke-i dan f adalah fungsi transformasi.

Blok plaintext adalah gabungan L dan R awal atau secara formal plaintext dinyatakan dengan (Lo, Ro). Sedangkan blok ciphertext didapatkan dari L dan R hasil putaran terakhir setelah terlebih dahulu dipertukarkan atau dinyatakan dengan (Rr,

Lr).


(26)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Padding pada blok terakhir bisa dilakukan dengan berbagai macam cara,misalnya

penambahan bit-bit tertentu. Salah satu contoh penerapan padding dengan cara menambahkan jumlah total padding sebagai byte terakhir pada blok terakhir plaintext. Misal panjang blok adalah 128 bit (16 byte), dan pada blok terakhir terdiri dari 88 bit(11 byte). Sehingga jumlah padding yang diperlukan adalah 5 byte, yaitu dengan menambahkan angka nol sebanyak 4 byte,kemudian menambahkan angka 5 sebanyak satu byte. Cara lain dapat menggunakan karakter end-of-file pada byte terakhir lalu diberi padding setelahnya.

2.4.4 Ekspansi

Teknik ini memperbanyak jumlah bit pada blok plainteks berdasarkan aturan tertentu, misalnya dari 32 bit menjadi 48 bit. Dalam praktek, aturan eskpansi dinyatakan dengan tabel.

2.4.5 Kompresi

Teknik ini kebalikan dari ekspansi, di mana jumlah bit pada blok plainteks diciutkan berdasarkan aturan tertentu. Dalam praktek, aturan kompresi dinyatakan dengan tabel.

2.5 Kunci Lemah dan Kunci Setengah Lemah

Dalam kriptografi dikenal istilah kunci lemah (weak-key) dan kunci setengah lemah (semi weak-key). Kunci lemah adalah kunci yang apabila mengenkripsi suatu plaintext kemudian dienkripsi lagi menggunakan kunci yang sama, maka ciphertextnya adalah


(27)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

plaintext itu sendiri. Sedangkan yang disebut dengan kunci setengah lemah adalah sepasang kunci yang memiliki sifat jika sebuah plaintext dienkripsi dengan suatu kunci, akan dapat dienkripsi dengan kunci yang lain.

2.6 Twofish

Pada tahun 1972 dan 1974, US the National Bureau of Standards (sekarang bernama the National Institute of Standards and Technology, atau NIST) mengeluarkan publikasi pertama untuk sebuah standar enkripsi, yang menghasilkan algoritma data Encryption Standard (DES), yang tidak dapat disangkal sebagai algoritma kriptografi yang sangat terkenal dan sangat berhasil.

Disamping kepopulerannya, DES sering diserang dengan berbagai kontroversi. Beberapa orang kriptografer mempertanyakan desain algoritma DES yang mengimplementasikan kunci dan ukuran blok yang terlalu kecil. Dengan berkembangnya pengetahuan tentang kunci terdistribusi akhir-akhir ini, tidak ada keraguan bahwa DES memang memiliki ukuran blok dan kunci yang tidak sesuai dengan kebutuhan masyarakat saat ini.

Triple-DES ditawarkan untuk menjawab pertanyaan diatas, dan memang merupakan solusi sementara dari permaslahan diatas. TDES telah diadopsi oleh banyak sekali aplikasi yang membutuhkan tingkat keamanan tinggi seperti perbankan namun algoritma TDES dirasakan sangat lamban, apalagi dengan hardware pada saat itu.

Merespon kebutuhan masyarakat untuk pengganti DES, NIST mengeluarkan semacam sayembara bernamakan program Advanced Encryption Standard (AES) pada tahun 1997. Sebuah sayembara untuk para kriptografer dunia untuk merancang algoritma kriptografi baru sebagai calon pengganti DES. NIST mengumumkan syarat-syarat minimum yang harus dimiliki algoritma baru tersebut.


(28)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Cara penilaian untuk menentukan algoritma terbaik yaitu dengan cara algoritma yang masuk dipublikasikan ke umum, dan dengan mendengar tanggapan masyarakat akan ditemukan algoritma yang terbaik.

2.6.1 Tujuan Desain Twofish

Algoritma Twofish didesain untuk memenuhi kriteria yang ditetapkan oleh NIST untuk sayembara penentuan standar algoritma. Kriteria tersebut diantaranya adalah : 1. Menggunakan 128-bit enkripsi dengan metode blok cipher.

2. Panjang kunci 128 bit, 192 bit, dan 256 bit. 3. Tidak memiliki kunci lemah

4. Efisien baik jika digunakan di Intel Pentium Pro maunum perangkat lunak ataupun keras lainnya

5. Memiliki desain yang fleksibel sehingga dapat digunakan untuk stream chiper,

hash function, dan MAC.

6. Design yang sederhana.

Kriteria tambahan yang dimiliki oleh algoritma Twofish adalah : 1. Dapat menerima kunci lebih dari 256 bit

2. Untuk versi dengan optimasi penuh proses enkripsi data dapat dilakukan kurang dari 500 clock cycle per blok pada Pentium, Pentium Pro, dan Pentium II.

3. Untuk pemrosesan 32 blok dengan 128 bit kunci dapat memakan waktu yang lebih sedikit.

4. Tidak memiliki operasi yang dapat mengurangi efisiensi jika digunakan pada mikroprosesor 8-bit, 16-bit, 32-bit maupun 64 bit.

5. Memiliki berbagai variasi performansi dari key schedule


(29)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Secara garis besar algoritma twofish dibangun dari beberapa algoritma utama, algoritmaalgoritma tersebut diambil dari prinsip pembangunan algoritma cipher blok. Ada 6 prinsip yang digunakan yaitu :

1. Jaringan Feistel

Hampir semua algoritma cipher blok bekerja dalam model jaringan Feistel. Jaringan Feistel ditemukan oleh Horst Feistel dalam desainnya tentang Lucifer, dan dipopulerkan oleh DES. Jaringan Feistel adalah metode umum untuk mentransformasi fungsi apapun (biasa disebut fungsi F) ke dalam permutasi. Beberapa algoritma kriptografi lain yang menggunakan jaringan Feistel misalnya LOKI, GOST, FEAL, Blowfish, Khufu Khafre, dan RC-5. Model jaringan Feistel bersifat reversible, untuk proses enkripsi dan dekripsi, sehingga kita tidak perlu membuat algoritma baru untuk mendekripsi cipherteks menjadi plainteks.

Bagian yang penting dari jaringan Feistel adalah fungsi F, pemetaan string input menjadi string output berdasarkan kunci yang digunakan. Fungsi F selalu tidak linear dan mungkin tidak surjektif:

di mana :

n : ukuran blok dari jaringan Feistel

F : fungsi yang menerima n=2 bit dari blok dan N bit kunci sebagai input dan menghasilkan output n=2 bit.

Dalam setiap putaran, blok sumber adalah input fungsi F dan output dari fungsi F di-XOR-kan dengan blok target, lalu dua blok ini dipertukarkan sebelum masuk ke putaran berikutnya. Ide yang digunakan adalah untuk mengambil fungsi F, yang mungkin merupakan algoritma enkripsi yang lemah jika berdiri sendiri, dan melakukan perulangan untuk membuat algoritma enkripsi yang kuat. Dua


(30)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

dari blok teks telah dimodifikasi sekali. Twofish merupakan jaringan Feistel 16-putaran, dengan fungsi F bijektif.

Feistel cipher beroperasi terhadap panjang blok data tetap sepanjang n

(genap), kemudian membagi 2 blok tersebut dengan panjang masing-masing n/2, yang dinotasikan dengan L dan R. Feistel cipher menerapkan metode cipher berulang dengan masukan pada putaran ke-I yang didapat dari keluaran sebelumnya, yang secara matematis dapat dinyatakan sebagai berikut :

Li=Ri-1

Ri=Li-1 ⊕ f(Ri-1,Ki); i=1,2,3,…,r

Ki adalah kunci untuk putaran ke-i dan f adalah fungsi transformasi.

Blok plaintext adalah gabungan L dan R awal atau secara formal plaintext dinyatakan dengan (Lo, Ro). Sedangkan blok ciphertext didapatkan dari L dan R hasil putaran terakhir setelah terlebih dahulu dipertukarkan atau dinyatakan dengan (Rr, Lr).

2. Kotak-S (S-boxes)

Kotak-S adalah matriks yang berisi substitusi non-linear yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain dan digunakan di banyak cipher blok. Kotak-S memiliki ukuran input dan ukuran output yang bervariasi. Ada empat pendekatan yang digunakan dalam mengisi Kotak-S : dipilih secara acak, dipilih secara acak lalu diuji, dibut oleh orang, dihitung secara matematis. Kotak-S pertama digunakan di Lucifer, lalu DES dan diikuti banyak algoritma enkripsi yang lain. Twofish menggunakan empat buah 8x8 bit Kotak-S yang berbeda, bijektif, dan bergantung pada kunci. Kotak-S ini dibuat menggunakan 8x8 bit permutasi dan material kunci.


(31)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

3. MDS Matrices

Kode MDS (Maximum Distance Separable) pada sebuah field adalah pemetaan liner dari x elemen field ke y elemen field, dan menghasilkan vektor komposit x +

y elemen, dengan ketentuan bahwa jumlah minimum dari elemen bukan nol pada

setiap vektor bukan nol paling sedikit y + 1. Dengan kata lain, jumlah elemen yang berbeda diantara dua vektor berbeda yang dihasilkan oleh pemetaan MDS paling sedikit y + 1. Dapat dibuktikan dengan mudah bahwa tidak ada pemetaan yang dapat memiliki jarak pisah yang lebih besar diantara dua vektor yang berbeda, maka disebut jarak pisah maksimum (maximum distance separable). Pemetaan MDS dapat direpresentasikan dengan sebuah MDS matriks yang teridiri dari x × y elemen.

Kode perbaikan-kesalahan Reed-Solomon (RS) adalah MDS. Kondisi yang diperlukan untuk sebuah x × y matriks untuk menjadi MDS adalah semua kemungkinan submatriks kotak, yang diperoleh dengan membuang kolom atau baris, adalah tidak singular.

Serge Vaudenay pertama kali mengajukan matriks MDS sebagai elemen desain kode. Shark dan Square menggunakan matrika MDS, meskipun konstruksinya pertama kali ditemukan di kode Manta yang tidak dipublikasikan. Twofish menggunakan matriks MDS tunggal 4x4.

4. Transformasi Pseudo-Hadamard

Transformasi Pseudo -Hadamard (PHT) adalah sebuah operasi pencampuran sederhana yang berjalan secara cepat dalam perangkat lunak. 32-bit PHT dengan dua masukkan didefinisikan sebagai :

a’ = a + b mod 232 b’ = a + 2b mod 232


(32)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

SAFER menggunakan 8-bit PHT untuk difusinya. Twofish menggunakan 32-bit PHT untuk mengubah keluaran dari fungsi g- nya. PHT ini dapat dieksekusi dalam dua opcodes di mikroprosesor modern seperti keluarga Pentium.

5. Whitening

Whitening, sebuah teknik meng-XOR-kan material kunci sebelum putaran pertama dan setelah putaran terakhir, digunakan oleh Merkle dalam Khufu/Khafre, dan ditemukan oleh Rivest untuk DES-X. Whitening menambah tingkat kesulitan serangan pencarian kunci terhadap ciphertext, dengan menyembunyikan masukkan spesifik terhadap putaran pertama dan putaran terakhir dari fungsi F.

Twofish meng-XOR-kan 128-bit sub-kunci sebelum putaran Feistel yang pertama, dan 128-bit lagi setelah putaran Feistel terakhir. Sub-kunci ini diperhitungkan dengan cara yang sama seperti sub-kunci putaran, tetapi tidak digunakan di tempat lain dalam cipher.

6. Penjadwalan Kunci

Penjadwalan kunci adalah proses pengubahan bit-bit kunci menjadi sub-kunci tiap putaran yang dapat digunakan oleh cipher. Twofish memerlukan banyak material kunci dan memiliki penjadwalan kunci yang rumit. Untuk memfasilitasi analisis, penjadwalan kunci menggunakan primitif yang sama seperti fungsi putaran.

2.6.3 Algoritma Twofish

Twofish merupakan algoritma kriptografi kunci simetrik cipher blok dengan panjang setiap blok adalah tetap 128 bit. Sedangkan kunci yang dapat diterima adalah: 128, 192, atau 256 bit. Twofish memanfaatkan teknik pemanipulasian bit, kotak permutasi/pemutihan, jaringan feistel, pemutaran ulang dengan pergiliran kunci


(33)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

dengan jumlah perputaran dan pergiliran kunci sebanyak 16 kali, tranformasi pseudo-Hadamard, ekspansi dan filter, dan kotak MDS (Most Distance Separable).

Berikut diagram dari blok cipher Twofish

Gambar 2.5 Struktur Algoritma Twofish

Langkah-langkah algoritma twofish adalah sebagai berikut:

1. Masukan satu blok plain teks adalah 128 bit. Satu blok tersebut dibagi menjadi 4 buah subblok yang masing-masing sepanjang 32 bit (A, B, C, dan D).

2. Masing-masing subblok tersebut diputihkan dengan mengxorkan dengan kunci K0, K1, K2, dan K3.


(34)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Langkah-langkah 1 putaran adalah sebagai berikut:

1. 2 buah 32 bit yang kiri (A dan B) merupakan input dari fungsi g (yang merupakan bagian dari fungsi f), yang salah satunya (B) di geser ke kiri sejauh 8 bit dahulu.

2. Fungsi g memiliki 4 buah kotak substitusi yang dibangkitkan oleh kunci. 3. Keluaran fungsi kotak substitusi dilakukan percampuran linear menggunakan

kotak Most Distance Separable.

4. Keluaran fungsi g dimasukkan ke fungsi transformasi pseudo-Hadamard, kemudian ditambahkan dengan 2 buah 32 bit dari kunci.

5. Dua buah 32 bit hasil kemudian di xorkan dengan C dan D. Hasil xor dengan C digeser ke kanan sejauh 1 bit. Dan untuk D sebelum dixorkan digeser ke kiri sejauh 1 bit.

6. 2 buah 32 bit kiri dan kanan dipertukarkan (A dan B dipertukarkan dengan C dan D).

Langkah diatas dilakukan hingga 16 kali putaran. Kemudian langkah-langkah selanjutnya:

1. Hasil keluaran setelah diputar 16 kali, ditukar lagi (A dan B diperukarkan dengan C dan D).

2. Hasil dari pertukaran tersebut di xorkan dengan empat buah 32 bit dari kunci menghasilkan cipher teks.

1. Fungsi F

Fungsi F adalah permutasi yang bergantung pada kunci dengan nilai 64 bit. Fungsi ini menerima 3 argumen, dua buah 32 bit R0 dan R1, dan nomor putaran untuk


(35)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

menentukan subkunci mana yang dipakai. R0 akan diserahkan ke fungsi g yang akan mengembalikan T0. R1 akan digeser sejauh 8 bit yang kemudian di berikan juga ke fungsi g yang akan mengembalikan T1. Hasil T0 dan T1 kemudian dikombinasikan ulang menggunakan transformasi pseudo-Hadamard, yang kemudian ditambahkan dengan dua buah 32 bit dari kunci.

T0 = g(R0)

T1 = g(shiftLeft(R1,8)) F0 = (T0+T1+K2r+8) mod 232 F1 = (T0+2T1+K2r+9) mod 232

F0 dan F1 adalah hasil dari F, yang masingmasing sepanjang 32 bit. Hasil keluaran ini nantinya akan dipertukarkan dan dimasukkan kembali ke putaran selanjutnya.

2. Fungsi G

Fungsi g merupakan jantung dari keseluruhan algoritma twofish. 32 bit masukan X dari fungsi F dipecah menajdi 4 buah yang masingmasing sepanjang 8 bit. Setiap 8 bit kemudian diproses dengan kotak S yang bersesuaian. Setiap kotak S bersifat bijektif, yaitu menerima 8 bit dan mengeluarkan 8 bit pula. 4 buah 8 bit hasil keluaran kemudian dikalikan dengan matriks Most Distance Separable (MDS) 4x4. Hasil pengalian kemudian diartikan sebagai 32 bit, yang merupakan keluaran dari fungsi g, yang kemudian akan dikembalikan kembali ke fungsi F.

Matriks MDS yang setiap elemennya ditampilkan sebagai heksadesimal adalah sebagai berikut:

2.7 Keamanan Twofish

Tingakat keamanan suatu algoritma kunci simetris tipe cipher blok dapat diukur dari tingkat kerumitan algoritma, panjang blok yang digunakan, panjang kunci yang


(36)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

digunakan dan tingkat pengacakan plainteks terhadap cipherteks. Algoritma Twofish menggunakan jaringan Feistel dan kotak-S dalam implementasinya. Karena itu tingkat keamanan algoritma ini juga dipengaruhi oleh cara penjadwalan kunci internal dan cara pembangkitan kunci-S.

Semakin tinggi tingkat kerumitan suatu algoritma maka algoritma tersebut semakin sulit dipecahkan. Semakin besar ukuran blok yang digunakan akan mengakibatkan semakin jarangnya terdapat chiperteks berulang yang berasal dari plainteks yang sama. Hal ini menyebabkan hubungan antara plainteks dan chiperteks menjadi kabur, sehingga mempersulit kriptanalisis untuk melakukan penyerangan terhadap algoritma kriptografi yang digunakan.

Ukuran panjang suatu kunci juga berpengaruh pada kekuatan algoritma. Biasanya semakin panjang dan acak suatu kunci akan mempersulit penyerangan algoritma kriptografi. Tingkat pengacakan plainteks dan cipherteks yang tinggi mengakibatkan sulitnya mencari hubungan antara plainteks dan cipherteks. Hal ini akan mempersulit kriptanalisis untuk melakukan penyerangan.

Kotak-S digunakan algoritma Twofish dalam fungsi f pada jaringan feistel. Cara pembangkitan kotak-S ini mempengaruhi tingkat kerumitan pada fungsi f tersebut. Ada dua macam pendekatan dalam pembangkitan kotak-S ini. Pertama adalah pembangkitan kotak-S secara statis, pembangkitan secara statis ini berarti kotak-S yang digunakan tidak bergantung pada plainteks dan kunci yang dimasukkan. Pendekatan kedua adalah pembangkitan kotak-S secara dinamis. Pembangkit dinamis ini biasanya diimplementasikan dengan menggunakan fungsi bilangan acak.


(37)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

PEMBAHASAN

3.1 Analisa Masukan

Masukan dari aplikasi enkripsi dengan algoritma twofish adalah adalah plaintext dan kunci. Plaintext dapat berupa file teks,file grafik,file sound dan lain sebagainya. Kunci dimasukkan secara manual setelah proses input plaintext.

3.2 Analisa Kebutuhan Perangkat Keras dan Perangkat Lunak

Perangkat keras yang digunakan ketika menguji implementasi dari algoritma twofish ini adalah sebagai berikut :

1. Procesor Pentium IV 1,8D GHz

2. Memory 512 MB

3. Hard Disk 40 GB

4. O/S Windows XP

5. Monitor Samsung 17’’

Sedangkan perangkat lunak yang digunakan adalah sebagai berikut : 1. Sistem Operasi Windows XP

2. Microsoft Visual Basic 6.0 3. Microsoft Visio 2003

3.3 Analisa Proses Enkripsi

Ukuran blok chipper simetries yang digunakan untuk enkripsi data pada algoritma Twofish adalah 128 bit. Tahap dalam enkripsi dengan menggunakan algoritma Twofish adalah :


(38)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

1. Penjadwalan

2. Pembagian Plaintext dan proses subsitusi

3.4 Analisa Prosedural

Analisa prosedural merupakan analisa implementasi pada pemrograman sistem. Sistem yang dimaksud disini adalah analisa sistem pemograman enkripsi dengan menggunakan algoritma twofish.

3.4.1 Pembangkitan Kunci

Jumlah kunci internal yang harus dibangkitkan adalah sejumlah 40 kunci masing-masing 32 bit (K0 hingga K39). Dan juga dibutuhkan pembangkitan 4 buah kotak substitusi dari yang bergantung pada kunci. Twofish dapat menerima kunci sepanjang 128, 192, dan 256 bit (N).

Kemudian terdefinisi k=N/64. Kunci M terdiri dari 8k byte, m0, ..., m8k-1. Byte-byte tersebut pertama-tama diubah menjadi 2k buah yang masing-masing terdiri dari 32 bit.

Hasil fungsi diatas kemudian digolongkan menjadi dua buah, ganjil dan genap. Me = (M0, M2, ..., M2k-2)

Mo = (M1, M3, ..., M2k-1)

Selanjutnya adalah kotak S. Langkah pertama adalah dengan

mengelompokkan kunci tersebut dikalikan dengan matriks 4x8 yang diturunkan dari RS. Setiap hasil sepanjang 4 byte duartikan sebagai satu buah 32 bit, menghasilkan kotak S.


(39)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Hasil keluaran tahap ini adalah 2 buah matriks, matriks M genap dan matriks M ganjil, dan sebuah matriks kotak substitusi.

Adapun algoritma untuk membangkitan kunci adalah sebagai berikut

Tahap I :

Pada tahap pertama adalah pengujian ukuran kunci apakah sudah memenuhi syarat berikut pseudocode untuk menguji kunci :

If (KeyLength > 192) Then

ReDim Preserve Key(31)

KeyLength = 256

ElseIf (KeyLength > 128) Then

ReDim Preserve Key(23)

KeyLength = 192

ElseIf (KeyLength > 64) Then

ReDim Preserve Key(15)

KeyLength = 128

ElseIf (KeyLength > 32) Then

ReDim Preserve Key(7)

KeyLength = 64

Else

ReDim Preserve Key(3)

KeyLength = 32

End I

Tahap II :

Pada tahap kedua adalah pembentukan kunci yang tergantung pada S-box pseudocodenya adalah:

Private Static Sub KeyCreate(K() As Byte, KeyLength As Long)

Dim i As Long

Dim lA As Long


(40)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Dim b(3) As Byte

Dim k64Cnt As Long

Dim k32e(3) As Long

Dim k32o(3) As Long

Dim subkeyCnt As Long

Dim sBoxKey(3) As Long

Dim Key(0 To 3, 0 To 3) As Byte

Const SK_STEP = &H2020202

Const SK_BUMP = &H1010101

Const SK_ROTL = 9

k64Cnt = KeyLength \ 8

subkeyCnt = ROUND_SUBKEYS + 2 * ROUNDS

For i = 0 To IIf(KeyLength < 32, KeyLength \ 8 - 1, 3)

Call CopyMem(k32e(i), K(i * 8), 4)

Call CopyMem(k32o(i), K(i * 8 + 4), 4)

sBoxKey(KeyLength \ 8 - 1 - i) =

RS_Rem(RS_Rem(RS_Rem(RS_Rem(RS_Rem(RS_Rem(RS_Rem(RS_Rem(k32o(i)

)))) Xor k32e(i)))))

Next

ReDim sKey(subkeyCnt)

For i = 0 To ((subkeyCnt / 2) - 1)

lA = F32(k64Cnt, i * SK_STEP, k32e)

lB = F32(k64Cnt, i * SK_STEP + SK_BUMP, k32o)

lB = lBSL(lB, 8) Or lBSRU(lB, 24)

If (m_RunningCompiled) Then

lA = lA + lB

Else

lA = UnsignedAdd(lA, lB)

End If

sKey(2 * i) = lA

If (m_RunningCompiled) Then


(41)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Else

lA = UnsignedAdd(lA, lB)

End If

sKey(2 * i + 1) = lBSL(lA, SK_ROTL) Or lBSRU(lA, 32 -

SK_ROTL)

Next

Call CopyMem(Key(0, 0), sBoxKey(0), 16)

For i = 0 To 255

If ((k64Cnt And 3) = 1) Then

sBox(2 * i) = MDS(0, P(0, i) Xor Key(0, 0))

sBox(2 * i + 1) = MDS(1, P(0, i) Xor Key(1, 0))

sBox(&H200 + 2 * i) = MDS(2, P(1, i) Xor Key(2, 0))

sBox(&H200 + 2 * i + 1) = MDS(3, P(1, i) Xor Key(3, 0))

Else

b(0) = i

b(1) = i

b(2) = i

b(3) = i

If ((k64Cnt And 3) = 0) Then

b(0) = P(1, b(0)) Xor Key(0, 3)

b(1) = P(0, b(1)) Xor Key(1, 3)

b(2) = P(0, b(2)) Xor Key(2, 3)

b(3) = P(1, b(3)) Xor Key(3, 3)

End If

If ((k64Cnt And 3) = 3) Or ((k64Cnt And 3) = 0) Then

'(exception = True) Then

b(0) = P(1, b(0)) Xor Key(0, 2)

b(1) = P(1, b(1)) Xor Key(1, 2)

b(2) = P(0, b(2)) Xor Key(2, 2)

b(3) = P(0, b(3)) Xor Key(3, 2)

End If

sBox(2 * i) = MDS(0, P(0, P(0, b(0)) Xor Key(0, 1)) Xor


(42)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

sBox(2 * i + 1) = MDS(1, P(0, P(1, b(1)) Xor Key(1, 1))

Xor Key(1, 0))

sBox(&H200 + 2 * i) = MDS(2, P(1, P(0, b(2)) Xor Key(2,

1)) Xor Key(2, 0))

sBox(&H200 + 2 * i + 1) = MDS(3, P(1, P(1, b(3)) Xor

Key(3, 1)) Xor Key(3, 0))

End If

Next

End Sub

3.4.2 Pembagian Plaintext

Plainteks dibagi menjadi beberapa blok, setiap blok (P1,….) memiliki panjang 128 bit, kemudian setiap blok dibagi menjadi 4 bagian (K0 K1, K 2, K 3).

Selanjutnya masing-masing bagian diolah dengan menggunakan proses whitening masukan terdapat di xor dengan empat kata kunci. Proses ini akan diikuti oleh enam belas putaran. Adapun pseudocode pada pembagian plaintext adalah sebagai berikut :

1. Panggil GetWord(LeftWord, ByteArray(), Offset) 2. Panggil GetWord(LeftWord, ByteArray(), Offset + 4)

Pseudocode untuk fungsi GetWord adalah sebagai berikut: 1. CryptBuffer(3) = bb(Offset)

2. CryptBuffer(2) = bb(Offset + 1) 3. CryptBuffer(1) = bb(Offset + 2) 4. CryptBuffer(0) = bb(Offset + 3)

5. Panggil CopyMem(LongValue, CryptBuffer(0),4)

Untuk pengembalian nilainya, data kiri ataupun kanan akan dipisah kembali menjadi 4 bilangan (masing-masing 8 bit). Pseudocodenya sebagai berikut:


(43)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

2. Panggil PutWord(LeftWord, ByteWord(), Offset + 4) Pseudocode untuk fungsi PutWord adalah sebagai berikut: 1. Panggil CopyMem(CryptBuffer(0), LongValue, 4) 2. aByte(Offset) = CryptBuffer(3)

3. aByte(Offset + 1) = CryptBuffer(2) 4. aByte(Offset + 2) = CryptBuffer(1) 5. aByte(Offset + 3) = CryptBuffer(0)

3.4.3Proses Subtitusi

Setelah dibentuk subkey, dilanjutkan dengan melakukan enkripsi plaintext sebanyak 16 putaran dengan operasi:

Li = Ri-1

Ri = Li-1 xor f(Ri-1,Ki)

Adapun pseudocode untuk proses subtitusi adalah sebagai berikut :

For Offset = 0 To (CipherLen - 1) Step 16

Call CopyMem(DWord(0), ByteArray(Offset), 16)

DWord(0) = DWord(0) Xor CipherWord(0)

DWord(1) = DWord(1) Xor CipherWord(1)

DWord(2) = DWord(2) Xor CipherWord(2)

DWord(3) = DWord(3) Xor CipherWord(3)

Call EncryptBlock(DWord())

Call CopyMem(ByteArray(Offset), DWord(0), 16)

Call CopyMem(CipherWord(0), DWord(0), 16)


(44)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

3.5 Perancangan Flowchart

Adapun flowchart dari program enkripsi dan deksripsi adalah sebagai berikut:

Gambar 3.1 Flowchart Aplikasi Enkripsi/Dekripsi Algoritma Twofish

Mulai

Tampilan Form Utama

Selesai Enkripsi

Input File

Masukkan Kunci

Enkripsi Dekripsi

Tampilkan Hasil

Dekripsi

Y

T T

Y

T T

Y Y


(45)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

3.6 Implementasi

Implementasi dari algoritma twofish dibuat dengan menggunakan bahasa pemograman Visual Basic 6.0. Berikut tampilan dari implementasi algoritma Twofish. Aplikasi ini terdiri dari 2 tab yaitu enkripsi, dekripsi.

Gambar 3.2 Form Tab Enkripsi

Tab berisi nama file yang akan di ekripsi. Untuk memasukkan nama file yang dienkripsi dapat mengklik tombol buka. Untuk pengisian kunci, isi kunci pada isian pertama dan ulangi sekali lagi. Untuk mengenkrpi file terpilih klik tombol enkrip.

Untuk melihat hasil dari file yang telah di enkripsi, file tersebut dapat dilihat menggunakan notepad.


(46)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Gambar 3.3 Hasil Enkripsi

Sedangkan untuk proses dekripsi, pilih tab dekripsi, cara penggunaan sama dengan tab enkripsi . Berikut tampilan dari tab dekripsi.


(47)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

3.7 Percobaan Enkripsi dan Dekripsi

Berikut terdapat data hasil uji coba enkripsi dan dekripsi algoritma Twofish. Percobaan ini dilakukan dengan panjang kunci 10 karakter. Percobaan ini dilakukan untuk mengukur kecepatan proses enkripsi dan dekripsi dari algoritma Twofish. Ukuran file yang digunakan berbeda-beda, sehingga dapat dilihat kecepatan proses enkripsi dan dekripsi.

Tabel 3.1 Hasil Percobaan dengan Kunci 10 Karakter

No Nama File Ukuran File Sumber

(Byte)

Waktu Komputasi (Detik)

Enkripsi Dekripsi

1. Deny_report.doc 234,496 2.49 2.4

2. KriptoTWOFISH.doc 79,360 0.93 0.88 3. Enkripsi-Dekripsi.pdf 78,875 0.96 0.89 4. Makalah1-004.pdf 245,964 2.67 2.51

5. DSC00438.jpg 67,167 0.81 0.75

6. Foto(17).jpg 137,529 1.58 1.43

7. Slide Proposal.ppt 241,664 2.64 2.45 8. Pengantar Kriptografi.ppt 912,896 9.61 9.06 9. Yang Terlewatkan.mp3 4,004,595 42.06 39.26

Dapat terlihat juga bahwa file dengan ukuran yang lebih besar akan diproses lebih lama dibandingkan dengan file yang berukuran lebih kecil.

Kecepatan komputasi dalam proses enkripsi dan dekripsi kadang-kadang terdapat perbedaan meskipun di uji dalam satu komputer. Hal ini dikarenakan kecepatan komputer tidak persis sama dalam setiap detik. Hal ini dapat dibuktikan dengan membuka task manager seperti pada gambar di bawah ini :

Gambar 3.5 Task Manager Windows XP

Nilai persentase pada CPU Usage selalu berubah, aplikasi dan service yang berjalan secara background mempengaruhi dari persentasi dari CPU Usage.


(48)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

3.8 Twofish Untuk Integritas Data

Pada saat mengirimkan pesan agar pesan yang dikirimkan tersebut sampai di tujuan dengan aman serta tidak mengalami campur tangan pihak lain. Syarat ini menjadi jauh lebih utama, apabila pesan yang dikirimkan tergolong pesan rahasia.

Pada pesan dikirimkan, pesan tersebut akan melalui berbagai jenis komputer,

router atau gateway dan melintasi berbagai macam media fisik komunikasi.

Tujuannya adalah mencegah terjadinya perubahan pesan ketika sedang dalam proses transmisi data terhadap pesan yang dikirimkan maupun pesan yang diterima. Jika seorang penyadap melakukan perubahan data, maka penyadap tersebut akan memperoleh pesan-pesan yang terenkripsi saja sehingga tidak mencerminkan isi pesan yang sebenarnya.

Jika menginginkan isi pesan tetap terjaga keasliannya (tidak diubah oleh orang yang tidak berhak), maka struktur twofish dapat mengakomendasikan banyak blok dan kunci pada berbagai 32 bit dengan penukaran pada nomor putaran.

Berikut contoh proses enkripsi dan dekripsi file dengan melakukan perubahan pada kunci, cipherteks ataupun pada keduanya.


(49)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Contoh 1

File : proposal.doc

Kunci : bunda

Cipherteks : proposal.doc.twf

Proposal.doc


(50)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Kemudian dilakukan perubahan dengan cara melakukan perubahan pada kunci. cipherteks : proposal.doc.twf

kunci : undab

plainteks : proposal.doc

Di dalam twofis jika terjadi perubahan kunci hasilnya tidak akan terbaca lagi, dan dianggap file tersebut rusak.


(51)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

BAB 4

KESIMPULAN DAN SARAN

4.1Kesimpulan

Adapun kesimpulan yang dapat diperoleh adalah:

1. Twofish memiliki algoritma enkripsi dan penjadwalan kunci yang dibuat berpasangan, perubahan pada satu bagian mempengaruhi bagian lainnya. Hal ini disebabkan tidak cukup jika hanya mendesain fungsi round yang kuat dan menerapkan penjadwalan kunci yang kuat pada funsi tersebut, keduanya harus selalu dikerjakan bersama.

2. Dari hasil ujicoba yang telah dilakukan lama proses yang diperlukan untuk enkripsi dan dekripsi tidak nampak perbedaan yang begitu jauh.

3. Key harusnya dibuat sependek mungkin. Dianggap sangat berat untuk mendesain suatu algoritma dengan key panjang jika dibandingkan dengan algoritma yang menggunakan key pendek.

4.2Saran

Sebagai saran yang ditujukan kepada pembaca yang ingin melakukan enkripsi dan dekripsi hanya sebatas bentuk file. Dalam mengimplementasikan algoritma Twofish


(52)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

ini hanya dalam cakupan kecil dan benar-benar sangat mendasar yang menggunakan bahasa pemrograman Microsoft Viaual Basic 6.0

Untuk itu penulis berharap agar pembaca dapat mengembangkannya baik dalam menganalisa maupun mengimplementasikannya kedalam bahasan pemrograman lain. Terutama dalam menganalisa tujuan dari ilmu kriptografi itu sendiri yaitu menyangkut tentang kerahasian, integritas data, autentikasi dan non


(53)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

DAFTAR PUSTAKA

[1] Andi. 2003. Memahami Model Enkripsi dan Security Data. Yogyakarta: Penerbit Andi.

[2] Ariyus, Dony. 2005. Computer Security. Yogyakarta: Penerbit Andi.

[3] Ariyus, Dony. 2006. Kriptografi Keamanan Data dan Komunikasi. Yogyakarta: Graha Ilmu.

[4] Ariyus, Dony. 2008. Pengantar Ilmu Kriptografi Teori, Analisis, dan

Implementasi. Yogyakarta: Penerbit Andi.

[5] Delfs, Hans dan Helmut Knebl, 2007. Introduction to Cryptography Principles

and Aplications. New York : Springer.

[6] Munir, Rinaldi. 2006. Kriptografi. Bandung: Informatika.

[7] Mukmin, Indra. Algoritma Twofish:Kinerja dan Implementasinya Sebagai Salah

Satu Kandidat Algoritma AES(Advanced Encryption Standard). Bandung:

Informatika ITB.

[8] Kurniawan, Yusuf. 2004. Kriptografi keamanan Internet dan Jaringan Komputer. Bandung: Informatika Bandung.


(54)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

LISTING PROGRAM

Dim OFile As String

Dim OFile2 As String

Private WithEvents Twofish As clsTwofish

Private Sub Twofish_Progress(Percent As Long)

Select Case SSTab1.Tab

Case 0

Me.LblProg.Caption = Percent & " %"

Me.Prog.Value = Percent

DoEvents

Case 1

Me.lblProg2.Caption = Percent & " %"

Me.Prog2.Value = Percent

DoEvents

Case 2

End Select

End Sub

Private Sub cmdDekrip_Click()

Dim oldtimer As Single, hasil As Double

oldtimer = Timer

If Me.txtDekrip.Text = "" Then

Exit Sub

Else

Me.lblp2.Caption = ""

Dim l As Integer

Dim StatusEnkrip As Boolean

Dim Ln As Integer

Ln = Len(txtDekrip.Text)


(55)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

'MsgBox txtDekrip.Text

On Error Resume Next

Kill OFile2

On Error GoTo 0

Call Twofish.DecryptFile(txtDekrip.Text, OFile2, Me.Text6.Text)

hasil = Timer - oldtimer

Me.lblp2.Caption = Round(hasil, 2) & " detik"

MsgBox "Proses Dekripsi Selesai"

End If

End Sub

Private Sub cmdEnkrip_Click()

Dim oldtimer As Single, hasil As Double

If Me.Text1.Text = "" Then Exit Sub

If Me.Text2.Text = "" Or Me.Text5.Text = "" Then

MsgBox " Masukkan Kunci", vbCritical, "Masukkan Kunci"

Exit Sub

End If

If Me.Text2.Text <> Me.Text5.Text Then

MsgBox " Kunci tidak sama,Ulangi memasukkan kunci",

vbExclamation, "Kunci"

Me.MousePointer = vbNormal

Exit Sub

End If

'Me.RtfEnkripsi.Text = ""

Dim StatusEnkrip As Boolean, l As Integer

l = Len(Me.Text1.Text)

OFile = Me.Text1.Text & "." & "twf" 'Mid(Text1.Text, 1, l - 3) & "twf"

MsgBox OFile

oldtimer = Timer

Me.MousePointer = vbHourglass

Twofish.EncryptFile Me.Text1.Text, OFile, Me.Text2.Text

'If StatusEnkrip = twofish.EncryptFile(Me.Text1.Text, OFile, True,

Me.Text2.Text) = False Then

hasil = Timer - oldtimer


(56)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

MsgBox "Proses Enkripsi Selesai"

'Else

'MsgBox "Proses Enkripsi Gagal"

'End If

Me.MousePointer = vbNormal

End Sub

Function ReadTextFileContents(Filename As String) As String

Dim fnum As Integer, isOpen As Boolean

On Error GoTo Error_Handler

fnum = FreeFile()

Open Filename For Input As #fnum

isOpen = True

ReadTextFileContents = Input(LOF(fnum), fnum)

Error_Handler:

MsgBox Err.Description

If isOpen Then Close #fnum

' If Err Then Err.Raise Err.Number, , Err.Description

End Function

Private Sub CmdMasukkan2_Click()

Me.CommonDialog1.Filter = "Twofish Files|*.twf"

Me.CommonDialog1.Filename = ""

Me.CommonDialog1.ShowOpen

On Error Resume Next

Dim nmfile As String

nmfile = Me.CommonDialog1.Filename

If nmfile <> "" Then

Me.txtDekrip.Text = nmfile

Me.cmdDekrip.Enabled = True

Me.cmdView2.Enabled = True

Me.lblFIlelen2.Caption = Format(FileLen(nmfile), "#,###") & " byte"

End If


(57)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Private Sub cmdMasukkanFIile_Click()

Me.CommonDialog1.Filter = "All Files|*.*"

Me.CommonDialog1.ShowOpen

On Error Resume Next

Dim nmfile As String

nmfile = Me.CommonDialog1.Filename

If nmfile <> "" Then

Me.Text1.Text = nmfile

Me.Text2.Text = ""

Me.Text5.Text = ""

Dim l As Integer

l = Len(Me.Text1.Text)

Me.cmdView.Enabled = True

Me.cmdEnkrip.Enabled = True

Me.lblFilelen.Caption = Format(FileLen(nmfile), "#,###") & " byte"

Me.lblP.Caption = ""

Text1.SetFocus

End If

End Sub

Private Sub cmdTampilkHasil_Click()

On Error GoTo ERRHANDLE

If OFile <> "" Then

Call ShellExecute(hwnd, "Open", OFile, "", App.Path, 1)

End If

Exit Sub

ERRHANDLE:

MsgBox Err.Description, vbCritical, "Error" & Err.Number

End Sub

Private Sub cmdTampilkHasil2_Click()

On Error GoTo ERRHANDLE


(58)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Call ShellExecute(hwnd, "Open", OFile2, "", App.Path, 1)

End If

Exit Sub

ERRHANDLE:

MsgBox Err.Description, vbCritical, "Error" & Err.Number

End Sub

Private Sub cmdView_Click()

Dim Opfile As String

Opfile = Trim(Me.Text1.Text)

If Opfile <> "" Then

Call ShellExecute(hwnd, "Open", Opfile, "", App.Path, 1)

End If

End Sub

Private Sub Command4_Click()

End Sub

Private Sub cmdView2_Click()

Dim Opfile As String

Opfile = Trim(Me.txtDekrip.Text)

If Opfile <> "" Then

Call ShellExecute(hwnd, "Open", Opfile, "", App.Path, 1)

End If

End Sub

Private Sub Command1_Click()

frmConverter.Show

End Sub

Private Sub Form_Load()

Set Twofish = New clsTwofish


(59)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, x

As Single, Y As Single)

Me.PicHelp.Visible = False

Me.picHelp2.Visible = False

End Sub

Private Sub Frame3_MouseMove(Button As Integer, Shift As Integer, x

As Single, Y As Single)

Me.Picture2.Visible = False

Me.Picture1.Visible = False

End Sub

Private Sub Image1_Click()

Me.picHelp2.Visible = True

End Sub

Private Sub Image2_Click()

Me.Picture1.Visible = True

End Sub

Private Sub Image3_Click()

Me.Picture2.Visible = True

End Sub

Private Sub imgHelp_Click()

Me.PicHelp.Visible = True

End Sub


(1)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

LISTING PROGRAM

Dim OFile As String Dim OFile2 As String

Private WithEvents Twofish As clsTwofish Private Sub Twofish_Progress(Percent As Long) Select Case SSTab1.Tab

Case 0

Me.LblProg.Caption = Percent & " %" Me.Prog.Value = Percent

DoEvents Case 1

Me.lblProg2.Caption = Percent & " %" Me.Prog2.Value = Percent

DoEvents Case 2 End Select End Sub

Private Sub cmdDekrip_Click()

Dim oldtimer As Single, hasil As Double oldtimer = Timer

If Me.txtDekrip.Text = "" Then Exit Sub

Else

Me.lblp2.Caption = "" Dim l As Integer

Dim StatusEnkrip As Boolean Dim Ln As Integer

Ln = Len(txtDekrip.Text)


(2)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

'MsgBox txtDekrip.Text On Error Resume Next Kill OFile2

On Error GoTo 0

Call Twofish.DecryptFile(txtDekrip.Text, OFile2, Me.Text6.Text) hasil = Timer - oldtimer

Me.lblp2.Caption = Round(hasil, 2) & " detik" MsgBox "Proses Dekripsi Selesai"

End If End Sub

Private Sub cmdEnkrip_Click()

Dim oldtimer As Single, hasil As Double If Me.Text1.Text = "" Then Exit Sub

If Me.Text2.Text = "" Or Me.Text5.Text = "" Then

MsgBox " Masukkan Kunci", vbCritical, "Masukkan Kunci" Exit Sub

End If

If Me.Text2.Text <> Me.Text5.Text Then

MsgBox " Kunci tidak sama,Ulangi memasukkan kunci", vbExclamation, "Kunci"

Me.MousePointer = vbNormal Exit Sub

End If

'Me.RtfEnkripsi.Text = ""

Dim StatusEnkrip As Boolean, l As Integer l = Len(Me.Text1.Text)

OFile = Me.Text1.Text & "." & "twf" 'Mid(Text1.Text, 1, l - 3) & "twf" MsgBox OFile

oldtimer = Timer

Me.MousePointer = vbHourglass

Twofish.EncryptFile Me.Text1.Text, OFile, Me.Text2.Text

'If StatusEnkrip = twofish.EncryptFile(Me.Text1.Text, OFile, True, Me.Text2.Text) = False Then

hasil = Timer - oldtimer


(3)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

MsgBox "Proses Enkripsi Selesai" 'Else

'MsgBox "Proses Enkripsi Gagal" 'End If

Me.MousePointer = vbNormal

End Sub

Function ReadTextFileContents(Filename As String) As String Dim fnum As Integer, isOpen As Boolean

On Error GoTo Error_Handler fnum = FreeFile()

Open Filename For Input As #fnum isOpen = True

ReadTextFileContents = Input(LOF(fnum), fnum)

Error_Handler:

MsgBox Err.Description If isOpen Then Close #fnum

' If Err Then Err.Raise Err.Number, , Err.Description End Function

Private Sub CmdMasukkan2_Click()

Me.CommonDialog1.Filter = "Twofish Files|*.twf" Me.CommonDialog1.Filename = ""

Me.CommonDialog1.ShowOpen On Error Resume Next

Dim nmfile As String

nmfile = Me.CommonDialog1.Filename If nmfile <> "" Then

Me.txtDekrip.Text = nmfile Me.cmdDekrip.Enabled = True Me.cmdView2.Enabled = True

Me.lblFIlelen2.Caption = Format(FileLen(nmfile), "#,###") & " byte" End If


(4)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Private Sub cmdMasukkanFIile_Click() Me.CommonDialog1.Filter = "All Files|*.*" Me.CommonDialog1.ShowOpen

On Error Resume Next Dim nmfile As String

nmfile = Me.CommonDialog1.Filename If nmfile <> "" Then

Me.Text1.Text = nmfile Me.Text2.Text = "" Me.Text5.Text = "" Dim l As Integer

l = Len(Me.Text1.Text) Me.cmdView.Enabled = True Me.cmdEnkrip.Enabled = True

Me.lblFilelen.Caption = Format(FileLen(nmfile), "#,###") & " byte" Me.lblP.Caption = ""

Text1.SetFocus End If

End Sub

Private Sub cmdTampilkHasil_Click() On Error GoTo ERRHANDLE

If OFile <> "" Then

Call ShellExecute(hwnd, "Open", OFile, "", App.Path, 1) End If

Exit Sub

ERRHANDLE:

MsgBox Err.Description, vbCritical, "Error" & Err.Number End Sub

Private Sub cmdTampilkHasil2_Click() On Error GoTo ERRHANDLE


(5)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Call ShellExecute(hwnd, "Open", OFile2, "", App.Path, 1) End If

Exit Sub

ERRHANDLE:

MsgBox Err.Description, vbCritical, "Error" & Err.Number End Sub

Private Sub cmdView_Click()

Dim Opfile As String

Opfile = Trim(Me.Text1.Text) If Opfile <> "" Then

Call ShellExecute(hwnd, "Open", Opfile, "", App.Path, 1) End If

End Sub

Private Sub Command4_Click() End Sub

Private Sub cmdView2_Click() Dim Opfile As String

Opfile = Trim(Me.txtDekrip.Text) If Opfile <> "" Then

Call ShellExecute(hwnd, "Open", Opfile, "", App.Path, 1) End If

End Sub

Private Sub Command1_Click() frmConverter.Show

End Sub

Private Sub Form_Load() Set Twofish = New clsTwofish


(6)

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)

Me.PicHelp.Visible = False Me.picHelp2.Visible = False

End Sub

Private Sub Frame3_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)

Me.Picture2.Visible = False Me.Picture1.Visible = False End Sub

Private Sub Image1_Click() Me.picHelp2.Visible = True End Sub

Private Sub Image2_Click() Me.Picture1.Visible = True End Sub

Private Sub Image3_Click() Me.Picture2.Visible = True End Sub

Private Sub imgHelp_Click() Me.PicHelp.Visible = True End Sub