Dalam tugas akhir ini akan dibahas algoritma ... Sebagai contoh bagi
perusahaan besar, penyimpanan dokumen serta data– ...... Pengantar Kriptografi
.ppt.
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
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
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
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
PERSETUJUAN
Judul Kategori Nama Nomor Induk Mahasiswaa Program Studi Departemen Fakultas
: STUDI ENKRIPSI DAN DEKRIPSI FILE DENGAN MENGGUNAKAN ALGORITMA TWOFISH : SKRIPSI : SETI FAUZIAH TUMANGGOR : 060823007 : SARJANA (S1) MATEMATIKA : MATEMATIKA : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Medan,
Komisi Pembimbing
Februari 2009
:
Pembimbing 2,
Pembimbing1,
Drs. Marwan Harahap, M.Eng. NIP. 130422437
Syahriol Sitorus, S.Si, M.IT. NIP. 132174687
Diketahui/Disetujui oleh Departemen Matematika FMIPA USU Ketua,
Dr. Saib Suwilo, M.Sc. NIP. 131796149
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
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.
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.
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.
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
DAFTAR ISI
Halaman Persetujuan Pernyataan Penghargaan Abstrak Abstract Daftar Isi Daftar Tabel Daftar Gambar
ii iii iv v vi vii ix x
Bab 1 Pendahuluan 1.1 Latar Belakang 1.2 Perumusan Masalah 1.3 Pembatasan Masalah 1.4 Tujuan Penelitian 1.5 Kontribusi Penelitian 1.6 Tinjauan Pustaka 1.7 Metode Penelitian
1 1 2 3 3 3 3 5
Bab 2 Landasan Teori 2.1 Teori Dasar Kriptografi 2.2 Algoritma Kriptografi 2.3 Tekhnik Kriptografi 2.3.1 Algoritma Simetrik 2.3.2 Algoritma Asimetrik 2.4 Kriptografi Block Cipher 2.4.1 Cipher Berulang 2.4.2 Feistel Cipher 2.4.3 Padding 2.4.4 Ekspansi 2.4.5 Kompresi 2.6 Kunci Lemah dan Kunci Setengah Lemah 2.5 Twofish 2.5.1 Tujuan Desain Twofish 2.5.2 Blok Pembangun Twofish 2.5.3 Algoritma Twofish 2.7 Keamanan Twofish
6 6 7 10 10 11 12 12 13 13 14 14 14 14 15 16 20 23
Bab 3 Pembahasan 3.1 Analisa Masukan 3.2 Analisa Kebutuhan Perangkat Keras dan Perangkat Lunak 3.3 Analisa Proses Enkripsi
24 24 24 25
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
3.4 Analisa Prosedural 3.4.1 Pembangkitan Kunci 3.4.2 Pembagian Plainteks 3.4.3 Proses Subtitusi 3.5 Perancangan Flowchart 3.6 Implementasi 3.7 Percobaan Enkripsi dan Dekripsi 3.8 Twofish Untuk Integritas Data Bab 4 Kesimpulan dan Saran 4.1 Kesimpulan 4.2 Saran Daftar Pustaka Lampiran
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
25 25 39 30 31 32 34 35 38 38 38
DAFTAR TABEL
Halaman Tabel 3.1 Hasil Percobaan dengan kunci 10 karakter
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
34
DAFTAR GAMBAR
Halaman Gambar 2.1 Proses Enkripsi Gambar 2.2 Proses Dekripsi Gambar 2.3 Diagram proses enkripsi dan dekripsi algoritma simetris Gambar 2.4 Diagram proses enkripsi dan dekripsi algoritma asimetris Gambar 2.5 Struktur Algoritma Twofish Gambar 3.1 Flowchart Aplikasi Enkripsi/Dekripsi Algoritma Twofish Gambar 3.2 Form Tab Enkripsi Gambar 3.3 Hasil Enkripsi Gambar 3.4 Form Tab Dekripsi Gambar 3.5 Task Manager Windows XP
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
7 8 10 11 20 31 32 33 33 34
BAB 1
PENDAHULUAN
1.1 Latar 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 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.2 PERUMUSAN 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
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.3 PEMBATASAN 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.4 TUJUAN PENELITIAN
Skripsi ini bertujuan untuk mengaplikasikan metode enkripsi dan dekripsi file dengan menggunakan algoritma Twofish.
1.5 KONTRIBUSI 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.6 TINJAUAN 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 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]
Kriptografi bertujuan untuk memberi layanan keamanan yang dimaksud 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.7 METODE 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.
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 rajaraja 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
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 (alKhuwarizmi 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 orangorang yang tidak berhak atas pesan tersebut.
Algoritma kriptografi terdiri dari tiga fungsi dasar, yaitu:
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. Plaintext
Ciphertext
Enkripsi
Gambar 2.1 Proses Enkripsi 2. Dekripsi: adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal/asli. Ciphertext
Plaintext
Deskripsi
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.
Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas 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
Dekripsi
: DK(C)=P atau DK(EK (P))=P
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.
2.3 Teknik Kriptografi
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
2.3.2 Algoritma Kunci Asimetris 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). 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).
2.4.3 Padding 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 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 syaratsyarat minimum yang harus dimiliki algoritma baru tersebut.
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
2.6.2 Blok Pembangun Twofish
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 putaran pada jaringan Feistel disebut satu cycle, dan dalam satu cycle setiap bit
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 16putaran, 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. 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
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
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 pseudoHadamard, 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. 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 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 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.
BAB 3 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 : 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 masingmasing 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. Bytebyte 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.
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 Dim lB As Long 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 lA = lA + lB 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 Key(0, 0))
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: 1.
Panggil PutWord(LeftWord, ByteWord(), Offset)
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.3 Proses 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) Next
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: Mulai
Tampilan Form Utama
Enkripsi
T
Y
Dekripsi
T
Y
Input File
Masukkan Kunci
Enkripsi Y
T
Dekripsi
T
Y
Tampilkan Hasil
Selesai
Gambar 3.1 Flowchart Aplikasi Enkripsi/Dekripsi Algoritma Twofish
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.
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.
Gambar 3.4 Fom Tab Dekrips
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 1. 2. 3. 4. 5. 6. 7. 8. 9.
Nama File Deny_report.doc KriptoTWOFISH.doc Enkripsi-Dekripsi.pdf Makalah1-004.pdf DSC00438.jpg Foto(17).jpg Slide Proposal.ppt Pengantar Kriptografi.ppt Yang Terlewatkan.mp3
Ukuran File Sumber (Byte) 234,496 79,360 78,875 245,964 67,167 137,529 241,664 912,896 4,004,595
Waktu Komputasi (Detik) Enkripsi Dekripsi 2.49 2.4 0.93 0.88 0.96 0.89 2.67 2.51 0.81 0.75 1.58 1.43 2.64 2.45 9.61 9.06 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. 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.
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
Proposal.doc.twf
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
Proposal.doc.twf
Di dalam twofis jika terjadi perubahan kunci hasilnya tidak akan terbaca lagi, dan dianggap file tersebut rusak.
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009
BAB 4
KESIMPULAN DAN SARAN
4.1 Kesimpulan
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.2 Saran
Sebagai saran yang ditujukan kepada pembaca yang ingin melakukan enkripsi dan dekripsi hanya sebatas bentuk file. Dalam mengimplementasikan algoritma Twofish
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 repudiasi.
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.
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) OFile2 = Mid(txtDekrip.Text, 1, Ln - 4) 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 Me.lblP.Caption = Round(hasil, 2) & " detik" 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 End Sub 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 If OFile2 "" Then 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
End Sub 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
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009