• Tidak ada hasil yang ditemukan

T1 672008110 Full text

N/A
N/A
Protected

Academic year: 2017

Membagikan "T1 672008110 Full text"

Copied!
20
0
0

Teks penuh

(1)

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

(2)

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

(3)

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

(4)

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 :

(5)

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 inputwhitening (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

(6)

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

(7)

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

(8)

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)

(9)

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

(10)

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

(11)

Gambar 9. Flowchart Proses Enkripsi

(12)

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

(13)

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

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

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, danL 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

(14)

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++) {

(15)

public byte[] decrypt() {

RandomAccessFile(cipherUrlTextField.getText(), "r"); byte[] message = new byte[(int) r.length()];

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.

(16)

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

u

ku

ra

n

gamb

ar

file yang diuji

Gambar Asli

Enkripsi

(17)

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

(18)

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) grabber1.grabPixels(); grabber2.grabPixels(); int counter = 0; //Math.abs(pixels1.length - pixels2.length); for (int i = 0; i < pixels1.length; i++) {

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

(19)

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

(20)

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

Gambar

Gambar 1.  Diagram Fungsi h (Schneier, 1998 : 9)
Gambar 2. Proses Whitening
Gambar 5 Bagan Prototype Model [6]
Gambar 8.   Gambar 8 Flowchart Proses Pembentukan Kunci
+7

Referensi

Dokumen terkait

Dapatan analisis MANOVA menunjukkan terdapat perbezaan yang signifikan dalam tahap kecerdasan emosi, kecerdasan spiritual, perapatan dengan ibu bapa, perapatan dengan rakan sebaya,

Berdasarkan penjelasan diatas dapat disimpulkan dari hasil wawancara anggota bahwa upaya pengurus dalam mensejahterakan anggota baik dari segi, informasi, pelayanan,

Sarana hukum yang dapat dipergunakan untuk mempercepat penyelesaiaan masalah kredit macet perbankan melalui pelaksanaan pasal 1178 ayat (2) KUH Perdata Kreditur

Karate adalah seni beladiri menggunakan tangan kosong dimana tangan dan kaki dilatih dengan sedemikian rupa secara sistematis sehingga serangan secara tiba-tiba

Skripsi ini juga mencakup beberapa fitur baru untuk Services Binusmaya yang terletak pada bagian Home dari Binusmaya versi 3 yaitu fitur Most Visited Services , yaitu

Seorang produsen muslim yakin bahwa apapun yang diusahakannya sesuai dengan ajaran islam tidak membuat hidupnya menjadi kesulitan. Allah SWT telah menjamin rezekinya dan

Alhamdulillahhirabbil’alamin Puji dan syukur penulis panjatkan kehadirat Allah SWT, atas segala karunia dan rahmat-Nya sehingga penulis dapat menyelesaikan penyusunan