1. Pendahuluan Adanya perkembangan teknologi yang sangat pesat pada masa sekarang, membuat manusia membutuhkan suatu sistem informasi untuk mempermudah mengakses, mengirim, atau bertukar informasi pada suatu instansi ataupun perusahaan yang sesuai dengan kebutuhan. Kemajuan sistem informasi memiliki banyak keuntungan tetapi juga rawan dari hal yang negatif seperti pencurian informasi. Misalnya pada sebuah perusahaan, beberapa informasi yang sifatnya rahasia dan hanya boleh diketahui oleh orang-orang tertentu dalam sebuah perusahaan tersebut seperti informasi tentang cara membuat produk yang sedang dikembangkan. Seandainya data yang berisi informasi tersebut jatuh kepada pihak lawan bisnis, maka perusahaan akan mengalami kerugian. Untuk mengantisipasi hal yang tidak diinginkan seperti pencurian informasi, maka dibutuhkan suatu sistem untuk mengamankan suatu informasi. Keamanan informasi yang terkomputasi merupakan suatu masalah yang amat penting bagi sebuah perusahan, lembaga, perguruan tinggi maupun individu. Sistem untuk mengamankan informasi pada masalah ini dapat memanfaat kriptografi. “Menurut Bruce Schneier, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan”[1]. Algoritma kriptografi modern dapat dibagi menjadi dua algoritma kunci yaitu algoritma kunci simetris dan algoritma asimetris. Algoritma simetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi yang sama. Sedangkan algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi yang berbeda. Adapula algoritma yang beroperasi dalam mode bit dapat dibagi menjadi dua, yaitu stream chiper (cipher aliran) dan block cipher (cipher blok). Stream cipher adalah algoritma yang melakukan operasi dalam bentuk bit tunggal. Sedangkan block cipher adalah algoritma yang melakukan operasi dalam bentuk blok bit. Stream cipher dan block cipher adalah algoritma yang digunakan pada algoritma kunci simetris. Saat ini sudah banyak aplikasi enkripsi yang menggunakan algoritma kunci simetris. Salah satu algoritma dengan kunci simetris adalah DES (Data Encryption Standards). DES merupakan algoritma enkripsi standart yang dikeluarkan oleh National Institute of Standards and Technology (NIST). NIST mengadakan Advanced Encryption Standard (AES) sebagai standart baru. Salah satu kandidat AES adalah algoritma twofish dibuat oleh Bruce Schneier. Twofish memenuhi semua kriteria yang dibutuhkan NIST, yaitu 128-bit block, 128 bit, 192 bit dan 256 bit kunci. Beberapa kelebihan twofish yaitu twofish adalah cipher blok 128 bit yang menerima kunci dengan panjang variabel 256 bits, twofish tidak mengandung kunci lemah, dan twofish telah didesain dari awal dengan menekankan pada kinerjanya. Twofish sangat efisien diimplementasikan pada beragam platform, yaitu CPU 32 bit, smart card 8 bit, dan perangkat keras VLSI. Hasilnya merupakan algoritma yang sangat fleksibel yang dapat diimplementasikan secara efisien dalam beragam aplikasi kriptografi [2]. Berdasarkan latar belakang tersebut, akan dilakukan penelitian mengenai algoritma kriptografi Twofish, dengan mengambil judul penelitian “Perancangan dan Implementasi Kriptosistem Data Menggunakan Algoritma Twofish”, yang
20
Embed
Perancangan dan Implementasi Kriptosistem Data Menggunakan … · 2017. 7. 19. · Penelitian terdahulu tentang “Studi Enkripsi dan Dekripsi file dengan menggunakan Algoritma Twofish”.Berdasarkan
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1. Pendahuluan
Adanya perkembangan teknologi yang sangat pesat pada masa sekarang,
membuat manusia membutuhkan suatu sistem informasi untuk mempermudah
mengakses, mengirim, atau bertukar informasi pada suatu instansi ataupun
perusahaan yang sesuai dengan kebutuhan. Kemajuan sistem informasi memiliki
banyak keuntungan tetapi juga rawan dari hal yang negatif seperti pencurian
informasi. Misalnya pada sebuah perusahaan, beberapa informasi yang sifatnya
rahasia dan hanya boleh diketahui oleh orang-orang tertentu dalam sebuah
perusahaan tersebut seperti informasi tentang cara membuat produk yang sedang
dikembangkan. Seandainya data yang berisi informasi tersebut jatuh kepada pihak
lawan bisnis, maka perusahaan akan mengalami kerugian.
Untuk mengantisipasi hal yang tidak diinginkan seperti pencurian informasi,
maka dibutuhkan suatu sistem untuk mengamankan suatu informasi. Keamanan
informasi yang terkomputasi merupakan suatu masalah yang amat penting bagi
sebuah perusahan, lembaga, perguruan tinggi maupun individu. Sistem untuk
mengamankan informasi pada masalah ini dapat memanfaat kriptografi. “Menurut
Bruce Schneier, kriptografi adalah ilmu dan seni untuk menjaga keamanan
pesan”[1].
Algoritma kriptografi modern dapat dibagi menjadi dua algoritma kunci
yaitu algoritma kunci simetris dan algoritma asimetris. Algoritma simetris adalah
algoritma yang menggunakan kunci enkripsi dan dekripsi yang sama. Sedangkan
algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan
dekripsi yang berbeda. Adapula algoritma yang beroperasi dalam mode bit dapat
dibagi menjadi dua, yaitu stream chiper (cipher aliran) dan block cipher (cipher
blok). Stream cipher adalah algoritma yang melakukan operasi dalam bentuk bit
tunggal. Sedangkan block cipher adalah algoritma yang melakukan operasi dalam
bentuk blok bit. Stream cipher dan block cipher adalah algoritma yang digunakan
pada algoritma kunci simetris. Saat ini sudah banyak aplikasi enkripsi yang
menggunakan algoritma kunci simetris. Salah satu algoritma dengan kunci
simetris adalah DES (Data Encryption Standards). DES merupakan algoritma
enkripsi standart yang dikeluarkan oleh National Institute of Standards and
Technology (NIST).
NIST mengadakan Advanced Encryption Standard (AES) sebagai standart
baru. Salah satu kandidat AES adalah algoritma twofish dibuat oleh Bruce
Schneier. Twofish memenuhi semua kriteria yang dibutuhkan NIST, yaitu 128-bit
block, 128 bit, 192 bit dan 256 bit kunci. Beberapa kelebihan twofish yaitu twofish
adalah cipher blok 128 bit yang menerima kunci dengan panjang variabel 256 bits,
twofish tidak mengandung kunci lemah, dan twofish telah didesain dari awal
dengan menekankan pada kinerjanya. Twofish sangat efisien diimplementasikan
pada beragam platform, yaitu CPU 32 bit, smart card 8 bit, dan perangkat keras
VLSI. Hasilnya merupakan algoritma yang sangat fleksibel yang dapat
diimplementasikan secara efisien dalam beragam aplikasi kriptografi [2].
Berdasarkan latar belakang tersebut, akan dilakukan penelitian mengenai
algoritma kriptografi Twofish, dengan mengambil judul penelitian “Perancangan
dan Implementasi Kriptosistem Data Menggunakan Algoritma Twofish”, yang
akan membahas mengenai proses enkripsi dan dekripsi pada data teks dan data
gambar dengan menggunakan algoritma Twofish.
2. Tinjauan Pustaka
Penelitian terdahulu tentang “Studi Enkripsi dan Dekripsi file dengan
menggunakan Algoritma Twofish”. Berdasarkan pembahasan dari penelitian yang
dilakukan sebelumnya menyebutkan, bahwa Algoritma Twofish dapat
diimplementasikan untuk enkripsi dan dekripsi data, dengan menguji data .Doc,
.Pdf, .JPG, PPT, dan MP3. File yang dienkripsikan menjadi karakter yang acak
sehingga menjadi file yang rusak [3].
Terdapat juga penelitian sebelumnya yang dilakukan yaitu “Studi dan
Implementasi Enkripsi Pengiriman Pesan Suara Menggunakan Algoritma
Twofish”. Dalam penelitian yang dilakukan, peneliti menyimpulkan 3 hal yaitu
algoritma Twofish merupakan algoritma yang dapat diterapkan untuk enkripsi
aliran pesan suara dengan cukup baik setelah mengalami modifikasi pada mode
operasinya. Kualitas suara setelah mengalami kompresi dan enkripsi tetap
memiliki kualitas yang cukup baik. Delay yang dihasilkan meskipun tetap terasa,
dapat dianggap tidak terlalu menggangu karena di bawah 250 milidetik dan suara
yang dihasilkan dapat didengar tanpa terputus-putus [4].
Berdasarkan penelitian yang pernah dilakukan tentang algoritma twofish,
maka akan dilakukan penelitian tentang penerapan algoritma twofish pada enkripsi
dan dekripsi semua jenis data file, dengan panjang kunci 128 bit, serta hasil
enkripsi berbentuk hexadecimal. Kriptosistem dengan Twofish akan dianalisis
dengan melihat proses yang terjadi, terkait kunci yang digunakan, proses enkripsi
dan dekripsi, pada data file. Selanjutnya akan dilihat perbandingan antara waktu
proses enkripsi dan dekripsi, ukuran file setelah kedua proses tersebut
diimplementasikan, serta perbandingan nilai heksadesimal antara file asli, file
hasil enkripsi, dan file hasil dekripsi Penelitian yang dilakukan diharapkan dapat
bermanfaat dalam memberikan keamanan suatu data dan informasi yang dimiliki,
berupa penyandian data dan informasi menjadi sesuatu yang tidak terbaca oleh
pihak yang tidak berhak; juga bermanfaat dalam memberikan tambahan informasi
terkait kunci, proses enkripsi dan dekripsi yang terjadi pada algoritma twofish.
Algoritma Twofish Berdasarkan Schneier, dkk. (1998), twofish merupakan salah satu peserta
AES yang telah memenuhi kriteria National Institute of Standard and Technology
(NIST), dimana kriteria itu antara lain adalah blok sebesar 128 bit, dapat
menggunakan key sepanjang 128 bit, 192 bit, dan 256 bit, efisien untuk
diimplementasikan ke dalam berbagai spesifikasi komputer, memiliki variasi
dalam performa yang disebabkan oleh adanya key schedule, dan lain-lain.
Twofish menggunakan struktur Feistel 16-round dengan whitening tambahan
dalam input dan output. Satu-satunya elemen yang bukan Feistel adalah rotasi 1
(satu) bit. Rotasi tersebut dapat dipindahkan ke fungsi F untuk menciptakan output
berjalan. Plaintext dipecah menjadi empat buah word 32-bit. Pada whitening input,
keempat word itu di XOR-kan dengan empat key word, dan diikuti dengan keenam
belas round. Dalam tiap round, dua word di kiri, digunakan sebagai input fungsi g
(Salah satunya dirotasikan dengan 8 bit terlebih dahulu). Algoritma Twofish
menggunakan struktur jaringan Feistel. Jaringan Feistel yang digunakan oleh
Twofish terdiri atas 16 perulangan. Fungsi f pada algoritma twofish terdiri dari
beberapa tahap yaitu : Fungsi g, yang terdiri dari 4 s-box dan matriks MDS;
Pseudo-Hadamard Transformatio; Penambahan hasil PHT dengan kunci.
Unsur Pembangun Algoritma Twofish
Unsur pembangun twofish terdiri dari feistel network (jaringan feistel), s-boxes,
matriks MDS, transformasi pseudo-hadamard (PHT), whitening, dan key
schedule (penjadwalan kunci). Penjabaran dari unsur-unsur pembangun twofish,
dijelaskan sebagai berikut:
Feistel Network (Jaringan Feistel)
Schneier (1998) menjelaskan bahwa “sebuah Fietsel Network adalah metode
umum untuk mentransformasi suatu fungsi menjadi bentuk permutasi. Bagian
paling fundamental dari Jaringan Fietsel adalah fungsi F: sebuah pemetaan key-
dependent dari suatu input string menjadi output string. Dalam Twofish dilakukan
Fietsel Network sebanyak 16 kali.” Pada twofish, jaringan feistel terdiri dari Input
Whitening, S-boxes, Transformasi Pseudo Hadamard (PHT), dan Output
Whitening.
S-Boxes “Sebuah S-box adalah operasi subsitusi table-driven non linear yang digunakan
dalam block cipher. S-boxes bervariasi antara setiap ukuran input dan ukuran
output-nya, dan bisa diciptakan secara random atau dengan algoritma. Twofish
menggunakan empat bijective, key-dependent dan 8-by-8-bit S-boxes. S-boxes ini
dibuat menggunakan dua permutasi 8-by-8-bit dan material key.” (Schneier dkk,
1998).
Matrik MDS
Code Maximum Distance Separable (MDS) melalui sebuah pemetaan linear dari
elemen field a ke elemen field b, menghasilkan campuran dari vector a+b elemen,
dengan properti jumlah minimum angka tidak nol dalam vector tidak nol paling
kurang b+1. Dengan kata lain “Distance” adalah jumlah elemen yang berbeda
antara dua vector yang berbeda yang dihasilkan oleh MDS paling kurang b+1.
Pemetaan MDS bisa direpresentasikan oleh matriks MDS yang terdiri dari a x b
elemen (Schneier dkk, 1998: 5).
Transformasi Pseudo-Hadamard (PHT)
Transformasi Pseudo-Hadamard (PHT) adalah operasi sederhana yang bekerja
dengan cepat dalam software. Diberikan dua input, a dan b, dan PHT 32 bit
didefinisikan sebagai :
A0 = a + b mod 232
B0 = a + 2b mod 232
Twofish menggunakan PHT 32 bit untuk melakukan mixing terhadap output-nya
dari dua buah fungsi g 32 bit parallel. PHT ini dapat dieksekusi dalam dua opcode
di atas kebanyakan microprocessor modern, termasuk keluarga Pentium.
(Schneier dkk, 1998).
Whitening
Schneier (1998:5) menjabarkan bahwa “whitening merupakan teknik meng-XOR-
kan key material sebelum ronde pertama dan sesudah ronde terakhir. Dalam
serangan terhadap Twofish, terbukti bahwa whitening secara substansial
meningkatkan kesulitan menyerang cipher, dengan jalan menyembunyikan input
spesifik untuk awal dan akhir ronde dari Twofish.”
Key Schedule (Penjadwalan Kunci)
“Key schedule adalah suatu cara dimana bit-bit key diubah menjadi key-key bulat
yang dapat digunakan oleh cipher. Twofish memerlukan material key yang sangat
banyak, dan memiliki key schedule yang rumit” (Schneier dkk, 1998:5). Jadi
secara singkat, key schedule (penjadwalan kunci) adalah proses pengacakan kunci
untuk melakukan proses enkripsi sehingga tingkat kerumitannya menjadi tinggi.
Fungsi F
Fungsi F adalah permutasi yang bergantung pada kunci dengan nilai 64 bit.
Fungsi ini menerima 3 (tiga) argumen, dua buah 32 bit R0 dan R1, dan nomor
putaran untuk menentukan subkunci mana yang dipakai. R0 akan diserahkan ke
fungsi g yang akan mengembalikan T0. R1 akan digeser sejauh 8 bit, yang
kemudian diberikan 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 masing-masing sepanjang 32 bit. Hasil
keluaran ini nantinya akan dipertukarkan dan dimasukkan kembali ke putaran
selanjutnya.
Fungsi G
Fungsi g merupakan jantung dari keseluruhan algoritma twofish. 32 bit masukan X
dari fungsi F dipecah menjadi 4 buah yang masing-masing 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 ke fungsi f.
Algoritma Twofish terdiri dari 3 (tiga) tahapan proses, yaitu penjadwalan
kunci, proses enkripsi, dan proses dekripsi. Langkah-langkah dalam proses
penjadwalan kunci pada algoritma twofish, adalah sebagai berikut :
1. Sebelum melalui tahapan enkripsi, maka harus melalui penjadwalan kunci.
Panjang kunci yang didefinisikan twofish sepanjang 128 bit, 192 bit, dan
256 bit. Apabila input kunci yang dimasukkan kurang dari ketentuan
tersebut, maka akan ditambahkan zero byte sampai panjang kunci
memenuhi ketentuan tersebut.
2. Setelah itu, kunci dibagi menjadi vektor Me, Mo, dan S. Vektor Me dan
Mo digunakan pada fungsi h sebagai list, sedangkan vektor S digunakan
untuk tahap enkripsi pada fungsi g.
3. Memasukkan masing-masing word kunci Kj yang diekspansi, yaitu 2i dan
2i+1 ke dalam fungsi h, yaitu melalui permutasi q0 dan q1 dilanjutkan
dengan matrik MDS.
4. Hasil dari word 2i melalui proses PHT, sedangkan word 2i+1 sebelum
melalui proses PHT dilakukan rotasi ke kiri sejauh 8 bit. Maka hasil dari
proses tersebut menjadi kunci yang sudah terjadwal.
Gambar 1. Diagram Fungsi h (Schneier, 1998 : 9)
Langkah-langkah dalam proses enkripsi pada algoritma twofish, adalah sebagai
berikut :
1. Input plaintext sebesar 128 bit akan dibagi menjadi empat word yaitu P0,
P1, P2, dan P3, yang masing-masing sebesar 32 bit. P0 dan P1 akan menjadi
bagian kiri, sedangkan P2 dan P3 akan menjadi bagian kanan.
2. Plaintext akan melalui proses input whitening (Gambar 2) yaitu input akan
di-XOR dengan empat word kunci yang telah terjadwal yaitu K0, K1, K2,
dan K3. Secara formalnya adalah sebagai berikut : Ro,i = Pi xor Ki
i = 0, …, 3
Gambar 2. Proses Whitening
3. Proses berikutnya, input akan melalui proses pada fungsi F yang meliputi di
dalamnya adalah fungsi g, dan dilanjutkan dengan PHT (pseudo hadamard
transform), dan dilakukan penambahan hasil PHT dengan kunci. Proses
fungsi F tersebut dilakukan secara bertahap. R0 dan R1 yang merupakan hasil
whitening akan menjadi input untuk fungsi F.
4. R0 dan R1 akan dimasukkan ke dalam fungsi g yang merupakan bagian awal
dari fungsi F. Untuk R1, sebelum dimasukkan ke dalam fungsi g akan dirotasi
ke kiri sejauh 8 bit. R0 dan R1 melalui S-box, dan selanjutnya akan dikalikan
dengan matriks MDS. Hasil dari fungsi g ini masing-masing menjadi T0 dan
T1.
5. T0 dan T1 akan melalui proses PHT yang merupakan penggabungan T0 dan
T1 dimana T0 + T1 dan T0 + 2T1. Setelah itu hasil dari PHT tersebut masing-
masing akan ditambahkan dengan kunci yang sudah terjadwal yaitu K2r+8
dan K2r+9. Hasil dari fungsi F adalah F0 dan F1, maka dengan demikian
fungsi F (Gambar 3) telah terpenuhi.
Gambar 3 Fungsi F
6. Setelah itu, F0 dan F1 masing-masing di-XOR dengan R2 dan R3. Hasil dari R2
XOR F0 dirotasi ke kanan sejauh 1 bit. Sedangkan R3 XOR F1, sebelumnya R3
dirotasi ke kiri sejauh 1 bit.
7. Setelah itu, akan dilakukan iterasi sebanyak 16 kali. Setiap iterasi sama
dengan proses sebelumnya.
8. Hasil dari swap blok terakhir (Gambar 4) adalah penukaran bagian kanan dan
kiri yang di-undo.
9. Hasil dari 16 round enkripsi akan melalui output whitening, yaitu proses
peng-XOR-an 16 round enkripsi dengan K4, K5, K6, dan K7.
Gambar 4. Swap Blok Terakhir dan Output Whitening
Langkah-langkah dalam proses dekripsi pada algoritma twofish, sama dengan
proses enkripsi, tetapi hanya arahnya saja yang berlawanan. Proses yang dilalui
secara berurutan yaitu : output whitening, swap blok trakhir, 16 iterasi dekripsi, dan
input whitening. Input untuk proses dekripsi adalah ciphertext dan kunci, untuk
memperoleh plaintext. Kunci untuk dekripsi sama dengan dengan kunci enkripsi,
karena algoritma twofish merupakan algoritma kriptografi dengan kunci bersifat
simetris.
3. Metode dan Perancangan Sistem
Prototype Model adalah metode pengembangan perangkat lunak yang
banyak digunakan. Metode ini memungkinkan adanya interaksi antara
pengembang sistem dengan pengguna sistem nantinya, sehingga dapat mengatasi
ketidakserasian antara pengembang dan pengguna. Bagan mengenai prototype
model dapat dilihat pada Gambar 5.
Gambar 5 Bagan Prototype Model [6]
Tahap-tahap dalam Prototype Model adalah sebagai berikut:
1. Listen to Costumer; Pada tahap ini dilakukan analisis terhadap permasalahan
yang ada, yaitu mendapatkan data dan literatur yang terkait dengan proses
enkripsi dan dekripsi terhadap data file, menggunakan algoritma twofish;
melalui dokumen dan referensi yang ada.
2. Build; Selanjutnya setelah memperoleh data dan mengetahui proses enkripsi
dan dekripsi dengan twofish, langkah berikutnya adalah membuat
perancangan proses enkripsi dan dekripsi dengan menggunakan Data Flow
Diagram (DFD) dan flowchart. Proses enkripsi dan dekripsi diterapkan pada
semua data file. Kunci yang digunakan sesuai dengan ketentuan algoritma
twofish yaitu 128 bit, dengan penyesuaian pada masukan panjang data kunci
yang bersifat fleksibel. Modifikasi juga dilakukan untuk hasil enkripsi yaitu
berupa heksadesimal. Pada proses pembentukan kunci, begitu juga pesan
yang akan dienkripsi, jika tidak sesuai dengan ketentuan algoritma twofish,
maka akan dilakukan penyesuaian. Penyesuaian dilakukan karena algoritma
twofish merupakan algoritma yang berjenis block cipher. Pada algoritma
twofish penyesuaian panjang data kunci menggunakan padding yaitu
penambahan bit 0, sedangkan dalam penelitian ini penyesuaian untuk panjang
data kunci dilakukan melalui proses pengulangan kunci, ide ini didasarkan
pada konsep substitusi berulang pada algoritma vigenere cipher. Sedangkan
penyesuaian untuk panjang data plaintext, dilakukan melalui proses padding,
yaitu penambahan bit 0, pada block yang tidak mencapai 16 byte. Pada tahap
ini juga, dilakukan perancangan user interface.
3. Costumer Test
Pada Tahap ini dilakukan pengujian sistem, yaitu menjalankan proses
implementasi sistem, dengan menguji data file, yaitu data .doc, .pdf, .jpeg,
.png, dan .mp3. Pada tahap ini juga akan diuji apakah hasil yang diberikan
oleh kriptosistem sudah sesuai dengan konsep kriptografi dan algoritma
twofish, menguji waktu proses yang digunakan, serta perubahan ukuran file,
setelah proses enkripsi dan dekripsi dijalankan.
Perancangan Sistem
Perancangan sistem merupakan gambaran, dan perancangan dari sistem yang akan
dibuat. Pada bagian ini, tool yang digunakan adalah Data Flow Diagram (DFD).
DFD digunakan untuk menggambarkan hubungan sistem dengan lingkungan,
mulai dari proses masukan hingga menjadi keluaran.
Data Flow Diagram (DFD)
Diagram konteks atau DFD level 0 dipakai untuk menggambarkan interaksi dan
aliran data yang berlangsung antara entitas di luar sistem dengan sistem itu
sendiri. Bagan diagram konteks dari aplikasi ini terlihat pada Gambar 6.
Gambar 6 Diagram Konteks
Diagram konteks sistem pada Gambar 6, dapat dijelaskan sebagai berikut.
User memasukkan plaintext untuk dilakukan proses enkripsi. Sistem akan
memberikan plain yang telah dienkripsi dan kunci hasil enkripsi. User
memasukkan cipher hasil enkripsi dan kunci ke dalam sistem, dan sistem akan
memberikan output berupa plain hasil dekripsi. Proses yang ada pada diagram
konteks kemudian diuraikan dalam bentuk yang lebih luas, yaitu DFD level 1.
Dalam DFD level 1, diuraikan secara bertingkat dimana peringkat yang lebih
tinggi mendeskripsikan secara lebih rinci apa yang dilakukan masing-masing
proses.
Gambar 7 Diagram DFD Level 1
Gambar 7 menunjukkan DFD level 1 dari sistem, yang dapat dijelaskan
sebagai berikut. Pada level 1 dari sistem ini terdapat dua proses, proses enkripsi
dan proses dekripsi. Pada proses enkripsi, User memasukkan plain ke dalam
sistem, dan sistem akan memberikan output berupa data yang telah dienkripsi, dan
kunci yang digunakan saat proses enkripsi. Pada proses dekripsi, user
memasukkan cipher yang merupakan hasil enkripsi yang akan didekripsi, beserta
kunci ke dalam sistem, dan sistem akan memberikan output berupa data yang
telah didekripsi kepada user.
Proses enkripsi dan dekripsi dengan algoritma Twofish
Pada penelitian ini, kunci yang digunakan adalah kunci dengan panjang
128 bit. Aplikasi yang dikembangkan pada penelitian ini, memberikan
fleksibilitas penggunaan teori dalam aplikasi, berupa proteksi/error trapping
terhadap panjang data yang dimasukkan sebagai kunci. Jika data yang dimasukkan
dalam isian kunci, tidak dalam panjang 128 bit, maka akan dilakukan penyesuaian
untuk mencapai 128 bit, sehingga tidak muncul error pada proses pembuatan
kunci. Hal berikutnya yang dimodifikasi dalam penelitian ini adalah pada hasil
enkripsi (ciphertext) dari algoritma twofish. Ciphertext yang dihasilkan oleh
algoritma Twofish, berbentuk array of byte, yaitu data berupa karakter-karakter
yang tidak dapat dicetak, misalnya karakter white space. Dengan alasan inilah
sehingga dilakukan proses mengubah nilai tiap elemen tersebut menjadi karakter
hexadecimal.
Langkah-langkah proses penjadwalan kunci ke dalam 128 bit kunci (16
byte, dimana 1 karakter 1 byte) di dalam sistem, adalah sebagai berikut:
1. Simpan kunci dalam variabel byte array. -> byte[ ] kunci.
2. Buat 1(satu) variable array penampung dengan panjang 16 byte. -> byte[16]
buffer.
3. Inisialisasi variable index i dan j, dengan nilai masing-masing adalah 0.
4. Lakukan perulangan selama nilai i kurang dari panjang kunci
Salin nilai kunci ke-i ke dalam buffer ke-j ( buffer[j] := kunci[i])
Increment nilai variable index i dan j sebesar 1. (i:=i+1, j:=j+1)
Jika panjang j sama dengan panjang kunci, reset nilai j menjadi 0,
dengan maksud supaya pembacaan kunci dimulai dari depan lagi.
Karena ketika nilai j = panjang kunci, berarti pembacaan sudah sampai
di belakang.
5. Ulangi langkah 4 sampai i bernilai 16
6. Output buffer
Proses penjadwalan kunci dalam bentuk flowchart, ditunjukkan pada
Gambar 8.
Gambar 8 Flowchart Proses Pembentukan Kunci
Kriptosistem yang dibangun, berfungsi untuk melakukan proses enkripsi-
dekripsi pada semua data file, sesuai dengan ketentuan algoritma twofish.
Langkah-langkah yang dikerjakan dalam proses enkripsi, adalah sebagai berikut :
(1) Memulai proses enkripsi (plaintext) dengan ukuran block 128 bit; (2)
Memasukkan kunci yang akan digunakan dalam proses; (3) Jika panjang kunci
yang dimasukkan kurang dari 128 bit maka akan dilakukan penyesuaian panjang
kunci, untuk mencapai 128 bit; (4) Memasukkan file yang akan dienkripsi; (5)
Jika plaintext berukuran 128 bit maka tidak terjadi proses padding; (6) Jika
plaintext berukuran lebih dari 128 bit, maka proses padding akan dilakukan; (7)
Langkah selanjutnya yaitu proses enkripsi 1 (satu) block, jika data belum habis
dibaca maka akan berulang, namun jika data habis dibaca maka sistem akan
menampilkan hasil enkripsi; dan (7) Selesai. Proses enkripsi dalam bentuk
flowchart, ditunjukkan pada Gambar 9.
Gambar 9. Flowchart Proses Enkripsi
Langkah-langkah yang dikerjakan dalam proses dekripsi, adalah sebagai
berikut : (1) Memulai proses dekripsi (ciphertext) dengan ukuran block 128 bit;
(2) Memasukkan kunci yang akan digunakan dalam proses; (3) Jika panjang kunci
yang dimasukkan kurang dari 128 bit, maka akan dilakukan penyesuaian panjang
kunci, untuk mencapai 128 bit; (4) Memasukkan file yang akan didekripsi; (5)