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