Anda di halaman 1dari 8

Implementasi Algoritma Stream Cipher Rabbit Pada Protokol Secure Socket Layer (SSL)

Mohamad Endhy Aziz1, Yan Adikusuma2


1

Fakultas Ilmu Komputer, Universitas Indonesia, mohamad.endhy@ui.ac.id, Telp.+62856 92020442 2 Sekolah Tinggi Sandi Negara, yan_adikusuma@lemsaneg.go.id, Telp.+62813 15502332

Abstrak. Secure Socket Layer (SSL) merupakan salah satu protokol kriptografi yang paling banyak digunakan saat ini. Akan tetapi, dalam penggunaannya SSL memiliki beberapa permasalahan, salah satunya dalam hal performa. Walaupun saat ini SSL telah mendukung AES sebagai standar enkripsi, pada kenyataannya masih banyak kalangan pengembang maupun pengguna yang masih menggunakan RC4 untuk algoritma penyandian datanya (bulk encryption). Hal ini dilakukan untuk mengurangi dampak dari lambatnya performa pada SSL. Namun, dari hasil beberapa penelitian yang telah dilakukan, RC4 terbukti memiliki beberapa kelemahan kriptografis. Pada penelitian ini penulis mengimplementasikan algoritma stream cipher Rabbit sebagai alternatif algoritma penyandian data baru pada SSL. Algoritma Rabbit tidak hanya memiliki kekuatan kriptografis yang baik namun juga memiliki performa yang relatif cukup tinggi. Hasil pengujian menunjukkan bahwa proses transfer data melalui SSL menggunakan algoritma Rabbit sedikit lebih lambat dibandingkan dengan RC4 (sekitar 5 % pada file yang berukuran 5 MB dan 3,5% pada file berukuran 10 MB). Akan tetapi, dibandingkan dengan AES-128, algoritma ini menunjukkan peningkatan kecepatan transfer yang cukup signifikan (sekitar 4 % pada file berukuran 5 MB dan 20% pada file berukuran 10 MB).

1. Pendahuluan
Perkembangan ilmu pengetahuan dan teknologi yang demikian pesat telah memberikan banyak kemudahan bagi manusia dalam melakukan segala kegiatannya, termasuk dalam melakukan pertukaran informasi. Akan tetapi, terdapat pihak-pihak tertentu dengan berbagai kepentingan berusaha mengungkap pertukaran informasi yang dilakukan oleh pihak lainnya. Tentu hal ini menimbulkan suatu kerugian apabila informasi yang dipertukarkan merupakan informasi yang bersifat rahasia, misalnya informasi mengenai account pribadi pada suatu bank. Enkripsi dapat digunakan sebagai salah satu teknik dalam mengamankan pertukaran informasi, khususnya

informasi yang bersifat rahasia. Enkripsi merupakan suatu teknik menyamarkan atau mengaburkan suatu pesan sedemikian rupa sehingga isi pesan tersebut dapat disembunyikan [13]. Enkripsi dapat diterapkan dalam suatu protokol kriptografi yang dikemas dalam suatu aplikasi sehingga kedua belah pihak yang saling berhubungan dapat melakukan komunikasi secara aman. Protokol-protokol jaringan yang digunakan saat ini hanya memberikan perlindungan yang terbatas dalam hal pengamanan data yang ditransmisikan, bahkan terdapat beberapa protokol jaringan yang mengirimkan data secara plain. Dalam perkembangan serta pemanfaatan internet yang sangat signifikan seperti saat ini, seperti untuk transaksi elektronik, perbankan, bahkan pemerintahan, maka sangat mutlak diperlukan suatu mekanisme perlindungan tambahan untuk menjaga kerahasiaan serta integritas data yang ditransmisikan. Salah satu protokol kriptografi yang banyak digunakan saat ini adalah Secure Socket Layer. SSL merupakan protokol yang dirancang untuk mengamankan komunikasi melalui jaringan TCP/IP. Tujuan utama dibuatnya protokol ini adalah untuk menghindari akses yang tidak sah atau modifikasi pada data yang ditransmisikan antara dua endpoint. Pada awalnya, SSL dikembangkan oleh Netscape Corp. dengan tujuan untuk mengamankan komunikasi pada web (melalui web browser). Namun, seiring perkembangan zaman, berbagai aplikasi lain, seperti email, aplikasi transfer data, dsb juga memanfaatkan protokol ini sebagai jalur komunikasi yang dipercaya. Saat ini SSL telah digunakan untuk mengamankan berbagai jenis aplikasi, mulai dari transaksi elektronik, kesehatan, sampai finansial. Akan tetapi, SSL memiliki beberapa permasalahan, salah satunya dalam hal performa [9]. Penelitian menunjukkan web server yang berjalan di atas SSL (HTTPS) lebih lambat 3,4 sampai 9 kali dibandingkan dengan web server reguler [3]. Hal ini tentu berakibat pada berkurangnya produktivitas web server tersebut dalam melayani penggunanya. Permasalahan ini terutama disebabkan oleh perhitungan kriptografis

yang dilakukan pada protokol SSL. Proses perhitungan yang paling banyak memakan sumber daya adalah pada perhitungan public key. Beberapa penelitian telah dilakukan untuk mengatasi permasalahan ini dengan menggunakan beberapa metode [6]. Proses perhitungan lainnya yang cukup memakan sumber daya adalah proses enkripsi data (bulk encryption). Walaupun saat ini SSL telah mendukung AES sebagai standar enkripsi, namun pada kenyataannya masih banyak kalangan pengembang maupun pengguna yang masih menggunakan RC4 sebagai algoritma penyandian datanya. Hal ini dilakukan untuk mengurangi efek dari lambatnya performa SSL. Dilihat dari karakteristiknya, RC4 yang merupakan satu-satunya algoritma stream cipher yang diimplementasikan pada SSL (standar IETF), memang merupakan algoritma yang memiliki performa paling baik dibandingkan dengan algoritma lain pada SSL, misalnya AES, DES, 3DES, dll. Namun, dari hasil beberapa penelitian seperti yang terdapat pada [12], RC4 terbukti memiliki beberapa kelemahan. Walaupun kelemahan-kelemahan tersebut hanya bersifat teoretis, namun tetap perlu kita antisipasi agar tidak terjadi kebocoran dalam pengiriman informasi rahasia. Oleh karena itu, pada penelitian ini penulis berusaha mengimplementasikan suatu algoritma yang tidak hanya memiliki kekuatan kriptografis yang baik namun juga memiliki performa yang secara umum lebih baik dibanding algoritma lainnya [1][2]. Algoritma yang diimplementasikan adalah algoritma stream cipher Rabbit. Rabbit didesain sebagai algoritma yang efisien dalam implementasi pada software. Algoritma Rabbit didesain dan telah dipelajari secara ekstensif oleh para pakar kriptografi dari Cryptico A/S dengan memperhatikan berbagai jenis metode kriptanalisa [11]. Algoritma ini juga telah distandarisasi oleh IETF melalui RFC 4503. Dari hasil pengujian serta analisa yang dilakukan, algoritma Rabbit terbukti kuat secara kriptografis dan resistan terhadap metode-metode kriptanalisa yang ada [2]. Berdasarkan karakteristik yang dimiliki oleh algoritma Rabbit, maka diharapkan implementasi algoritma ini dapat tetap menjaga performa pada SSL seperti yang dimiliki oleh RC4 dengan tidak mengorbankan aspek keamanan yang tentunya harus lebih diutamakan.

akses yang tidak sah terhadap data yang ditransmisikan. Protokol SSL saat ini telah memiliki beberapa versi. SSL versi 3 (SSLv3) didesain dengan memperhatikan masukan dari kalangan publik serta industri, dan telah dipublikasikan sebagai Internet Draft. Versi SSL terbaru, yaitu Transport Layer Security (TLS) merupakan versi protokol SSL yang telah distandarisasi oleh IETF melalui RFC 2246. Protokol SSL bekerja di bawah lapisan aplikasi (application layer) pada protokol TCP/IP. SSL pada dasarnya merupakan protokol berlapis (layered protocol). SSL Record Protocol, yang merupakan lapisan (layer) paling bawah, berjalan di atas protokol transport yang dapat diandalkan (reliable transport protocol) seperti TCP. SSL Record Protocol juga berfungsi mengkapsulasi berbagai protokol pada lapisan yang lebih tinggi (higher-level protocol), seperti HyperText Transfer Protocol (HTTP) yang menyediakan layanan transfer pada Web. Tiga protokol pada lapisan yang lebih tinggi adalah Handshake Protocol, Change Cipher Spec Protocol, dan Alert Protocol. Tiga protokol pada lapisan atas ini berfungsi mengatur pertukaran informasi yang dilakukan pada SSL (SSL exchange). Gambar 1 adalah ilustrasi dari lapisan protokol pada SSL.
SSL Handshake Protocol SSL Change Cipher Spec Protocol SSL Alert Protocol Application Lay er Protocol

SSL Record Protocol

TCP IP Sumber : Rhee, M.Y. 2003. Internet Security: Cryptographic Principles, Algorithms and Protocols.

Gambar 1. Ilustrasi lapisan protokol SSL.

2. Protokol Secure Socket Layer (SSL)


Secure Socket Layer (SSL) merupakan salah satu protokol kriptografi yang paling banyak digunakan saat ini. Protokol ini berfungsi menyediakan jalur yang aman serta mengotentikasi kedua belah pihak/entitas yang berkomunikasi untuk mencegah modifikasi atau

SSL Record Protocol menyediakan layanan keamanan dasar bagi protokol-protokol pada lapisan yang lebih tinggi, yaitu Handshake Protocol, Change Cipher Spec Protocol, dan Alert Protocol. SSL Record Protocol menerima data dari suatu aplikasi, kemudian menjalankan beberapa tahapan, diantaranya : fragmentasi data ke dalam beberapa blok, kompresi data (opsional), penambahan MAC, enkripsi data, penambahan header, kemudian mengirimkan hasilnya ke TCP. Sebaliknya, data yang diterima akan didekripsi, deverifikasi, didekompres, disatukan (reassambled), kemudian hasilnya dikirim kepada aplikasi pada lapisan yang lebih tinggi. Ilustrasi

operasi pada SSL Record Protocol secara keseluruhan


ditunjukkan pada Gambar 2.

algoritma pada umumnya, algoritma Rabbit tidak menggunakan linear feedback shift register ataupun Sbox. Desain ini memiliki beberapa konsekuensi penting.

Sumber : Rhee, M.Y. 2003. Internet Security: Cryptographic Principles, Algorithms and Protocols.

Sumber : Boesgard, M. et al. 2003. The Stream Cipher Rabbit.

Gambar 3. Skema Next-state Function pada Rabbit.

Gambar 2. Ilustrasi operasi pada SSL Record Protocol.

3. Stream Cipher Rabbit


Algoritma Rabbit dipublikasikan pertama kali pada Fast Software Encryption Workshop 2003. Algoritma ini merupakan algoritma stream cipher yang menggunakan kunci (secret key) dengan panjang 128bit dan 64-bit IV sebagai input. Hasil kombinasi internal state-nya menghasilkan output berupa rangkaian bit semi acak (pseudorandom bit) dengan panjang 128-bit per blok. Proses enkripsi/dekripsi dilakukan dengan men-XOR-kan rangkaian bit semi acak tersebut dengan plaintext/ciphertext. Internal state-nya berjumlah 513 bit dibagi ke dalam delapan 32-bit variabel state, delapan 32-bit counter dan satu counter carry bit. Kedelapan variabel state di-update oleh fungsi non-linear masing-masing pasangan variabel state tersebut. Algoritma Rabbit didesain agar efisien dalam implementasi pada software serta mengimbangi ukuran kunci sepanjang 128 bit untuk mengenkripsi sampai dengan 264 blok plaintext. Ini berarti bahwa untuk melakukan attack tanpa mengetahui rangkaian kunci, maka pihak penyerang harus menentukan sampai dengan 264 blok output ciphertext atau melakukan exhaustive key search sebanyak 2128 kombinasi kunci. Algoritma Rabbit merupakan stream cipher dengan desain baru. Desain algoritma ini menggunakan proses pencampuran (mixing) inner state secara non-linear antara dua iterasinya. Berbeda dengan desain-desain
3

Desain algoritma Rabbit sangat kompak. Seluruh operasi aritmatika yang digunakan pada algoritma ini didukung oleh prosesor modern, sehingga algoritma ini memiliki kecepatan pemrosesan yang sangat tinggi pada berbagai platform. Berbeda dengan desain algoritma stream cipher pada umumnya, algoritma ini juga memiliki kecepatan IV serta key setup yang tinggi. Algoritma Rabbit tidak menggunakan S-box atau operasi pada GF (2n). Oleh karena itu tidak dibutuhkan look up table, sehingga ruang memori yang dibutuhkan baik dalam implementasi pada hardware maupun software sangat kecil. Tabel 1 merupakan performa (dalam clock cycles atau clock cycles per byte), ukuran kode (code size) dan jumlah memori (dalam byte) yang dibutuhkan masing-masing untuk proses enkripsi, key setup dan IV setup pada prosesor Intel Pentium berdasarkan [1].
Tabel 1. Performa, ukuran kode dan jumlah memori yang dibutuhkan oleh Rabbit pada prosesor Pentium.
Prosesor Pentium III Pentium 4 Performa 3,7/278/253 5,1/480/749 Ukuran Kode 440/617/720 698/516/762 Memori 40/36/44 16/36/28

Selain itu, yang perlu dijadikan catatan, pada prosesor modern jumlah inner state-nya tidak melebihi ruang pada register prosesor tersebut, sehingga tidak membutuhkan akses ke memori utama yang kurang

efisien secara komputasi (membutuhkan waktu dan perhitungan tambahan). Algoritma Rabbit telah dievaluasi secara ekstensif terhadap seluruh kemungkinan attack yang dapat dilakukan, baik stream maupun block cipher kriptanalisis. Desain Rabbit yang berbeda membuat jenis attack umum yang dapat dilakukan terhadap stream cipher menjadi tidak aplikatif. Baik algebraic attack maupun correlation attack tidak dapat diaplikasikan terhadap Rabbit. Time-Memory-Data tradeoff juga tidak dapat diaplikasikan terhadap Rabbit karena jumlah internal state yang cukup besar, yakni 513 bit. Para pendesain algoritma ini yakin bahwa untuk melakukan serangan terhadap Rabbit harus dilakukan berdasarkan suatu metode attack yang sama sekali baru. Dari hasil pengujian serta analisa, disimpulkan bahwa algoritma Rabbit resistan terhadap metode kriptanalisa yang ada saat ini.

4. Metode Pengujian
Pada bagian ini akan dijabarkan mengenai metode pengujian yang digunakan untuk mengevaluasi hasil implementasi algoritma Rabbit pada protokol SSL. Secara umum, pengujian yang dilakukan dititik beratkan pada performa algoritma Rabbit dalam implementasinya pada SSL. Proses pengujian dilakukan dengan melakukan perbandingan (benchmarking) antara algoritma Rabbit dengan algoritma simetrik lain yang terdapat pada protokol SSL, yakni AES-128 dan RC4. Sebagai catatan, penggunaan algoritma AES banyak direkomendasikan bagi pengguna yang menitik beratkan pada faktor keamanan, sedangkan RC4 direkomendasikan bagi mereka yang menitik beratkan pada faktor performa. Sebagai acuan awal, penulis melakukan perbandingan performa ketiga algoritma tersebut secara independen (sebelum/tanpa implementasi pada protokol SSL). Untuk melakukan perbandingan ini, penulis menggunakan tool OpenSSL. OpenSSL menyediakan suatu benchmarking suite yang dapat digunakan untuk menguji performa setiap algoritma yang terdapat pada OpenSSL. Cara kerja dari benchmarking suite ini adalah mengukur berapa banyak operasi yang dapat dilakukan oleh setiap algoritma untuk mengenkripsi data dalam jumlah dan waktu yang telah ditentukan (3 detik). Untuk menguji performa ketiga algoritma di atas dalam implementasinya pada protokol SSL, penulis melakukan serangkaian tahapan pengujian. Protokol pada lapisan aplikasi (application layer) yang memanfaatkan SSL pada pengujian ini adalah HTTP,

dimana kombinasi kedua protokol ini membentuk suatu protokol yakni HTTPS (HTTP over SSL). Pada protokol SSL, ketiga algoritma tersebut digunakan sebagai bulk encryption algorithm (algoritma penyandian data) dalam SSL Record Protocol. Pada SSL Record Protocol inilah seluruh data dari lapisan aplikasi (application layer) diproses, mulai dari pemecahan data menjadi beberapa fragmen, penghitungan nilai MAC, enkripsi, sampai dengan pengiriman. Selain itu, pada pengujian ini perlu dilakukan pemisahan antara Record Protocol dengan tahapan protokol lainnya pada SSL. Penulis menggunakan program Wireshark Network Analyzer1 untuk melihat dan memisahkan tahapan-tahapan protokol tersebut. Penulis menggunakan Wireshark Network Analyzer versi 0.99.4, dimana pada versi ini sudah terdapat dukungan untuk melakukan analisis terhadap paketpaket jaringan yang dikirimkan menggunakan protokol SSL.

4.a.Metrik Pengujian
Penulis membandingkan performa ketiga algoritma (Rabbit, RC4 dan AES-128) dengan menggunakan : 3 ciphersuites yang berbeda, masing-masing mewakili algoritma yang diuji, yaitu TLS_RSA_WITH_RABBIT_SHA, TLS_RSA_ WITH_RC4_128_SHA dan TLS_RSA_WITH_ AES128_SHA. Pemilihan ciphersuites ini berdasarkan dukungan ciphersuites pada OpenSSL serta untuk kesetaraan dalam pengujian (OpenSSL tidak mendukung ciphersuites RC4 dengan algoritma ephemeral DH/DHE sebagai algoritma otentikasinya, sedangkan ciphersuites AES dan Rabbit tidak mendukung penggunaan algoritma digest selain SHA). 5 file dengan ukuran yang berbeda, masing-masing 500 KB, 1 MB, 2 MB, 5 MB dan 10 MB. Perbedaan ukuran file ini untuk melihat sejauh mana performa setiap algoritma berdampak pada lamanya waktu transfer tiap-tiap file. Setiap file dengan menggunakan setiap algoritma diambil sampel sebanyak 30 kali. Pengambilan sampel sebanyak ini diharapkan sudah mewakili populasi untuk setiap proses transfer setiap file menggunakan ketiga algoritma yang diuji. Pengujian ini dilakukan pada jaringan ethernet (LAN) dengan kapasitas 100 MBps dalam kondisi lalu lintas (traffic) jaringan yang tidak terlalu sibuk, sehingga diasumsikan bahwa
1

Dapat diakses di http://www.wireshark.org

kondisi jaringan tidak terlalu berpengaruh pada proses transfer data.

4.b.Platform Pengujian
Untuk perangkat server, penulis menggunakan Apache Server 1.3 dengan mod_ssl2 yang telah dikonfigurasi sehingga mendukung penggunaan algoritma Rabbit. Sedangkan untuk aplikasi client, penulis menggunakan cURL3. cURL merupakan suatu aplikasi transfer data yang mendukung penggunaan beberapa jenis protokol, antara lain HTTP, HTTPS, FTP, LDAP, dll. Spesifikasi komputer yang digunakan pada server adalah PC dengan spesifikasi yang sama dengan pengujian kedua, menggunakan sistem operasi Fedora Core Linux 6. Sedangkan di sisi client, penulis menggunakan komputer notebook dengan spesifikasi prosesor Intel Celeron 1,5 GHz dan memori 1 GB. Sistem operasi yang digunakan adalah OpenSUSE Linux 10.2. Pada komputer client ini sudah terinstalasi aplikasi cURL dan Wireshark Network Analyzer yang digunakan untuk menginisialisasi koneksi dengan server dan menganalisa (memisahkan) tahapan-tahapan dalam protokol SSL.

Gambar 4. Perbandingan performa antara algoritma Rabbit, RC4 dan AES-128 pada platform Windows.

5. Hasil Pengujian dan Analisis


Dari hasil pengujian dan analisis ini akan didapatkan suatu evaluasi hasil implementasi dan juga perbandingan antara algoritma yang diimplementasikan (Rabbit) dengan beberapa algoritma lain yang terdapat pada protokol SSL dilihat dari sudut pandang performa dan juga keamanannya.
Gambar 5. Perbandingan performa antara algoritma Rabbit, RC4 dan AES-128 pada platform Linux (Fedora Core Linux 6).

5.a. Performa Algoritma Rabbit dalam Implementasinya pada SSL


Gambar 4 dan 5 merupakan hasil dari pengujian awal untuk mengetahui performa ketiga algoritma yang diuji sebelum/tanpa implementasi di SSL pada dua lingkungan pengujian yang berbeda (Windows dan Linux). Kode sumber OpenSSL pada kedua platform tersebut dikompilasi dengan optimasi untuk prosesor Pentium (x86).

Berdasarkan pengujian tersebut, terdapat perbedaan performa pada kedua lingkungan pengujian. Sebagai catatan, penulis menggunakan Microsoft Visual C++ 8.0 untuk melakukan kompilasi OpenSSL pada lingkungan Windows, sedangkan pada Linux (Fedora Core Linux 6) penulis menggunakan gcc versi 4.1.1. Hal ini menunjukkan bahwa penentuan lingkungan pengujian/platform juga akan berdampak pada performa yang dihasilkan. Gambar 6 merupakan hasil perbandingan performa ketiga algoritma (Rabbit, RC4 dan AES-128) dalam implementasinya pada protokol SSL. Berdasarkan pengujian tersebut, perbedaan waktu transfer yang cukup signifikan mulai terlihat pada proses transfer file yang berukuran 10 MB. Sedangkan waktu transfer untuk file yang berukuran lebih kecil (500 KB, 1 MB, 2 MB dan 5 MB) perbedaannya tidak terlalu signifikan (hanya berselisih sekitar beberapa milidetik).

2 3

Dapat diakses di http://www.modssl.org Dapat diakses di http://www.curl.haxx.de

1,25

Waktu (detik)

1,0 26 3 1, 063 6 1,2 77 054

1,5

0,4 78 8 0,5 06 0,5 4 27 2

0,75

RC4 Rabbit AES-128

0,5
0,1 96 0,2 2 19 0,2 6 32 9

0 500 KB 1 MB 2 MB 5 MB 10 MB

0,0 52 0,0 56 0,0 9 61 5

0,25

Jumlah Data

Gambar 6. Hasil perbandingan performa tiap-tiap algoritma dengan mengukur lama waktu proses transfer file.

Hasil pengujian tersebut menunjukkan bahwa kecepatan proses transfer file dengan algoritma Rabbit mengalami sedikit penurunan dibandingkan dengan menggunakan RC4 (sekitar 2,5% pada file yang berukuran 10 MB). Akan tetapi, dibandingkan dengan AES-128, kecepatan proses transfer file menggunakan algoritma Rabbit menunjukkan peningkatan yang cukup signifikan, khususnya pada file berukuran 10 MB. Salah satu aspek yang paling diperhatikan pada pemilihan algoritma dalam implementasinya pada suatu sistem adalah performa (kecepatan) algoritma tersebut dalam melakukan proses enkripsi. Algoritma Rabbit, yang merupakan jenis algoritma stream cipher, didesain sebagai algoritma yang memiliki performa tinggi, terutama dalam implementasinya pada software. Hasil pengujian menggunakan benchmarking suite OpenSSL yang diilustrasikan pada Gambar 5 dan 6 memberikan gambaran mengenai performa algoritma Rabbit secara umum. Walaupun terdapat perbedaan hasil antara kedua lingkungan pengujian, akan tetapi secara umum hasil pengujian tersebut menunjukkan bahwa algoritma Rabbit memiliki performa yang relatif lebih baik dibandingkan dengan AES-128 (mencapai 59% pada lingkungan Windows dan 43% pada Linux). Berdasarkan pengujian yang sama, RC4 merupakan algoritma yang memiliki performa paling baik, dengan throughput mencapai 237,606 MB/s. Hal ini dikarenakan proses enkripsi RC4 secara keseluruhan merupakan yang paling sederhana dibandingkan dengan Rabbit dan AES-128. Dalam menghasilkan rangkaian kunci (keystream), RC4 hanya membutuhkan beberapa langkah dengan menggunakan
6

operasi-operasi sederhana (swap dan addition/penambahan). Proses enkripsi hanya dilakukan dengan men-XOR rangkaian kunci yang dihasilkan dengan plaintext. Lain halnya dengan AES-128, dimana plaintext yang menjadi input pada algoritma ini diproses melalui beberapa round (putaran), dan tiap-tiap round tersebut terdiri dari beberapa operasi, yaitu substitusi S-Box, pergeseran, multiplikasi dan operasi XOR. Keseluruhan proses ini tentunya berdampak pada performa algoritma ini sehingga relatif lebih lambat dibandingkan dengan algoritma lainnya. Proses enkripsi pada algoritma Rabbit sedikit lebih rumit dan membutuhkan sumber daya (resource) dibandingkan dengan RC4. Rabbit menggunakan suatu fungsi yang bernama g-function (fungsi non-linear), dimana pada fungsi inilah letak kekuatan kriptografis utama dari keseluruhan algoritma. g-function ini merupakan operasi pemangkatan 32-bit (32-bit squaring). Walaupun operasi ini relatif cepat dan efisien dalam implementasinya pada prosesor modern, operasi inilah yang paling membutuhkan sumber daya dibandingkan operasi-operasi yang digunakan pada algoritma lainnya (RC4 dan AES tidak menggunakan operasi ini, walaupun pada AES terdapat operasi multiplikasi). Sebagai catatan, fungsi ini digunakan dalam setiap proses pada algoritma Rabbit (key setup, IV setup dan next-state function). Faktor ini yang menyebabkan performa yang dimiliki algoritma Rabbit tidak sebaik yang dimiliki RC4. Dalam implementasinya pada protokol SSL, dalam hal ini untuk mengamankan komunikasi (transfer data) pada HTTP, algoritma Rabbit juga menunjukkan performa yang relatif lebih baik jika dibandingkan dengan AES-128. Berdasarkan pengujian, dalam implementasinya, RC4 tetap merupakan algoritma yang memiliki performa paling baik, disusul oleh Rabbit dan terakhir AES-128. Pada proses transfer data yang berukuran 500 KB, 1 MB, 2 MB dan 5 MB, perbedaan performa antara ketiga algoritma belum terlalu terlihat. Perbedaan performa ini cukup terlihat pada proses transfer file yang berukuran 10 MB. Pada file dengan ukuran ini, proses transfer menggunakan Rabbit lebih cepat mencapai 20% dibandingkan dengan AES-128, walaupun lebih lambat sekitar 3,5% dibandingkan dengan RC4. Berdasarkan hasil tersebut, penggunaan algoritma Rabbit akan lebih optimal untuk proses transfer data yang berjumlah cukup besar (10 MB). Sedangkan untuk proses transfer data yang jumlahnya relatif kecil, halaman web misalnya, pemilihan algoritma simetrik tidak memiliki pengaruh yang signifikan terhadap kecepatan proses transfer data (berdasarkan pengujian,

0,0 99 0,1 4 08 0,1 1 15 3

transfer data pada file berukuran 500 KB tidak menunjukkan perbedaan yang signifikan antara tiaptiap algoritma yang digunakan). Selain itu, berdasarkan pengujian awal (lihat gambar 5 dan 6), hasil yang berbeda dalam implementasinya pada kedua platform yang berbeda menunjukkan bahwa performa setiap algoritma, termasuk Rabbit, juga bergantung pada platform yang menjalankannya. Berkaitan dengan hal ini, diperlukan suatu penelitian lebih lanjut mengenai pengaruh suatu platform terhadap proses/operasi pada algoritma enkripsi. Akan tetapi, yang perlu digaris bawahi adalah bahwa penentuan suatu platform juga akan berdampak pada performa hasil implementasi suatu algoritma.

dibandingkan dengan tingkat keamanan/kekuatan kriptografis yang dimiliki oleh Rabbit.

6. Kesimpulan
Walaupun proses transfer data melalui SSL menggunakan algoritma Rabbit menunjukkan hasil yang lebih lambat dibandingkan dengan RC4 (sekitar 3,5% pada file berukuran 10 MB), algoritma ini menunjukkan peningkatan kecepatan transfer yang cukup signifikan dibandingkan dengan AES-128 (sekitar 20% pada file berukuran 10 MB). Hal ini memperlihatkan bahwa perbedaan performa antara Rabbit dengan RC4 pada SSL tidak terlalu signifikan dibandingkan dengan tingkat keamanan/kekuatan kriptografis yang dimiliki oleh Rabbit.

5.b.Analisis Penggunaan Algoritma Rabbit pada SSL Ditinjau dari Faktor Keamanan
Faktor keamanan adalah hal paling utama dalam pemilihan suatu algoritma dalam implementasinya pada suatu sistem. Algoritma Rabbit tidak hanya memiliki performa yang tinggi dalam implementasinya pada software, namun juga memiliki kekuatan kriptografis yang sangat baik dan telah melalui berbagai metode kriptanalisa. Salah satu nilai tambah yang dimiliki oleh Rabbit adalah skema IV (IV scheme) yang digunakan pada proses enkripsi. Dalam setiap proses enkripsi, selain menggunakan kunci sepanjang 128 bit sebagai input, Rabbit juga menggunakan IV dengan panjang 64 bit. Penggunaan IV akan menghasilkan sampai dengan 264 rangkaian kunci yang berbeda walaupun menggunakan kunci yang sama. Selain itu, penggunaan IV juga akan menambah kompleksitas dalam kriptanalisa karena adanya mekanisme re-keying, sehingga akan mempersulit rekonstruksi kunci input yang digunakan. Hal inilah yang menjadi nilai tambah Rabbit dibandingkan dengan RC4 sebagai sesama jenis algoritma stream cipher. Sebagai catatan, nilai IV yang dihasilkan dari proses pertukaran kunci pada fase SSL Handshake Protocol tidak dapat dimanfaatkan oleh algoritma RC4 karena algoritma ini tidak mendukung penggunaan IV, sehingga nilai kerahasiaan dari setiap pembangkitan rangkaian kunci hanya bergantung pada kunci input yang digunakan. Walaupun saat ini belum terdapat penelitian yang menunjukkan kelemahan terhadap penggunaan RC4 pada SSL, akan tetapi sebagai insan sandi kita tetap perlu mewaspadai terhadap segala kemungkinan bentuk kelemahan ataupun serangan yang mungkin terjadi. Berdasarkan pengujian, perbedaan performa antara algoritma Rabbit dengan RC4 dalam implementasinya pada SSL menunjukkan hasil yang tidak terlalu signifikan

Referensi
[1] Boesgard, M., Vesterager M., Christensen T. & Zenner, E. 2003. The Stream Cipher Rabbit, http://www.ecrypt.eu.org/stream/p3ciphers/ rabbit/rabbit_p3.pdf. [2] Boesgard, M., Pedersen, T., Vesterager M., & Zenner E. 2004. Proc. SASC 2004 : The Rabbit Stream Cipher - Design and Security Analysis, http://www.cryptico.com/DWSDownload.asp? File=Files/Filer/ SASC_Rabbit.pdf. [4] Coarfa, C., Druschel, P. & Wallach, D.S. 2002. Performance Analysis of TLS Web Servers, http://www.isoc.org/isoc/conferences/ndss/02/ proceedings/papers/coarfa.pdf. [5] Doroshenko, B. & Ryabko, B. The Experimental Distinguishing Attack On RC4. http://eprint.iacr.org/2006/070.pdf. [6] Jensen, Jens G. 2006. Enhancing SSL Performance, http://www.gridpp.ac.uk/papers/ chep06_jensen.pdf. [7] Gupta, V., Stebila, D., Fung, S., Shantz, S.C., Gura, N. & Eberle, H. 2004. Speeding Up Secure Web Transaction Using Elliptic Curve Cryptography, http://research.sun.com/projects/ crypto/ecc-ssl-ndss2004.pdf. [8] Hare, Chris. 2004. Dalam Tipton, H.F. & Krause, Micki (Eds.), Information Security Management Handbook - 5th Edition (hlm. 203-215). Auerbach Publications. [9] Rescorla, E. 2001. SSL and TLS: Building and Design Secure Systems. New Jersey: Addison Wesley.
7

[10]Rhee, M.Y. 2003. Internet Security: Cryptographic Principles, Algorithms and Protocols. West Sussex: John Wiley & Sons Ltd. [11]Rijmen, V. 2003. Analysis of Rabbit, http://www.cryptico.com/DWSDownload.asp? File=Files/filer/ security_report.pdf. [12]Ross, A. 1995. A Class of Weak Keys in

RC4 Stream Cipher, http://marcel.wanda.ch/Archive/WeakKeysreport.pdf


[13]Schneier, B. 1996. Applied Cryptography: Protocols, Algorithms, and Source Code in C 2nd Edition. New York: John Wiley & Sons, Inc. [14]Viega, J., Meisser, M. & Chandra, P. 2002. Network Security with OpenSSL. California: OReilly & Associates, Inc. [15]http://www.openssl.org.

Mohamad Endhy Aziz adalah seorang penggiat keamanan informasi. Saat ini ia sedang menempuh kembali pendidikan sarjana di Fakultas Ilmu Komputer Indonesia setelah sebelumnya menamatkan gelar yang sama di Sekolah Tinggi Sandi Negara. Saat ini ia bekerja di salah satu lembaga pemerintah yang bergerak di bidang keamanan informasi. Yan Adikusuma adalah adalah seorang penggiat keamanan informasi. Ia merupakan salah satu staf pengajar di Sekolah Tinggi Sandi Negara. Setelah menamatkan pendidikan sarjana di Universitas Budi Luhur, ia melanjutkan studi dan memperoleh gelar Master of Engineering dari Nara Institute of Science and Technology (NAIST), Jepang.

Anda mungkin juga menyukai