twofish vs rijndael

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

Upload: jaenudin-fawwaz

Post on 01-Jan-2016

61 views

Category:

Documents


0 download

DESCRIPTION

perbandingan

TRANSCRIPT

Page 1: Twofish vs Rijndael

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

[email protected]

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

Page 2: Twofish vs Rijndael

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

Page 3: Twofish vs Rijndael

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.

Gambar 9. Proses Whitening

Page 4: Twofish vs Rijndael

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

Page 5: Twofish vs Rijndael

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

=

02010103

03020101

01030201

01010302

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;

byte[] plain ;

Page 6: Twofish vs Rijndael

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

Page 7: Twofish vs Rijndael

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

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

Willy Setiawan

13508043