BAB 2
LANDASAN TEORI
2.1 Algoritma RC4 RC4 merupakan salah satu jenis stream cipher, yaitu memproses unit atau input data pada satu saat. Dengan cara ini enkripsi maupun dekripsi dapat dilaksanakan pada panjang variabel. Algoritma ini tidak harus menunggu sejumlah input data tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkripnya. Metode enkripsi RC4 sangat cepat kurang lebih 10 kali lebih cepat dari Data Encyption Standard (DES) (Mollin, 2005). Sistem sandi RC4 dikembangkan oleh Ronald Rivest untuk RSA Data Security (sekarang RSA Security) pada 1984 yang merupakan sistem sistem stream yang sangat banyak digunakan (Mollin, 2005). RC4 menggunakan panjang variabel kunci dari 1 s.d 256 byte untuk menginisialisasi state tabel. State table digunakan untuk pengurutan menghasilkan byte pseudo-random yang kemudian menjadi stream pseudo-random. Setelah di-XOR dengan plaintext sehingga didapatkan ciphertext. Tiap elemen pada state table ditukar sedikitnya sekali tukaran. Kunci RC4 sering dibatasi sampai 40 bit, tetapi ada kemungkinan untuk mengunakan kunci 128 bit. RC4 memiliki kemampuan penggunaan kunci antara 1 sampai 2048 bit. Ukuran dari sistem sandi RC4 sangat mempengaruhi keamanan sistem sandi tersebut. RC4 telah dibuktikan tidak aman dengan ukuran kunci sandi yang kecil, yaitu di bawah 5 byte. Penggunaan sandi RC4 memiliki keamanan yang kuat, yaitu: 1. Ukuran kunci sama atau lebih besar daripada 256 bit (16 byte) 2. Setiap sesi yang membangkitkan kunci yang baru ( dengan pembangkitan kunci yang baru dapat menghindari penyerang untuk menganalisis sandi diferensial pada sandi tersebut) (Sadikin, 2012).
Universitas Sumatera Utara
Dalam beberapa aplikasi, RC4 digunakan untuk enkripsi data seperti RSA SecurPC yang merupakan salah satu produk RSA Securty, Inc. Algoritma RC4 juga digunakan untuk keamanan komunikasi dalam pengiriman data melalui email dan keamanan website dengan
menggunakan protokol SSL (Secure Sockets Layer).
Misalnya kriptografi yang menggunakan algoritma RC4 ini
adalah HotCrypt,
WodCrypt serta SSLite dan CryptoLite dari IBM. Algoritma RC4 dirancang supaya dapat diimp lementasikan pada software secara efisien. Ini yang membuat RC4 sangat populer untuk dipakai pada aplikasi internet, antara lain RC4 digunakan dalam standard TLS (transport layer security) dan WEP (wireless equivalent privacy) (Sadikin, 2012). Cara membuat keystream dalam RC4 adalah dengan menggunakan state automaton yang terdiri dari dua cara, yaitu : 1. Key scheduling di mana state automaton diberi nilai awal berdasarkan kunci enkripsi. 2. Pseudo-random generation dimana state automaton beroperasi dan outputnya menghasilkan keystream. Variabel suatu enkripsi dihasilkan dari setup kunci, dimana kunci akan di XOR-kan dengan plaintext untuk menghasilkan teks yang sudah dienkripsi. XOR merupakan operasi logika yang membandingkan dua bit biner. Jika nilai beda, maka akan dihasilkan nilai 1, sedangkan jika kedua bit tersebut sama maka nilainya adalah 0. Kemudian penerima pesan akan mendekripsikan dengan meng-XOR-kan kembali dengan memakai kunci yang sama supaya menghasilkan plaintext yang sama. Kunci
Pseudo random sequence
Plaintext
⊕
Ciphertext bit-stream
Plaintext
111111100
Pseudo random
100110101
Ciphertext stream
011001011
Gambar 2.1. Blok Diagram Algoritma RC4 secara umum
Universitas Sumatera Utara
Gambar 2.2. Proses pembangkitan acak untuk kunci RC4 (Munir, 2006)
Gambar 2.2 merupakan proses membangkitkan kunci secara acak, di mana aliran kunci K dipilih dengan mengambil nilai S[i] dan S[j] dan menjumlahkan dengan modulo 256. Hasil dari penjumlahan tersebut adalah index t, sehingga S[t] akan menjadi kunci aliran K yang kemudian dipakai untuk enkripsi plaintext, karena karakter kunci dicopy secara berulang-ulang maka ada kemungkinan nilai- nilai di dalam larik S ada yang sama. Sebenarnya RC4 mudah diserang dengan knownplaintext attack, apabila kriptanalis mengetahui plaintext dan ciphertext yang berkoresponden (Munir, 2006).
2.1.1 Cara Kerja RC4 RC4 menggunakan dua buah kotak subtitusi (S-box) array 256 byte yang berisi permutasi dari bilangan 0 sampe 255 dan S-Box kedua yang berisi permutasi fungsi dari kunci dengan panjang yang variabel (Sadikin, 2012). Cara kerja dari algoritma RC4 ini adalah dengan menginisialisasi S-box pertama, S[0], S[1], ...., S[255], dengan bilangan 0 sampai dengan 255. Pertama-tama isi secara berurutan S[0] = 0, S[1] = 1, ......., S[255] = 255. Kemudian inisialisasi array lain (S-Box lain), misalnya array K dengan panjang 256. Isi array K dengan kunci yang diulangi sampai seluruh array K[0], K[1], ..., K[255] sampai terisi semuanya. Proses dari inisialisasi S-Box (Array S) (Giradkar & Bhattacharya, 2015). For r = 0 to 255 S [r] = r
Universitas Sumatera Utara
Proses inisialisasi S-box (Array K) Array Kunci for i = 0 to 255 K [i] = kunci [i mod length] Kemudian lakukan langkah pengacakan S-Box dengan cara sebagai berikut: j=0 for i = 0 to 255 j = (j + S[i] + K[i]) mod 26 isi S [i] dan isi S [j[ di swap Dengan demikian berakhirlah proses persiapan
kunci RC4.
Untuk
membangkitkan kunci enkripsi, dilakukan proses berikut ini: i=j=0 i = (i + 1) mod 256 j = (j + S [i]) mod 26 Isi S [i] dan S [j] di swap k = S [ S [i] + S [j] ] mod 26 k kecil di atas merupakan kunci yang langsung beroperasi terhadap plaintext, sedangkan K besar adalah kunci utama atau kunci induk. Bila terdapat plaintext P, maka operasi enkripsinya adalah: C = P ⊕ k , sedangkan untuk operasi dekripsi adalah P = k ⊕ C. Contoh: Implementasi algoritma RC4 menggunakan mode 4 byte untuk mengenkripsi plaintext EMY dengan kunci 2 8. Langkah- langkahnya adalah sebagai berikut : a. Inisialisasi array S-box dengan panjang 4 byte sehingga array S-box array S berbentuk S[0]=0, S[1]=1, S[2]=2, S[3]=3. Tabel 2.1 Inisialisasi Array S-box Index
0
1
2
3
S
0
1
2
3
b. Inisialisasi array kunci (S-box lain). Pada contoh ini digunakan algoritma RC4 dengan mode 4 byte, kunci K diulang sampai panjangnya 4 byte
Universitas Sumatera Utara
sehingga kunci k = [2 8 2 8], S-box kunci K berbentuk K[0]=2, K[1]=8, K[2]=2, dan K[3]=8. Tabel 2.2 Kunci yang digunakan Index K
0 2
1 8
2 2
3 8
c. Kemudian lakukan permutasi nilai- nilai di dalam array S dengan cara menukarkan isi array S[i] dengan S[j]. Karena pada contoh di atas digunakan algoritma RC4 dengan mode 4 byte. Berikut prosesnya: j=0 for i = 0 to 3 j = (j+S[i] + K[i]) mod 4 isi S[i] dan isi S[j] ditukar dengan menggunakan algoritma tersebut. Untuk nilai i = 0 sampai i = 3 didapatkan nilai array S sebagai berikut: 1. Iterasi pertama, untuk nilai i = 0 j = (j + S[i] + K[i]) mod 4 j = (j + S[0] K[0]) mod 4 j = (0 + 0 + 2) mod 4 j=2 Kemudian lakukan pertukaran antara isi array S[0] dengan S[2], sehingga hasilnya array S sebagai berikut: Tabel 2.3 Swap antara S[0] dengan S[2] Index S
0 2
1 1
2 0
3 3
2. Iterasi kedua, untuk nilai i = 1 dan j = 2 (nilai j = 2 diperoleh dari hasil iterasi pertama) j = (j + S[i] + K[i]) mod 4 j = (j + S[1] K[1]) mod 4 j = (2 + 1 + 8) mod 4 j=3
Universitas Sumatera Utara
Kemudian lakukan pertukaran antara isi array S[1] dengan S[3], sehingga hasilnya array S sebagai berikut: Tabel 2.4 Swap antara S[1] dengan S[3] Index
0
1
2
3
S
2
3
0
1
3. Iterasi ketiga, untuk nilai i = 2 dan j = 3 (nilai j = 3 diperoleh dari hasil iterasi kedua. j = (j + S[i] + K[i]) mod 4 j = (j + S[2] K[2]) mod 4 j = (3 + 0 + 2) mod 4 j=1 Kemudian lakukan pertukaran antara isi array S[2] dengan S[1], sehingga hasilnya array S sebagai berikut: Tabel 2.5 Swap antara S[2] dengan S[1] Index S
0 2
1 0
2 3
3 1
4. Iterasi keempat, untuk nilai i = 3 dan j = 1 (nilai j = 1 diperoleh dari hasil iterasi ketiga. j = (j + S[i] + K[i]) mod 4 j = (j + S[3] K[3]) mod 4 j = (1 + 1 + 8) mod 4 j=2 Kemudian lakukan pertukaran antara isi array S[3] dengan S[2], sehingga hasilnya array S sebagai berikut: Tabel 2.6 Swap antara S[3] dengan S[2] Index S
0 2
1 0
2 1
3 3
Universitas Sumatera Utara
5. Hasil dari array S-box akan digunakan untuk langkah selanjutnya adalah array S hasil iterasi yang terakhir atau iterasi keempat pada implementasi algoritma RC4 dengan mode 4 byte. d. Karena plaintext mempunyai panjang 4 byte, untuk mendapatkan ciphertext terlebih dahulu bangkitkan keystream sebanyak 3 byte. Proses untuk membangkitkan key enkripsi pada mode 4 byte adalah sebagai berikut: i=j=0 i = (i + 1) mod 4 j = (j + S[i]) mod 4 isi S[i] dan S[j] ditukar t = (S[i] + S[j]) mod 4 K = S[t] Dengan
menggunakan
algoritma
di
atas,
dapat
digunakan
untuk
membangkitkan kunci proses enkripsi dengan cara berikut: 1. Iterasi pertama, untuk nilai i = j = 0, maka i = (i + 1) mod 4 i = (0 + 1) mod 4 = 1 j = (j + S[i]) mod 4 j = (0 + S[1]) mod 4 j = (0 + 0) mod 4 = 0 Lakukan swap terhadap S[1] dan S[0], sehingga array S menjadi: Tabel 2.7 Swap antara S[1] dengan S[0] Index S
0 0
1 2
2 1
3 3
t = (S[1] + S[0]) mod 4 t = (2 + 0) mod 4 = 2 K = S[t] = S[2] = 1 Jadi, kunci pertama untuk enkripsi adalah 1. 2. Iterasi kedua, untuk nilai i = 1 dan j = 0 (nilai i dan j didapat dari hasil iterasi pertama, maka: i = (i + 1) mod 4 i = (1 + 1) mod 4 = 2
Universitas Sumatera Utara
j = (j + S[i]) mod 4 j = (0 + S[2]) mod 4 j = (0 + 1) mod 4 = 1 Lakukan swap terhadap S[2] dan S[1], sehingga array S menjadi: Tabel 2.8 Swap antara S[2] dengan S[1] Index S
0 0
1 1
2 2
3 3
t = (S[2] + S[1]) mod 4 t = (2 + 1) mod 4 = 3 K = S[t] = S[3] = 3 Jadi, kunci kedua untuk enkripsi adalah 3. 3. Iterasi ketiga, untuk nilai i = 2 dan j = 3 (nilai i dan j didapat dari hasil iterasi kedua, maka: i = (i + 1) mod 4 i = (2 + 1) mod 4 = 3 j = (j + S[i]) mod 4 j = (0 + S[3]) mod 4 j = (1 + 3) mod 4 = 0 Lakukan swap terhadap S[3] dan S[0], sehingga array S menjadi: Tabel 2.9 Swap antara S[0] dengan S[2] Index S
0 3
1 1
2 2
3 0
t = (S[3] + S[0]) mod 4 t = (0 + 3) mod 4 = 3 K = S[t] = S[3] = 0 Jadi, kunci pertama untuk enkripsi adalah 0. e. Kemudian lakukan enkripsi, dengan plaintext di- XOR kan dengan kunci. Untuk plaintext E M Y dan Kunci 1 3 0 dari hasil pembangkitan kunci, ciphertextnya adalah:
Universitas Sumatera Utara
Tabel 2.10 Proses Enkripsi
Plaintext Kunci (k) P ⊕K Ciphertext
E 01000101 00110001 01110100 T
Kode Biner M Y 01001101 01011001 00110011 00110000 01111110 01101001 ~ I
Untuk mengembalikan plaintextnya, sebagai berikut: Tabel 2.11 Proses Dekripsi
Ciphertext Kunci (k) P ⊕K Plaintext
Kode Biner T ~ I 01110100 01111110 01101001 00110001 00110011 00110000 01000101 01001101 01011001 E M Y
2.2 Algoritma Kriptografi Berdasarkan kunci yang dipakai, algoritma kriptografi dibagi menjadi tiga bagian, yaitu sebagai berikut: a. Algoritma Simetris Algoritma ini merupakan algoritma klasik karena memakai kunci yang sama untuk enkripsi dan dekripsi. Keamanan pesan yang menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain , maka akan dapat melakukan enkripsi maupun dekripsi terhadap pesan yang dikirim. Algoritma yang menggunakan kunci simetris diantaranya adalah: Data Encryption Standard (DES), RC2, RC4, RC5, RC6, International Data Encryption Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), A5, dan lain sebagainya. Berikut adalah skema dari kriptografi simetris:
Gambar 2.3. Skema kriptografi Simetris
Universitas Sumatera Utara
Kelebihan dari algoritma simetris adalah kecepatan operasinya lebih tinggi dibandingkan dengan algoritma asimetris dan karena kecepatannya tinggi, maka dapat digunakan pada sistem real time. Sedangkan kelemahan dari algoritma ini adalah setiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan key yang berbeda pula, sehingga terjadi kesulitan dalam manajemen key dan permasalahan di dalam pengiriman kunci biasanya disebut dengan “key distribution problem ” (Chehal & Singh, 2012).
b. Algoritma Asimetris Algoritma ini merupakan algoritma kunci publik, karena kata kunci yang digunakan untuk mengenkripsi dan mengdekripsi pesan menggunakan kunci yang berbeda. Pada algoritma asimetris, kunci terbagi kepada dua bagian, yaitu: kunci umum yang boleh diketahui oleh semua orang, sedangkan kunci private hanya boleh diketahui oleh satu orang saja. Algoritma yang menggunakan kunci publik adalah: Digital Signature Algorithm (DSA), RSA, Diffie-Helman (DH), kriptografi Quantum, dan lain sebagainya.
Gambar 2.4. Skema kriptografi Simetris Kelebihan dari algoritma asimetris adalah pada masalah keamanan pada distribusi kunci dapat lebih baik dan pada manajemen kunci yang lebih baik karena jumlah kuncinya yang lebih sedikit. Sedangkan kelemahan dari algoritma asimetris adalah kecepatannya lebih rendah dibandingkan dengan algoritma simetris dan tingkat keamanannya sama, key yang digunakan lebih panjang jika dibandingkan dengan algoritma simetris. (Mulya, 2013) c. Fungsi Hash Merupakan fungsi yang menerima masukan string yang panjangnya sembarang
dan
mengkonversikannya
menjadi string
yang
keluaran
panjangnya tetap (fixed) (umumnya berukuran jauh lebih kecil daripada ukuran string semula). Fungsi hash dapat menerima masukan string apa saja.
Universitas Sumatera Utara
Jika string tersebut menyatakan pesan, maka sembarang pesan M berukuran bebas dapat dikompresi oleh fungsi hash H melalui persamaan : h = H (M)
(2.1)
2.3 Pembangkit Bilangan Acak Bilangan acak adalah bilangan yang sulit diprediksi, ada beberapa bagian dari bilangan acak yang dapat diprediksi dan saling berhubungan. Kebanyakan pembangkit bilangan acak (Random Number Generator (RNG)) mengulang string yang sama setelah melakukan n putaran. Sedangkan ada juga yang bilangan acak menghasilkan nilai acak dengan fokus pada suatu area tertentu. Random Number Generator merupakan suatu peralatan komputasional yang dirancang untuk menghasilkan suatu deretan nilai yang tidak dapat ditebak polanya dengan mudah, sehingga deretan nilai tersebut dapat dianggap sebagai suatu keadaan acak. RNG sulit diterapkan dalam praktek. Bilangan acak yang dihasilkan oleh komputer sekalipun tidak benar-benar acak dan kebanyakan dari bilangan acak tersebut jika diterapkan dalam kriptografi juga tidak benar-benar bilangan acak, melainkan bilangan acak semu. Itu berarti bilangan acak yang dihasilkan dapat ditebak deretan nilainya (Schneier, 1996). Dalam kriptografi, bilangan acak yang dihasilkan dengan rumus-rumus matematika itu disebut bilangan acak semu, karena bilangan tersebut yang dibangkitkan dapat berulang kembali secara berkala. Pembangkit deret bilangan acak yang seperti itu disebut PRNG (pseudo-random number generator) (Schneir, 1996). Pseudo-random number generator (PRNG) adalah suatu algoritma yang menghasilkan suatu urutan nilai acak dimana emlemen-elemenya bergantung pada setiap nilai yang dihasilkan (Stinson, 1995). Output dari PNRG tidak benar-benar acak, tetapi hanya mirip dengan nilai acak. Kebanyakan algoritma dari pseudo random number generator ditujukan untuk menghasilkan suatu contoh yang secara seragam terdistribusi. Pseudo-random number generatorini sering digunakan dalam kriptografi pada proses pembentukan kunci dari sebuah metode kriptografi. Kerumitan dari PRNG ini adalah waktu menentukan tingkat keamanan dari metode kriptografi. Semakin rumit PRNG yang digunakan, maka akan semakin tinggi tingkat keamanan dari metode kriptografi tersebut (Junod, 1999).
Universitas Sumatera Utara
Pembangkit bilangan acak yang dapat menghasilkan bilangan yang tidak dapat diprediksi oleh orang-orang yang tidak bertanggung jawab untuk kriptografi adalah cryptographically secure pseudorandom generator (CSPRNG). Syarat untuk CSPRNG adalah : 1. Secara statistik mempunyai sifat-sifat yang baik ( lulus dalam uji keacakan statistik). 2. Tahan terhadap serangan-serangan yang ada. Serangan tersebut bertujuan untuk memprediksi bilangan acak yang dihasilkan. Kebanyakan PRNG tidak cocok untuk CSPRNG, karena tid ak memenuhi syarat yang ada. CSPRNG dirancang untuk menahan terhadap serangan-serangan yang ada dari kriptanalis.
2.4 Blum Blum Shub (BBS) Blum Blum Shub (BBS) merupakan suatu pseudo random number generator yang diajukan pada tahun 1986 oleh Lenore Blum, Manuel Blum, dan Michael Shub. BBS mempunyai persamaan: Xn+1 = Xn 2 mod m
(2.2)
m diatas merupakan hasil perkalian dua buah bilangan prima besar p dan q, serta hasilnya dalam LSB dari Xn dimana hal yang sama sebagai parity dari Xn . Dua buah bilangan prima p dan q harus terhadap 3 mod 4 dan GCD harus kecil. Generator tersebut sering digunakan untuk aplikasi kriptografi, karena generator ini tidak begitu cepat. Untuk membangkitkan bilangan acak dengan BBS, algoritmanya adalah sebagai berikut: a. Pilih dua buah bilangan prima rahasia, p dan q, yang masing- masing sama dengan 3 modulo 4. b. Kalikan keduanya menjadi n = p x q. Bilangan m ini disebut sebagai bilangan bulat blum. c. Pilih bilangan bulat acak s sebagai umpan, bilangan yang dipilih harus memenuhi kriteria: i. 2 ≤ s < n
Universitas Sumatera Utara
ii. s dan n relatif prima d. Hitung nilai x0 = s2 mod n. e. Hasilkan bilangan bit acak dengan cara: i.
Hitung xi = x(i-1)2 mod n.
ii. Hasilkan zi = bit- bit yang diambil dari xi. Bit yang diambil bisa merupakan LSB atau hanya satu bit atau sebanyak j bit (j tidak melebihi log2 (log2 n). Bilangan bit acak dapat digunakan langsung atau diformat dengan aturan tertentu, sedemikian hingga menjadi bilangan bulat (Sadikin, 2012).
2.5 Riset Terkait Beberapa penelitian telah dilakukan oleh peneliti, yang berkaitan dengan penulisan penelitian ini. Adapun penelitian tersebut dapat dilihat di bawah ini: Penelitian Xie & Pan (2010), mengungkapkan bahwa kelemahan dari Algoritma RC4 terdapat pada KSA (Key Scheduling Algorithm) dan kelemahan lainnya pada PGRA (Pseudo random generator algorithm), pada PGRA yang penting keadaan awal dari S-Box, dimana peneliti menggunakan untuk memperoleh Key Stream, salah satu kelemahan dari PGRA adalah hubungan antara S-Box pada waktu yang berbeda. pada paper peneliti fokus pada kelemahan PGRA dengan meningkatkan RC4 untuk melindungi PGRA dari berbagai macam serangan. Untuk meningkatkan RC4 dipilih dua buah kunci rahasia K1 dan K2 sebagai seed dan dua S-Box S1 dan S2 yang mana semua berisi elemen N dari 0 sampai N-1. Pada algoritma baru peneliti menggunakan tiga titik yaitu i, j1, dan j2. Hasil yang diperoleh dari paper ini algoritma baru tersebut dapat meningkatkan keamanan RC4 dan improved RC4 lebih cepat dari algoritma RC4. Penelitian Weerangsinghe (2013), mengungkapkan bahwa peningkatan RC4 dilakukan dalam sebuah aplikasi, tujuannya untuk mendapatkan output dan keamananan yang baik. Cipher yang diusulkan diambil dari penelitian Xie & Pan. Penelitian Jindal & Sing (2014), mengungkapkan bahwa melakukan analisi terhadap kelemahan dari KSA dan PGRA kemudian diusulkan dengan sebuah algoritma modifikasi RC4 (MRC4). Modifikasi tersebut ditambahkan pada struktur algoritma RC4, yang mana untuk meningkatkan keamanan sementara tetapi tetap mempertahankan struktur dan kecepatan dari algoritma RC4.
Universitas Sumatera Utara
Penelitian Sanjaya & Telnoni (2015), mengungkapkan bahwa menggunakan Algoritma AES (Advanced Encryption Standard) untuk enkripsi, pada saat proses pembangkitan kunci digunakan metode chaotic function agar dapat menghasilkan penurunan waktu proses enkripsi dan dekripsi yang baik, dan untuk membangkitkan kunci acak digunakan metode random BBS (Blum Blum Shub).
2.6 Perbedaan Dengan Riset Lain Dalam penelitian ini, dilakukan pembangkitan kunci acak dengan metode (BBS) Blum Blum Shub untuk pengacakan tabel S-Box. Hasil dari pembangkitan kunci tersebut susah diprediksi dan ditebak oleh seseorang (kriptanalis). 2.7 Kontribusi Riset Penelitian ini ingin memberikan pemahamanan dalam hal menentukan kunci yang aman bagi pengirim dan penerima, dengan menggunakan Blum Blum Shub (BBS) diharapkan dapat menghasilkan kunci yang baik dalam mengamankan data dengan baik.
Universitas Sumatera Utara