BAB 2
LANDASAN TEORI
2.1 Kriptografi
2.1.1 Definisi Kriptografi
Kriptografi berasal dari bahasa Yunani yang terdiri dari dua kata yaitu crypto dan
graphia. Crypto berarti rahasia dan graphia berarti tulisan. Jadi secara etimologi
kriptografi adalah tulisan rahasia. Secara terminologi,kriptografi adalah ilmu dan seni
untuk menjaga kemananan pesan ketika pesan dikirim dari suatu tempat ke tempat
yang lain. Kriptografi adalah ilmu untuk mempelajari teknik-teknik matematika yang
berhubungan dengan aspek-aspek pada keamanan informasi misalnya kerahasiaan
(confidentiality), integritas (integrity), otentikasi (authentication) (Munir, 2006).
Dalam Perkembangannya, kriptografi juga dimanfaatkan untuk mengidentifikasi
pengiriman pesan dan tanda tangan digital serta keaslian pesan dengan menggunakan
sidik jari digital (Ariyus,2008).
Teknik kriptografi yang digunakan dalam penyandian pesan dilakukan dengan
menyembunyikan atau mengodekan pesan yang asli. Selanjutnya, pengirim pesan
akan melakukan penyandian pesan awal menjadi kode-kode yang hanya dapat dibaca
oleh penerima pesan tersebut. Proses ini disebut dengan Enkripsi . Penerima pesan
kemudian mengembalikan kode-kode yang telah diterima menjadi pesan asli dengan
menggunakan kunci yang dikirimkan oleh pengirim pesan. Proses ini disebut dengan
Dekripsi (Schneier, 1996). Pada gambar 2.1 memnunjukkan proses enkripsi dan
dekripsi.
Pesan awal dalam sistem kriptografi disebut juga sebagai plaintext
(disimbolkan dengan p), yaitupesan yang hendak dikirimkan yang berisi data asli.
Sedangkan pesan setelah dienkripsi disebut dengan ciphertext (disimbolkan dengan
c),pesan yang ada pada chipertext tidak bisa dibaca karena berisi karakter-karakter
yang tidak memiliki makna (arti). Kunci yang dikirimkan pengirim kepada penerima
pesan yang kemudian untuk melakukan proses dekripsi disebut dengan key
(disimbolkan dengan k). Enkripsi yaitu
Suatu algoritma dikatakan aman, bila tidak ada cara ditemukan plaintext nya.
Karena selalu terdapat kemungkinan ditemukannya cara baru untuk menembus
algoritma kriptografi, maka algoritma kriptografi yang dikatakan aman apabila
memiliki keadaan sebagai berikut (Yusuf, 2004):
proses pengubahan plaintextmenjadi
ciphertext disimbolkan dengan E(p) sedangkan dekripsi yaitu mengubahciphertext
menjadi plaintext, sehingga menghasilkan data awal/asli. disimbolkan dengan D(c)
(Schneier, 1996).
a. Bila harga untuk menjebol algoritma lebih besar daripada nilai informasi yang
dibuka, maka algoritma itu cukup aman.
b. Bila waktu yang digunakan untuk membobol algoritma tersebut lebih lama daripada
lamanya waktu yang diperlukan oleh informasi tersebut harus tetap aman, maka
algoritma tersebut mungkin aman.
c. Bila jumlah data yang dienkrip dengan kunci dan algoritma yang sama lebih sedikit
dari jumlah data yang diperlukan untuk menembus algoritma tersebut, maka
algoritma itu aman.
2.1.2 Tujuan Kriptografi
Tujuan dari kriptografi yang juga merupakan aspek keamanan informasi adalah
sebagai berikut (Menezes,et al., 1996):
1. Kerahasiaan (confidentiality) adalah layanan yang digunakan untuk menjaga isi
informasi dari semua pihak kecuali pihak yang berwenang untukmendapatkan
informasi.Confidentiality senada dengan istilah secrecy dan privacy. Ada
beberapa cara untuk menjaga kerahasiaan, dari pengamanan secara fisik hingga
penggunaan algoritma matematika yang membuat data tidak dapat dimengerti.
2. Integritasdata (data integrity) adalah layanan penjagaan pengubahan data dari
data, sistem harus mempunyai kemampuan untuk mendeteksi terjadinya
manipulasi data oleh pihak-pihak yang tidak berkepentingan. Manipulasi data
yang dimaksud di sini meliputi penyisipan, penghapusan, maupun penggantian
data.
3. Otentikasi(Authentication) adalah layanan yang berhubungan dengan identifikasi,
baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user
authentication atau entity authentication) maupun mengidentifikasi kebenaran
sumber pesan (data origin authentication). Beberapa pihak yang berkomunikasi
harus mengidentifikasi satu sama lainnya. Informasi yang didapat oleh suatu
pihak dari pihak lain harus diidentifikasi untuk memastikan keaslian dari
informasi yang diterima. Identifikasi terhadap suatu informasi dapat berupa
tanggal pembuatan informasi, isi informasi, waktu kirim dan hal-hal lainnya yang
berhubungan dengan informasi tersebut.
4. Nirpenyangkalan (non-repudiation) adalah layanan untuk mencegah pihak-pihak
yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal
melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
2.1.3 Sistem Kriptografi Klasik
Sistem kriptografi klasik digunakan beberapa abad yang lalu sebelum adanya
komputer. Penyandian pesan dilakukan karakter per karakter. Terdapat dua metode
yang dilakukan untuk menyandikan pesan pada sistem kriptografi klasik, yaitu Teknik
Substitusi dan Teknik Transposisi.Tekniksubstitusi dilakukan dengan cara
penggantian setiap karakter teks asli dengan karakter lain. Sedangkan Teknik
transposisi dilakukan pengacakan urutan karakter tanpa mengganti karakter pada
pesan tersebut (Ariyus, 2012).
2.1.4 Sistem Kriptografi Modern
Pengembangan sistem kriptografi modern didorong oleh perkembangan komputer
yang merepresentasikan data dalam bentuk bilangan biner. Sistem kriptografi modern
tidak lagi menggunakan mode karakter untuk proses enkripsi dan dekripsi, tetapi
menggunakan mode bit. Algoritma kriptografi dengan mode bit dapat dikelompokkan
menjadi dua bagian, yaitu Cipher Aliran (Stream Cipher) dan Cipher Blok (Block
Block Cipher mengenkripsi atau mendekripsikan pesan dalam bentuk blok bit dengan
panjang bit yang telah ditentukan sebelumnya (Sadikin, 2012).
2.1.5 Jenis Algoritma Kriptografi
Algoritma kriptografi dapat diklasifikasikan menjadi dua jenis berdasarkan kuncinya,
yaitu algoritma simetris dan algoritma asimetris (Prayudi, 2005).
1. Algoritma Simetris
Algoritma ini disebut simetris karena memiliki key atau kunci yang sama dalam proses
enkripsi dan dekripsi sehingga algoritma ini juga sering disebut algoritma kunci
tunggal atau algoritma satu kunci. Key dalam algoritma ini bersifat rahasia atau
private key sehingga algoritma ini biasa disebut dengan algoritma kunci rahasia
(Prayudi, 2005). Contoh algoritma simetris yaitu Beaufort, Spritz, Blowfish, Twofish,
DES(Data Encryption Standard).
2. Algoritma Asimetris
Algoritma ini disebut asimetris karena kunci yang digunakan untuk enkripsi berbeda
dengan kunci yang digunakan untuk dekripsi. Kunci yang digunakan untuk enkripsi
adalah kunci publik atau public key sehingga algoritma ini disebut dengan algoritma
kunci publik. Sedangkan kunci untuk dekripsi menggunakan kunci rahasia atau
private key (Prayudi, 2005). Contoh algoritma asimetris yaitu RSA(Riverst Shamir
Adleman), ECC(Elliptic Curve Cryptography),Elgamal.
2.2 Algoritma Beaufort
Algoritma Beaufort ditemukan oleh Laksamana Sir Francis Beaufort, Royal Navy.
Algoritma Beaufort merupakan salah satu varian dari metode Vigenère Cipher
(Widyastuti, 2014). Proses enkripsi dan dekripsi pada algoritma Beaufort
Tabel 2.1 Tabel Beaufort
Baris paling atas pada tabel 2.1 menyatakan huruf dari plaintext. Proses
enkripsi dilakukan dengan cara menarik garis vertikal dari plaintext sampai kepada
karakter key yang telah ditentukan, selanjutnya tarik garis horizontal dari karakter key
yang telah ditentukan sampai kolom pertama. Karakter pada kolom pertama tersebut
adalah ciphertext yang diperoleh. Proses dekripsi dilakukan berlawanan dengan
enkripsi. Proses ini dimulai dengan memilih ciphertext dari kolom pertama kemudian
tarik garis lurus sampai menemukan karakter key yang telah ditentukan, selanjutnya
ditarik garis vertikal ke atas dari karakter key tersebut sampai ke baris pertama.
Karakter pada baris pertama merupakan plaintext (Tassel, 1969).
Berikut adalah contoh proses enkripsi dengan menggunakan tabel 1:
Plaintext : T I A R A H M A D I A N T I
Kunci : I M I L K O M H I M A T I F
Namun, pada saat ini algoritma beaufort tidak hanya bisa mengenkripsi dan
dekripsi huruf saja tetapi angka maupun simbol-simbol yang terdapat pada tabel
ASCII bisa di enkripsi dan dekripsi. Dalam perkembangan sistem komputasi modern,
karakter atau simbol biasanya direpresentasikan dalam bentuk ASCII. Setiap karakter
atau simbol yang muncul di layar komputer memiliki kode ASCII yang berbeda dan
panjang masing-masing kode ASCII dalam biner adalah 8 bit (Budiman and
Rachmawati, 2017).
Tabel 2.2 Tabel List Karakter
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
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
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
a b c d e f g h i J k l m n o P q r s t u v w x
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
y z 0 1 2 3 4 5 6 7 8 9 sp ! " # $ % & ' ( ) * + ,
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
- . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ ¢ € £ ¥ ©
Pada tabel 2.2 menunjukkan list karakter yang akan digunakan. Adapun list karakter
yang digunakan sebanyak 100 karakter. Proses enkripsi dan dekripsi algoritma
Beaufort Cipher dirumuskan sebagai berikut:
Ci ≡ Ki−Pi
P
(mod n) --- (1)
i ≡ Ki−Ci
dimana � merupakan plaintext, � adalah key, � adalah ciphertext yang diperoleh dan � adalah jumlah karakter yang digunakan (Mollin, 2007).
(mod n) ---(2)
Berikut adalah contoh proses enkripsi dan dekripsi :
Plaintext : TIA RAHMADIANTI
Tabel 2.3 Tabel Enkripsi Beaufort
Pada tabel 2.3 dihasilkan ciphertext melalui fungsi enkripsi Beaufort. Fungsi enkipsi
Beaufort untuk menghasilkan ciphertext diperoleh dengan operasi pengurangan indeks
Pada tabel 2.4 dihasilkan plaintextseperti semula yaitu “ TIA RAHMADIANTI”
melalui fungsi dekripsiBeaufort. Fungsi dekripsiBeaufort untuk menghasilkan
plaintextdiperoleh dengan operasi pengurangan indeks kunci terhadap indeks
ciphertext.
2.3 Algoritma Spritz
Pada tahun 2014, perancang algoritma RC4, Ron Rivest, dan Jacob Schultz
merancang sebuah pembaharuan dari desain algoritma RC4 yang diberi nama Spritz
(Rivest dan Schuldt, 2014). Spritz merupakan sebuah varian dari RC4 yang
mengimplementasikan sponge-based construction dalam penghasilan kunci rahasia
dan proses enkripsi. Tingginya kompleksitas dari algoritma Spritz karena
sponge-based construction meningkatkan keamanan dari algoritma RC4. Namun, karena
algoritma Spritz meningkatkan kompleksitas dari RC4, maka waktu yang digunakan
untuk mengenkripsi sebuah data juga meningkat meskipun tingkat keamanan dari
algoritma Spritz lebih tinggi dari RC4 (Rivest dan Schuldt, 2014). Spritz termasuk
algoritma stream cipher. Stream cipher merupakan algoritma yang mengenkripsi
pesan satu per satu karakter dengan menggunakan transformasi enkripsi yang
bergantung pada waktu yang singkat. Algoritma Spritz termasuk algoritma kriptografi
kunci simetrik. Algoritma ini memiliki dua bagian utama: Key Scheduling Algorithm
(KSA) dan Pseudo-Random Generation Algorithm (PRGA).
2.3.1 Key Scheduling Algorithm (KSA)
Key-Scheduling Algorithm (KSA) pada Algoritma Spritz sama dengan algoritma RC4
yaitu menghasilkan permutasi dari 256 kemungkinan bytes yang ada pada array S.
spasi 62 spasi 62 0 A
H 7 U 20 13 N
© 99 S 18 19 T
Tabel 2.5 Key Scheduling Algorithm (KSA)
for i from 0 to 255 S[i] := i
endfor
j := 0
for i from 0 to 255
j := (j + S[i] + key[i mod keylength]) mod 256 swap values of S[i] and S[j]
endfor
Dimana S adalah permutasi 256-byte yang diinisialisasikan KSA dan variabel i dan j
merupakan variabel integer yang mempunyai nilai awal 0.
2.3.2 Pseudo-Random Generation Algorithm (PRGA)
Pseudo-Random Generation Algorithm (PRGA) berbeda dengan algoritma RC4.
Pseudo-Random Generation Algorithm(PRGA) untuk mendapatkan byte acak untuk
enkripsi.
Tabel 2.6Pseudo-Random Generation Algorithm(PRGA)
For a from 0 toplaintext-1 i = i + w
j = k + S[j + S[i]]
k = i + k + S[j]
swap S[i] with S[j]
z = S[j + S[i + S[z + k]]]
output z
EndFor
dimana w adalah relatif prima dengan panjang S. Variabel i, j, k merupakan variabel
integer yang mempunyai nilai awal 0 dan z merupakan variabel integer yang
merupakan output dan mempunyai nilai awal 0.
Tabel 2.7 Larik 256 byte hasil perhitungan tahap key scheduling
0 1 2 3 4 5 6 7 8 9 10 11 12 13
114 92 12 64 47 172 32 122 154 186 236 102 218 15
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
178 7 243 142 105 224 44 19 23 71 40 136 59 152
42 43 44 45 46 47 48 49 50 51 52 53 54 55
149 79 66 41 126 35 87 98 81 60 107 113 97 20
56 57 58 59 60 61 62 63 64 65 66 67 68 69
106 193 109 11 90 116 125 240 29 253 101 210 43 91
70 71 72 73 74 75 76 77 78 79 80 81 82 83
117 2 223 84 50 137 77 185 121 226 175 158 228 65
84 85 86 87 88 89 90 91 92 93 94 95 96 97
16 192 234 28 171 78 135 214 213 145 34 169 0 205
98 99 100 101 102 103 104 105 106 107 108 109 110 111
159 161 56 151 227 139 217 237 209 207 76 202 24 189
112 113 114 115 116 117 118 119 120 121 122 123 124 125
85 249 180 254 246 221 115 245 168 195 22 244 219 230
126 127 128 129 130 131 132 133 134 135 136 137 138 139
72 157 206 201 104 89 197 231 200 53 176 26 9 112
140 141 142 143 144 145 146 147 148 149 150 151 152 153
54 177 232 199 196 75 25 241 33 18 1 208 58 165
154 155 156 157 158 159 160 161 162 163 164 165 166 167
138 212 86 190 83 93 167 252 63 30 68 82 17 250
168 169 170 171 172 173 174 175 176 177 178 179 180 181
204 248 100 61 148 62 118 10 155 67 247 130 80 21
182 183 184 185 186 187 188 189 190 191 192 193 194 195
153 5 203 242 238 111 37 233 110 188 134 229 13 211
196 197 198 199 200 201 202 203 204 205 206 207 208 209
120 173 147 162 144 251 57 164 235 124 38 14 48 108
210 211 212 213 214 215 216 217 218 219 220 221 222 223
46 27 222 69 94 45 70 181 216 141 156 239 187 146
224 225 226 227 228 229 230 231 232 233 234 235 236 237
215 123 194 119 255 73 184 182 170 150 49 128 225 42
238 239 240 241 242 243 244 245 246 247 248 249 250 251
Misalkan pada tahap key schedulling menghasilkan larik S seperti yang
ditunjukkan oleh tabel 2.7 dan pesan yang akan dienkripsi adalah “rc4” dengan kode
ASCII 114, 99 dan 52. Ciphertext akan dihitung dengan menginisialisasikan nilai i, j,
k, z dengan nilai 0 dan w merupakan nilai acak yang relatif prima dengan 256 dan
setiap baris di modulo dengan 256. Hasil perhitungan pertama adalah:
i = i + w = 0+149 mod 256 = 149
j = k + S[j + S[i]] = 0 + S[0 + S[149]] mod 256
= 0 + S[18] mod 256
= S[18] = 183
k = i + k + S[j] = 149 + 0 + S[183] mod 256
= 149 + 5 mod 256
= 154
S[i] , S[j] = S[i] = S[149] = 18, S[j] = S[ 183] = 5
SwapS[i] withS[j] = S[i] = S[149] = 5, S[j] = S[183] = 18
z = S[j + S[i + S[z + k]]] = S[183 + S[149 + S[0 + 154]]] mod 256
= S[183 + S[149 + 138]] mod 256
= S[183 + S[31] mod 256
= S[183 + 142] mod 256
= S[69] = 91
Kemudian lakukan operasi XOR pada karakter pertama plaintext yang dihasilkan
yaitu karakter “r” yang bernilai 114 dengan output z yang dihasilkan adalah 91.
Dengan cara sebagai berikut :
114 = 01110010
91 = 01011011
= 00101001 = 41
⊕
10 dalam tabel ASCII merupakan karakter “)”.
Proses perhitungan tersebut diulang sampai karakter terakhir plaintext. Algoritma
yang sama juga digunakan untuk proses dekripsi. 252 253 254 255
2.4 Super Enkripsi
Super Enkripsi merupakan metode pengkombinasian antara kedua algoritma yang
bertujuan untuk mendapatkan cipher yang lebih kuat sehingga sangat sulit untuk
dipecahkan, dan juga untuk mengatasi penggunaan cipher tunggal yang secara
komparatif lemah (Setyaningsih.,dkk,2011).
Super enkripsi tidak mudah untuk dipecahkan karena proses enkripsinya
dilakukan sebanyak dua kali atau lebih sehingga ciphertext yang dihasilkan juga
jumlahnya sebanyak dua buah atau lebih (Halim,2007).
2.5 Kompleksitas Algoritma
Algoritma yang efisien adalah algoritma yang meminimumkan kebutuhan waktu dan
ruang. Dengan menganalisis beberapa algoritma untuk suatu masalah,dapat
diidentifikasi satu algoritma yang paling efisien. Besaran yang digunakan untuk
menjelaskan model pengukuran waktu dan ruang ini adalah kompleksitas algoritma.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi
yang dibutuhkan algoritma tersebut untuk mendapatkan hasil yang diinginkan.
Algoritma yang dapat memperoleh hasil yang diinginkan dalam waktu yang singkat
memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu
yang lama untuk memperoleh hasil tersebut mempunyai kompleksitas yang tinggi
(Azizah, 2013).
Untuk menghitung kompleksitas algoritma digunakan kode program
menggunakan tabel yang berisi kolom C, kolom # dan kolom �� #. Dimana kolom C
merupakan kolom yang menunjukkan berapa kali processor melakukan komputasi.
Kolom # menunjukkan variabel untuk menghitung pengerjaan satu baris program.
Kolom �� # untuk menghitung hasil perkalian kolom C dan kolom #.
(�)=��#�--- (3)
Hasil dari kolom �� # dijumlahkan berdasarkan persamaan (3), sehingga
2.6 Penelitian yang Relevan
Beberapa penelitian terdahulu yang relevan dengan penelitian yang akan dilakukan
oleh penulis antara lain adalah sebagai berikut:
1. Widyastuti (2012) mengimplementasikan kriptografi super enkripsi dengan
menggabungkan dua algoritma yaitu Playfair dan Vigenère Cipher
membuktikan bahwa algoritma super enkripsi ini efektif dan aman digunakan.
2. Nurnawati (2008) menganalisis kriptografi menggunakan algoritma
VigenèreCipher dengan mode operasi Cipher Block Chainng(CBC)
membuktikan bahwa algoritma Vigenère hanya menampung 26 huruf alfabet
dalam bentuk huruf kecil dan tanda baca yang lainnya tidak dapat terbaca.
3. Rivest dan Schuldt (2014) membuktikan bahwa algoritma Spritz meningkatkan
kompleksitas dari RC4, maka waktu yang digunakan untuk mengenkripsi
sebuah data juga meningkat dan tingkat keamanan dari algoritma Spritz lebih
baik dari RC4.
4. Syuhada(2016) membuktikan bahwa Algoritma RC4 merupakan algoritma
kriptografi simetris yang dalam penggunaannya memiliki keunggulan pada
kecepatan dan kemudahan dalam proses perhitungan.
5. Weerasinghe(2012) dalam penelitian nya yang berjudul Analysis of a Modified
RC4 Algorithm menyatakan bahwa algoritma yang dimodifikasi lebih baik
daripada RC4 yang asli dalam segi kerahasiaan dan performa.
6. Soofi.,et al(2016) melakukan penelitian yang berjudul An Enhanced Vigenère
Cipher For Data Security membuktikan bahwa kelemahan penting pada
algoritma Vigenère Cipher yaitu perulangan pada kunci nya. Jika kriptanalis