Dalam
era teknologi yang semakin canggih,
keamanan data menjadi hal yang sangat penting. Berbagai hacker, virus, penipuan
elektronik maupun mendengar diam-diam secara elektronik, yang akan menimbulkan
masalah dalam keamanan data.
Perkembangan sistem komputer dan interkoneksinya melalui jaringan telah meningkat,
tentu saja hal ini membutuhkan keamananan data dan message yang handal agar
terhindar dari serangan. Saat ini sistem komputer yang terpasang makin mudah
diakses. Sistem time sharing dan akses jarak jauh menyebabkan masalah keamanan
menjadi salah satu kelemahan komunikasi data seperti internet. Disamping itu
kecenderungan lain saat ini adalah memberikan tanggung jawab sepenuhnya ke
komputer untuk mengelola aktifitas pribadi dan bisnis seperti sistem transfer
dana elekronis yang melewatkan uang sebagai aliran bit dan lain sebagainya.
Untuk
keamanan data, diperlukan kriptografi dengan metode enkripsi. Pada tugas akhir
ini, metode enkripsi yang dipakai adalah metode enkripsi algoritma RC4 (Rivest
Code 4).
A. Tujuan
1. Mahasiswa dapat memahami tentang keamanan sistem dan kriptografi.
2. Mahasiswa dapat memahami tentang Algoritma RC4
3. Mahasiswa
dapat merancang dan mengimplementasikan algoritma
kriptografi RC4 (Rivest Code4) guna mengamankan data.
BAB II
RC4 ALGORITHM
A.
Definisi
RC4
merupakan salah satu jenis stream
cipher yang didesain oleh Ron Riverst di
laboratorium RSA (RSA Data Security inc) pada tahun 1987. RC4 sendiri merupakan
kepanjangan dari Ron Code atau Rivest’s Cipher. RC4 stream cipher ini merupakan teknik enkripsi yang dapat
dijalankan dengan panjang kunci yang variabel dan beroperasi dengan orientasi
byte.
Algoritma
yang sesungguhnya tidak dipatenkan oleh RSADSI, hanya saja tidak diperdagangkan
secara bebas sampai sekarang. Penyebarannya diawali dari sebuah source code yang diyakini
sebagai RC4 dan dipublikasikan secara 'anonymously' pada September tahun 1994. Algoritma yang
dipublikasikan ini sangat identik dengan implementasi RC4 pada produk resmi.
RC4 digunakan secara luas pada beberapa aplikasi dan umumnya dinyatakan sangat
aman.
RC4 memproses unit atau
input data, pesan atau informasi pada satu saat. Unit atau data pada umumnya
sebuah byte atau bahkan kadang kadang bit (byte dalam hal RC4). Dengan cara ini
enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma
ini tidak harus menunggu sejumlah input data, pesan atau informasi tertentu
sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip. Contoh
stream cipher adalah RC4, Seal, A5, Oryx, dan lain-lain. Tipe lainnya adalah
block cipher yang memproses sekaligus sejumlah tertentu data (biasanya 64 bit
atau 128 bit blok), contohnya : Blowfish, DES, Gost, Idea, RC5, Safer, Square,
Twofish, RC6, Loki97, dan lain-lain.
Gambar
1. Stream chiper
RC4
merupakan enkripsi stream simetrik proprietary yang dibuat oleh RSA Data
Security Inc (RSADSI). Penyebarannya diawali dari sebuah source code yang
diyakini sebagai RC4 dan dipublikasikan secara 'anonymously' pada tahun 1994. Algoritma yang dipublikasikan ini
sangat identik dengan implementasi RC4 pada produk resmi. RC4 digunakan secara
luas pada beberapa aplikasi dan umumnya dinyatakan sangat aman. Sampai saat ini
diketahui tidak ada yang dapat memecahkan/membongkarnya, hanya saja versi
ekspor 40 bitnya dapat dibongkar dengan cara "brute force" (mencoba
semua kunci yang mungkin). RC4 tidak dipatenkan oleh RSADSI, hanya saja tidak
diperdagangkan secara bebas (trade secret).
Algoritma RC4 cukup mudah untuk
dijelaskan. RC4 mempunyai sebuah S-Box, S0,S1,...,S255, yang berisi permutasi
dari bilangan 0 sampai 255, dan permutasi merupakan fungsi dari kunci dengan
panjang yang variabel. Terdapat dua indeks yaitu i
dan j, yang diinisialisasi dengan
bilangan nol. Untuk menghasilkan random byte langkahnya adalah sebagai berikut
:
i = (
i + 1 ) mod 256
j = (
j + Si ) mod 256
swap
Si dan Sj
t =
(Si + Sj) mod 256
K = St
Byte
K di XOR dengan plaintexs untuk
menghasilkan cipherteks atau di XOR dengan cipherteks untuk menghasilkan
plainteks. Enkripsi sangat cepat kurang lebih 10 kali lebih cepat dari DES.
Inisialisasi S-Box juga sangat mudah. Pertama isi secara
berurutan S0 = 0, S1 = 1,...,S255 = 255. Kemudian isi array 256 byte lainnya
dengan kunci yang diulangi sampai seluruh array K0, K1,...,K255 terisi
seluruhnya. Set indeks j dengan nol, Kemudian lakukan langkah ini :
for i = 0 to 255
j =
(j + Si + Ki) mod 256
swap
Si dan Sj
Gambar 2. Algoritma Enkripsi RC4
Diagram
RC4 Algorithm
Gambar 3. Diagram RC4
Salah
satu kelemahan dari RC4 adalah terlalu tingginya kemungkinan terjadi tabel
S-box yang sama, hal ini terjadi karena kunci user diulang-ulang untuk mengisi
256 bytes, sehingga 'aaaa' dan 'aaaaa' akan menghasilkan permutasi yang sama.
Untuk mengatasi ini maka pada implementasinya nanti kita menggunakan hasil hash
160 bit SHA dari password kita untuk mencegah hal ini terjadi. Kekurangan
lainnya ialah karena enkripsi RC4 adalah XOR antara data bytes dan pseudo-random
byte stream yang dihasilkan dari kunci, maka penyerang akan mungkin untuk
menentukan beberapa byte pesan orisinal dengan meng-XOR dua set cipher byte,
bila beberapa dari pesan input diketahui (atau mudah untuk ditebak). Untuk
mengatasinya pada aplikasinya kita menggunakan initialization vector (IV) yang
berbeda-beda untuk setiap data, sehingga bahkan untuk file yang sama akan
dihasilkan ciphertext yang berbeda. IV ini tidak perlu dirahasikan
karena digunakan hanya agar setiap proses enkripsi akan menghasilkan ciphertext
yang berbeda.
Untuk lebih
meningkatkan keamanan dari metoda ini dapat juga mengembangkan inisialisasi
kunci yang baru yang kita sebut saja inisialisasi SK (strengtened key),
pada proses ini kunci user di-expand hingga 260 byte (tetapi kemudian
hanya 256 byte saja yang digunakan) dengan menggunakan SHA-1, caranya pertama
kunci user dijadikan kunci, kemudian 1-20 byte pertama pada buffer diproses
dengan SHA kemudian digestnya diletakan pada 20 byte pertama, kemudian diambil
byte 1-40 diproses dengan SHA dan hasilnya diletakan mulai pada byte 20,
berikutnya byte 1-60 hasilnya diletakkan pada mulai byte 40, dan seterusnya.
Kemudian buffer ini dienkrip dengan RC4, lalu buffer dijadikan kunci kembali,
proses terakhir ini diulang sebanyak 16 kali untuk mencoba mencampur dengan
baik sehingga dihasilkan kunci yang se-random mungkin.
Untuk lebih jelas tetang proses ini dapat dilihat pada listing.
Penggunaan SHA pada proses inisialisasi kunci bukanlah hal yang baru, hal ini
dapat dilihat pada proses inisialisasi kunci SEAL misalnya. Penggunaan proses
primitif enkripsi pada inisialisasi kunci juga digunakan juga pada Blowfish
ataupun Cobra-128. Secara teoritis dengan proses ini akan ekivalen dengan
menggunakan kunci sebesar 2048 bit, walaupun penulis sendiri tidak yakin akan
hal ini (mungkin pembaca ada yang bisa memberikan tanggapan). Metoda ini
tampaknya sedikit lebih rumit dari pada inisialisasi kunci standar, tetapi pada
Pentium 133 prosesnya hanya memerlukan waktu kurang sari 10ms saja. Metoda ini
walaupun kami anggap lebih kuat, tetapi belum teruji sehingga dalam penerapan
aplikasinya terdapat dua pilihan yaitu dengan metoda SK ini atau dengan metoda
standar.
B.
Performance Algoritma
Kecepatan enkripsi
dari RC4 cukup baik, hal ini terjadi karena proses enkripsinya yang cukup
sederhana dan hanya melibatkan beberapa operasi saja per bytenya. Berdasarkan
pada data hasil dari pengukuran yang telah dilakukan oleh Budi Sukmawan
pada September 1998(sumber: bdg.centrin.nrt.id). Untuk lebih jelasnya
mari kita perhatikan hasil pembandingan
pada beberapa platform hardware yang telah di lakukan. Kecepatan ini adalah
kecepatan enkripsi di memori, karena dalam proses enkripsi file sesungguhnya melibatkan
banyak faktor lain seperti interface IO, tipe Hardisk, dan lain-lain. Hasil
perbandingan ini dapat dilihat pada tabel, yang didapat dengan enkripsi 256
byte per blok sebanyak 20480 kali, atau setara dengan kurang lebih 5MB data.
Delphi 1.0 pada Windows for Workgroups 3.11
Prosesor
|
Memori
(MB)
|
Kecepatan
(KBytes/detik)
|
486/DX4-100
|
16
|
557,067
|
Pentium 100
|
32
|
1.079,713
|
Pentium 166
|
16
|
1.792,717
|
Delphi 4.0 pada Windows 95, kecuali Pentium Pro
pada Windows NT 4.0 Server
Prosesor
|
Memori
(MB)
|
Kecepatan
(KBytes/detik)
|
486/DX4-100
|
16
|
2.563,846
|
Pentium
100
|
16
|
4.285,714
|
Pentium
133
|
32
|
5.380,035
|
Pentium
166MMX
|
32
|
7.191,522
|
Pentium
200MMX
|
32
|
8.668,172
|
Pentium
Pro 200
|
64
|
10.651,872
|
Test
dilakukan masing-masing sebanyak tiga kali kemudian hasilnya dirata-ratakan.
Sebagai perbandingan kecepatan Blowfish adalah sekitar 2.300 KB/detik pada
Pentium 133 (pada 8 byte per blok).
C. Aplikasi Enkripsi
Sebagai implementasi
penggunaan algoritma RC-4, mari kita lihat contoh berikut ini. Algoritma RC4
bekerja pada dua tahap, menyetem susunan dan peng-kode-an. Kunci Susunan
merupakan hal yang lebih awal dan merupakan
tahap yang paling sulit dari algoritma ini. Selama menyetem susunan
suatu N-Bit ( N menjadi panjangnya kunci), kunci encryption digunakan untuk
menghasilkan suatu encrypting variabel yang menggunakan dua arrays, state dan
kunci, dan N-Number mencampur operasi. operasi pencampuran terdiri dari menukar
bytes, modulo operasi, dan rumusan lain. Suatu modulo operasi adalah proses
sisa dari suatu hasil divisi. Sebagai contoh, 11/4 adalah 2 sisa 3; oleh karena
itu sebelas mod empat akan sepadan dengan tiga.
Suatu saat encrypting
variabel diproduksi dari susunan kunci, masuk tahap peng-kode-an, di mana XORed
Dengan pesan plaintext untuk menciptakan dan pesan encrypted. XOR adalah
operasi yang logis membandingkan dua bit biner. Jika bit berbeda, hasilnya 1.
Jika bit sama, hasilnya 0. suatu saat penerima mendapatkan pesan yang
encrypted, ia decrypts dengan XORing pesan yang encrypted sehinnga sama dengan
encrypting variabel.
Untuk menunjukkan
algoritma RC4 tersebut kita akan menggunakan 4-bit kunci untuk
menyederhanakannya.
Ciptakan 4 byte state
array, Si, terdiri dari angka-angka 0 s/d 3
Ciptakan 4 byte kunci array,
Ki, terdiri dari kunci untuk mengulangi setiap kali diperlukan dalam mengisi
keseluruhan array. ( Kita pilih 1 dan 7)
Berikutnya mencampur
operasi dimana kita akan menggunakan variabel
i dan f ke index array Si dan Ki. pertama kita beri inisial (initialize)
keduanya i dan f untuk 0. Operasi Pencampuran adalah pengulangan rumusan ( f +
Si+ Ki) Mod 4 yang diikuti dengan
penukaran Si dengan Sf.
Hasilkan
pengacakan suatu byte untuk encryption. Reinitialize i dan f untuk 0 dan
kemudian yang di-set i sepadan dengan ( I + 1) mod 4 dan yang di-set f sepadan
dengan ( f + Si) Mod 4. Kemudian menukar Si Dan Sf.
yang di-set T sepadan dengan ( Si+ Sf) Mod 4 byte yang
acak untuk encryption sama dengan St
Dua
( 00000010 biner), kita encrypting variabel adalah XORed dengan plaintext untuk
menghasilkan ciphertext. Pada contoh ini kita akan menggunakan pesan plaintext
" HI "
Setelah penerima mendapatkan pesan
itu, penerima harus XOR pesan yang encrypted dengan kunci decrypt-nya.
Dapat dengan jelas kita perhatikan langkah demi langkah
untuk mengenkripsi data yang akan
dikirimkan dan hasil yang diterima oleh
penerima.
Untuk implementasi yang lain, sebuah aplikasi sederhana
untuk pengenkripan file. Aplikasi ini kita sebut saja PC-Crypt versi 1.0.
Aplikasi ini dapat dicompile dengan semua versi Delphi. Aplikasi ini sengaja
dibuat sesederhana mungkin, sehingga sangat mudah untuk digunakan. Pada aplikasi
ini kita dapat memilih untuk menggunakan inisialisasi kunci standar (Standard
Method) atau inisialisasi kunci yang sudah diperkuat (SK Method). Selain itu
pada input kunci kita dapat memasukkan karakter karakter ASCII tertentu (0-255)
dengan menggunakan karakter "\" (backslash), misalnya :
"PassWord\25saya\23\112\245". Bila kita memasukkan angka lebih dari
255 maka akan di-mask dengan $FF sehingga hasilnya akan selalu dalam range
0-255. Sedangkan bila akan memasukkan karakater "\" dapat dilakukan
dengan menginput "\\". Dengan cara ini dan dengan mencampur pemasukan
password dengan huruf besar kecil, maka kerahasiaan password kita akan lebih
terjaga. Hal lainnya adalah option untuk menghapus file sumber kita secara
aman, terdapat tiga pilihan yaitu : Delete only, Simple Method, DoD+ Method.
Pada Delete only file sumber akan dihapus begitu saja setelah operasi enkrip
selesai. Untuk simple method data sumber (plaintext) akan ditimpa (di-rewrite)
dengan bilangan random sebanyak satu kali (1 pass) kemudian dihapus. Sedangkan
untuk DoD+ Method plaintext ditimpa dengan pola bit 11, kemudian pola bit 00,
lalu dengan pola bit 1 dan 0 lalu ditimpa dengan bilangan random baru dihapus.
Bila option ini dipilih pada saat pendekripan maka data ciphertext yang akan
dihapus.
D. Keamanan Enkripsi
Bagaimana
tingkat keamanan dengan kunci 160 bit ini? Bila kita anggap tidak ada kelemahan
lain pada RC4 dan SHA maka untuk memecahkannya yang paling mungkin adalah
dengan serangan "brute force", maka keamanan data tergantung
sepenuhnya pada panjang kunci. Dengan 160 bits terdapat 2160 kunci
yang mungkin. Bila kita anggap rata-rata diperlukan setengahnya untuk mendapat
kunci yang benar (kurang lebih 1048 ). Lalu kita buat beberapa
asumsi tentang peralatan yang digunakan untuk memecahkan kunci tersebut :
- Terdapat 1 milyar komputer yang digunakan.
- Setiap komputer digunakan sepenuhnya untuk memecahkan kunci tersebut.
- Setiap komputer dapat mencoba 1 milyar kunci per detik.
Dengan peralatan demikian
maka dibutuhkan 1013 tahun untuk mendapatkan kunci tersebut. Ini
sama dengan 1000 kali usia alam semesta! (sumber : Cryptext homepage).
E. Pengembangan Program
Pengembangkan
aplikasi ini seperti Cryptext misalnya, yang merupakan extension dari Windows
95/NT shell, yang juga menggunakan RC4 dan SHA. Untuk meningkatkan keamanan
data dapat ditambahkan proses kompresi sebelum pengenkripan, karena
cryptanalisys mengandalkan pada redundansi pada plainteks, mengkompresi sebelum
enkripsi mengurangi redundansi ini. Pengembangan lainnya adalah dalam penghapusan
data sumber, cara yang lebih aman adalah dengan menulis langsung ke hardisk
tanpa melalui disk cache, karena ada kemungkinan data belum dituliskan semua
ke-harddisk ketika dihapus (karena masih ada didalam cache). Untuk Win32 kita
dapat melakukan ini dengan API CreateFile dengan flags FILE_FLAG_WRITE_THROUGH
atau FILE_FLAG_NO_BUFFERING. Cara
penghapusan lain yang lebih aman ialah dengan metoda yang dikembangkan oleh
Peter Gutmann seperti pada SFS-nya (maka kita sebut saja metoda SFS). Dengan
metoda SFS ini data di-rewrite sebanyak 35 kali dengam pola-pola bit tertentu,
dengan cara ini diharapkan permukaan magnetis dari hardisk sama dengan diekpos
dengan medan magnit. Tetapi dengan cara inipun menurutnya masih ada kemungkinan
data masih dapat di-recover dengan peralatan hardware yang canggih (terutama
untuk hardisk-hardisk lama dengan densitas yang rendah). Metoda penghapusan SFS
ini mungkin dapat pembaca bahas dan kembangkan lebih lanjut.
Sign up here with your email
ConversionConversion EmoticonEmoticon