Kunci Lemah dan Kunci Setengah Lemah Keamanan Twofish

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 Padding pada blok terakhir bisa dilakukan dengan berbagai macam cara,misalnya penambahan bit-bit tertentu. Salah satu contoh penerapan padding dengan cara menambahkan jumlah total padding sebagai byte terakhir pada blok terakhir plaintext. Misal panjang blok adalah 128 bit 16 byte, dan pada blok terakhir terdiri dari 88 bit11 byte. Sehingga jumlah padding yang diperlukan adalah 5 byte, yaitu dengan menambahkan angka nol sebanyak 4 byte,kemudian menambahkan angka 5 sebanyak satu byte. Cara lain dapat menggunakan karakter end-of-file pada byte terakhir lalu diberi padding setelahnya.

2.4.4 Ekspansi

Teknik ini memperbanyak jumlah bit pada blok plainteks berdasarkan aturan tertentu, misalnya dari 32 bit menjadi 48 bit. Dalam praktek, aturan eskpansi dinyatakan dengan tabel.

2.4.5 Kompresi

Teknik ini kebalikan dari ekspansi, di mana jumlah bit pada blok plainteks diciutkan berdasarkan aturan tertentu. Dalam praktek, aturan kompresi dinyatakan dengan tabel.

2.5 Kunci Lemah dan Kunci Setengah Lemah

Dalam kriptografi dikenal istilah kunci lemah weak-key dan kunci setengah lemah semi weak-key. Kunci lemah adalah kunci yang apabila mengenkripsi suatu plaintext kemudian dienkripsi lagi menggunakan kunci yang sama, maka ciphertextnya adalah Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 plaintext itu sendiri. Sedangkan yang disebut dengan kunci setengah lemah adalah sepasang kunci yang memiliki sifat jika sebuah plaintext dienkripsi dengan suatu kunci, akan dapat dienkripsi dengan kunci yang lain.

2.6 Twofish

Pada tahun 1972 dan 1974, US the National Bureau of Standards sekarang bernama the National Institute of Standards and Technology, atau NIST mengeluarkan publikasi pertama untuk sebuah standar enkripsi, yang menghasilkan algoritma data Encryption Standard DES, yang tidak dapat disangkal sebagai algoritma kriptografi yang sangat terkenal dan sangat berhasil. Disamping kepopulerannya, DES sering diserang dengan berbagai kontroversi. Beberapa orang kriptografer mempertanyakan desain algoritma DES yang mengimplementasikan kunci dan ukuran blok yang terlalu kecil. Dengan berkembangnya pengetahuan tentang kunci terdistribusi akhir-akhir ini, tidak ada keraguan bahwa DES memang memiliki ukuran blok dan kunci yang tidak sesuai dengan kebutuhan masyarakat saat ini. Triple-DES ditawarkan untuk menjawab pertanyaan diatas, dan memang merupakan solusi sementara dari permaslahan diatas. TDES telah diadopsi oleh banyak sekali aplikasi yang membutuhkan tingkat keamanan tinggi seperti perbankan namun algoritma TDES dirasakan sangat lamban, apalagi dengan hardware pada saat itu. Merespon kebutuhan masyarakat untuk pengganti DES, NIST mengeluarkan semacam sayembara bernamakan program Advanced Encryption Standard AES pada tahun 1997. Sebuah sayembara untuk para kriptografer dunia untuk merancang algoritma kriptografi baru sebagai calon pengganti DES. NIST mengumumkan syarat- syarat minimum yang harus dimiliki algoritma baru tersebut. Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 Cara penilaian untuk menentukan algoritma terbaik yaitu dengan cara algoritma yang masuk dipublikasikan ke umum, dan dengan mendengar tanggapan masyarakat akan ditemukan algoritma yang terbaik.

2.6.1 Tujuan Desain Twofish

Algoritma Twofish didesain untuk memenuhi kriteria yang ditetapkan oleh NIST untuk sayembara penentuan standar algoritma. Kriteria tersebut diantaranya adalah : 1. Menggunakan 128-bit enkripsi dengan metode blok cipher. 2. Panjang kunci 128 bit, 192 bit, dan 256 bit. 3. Tidak memiliki kunci lemah 4. Efisien baik jika digunakan di Intel Pentium Pro maunum perangkat lunak ataupun keras lainnya 5. Memiliki desain yang fleksibel sehingga dapat digunakan untuk stream chiper, hash function, dan MAC. 6. Design yang sederhana. Kriteria tambahan yang dimiliki oleh algoritma Twofish adalah : 1. Dapat menerima kunci lebih dari 256 bit 2. Untuk versi dengan optimasi penuh proses enkripsi data dapat dilakukan kurang dari 500 clock cycle per blok pada Pentium, Pentium Pro, dan Pentium II. 3. Untuk pemrosesan 32 blok dengan 128 bit kunci dapat memakan waktu yang lebih sedikit. 4. Tidak memiliki operasi yang dapat mengurangi efisiensi jika digunakan pada mikroprosesor 8-bit, 16-bit, 32-bit maupun 64 bit. 5. Memiliki berbagai variasi performansi dari key schedule

2.6.2 Blok Pembangun Twofish

Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 Secara garis besar algoritma twofish dibangun dari beberapa algoritma utama, algoritmaalgoritma tersebut diambil dari prinsip pembangunan algoritma cipher blok. Ada 6 prinsip yang digunakan yaitu :

1. Jaringan Feistel

Hampir semua algoritma cipher blok bekerja dalam model jaringan Feistel. Jaringan Feistel ditemukan oleh Horst Feistel dalam desainnya tentang Lucifer, dan dipopulerkan oleh DES. Jaringan Feistel adalah metode umum untuk mentransformasi fungsi apapun biasa disebut fungsi F ke dalam permutasi. Beberapa algoritma kriptografi lain yang menggunakan jaringan Feistel misalnya LOKI, GOST, FEAL, Blowfish, Khufu Khafre, dan RC-5. Model jaringan Feistel bersifat reversible, untuk proses enkripsi dan dekripsi, sehingga kita tidak perlu membuat algoritma baru untuk mendekripsi cipherteks menjadi plainteks. Bagian yang penting dari jaringan Feistel adalah fungsi F, pemetaan string input menjadi string output berdasarkan kunci yang digunakan. Fungsi F selalu tidak linear dan mungkin tidak surjektif: di mana : n : ukuran blok dari jaringan Feistel F : fungsi yang menerima n=2 bit dari blok dan N bit kunci sebagai input dan menghasilkan output n=2 bit. Dalam setiap putaran, blok sumber adalah input fungsi F dan output dari fungsi F di-XOR-kan dengan blok target, lalu dua blok ini dipertukarkan sebelum masuk ke putaran berikutnya. Ide yang digunakan adalah untuk mengambil fungsi F, yang mungkin merupakan algoritma enkripsi yang lemah jika berdiri sendiri, dan melakukan perulangan untuk membuat algoritma enkripsi yang kuat. Dua putaran pada jaringan Feistel disebut satu cycle, dan dalam satu cycle setiap bit Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 dari blok teks telah dimodifikasi sekali. Twofish merupakan jaringan Feistel 16- putaran, dengan fungsi F bijektif. Feistel cipher beroperasi terhadap panjang blok data tetap sepanjang n genap, kemudian membagi 2 blok tersebut dengan panjang masing-masing n2, yang dinotasikan dengan L dan R. Feistel cipher menerapkan metode cipher berulang dengan masukan pada putaran ke-I yang didapat dari keluaran sebelumnya, yang secara matematis dapat dinyatakan sebagai berikut : Li=Ri-1 Ri=Li-1 ⊕ fRi-1,Ki; i=1,2,3,…,r Ki adalah kunci untuk putaran ke-i dan f adalah fungsi transformasi. Blok plaintext adalah gabungan L dan R awal atau secara formal plaintext dinyatakan dengan Lo, Ro. Sedangkan blok ciphertext didapatkan dari L dan R hasil putaran terakhir setelah terlebih dahulu dipertukarkan atau dinyatakan dengan Rr, Lr.

2. Kotak-S S-boxes

Kotak-S adalah matriks yang berisi substitusi non-linear yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain dan digunakan di banyak cipher blok. Kotak-S memiliki ukuran input dan ukuran output yang bervariasi. Ada empat pendekatan yang digunakan dalam mengisi Kotak-S : dipilih secara acak, dipilih secara acak lalu diuji, dibut oleh orang, dihitung secara matematis. Kotak-S pertama digunakan di Lucifer, lalu DES dan diikuti banyak algoritma enkripsi yang lain. Twofish menggunakan empat buah 8x8 bit Kotak-S yang berbeda, bijektif, dan bergantung pada kunci. Kotak-S ini dibuat menggunakan 8x8 bit permutasi dan material kunci. Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009

3. MDS Matrices

Kode MDS Maximum Distance Separable pada sebuah field adalah pemetaan liner dari x elemen field ke y elemen field, dan menghasilkan vektor komposit x + y elemen, dengan ketentuan bahwa jumlah minimum dari elemen bukan nol pada setiap vektor bukan nol paling sedikit y + 1. Dengan kata lain, jumlah elemen yang berbeda diantara dua vektor berbeda yang dihasilkan oleh pemetaan MDS paling sedikit y + 1. Dapat dibuktikan dengan mudah bahwa tidak ada pemetaan yang dapat memiliki jarak pisah yang lebih besar diantara dua vektor yang berbeda, maka disebut jarak pisah maksimum maximum distance separable. Pemetaan MDS dapat direpresentasikan dengan sebuah MDS matriks yang teridiri dari x × y elemen. Kode perbaikan-kesalahan Reed-Solomon RS adalah MDS. Kondisi yang diperlukan untuk sebuah x × y matriks untuk menjadi MDS adalah semua kemungkinan submatriks kotak, yang diperoleh dengan membuang kolom atau baris, adalah tidak singular. Serge Vaudenay pertama kali mengajukan matriks MDS sebagai elemen desain kode. Shark dan Square menggunakan matrika MDS, meskipun konstruksinya pertama kali ditemukan di kode Manta yang tidak dipublikasikan. Twofish menggunakan matriks MDS tunggal 4x4.

4. Transformasi Pseudo-Hadamard

Transformasi Pseudo -Hadamard PHT adalah sebuah operasi pencampuran sederhana yang berjalan secara cepat dalam perangkat lunak. 32-bit PHT dengan dua masukkan didefinisikan sebagai : a’ = a + b mod 2 32 b’ = a + 2b mod 2 32 Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 SAFER menggunakan 8-bit PHT untuk difusinya. Twofish menggunakan 32-bit PHT untuk mengubah keluaran dari fungsi g- nya. PHT ini dapat dieksekusi dalam dua opcodes di mikroprosesor modern seperti keluarga Pentium.

5. Whitening

Whitening, sebuah teknik meng-XOR-kan material kunci sebelum putaran pertama dan setelah putaran terakhir, digunakan oleh Merkle dalam KhufuKhafre, dan ditemukan oleh Rivest untuk DES-X. Whitening menambah tingkat kesulitan serangan pencarian kunci terhadap ciphertext, dengan menyembunyikan masukkan spesifik terhadap putaran pertama dan putaran terakhir dari fungsi F. Twofish meng-XOR-kan 128-bit sub-kunci sebelum putaran Feistel yang pertama, dan 128-bit lagi setelah putaran Feistel terakhir. Sub-kunci ini diperhitungkan dengan cara yang sama seperti sub-kunci putaran, tetapi tidak digunakan di tempat lain dalam cipher.

6. Penjadwalan Kunci

Penjadwalan kunci adalah proses pengubahan bit-bit kunci menjadi sub-kunci tiap putaran yang dapat digunakan oleh cipher. Twofish memerlukan banyak material kunci dan memiliki penjadwalan kunci yang rumit. Untuk memfasilitasi analisis, penjadwalan kunci menggunakan primitif yang sama seperti fungsi putaran.

2.6.3 Algoritma Twofish

Twofish merupakan algoritma kriptografi kunci simetrik cipher blok dengan panjang setiap blok adalah tetap 128 bit. Sedangkan kunci yang dapat diterima adalah: 128, 192, atau 256 bit. Twofish memanfaatkan teknik pemanipulasian bit, kotak permutasipemutihan, jaringan feistel, pemutaran ulang dengan pergiliran kunci Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 dengan jumlah perputaran dan pergiliran kunci sebanyak 16 kali, tranformasi pseudo- Hadamard, ekspansi dan filter, dan kotak MDS Most Distance Separable. Berikut diagram dari blok cipher Twofish Gambar 2.5 Struktur Algoritma Twofish Langkah-langkah algoritma twofish adalah sebagai berikut: 1. Masukan satu blok plain teks adalah 128 bit. Satu blok tersebut dibagi menjadi 4 buah subblok yang masing-masing sepanjang 32 bit A, B, C, dan D. 2. Masing-masing subblok tersebut diputihkan dengan mengxorkan dengan kunci K , K 1 , K 2 , dan K 3 . Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 Langkah-langkah 1 putaran adalah sebagai berikut: 1. 2 buah 32 bit yang kiri A dan B merupakan input dari fungsi g yang merupakan bagian dari fungsi f, yang salah satunya B di geser ke kiri sejauh 8 bit dahulu. 2. Fungsi g memiliki 4 buah kotak substitusi yang dibangkitkan oleh kunci. 3. Keluaran fungsi kotak substitusi dilakukan percampuran linear menggunakan kotak Most Distance Separable. 4. Keluaran fungsi g dimasukkan ke fungsi transformasi pseudo-Hadamard, kemudian ditambahkan dengan 2 buah 32 bit dari kunci. 5. Dua buah 32 bit hasil kemudian di xorkan dengan C dan D. Hasil xor dengan C digeser ke kanan sejauh 1 bit. Dan untuk D sebelum dixorkan digeser ke kiri sejauh 1 bit. 6. 2 buah 32 bit kiri dan kanan dipertukarkan A dan B dipertukarkan dengan C dan D. Langkah diatas dilakukan hingga 16 kali putaran. Kemudian langkah-langkah selanjutnya: 1. Hasil keluaran setelah diputar 16 kali, ditukar lagi A dan B diperukarkan dengan C dan D. 2. Hasil dari pertukaran tersebut di xorkan dengan empat buah 32 bit dari kunci menghasilkan cipher teks.

1. Fungsi F

Fungsi F adalah permutasi yang bergantung pada kunci dengan nilai 64 bit. Fungsi ini menerima 3 argumen, dua buah 32 bit R0 dan R1, dan nomor putaran untuk Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 menentukan subkunci mana yang dipakai. R0 akan diserahkan ke fungsi g yang akan mengembalikan T0. R1 akan digeser sejauh 8 bit yang kemudian di berikan 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 = gR0 T1 = gshiftLeftR1,8 F0 = T0+T1+K 2r+8 mod 2 32 F1 = T0+2T1+K 2r+9 mod 2 32 F0 dan F1 adalah hasil dari F, yang masingmasing sepanjang 32 bit. Hasil keluaran ini nantinya akan dipertukarkan dan dimasukkan kembali ke putaran selanjutnya.

2. Fungsi G

Fungsi g merupakan jantung dari keseluruhan algoritma twofish. 32 bit masukan X dari fungsi F dipecah menajdi 4 buah yang masingmasing 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 kembali ke fungsi F. Matriks MDS yang setiap elemennya ditampilkan sebagai heksadesimal adalah sebagai berikut:

2.7 Keamanan Twofish

Tingakat keamanan suatu algoritma kunci simetris tipe cipher blok dapat diukur dari tingkat kerumitan algoritma, panjang blok yang digunakan, panjang kunci yang Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 digunakan dan tingkat pengacakan plainteks terhadap cipherteks. Algoritma Twofish menggunakan jaringan Feistel dan kotak-S dalam implementasinya. Karena itu tingkat keamanan algoritma ini juga dipengaruhi oleh cara penjadwalan kunci internal dan cara pembangkitan kunci-S. Semakin tinggi tingkat kerumitan suatu algoritma maka algoritma tersebut semakin sulit dipecahkan. Semakin besar ukuran blok yang digunakan akan mengakibatkan semakin jarangnya terdapat chiperteks berulang yang berasal dari plainteks yang sama. Hal ini menyebabkan hubungan antara plainteks dan chiperteks menjadi kabur, sehingga mempersulit kriptanalisis untuk melakukan penyerangan terhadap algoritma kriptografi yang digunakan. Ukuran panjang suatu kunci juga berpengaruh pada kekuatan algoritma. Biasanya semakin panjang dan acak suatu kunci akan mempersulit penyerangan algoritma kriptografi. Tingkat pengacakan plainteks dan cipherteks yang tinggi mengakibatkan sulitnya mencari hubungan antara plainteks dan cipherteks. Hal ini akan mempersulit kriptanalisis untuk melakukan penyerangan. Kotak-S digunakan algoritma Twofish dalam fungsi f pada jaringan feistel. Cara pembangkitan kotak-S ini mempengaruhi tingkat kerumitan pada fungsi f tersebut. Ada dua macam pendekatan dalam pembangkitan kotak-S ini. Pertama adalah pembangkitan kotak-S secara statis, pembangkitan secara statis ini berarti kotak-S yang digunakan tidak bergantung pada plainteks dan kunci yang dimasukkan. Pendekatan kedua adalah pembangkitan kotak-S secara dinamis. Pembangkit dinamis ini biasanya diimplementasikan dengan menggunakan fungsi bilangan acak. BAB 3 Seti Fauziah Tumanggor : Studi Enkripsi Dan Dekripsi File Dengan Menggunakan Algoritma Twofish, 2009. USU Repository © 2009 PEMBAHASAN

3.1 Analisa Masukan