BAB II LANDASAN TEORI

dokumen-dokumen yang mirip
II Bab II Dasar Teori

Studi dan Implementasi Enkripsi Pengiriman Pesan Suara Menggunakan Algoritma Twofish

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

Kriptografi Modern Part -1

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

Studi Perbandingan Algoritma Kunci-Simetris Serpent dan Twofish

STUDI PERBANDINGAN ALGORITMA SIMETRI BLOWFISH DAN ADVANCED ENCRYPTION STANDARD

Kriptografi Modern Part -1

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

Studi Perbandingan Cipher Block Algoritma Blowfish dan Algoritma Twofish

Tipe dan Mode Algoritma Simetri (Bagian 2)

Bab I Pendahuluan. I.1 Latar Belakang

STUDI PERBANDINGAN CIPHER BLOK ALGORITMA BLOWFISH DAN ALGORITMA CAMELLIA

III Bab III Analisis dan Perancangan

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

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

Algoritma Kriptografi Modern (Bagian 2)

STUDI & IMPLEMENTASI ALGORITMA TRIPLE DES

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

Algoritma SAFER K-64 dan Keamanannya

Algoritma Kriptografi Modern (Bagian 2)

STUDI ALGORITMA CIPHER BLOK KUNCI SIMETRI BLOWFISH CIPHER

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

Blox: Algoritma Block Cipher

Implementasi Sistem Keamanan File Menggunakan Algoritma Blowfish pada Jaringan LAN

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

Studi Mengenai Algoritma Skipjack dan Penerapannya

Implementasi. Keamanan J2F ABSTRAK. adalah. sebelum Kata Kunci. enkripsi. menggunakan. Voice. taking a signal. telah oleh. siapapun. used [8].

Studi Perbandingan ORYX Cipher dengan Stream Cipher Standard

Data Encryption Standard (DES)

BAB I PENDAHULUAN. 1.1 Latar Belakang

ANALISA PROSES ENKRIPSI DAN DESKRIPSI DENGAN METODE DES

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

ANALISIS FEISTEL CIPHER SEBAGAI DASAR BERBAGAI ALGORITMA BLOCK CIPHER

APLIKASI KRIPTOGRAFI ENKRIPSI DEKRIPSI FILE TEKS MENGGUNAKAN METODE MCRYPT BLOWFISH

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

Pengenalan Kriptografi

APLIKASI ENKRIPSI PENGIRIMAN FILE SUARA MENGGUNAKAN ALGORITMA BLOWFISH

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

Algoritma Cipher Block EZPZ

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

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

Algoritma Spiral shifting

2. Tipe dan Mode Algoritma Simetri

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

PERANCANGAN ALGORITMA KRIPTOGRAFI KUNCI SIMETRI DENGAN MENGGUNAKAN JARINGAN SARAF TIRUAN

BAB I PENDAHULUAN. Universitas Sumatera Utara

Blok Cipher JUMT I. PENDAHULUAN

Penggabungan Algoritma Kriptografi Simetris dan Kriptografi Asimetris untuk Pengamanan Pesan


General Discussion. Bab 4

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

Algoritma Rubik Cipher

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

BAB 1 PENDAHULUAN Latar Belakang

Analisis Performansi Algoritma AES dan Blowfish Pada Aplikasi Kriptografi

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

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

RC4 Stream Cipher. Endang, Vantonny, dan Reza. Departemen Teknik Informatika Institut Teknologi Bandung Jalan Ganesha 10 Bandung 40132

BAB III ANALISA DAN DESAIN SISTEM

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

Algoritma Enkripsi Baku Tingkat Lanjut

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

Reference. William Stallings Cryptography and Network Security : Principles and Practie 6 th Edition (2014)

IMPLEMENTASI ALGORITMA BLOWFISH UNTUK ENKRPSI DAN DEKRIPSI BERBASIS WEB

ALGORITMA ELGAMAL DALAM PENGAMANAN PESAN RAHASIA

IMPLEMENTASI ALGORITMA BLOWFISH UNTUK ENKRPSI DAN DEKRIPSI BERBASIS JAVA SWING

TINJAUAN PUSTAKA. Kriptografi

BAB II LANDASAN TEORI

BAB 1 PENDAHULUAN 1.1. Latar belakang

Pembangkitan Nilai MAC dengan Menggunakan Algoritma Blowfish, Fortuna, dan SHA-256 (MAC-BF256)

BAB 2 LANDASAN TEORI. 2.1 Kriptografi

BAB III ANALISIS DAN PERANCANGAN SISTEM. permasalahan-permasalahan dan kebutuhan-kebutuhan yang diharapkan sehingga dapat

BAB I PENDAHULUAN 1.1 Latar Belakang

Studi dan Implementasi Enkripsi Pengiriman Pesan Suara dengan Algoritma Serpent

APLIKASI JAVA KRIPTOGRAFI MENGGUNAKAN ALGORITMA VIGENERE. Abstract

BAB III ANALISA DAN PERANCANGAN. 3.1 Analisa Berikut tahap-tahap awal dalam pembuatan:

PENERAPAN ALGORITMA RSA DAN DES PADA PENGAMANAN FILE TEKS

Implementasi Algoritma Rot Dan Subtitusional Block Cipher Dalam Mengamankan Data

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. Penelitian sebelumnya yang ditulis oleh Alen Dwi Priyanto

Optimasi Enkripsi Teks Menggunakan AES dengan Algoritma Kompresi Huffman

Universitas Sumatera Utara BAB 2 LANDASAN TEORI

Analisis AES Rijndael terhadap DES

BAB I PENDAHULUAN. 1.1 Latar Belakang

KEAMANAN DATA DENGAN MENGGUNAKAN ALGORITMA RIVEST CODE 4 (RC4) DAN STEGANOGRAFI PADA CITRA DIGITAL

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

BAB III ANALISIS DAN PERANCANGAN

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

BAB II TINJAUAN PUSTAKA

Bab 2 Tinjauan Pustaka

PENERAPAN METODA FILE COMPRESSION PADA KRIPTOGRAFI KUNCI SIMETRI

PENGGUNAAN POLINOMIAL UNTUK STREAM KEY GENERATOR PADA ALGORITMA STREAM CIPHERS BERBASIS FEEDBACK SHIFT REGISTER

APLIKASI ENKRIPSI DAN DEKRIPSI FILE MENGGUNAKAN ALGORITMA TWOFISH

WINDOWS VISTA BITLOCKER DRIVE ENCRYPTION

Sedangkan berdasarkan besar data yang diolah dalam satu kali proses, maka algoritma kriptografi dapat dibedakan menjadi dua jenis yaitu :

Modul Praktikum Keamanan Sistem

BEA A New Block Cipher Algorithm

SHaP SITI 2016 Fakultas Ilmu Komputer PERBANDINGAN ALGORITMA DES DAN ALGORITMA AES PADA TEKNOLOGI QR-CODE

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Chiper Blok dengan Algoritma Operasi XOR antar Pecahan Blok

Transkripsi:

BAB II LANDASAN TEORI 2.1 Kriptografi Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan (Rinaldi Munir, 2004). Terdapat berbagai macam definisi mengenai kriptografi, namun pada intinya kriptografi adalah teknik yang digunakan untuk menjamin keamanan pertukaran data. 2.1.1 Sistem Kriptografi Untuk menjamin keamanan pertukaran data, berbagai proses dilakukan terhadap data, salah satunya adalah proses penyandian. Proses penyandian dilakukan untuk membuat data yang dikirimkan tidak dapat dimengerti oleh pihak lain selain yang memiliki akses terhadap data tersebut. Proses penyandian terdiri atas dua tahapan, yaitu: 1. Enkripsi Enkripsi merupakan proses untuk mengubah plainteks menjadi cipherteks yang tidak bisa dimengerti. Proses enkripsi biasanya dilakukan sebelum pesan dikirimkan. Untuk meningkatkan keamanan enkripsi pesan, pada proses enkripsi ditambahkan yang juga diperlukan untuk proses dekripsi, seperti pada Gambar 2.1.

Kunci Enkripsi Plainteks Enkripsi Pesan Chiperteks Gambar 2.1 Proses Enkripsi Dengan Kunci 2. Dekripsi Dekripsi merupakan proses untuk mengubah cipherteks kembali menjadi plainteks agar pesan dapat dimengerti. Proses dekripsi biasanya dilakukan oleh penerima pesan agar pesan yang diterima dapat dimengerti. Untuk proses enkripsi yang menggunakan kunci maka proses dekripsi harus dilakukan dengan menggunakan kunci, seperti pada Gambar 2.2 Kunci Dekripsi Chiperteks Dekripsi Pesan Plainteks Gambar 2.2 Proses Dekripsi Dengan Kunci Kunci yang digunakan pada proses dekripsi dapat berbeda dengan kunci yang digunakan pada proses enkripsi, disebut juga kriptografi kunci publik. Sebaliknya, jika kunci yang digunakan sama, disebut juga kriptografi kunci simetri. 2.1.2 Kriptografi Kunci Simetri Kriptografi kunci simetri menggunakan kunci yang sama untuk proses enkripsi dan dekripsi. Kunci tersebut harus ditentukan sebelumnya oleh pihak penerima dan pengirim pesan, seperti pada Gambar 2.3

Kc Kc Plainteks Enkripsi Pesan Chiperteks Dekripsi Pesan Plainteks Gambar 2.3 Skema Kriptografi Kunci Simetri Kelemahan dari kriptografi kunci simetri adalah kesulitan dalam pendistribusian kunci, karena pengirim dan penerima pesan harus mengetahui kunci yang sama maka kunci harus dikirimkan atau diberitahukan pada pihak lainnya. Masalah lainnya adalah pada banyaknya kunci yang harus digunakan, untuk setiap pasangan pengirim dan penerima pesan harus ada paling tidak satu buah kunci yang dapat digunakan untuk melakukan enkripsi antara mereka. 2.1.3 Tipe dan Mode Algoritma Kunci Simetri Algoritma kunci simetri memiliki dua tipe yang umum digunakan, yaitu: 1. Cipher blok, yang beroperasi pada blok-blok plainteks. Ukuran blok dapat bermacam-macam tergantung pada algoritma enkripsi yang digunakan, biasanya berkisar antara 64 atau 128 bit. Hasil enkripsi dari suatu plainteks yang sama, akan menghasilkan cipherteks yang sama. 2. Cipher aliran, yang beroperasi pada aliran plainteks satu bit atau byte setiap waktu. Hasil enkripsi dari suatu plainteks yang sama belum tentu menghasilkan cipherteks yang sama. Algoritma yang menggunakan prinsip cipher blok membutuhkan mekanisme tambahan karena jika plainteks yang sama menghasilkan cipherteks yang sama maka tingkat keamanan dari algoritma enkripsi menjadi rendah. Tingkatan keamanan dapat diperbaiki dengan adanya berbagai macam mode operasi untuk penggunaan cipher blok. Mode operasi yang sering digunakan dalam algoritma cipher blok pada umumnya adalah mode operasi CBC (Chiper Block Chain). Pada mode operasi CBC,

enkripsi dilakukan dengan cara melakukan XOR pada blok plainteks dengan blok cipherteks dari blok sebelumnya, seperti pada Gambar 2.4, Blok plainteks pertama akan di-xor dengan initialization vector (IV) agar tiap pesan berbeda satu sama lain Plainteks Plainteks Kunci Algoritma Enkripsi Kunci Algoritma Enkripsi Chiperteks Chiperteks Gambar 2.4 Enkripsi Mode Operasi CBC Kelemahan dari mode operasi CBC jika diterapkan untuk enkripsi pesan suara adalah delay yang ditimbulkan. Delay dapat terjadi karena pada CBC setiap enkripsi dari blok pada satu pesan harus menunggu hasil cipherteks dari blok sebelumnya. Untuk mengatasi masalah delay ini, perlu digunakan mode operasi lain yang memiliki efisiensi mendekati cipher aliran agar delay yang dihasilkan kecil. Beberapa mode operasi yang diterapkan pada cipher blok dapat membuat cipher blok beroperasi seperti cipher aliran, salah satunya adalah mode operasi counter. Mode operasi counter dapat mengubah efisiensi cipher blok menjadi cipher aliran dengan membangkitkan keystream, yaitu aliran karakter yang dienkripsi kemudian digabungkan dengan plainteks untuk membentuk cipherteks. Dalam mode operasi counter, biasanya keystream berasal dari enkripsi suatu blok counter yang dibentuk dari fungsi penghitung ( counter ). Pada mode counter, karena yang dienkripsi adalah blok counter, maka tidak perlu menunggu suatu blok selesai sebelum memulai enkripsi pada blok selanjutnya pada satu pesan. Hal inilah yang menyebabkab peningkatan efisiensi proses enkripsi karena mode operasi counter tidak benar- benar merubah cipher blok menjadi cipher aliran. Cipher blok yang digunakan akan tetap melakukan enkripsi pada blok-blok bit, namun dengan mode operasi counter kecepatannya dapat ditingkatkan.

Secara keseluruhan cara kerja enkripsi dengan mode operasi counter adalah sebagai berikut (Moris Dworkin, 2001): 1. Bangkitkan blok counter, H1, Hi,...,Hn yang digunakan sebagai input dari cipher blok, untuk menghasilkan bit keystream KS. KSi = Ciph(Hi), i menandakan blok ke-i dalam pesan sepanjang n-blok. 2. Bit keystream akan di-xor dengan blok plainteks untuk menghasilkan blok cipherteks. Ci = Pi KSi, dimana Ci merupakan cipherteks blok ke-i. Pi merupakan plainteks blok ke-i. 3. Khusus untuk blok plainteks terakhir dimana panjang pesan kurang dari ukuran satu blok, maka bit keystream yang digunakan hanya sepanjang bit pesan tersebut. Cn = Pn MSBi(KSn), MSBi(x) merupakan fungsi yang akan mengambil Most significant Bit (bit yang paling berpengaruh atau bernilai paling besar) sepanjang i dari x. Berdasarkan Gambar 2.5, dapat dilihat bahwa proses membentuk bit keystream dapat dilakukan secara paralel, karena tidak ada keterkaitan antara keluaran suatu proses dengan proses enkripsi pada blok selanjutnya. Bahkan, blok counter untuk proses enkripsi dapat dibangkitkan sebelum blok-blok plainteks diketahui selama fungsi counter tidak membutuhkan blok-blok plainteks sebagai masukan.

Hi H... Hn Ki CIPH(H1) K... CIPH(H...) Kn CIPH(Hn) Pi XOR KSi P... XOR KS... Pn XOR KSn Ci C... Cn Gambar 2.5 Mode Operasi Counter Perlu diperhatikan bahwa pada mode operasi counter, setiap blok counter yang digunakan harus berbeda dengan blok yang digunakan pada proses enkripsi blok plainteks lainnya yang menggunakan kunci yang sama. Hal ini perlu dilakukan untuk menjamin kemananan hasil enkripsi. Blok counter dapat berasal dari angka acak, angka acak ini nanti akan disimpan bersama dengan cipherteks untuk proses dekripsi. Terdapat dua aspek penting yang harus dijaga untuk menjamin blok counter yang digunakan pada enkripsi dengan kunci enkripsi yang sama. Pertama, blok awal yang digunakan, H1, harus dapat memberikan blok counter yang berbeda untuk enkripsi dengan kunci yang sama. Harus dipastikan bahwa dari blok awal tersebut dapat dibangkitkan sejumlah blok counter yang cukup untuk enkripsi pesan. Kemudian, fungsi untuk increment blok tersebut juga harus menjamin bahwa blok awal dapat dibangkitkan menjadi blok counter yang berbeda untuk setiap blok plainteks dengan kunci enkripsi yang sama. Karakteristik dari mode operasi counter menyerupai mode OFB (Output Feedback), kesalahan yang terjadi pada satu bit tidak akan merambat pada bit yang lain. Hal ini merupakan properti yang penting untuk transmisi suara, karena biasanya satu bit error masih dapat ditangani. Mode operasi counter lebih menguntungkan dibandingkan OFB, karena mode OFB hanya dapat digunakan jika ukuran feedback sama dengan ukuran blok. Pada

mode counter tidak masalah jika keluaran memiliki ukuran yang lebih kecil daripada panjang blok. Pemrosesan Suara Suara yang masih berupa sinyal analog harus diproses terlebih dahulu sebelum dapat diolah oleh program komputer. Berikut akan dibahas mengenai proses digitalisasi dan kompresi suara. 2.2.1 Digitalisasi Suara Gelombang suara analog sebelum dapat diproses oleh aplikasi dan dienkripsi harus diubah terlebih dahulu kedalam format digital dengan menggunakan sirkuit ADC (Analog Digital Converter). Karena pada saat ini semua pemrosesan suara melalui komputer menggunakan suara digital. Pada ADC, sinyal analog akan diubah menjadi digital dengan cara sampling (Gabriel Torres, 2007). Misalnya sinyal analog diwakilkan seperti pada Gambar 2.6. Sumbu y melambangkan Volt, yang berarti tegangan volt. Sumbu x melambangkan t, yang berarti waktu. Gambar 2.6 Sinyal Analog Sirkuit ADC akan mengambil sample atau bagian dari sinyal analog berdasarkan waktu tertentu. Bagian-bagian tersebut kemudian akan direpresentasikan

dalam angka berdasarkan tegangan volt yang dimiliki masing-masing bagian. Gambar 2.7 menunjukkan contoh beberapa titik sampling yang diambil Gambar 2.7 Contoh Sampling Data sampling yang diambil dapat bervariasi berdasarkan t yang digunakan. Jumlah sample yang diambil tiap detiknya disebut sampling rate. Semakin besar sampling rate maka data yang diperoleh akan semakin akurat namun storage yang dibutuhkan juga semakin besar. Dibutuhkan perhitungan yang tepat agar kualitas suara yang didapat baik dan storage yang dibutuhkan tidak terlalu besar. Pada tugas akhir ini, digunakan Java Application Programming Interfaces (API) yang berasal dari Java yaitu Java Sound API yang menyediakan operasioperasi dasar pada suara seperti konversi sinyal suara analog menjadi digital. Java sound API dapat melakukan segala macam pemrosesan yang berhubungan dengan suara, termasuk menerima input suara melalui microphone dan menyimpan stream input tersebut kedalam suatu file. 2.2.2 Kompresi Suara Data suara yang ditransmisikan jarak jauh melalui jaringan internet dan jaringan telepon selular pada umumnya dikompresi terlebih dahulu. Kompresi dilakukan karena terbatasnya bandwidth pengiriman data dan besarnya data suara. Kompresi suara dapat diartikan sebagai teknik modulasi dengan memanfaatkan sifat sinyal suara sehingga dapat mentransmisikan suara pembicara

dengan kualitas informasi, karakteristik, dan pola sekuensial yang cukup baik dengan frequency band yang lebih sempit dari yang dibutuhkan sebenarnya. Inti dari kompresi suara terletak pada teknik yang digunakan agar data suara yang dikirimkan tidak menghabiskan tempat penyimpanan dan bandwidth pada saat ditransmisikan. Proses kompresi suara harus dilakukan sebelum sinyal suara tersebut ditransmisikan. Ada berbagai macam teknik untuk melakukan kompresi suara, teknik yang digunakan biasanya berkaitan dengan tingkat kompresi dan format data suara yang nantinya dihasilkan. Teknik untuk kompresi suara biasanya disebut juga pengkodean suara. Pengkodean suara pada umumnya dibagi menjadi dua jenis, yaitu algoritma lossless dan lossy. Algoritma kompresi lossy memiliki tingkat kompresi yang lebih baik dibandingkan dengan lossless, namun memiliki kualitas suara yang lebih buruk. Saat ini algoritma jenis lossy lebih banyak digunakan untuk komunikasi suara jarak jauh dibandingkan dengan algoritma lossless. Pada algoritma kompresi lossy terdapat dua macam cara untuk melakukan pengurangan bit-bit. Cara pertama dengan menghilangkan bit-bit yang mewakili suara yang dianggap tidak dapat didengar oleh telinga manusia. Cara kedua merupakan cara yang menghasilkan banyak reduksi bit, yaitu dengan mengurangi jumlah bit yang digunakan untuk mewakili suatu sinyal suara, namun hal ini dapat menimbulkan noise. Noise pada akhirnya dapat menyebabkan kualitas suara menjadi kurang bagus. Kompresi yang dilakukan akan mengambil tipe algoritma kompresi lossy dengan menggunakan library dari JSpeex. Jspeex merupakan codec untuk kompresi suara dengan menggunakan teknik pengkodean code excited linear prediction (CELP). Jspeex dapat digunakan sebagai pelengkap dari API Java Sound yang telah disediakan oleh Java. CELP diterapkan menggunakan metode perkiraan linear. Untuk lebih jelasnya, Gambar 2.8 dan Gambar 2.9 akan menunjukkan langkah decoder dan encoder pada CELP

Gambar 2.8 Decoder CELP Gambar 2.9 Encoder CELP Berdasarkan Gambar 2.8, masukan dari pembangkitan suara adalah fixed codebook dan adaptive codebook. Fixed codebook biasanya langsung di hard code pada codec, pada Speex fixed codebook disimpan secara eksplisit. Tahap pengkodean pada CELP didasarkan pada Analysis by Synthesis (AbS), pengkodean dilakukan dengan cara mengoptimasi sinyal yang telah dikodekan

(sintesis) dalam suatu putaran yang tertutup secara perseptual. Pada Gambar 2.9, putaran tertutup tersebut diwakilkan oleh garis putus-putus. Algoritma Twofish Twofish merupakan salah satu algoritma yang diajukan untuk mengikuti program penetapan Advanced Encryption Standard (AES) pada tahun 1997. Algoritma ini dirancang oleh Bruce Schneier. Meskipun algoritma ini tidak memenangkan program tersebut, namun tetap terdapat banyak kelebihan dari algoritma ini. 2.3.1 Unsur Pembangun Algoritma Twofish Menurut John Kelsey(1998), algoritma Twofish memiliki beberapa blok pembangun, yaitu: 1. Jaringan Feistel Jaringan Feistel merupakan model komputasi berulang yang digunakan oleh banyak cipher blok. Fungsi dari model jaringan Feistel adalah untuk memetakan suatu fungsi enkripsi yang sederhana menjadi fungsi enkripsi yang rumit dan kuat. Jaringan Feistel memiiki sifat reversible, dalam konteks ini berarti dapat menggunakan fungsi enkripsi dan dekripsi yang sama tanpa perlu mengubah algoritma yang digunakan. Cukup dengan mengganti urutan kunci yang digunakan pada tiap iterasi yang dilakukan. Twofish menggunakan jaringan Feistel dengan 16 kali iterasi. Fungsi F pada jaringan feistel diterapkan pada jaringan Twofish dengan fungsi g, matriks MDS, dan perubahan pseudo hadamard. Secara umum, struktur jaringan feistel seperti pada Gambar 2.10

Gambar 2.10 Enkripsi menggunakan Jaringan Feistel Berdasarkan Gambar 2.10, plainteks masukan akan dibagi menjadi dua bagian, yaitu bagian kiri, Li, dan bagian kanan, Ri. Blok pada iterasi selanjutnya diperoleh dengan rumus sebagai berikut: Li+1 = Ri Ri+1 = Li F (Ki,Ri), i menandakan nomor iterasi pada jaringan feistel. 2. S-box S-box merupakan matriks substitusi yang digunakan untuk memetakan bit-bit. S-box dapat bervariasi bentuk dan ukuran input output-nya. Twofish menggunakan empat S- box yang berbeda, dengan ukuran 8x8 bit. 3. Matriks MDS Matriks MDS (maximum distance separable) adalah matriks transformasi dari sebuah kode linear. yaitu: Selain blok-blok pembangun, algoritma Twofish terdiri dari beberapa proses, 1. Perubahan pseudo-hadamard Perubahan pseudo hadamard merupakan transformasi dua arah yang menghasilkan difusi. Difusi yang dimaksudkan disini adalah properti dari operasi cipher yang dikatakan aman menurut Shannon. Arti difusi

berdasarkan shannon adalah properti dimana pengulangan yang terdapat pada statistik plainteks dihilangkan dari statistik cipherteks [SHA49]. Bit masukan dari PHT harus memiliki panjang yang genap, karena akan dibagi menjadi dua bagian yang sama panjang, masing-masing sepanjang n/2 yang dilambangkan dengan a dan b. Persamaan pseudo-hadamard adalah sebagai berikut: a = a + b (mod 2n) b = a + 2b (mod 2n) untuk membalikkan persamaan diatas, persamaannya adalah: b = b - a (mod 2 n ) a= 2a b (mod 2 n ) dimana n adalah jumlah bit yang digunakan. 2. Whitening Whitening merupakan teknik untuk meningkatkan keamanan dari cipher blok yang menggunakan iterasi, tujuannya adalah agar input dan output dari fungsi F tidak diketahui. Whitening dilakukan dengan cara mengubah data dengan meng-xor data dengan sebagian dari kunci sebelum iterasi pertama dan setelah iterasi terakhir dari enkripsi. Hal ini dapat mempersulit brute force attack John Kelsey(1998). 3. Jadwal Kunci Penjadwalan kunci adalah proses mengubah kunci menjadi beberapa subkunci yang akan digunakan pada iterasi-iterasi. 2.3.2 Tahapan Algoritma Twofish Selain unsur pembangun diatas, ada beberapa proses penunjang lain pada implementasi algoritma Twofish, yaitu: 1. Bit masukan sebanyak 128 bit akan dibagi menjadi empat bagian masingmasing sebesar 32 bit menggunakan konvensi little-endian. Dua bagian bit akan menjadi bagian kanan, dua bagian bit lainnya akan menjadi bagian kiri.

2. Bit input akan di-xor terlebih dahulu dengan empat bagian kunci, atau dengan kata lain mengalami proses whitening. R0,i = Pi Ki i = 0,..., 3 Dimana K adalah kunci, Ki berarti sub kunci yang ke-i. 3. Seperti telah dibahas diatas, algoritma Twofish menggunakan struktur jaringan Feistel. Jaringan Feistel yang digunakan oleh Twofish terdiri dari 16 iterasi. Fungsi f dari Twofish terdiri dari beberapa tahap, yaitu: a. Fungsi g, yang terdiri dari empat s-box dan matriks MDS b. PHT (pseudo-hadamard transform atau perubahan pseudo hadamard) c. Penambahan hasil PHT dengan kunci berikut: Tahapan-tahapan pada algoritma Twofish lebih jelasnya adalah sebagai 1. Bit masukan disebut sebagai P0, P1, P2, dan P3, P0 dan P1 akan menjadi bagian kiri, dua lainnya akan menjadi masukan pada bagian kanan. 2. Kemudian akan melalui proses whitening. 3. Bagian kiri akan menjadi masukan untuk fungsi f, P0 akan langsung menjadi masukan bagi fungsi g, sementara P1 akan di-rotate 8-bit sebelum diproses oleh fungsi g. 4. Didalam fungsi g, bit-bit tersebut akan melalui S-box dan matriks MDS, kemudian kedua keluaran akan digabungkan oleh PHT. 5. Setelah melalui PHT, kedua bagian tersebut akan ditambah dengan bagian dari kunci sesuai dengan iterasi yang telah dilewati. Untuk keluaran dari fungsi f dengan input P0 akan ditambah dengan K2r+8. Untuk keluaran dari fungsi f dengan input P1 akan ditambah dengan K2r+9, dimana r adalah jumlah iterasi yang telah dilewati. Masing-masing ditambah

delapan dan sembilan karena delapan urutan awal sudah digunakan untuk whitening input dan output. 6. Keluaran dari fungsi f dengan input P0 akan di-xor dengan P2, kemudian hasil XOR tersebut akan di-rotate 1-bit. 7. Keluaran dari fungsi f dengan input P1 akan di-xor dengan P3, namun P3 sebelumnya di-rotate 1-bit terlebih dahulu. 8. Setela perhitungan bit selesai, bagian kanan yang telah dihitung tadi akan menjadi bagian kiri dan bagian kiri yang belum dihitung akan menjadi bagian kanan. 9. Kemudian setelah 16 iterasi, akan dilakukan whitening terhadap keluarannya. Whitening pada output akan meng-undo pertukaran bagian kanan dan bagian kiri pada iterasi terakhir, dan melakukan XOR data dengan 4 bagian kunci. Ci = R16,(i+2)mod 4 Ki+4 i = 0,..., 3 Bagian kunci yang digunakan disini berbeda dengan bagian kunci yang digunakan saat whitening pada input. Oleh karena itu urutan bagian kunci yang dipakai ditambah empat, karena empat urutan bagian kunci satu sampai empat sudah terlebih dahulu digunakan untuk whitening pada input. 10. Keempat bagian cipherteks tersebut kemudian ditulis menjadi 16 byte c0,...,c15 menggunakan konversi little-endian seperti pada plainteks. Sampai saat ini serangan kriptanalisis terbaik yang dilakukan pada Twofish adalah pada tahun 2006. Berdasarkan serangan ini dikatakan, Twofish 16- iterasi mudah terkena serangan kriptanalisis truncated differential. Twofish dinyatakan memiliki kemungkinan truncated differential sebanyak 2-57,3 per blok

dan untuk menemukan pasangan differential yang berguna, hanya dibutuhkan 2 51 plainteks terpilih. Serangan ini diklarifikasi oleh Bruce Schneier, yang menyatakan bahwa serangan tersebut bukanlah serangan kriptanalisis penuh melainkan hanya berdasarkan hipotesis karakteristik differential. Berdasarkan fakta tersebut, secara praktiknya algoritma Twofish belum terpatahkan sama sekali semenjak dipublikasikan pada tahun 2000.