Anda di halaman 1dari 0

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



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 : STUDI ENKRIPSI DAN DEKRIPSI FILE DENGAN
MENGGUNAKAN ALGORITMA TWOFISH
Kategori : SKRIPSI
Nama : SETI FAUZIAH TUMANGGOR
Nomor Induk Mahasiswaa : 060823007
Program Studi : SARJ ANA (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







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 ii
Pernyataan iii
Penghargaan iv
Abstrak v
Abstract vi
Daftar Isi vii
Daftar Tabel ix
Daftar Gambar x

Bab 1 Pendahuluan 1
1.1 Latar Belakang 1
1.2 Perumusan Masalah 2
1.3 Pembatasan Masalah 3
1.4 Tujuan Penelitian 3
1.5 Kontribusi Penelitian 3
1.6 Tinjauan Pustaka 3
1.7 Metode 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.2 Algoritma 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
3.3 Analisa Proses Enkripsi 25
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
































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




DAFTAR TABEL


Halaman

Tabel 3.1 Hasil Percobaan dengan kunci 10 karakter 34








































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
Gambar 3.5 Task Manager Windows XP 34



























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







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 datadata
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 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
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 dalampengiriman 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 Jafar 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.

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.

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.
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 : E
K
(P)=C
Dekripsi : D
K
(C)=P atau D
K
(E
K
(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 :E
PK
(P)=C
Dekripsi : D
SK
(C)=P atau D
SK
(E
PK
(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. J ika 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 syarat-
syarat 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 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.
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 2
32

b =a +2b mod 2
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
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
K
0
, K
1
, K
2
, dan K
3
.
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+K
2r+8
) mod 2
32

F1 =(T0+2T1+K
2r+9
) mod 2
32

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 masing-
masing 32 bit (K
0
hingga K
39
). 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, m
0
, ..., m
8k-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.
M
e
=(M
0
, M
2
, ..., M
2k-2
)
M
o
=(M
1
, M
3
, ..., M
2k-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 :

I f ( KeyLengt h > 192) Then
ReDi mPr eser ve Key( 31)
KeyLengt h = 256
El seI f ( KeyLengt h > 128) Then
ReDi mPr eser ve Key( 23)
KeyLengt h = 192
El seI f ( KeyLengt h > 64) Then
ReDi mPr eser ve Key( 15)
KeyLengt h = 128
El seI f ( KeyLengt h > 32) Then
ReDi mPr eser ve Key( 7)
KeyLengt h = 64
El se
ReDi mPr eser ve Key( 3)
KeyLengt h = 32
End I

Tahap II :
Pada tahap kedua adalah pembentukan kunci yang tergantung pada S-box
pseudocodenya adalah:
Pr i vat e St at i c Sub KeyCr eat e( K( ) As Byt e, KeyLengt h As Long)
Di mi As Long
Di ml A As Long
Di ml B As Long
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009.
USU Repository 2009


Di mb( 3) As Byt e
Di mk64Cnt As Long
Di mk32e( 3) As Long
Di mk32o( 3) As Long
Di msubkeyCnt As Long
Di msBoxKey( 3) As Long
Di mKey( 0 To 3, 0 To 3) As Byt e

Const SK_STEP = &H2020202
Const SK_BUMP = &H1010101
Const SK_ROTL = 9

k64Cnt = KeyLengt h \ 8
subkeyCnt = ROUND_SUBKEYS + 2 * ROUNDS

For i = 0 To I I f ( KeyLengt h < 32, KeyLengt h \ 8 - 1, 3)
Cal l CopyMem( k32e( i ) , K( i * 8) , 4)
Cal l CopyMem( k32o( i ) , K( i * 8 + 4) , 4)
sBoxKey( KeyLengt h \ 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

ReDi msKey( subkeyCnt )
For i = 0 To ( ( subkeyCnt / 2) - 1)
l A = F32( k64Cnt , i * SK_STEP, k32e)
l B = F32( k64Cnt , i * SK_STEP + SK_BUMP, k32o)
l B = l BSL( l B, 8) Or l BSRU( l B, 24)
I f ( m_Runni ngCompi l ed) Then
l A = l A + l B
El se
l A = Unsi gnedAdd( l A, l B)
End I f
sKey( 2 * i ) = l A
I f ( m_Runni ngCompi l ed) Then
l A = l A + l B
Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009.
USU Repository 2009


El se
l A = Unsi gnedAdd( l A, l B)
End I f
sKey( 2 * i + 1) = l BSL( l A, SK_ROTL) Or l BSRU( l A, 32 -
SK_ROTL)
Next

Cal l CopyMem( Key( 0, 0) , sBoxKey( 0) , 16)

For i = 0 To 255
I f ( ( 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) )
El se
b( 0) = i
b( 1) = i
b( 2) = i
b( 3) = i
I f ( ( 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 I f
I f ( ( k64Cnt And 3) = 3) Or ( ( k64Cnt And 3) = 0) Then
' ( except i on = Tr ue) 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 I f
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 I f
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 (K
0
K
1
, 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 Of f set = 0 To ( Ci pher Len - 1) St ep 16
Cal l CopyMem( DWor d( 0) , Byt eAr r ay( Of f set ) , 16)
DWor d( 0) = DWor d( 0) Xor Ci pher Wor d( 0)
DWor d( 1) = DWor d( 1) Xor Ci pher Wor d( 1)
DWor d( 2) = DWor d( 2) Xor Ci pher Wor d( 2)
DWor d( 3) = DWor d( 3) Xor Ci pher Wor d( 3)
Cal l Encr ypt Bl ock( DWor d( ) )
Cal l CopyMem( Byt eAr r ay( Of f set ) , DWor d( 0) , 16)
Cal l CopyMem( Ci pher Wor d( 0) , DWor d( 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:






























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
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 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.
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. J ika
seorang penyadap melakukan perubahan data, maka penyadap tersebut akan
memperoleh pesan-pesan yang terenkripsi saja sehingga tidak mencerminkan isi pesan
yang sebenarnya.

J ika 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



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
















Proposal.doc.twf
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

Anda mungkin juga menyukai