Tinjauan Pustaka T1 672008110 Full text

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 : A = a + b mod 2 32 B = a + 2b mod 2 32 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 R dan R 1 , dan nomor putaran untuk menentukan subkunci mana yang dipakai. R0 akan diserahkan ke fungsi g yang akan mengembalikan T . R 1 akan digeser sejauh 8 bit, yang kemudian diberikan juga ke fungsi g yang akan mengembalikan T 1 . Hasil T0 dan T 1 kemudian dikombinasikan ulang menggunakan transformasi pseudo- Hadamard, yang kemudian ditambahkan dengan dua buah 32 bit dari kunci. T = gR T 1 = gshiftLeftR 1 ,8 F = T +T 1 +K 2r +8 mod 2 32 F 1 = T +2T 1 +K 2r +9 mod 2 32 F dan F 1 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 q dan q 1 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 P , P 1 , P 2 , dan P 3 , yang masing-masing sebesar 32 bit. P dan P 1 akan menjadi bagian kiri, sedangkan P 2 dan P 3 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 K , K 1 , K 2 , dan K 3 . Secara formalnya adalah sebagai berikut : R o , i = P i xor K i 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. R dan R 1 yang merupakan hasil whitening akan menjadi input untuk fungsi F. 4. R dan R 1 akan dimasukkan ke dalam fungsi g yang merupakan bagian awal dari fungsi F. Untuk R 1 , sebelum dimasukkan ke dalam fungsi g akan dirotasi ke kiri sejauh 8 bit. R dan R 1 melalui S-box, dan selanjutnya akan dikalikan dengan matriks MDS. Hasil dari fungsi g ini masing-masing menjadi T dan T 1 . 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, F dan F 1 masing-masing di-XOR dengan R 2 dan R 3 . Hasil dari R 2 XOR F dirotasi ke kanan sejauh 1 bit. Sedangkan R 3 XOR F 1 , sebelumnya R 3 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 K 4 , K 5 , K 6 , dan K 7. 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