Anda di halaman 1dari 7

Analisa dan Perbandingan Algoritma Twofish dan Rijndael

Willy Setiawan - 13508043 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia if18043@students.if.itb.ac.id

Abstrak Kriptografi merupakan ilmu yang mempelajari


tentang bagaimana cara membuat suatu pesan hanya bisa dibaca oleh pihak yang berwenang untuk membacanya. Dalam makalah ini , akan dibahas mengenai perbedaan dari dua buah algoritma kriptografi yang terkenal, yaitu algoritma Twofish dan algoritma Rijndael. Kedua algoritma ini adalah algoritma yang berpartisipasi dalam lomba untuk menetapkan standard AES (Advanced Encryption Standard) yang diselenggarakan oleh NIST(National Institute of Standards and Technology). Algoritma Twofish berhasil masuk sebagai finalis, sedangkan algoritma Rijndael berhasil menjadi juara. Dalam makalah ini , perbedaan yang dibahas akan dilihat dari rancangan algoritma enkripsi yang dipakai dan waktu eksekusi ketika melakukan enkripsi suatu kalimat. Dari hasil percobaan yang akan dilakukan, dapat diperoleh perbandingan tentang algoritma mana yang lebih baik. Kata Kuncicipher block , Advanced Standard, Rijndael, Twofish, perbandingan Encryption

I. PENDAHULUAN
Pada jaman sekarang, penyebaran informasi sangatlah mudah. Banyak sekali alat-alat pendukung agar seseorang berbagi informasi dengan orang lain. Orang tak perlu harus saling bertemu untuk mendapatkan informasi yang dia inginkan dari orang tersebut. Walau terlihat praktis sekali, banyak juga tindakan tak bertanggung jawab dari orang-orang yang ingin mencuri informasi yang tak seharusnya mereka dapat. Karena itu, berkembanglah ilmu untuk dapat memastikan bahwa hanya pihak yang berhak mendapatkan informasi tersebut yang bisa mengetahuinya saja. Kriptografi adalah ilmu mengenai tulisan rahasia dengan tujuan menyembunyikan arti pesan. Selain pengertian tersebut, terdapat pula pengertian kriptografi sebagai ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data.Penggunaan dari kriptografi sangatlah luas. Di dunia dimana informasi-informasi sudah dalam bentuk digital, ilmu kriptografi pun juga berkembang sampai bagaimana menyembunyikan pesan pada komputer digital. Banyak metode yang digunakan untuk melakukan enkripsi pesan pada komputer digital,

tetapi yang terkenal adalah dengan metode block cipher. Metode block cipher adalah metode pengenkripsian pesan sesuai panjang blok yang ditentukan.Block cipher berbeda dengan pendahulunya,yaitu stream cipher. Jika pada stream cipher, bit dienkripsi secara individual. Sedangkan, pada block cipher, proses enkripsi dilakukan dengan mengenkripsi seluruh blok plainteks beberapa bit dengan kunci yang sama. Hal ini menyatakan bahwa enkripsi dari bit plainteks bergantung pada bit plainteks yang lain dalam blok yang sama. Terdapat banyak algoritma yang menggunakan metode block cipher ini dan dijadikan sebagai standard dalam melakukan enkripsi data. AES ,yang merupakan kependekan dari Advanced Encryption Standard adalah standard baru yang dipakai dalam melakukan enkripsi data digital pada jaman sekarang ini.AES menggantikan pendahulunya,yaitu DES karena sudah dianggap terlalu tua. Algoritma yang menjadi standard bagi AES ditentukan melalui kompetisi yang diadakan oleh National Institute of Standards and Technology (NIST). Pada kompetisi tersebut, finalis yang terpilih adalah algoritma Twofish , Rijndael, MARS , RC6,dan Serpent. Yang akan menjadi topic pembahasan adalah algoritma Twofish dan Rijndael.

II. PEMBAHASAN
A. Stream Cipher Stream cipher melakukan enkripsi tiap bit. Hal ini dicapai dengan menambahkan bit dari sebuah key stream ke bit plainteks.Ada stream yang bersifat sinkron dimana key stream bergantung hanya kepada kunci, dan yang tidak sinkron dimana key stream juga bergantung pada cipherteks

Gambar 1. Skema Stream Cipher

Jika terdapat titik - titik pada gambar 1, maka stream cipher yang ada merupakan yang bersifat tidak sinkron.

Makalah IF3058 Kriptografi Sem. II Tahun 2010/2011

Operasi yang dilakukan untuk enkripsi ataupun dekripsi dengan menggunakan stream cipher biasanya adalah operasi XOR secara bit. Untuk melakukan dekripsi, cipherteks cukup di XOR kan dengan kunci yang sama dengan kunci enkripsi. Kelebihan dari stream cipher adalah pemrosesannya yang cepat, dikarenakan pemrosesan yang dilakukan adalah pemrosesan tiap bit. Salah satu teknik enkripsi dengan menggunakan stream cipher adalah one-time pad. One-time pad, atau yang disebut juga sebagai Vernam cipher adalah enkripsi dengan membangkitkan string dari bit secara random sebagai kunci. Keystream memiliki panjang yang sama dengan pesan plainteks dan string bit dikombinasikan dengan menggunakan operasi XOR untuk menghasilkan cipherteks. Contoh dari penggunaan stream cipher yang masih sering dipakai adalah algoritma RC4.Algoritma ini adalah algoritma yang sering dipakai pada protocol seperti Secure Socket Layer (SSL) dan WEP yang digunakan untuk melindungi jaringan wireless.

Block Chaining (CBC), Cipher Feedback (CFB), dan Output Feedback (OFB). - Electronic Code Book Pemrosesan dengan menggunakan mode Electronic Code Book (ECB) menggunakan metode yang sama dengan gambar 2 untuk melakukan enkripsi dan gambar 3 untuk melakukan dekripsi. Tiap blok plainteks yang identik akan memberikan blok cipherteks yang identik juga. Keuntungan dengan pemrosesan dengan ECB adalah pemrosesan dengan algoritma ini dapat berbeda- beda tiap bloknya. Sebagai contoh, jika blok pertama menggunakan algoritma A, maka blok kedua dapat menggunakan algoritma B, dan seterusnya. Kekurangan dari metode ini adalah tiap plainteks pada blok tidak saling tergantung, sehingga mudah untuk dianalisis frekuensi kemunculan kata nya. - Cipher Block Chaining Pada pemrosesan dengan Cipher Block Chaining Mode (CBC), setiap blok plainteks di XOR kan dengan cipherteks sebelumnya. Sebuah Initialization vector digunakan digunakan sebagai seed untuk pemrosesan.

B. Block Cipher Blok cipher adalah sebuah cipher dengan kunci simetrik yang beroperasi pada kumpulan bit dengan panjang yang tetap, yang dinamakan blok dengan transformasi yang tidak bervariasi. Sebagai contoh, blok yang menerima masukan plainteks sebesar 128 bit, akan memberikan blok cipherteks sebesar 128 bit juga. Jika ada pesan yang ukurannya lebih besar dari ukuran blok, maka dilakukan pemecahan pesan menjadi beberapa buah blok dan melakukan pemrosesan enkripsi atau dekripsi tiap bloknya.Bagaimanapun juga, pada metode ini semua blok dienkripsi dengan kunci yang sama, yang mengurangi keamanan. Untuk mengatasi masalah ini, berbagai mode operasi digunakan untuk meningkatkan keamanan.

Gambar 4. Skema pemrosesan dengan mode CBC

Pemrosesan dengan menggunakan mode CBC lebih aman, karena memiliki ketergantungan antar blok. Blok plainteks yang sama tidak memberikan blok cipherteks yang sama,maka kriptanalisis akan menjadi lebih sulit. Tetapi teknik ini memiliki beberapa kelemahan. Kesalahan 1 bit pada blok plainteks akan merambat pada blok cipherteks yang berkoresponden dan blok cipherteks berikutnya. Tetapi, hal ini berkebalikan pada proses dekripsi. Kesalahan satu bit pada blok cipherteks hanya mempengaruhi blok plainteks yang berkoresponden dan satu bit plainteks berikutnya (pada posisi bit yang berkoresponden pula). - Cipher Feedback (CFB) Pada pemrosesan dengan mode CFB, blok cipherteks sebelumnya di enkripsi dan output yang dihasilkan dikombinasikan dengan blok plainteks dengan menggunakan XOR untuk menghasilkan blok cipherteks.Hal ini memungkinkan penggunaan kurang dari 1 blok data penuh. Sebuah initialization vector dipakai sebagai seed pada proses. Plainteks tidak dapat dimanipulasi secara langsung kecuali dengan penghapusan blok dari awal atau akhir dari cipherteks. Dengan mode CFB dan feedback penuh, ketika 2 blok cipherteks identik, output dari operasi blok

Gambar 2. Skema enkripsi block cipher

Gambar 3. Skema dekripsi block cipher

Terdapat 4 mode ketika melakukan pemrosesan secara block cipher , yaitu Electronic Code Book (ECB), Cipher

Makalah IF3058 Kriptografi Sem. II Tahun 2010/2011

cipher pada langkah selanjutnya juga identik.

Gambar 5. Skema enkripsi dengan mode CFB

- Output Feedback Mode Output Feedback (OFB) mirip dengan mode CFB. Yang membuatnya berbeda adalah jumlah yang ter XOR tiap block plainteks dibangkitkan secara independen baik dari plainteks maupun cipherteks. Diperlukan sebuah initialization vector agar digunakan sebagai seed untuk kumpulan block data dan tiap blok data diperoleh dari enkripsi blok data sebelumnya. Mode OFB memiliki keuntungan yang lebih dibandingkan dengan mode CFB dalam hal kesalahan bit pada saat transmisi tidak mempengaruhi pada saat dekripsi.

Gambar 7. Skema algoritma Twofish

- Jaringan Feistel Jaringan Feistel adalah metode umum dalam melakukan transformasi fungsi menjadi permutasi. Skema ini ditemukan oleh Horst Feistel pada desain algoritma Lucifer,dan dipopulerkan oleh DES. Pada Feistel cipher, fungsi perputaran mengandung juga mengambil satu bagian dari data yang sedang dienkripsi, memrosesnya ke dalam fungsi yang key dependent, dan melakukan XOR hasilnya kepada bagian block lainnya.

Gambar 6. Skema enkripsi dengan mode OFB

C. Algoritma Twofish Twofish adalah algoritma kriptografi yang beroperasi dalam mode block cipher. Twofish menjadi salah satu finalis dalam kompetisi Advanced Encrytipon Standard (AES) yang diadakan oleh National Institute of Standards and Technology. (NIST). Twofish adalah block cipher yang berukuran 128-bit yang dapat menerima kunci dengan panjang mencapai 256 bit. Twofish menggunakan jaringan Feistel sebanyak 16 kali dengan fungsi f di dalam jaringan Feistel tersebut menggunakan S-box. Selain itu, Twofish juga menggunakan transformasi pseudo Hadamard , metode whitening, Maximum Distance Separable (MDS), dan penjadwalan kunci.

Gambar 8. Jaringan Feistel

- Whitening Whitening merupakan salah satu teknik untuk mempersulit pencarian kunci pada cipher. Whitening menggunakan material kunci untuk di XOR kan dengan plainteks pada bagian sebelum memroses enkripsi dan setelah di enkripsi. Proses dari whitening dapat dilihat pada gambar 9.

Gambar 9. Proses Whitening

Makalah IF3058 Kriptografi Sem. II Tahun 2010/2011

Whitening yang digunakan pada Twofish dilakukan dengan melakukan XOR terhadap 128 bit subkey pada sebelum putaran pertama Feistel , dan 128 bit lainnya setelah putaran Feistel terakhir. - S- Box S- box adalah sebuah tabel substitusi yang banyak digunakan pada block cipher.S-box bervariasi dalam ukuran masukan dan ukuran keluaran, dan dapat dibuat secara random atau secara algoritmik. Twofish menggunakan empat buah S-box berukuran 8x8 bit yang berbeda dan bergantung kepada kunci. Tiap S-box dibangun dengan menggunakan dua buah permutasi tetap 8x8 bit dan beberapa byte dari material kunci. - Matriks MDS Sebuah MDS adalah pemetaan linear dari elemen a ke elemen b, menghasilkan vector gabungan dari elemen a+b, dengan property nilai minimum dari elemen bukan nol pada tiap vector bukan nol paling sedikit b+1. Matriks MDS berguna untuk membangun block untuk cipher karena menjamin beberapa tingkat difusi. Jika satu dari elemen input berubah, setiap elemen output harus berubah. Twofish menggunakan sebuah matriks MDS berukuran 4x4 dengan GF(28). - Transformasi Pseudo-Hadamard Transformasi pseudo-Hadamard (PHT) adalah operasi pencampuran sederhana. Jika diberikan 2 masukan a dan b, maka PHT didefinisikan dengan : a = a + b mod 232 b = a + 2b mod 232 Twofish menggunakan PHT 32 bit untuk mencampurkan output dari fungsi g. - Key Schedule Key schedule atau penjadwalan kunci adalah pengubahan bit kunci menjadi round key yang cipher dapat gunakan. Twofish memerlukan banyak material kunci, dan memiliki penjadwalan kunci yang rumit.Untuk memfasilitasi analis, jadwal kunci menggunakan primitive seperti pada round function. Pada gambar 7 diperlihatkan mengenai gambaran terhadap pemrosesan dengan Twofish. Byte plainteks yang berjumlah 16 p0,p1,, p15 dipisah menjadi 4 kata P0,,P3 yang masing masing berukuran 32 bit. Pada tahap whitening, kata-kata tersebut di XOR kan dengan 4 kata dari kunci yang diperlebar : R0,I = Pi Ki , i = 0,,3 Tiap putaran, 2 kata pertama digunakan sebagai input terhadap fungsi F, yang juga mengambil nomor putaran sebagai masukan. Kata ketiga di XOR kan dengan keluaran dari F dan dirotasi ke kanan 1 bit. Kata keempat dirotasikan ke kiri 1 bit dan di XOR kan dengan kata keluaran kedua dari F. Terakhir, kedua potongan ditukar. (Fr,0,Fr,1) = F(Rr,0,Rr,1,r) Rr+1,0 = ROR(Rr,2 Fr,0,1) Rr+1,1 = ROL(Rr,3,1) Fr,1) Rr+1,2 = Rr,0

Rr+1,3 = Rr,1 untuk r = 0,,15 dan dimana ROR dan ROL adalah fungsi untuk rotasi argument pertama ke kiri atau ke kanan. Kemudian, tahap whitening output membatalkan penukaran untuk putaran terakhir, dan melakukan XOR terhadap data dengan menggunakan 4 kata dari kunci. Ci = R16,(i+2) mod 4Ki+4 i = 0,...,3 Empat kata dari cipherteks kemudian ditulis sebagai 16 byte, c0,,c15. - Fungsi F Fungsi F adalah permutasi yang tergantung pada kunci pada nilai 64 bit. Memerlukan 3 argumen : 2 kata masukan R0 dan R1, dan nomor r digunakan untuk memilih subkey yang benar. R0 dilewatkan melalui fungsi g,yang menghasillkan T0. R1 dirotasi ke kiri 8 bit dan kemudian dilakukan fungsi dan menghasilkan T1. Hasil T0 dan T1 dikombinasikan menggunakan PHT dan 2 kata dari kunci ditambahkan T0 = g(R0) T1 = g(ROL(R1,8)) F0 = (T0 + T1 + K2r+8) mod 232 F1 = (T0 + 2T1 + K2r+9) mod 232 - Fungsi g Masukan kata X dipisah menjadi 4 byte. Tiap byte menjalani S-box yang bergantung kepada kunci. Tiap Sbox adalah permutasi 8-bit : membutuhkan masukan 8 bit dan memberikan keluaran 8 bit. Empat hasil tersebut diinterpretasikan sebagai komponen vector dengan panjang 4 GF(28), dan dikalikan oleh matriks MDS 4x4. - Penambahan Panjang Kunci Twofish dapat menerima kunci dengan panjang berapapun sampai 256 bit. Untuk ukuran kunci yang kurang, dilakukan padding pada akhir dengan nilai 0. Sebagai contoh, kunci dengan panjang 80-bit m0,,m9 akan diperpanjang dengan pengaturan mi = 0 untuk I = 10,,15, dan diperlakukan sebagai kunci 128-bit. D. Algoritma Rijndael Algoritma Rijndael ini adalah algoritma yang menjadi standard enkripsi baru menggantikan DES, yaitu Advanced Encryption Standard (AES). Algoritma ini dapat menerima masukan berupa blok berukuran 128 bit, dan kunci yang panjangnya bervariasi, diantara 128 , 192, atau 256 bit. Metode yang digunakan untuk pemrosesan terdiri dari : - AddRoundKey - Putaran sebanyak Nr-1 kali. Proses yang terjadi pada tiap putaran adalah : a. SubByte b. ShiftRow c. MixColumn d. AddRoundKey

Makalah IF3058 Kriptografi Sem. II Tahun 2010/2011

Pada putaran terakhir : a. SubByte b. ShiftRow c. AddRoundKey

mengalami pergeseran ke kiri sebanyak 2 kali, pada baris keempat mengalami pergeseran sebanyak 3 kali. Sebagai perbandingan, dapat dilihat perbandingan antara Tabel I dan Tabel II.

Metode metode tersebut dapat dibagi menjadi beberapa layer , yaitu : key addition layer , byte substitution layer, diffusion layer.
Tabel II. Matriks byte setelah shift row

Pada MixColumn, terjadi transformasi linear yang menggabungkan tiap kolom pada state matriks. Karena tiap byte masukan mempengaruhi byte keluaran, operasi MixColumn merupakan elemen diffusi utama. Untuk melakukan MixColumn ini diperlukan operasi Galois Field (GF). Operasi yang dilakukan adalah GF(28).

Gambar 10. Skema pemrosesan algoritma Rijndael

C0 02 03 01 01 C 01 02 03 01 1 = C2 01 01 02 03 C3 03 01 01 02

A0 A5 A10 A15

A0 A1 A2 A3

A4 A5 A6 A7

A8 A9 A10 A11

A12 A13 A14 A15

- Key Addition Layer Dua masukan untuk layer Key Addition adalah matrix state yang berukuran 16 byte dan subkey yang juga berukuran 16 byte (128 bit). Kedua input tersebut dikombinasikan dengan menggunakan operasi XOR.

Tabel I. Matriks byte yang diproses pada algoritma Rijndael

III. PERCOBAAN
Pada bab ini , akan dilakukan percobaan untuk membandingkan algoritma mana yang memberikan hasil yang lebih baik. Dalam hal ini, lebih baik dimaksudkan kepada lebih baik dalam hal memori yang terpakai dan waktu untuk melakukan enkripsi. Lingkungan pada percobaan ini adalah menggunakan: - Operating System : Windows XP - Bahasa Pemrograman : Java - Prosesor : AMD Athlon 64 X2 Dual Core Processor 4600+ A. Rijndael Yang akan dibahas pertama- tama adalah rijndael. Untuk implementasinya, menggunakan package yang ada pada Java yang digunakan untuk keamanan, yaitu Java Cryptographic Extension dan juga menggunakan referensi dari internet. Berikut adalah source code nya :
import gnu.crypto.cipher.Rijndael; import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.security.InvalidKeyException; public class Algo { public static String enkrip (String plainteks, String kunci) throws InvalidKeyException, UnsupportedEncodingException { long awal = System.currentTimeMillis(); byte[] ki; byte[] plain ;

- Byte Substitution Layer Layer penukaran byte menggunakan S-box yang berukuran 16x16.

Gambar 11. S-box

Contoh penggunaannya : misalkan ingin mengubah hex C2. Karena itu, cari C pada bagian X dan 2 pada bagian y sehingga didapatkan nilai 25. - Diffusion Layer Pada AES, diffusion layer mengandung 2 sublayer,transformasi ShiftRow dan MixColumn. Pada transformasi ShiftRow, baris pada matriks digeser sesuai dengan nomor barisnya. Pada baris pertama tidak mengalami pergeseran, pada baris kedua mengalami pergeseran ke kiri sebanyak 1kali, pada baris ketiga

Makalah IF3058 Kriptografi Sem. II Tahun 2010/2011

Rijndael rij = new Rijndael(); ki = kunci.getBytes(); byte[] hasil; Object kobjek = rij.makeKey(ki, 16); if (plainteks.length() % 16 != 0) { while (plainteks.length() % 16 != 0) { plainteks += " "; } } plain = plainteks.getBytes("UTF8"); hasil = new byte[plainteks.length()]; for (int i = 0 ;i < Array.getLength(plain); i+= 16) { rij.encrypt(plain, i, hasil, i, kobjek, 16); } String shasil = new String(hasil); long sisa = System.currentTimeMillis() - awal; System.out.println("Waktu untuk melakukan eksekusi : " + sisa +" milidetik"); return shasil; } public static void main(String argv[]) throws Exception { String masukan = "fds,famsdnmlkfsdaflksd srfsjkdrhwaeih sfkjsdahfkasl wierfhwirhewa krfhwifw krfhwlearhwaek srfhewiarh fwearuiwe hrfiwae weuirohawer"; String kunci = "1234567812345678"; long awal = System.currentTimeMillis(); String hasil = enkrip(masukan,kunci); long selisih = System.currentTimeMillis() - awal; System.out.println("Masukan : "+masukan+ " \nKunci : "+kunci+" memberikan hasil:"); System.out.println(hasil); System.out.println("Memori yang digunakan : "+ (Runtime.getRuntime().totalMemory()Runtime.getRuntime().freeMemory()) +" byte"); } }

Gambar 12. Tampilan hasil dengan menggunakan algoritma Rijndael

Terlihat bahwa pemrosesan memakan waktu 0.016 detik dan memori yang digunakan adalah 385.488 byte. B. Twofish Pada pemrosesan dengan twofish, dibuat sebuah program untuk melakukan enkripsi sebuah teks dengan menggunakan algoritma Twofish. Pada pembuatannya, diperlukan sebuah library gnu.crypto .Pada pembuatan program ini, pengembangan dilakukan dengan menggunakan gnu-crypto-2.1.0.
import gnu.crypto.cipher.Twofish; import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.security.InvalidKeyException; public class Algoritma { public static String enkrip (String plainteks, String kunci) throws InvalidKeyException, UnsupportedEncodingException { long awal = System.currentTimeMillis(); byte[] ki; byte[] plain ; Twofish duaikan = new Twofish(); ki = kunci.getBytes(); byte[] hasil; Object kobjek = duaikan.makeKey(ki, 16); if (plainteks.length() % 16 != 0) { while (plainteks.length() % 16 != 0) { plainteks += " "; }} plain = plainteks.getBytes("UTF8"); hasil = new byte[plainteks.length()]; for (int i = 0 ;i < Array.getLength(plain); i+= 16) { duaikan.encrypt(plain, i, hasil, i, kobjek, 16); } String shasil = new String(hasil); long sisa = System.currentTimeMillis() - awal; float selisih = sisa/1000F; System.out.println("Waktu untuk melakukan eksekusi : " + selisih +" detik"); return shasil; } public static void main(String argv[]) throws Exception { String masukan = "fds,famsdnmlkfsdaflksd srfsjkdrhwaeih sfkjsdahfkasl wierfhwirhewa krfhwifw krfhwlearhwaek srfhewiarh fwearuiwe hrfiwae weuirohawer String kunci = "1234567812345678"; long awal = System.currentTimeMillis(); String hasil = enkrip(masukan,kunci);

Untuk pemrosesan dengan algoritma Rijndael pada percobaan ini, diperlukan sebuah library dari gnu.crypto, yang bisa diperoleh dari internet. gnu.crypto yang dipakai adalah gnu.crypto versi 2.1.0. Dalam pemrograman, dipakai alat bantu pemrograman yaitu Netbeans versi 6.9.1. Pada proses enkripsi, diambil parameter masukan berupa 2 buah string. 1 string sebagai plainteks dan 1 string sebagai kunci. String yang akan dijadikan bahan enkripsi adalah : fds,famsdnmlkfsdaflksd srfsjkdrhwaeih sfkjsdahfkasl wierfhwirhewa krfhwifw krfhwlearhwaek srfhewiarh fwearuiwe hrfiwae weuirohawer. Sedangkan kunci yang dipakai adalah 1234567812345678. Hasil yang diperoleh dapat dilihat pada gambar 12 :

Makalah IF3058 Kriptografi Sem. II Tahun 2010/2011

long selisih = System.currentTimeMillis() - awal; System.out.println("Masukan : "+masukan+ " \nKunci : "+kunci+" memberikan hasil:"); System.out.println(hasil); System.out.println("Memori yang digunakan : "+ (Runtime.getRuntime().totalMemory()Runtime.getRuntime().freeMemory()) +" byte"); } }

REFERENSI
Halaman website GNU-crypto : http://www.gnu.org/software/gnucrypto/ , diakses pada tanggal 19 Maret 2011 Schneier,Bruce,Kelsey,John,Whiting,Doug,Wagner,David,Hall,Chris,Fe rguson,Niels (1999).The Twofish Encryption Algorithm: A 128-Bit Block Cipher. United States : Wiley. Paar,Christof, Pelzl,Jan (2010). Understanding Cryptography: A Textbook for Students and Practitioners. New York : Springer. Slide kuliah mengenai block cipher : http://www.informatika.org/~rinaldi/Kriptografi/20102011/Algoritma%20Kriptografi%20Modern_bag2%20(baru).ppt Halaman website mengenai stream cipher : http://www.rsa.com/rsalabs/node.asp?id=2174, diakses pada tanggal 17 Maret 2011 Halaman website mengenai mode blok CBC, http://www.rsa.com/rsalabs/node.asp?id=2171, diakses pada tanggal 17 Maret 2011 Halaman website mengenai mode blok ECB, http://www.rsa.com/rsalabs/node.asp?id=2170, diakses pada tanggal 17 Maret 2011 Halaman website mengenai mode blok CFB, http://www.rsa.com/rsalabs/node.asp?id=2172, diakses pada tanggal 17 Maret 2011 Halaman website mengenai mode blok OFB, http://www.rsa.com/rsalabs/node.asp?id=2173, diakses pada tanggal 17 Maret 2011

String yang akan dienkripsi adalah sama seperti pada percobaan dengan menggunakan Rijndael, yaitu fds,famsdnmlkfsdaflksd srfsjkdrhwaeih sfkjsdahfkasl wierfhwirhewa krfhwifw krfhwlearhwaek srfhewiarh fwearuiwe hrfiwae weuirohawer Kunci yang digunakan adalah kumpulan angka, yaitu 1234567812345678. Pada source program, terlihat bahwa dipakai sebuah fungsi untuk melakukan enkripsi dengan menerima masukan berupa 2 buah string, masing-masing berguna sebagai plainteks dan kunci. Hasil percobaan dapat dilihat pada gambar 13:

PERNYATAAN
Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 22 Maret 2011

Gambar 13. Hasil percobaan dengan menggunakan algoritma Twofish

Memori yang digunakan adalah 480.896 byte , sedangkan waktu eksekusi adalah : 0.015 detik

IV.KESIMPULAN
Dari hasil percobaan, terlihat bahwa penggunaan memori ketika menggunakan algoritma Twofish lebih banyak dibandingkan ketika menggunakan algoritma Rijndael, yaitu 480896 byte pada Twofish dan 385488 byte pada Rijndael dengan menggunakan kunci dan plainteks yang sama. Sedangkan waktu eksekusi yang dilakukan lebih cepat jika dilakukan dengan menggunakan algoritma Twofish, yaitu 15 milidetik, sedangkan algoritma Rijndael memerlukan waktu 16 milidetik. Perbedaan pada waktu pemrosesan algoritma tidak terlalu dipermasalahkan, tetapi pada perbedaan memori terlihat bahwa Rijndael menggunakan memori yang lebih sedikit dibandingkan dengan Twofish. Perbedaan itu cukup terlihat ketika menggunakan mesin dengan memori dengan ukuran yang rendah. Sehingga, dapat disimpulkan bahwa Rijndael merupakan algoritma yang lebih baik untuk digunakan dalam melakukan enkripsi.

Willy Setiawan 13508043

Makalah IF3058 Kriptografi Sem. II Tahun 2010/2011

Anda mungkin juga menyukai