Implementasi Algoritma Xor Dan Algoritma Rc4 Pada Aplikasi Enkripsi Dan Dekripsi Teks Berbasis Android

BAB 2
LANDASAN TEORI

2.1 Kriptografi
Kata Cryptography berasal dari bahasa Yunani yang terdiri dari dua kata yaitu kryptos
yang berarti rahasia dan graphein yang berarti tulisan (Mollin, 2007). Menurut
terminologinya, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan
ketika pesan dikirim dari suatu tempat ke tempat lain (Ariyus, 2008).

2.1.1

Sejarah kriptografi

Kriptografi mempunyai sejarah yang menarik dan panjang. Kriptografi sudah
digunakan 4000 tahun yang lalu yang diperkenalkan oleh orang-orang Mesir untuk
mengirim pesan ke pasukan militer yang berada di lapangan dan supaya pesan tersebut
tidak terbaca oleh pihak musuh walaupun kurir pembawa pesan tersebut tertangkap
oleh musuh (Ariyus, 2006).

2.1.2


Algoritma kriptografi

Algoritma ditinjau dari asal usul kata, kata algoritma mempunyai sejarah yang
menarik, kata ini muncul dalam kamus Webster sampai akhir tahun 1957 hanya
menemukan kata algorism yang mempunyai arti proses perhitungan dengan bahasa
Arab. Algoritma berasal dari nama penulis buku Arab yang terkenal yaitu Abu Ja’far
Muhammad Ibnu Musa al-Khuwarizmi (al-Khuwarizmi dibaca oleh orang barat
menjadi algorism). Kata algorism lambat laun berubah menjadi algorithm.
Definisi terminologinya algoritma adalah urutan langkah-langkah logis untuk
penyelesaian masalah yang disusun secara sistematis. Algoritma kriptografi
merupakan langkah-langkah logis bagaimana menyembunyikan pesan dari orangorang yang tidak berhak atas pesan tersebut.

7

Algoritma kriptografi terdiri dari tiga fungsi dasar yaitu:
1. Enkripsi: Enkripsi merupakan hal yang sangat penting dalam kriptografi yang
merupakan pengamanan data yang dikirimkan dan terjaga kerahasiannya.
Pesan asli disebut plaintext yang dirubah menjadi kode-kode yang tidak
dimengerti atau disebut dengan chipertext.
2. Dekripsi: Dekripsi merupakan kebalikan dari enkripsi, pesan yang telah

dienkripsi dikembalikan kebentuk asalnya ( plaintext) disebut dengan dekripsi
pesan.
3. Kunci: Kunci yang dimaksud disini adalah kunci yang dipakai untuk
melakukan enkripsi dan dekripsi, kunci terbagi menjadi dua bagian yaitu kunci
pribadi (private key) dan kunci umum (public key).
Secara umum fungsi tersebut dapat dilihat pada Gambar 2.1.
Plaintext
Enkripsi

Ciphertext

Kunci

Dekripsi

Plaintext

Kunci

Gambar 2.1 Proses enkripsi dan dekripsi


2.2 Macam-Macam Algoritma Kriptografi
Algoritma kriptografi dibagi tiga berdasarkan kunci yang dipakai, yaitu algoritma
simetri (menggunakan satu kunci untuk proses enkripsi dan dekripsi), algoritma
asimetri (menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsi), dan
fungsi hash (Ariyus, 2008).

2.2.1

Algoritma simetri

Algoritma simetri adalah algoritma dimana penyandian kunci enkripsi dan kunci
dekripsi bernilai sama. Kunci pada penyandian simetri diasumsikan bersifat
rahasia dan hanya pihak yang melakukan enkripsi dan dekripsi yang mengetahui
nilainya (Sadikin, 2012).
Algoritma ini sering disebut dengan algoritma klasik karena memakai
kunci yang sama untuk kegiatan enkripsi dan dekripsi. Algoritma ini sudah ada

8


sejak lebih dari 4000 tahun yang lalu. Bila mengirim pesan dengan menggunakan
algoritma ini, si penerima pesan harus diberitahu kunci dari pesan tersebut agar bisa
mendekripsikan pesan yang dikirim. Keamanan dari pesan yang menggunakan
algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain
maka orang tersebut akan dapat melakukan enkripsi dan dekripsi terhadap
pesan. Algoritma yang memakai kunci simetri di antaranya adalah DES, RC2,
RC4, RC5, RC6, IDEA, AES, A5, OTP, dan sebagainya (Ariyus, 2008).
Proses kriptografi simetri dapat dilihat pada Gambar 2.2.
Teks
Enkripsi

Ciphertext
Dekripsi

Teks

Kunci Rahasia
Gambar 2.2 Kriptografi simetri

2.2.2


Algoritma asimetri

Algoritma asimetri atau sering juga disebut dengan penyandian kunci publik (public
key) adalah algoritma dimana penyandian antara kunci enkripsi dan dekripsi

mempunyai nilai yang beda. Kunci enkripsi yang juga disebut dengan kunci publik
(public key) bersifat terbuka. Sedangkan, kunci dekripsi yang juga disebut kunci privat
(private key) bersifat tertutup/rahasia (Sadikin, 2012).
Kunci-kunci tersebut berhubungan satu sama lain. Dengan kunci publik orang
dapat mengenkripsi pesan tetapi tidak bisa mendekripsinya. Hanya orang yang
memiliki kunci rahasia yang dapat mendekripsi pesan tersebut. Algoritma asimetri
bisa mengirimkan pesan dengan lebih aman daripada algoritma simetri. Contoh, Alice
mengirim pesan ke Bob menggunakan algoritma asimetri. Hal yang harus dilakukan
adalah:
1. Bob memberitahukan kunci publiknya ke Alice.
2. Alice mengenkripsikan dengan menggunakan kunci publik Bob.
3. Bob mendekripsi pesan dari Alice dengan kunci rahasianya.
4. Begitu juga sebaliknya jika Bob ingin mengirim pesan ke Alice.


9

Proses kriptografi asimetri dapat dilihat pada Gambar 2.3.

Gambar 2.3 Kriptografi asimetri (Paar, 2010)

Algoritma yang memakai kunci public diantaranya adalah: DSA, RSA, DH, ECC,
Kriptografi Kuantum, dan lain sebagainya.

2.3 Tipe dan Model Algoritma Kriptografi
Pada dasarnya ada dua tipe dan model yang umum digunakan dalam algoritma
kriptografi simetri yaitu aliran kode (stream cipher ) dan blok kode (block cipher ).

2.3.1

Aliran kode

Aliran kode (stream cipher ) adalah sebuah simetri cipher yang beroperasi bit per bit
pada plaintext dimana 1 bit setiap kali transformasi untuk menjadi ciphertext. Aliran
kode mengenkripsi teks asli menjadi teks kode bit per bit. Stream cipher umumnya

lebih cepat daripada block cipher pada perangkat keras dan juga lebih tepat dalam
beberapa kasus wajib (misalnya, dalam beberapa aplikasi telekomukasi) dimana ketika
proses pengiriman data memiliki buffering yang terbatas sehingga setiap karakter
harus diproses secara individu (van Tillborg, 2011).
Stream cipher Pertama kali diperkenalkan oleh Vernam melalui algoritma

yang dikenal dengan nama kode Vernam. Kode Vernam diadopsi dari one-time pad
cipher , yang dalam hal ini karakter diganti dengan bit (0 dan 1). Ciphertext diperoleh

dengan melakukan penjumlahan modulo 2 satu bit plaintext dengan satu bit kunci
seperti pada persamaan 1.
Ci = Pi + K i mod 2.………….............................................(1)

10

yang dalam hal ini:
P i : bit plaintext
Ki : bit kunci
Ci : bit ciphertext


1. Plaintext diperoleh dengan melakukan penjumlahan modulo 2 satu bit
ciphertext dengan satu bit kunci seperti pada persamaan 2.

Pi = (Ci − K i ) mod 2....………...............................................(2)

2. Dengan kata lain, kode Vernam adalah versi lain dari kode one-time pad.

3. Oleh karena operasi penjumlahan modulo 2 identik dengan operasi bit dengan
operator XOR maka persamaan 1 dapat ditulis seper.ti pada persamaan 3.
Ci = Pi ⊕ K i ....………...........................................................(3)

dan proses dekripsi menggunakan persamaan seperti pada persamaan 4.

Pi = Ci ⊕ K i ....…...................................................................(4)
Pada stream cipher , bit hanya mempunyai dua buah nilai sehingga proses
enkripsi hanya menyebabkan dua keadaan pada bit tersebut, berubah atau tidak
berubah. Dua keadaan itu ditentukan oleh kunci enkripsi yang disebut aliran bit kunci
(keystream). Aliran bit kunci dibangkitkan dari sebuah pembangkit yang dinamakan
pembangkit aliran bit kunci (keystream generator ). Aliran bit kunci (sering dinamakan
running key) di-XOR-kan dengan aliran bit-bit plaintext, P 1, P 2, …, P i untuk


menghasilkan aliran bit-bit ciphertext (Ariyus, 2008). Konsep stream cipher dapat
dilihat pada Gambar 2.4.
Pengirim

Penerima

Key stream

Key stream

Generator

Generator

Keystream
Plaintext

P1


K1

K1



Enkripsi

C1
Ciphertext



Dekripsi

Gambar 2.4 Konsep stream cipher

P1

Plaintext


11

Contoh: misalkan plaintext adalah 110010101 dan aliran bit kunci (keystream)
adalah 101001110 maka ciphertext yang dihasilkan yaitu 011011011. Proses tersebut
dapat dilihat pada Gambar 2.5.
Plaintext (110010101)

Keystream Generator

Keystream (101001110)

Ciphertext
(011011011)



Secret Key

Gambar 2.5. Contoh stream cipher (Smart, 2004)

Aliran kode (stream cipher ) merupakan kode yang berasal dari hasil XOR
seperti pembahasan diatas. Setiap bit plaintext dengan setiap bit kunci. Kunci
merupakan kunci utama (kunci induk) yang digunakan untuk membangkitkan kunci
acak semu yang dibangkitkan dengan Pseudo-Random Sequence Generator yang
merupakan suatu nilai yang nampak seperti diacak tetapi sesungguhnya nilai tersebut
merupakan suatu urutan. Secara khusus urutan dari nilai yang dihasilkan oleh RNG
(Random Number Generator ).
Random Number Generator secara umum adalah pseudo-random, yang

memberikan inial state atau seed (nilai yang dimasukkan ke dalam state). Seluruh
urutan tersebut ditentukan secara menyeluruh. Meskipun demikian jumlah
karakteristik

yang

ditampilkan

berasal

dari

urutan

yang

acak

tersebut.

Pseudorandomness menghasilkan urutan yang sama secara berulang-ulang pada

penempatan yang berbeda. Kemudian kunci acak semu tersebut diberi operasi XOR
dengan plaintext untuk mendapatkan ciphertext. Proses stream cipher dapat dilihat
pada Gambar 2.6.

Gambar 2.6 Proses stream sipher

12

Keamanan sistem stream cipher bergantung seluruhnya pada pembangkit
aliran bit kunci (keystream). Jika pembangkit mengeluarkan aliran bit kunci yang
seluruhnya nol maka ciphertext sama dengan plaintext sehingga proses enkripsi
menjadi tidak ada artinya. Jika pembangkit mengeluarkan aliran bit kunci dengan pola
16 bit yang berulang maka algoritma enkripsinya menjadi sama seperti enkripsi
dengan XOR sederhana yang memiliki tingkat keamanan yang tidak berarti. Jika
pembangkit mengeluarkan aliran bit kunci yang benar-benar acak (truly random),
maka algoritma enkripsinya sama dengan one-time pad dengan tingkat keamanan
yang sempurna. Pada kasus ini aliran bit kunci sama panjangnya dengan panjang
plaintext, dan mendapatkan aliran kode sebagai unbreakable cipher . Tingkat

keamanan stream cipher terletak antara algoritma XOR sederhana dengan one-time
pad. Semakin acak keluaran yang dihasilkan oleh pembangkit aliran kunci bit, maka

semakin sulit kriptanalis memecahkan ciphertext-nya (Ariyus, 2008).

2.3.2

Blok kode

Blok kode (block cipher ) adalah sebuah fungsi enkripsi dengan membagi-bagi data
menjadi beberapa blok yang tetap. Generasi sekarang dari block cipher mempunyai
ukuran blok 128 bit (16 byte). Block cipher ini mengenkripsi 128 bit plaintext menjadi
128 bit ciphertext sebagai hasilnya. Ukuran plaintext dan ciphertext selalu sama, dan
kita sebut ini sebagai ukuran blok pada block cipher (Ferguson, 2010).
Blok kode mempunyai banyak aplikasi. Aplikasi tersebut digunakan untuk
memberikan layanan confidentiality (kerahasiaan), integritas data atau authentication
(pengesahan pemakai), dan juga bisa memberikan layanan keystream generator untuk
aliran kode (stream cipher ). Misalkan blok plaintext (P ) yang berukuran m bit
dinyatakan sebagai vektor seperti pada persamaan 5.
P = (Pi , P2 , … , Pm )..................................................................(5)

yang dalam hal ini pi adalah 0 atau 1 untuk i = 1, 2, …, m, dan blok ciphertext (C)
adalah:
C = (Ci , C2 , … , Cm ).................................................................(6)

yang dalam hal ini c i adalah 0 atau 1 untuk i = 1, 2, …, m.

Bila plaintext dibagi menjadi n buah blok, barisan blok plaintext dinyatakan pada
persamaan 7.
(Pi , P2 , … , Pn )............................................................................(7)

13

Untuk setiap blok plaintext P i, bit-bit penyusunnya dapat dinyatakan pada persamaan
8.
Pi = (Pi1 , Pi2 , … , Pim )...............................................................(8)

Enkripsi dan dekripsi dengan kunci K dinyatakan berturut-turut seperti pada
persamaan 9 dan 10.
Ek P = ................................................................................(9)
untuk dekripsi,
Dk C = �..............................................................................(10)

dan fungsi E haruslah fungsi yang berkorespondensi satu-ke-satu, sehingga:
−1

=

.................................................................................(11)

Proses enkripsi dan dekripsi block cipher dapat dilihat pada Gambar 2.7.
Enkripsi:
Block Plaintext P

Dekripsi:
Block Ciphertext C

P = (p1, p2, …, pm)

C = (c1, c2, …, cm)

Key K

Key K
E

D

Block Ciphertext C

Block Plaintext P

C = (c1, c2, …, cm)

P = (p1, p2, …, pm)

Gambar 2.7 Proses enkripsi dan dekripsi Block Cipher

Contoh: Database di sebuah bank memiliki data INCOME, dienkripsi menjadi
satu blok, itu berarti semua rekening memiliki blok enkripsi yang sama. Misalnya,
database bank memilki dua record:

MEMBER: HOLLY INCOME $100,000
MEMBER: HEIDI INCOME $100,000
Hasil enkripsinya menjadi:
ABCQZRME GHQRMSIB CTXUVYSS RMGRPFQN
ABCQZRME ORMPABRZ CTXUVYSS RMGRPFQN
Penyerang bisa menyimpulkan bahwa record yang ada di dalam database tersebut
memiliki nilai yang sama. Kesimpulan itu diambil dari kata CTXUVYSS

14

RMGRPFQN. Serangan dilakukan terhadap block cipher dengan melihat posisi dan
ukuran blok. Untuk meminimalkan serangan terhadap block cipher digunakan
beberapa cara agar posisi dan ukurannya menjadi tidak sama. Banyak mode block
cipher yang dapat dipakai. Mode operasi block cipher terbagi menjadi empat bagian,

antara lain:
1. Mode Electronic Code Book (ECB)
2. Mode Cipher Block Chaining (CBC)
3. Mode Cipher Feed Back (CFB)
4. Mode Output Feed Back (OFB)
Dari setiap mode tersebut plaintext dibagi menjadi blok-blok. Misalnya, setiap
blok mempunyai nilai 128 bit. Jika terdapat plaintext yang dibagi ke bentuk blok yang
mempunyai nilai kurang dari 128 bit maka blok tersebut terlebih dahulu ditambah
dengan padding bit (bit tambahan) agar jumlahnya menjadi 128 bit untuk setiap
bloknya (Ariyus, 2008).

2.4 Algoritma Kriptografi XOR
Algoritma XOR adalah algoritma enkripsi sederhana dengan menggunakan prinsip
operator logika XOR (Exclusive-OR). Cara enkripsinya adalah dengan meng-XOR-kan
plaintext dengan kunci sehingga didapatkan ciphertext-nya. Sebaliknya untuk proses

dekripsi adalah dengan meng-XOR-kan ciphertext dengan kunci sehingga didapatkan
plaintext-nya kembali. Teknik ini beroperasi sesuai prinsip seperti pada Tabel 2.1.

Tabel 2.1 Tabel XOR
A

B

Y

0

0

0

0

1

1

1

0

1

1

1

0

Gambar 2.8 Gerbang logika XOR

15

Jika kita berpikir tentang angka 0 dan 1 pada operasi diatas, maka operasi XOR
adalah sama dengan pemambahan modulo 2. Dasar algoritma XOR ini didefinisikan
sebagai berikut:
untuk enkripsi dapat dilihat pada persamaan 12.
P ⊕ K = C.................……….................................................(12)

sedangkan untuk dekripsi seperti pada persamaan 13.

C ⊕ K = P.........…......……...................................................(13)

Kode XOR ini memiliki keuntungan menjadi sangat efisien dan benar-benar simetris
dalam arti bahwa enkripsi dan dekripsi adalah fungsi yang sama. Jika K dipilih secara
acak dan hanya digunakan sekali, maka algoritma ini dikenal sebagai Vernam onetime pad. Sayangnya, hal ini memerlukan sebuah kunci yang sama panjangnya dengan
plaintext, yang membuatnya agak susah untuk diimplementasikan dalam beberapa

aplikasi (Hoffstein, 2008).
Sebagai contoh Algoritma XOR sederhana diketahui plaintext “ILKOM” jika
ditulis dalam format ASCII 8-bit menjadi 01001001 01001100 01001011 01001111
01001101 dapat dienkripsi dengan suatu kunci string “AAAAA” (01000001
01000001 01000001 01000001 01000001 dalam format ASCII 8-bit) sehingga didapat
hasil sebagai berikut:
01001001 01001100 01001011 01001111 01001101
01000001 01000001 01000001 01000001 01000001
-------------------------------------------------------------- ⊕

00001000 00001101 00001010 00001110 00001100 (BSCRLFSOFF)
dan sebaliknya proses dekripsi:
00001000 00001101 00001010 00001110 00001100
01000001 01000001 01000001 01000001 01000001
-------------------------------------------------------------- ⊕

01001001 01001100 01001011 01001111 01001101 (ILKOM)

Operator XOR sering dijadikan sebagai salah satu komponen dalam pembentukan
chipertext yang lebih kompleks. Namun, penggunaan suatu kunci yang berulang

secara konstan menyebabkan suatu chipertext dapat dengan mudah dipecahkan
menggunakan analisis frekuensi (seperti dibahas pada huruf yang paling sering
muncul dalam suatu bahasa).

Keutamaan dari teknik ini adalah mudah

16

diimplementasikan dan operasi XOR tidak sulit secara komputasional. Oleh Karena
itu, algoritma XOR masih sering kali digunakan untuk menyembunyikan informasi
dalam kasus-kasus tertentu dan kemudian dilengkapi dengan suatu mekanisme
keamanan tambahan lainnya.

2.5 Algoritma Kriptografi RC4
RC4 didesain oleh Ron Rivest yang berasal dari RSA Security pada tahun 1987. RC4

sendiri mempunyai singkatan resmi yaitu “Rivest Chiper”, namun juga dikenal
sebagai “Ron’s Code”. RC4 sebenarnya dirahasiakan dan tidak dipublikasikan kepada
khalayak ramai, namun ternyata ada orang yang tidak dikenal menyebarkan RC4 ke
mailing list Cypherpunks. Kemudian berita ini dengan cepat diposkan ke sci.crypt
newsgroup, dan dari newsgroup ini kemudian menyebar luas di internet. Kode yang

dibocorkan tersebut dipastikan keasliannya karena output yang dikeluarkan sama
dengan software-software yang menggunakan RC4 yang berlisensi.
Nama RC4 sudah dipatenkan, sehingga RC4 sering disebut juga ARCFOUR
atau ARC4 (Allegred RC4) untuk menghindari masalah pematenan. RSA Security tidak
pernah secara resmi merilis algoritma tersebut, namun Rivest secara pribadilah yang
merilisnya tersebut dengan menghubungkan Wikipedia Inggris ke catatan-catatan
yang ia punya. RC4 telah menjadi bagian dari protokol enkripsi yang standar dan
sering digunakan, termasuk WEP dan WPA untuk wireless card, serta TLS. Faktor
utama yang menjadi kesuksesan dari RC4 adalah kecepatannya dan kesederhanaannya
dalam mengenai banyak aplikasi, sehingga mudah untuk mengembangkan
implementasi yang efisien ke software dan hardware.
RC4 termasuk ke dalam kode aliran ( stream cipher ) dengan kunci

rahasia/kunci simetri (kunci yang sama digunakan untuk proses enkripsi dan dekripsi).
Seperti halnya dengan Vernam Cipher , inti dari enkripsi RC4 adalah pembangkitan
kunci aliran (keystream) yang bersifat acak semu (pseudo random). Algoritma RC4
terdiri atas 2 bagian yaitu Key Scheduling algorithm (KSA) dan Pseudo Random
Generation Algorithm (PRGA) (Mooduto, 2004).

17

2.5.1

Key schedulling algorithm

Tahap pertama dari algoritma RC4 adalah key schedulling (KSA). Pada tahap ini State
diberi nilai awal berupa larik yang merepresentasikan suatu permutasi dengan 256
elemen. Jadi, hasil dari KSA adalah permutasi awal. Larik yang mempunyai 256
elemen ini (dengan indeks 0-255) dinamakan S (Kromodimoeljo, 2010). Langkahlangkah pembentukan S adalah sebagai berikut:
1. Inisialisasi kotak-S sesuai dengan indeksnya: S[0] = 0, S[1] = 1, …, S[255] =
255. Kotak-S yang terbentuk ditunjukkan oleh Tabel 2.2.

Tabel 2.2 Larik 256 byte kotak-S awal
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

2. Kunci dimasukkan ke dalam larik berukuran 256. Jika ukuran kunci kurang
dari 256 byte, maka dilakukan padding dengan mengulang kunci hingga larik
terisi penuh. Misalkan kunci “jaya” dengan kode ASCII 106, 97, 121, dan 97.
Tabel 2.3 menunjukkan larik 256 byte dengan kunci tersebut.

18

Tabel 2.3 Larik 256 byte kunci
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97
106 97 121 97 106 97 121 97 106 97 121 97 106 97 121 97

3. Kotak-S disusun kembali membentuk kotak-S akhir yang ditunjukkan oleh
Tabel 2.4. Langkah pertama, penghitung j diinisialisasi dengan nol. Kemudian
nilai j yang baru = (j + S[i] + K[i]) mod 256. Lalu, nilai S[i] dan S[j]
ditukarkan. Proses penentuan nilai j yang baru dan penukaran nilai S[i] dengan
S[j] tersebut dilakukan dari i = 0 sampai dengan i = 255.

Tabel 2.4 Larik 256 byte kotak-S akhir
78

103

71

171

47

127

223

143

216

66

153

185

15

69

244

167

152

8

29

147

97

227

195

174

108

155

100

224

7

182

188

146

133

176

10

255

180

58

88

84

92

122

228

192

54

205

93

5

207

197

181

177

51

62

63

115

80

45

237

48

72

126

186

194

111

156

144

231

253

136

64

238

160

137

19

217

89

193

91

61

28

23

50

105

94

221

172

132

229

211

166

98

44

230

178

130

134

198

90

0

245

241

34

30

27

18

208

79

95

117

249

85

19

140

119

179

219

254

52

39

168

138

169

112

32

14

204

201

25

129

110

246

40

26

120

35

16

21

199

159

13

202

184

191

175

162

109

251

247

225

77

113

65

96

81

139

164

70

236

183

215

104

125

239

20

43

76

206

187

114

75

190

1

60

83

234

149

243

73

189

82

57

46

86

141

101

220

161

200

4

56

131

53

87

33

242

6

250

3

222

74

9

173

165

24

12

106

36

233

213

123

17

22

42

142

99

37

148

163

196

218

49

203

210

41

68

107

154

212

170

235

252

128

118

158

11

214

157

59

248

135

124

55

240

102

151

121

2

67

145

31

232

209

116

226

150

38

Untuk i = 0, j = (0 + S[0] + K[0]) mod 256 = (0 + 0 + 106) mod 256 = 106.
Nilai S[0] dan S[106] ditukarkan sehingga S[0] = 106 dan S[106] = 0.
Demikian seterusnya sampai i = 255.

2.5.2

Pseudo random generation algorithm

Tahap selanjutnya dari algoritma RC4 dinamakan Pseudo Random Generation
Algorithm (PRGA). Tahap ini menghasilkan nilai pseudo-random yang kemudian diXOR-kan dengan plaintext untuk proses enkripsi atau dengan ciphertext pada proses

dekripsi). Langkah pertama adalah menginisialisasikan nilai i dan j dengan nol. Untuk
k = 0, …, k = panjang pesan – 1, nilai i dan j yang baru dihitung dengan cara:
i = (i + 1) mod 256
j = (j + S[i]) mod 256

Nilai S[i] dan S[j] ditukarkan. Kemudian, nilai S dengan indeks t = (S[i] + S[j]) mod
256 diambil. Nilai S[t] tersebut terakhir di-XOR-kan dengan plaintext atau ciphertext
dengan indeks k.
Misalkan pesan yang akan dienkripsi adalah “ilkom“ dengan panjang lima
byte. Pesan tersebut dalam kode ASCII adalah 105, 108, 107, 111, 109. Ciphertext

dihasilkan pertama-tama dengan menginisialisasikan nilai i dan j dengan nol.
Selanjutnya, dari nilai nol sampai dengan empat dilakukan perhitungan nilai i dan j
yang baru. Hasil perhitungan yang pertama adalah:
i = (0 + 1) mod 256 = 1
j = (0 + S[1]) mod 256 = (0 + 103) mod 256 = 103

20

Nilai S[1] = 103 dan S[103] = 30 ditukarkan sehingga dihasilkan S[1] = 30 dan S[103]
= 103. Selanjutnya, nilai t dihitung: t = (S[1] + S[103]) mod 256 = (30 + 103) mod 256
= 133. Kemudian, nilai S[t] = S[133] = 120 di-XOR-kan dengan pesan[k] = pesan[0],
yaitu “ i ” yang kode ASCII nya adalah 105.
01111000
01101001_⊕
00010001 (dalam desimal = 17, yaitu kode ASCII untuk karakter “DC1”)
Proses tersebut diulang sampai karakter terakhir plaintext. Algoritma yang sama juga
digunakan untuk mendekripsi ciphertext (Fiansyah, 2008).

2.6 Android
Android merupakan sistem operasi Mobile berbasis kernel Linux yang dikembangkan

oleh Android Inc. Sistem operasi ini bersifat terbuka (open source) sehingga para
pengembang dapat membuat aplikasi mereka sendiri. Awalnya Google Inc. membeli
Android Inc. yang merupakan pendatang baru yang membuat perangkat lunak untuk
telepon genggam. Kemudian untuk mengembangkan Android di bentuklah Open
Handset Alliance yang merupakan gabungan dari 34 perusahaan peranti keras, peranti
lunak, dan telekomunikasi termasuk Google, HTC, Intel, Motorola, Qualcomm, TMobile, dan NVidia. Pada saat perilisan perdana Android pada tanggal 5 November
2007,

Android

bersama

Open

Handset

Alliance

menyatakan

mendukung

pengembangan standar terbuka pada perangkat seluler. Di lain pihak, Google merilis
kode-kode Android dibawah lisensi Apache, sebuah lisensi perangkat lunak standar
terbuka perangkat seluler. Terdapat dua jenis distributor sistem operasi Android.
Pertama yang mendapat dukungan penuh dari Google atau Google Mail Service
(GMS) dan kedua adalah yang benar-benar bebas distribusinya tanpa dukungan
langsung dari Google atau dikenal sebagai Open Handset Distribution (DHD)
(Ardiansyah, 2011).
Sejak April 2009, versi Android dikembangkan dengan nama kode yang dinamai
berdasarkan makanan pencuci mulut dan penganan manis. Masing-masing versi dirilis
sesuai urutan alfabet, yakni Cupcake (1.5), Donut (1.6), Eclair (2.0–2.1), Froyo (2.2–
2.2.3), Gingerbread (2.3–2.3.7), Honeycomb (3.0–3.2.6), Ice Cream Sandwich (4.0–
4.0.4), Jelly Bean (4.1–4.3), KitKat (4.4-4.4.3), Lollipop (5.0) dan Marsmallow (6.0).

21

2.7 Penelitian yang Relevan
Beberapa penelitian yang telah dilakukan sebelumnya yang berkaitan dengan
penelitian ini adalah:
1. Nihe, H.R (2015) dalam skripsi yang berjudul Implementasi Algoritma Affine
Cipher dan Algoritma Advance Encryption Standard (AES) Pada Aplikasi
Short Message Service (SMS) Berbasis Android. Berdasarkan hasil pengujian,

perbandingan panjang SMS berbanding lurus dengan waktu proses enkripsi
dan dekripsi dimana dalam proses tersebut, algoritma AES membutuhkan
waktu lebih lama dibandingkan dengan algoritma affine cipher .
2. Penelitian yang dilakukan oleh Nababan, A.M (2015). Membahas tentang
penerapan algoritma RC4 dan Teknik Spread Spectrum untuk pengamanan
Text File dimana ukuran naskah asli dan naskah acak selalu sama. Ukuran
cover-image dan stego-image juga selalu sama. Hubungan antara panjang

naskah acak dan waktu pemrosesan untuk penyisipan dan ekstraksi adalah
hubungan yang berbanding lurus. Semakin panjang naskah acak, semakin lama
waktu pemrosesan, begitu juga dengan sebaliknya.
3. Penelitian yang dilakukan oleh Fiansyah, E (2008). Membahas tentang
penerapan algoritma RC4 pada aplikasi sistem informasi pengolah database
pendataan kegiatan skripsi dimana aplikasi yang menggunakan mekanisme
keamanan enkripsi, client menerima waktu tanggap lebih lama dibandingkan
aplikasi yang tidak menggunakan keamanan enkripsi. Namun dengan adanya
mekanisme keamanan enkripsi, data menjadi lebih aman.
4. Sebayang, A.M.S (2014) dalam skripsi yang berjudul Implementasi Kombinasi
Beuafort Cipher dan Afffine Cipher pada Three –Pass Protocol untuk
Pengamanan Data. Berdasarkan hasil pengujian grafik, hubungan antara

waktu proses dan panjang plaintext diperoleh bahwa hasil panjang plaintext
berbanding lurus terhadap waktu, semakin panjang plaintext maka waktu yang
dibutuhkan juga akan semakin lama.