Analisa dan Perbandingan Algoritma Twofish dan Rijndael

dokumen-dokumen yang mirip
STUDI PERBANDINGAN ALGORITMA SIMETRI BLOWFISH DAN ADVANCED ENCRYPTION STANDARD

Studi Perbandingan Algoritma Kunci-Simetris Serpent dan Twofish

Ada 4 mode operasi cipher blok: 1. Electronic Code Book (ECB) 2. Cipher Block Chaining (CBC) 3. Cipher Feedback (CFB) 4. Output Feedback (OFB)

Algoritma Kriptografi Modern (Bagian 2)

Algoritma Spiral shifting

Blox: Algoritma Block Cipher

STUDI & IMPLEMENTASI ALGORITMA TRIPLE DES

Kriptografi Modern Part -1

Advanced Encryption Standard (AES) Rifqi Azhar Nugraha IF 6 A.

Studi Perbandingan Cipher Block Algoritma Blowfish dan Algoritma Twofish

II Bab II Dasar Teori

Tipe dan Mode Algoritma Simetri (Bagian 2)

Algoritma Rubik Cipher

Penggabungan Algoritma Kriptografi Simetris dan Kriptografi Asimetris untuk Pengamanan Pesan

IMPLEMENTASI ALGORITMA AES PADA ENKRIPSI TEKS

STUDI DAN IMPLEMENTASI ADVANCED ENCRYPTION STANDARD DENGAN EMPAT MODE OPERASI BLOCK CIPHER

Algoritma Kriptografi Modern (Bagian 2)

Algoritma Cipher Block EZPZ

WINDOWS VISTA BITLOCKER DRIVE ENCRYPTION

Algoritma Enkripsi Baku Tingkat Lanjut

Kriptografi Modern Part -1

STUDI MENGENAI JARINGAN FEISTEL TAK SEIMBANG DAN CONTOH IMPLEMENTASINYA PADA SKIPJACK CIPHER

Blok Cipher JUMT I. PENDAHULUAN

BAB II LANDASAN TEORI

Implementasi dan Analisis Perbandingan Algoritma MAC Berbasis Fungsi Hash Satu Arah Dengan Algoritma MAC Berbasis Cipher Block

Dr. R. Rizal Isnanto, S.T., M.M., M.T. Jurusan Teknik Elektro/Sistem Komputer Fakultas Teknik Universitas Diponegoro

2. Tipe dan Mode Algoritma Simetri

BAB I PENDAHULUAN. Universitas Sumatera Utara

Add your company slogan TEKNIK BLOCK CIPHER. Kriptografi - Week 9 LOGO. Aisyatul Karima, 2012

ANALISIS PERBANDINGAN KINERJA ALGORITMA BLOWFISH DAN ALGORITMA TWOFISH PADA PROSES ENKRIPSI DAN DEKRIPSI

Analisis dan Perbandingan Algoritma Whirlpool dan SHA- 512 sebagai Fungsi Hash

Algoritma SAFER K-64 dan Keamanannya

Cipher Blok JAFT. Ahmad ( ) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika.

Algoritma Twofish : kinerja dan implementasinya sebagai salah satu kandidat algoritma AES (Advanced Encryption Standard)

STUDI PERBANDINGAN CIPHER BLOK ALGORITMA BLOWFISH DAN ALGORITMA CAMELLIA

BAB I PENDAHULUAN. 1.1 Latar Belakang

TINJAUAN PUSTAKA. Kriptografi

ANALISIS PERBANDINGAN KINERJA ALGORITMA TWOFISH DAN TEA (TINY ENCRYPTION ALGORITHM) PADA DATA SUARA

Modern Cryptography. stream & block cipher

Modifikasi Cipher Block Chaining (CBC) MAC dengan Penggunaan Vigenere Cipher, Pengubahan Mode Blok, dan Pembangkitan Kunci Berbeda untuk tiap Blok

Studi Mengenai Algoritma Skipjack dan Penerapannya

IMPLEMENTASI ENKRIPSI DATA BERBASIS ALGORITMA DES

Implementasi Sistem Keamanan File Menggunakan Algoritma Blowfish pada Jaringan LAN

BAB III ANALISIS DAN PERANCANGAN

Keamanan Sistem Komputer DES, AES, RSA

Data Encryption Standard (DES)

STUDI ALGORITMA CIPHER BLOK KUNCI SIMETRI BLOWFISH CIPHER

STUDI, IMPLEMENTASI DAN PERBANDINGAN ALGORITMA KUNCI SIMETRI TRIPLE DATA ENCRYPTION STANDARD DAN TWOFISH

MODIFIKASI VIGÈNERE CIPHER DENGAN MENGGUNAKAN MEKANISME CBC PADA PEMBANGKITAN KUNCI

STUDI DAN IMPLEMENTASI ALGORITMA RIJNDAEL UNTUK ENKRIPSI SMS PADA TELEPON GENGGAM YANG BERBASIS WINDOWS MOBILE 5.0

PERBANDINGAN ALGORITMA KRIPTOGRAFI DES DENGAN ICE

Aplikasi Pesan dengan Algoritma Twofish pada Platform Android Messaging Application with Twofish Algorithm on Android Platform

BEA A New Block Cipher Algorithm

Pengaruh Variasi Panjang Kunci, Ukuran Blok, dan Mode Operasi Terhadap Waktu Eksekusi pada Algoritma Rijndael

OZ: Algoritma Cipher Blok Kombinasi Lai-Massey dengan Fungsi Hash MD5

ANALISA PENGUJIAN ESTIMASI WAKTU DAN BESAR UKURAN FILE MENGGUNAKAN ALGORITMA TWOFISH PADA PROSES ENKRIPSI DAN DEKRIPSI

ANALISIS FEISTEL CIPHER SEBAGAI DASAR BERBAGAI ALGORITMA BLOCK CIPHER

BAB III ANALISIS DAN PERANCANGAN

BAB III ANALISA MASALAH DAN PERANCANGAN

Studi dan Analisis Dua Jenis Algoritma Block Cipher: DES dan RC5

PERANCANGAN APLIKASI PENGAMANAN DATA DENGAN KRIPTOGRAFI ADVANCED ENCRYPTION STANDARD (AES)

STUDI MENGENAI KRIPTANALISIS UNTUK BLOCK CIPHER DES DENGAN TEKNIK DIFFERENTIAL DAN LINEAR CRYPTANALYSIS

Pengkajian Metode dan Implementasi AES

ANALISA ALGORITMA BLOCK CIPHER DALAM PENYANDIAN DES DAN PENGEMBANGANNYA

Studi dan Implementasi Enkripsi Pengiriman Pesan Suara Menggunakan Algoritma Twofish

ANALISA PROSES ENKRIPSI DAN DESKRIPSI DENGAN METODE DES

Implementasi Enkripsi File dengan Memanfaatkan Secret Sharing Scheme

DATA ENCRYPTION STANDARD (DES) STANDAR ENKRIPSI DATA. Algoritma Kriptografi Modern

APLIKASI PENGAMANAN DOKUMEN DENGAN MENGGUNAKAN TEKNIK KRIPTOGRAFI ALGORITMA AES-RINJDAEL

BAB II TINJAUAN PUSTAKA

Modul Praktikum Keamanan Sistem

MENGENAL PROSES PERHITUNGAN ENKRIPSI MENGGUNAKAN ALGORITMA KRIPTOGRAFI ADVANCE ENCRYPTION STANDARD(AES) RIJDNAEL

Penerapan Mode Blok Cipher CFB pada Yahoo Messenger

STUDI DAN MODIFIKASI ALGORITMA BLOCK CHIPER MODE ECB DALAM PENGAMANAN SISTEM BASIS DATA. Arief Latu Suseno NIM:

Kriptografi untuk Huruf Hiragana

CARA KERJA SERANGAN XSL

BAB 4 IMPLEMENTASI DAN EVALUASI. dan sistem operasi dengan spesifikasi sebagai berikut: 1. Processor: Intel Pentium, Core Duo, 1.

Studi Perbandingan ORYX Cipher dengan Stream Cipher Standard

RANCANGAN,IMPLEMENTASI DAN PENGUJIAN ZENARC SUPER CIPHER SEBAGAI IMPLEMENTASI ALGORITMA KUNCI SIMETRI

Implementasi AES-ECB 128-bit untuk Komputasi Paralel pada GPU menggunakan Framework NVIDIA CUDA

Advanced Encryption Standard (AES)

Kriptografi Kunci Simetris Dengan Menggunakan Algoritma Crypton

Enkripsi Block Cipher 16 bit dengan bantuan Beatty Sequence dari Bilangan Prima dan Implementasinya pada Mode ECB

ADVANCED ENCRYPTION STANDARD (AES) DENGAN ONE TIME PASSWORD UNTUK KEAMANAN LAYANAN SMS BANKING

Disusun oleh: Ir. Rinaldi Munir, M.T.

STUDI KRIPTOGRAFI MENGENAI TRIPLE DES DAN AES

Percobaan Perancangan Fungsi Pembangkit Bilangan Acak Semu serta Analisisnya

Algoritma Cipher Block RG-1

JURNAL KEAMANAN KOMPUTER APLIKASI ENKRIPSI - DEKRIPSI DENGAN ALGORITMA RC2 MENGGUNAKAN JAVA NETBEANS

BAB I PENDAHULUAN. diperlukan juga biaya yang besar untuk menyediakan media penyimpanan

Rancang Bangun Aplikasi Keamanan Data Menggunakan Metode AES Pada Smartphone

BAB II DASAR TEORI. Gambar 2.1. Proses Enkripsi Dekripsi

APLIKASI KRIPTOGRAFI ENKRIPSI DEKRIPSI FILE TEKS MENGGUNAKAN METODE MCRYPT BLOWFISH

BAB II LANDASAN TEORI. 2.1 Sejarah Kriptografi

BAB III ANALISIS DAN DESAIN SISTEM

LUX HASH FUNCTION. Brian Al Bahr NIM: Program Studi Teknik Informatika, Sekolah Teknik Elektro dan Informatika, Institut Teknologi Bandung

Analisis Performansi Algoritma AES dan Blowfish Pada Aplikasi Kriptografi

ARDES : Sebuah Algortima Block Cipher Modifikasi Data Encryption Standard

Algoritma Kriptografi Modern

Transkripsi:

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

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

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

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(2 8 ). - 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 2 32 b = a + 2b mod 2 32 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 p 0,p 1,, p 15 dipisah menjadi 4 kata P 0,,P 3 yang masing masing berukuran 32 bit. Pada tahap whitening, kata-kata tersebut di XOR kan dengan 4 kata dari kunci yang diperlebar : R 0,I = P i 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. (F r,0,f r,1 ) = F(R r,0,r r,1,r) R r+1,0 = ROR(R r,2 F r,0,1) R r+1,1 = ROL(R r,3,1) F r,1 ) R r+1,2 = R r,0 R r+1,3 = R r,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. C i = R 16,(i+2) mod 4 K i+4 i = 0,...,3 Empat kata dari cipherteks kemudian ditulis sebagai 16 byte, c 0,,c 15. - Fungsi F Fungsi F adalah permutasi yang tergantung pada kunci pada nilai 64 bit. Memerlukan 3 argumen : 2 kata masukan R 0 dan R 1, dan nomor r digunakan untuk memilih subkey yang benar. R 0 dilewatkan melalui fungsi g,yang menghasillkan T 0. R 1 dirotasi ke kiri 8 bit dan kemudian dilakukan fungsi dan menghasilkan T 1. Hasil T 0 dan T 1 dikombinasikan menggunakan PHT dan 2 kata dari kunci ditambahkan T 0 = g(r 0 ) T 1 = g(rol(r 1,8)) F 0 = (T 0 + T 1 + K 2r+8 ) mod 2 32 F 1 = (T 0 + 2T 1 + K 2r+9 ) mod 2 32 - 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(2 8 ), 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 m 0,,m 9 akan diperpanjang dengan pengaturan m i = 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

- 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 Gambar 10. Skema pemrosesan algoritma Rijndael A 0 A 4 A 8 A 12 A 1 A 5 A 9 A 13 A 2 A 6 A 10 A 14 A 3 A 7 A 11 A 15 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 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(2 8 ). C 0 02 03 01 01 C1 = 01 02 03 01 C 01 01 02 03 2 C 3 03 01 01 02 A0 A5 A10 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. 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 byte[] ki; byte[] plain ;

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"; 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 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"; 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"); 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: 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/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 Halaman website mengenai mode blok CBC, http://www.rsa.com/rsalabs/node.asp?id=2171, diakses pada Halaman website mengenai mode blok ECB, http://www.rsa.com/rsalabs/node.asp?id=2170, diakses pada Halaman website mengenai mode blok CFB, http://www.rsa.com/rsalabs/node.asp?id=2172, diakses pada Halaman website mengenai mode blok OFB, http://www.rsa.com/rsalabs/node.asp?id=2173, diakses pada 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. 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