Perancangan dan Implementasi Kriptosistem Data...

20
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

Transcript of Perancangan dan Implementasi Kriptosistem Data...

Page 1: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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

Page 2: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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

Page 3: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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).

Page 4: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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.

Page 5: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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

Page 6: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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.

Page 7: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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

Page 8: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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

Page 9: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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])

Page 10: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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.

Page 11: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

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)

Membaca 1 (satu) block (16 byte cipher data); (6) Langkah selanjutnya yaitu

proses dekripsi 1 (satu) block, jika data belum habis dibaca, maka akan berulang;

(7) Menghapus padding; (8) Sistem menampilkan hasil dekripsi; dan (9) Selesai.

Proses dekripsi dalam bentuk flowchart, ditunjukkan pada Gambar 10.

Page 12: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

Gambar 10 Flowchart Proses Dekripsi

4. Pembahasan dan Pengujian

Penerapan Algoritma Twofish (128 bit key length)

Twofish merupakan algoritma kriptografi dengan mode operasi ECB

(Electronic Code Book), yang berarti sebuah blok pada plaintext dienkripsi ke

dalam sebuah blok ciphertext dengan panjang blok yang sama, atau dapat

dikatakan bahwa proses enkripsi dilakukan block per block. 1 (satu) block

berukuran 16 byte. Jika plaintext tidak memenuhi 16 byte, maka dilakukan proses

padding. Proses padding adalah proses penambahan byte-byte dummy berupa

karakter NULL pada byte-byte sisa yang masih kosong pada blok terakhir

Page 13: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

private void kunciTextKeyReleased(java.awt.event.KeyEvent evt) {

String expand = Utility.expandKey(this.kunciText.getText(), 1

16);

this.jTextField1.setText(expand);

byte[] values = expand.getBytes();

String cetak = Utility.printBytes(values);

this.byteKunciText.setText(cetak);

}

private void

generateButtonActionPerformed(java.awt.event.ActionEvent evt) {

Object key = null;

try {

byte[] byteKey = getKey();

key = Twofish_Algorithm.makeKey(byteKey); 2

int[] subKeys = (int[]) ((Object[]) key)[1];

Object[][] data = new Object[subKeys.length][3];

Object[] column = {"index", "SubKey (int decimal)",

"SubKey (hexadecimal)"};

for (int i = 0; i < subKeys.length; i++) {

data[i] = new Object[]{i, subKeys[i],

Utility.intToString(subKeys[i])};

}

this.jTable1.setModel(new DefaultTableModel(data,

column));

} catch (InvalidKeyException ex) {

Logger.getLogger(StepKeyFrame.class.getName()).log(Level.SEVERE,

null, ex);

}

}

plaintext, sehingga ukurannya menjadi sama dengan ukuran blok penyandian.

Ukuran plaintext yang akan disandikan sebagian besar tidak merupakan kelipatan

ukuran blok penyandian. Hal ini mengakibatkan blok terakhir mungkin akan

memiliki ukuran yang lebih kecil dari blok penyandian. Karena pada Block Cipher

mengharuskan blok yang akan disandikan memiliki panjang yang tetap, maka

pada blok terakhir tersebut harus ditambahkan byte-byte tertentu sehingga

ukurannya menjadi sama dengan ukuran blok penyandian.

Dalam penelitian yang dilakukan, Padding menggunakan nilai 0 byte,

karena mewakili istilah “tidak ada arti”. Padding diletakkan di bagian belakang

data yang akan dienkripsi. Pemilihan padding menggunakan pseudocode berikut.

if L mod 16 = 0 padding = 0

else = padding = 16 – ( L mod 16)

dimana: 16: konstanta, 16 byte per block sesuai ketentuan Twofish, dan L panjang

data.

Pembentukan Kunci

Perintah yang digunakan dalam proses pembentukan kunci dan

fleksibilitas kunci, terlihat pada Kode Program 1. Kode Program 1 Kode Program untuk Proses Pembentukan Kunci

Pada Kode Program 1, perintah pada bagian ke-1 menunjukkan proses

penyesuaian panjang kunci yang dibangun. Selanjutnya, proses pembangkitan kunci

yang ada pada sistem, terlihat pada perintah bagian ke-2.

Page 14: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

Implementasi Proses Enkripsi dan Dekripsi Pada Data

Proses enkripsi adalah proses untuk mengacak data sehingga tidak dapat

dibaca oleh pihak yang tidak memiliki hak untuk mengakses data tersebut. Proses

enkripsi bertujuan untuk mengamankan data maupun informasi yang bersifat

rahasia. Halaman untuk Proses Enkripsi ditunjukkan pada Gambar 11.

Gambar 11 Proses Enkripsi Data

Kode Program yang digunakan dalam proses enkripsi terlihat pada Kode

Program 2.

Kode Program 2 Kode Program untuk Proses Enkripsi

public byte[] encrypt(byte[] message, String key) {

mulai = Calendar.getInstance();

StringBuilder builder = new StringBuilder();

Twofish_Algorithm ta = new Twofish_Algorithm();

int keySize = 16;

String expandedKey = expandKey(key, keySize);

builder.append("Panjang Kunci: " 1

+ expandedKey.length() + " bytes\n");

try {

Object sessionKey = ta.makeKey

(expandedKey.getBytes()); 2

byte[] paddedMessage = padMessage(message);

builder.append("Panjang Plain Data: " + 3

paddedMessage.length + " bytes\n");

int tambahan = paddedMessage.length - message.length;

message = paddedMessage;

List<Byte> listResult = new ArrayList<Byte>();

startProgressBar(message.length * 3);

for (int i = 0; i < message.length; i += 16) {

byte[] block = new byte[16];

System.arraycopy(message, i, block, 0,

block.length); 4

byte[] result = ta.blockEncrypt(block, 0, sessionKey);

for (int j = 0; j < result.length; j++) {

listResult.add(result[j]);

}

Page 15: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

public byte[] decrypt() {

Calendar mulai = Calendar.getInstance();

StringBuilder builder = new StringBuilder();

Twofish_Algorithm ta = new Twofish_Algorithm();

int keySize = 16;

String expandedKey = expandKey(this.dKeyText.getText(), 1

keySize);

builder.append("Panjang Kunci: "

+ expandedKey.length() + " bytes\n");

try {

RandomAccessFile r = new

RandomAccessFile(cipherUrlTextField.getText(), "r");

byte[] message = new byte[(int) r.length()];

r.read(message);

builder.append("Panjang cipher Data: " 2

+ r.length() + " bytes\n");

int tambahan = (int) message[0];

Object sessionKey = ta.makeKey(expandedKey.getBytes());

3

List<Byte> listResult = new ArrayList<Byte>();

for (int i = 1; i < message.length; i += 16) {

byte[] block = new byte[16];

System.arraycopy(message, i, block, 0, block.length);

byte[]result = ta.blockDecrypt(block,0,sessionKey); 4

for (int j = 0; j < result.length; j++) {

listResult.add(result[j]);

}

}

Pada Kode Program 2, perintah pada bagian ke-1 menunjukkan pembuatan

informasi mengenai panjang kunci yang dimasukkan untuk dilakukan proses

enkripsi. Perintah pada bagian ke-2 menunjukkan penjadwalan kunci. Selanjutnya,

sistem akan mengambil dan membaca plain data yang sudah dipilih sebelumnya,

untuk menjalankan proses enkripsi seperti terlihat pada perintah bagian ke-3.

Selanjutnya pada perintah bagian ke-4 menunjukkan proses enkripsi per blok. Kode Program 3 Kode Program untuk Proses Dekripsi

Perintah yang digunakan dalam proses dekripsi terlihat pada Kode

Program 3, dengan penjelasan sebagai berikut, perintah pada bagian ke-1

menunjukkan pembuatan informasi mengenai panjang kunci yang dimasukkan

untuk dilakukan proses dekripsi. Selanjutnya, sistem akan mengambil dan

membaca cipher data yang sudah dipilih sebelumnya, untuk dijalankan proses

enkripsi seperti terlihat pada perintah bagian ke-2. Perintah bagian ke-3

menunjukkan penjadwalan kunci. Selanjutnya pada perintah bagian ke-4

menunjukkan proses dekripsi per block, 1 block 16 byte.

Halaman untuk proses dekripsi ditunjukkan pada Gambar 12.

Page 16: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

Gambar 12 Proses Dekripsi Data

Pengujian Pada Proses Enkripsi dan Dekripsi Terhadap Data

Tabel 3 Tabel Pengamatan Ukuran Data Pada Proses

Enkripsi dan Dekripsi NO Nama Data Ukuran Data Asli

(Bytes)

Ukuran Data Hasil Enkripsi (Bytes) Ukuran Data Hasil

Dekripsi (Bytes)

1 k2i.jpg 103,166 103,169 103,166

2 Bab 1.docx 25,761 25,776 25,761

3 672008110.pptx 422,306 422,320 422,306

4 papertwofish.pdf 228,570 228,576 228,570

5 TwofishAppHexa.rar 131,905 131,920 131,905

Gambar 13 Grafik Pengujian Dengan Panjang File Berbeda

0

50

100

150

200

250

300

350

400

450

uku

ran

gam

bar

file yang diuji

Gambar Asli

Enkripsi

Dekripsi

Page 17: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

Berdasarkan hasil pengujian pada Tabel 3, menunjukkan bahwa ukuran file

asli dengan ukuran file yang telah dienkripsi mengalami perbedaan, dimana ukuran

file yang telah dienkripsi lebih besar daripada file asli. Tabel 3 juga menunjukkan

bahwa file asli dengan file hasil dekripsi memiliki ukuran byte yang sama. Tabel 4 Tabel Pengamatan Waktu Proses Enkripsi dan Dekripsi

Terhadap Data

No. Data Ukuran Data Asli

(Bytes) Lamanya Proses Enkripsi (Detik)

Lamanya Proses Dekripsi

(Detik)

1 k2i.jpg 103,166 0.06300000000192085 0.06999999999807915

2 Bab 1.docx 25,761 0.03200000000651926 0.04700000000593718

3 672008110.pptx 422,306 0.1869999999908032 0.20300000000861473

4 Papertwofish.pdf 228,570 0.10899999999674037 0.12899999999674037

5 TwofishAppHexa.rar 131,920 0.07799999999406282 0.07800000000861473

Berdasarkan hasil pengujian pada Tabel 4, menunjukkan bahwa semakin

besar ukuran data, maka waktu yang digunakan akan semakin lama. Tabel 4 juga

menunjukkan bahwa waktu yang digunakan pada proses dekripsi data lebih lama

dibandingkan waktu yang digunakan pada proses enkripsi data, disebabkan karena

ukuran data yang telah dienkripsi lebih besar daripada data asli, Sehingga dapat

dilihat dengan jelas bahwa waktu yang digunakan dalam proses dekripsi lebih

besar daripada waktu yang digunakan pada proses enkripsi.

Waktu proses dipengaruhi oleh ukuran data, dimana semakin besar ukuran

data, maka waktu yang dibutuhkan dalam proses enkripsi dan dekripsi juga

semakin lama. Proses enkripsi data diawali dengan tahapan-tahapan sebagai

berikut: (1) mengambil data yang akan dienkripsi dari lokasi penyimpanan, (2)

memasukkan kunci pada text area yang disediakan, (3) melakukan proses enkripsi

terhadap data yang akan dienkripsi, dan (4) menyimpan hasil enkripsi terhadap

data yang diproses. Proses dekripsi data diawali dengan tahapan-tahapan sebagai

berikut: (1) mengambil data yang terenkripsi dari lokasi penyimpanan, (2)

memasukkan kunci yang sama dengan kunci yang digunakan pada proses

enkripsi, (3) melakukan proses dekripsi terhadap data terenkripsi, menyimpan

hasil dekripsi terhadap data yang diproses. Berdasarkan perbandingan tahapan

proses enkripsi dan dekripsi, dapat disimpulkan bahwa waktu yang dibutuhkan

untuk proses dekripsi lebih lama dibandingkan dengan waktu yang dibutuhkan

untuk proses enkripsi.

Pengujian Compare Data Files

Pengujian Compare data files merupakan proses untuk membandingkan

data file plaintext, file hasil enkripsi, dan file hasil dekripsi, dimana dengan

compare data files, user dapat menemukan perbedaan bytes yang ada antara data

yang dibandingkan. Gambar 17 merupakan tampilan dari compare data files yang

telah dibangun pada sistem.

Page 18: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)

{ try { BufferedImage img1 = ImageIO.read(new

File(this.jTextField1.getText())); 1

BufferedImage img2 = ImageIO.read(new

File(this.jTextField2.getText()));

int[] pixels1 = new int[img1.getWidth() * img1.getHeight()];

int[] pixels2 = new int[img2.getWidth() * img2.getHeight()];

PixelGrabber grabber1 = new PixelGrabber(img1, 0, 0,

img1.getWidth(), img1.getHeight(), pixels1, 0, img1.getWidth());

PixelGrabber grabber2 = new PixelGrabber(img2, 0, 0,

img2.getWidth(), img2.getHeight(), pixels2, 0, img2.getWidth());

grabber1.grabPixels(); grabber2.grabPixels(); int counter = 0;

//Math.abs(pixels1.length - pixels2.length); for (int i = 0; i <

pixels1.length; i++) {

if (i == pixels2.length) { break;

} if (pixels1[i] != pixels2[i]) {

counter++; } }

String kesimpulan = "Differ by " + counter + " 2

pixels\n\r";

this.jTextArea1.setText(kesimpulan);

} catch (Exception ex) {

Logger.getLogger(CompareDialog.class.getName()).log(Level.SEVERE,

null, ex); } try{ int byteDifferent = CompareByte(new

File(this.jTextField1.getText()), new

File(this.jTextField2.getText()));

String k = "Differ by " + byteDifferent + " bytes"; 3

this.jTextArea1.append("\n\r" + k); }catch(Exception ex){

}

}

Gambar 17 Form Hasil Compare Data Files

Gambar 17 menunjukkan sub menu compare images yang tersedia pada

menu tools. Pada form compare data files ini terdapat 4 (empat) tombol sebagai

berikut : (1) Tombol open pada data file 1 berfungsi untuk menampilkan data file

asli (data file yang belum dienkripsi oleh sistem yang dibangun); (2) Tombol open

pada data file 2 berfungsi untuk menampilkan file yang telah didekripsi oleh

sistem; (3) Tombol detect berfungsi untuk memulai proses compare data files;

dan (4) Tombol close berfungsi untuk keluar dari sub menu compare. Gambar 17

juga menunjukkan hasil compare data files yang telah dijalankan, serta

menunjukkan bahwa tidak ada perbedaan antara data file asli dengan data file hasil

dekripsi. Kode Program 4 Kode Program untuk Compare Data Files

Perintah yang digunakan dalam proses compare images terlihat pada Kode

Program 4, yang dijelaskan sebagai berikut. Perintah pada bagian ke-1

menunjukkan proses untuk memasukkan file yang akan dibandingkan.

Selanjutnya, sistem akan menampilkan hasil perbandingan pixels dari data yang

Page 19: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

dibanding, seperti terlihat pada perintah bagian ke-2. Perintah bagian ke-3, sistem

menampilkan hasil perbandingan bytes dari data yang dibanding.

Perbandingan terhadap isi file dilakukan untuk melihat perbedaan byte

yang terdapat pada data file plaintext, data file hasil enkripsi, dan data file hasil

dekripsi. Hasil Perbandingan bisa dilihat pada Gambar 14, Gambar 15, dan

Gambar 16.

(a) Isi File Asli (b) Isi File Hasil (c) Isi File Hasil

Enkripsi Dekripsi

Gambar 14. Perbandingan Isi Data File Image UKSW

(a) Isi File Asli .rar (b) Isi File Hasil (c) Isi File Hasil

Enkripsi Dekripsi

Gambar 15 Perbandingan Isi File twofishapphexa.rar

Berdasarkan hasil pengamatan isi image, file pptx, dan rar pada Gambar

14, dan Gambar 15, maka secara visual dapat dikatakan data asli sama dengan

data hasil dekripsi.

Analisis Hasil Modifikasi Algoritma Twofish

Analisis terhadap modifikasi yang dilakukan dalam penelitian ini, adalah

sebagai berikut : (1) Kunci dalam penelitian ini bersifat asimetrik, karena kunci

pada proses enkripsi berbeda dengan kunci pada proses dekripsi; dimana kunci

pada proses dekripsi ditambahkan dengan angka yang menunjukkan jumlah

padding; hal ini dapat menambah tingkat kesulitan dalam memecahkan

kriptosistem yang dibangun; dan (2) Hasil enkripsi yang direpresentasikan dalam

hexadecimal, menyebabkan tiap karakter hasil enkripsi tersebut akan terdiri dari 2

(dua) digit; Contoh nilai ascii/byte 97, maka nilai dalam hexa adalah 16; nilai byte

92, maka nilai dalam hexa adalah 52.

Page 20: Perancangan dan Implementasi Kriptosistem Data ...repository.uksw.edu/bitstream/123456789/2410/2/T1...algoritma asimetris adalah algoritma yang menggunakan kunci enkripsi dan dekripsi

5. Simpulan

Berdasarkan hasil pembuatan, pembahasan, dan pengujian aplikasi data

dapat dibuat menjadi data yang tidak terbaca dengan menggunakan algoritma

twofish, sehingga kriptosistem yang dibangun dapat memenuhi prinsip kriptografi.

Data yang besar ukurannya akan lebih lama proses enkripsinya jika dibandingkan

dengan data yang berukuran kecil. Panjang plaintext mempengaruhi hasil dari

panjang ciphertext. Panjang kunci yang berbeda tidak akan mempengaruhi

panjang ciphertext satu dengan yang lainnya. Waktu yang dibutuhkan untuk

proses dekripsi lebih lama dibandingkan dengan waktu yang dibutuhkan untuk

proses enkripsi. Saran untuk pengembangan aplikasi ke depan adalah menerapkan

algoritma Twofish pada file database

6. Daftar Pustaka [1] Ariyus, Dony, 2008, Pengantar Ilmu Kriptografi, Yogyakarta: Penerbit

ANDI.

[2] Munir, Rinaldi, 2006, Kriptografi, Bandung: Penerbit Informatika.

[3] Tumanggor, Seti, 2009, Studi Enkripsi dan Dekripsi File dengan

menggunakan algoritma twofish. Jurnal Tahun 2009 (Diakses tanggal 04

februari 2012).

[4] Ratih, 2007, Studi dan Implementasi Enkripsi pengiriman pesan suara

menggunakan algoritma twofish. Jurnal Teknik Informatika, Tahun 2007

(Diakses tanggal 04 februari 2012).

[5] http://www.schneier.com/twofish.html (Diakses tanggal 04 februari 2012).

[6] Pressman, Roger S., 2001, Software Engineering a Practitioner’s

Approach, New York : McGraw-Hill Higher Education.