122m 04 draftx cryptography
TRANSCRIPT
Pengamanan Data Sistem Billing Warnet dengan
Menggunakan RC4 Stream Cipher
Tugas Akhir
Proteksi dan Teknik Keamanan Sistem Informasi
Oleh:
1. Rahmat Sobari 720400033Y
2. Yoyok Andoyo 720400042X
3. Noni Juliasari 7204000314
4. Galuh Dian Maulana 7204000241
Magister Teknologi Informasi
Fakultas Ilmu Komputer
Universitas Indonesia
Jakarta
2005
ii
Daftar Isi
i
Daftar Gambar
ii
Daftar Tabel
1
Bab I Pendahuluan
I. 1. Latar Belakang Perkembangan sistem manajemen dalam berbagai organisasi selama dasawarsa
terakhir menunjukkan bahwa pemanfaatan teknologi informasi dapat menjadi
penunjang pembuatan keputusan yang baik dan tepat bagi organisasi modern, baik
organisasi pemerintah maupun organisasi swasta. Pemakaian teknologi informasi
sudah menjadi suatu kebutuhan. Dengan komputer banyak pekerjaan dalam
berbagai organisasi dapat diselesaikan dengan lebih cepat, akurat dan efisien.
Namun selain berbagai macam keuntungan yang ditawarkan dengan pemakaian
teknologi informasi tersebut, terdapat bahaya yang ditimbulkan dengan adanya
kemungkinan kebocoran data atau penyalahgunaan data yang dapat berakibat fatal
bagi suatu organisasi untuk mengatasi masalah ini dibutuhkan suatu sistem
pengamanan terhadap jaringan komunikasi, khususnya komunikasi antar komputer
yang dimiliki oleh suatu organisasi.
Dalam komunikasi data, terhadap suatu metode pengamanan data yang dikenal
dengan kriptografi (Cryptography). Kriptografi merupakan suatu metode
pengamanan data yang dapat digunakan untuk menjaga kerahasiaan data, keaslian
atau keutuhan data, serta keaslian pengirim. Metode ini bertujuan agar informasi
penting yang bersifat terbatas atau rahasia yang dikirim melalui sarana
telekomunikasi umum tidak dapat diketahui atau dimanfaatkan oleh pihak yang tidak
berhak.
I. 2. Masalah Dalam kriptografi terdapat berbagai macam sistem sandi (Cryptosystem) yang
memiliki algoritma, tujuan penggunaan dan tingkat kerahasiaan berbeda. Dalam
prakteknya, menentukan algoritma kriptografi yang digunakan menjadi suatu
masalah tersendiri, di sisi lain user menginginkan kemudahan baik itu dari sisi
kerahasiaan, ketepatan, kecepatan maupun biaya yang murah.
2
Kenyataan di lapangan, proses penanganan berita dengan menggunakan metode
kriptografi seringkali membutuhkan waktu yang relatif lebih lama dibandingkan tanpa
proses kriptografi. Untuk itu perlu diciptakan suatu sistem sandi yang relatif cepat
dalam proses penanganan berita tanpa mengabaikan kaidah kerahasiaan yang ingin
dicapai dengan biaya yang relatif murah.
Pengamanan berita tidak hanya sebatas mengupayakan agar berita tersebut tidak
dibaca oleh pihak yang tidak berkepentingan, tetapi juga bagaimana agar data
tersebut tidak dapat dimanipulasi atau dimodifikasi, sehingga dibutuhkan suatu cara
agar diperoleh otentikasi yang meyakinkan terhadap data yang dikirimkan/disimpan.
Isu keamanan data tidak hanya menjadi masalah bagi perusahaan besar.
Perusahaan yang berskala kecil dan menengahpun mempunyai isu yang sama
hanya kadar dan dampak yang ditimbulkannya yang berbeda. Karenanya kriptografi
juga dapat diterapkan untuk membantu usaha pengamanan data-data di
perusahaan. Pemilihan teknik kriptografi yang sesuai dengan kebutuhan menjadi hal
penting yang harus dipertimbangkan. Karenanya dalam makalah ini akan diuraikan
mengenai salah satu teknik kriptografi dan kemungkinan penerapannya dalam
sistem pembayaran suatu UKM.
I. 3. Tujuan Penulisan Penyusunan makalah ini dilaksanakan sebagai salah satu tugas akhir semester
dalam mata kuliah Proteksi dan Teknik Keamanan Sistem Informasi. Sehubungan
dengan hal tersebut, tujuan yang dapat dirangkum dari upaya ini, antara lain:
1. Mempelajari salah satu teknik kriptografi dan kemungkinan penerapannya dalam
salah satu bentuk UKM.
2. Membangun kemampuan untuk menjalin kerjasama kelompok dalam bidang
teknologi informasi.
I. 4. Batasan Pengamanan data dengan teknik enkripsi ini dikenal begitu banyak ragam
algoritmanya, maka dalam penulisan ini akan dibatasi hanya pada penjelasan
singkat algoritma dari RC4 Stream Cipher dan pemanfaatannya sebagai dasar dari
sistem sandi serta analisa kriptografinya. Bentuk UKM yang dipilih adalah warnet.
3
Bab II Teori Kriptografi
II. 1. Kriptografi, Enkripsi, dan Dekripsi Kriptografi berasal dari dua suku kata yaitu kripto dan grafi. Kripto artinya
menyembunyikan, sedangkan grafi artinya ilmu. Kriptografi (Cryptography) adalah
suatu ilmu yang mempelajari sistem sandi untuk menjamin kerahasiaan dan
keamanan data, dilakukan oleh seorang kriptographer.
Enkripsi adalah sebuah proses yang melakukan perubahan sebuah kode dari yang
bisa dimengerti (plaintext) menjadi sebuah kode yang tidak bisa dimengerti
(ciphertext). Sedangkan proses kebalikannya untuk mengubah ciphertext menjadi
plaintext disebut dekripsi. Sebuah sistem pengkodean menggunakan suatu tabel
atau kamus yang telah didefinisikan untuk mengganti kata atau informasi atau yang
merupakan bagian dari informasi yang dikirim. Secara umum operasi enkripsi dan
dekripsi secara matematis dapat digambarkan sebagai berikut :
EK (M) = C {proses enkripsi}
DK (C) = M {proses dekripsi}
Pada proses enkripsi pesan M dengan suatu kunci K disandikan menjadi pesan C.
Pada proses dekripsi pesan C dengan kunci K disandikan menjadi pesan semula
yaitu M. Misalnya S (sender) mengirim sebuah pesan ke R (receiver) dengan media
transmisi T. Di luar, ada O yang menginginkan pesan tersebut dan mencoba untuk
mengakses secara ilegal pesan tersebut. O disebut interceptor atau intruder. Setelah
S mengirim pesan ke R melalui media T, O bisa mengakses pesan tersebut dengan
cara-cara sebagai berikut :
a. Menganggu pesan, dengan mencegah pesan sampai ke R.
b. Mencegat pesan, dengan cara engetahui isi pesan tersebut.
c. Mengubah pesan dari bentuk aslinya dengan cara apapun.
d. Memalsukan pesan yangterlihat asli, jadi seolah-olah sebuah pesan dikirim oleh
S.
Untuk melindungi pesan asli dari gangguan seperti ini dan menjamin keamanan dan
kerahasiaan data maka mulai dikenal sistem kriptografi untuk melindungi data, yaitu
4
dengan mengenkripsi pesan dan untuk bisa membaca pesan kembali seperti aslinya
pesan harus didekripsi. Kriptografi merupakan cara yang paling praktis untuk
melindungi data yang ditransmisikan melalui sarana telekomunikasi.
II. 2. Pola Penyaringan Transmisi Data Proteksi data/informasi dalam komunikai computer menjadi penting karena nilai
informasi itu sendiri dan meningkatnya penggunaan computer di berbagai sektor.
Melihat pada kenyataan semakin banyak data yang diproses dengan komputer dan
dikirim melalui perangkat komunikasi elektronik maka ancaman terhadap
pengamanan data akan semakin meningkat. Beberapa pola ancaman terhadap
komunikasi data dalam komputer dapat diterangkan sebagai berikut :
1. Interruption
Interception terjadi bila data yang dikirimkan dari A tidak sampai pada orang yang
berhak (B). Interruption merupakan pola penyerangan terhadap sifat availability
(ketersediaan data).
Gambar 2.1: Interruption
2. Interception
Serangan ini terjadi bila pihak ketiga C berhasil membaca data yang dikirimkan.
Interception merupakan pola penyerangan terhadap sifat confidentiality
(kerahasiaan data).
Gambar 2.2: Interception
A B
A B
C
5
3. Modification
Pada serangan ini pihak ketiga C berhasil merubah pesan yang dikirimkan.
Modification merupakan pola penyerangan terhadap sifat integrity (keaslian
data).
Gambar 2.3: Modification
4. Fabrication
Pada serangan ini, penyerang berhasil mengirimkan data ke tujuan dengan
memanfaatkan identitas orang lain. Fabrication merupakan pola penyerangan
terhadap sifat authenticity.
Gambar 2.4: Fabrication
Ancaman-ancaman tersebut di atas menjadi masalah terutama dengan semakin
meningkatnya komunikasi data yang bersifat rahasia seperti : pemindahan dana
secara elektronik kepada dunia perbankan / pengiriman dokumen rahasia pada
instansi pemerintah. Untuk mengantisipasi ancaman-ancaman tersebut perlu
dilakukan usaha untuk melindungi data yang dikirim melalui saluran komunikasi
salah satunya adalah dengan teknik enkripsi. Dan untuk masalah kekuatan
pengamanannya tergantung pada algoritma metode enkripsi tersebut dan juga
kunci yang digunakan di dalamnya.
A B
C
A B
C
6
II. 3. Teknik-teknis Enkripsi dan Dekripsi Enkripsi dan dekripsi diibaratkan seperti dua sisi mata uang. Suatu pesan dibuat seolah tidak bermakna dengan merubahnya menurut prosedur tertentu
(enkripsi), dan dibuat bermakna kembali dengan menggunakan prosedur yang biasanya bersifat kebalikannya (dekripsi). Dalam dunia kriptografi, pesan
yang akan dirahasiakan disebut plaintext, sedangkan bentuk pesan hasil proses
enkripsi disebut ciphertext .
kunci kunci
Gambar 2.5: Proses Enkripsi/dekripsi sederhana
Berikut ini akan dicontohkan prosedur enkripsi dari masing-masing teknik dasar
enkripsi untuk melakukan pengacakan data terhadap plaintext yang sama, yaitu "5
TEKNIK DASAR KRIPTOGRAFI". 1. Subitusi
Langkah pertama dari teknik ini adalah membuat suatu tabel substitusi. Tabel
substitusi dapat dibuat sesuka hati, dengan catatan bahwa penerima pesan
memiliki tabel yang sama untuk keperluan dekripsi. Bila tabel substitusi dibuat
secara acak, akan semakin sulit pemecahan ciphertext oleh orang yang tidak
berhak.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 , #
B F 1 K Q G A T P J 6 H Y D 2 X 5 M V 7 C 8 4 I 9 N R E U 3 L S W , # O Z 0
Gambar 2.6: Tabel Substitusi
Tabel substitusi diatas dibuat secara acak. Tanda spas i akan diganti dengan
tanda ‘#’. Dengan menggunakan tabel tersebut, dari plaintext di atas akan
dihasilkan ciphertext "L07Q6DP60KBVBM06MPX72AMBGP". Dengan
menggunakan tabel substitusi yang sama secara dengan arah yang terbalik
(reverse), plaintext dapat diperoleh kembali dari ciphertext-nya.
enkripsi dekripsi plaintext plaintext ciphertext
7
2. Blocking
Sistem enkripsi terkadang membagi plaintext menjadi blok-blok yang terdiri dari
beberapa karakter yang kemudian dienkripsikan secara independen. Plaintext
yang dienkripsikan dengan menggunakan teknik blocking adalah :
Gambar 2.7: Enkripsi dengan Blocking
Dengan menggunakan enkripsi blocking dipilih jumlah lajur dan kolom untuk
penulisan pesan. Jumlah lajur atau kolom menjadi kunci bagi kriptografi dengan
teknik ini. Plaintext d ituliskan secara vertikal ke bawah berurutan pada lajur, dan
dilanjutkan pada kolom berikutnya sampai seluruhnya tertulis. Ciphertext-nya
adalah hasil pembacaan plaintext secara horizontal berurutan sesuai dengan
blok-nya. Jadi ciphertext yang dihasilkan dengan teknik ini adalah "5K G
KRTDRAEAIFKSPINAT IRO". Plaintext dapat pula ditulis secara horizontal dan
ciphertextnya adalah hasil pembacaan secara vertikal.
3. Permutasi
Salah satu teknik enkripsi yang terpenting adalah permutasi atau sering juga
disebut transposisi. Teknik ini memindahkan atau merotasikan karakter dengan
aturan tertentu. Prinsipnya adalah berlawanan dengan teknik substitusi. Dalam
teknik substitusi, karakter berada pada posisi yang tetap tapi identitasnya yang
diacak. Pada teknik permutasi, identitas karakternya tetap, namun posisinya yang
diacak. Sebelum dilakukan permutasi, umumnya plaintext terlebih dahulu dibagi
menjadi blok-blok dengan panjang yang sama.
Untuk contoh diatas, plaintext akan dibagi menjadi blok-blok yang terdiri dari 6
karakter, dengan aturan permutasi sebagai berikut :
8
Plainte
xt
Ciphertex
Gambar 2.8: Permutasi
Dengan menggunakan aturan diatas, maka proses enkripsi dengan permutasi
dari plaintext adalah sebagai berikut :
Gambar 2.9: Proses Enkripsi dengan Permutasi
Ciphertext yang dihasilkan dengan teknik permutasi ini adalah "N ETK5 SKD
AIIRK RAATGORP FI".
4. Ekspansi
Suatu metode sederhana untuk mengacak pesan adalah dengan memelarkan
pesan itu dengan aturan tertentu. Salah satu contoh penggunaan teknik ini
adalah dengan meletakkan huruf konsonan atau bilangan ganjil yang menjadi
awal dari suatu kata di akhir kata itu dan menambahkan akhiran "an". Bila suatu
kata dimulai dengan huruf vokal atau bilangan genap, ditambahkan akhiran "i".
Proses enkripsi dengan cara ekspansi terhadap plaintext terjadi sebagai berikut :
9
5 T E K N I K D A S A R K R I P T O G R A F I
Ciphertext yang dihasilkan
5 A N E K N I K T A N A S A R D A N R I P T O G R A F I K A N
Gambar 2.10: Enkripsi dengan Ekspansi
Ciphertextnya adalah "5AN EKNIKTAN ASARDAN RIPTOGRAFIKAN". Aturan
ekspansi dapat dibuat lebih kompleks. Terkadang teknik ekspansi digabungkan
dengan teknik lainnya, karena teknik ini bila berdiri sendiri terlalu mudah untuk
dipecahkan.
5. Pemampatan (Compaction)
Mengurangi panjang pesan atau jumlah bloknya adalah cara lain untuk
menyembunyikan isi pesan. Contoh sederhana ini menggunakan cara
menghilangkan setiap karakter ke-tiga secara berurutan. Karakter-karakter yang
dihilangkan disatukan kembali dan disusulkan sebagai "lampiran" dari pesan
utama, dengan diawali oleh suatu karakter khusus, dalam contoh ini digunakan
"&". Proses yang terjadi untuk plaintext kita adalah :
5 T E K N I K D A S A R K R I P T O G R A F I
5 E K I K D A A R K R P T G R F I
T N S I O A
5 E K I K D A A R K R P T G R F I & T N S I O A
Gambar 2.11: Enkripsi dengan Pemampatan
Aturan penghilangan karakter dan karakter khusus yang berfungsi sebagai
pemisah menjadi dasar untuk proses dekripsi ciphertext menjadi plaintext
kembali.
Dengan menggunakan kelima teknik dasar kriptografi diatas, dapat diciptakan
kombinasi teknik kriptografi yang amat banyak, dengan faktor yang membatasi
semata-mata hanyalah kreativitas dan imajinasi kita. Walaupun sekilas terlihat
sederhana, kombinasi teknik dasar kriptografi dapat menghasilkan teknik kriptografi
plaintext
Ciphertext
Pesan yang dihilangkan
Pesan yang dimampatkan
plaintext
10
turunan yang cukup kompleks, dan beberapa teknik dasar kriptografi masih
digunakan dalam kriptografi modern.
II. 4. Kriptosistem Kriptosistem ( Cryptosystem atau cryptographic system ) adalah suatu fasilitas untuk
mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini,
seperangkat parameter yang menentukan transformasi pencipheran tertentu disebut
suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci
kriptografi. Secara umum, kunci–kunci yang digunakan untuk proses pengenkripsian
dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan.
Suatu cryptosystem terdiri dari sebuah algoritma, seluruh kemungkinan plaintext,
ciphertext dan kunci-kunci. Secara umum cryptosystem dapat digolongkan menjadi
dua buah , yaitu :
1. Symmetric cryptosystem
Dalam symmetric cryptosystem ini, kunci yang digunakan untuk proses enkripsi
dan dekripsi pada prinsipnya identik, tetapi satu buah kunci dapat pula diturunkan
dari kunci yang lainnya. Kunci – kunci ini harus dirahasiakan. Oleh sebab itu
sistem ini sering disebut sebagai secret key cipher system. Contoh dari sistem ini
adalah Data Encryption Standard ( DES ), Blowfish, IDEA.
Plaintext enkripsi ciphertext dekripsi plaintext
User A user B Kunci ( key )
Gambar 2.12: Symmetric cryptosystem
2. Assymmetric cryptosystem
Dalam assymmetric cryptosystem ini digunakan dua buah kunci. Satu kunci yang
disebut kunci publik (public key) dapat dipublikasikan, sedang kunci yang lain
yang disebut kunci privat (private key) harus dirahasiakan. Proses menggunakan
sistem ini dapat diterangkan secara sederhana sebagai berikut: bila A ingin
mengirimkan pesan kepada B, A dapat menyandikan pesannya dengan
menggunakan kunci publik B, dan bila B ingin membaca pesan tersebut , ia perlu
mendekripsikannya dengan kunc i privatnya. Dengan demikian kedua belah pihak
dapat menjamin asal pesan serta keaslian pesan tersebut, karena adanya
11
mekanisme ini. Contoh dari sistem ini antara lain RSA Scheme dan Merkle-
Hellman Scheme.
Plaintext enkripsi ciphertext dekripsi plaintext
User A user B private key
public key
Gambar 2.13: Assymmetric cryptosystem
II. 5. Cipher dalam Enkripsi dan Dekripsi Secara umum dalam proses enkripsi dan dekripsi dikenal dua macam cipher
berdasarkan cara kerja penyandiannya, yaitu :
1. Stream Cipher
Stream cipher adalah suatu sistem dimana proses enkripsi dan dekripsinya
dilakukan dengan cara bit per bit. Pada sistem ini aliran bit kuncinya dihasilkan
oleh suatu pembangkit bit acak. Aliran kunci ini dikenakan operasi XOR dengan
aliran bit – bit dari plaintext untuk menghasilkan aliran bit – bit ciphertext. Pada
proses dekripsi alliran bit ciphertext dikenakan operasi XOR dengan aliran bit
kunci yang identik untuk menghasilkan plaintext.
Keamanan dari sistem ini tergantung dari pembangkit kunci, jika pembangkit
kunci menghasilkan aliran bit – bit 0 maka ciphertext yang dihasilkan akan sama
dengan plaintext, sehingga seluruh operasi akan menjadi tidak berguna oleh
karena itu diperlukan sebuah pembangkit kunci yang dapat menghasilkan aliran
bit – bit kunci yang acak dan tidak berulang. Semakin acak aliran kunci yang
dihasilkan oleh pembangkit kunci, maka ciphertext akan semakin sulit
dipecahkan.
12
Gambar 2.14: Sistem stream cipher
2. Block Cipher
Sistem block cipher mengkodekan data dengan cara memebagi plaintext menjadi
per blok dengan ukuran yang sama dan tetap. Kemudian setiap bloknya
dienkripsi atau didekripsi sekaligus. Cara ini bekerja lebih cepat karena plaintext
dibagi atas beberapa blok. Biasanya proses enkripsi dan dekripsi dilakukan
dalam ukuran blok tertentu.
Transposisi merupakan contoh dari penggunaan block cipher. Pada transposisi
kolumnar dengan menggunakan matriks, pesan diterjemahkan sebagai satu blok.
Ukuran blok yang dibutuhkan tidak memiliki kesamaan dengan ukuran sebuah
karakter. Block cipher bekerja pada blok plaintext dan menghasilkan blok – blok
ciphertext.
Gambar 2.15: Sistem block cipher
Y
encryption plaintext ciphertext
Key (optional)
ISSOPMI wdhuw…
Key (optional)
XN OI TP YR CN ES ba
qc kd em mc
IH
plaintext encryption
ciphertext
13
Bab III RC4
III. 1. RC4 Stream Cipher RC4 merupakan salah satu jenis stream cipher yang didesain oleh Ron Rivest 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. Namun pada bulan September
1994 ada seseorang yang telah mengirimkan sebuah source code yang diyakini
sebagai RC4 ke mailinglist Cypherpunks dan keberadaannya pun langsung tersebar.
Karena algoritma yang dipublikasikan ini sangat identik dengan implementasi RC4
pada produk resmi.
III. 2. Algoritma RC4 Stream Cipher RC4 mempunyai sebuah S-Box, S0,S1,……,S255, yang berisi permutasi dari bilangan
0 sampai 255.Menggunakan dua buah indeks yaitu i dan j di dalam algoritmanya.
Indeks I digunakan untuk memastikan bahwa suatu elemen berubah, sedangkan
indeks j akan memastikan bahwa suatu elemen berubah secara random. Intinya,
dalam algoritma enkripsi metode ini akan membangkitkan pseudorandom byte dari
key yang akan dikenakan operasi Xor terhadap plaintext untuk menghasilkan
ciphertext. Dan untuk menghasilkan plaintext semula, maka ciphertext nya akan
dikenakan operasi Xor terhadap pseudorandom bytenya. Berikut ini akan diberikan
sebuah bagan yang menggambarkan rangkaian proses yang dijalankan untuk
mengenkripsi atau mendekripsi data.
14
Gambar 3.1: Rangkaian proses RC4 Stream Cipher
Secara garis besar algoritma dari metode RC4 Stream Cipher ini terbagi menjadi dua
bagian, yaitu : key setup dan stream generation. Berikut ini akan dijelaskan bagian-
bagian dari algoritma RC4 Stream Cipher tersebut disertai dengan penerapannya
sebagai berikut :
Plaintext : enkripsi
Ascii plaintext : 101 110 107 114 105 112 115 105
Key : mahabbah
Ascii key : 109 97 104 97 98 98 97 104
a. Key Setup
Pada bagian ini, terdapat tiga tahapan proses di dalamnya, yaitu:
1) Inisialisasi S-Box
Pada tahapan ini, S-Box akan diisi dengan nilai sesuai indeksnya untuk
mendapatkan S-Box awal. Algoritmanya adalah sebagai berikut:
a) Untuk i = 0 sampai i = 255 lakukan
b) Isikan S ke i dengan nilai i
c) Tambahkan i dengan 1, kembali ke 2.
Generate Pseudorandom byte stream
Permutasi untuk S - Box
Simpan Key dalam key
byte array
Inisialisasi S – Box
15
Dari algoritma di atas akan didapat urutan nilai S-Box sebagai berikut:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
240 240 241 242 243 245 246 247 248 249 250 251 252 253 254 255
2) Menyimpan key dalam Key Byte Array
Pada tahapan ini, kunci ( key) yang akan kita gunakan untuk mengenkripsi
atau dekripsi akan dimasukkan ke dalam array berukuran 256 byte secara
berulang sampai seluruh array terisi. Algoritmanya adalah sebagai berikut :
a) Isi j dengan 1
b) Untuk i = 0 sampai i = 255 lakukan
c) Jika j > panjang kunci maka
d) J diisi dengan nilai 1
e) Akhir jika
f) Isi K ke i dengan nilai Ascii karakter kunci ke j
g) Nilai j dinaikkan 1
h) Tambahkan i dengan 1, kembali ke 2
16
Dari algoritma tersebut akan didapat urutan array key sebagai berikut :
109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104 109 97 104 97 98 98 97 104
3) Permutasi pada S-Box
Pada tahapan ini, akan dibangkitkan sebuah nilai yang akan dijadikan aturan
untuk permutasi pada S-Box. Misalkan untuk nilai i = 2 dihasilkan nilai j =
26 , maka nilai pada S(2) akan ditukar dengan nilai pada S(26). Algoritmanya
adalah sebagai berikut :
a) Isi nilai j dengan 0
b) Untuk i = 0 sampai i = 255 lakukan
c) Isi nilai j dengan hasil operasi ( j + S( i ) + K( i )) mod 256
d) Swap S( i ) dan S( j )
e) Tambahkan i dengan 1, kembali ke 2.
Dari algoritma tersebut akan diperoleh nilai S-Box yang yang telah
mengalami proses transposisi sehingga urutannya sekarang adalah sebagai
berikut :
17
109 26 57 76 157 245 52 49 181 31 45 103 84 240 73 192 61 235 28 98 3 205 160 128 130 59 22 38 92 122 137 30
247 121 4 135 156 148 231 170 228 16 68 208 159 53 210 20 176 168 220 214 136 19 87 42 120 219 27 169 183 116 200 96 204 110 64 216 89 222 44 126 105 213 164 188 23 47 194 33 209 65 162 142 107 195 119 80 166 238 237 72 246 102 243 241 35 40 77 215 141 100 74 115 146 56 189 163 113 55 67 229
236 185 83 46 18 140 118 50 233 248 99 8 172 203 54 132 13 124 152 252 151 153 147 139 179 190 82 154 224 161 86 0 34 149 29 225 78 14 48 158 25 104 150 184 218 187 95 193 79 43 155 223 143 232 177 251 66 114 202 10 9 88 6 226
239 250 178 71 106 51 11 60 125 242 17 90 197 91 249 173 94 15 201 101 108 234 227 41 75 117 165 174 230 138 207 62 70 244 129 145 182 131 112 7 171 253 111 198 134 180 167 211 39 255 2 1 32 85 254 21 63 217 212 175 12 93 123 191 36 186 37 133 144 24 69 81 206 5 196 199 97 221 58 127
b. Stream Generation
Pada tahapan ini akan dihasilkan nilai pseudorandom yang akan dikenakan
operasi XOR untuk menghasilkan ciphertext ataupun sebaliknya yaitu untuk
menghasilkan plaintext. Algoritmanya adalah sebagai berikut:
1) Isi indeks i dan j dengan nilai 0
2) Untuk i = 0 sampai i = panjang plaintext
3) Isi nilai i dengan hasil operasi ( i + 1 ) mod 256
4) Isi nilai j dengan hasil operasi ( j + S( i ) ) mod 256
5) Swap S( i ) dan S( j )
6) Isi nilai t dengan hasil operasi ( S( I ) + (S( j ) mod 256)) mod 256
7) Isi nilai y dengan nilai S( t )
8) Nilai y dikenakan operasi XOR terhadap plaintext
9) Tambahkan i dengan 1, kembali ke 2.
Dengan demikian akan dihasilkan ciphertext sebagai berikut :
Õ G Ó • • [ Ð
18
III. 3. Penjabaran Proses Enkripsi dan Dekripsi RC4 Stream Cipher Pada metode ini, proses enkripsi akan berjalan sama dengan proses dekripsinya
sehingga hanya ada satu fungsi yang dijalankan untuk menjalankan kedua proses
tersebut. Langkah- langkah yang akan diempuh oleh program dalam menjalankan
kedua proses tersebut meliputi hal-hal berikut ini :
a. User memasukkan secret key yang akan digunakan dalam proses
enkripsi/dekripsi.
b. Lakukan proses inisialisasi awal S-Box berdasarkan indeksnya.
c. Simpan secret key yang telah dimasukkan user ke dalam array 256 byte
secara berulang sampai array terisi penuh.
d. Bangkitkan nilai pseudorandom berdasarkan nilai key sequence.
e. Lakukan proses permutasi/transposisi nilai dalam S-Box selama256 kali.
f . Bangkitkan nilai pseudorandom key byte stream berdasarkan indeks dan nilai
S-Box.
g. Lakukan operasi XOR antara plaintext /ciphertext dan pseudorandom key
byte stream untuk menghasilkan ciphertext/plaintext.
III. 4. Masalah RC4 Stream Cipher Permasalahan yang didapati dalam penerapan metode RC4 Stream Cipher ini
merupakan kelemahan yang terdapat pada metode itu sendiri, antara lain :
a. Terlalu tingginya kemungkinan terjadi S-Box yang sama karena nilai
pseudorandom yang sama seringkali dibangkitkan berulang, hal ini terjadi
karena kunci user diulang-ulang untuk mengisi 256 bytes array. Meskipun
metode ini memungkinkan penggunaan variabel yang panjangnya dapat
mencapai 256 karakter/byte namun pada kenyataannya jarang sekali ada
yang menggunakan kunci sepanjang itu, selain karena sulit mencari
kombinasinya juga sulit untuk mengingatnya. Sehingga jika kunci yang
digunakan sebanyak 8 byte misalnya, maka kunci ini akan diulang sebanyak
32 kali untuk mengisi key byte array sampai penuh.
b. Enkripsi RC4 adalah XOR antara data bytes dan pseudorandom 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 byte plaintext diketahui ( atau mudah ditebak ). Diasumsikan A
berhasil menyadap dua buah message berbeda yang dienkripsi
menggunakan algoritma stream cipher dengan menggunakan kunci yang
sama. A kemudian meng-XOR-kan kedua ciphertext yang berhasil
19
disadapnya untuk menghilangkan pengaruh rangkaian kunci. Jika A berhasil
mengetahui plaintext dari salah satu message terenkripsi tersebut maka A
akan dengan mudah menemukan plaintext message yang lain tanpa
mengetahui rangkaian kuncinya :
Plaintext 1 : 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 1
Key : 0 0 0 1 1 0 1 0 0 1 1 1 1 1 0 1
Ciphertext 1 : 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0
Plaintext 2 : 0 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1
Key : 0 0 0 1 1 0 1 0 0 1 1 1 1 1 0 1
Ciphertext 2 : 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0
Ciphertext 1 : 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0
Ciphertext 2 : 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0
1 1 0 1 1 1 1 0 1 1 0 1 0 0 0 0
Plaintext 1 : 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 1
0 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 plaintext 2
III. 5. Pemecahan Masalah Untuk mengatasi permasalahan di atas , terdapat beberapa cara yang bisa dilakukan
antara lain :
a. Gunakanlah kunci yang panjang (minimal panjang kunci • 3 karakter dan
maksimal • 255 karakter) agar kemungkinan kunci dimasukkan berulang
dalam key byte array semakin kecil dan gunakan kombinasi yang berlainan.
b. Usahakan untuk tidak menggunakan kunci yang sama untuk mengenkripsi
file yang berbeda.
c. Jika kita akan menggunakan kunci yang sama untuk setiap kali
mengenkripsi file, maka diperlukan Initialization Vector ( IV ) pada secret
key. Jika IV yang digunakan untuk setiap kali proses enkripsi dijalankan
tidak pernah sama maka akan dihasilkan ciphertext yang berbeda meskipun
dienkrip plaintext yang sama.
20
d. Mengacak (mengubah susunan) plaintext sebelum diubah ke dalam cipher ,
sehingga jika seorang pengganggu memperoleh 1 byte data dari plaintext
maka ia tidak dapat memperoleh data yang lainnya dengan cara meng-
XOR-kan dua buah ciphertext dan byte data yang ia ketahui.
e. Mengubah metode pengisian key ke dalam key array. Caranya adalah key
cukup diisikan sekali dalam array kemudian sisa variabel array key yang
lainnya akan diisi dengan nilai yang dibangkitkan secara random.
Berdasarkan keterangan di atas, dapat dilihat bahwa ada beberapa cara yang dapat
digunakan sebagai solusi dari kekurangan yang terdapat dalam metode RC4 Stream
Cipher.
Dalam makalah ini, metode enkripsi tersebut akan diterapkan dalam suatu database
sistem billing suatu warbet sehingga pengembangan algoritmanya juga diusahakan
untuk dapat mengikuti karakteristik database yang memungkinkan proses search
dan save . Proses enkripsi dijalankan setiap kali proses save dijalankan. Sedangkan
proses dekripsi dijalankan setiap kali proses search dipanggil. Untuk proses save
tidak ada masalah yang ditemui dalam penerapan metode ini baik dengan
pengembangan algoritma apapun, namun dalam proses search harus
dipertimbangkan pula kecepatan prosesnya. Jika menggunakan Initialization Vector
program akan melakukan pencarian secara sequensial karena IV yang dibangkitkan
secara random sudah pasti tidak dapat diprediksikan sehingga untuk mencari suatu
data kita harus mengenkripsi data yang dijadikan primary key tersebut untuk
kemudian dicarikan data yang sesuai dengannya dalam database satu persatu. Dan
proses inilah yang dapat memperlambat jalannya program, dibandingkan dengan
pencarian berdasarkan indeks yang dapat lebih cepat prosesnya. Dan kelemahan
kedua yang terdapat dalam pengembangan algoritma dengan IV adalah data yang
telah dienkripsi akan mengalami pengembangan size karena IV yang digunakan
untuk enkripsi akan digabungkan bersama ciphertext agar dipergunakan IV yang
sama untuk proses dekripsinya.
Setiap nasabah peminjam modal pada Baitul Maal Wat Tamwil Al-Ukhuwah memiliki
nomor rekening yang unik sehingga nomor rekening nasabah satu dan yang lainnya
akan berbeda. Nomor rekening inilah yang nantinya akan dijadikan sebagai primary
key dalam database. Melihat keistimewaan nomor rekening tersebut maka penulis
mengambil langkah untuk menggunakan bagian nomor rekening yang tidak pernah
berulang untuk dijadikan sebagai nilai seed yang kemudian akan dikenakan fungsi
21
randomize yang disediakan oleh bahasa pemrograman yang digunakan. Setelah itu
akan dibangkitkan nilai random untuk mengisi sisa key byte array yang telah diisi key
satu kali. Dengan menggunakan bagian nomor rekening tersebut kita tidak perlu
menyimpan nilai seed yang kita gunakan dalam ciphertext karena jika suatu saat
data berdasarkan nomor rekening tertentu akan didekripsi maka nilai seed cukup
diambil dari indeks datanya (nomor rekening). Untuk nilai seed yang sama akan
dibangkitkan urutan nilai random yang sama, namun bila nilai seednya berbeda
maka hasil angka randomnya juga akan berbeda. Karena nomor rekening yang
dimiliki nasabah tidak pernah sama maka jika ditemui data nama, alamat, jumlah
pinjaman maupun tempo peminjaman yang sama akan dihasilkan ciphertext yang
berbeda.
III. 6. Algoritma Password Dalam pengembangannya, algoritma enkripsi dan dekripsi tidak dapat berdiri sendiri.
Yaitu dilengkapi juga dengan algoritma password. Algoritma password diletakkan
sebelum user melakukan input data nasabah. Maksudnya agar program hanya bias
diakses oleh orang yang berhak saja yang mengetahui password dari program.
Untuk lebih jelasnya, akan diuraikan algoritma password dari program tersebut di
bawah ini
key = “mahabbah”
Jika user id <> “noni” maka
Tampilkan pesan “ Maaf, Anda tidak punya hak!!!” Jika user id = “noni” maka
Cek apakah password = key Jika sama maka
Tutup form password Tampilkan form pencetakan tagihan
Selain itu Tampilkan pesan “ Maaf,password Anda salah”
Ulangi input password
Akhir jika Akhir jika
22
Pertama kali user akan menginput user id pada txtuser kemudian menginput
password pada txtpwd. Pada saat tombol Masuk ke Program ditekan maka program
akan mengecek validasi user id dan password yang dimasukkan. Jika user id dan
password yang dimasukkan benar maka form entry data nasabah akan ditampilkan.
Tapi jika user id dan password yang dimasukkan salah maka program akan terus
mengulang sampai data user id dan password yang dimasukkan benar atau user
bisa keluar dari program dengan menekan tombol Exit.
III. 7. Pengembangan Algoritma RC4 Stream Cipher Pengembangan algoritma dari RC4 Stream cipher di sini akan dilakukan dengan
cara membangkitkan nilai random untuk pengisian key byte array sehingga pengisian
key ke dalam array tidak berulang dan dalam penerapannya akan dipadukan dengan
teknik dasar enkripsi blocking untuk mengacak susunan plainteks sebelum diubah ke
dalam ciphertext.Misalkan :
Plaintext : enkripsi
Ascii plaintext : 101 110 107 114 105 112 115 105
Key : mahabbah
Ascii key : 109 97 104 97 98 98 97 104
Nilai seed : 57
a. Algoritma enkripsi
Proses enkripsi terdiri atas tahapan, antara lain :
1) Random Number Generator
Akan diambil sebuah nilai yang akan dijadikan “seed”. Kemudian
dibangkitkan nilai random berdasarkan nilai “seed” ini. Algoritmanya adalah
sebagai berikut :
a) Kerjakan fungsi Rnd -1
b) Kerjakan fungsi Randomize dengan nilai seed yang diambil.
2) Inisialisasi S-Box
Pada tahapan ini, S-Box akan diisi dengan nilai sesuai indeksnya untuk
mendapatkan S-Box awal. Algoritmanya adalah sebagai berikut :
a) Untuk i = 0 sampai i = 255 lakukan
b) Isikan S ke i dengan nilai i
c) Tambahkan i dengan 1 , kembali ke 1.
23
Dari algoritma di atas akan didapat urutan nilai S-Box sebagai berikut:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
3) Menyimpan key dalam key byte array
Pada tahapan ini, kunci ( key ) yang akan kita gunakan untuk mengenkripsi
atau dekripsi akan dimasukkan ke dalam array berukuran 256 byte hanya
sekali saja, kemudian sisa array lainnya akan diisikan dengan nilai random
yang dibangkitkan oleh mesin seluruh array terisi. Algoritmanya adalah
sebagai berikut :
a) Isi j dengan 1
b) Untuk i = 0 sampai i = 255 lakukan
c) Jika j <= panjang kunci maka
d) Isi K ke i dengan nilai Ascii karakter key ke j
e) Selain itu
f) Isi K ke i dengan nilai random
g) Akhir jika
h) Nilai j dinaikkan 1
i) Tambahkan i dengan 1 kemudian kembali ke 2.
24
Dari algoritma di atas akan diperoleh urutan nilai sebagai berikut:
109 97 104 97 98 98 97 104 68 244 221 33 137 47 81 154 224 26 252 158 7 85 136 128 15 111 221 216 66 100 149 41 41 101 176 192 231 215 137 223 205 159 9 28 41 158 26 4 94 119 94 3 58 152 34 135 131 120 141 99 211 30 30 114
166 226 85 125 178 119 175 95 119 41 216 103 22 100 29 254 102 118 32 138 69 149 206 145 44 36 150 34 7 50 212 113 67 68 140 193 40 84 94 135 105 25 180 203 249 137 65 210 33 156 167 251 207 84 120 231 50 249 97 221 131 170 160 109 39 118 191 83 241 118 124 158 203 247 7 17 122 22 112 201
182 116 95 33 130 219 6 210 187 130 84 95 241 141 107 175 119 211 85 252 182 229 242 237 198 76 53 255 64 18 144 42 78 131 173 192 4 53 95 152 242 69 216 108 249 227 28 128 95 19 181 132 31 170 169 188 131 159 169 94 243 133 139 60 16 83 250 162 252 103 109 130 253 202 86 206 67 181 155 38 6 85 74 179 211 203 135 83 39 120 202 245 61 119 72 72
37 107 175 143 22 122 23 215 5 153 52 78 118 11 207 233
4) Permutasi pada S – Box
Pada tahapan ini, akan dibangkitkan nilai pseudorandom yang akan dijadikan aturan untuk permutasi pada S-Box. Misalkan untuk nilai i = 2
dihasilkan nilai j = 26 , maka nilai pada S(2) akan ditukar dengan nilai
pada S(26). Algoritmanya adalah sebagai berikut : a) Isi nilai j dengan 0
b) Untuk i = 0 sampai i = 255 lakukan c) Isi nilai j dengan hasil operasi ( j + S( i ) + K( i )) mod 256
d) Swap S( i ) dan S( j ) e) Tambahkan i dengan 1 kemudian kembali ke 2.
25
Dari algoritma di atas akan diperoleh urutan nilai sebagai berikut: 234 51 57 4 24 106 209 37 140 23 40 29 49 0 198 44 101 144 158 45 225 212 33 50 185 63 41 194 109 69 219 124 169 75 96 28 156 64 182 188 177 121 172 97 72 79 91 142 157 60 137 206 165 215 95 136 67 152 132 129 165 81 232 153 70 105 94 108 104 31 85 192 15 183 250 130 134 53 211 191
208 116 13 141 133 34 20 78 11 71 181 164 238 138 229 61 59 199 251 2 240 7 257 115 159 178 126 222 90 196 3 201 1 207 223 27 8 205 200 236 10 12 46 73 151 120 168 202
220 36 235 193 111 231 233 122 9 110 125 249 203 58 19 227 214 147 93 25 180 255 228 82 118 74 62 226 107 55 175 32 84 56 210 113 166 26 155 117 243 254 186 35 42 204 76 21
190 112 18 128 145 86 127 170 65 48 149 6 237 88 83 239 80 143 162 242 213 171 192 98 47 119 217 176 14 218 77 244
173 30 100 154 252 99 179 22 163 87 160 52 253 123 224 248 43 5 139 148 146 187 103 245 230 174 66 114 89 39 102 247 16 241 38 17 150 92 131 189 221 246 184 161 68 54 197 216
5) Teknik blok
Pada tahapan ini, plaintext awal akan diubah susunannya mengikuti teknik
blocking.plaintext akan disusun secara vertical menurut baris kemudian akan
dibaca secara horizontal menurut kolom. Algoritmanya adalah sebagai berikut
:
a) Hitung panjang plaintext
b) Buat kolom yang masing-masing berisi 5 baris sepanjang plaintext.
c) Isikan plaintext menurut baris, hasilnya sebagai berikut :
e p
n s
k i
r
i
d) Baca plaintext menurut kolom, hasilnya adalah :
e p n s k i r i
Sebut saja hasilnya cipher1.
26
6) Stream generation
Pada tahapan ini akan dihasilkan nilai pseudorandom yang akan dikenakan
operasi XOR untuk menghasilkan ciphertext ataupun sebaliknya yaitu untuk
menghasilkan plaintext. Algoritmanya adalah sebagai berikut :
a) Isi indeks i dan j dengan nilai 0
b) Untuk i = 0 sampai i = panjang cipher1.
c) Isi nilai i dengan hasil operasi ( i + 1 ) mod 256
d) Isi nilai j dengan hasil operasi ( j + S( i ) ) mod 256
e) Swap S( i ) dan S( j )
f) Isi nilai t dengan hasil operasi ( S( I ) + (S( j ) mod 256)) mod 256
g) Isi nilai y dengan nilai S( t )
h) Nilai y dikenakan operasi XOR terhadap plaintext untuk menghasilkan
ciphertext
i) Tambahkan i dengan 1 kemudian kembali ke 2.
Dari algoritma di atas akan diperoleh ciphertext sebagai berikut :
« I ζ 8 ½ , o Ý
b. Algoritma dekripsi
Hampir sama dengan algoritma dekripsi,yaitu :
Proses dekripsi terdiri atas tahapan, antara lain :
1) Random Number Generator
Akan diambil sebuah nilai yang akan dijadikan “seed”. Kemudian
dibangkitkan nilai random berdasarkan nilai “seed” ini. Algoritmanya adalah
sebagai berikut :
a) Kerjakan fungsi Rnd -1
b) Kerjakan fungsi Randomize dengan nilai seed yang diambil.
2) Inisialisasi S-Box
Pada tahapan ini, S-Box akan diisi dengan nilai sesuai indeksnya untuk
mendapatkan S-Box awal. Algoritmanya adalah sebagai berikut :
a) Untuk i = 0 sampai i = 255 lakukan
b) Isikan S ke i dengan nilai I
c) Tambahkan i dengan 1 , kembali ke 1.
27
Dari algoritma di atas akan didapat urutan nilai S-Box sebagai berikut:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
240 240 241 242 243 245 246 247 248 249 250 251 252 253 254 255
3) Menyimpan key dalam key byte array
Pada tahapan ini, kunci ( key ) yang akan kita gunakan untuk mengenkripsi
atau dekripsi akan dimasukkan ke dalam array berukuran 256 byte hanya
sekali saja, kemudian sisa array lainnya akan diisikan dengan nilai random
yang dibangkitkan oleh mesin seluruh array terisi. Algoritmanya adalah
sebagai berikut :
a) Isi j dengan 1
b) Untuk i = 0 sampai i = 255 lakukan
c) Jika j <= panjang kunci maka
d) Isi K ke i dengan nilai Ascii karakter key ke j
e) Selain itu
f) Isi K ke i dengan nilai random
g) Akhir jika
h) Nilai j dinaikkan 1
i) Tambahkan i dengan 1 kemudian kembali ke 2.
28
Dari algoritma di atas akan diperoleh urutan nilai sebagai berikut :
109 97 104 97 98 98 97 104 68 244 221 33 137 47 81 154 224 26 252 158 7 85 136 128 15 111 221 216 66 100 149 41 41 101 176 192 231 215 137 223 205 159 9 28 41 158 26 4 94 119 94 3 58 152 34 135 131 120 141 99 211 30 30 114
166 226 85 125 178 119 175 95 119 41 216 103 22 100 29 254 102 118 32 138 69 149 206 145 44 36 150 34 7 50 212 113 67 68 140 193 40 84 94 135 105 25 180 203 249 137 65 210 33 156 167 251 207 84 120 231 50 249 97 221 131 170 160 109 39 118 191 83 241 118 124 158 203 247 7 17 122 22 112 201
182 116 95 33 130 219 6 210 187 130 84 95 241 141 107 175 119 211 85 252 182 229 242 237 198 76 53 255 64 18 144 42 78 131 173 192 4 53 95 152 242 69 216 108 249 227 28 128 95 19 181 132 31 170 169 188 131 159 169 94 243 133 139 60 16 83 250 162 252 103 109 130 253 202 86 206 67 181 155 38 6 85 74 179 211 203 135 83 39 120 202 245 61 119 72 72
37 107 175 143 22 122 23 215 5 153 52 78 118 11 207 233
4) Permutasi pada S – Box
Pada tahapan ini, akan dibangkitkan nilai pseudorandom yang akan dijadikan
aturan untuk permutasi pada S-Box. Misalkan untuk nilai i = 2 dihasilkan nilai j
= 26 , maka nilai pada S(2) akan ditukar dengan nilai pada S(26).
Algoritmanya adalah sebagai berikut :
a) Isi nilai j dengan 0
b) Untuk i = 0 sampai i = 255 lakukan
c) Isi nilai j dengan hasil operasi ( j + S( i ) + K( i )) mod 256
d) Swap S( i ) dan S( j )
e) Tambahkan i dengan 1 kemudian kembali ke 2.
Dari algoritma di atas akan diperoleh urutan nilai sebagai berikut :
234 51 57 4 24 106 209 37 140 23 40 29 49 0 198 44 101 144 158 45 225 212 33 50 185 63 41 194 109 69 219 124 169 75 96 28 156 64 182 188 177 121 172 97 72 79 91 142 157 60 137 206 165 215 95 136 67 152 132 129 165 81 232 153 70 105 94 108 104 31 85 192 15 183 250 130 134 53 211 191
208 116 13 141 133 34 20 78 11 71 181 164 238 138 229 61 59 199 251 2 240 7 257 115 159 178 126 222 90 196 3 201 1 207 223 27 8 205 200 236 10 12 46 73 151 120 168 202
220 36 235 193 111 231 233 122 9 110 125 249 203 58 19 227 214 147 93 25 180 255 228 82 118 74 62 226 107 55 175 32 84 56 210 113 166 26 155 117 243 254 186 35 42 204 76 21
190 112 18 128 145 86 127 170 65 48 149 6 237 88 83 239
29
80 143 162 242 213 171 192 98 47 119 217 176 14 218 77 244 173 30 100 154 252 99 179 22 163 87 160 52 253 123 224 248 43 5 139 148 146 187 103 245 230 174 66 114 89 39 102 247 16 241 38 17 150 92 131 189 221 246 184 161 68 54 197 216
5) Stream generation
Pada tahapan ini akan dihasilkan nilai pseudorandom yang akan dikenakan
operasi XOR untuk menghasilkan ciphertext ataupun sebaliknya yaitu untuk
menghasilkan plaintext. Algoritmanya adalah sebagai berikut :
a) Isi indeks i dan j dengan nilai 0
b) Untuk i = 0 sampai i = panjang cipher1.
c) Isi nilai i dengan hasil operasi ( i + 1 ) mod 256
d) Isi nilai j dengan hasil operasi ( j + S( i ) ) mod 256
e) Swap S( i ) dan S( j )
f) Isi nilai t dengan hasil operasi ( S( I ) + (S( j ) mod 256)) mod 256
g) Isi nilai y dengan nilai S( t )
h) Nilai y dikenakan operasi XOR terhadap plaintext untuk
menghasilkan ciphertext
i) Tambahkan i dengan 1 kemudian kembali ke 2.
6) Teknik blok
Pada tahapan ini, plaintext awal akan diubah susunannya mengikuti teknik
blocking.plaintext akan disusun secara vertical menurut baris kemudian akan
dibaca secara horizontal menurut kolom. Algoritmanya adalah sebagai berikut
:
a) Hitung panjang plaintext
b) Buat kolom yang masing-masing berisi 5 baris sepanjang plaintext.
c) Isikan plaintext menurut kolom, hasilnya sebagai berikut :
e p
n s
k i
r
i
d) Baca plaintext menurut baris, hasilnya adalah :
e n k r i p s i
30
III. 8. Spesifikasi Basis Data
31
Bab IV Profil UKM
IV. 1. Pengertian UKM
IV. 2. Profil Warnet
1. Struktur Organisasi
2. Bidang Usaha
32
Bab V Penerapan RC4 dalam Sistem Billing Warnet
V. 1. Sistem Billing
V. 2. Alasan Pemilihan RC4
V. 3. Enkripsi dalam Sistem Billing
33
Bab VI Penutup
VI. 1. Kesimpulan
VI. 2. Saran
34
Daftar Pustaka
1. Alam, M.agus J., Manajemen Database dengan Microsoft Visual Basic 6.0,
Elexmedia Komputindo, cetakan kedua, Jakarta, 2000.
2. David Wagner, RC4 Algorithm Description,
http://www.achtung.com/crypto/rc4.html, diakses tanggal 10 Agusutus 2001.
3. Juliasari, N., Penerapan Teknik Enkripsi Blok dan RC4 Stream Cipher pada
Database Nasabah Koperasi, Budi Luhur, 2002.
4. Menezes, A., Oorshoot, P.,Vanstone, S., Handbook of Applied Cryptography,
Boca Raton, FL, CRC Press, 1997.
5. Michael Howard, RC4 Usage Errors Leave Your Data Exposed,
http://security.devx.com/bestdefense/2001/mh0201/mh0201-4.asp, diakses
tanggal 4 Januari 2002.
6. Pfleeger,Charles P., Security In Computing, Prentice Hall, cetakan pertama,
USA, 1989.
7. Schneier, B., Applied Cryptography, John Wiley & Sons, Inc, cetakan kedua, New
York, 1996.
8. Stallings, William, Cryptography and Network Security, Prentice Hall, cetakan
kedua, 1995.
9. Steve D.S, Mengenal Teknik-teknik Enkripsi Data, Mikrodata, Volume 1 seri 12,
hal 45-47 dan hal 61.