• Tidak ada hasil yang ditemukan

Analisa dan Perbandingan Algoritma Twofish dan Rijndael

N/A
N/A
Protected

Academic year: 2021

Membagikan "Analisa dan Perbandingan Algoritma Twofish dan Rijndael"

Copied!
7
0
0

Teks penuh

(1)

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

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 Kunci—cipher block , Advanced Encryption Standard, Rijndael, Twofish, perbandingan

I.

P

ENDAHULUAN

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.

P

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

(2)

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.

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

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.

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

(3)

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

(4)

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 4⊕Ki+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 2 32 F1 = (T0 + 2T1 + K2r+9) mod 232 - Fungsi g

Masukan kata X dipisah menjadi 4 byte. Tiap byte menjalani box yang bergantung kepada kunci. Tiap S-box 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

(5)

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011 - Pada putaran terakhir :

a. SubByte b. ShiftRow c. AddRoundKey

Metode – metode tersebut dapat dibagi menjadi beberapa layer , yaitu : key addition layer , byte substitution layer, diffusion layer.

Gambar 10. Skema pemrosesan algoritma Rijndael

A0 A4 A8 A12

A1 A5 A9 A13

A2 A6 A10 A14

A3 A7 A11 A15

Tabel I. Matriks byte yang diproses pada algoritma Rijndael

- 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

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.

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

=

02

01

01

03

03

02

01

01

01

03

02

01

01

01

03

02

3

2 1 0

C

C

C

C

15

10

5

0

A

A

A

A

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

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;

(6)

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"); }

}

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 :

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);

(7)

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"); }

}

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:

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.

REFERENSI

Halaman website GNU-crypto : http://www.gnu.org/software/gnu-crypto/ , 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/2010-2011/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

P

ERNYATAAN

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

Willy Setiawan 13508043

Gambar

Gambar 1. Skema Stream Cipher
Gambar 2. Skema enkripsi block cipher
Gambar 5. Skema enkripsi dengan mode CFB  -  Output Feedback
Tabel I. Matriks byte yang diproses pada algoritma  Rijndael
+2

Referensi

Dokumen terkait

b. Pihak Pemko akan memanfaatkan bekas wilayah tamka tersebut dengan membangun resort dan sarana olah raga seperti lapangan pacu kuda, arena motor cross, sircuit road

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

Jumlah biaya tenaga kerja yang digunakan oleh petani bukan anggota kelompok tani lebih tinggi disebabkan karena jumlah tenaga kerja pada panen tahun 2014 masih

Bukit dan gunung merupakan daerah penyerap dan penyimpan cadangan air yang berasal dari air hujan.Cadangan air yang diserap tersebut masuk ke dalam tanah dan batuan.Karena volume

Menurut Deloach (2000) agar dapat mengerti akan risiko rantai pasok adalah sangat penting diawali dengan melihat pada risiko bisnis secara umum yaitu (a)

Berdasarkan latar belakang yang telah diuraikan di atas, maka rumusan masalah dalam penelitian ini adalah adakah pengaruh intensitas mengikuti bimbingan agama