TINJAUAN PUSTAKA
2.1 Kriptografi
Kriptografi adalah ilmu untuk mempelajari penulisan secara rahasia dengan
tujuan bahwa komunikasi dan data dapat dikodekan (encode/encrypt) dan
dikodekan (decode/decrypt) kembali untuk mencegah pihak-pihak lain yang ingin
mengetahui isinya. Kriptografi (Cryptography) berasal dari bahasa Yunani yaitu
dari kata kryptos yang artinya tersembunyi. Kriptografi dapat diartikan sebagai
tulisan yang dirahasiakan atau suatu ilmu yang mempelajari bagaimana sebuah
data, informasi dan dokumen dikonversi kebentuk tertentu yang sulit untuk
dimengerti (Sadikin, 2012).
Proses yang dilakukan untuk mengubah plaintext menjadi ciphertext disebut
enkripsi (encryption) atau encipherment sedangkan proses untuk mengubah
ciphertext kembali ke plaintext disebut dekripsi (decryption) atau decipherment.
Kriptografi memerlukan parameter untuk proses konversi yang dikendalikan oleh
beberapa kunci. Kriptografi saat ini telah menjadi salah satu syarat penting dalam
keamanan teknologi informasi terutama dalam pengiriman pesan rahasia.
Beberapa istilah yang harus diketahui yaitu:
1. Pesan, Plainteks, dan Cipherteks
Pesan adalah data atau informasi yang dapat dibaca dan dimengerti
maknanya. Pesan dapat berupa data atau informasi yang dikirim (melalui
saluran telekomunikasi atau sejenisnya). Pesan yang tersimpan tidak hanya
berupa teks, tetapi juga berbentu citra (mage), suara/bunyi (audio), atau
berkas biner lainnya. Agar pesan tidak dapat dimengerti maknanya oleh
pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat
dipahami.
2. Enkripsi dan Dekripsi
6
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi
(encryption). Sedangkan proses mengembalikan cipherteks menjadi
plainteks semula dinamakan dekripsi (decryption).
3. Cipher dan Kunci
Algoritma kriptografi disebut juga cipher yaitu aturan untuk enciphering
dan deciphering. Konsep matematis yang mendasari algoritma kriptografi
adalah relasi antara dua buah himpunan yaitu himpunan yang berisi elemn-
elemn plainteks dan himpunan yang berisi cipherteks. Dalam kriptografi
modern, enkripsi dan dekripsi merupakan fungsi yang memetakan elemen-
elemen antara kedua himpunan tersebut dalam hal ini algoritma tidak lagi
dirahasiakan, tetapi kunci harus dijaga kerahasiannya. Kunci adalah
parameter yang digunakan untuk transformasi enciphering dan deciphering.
Keamanan algoritma kriptografi diukur dari banyaknya kerja yang
dibutuhkan untuk memecahkan cipherteks menjadi plainteksnya tanpa
mengetahui kunci yang digunakan (Munir, 2006).
7
untuk berkomunikasi dengan maksud untuk memecahkan cipherteks. Nama
lain peyadap: enemi, adversary, intruder, interceptor, bad guy.
6. Kriptanalisis dan Kriptologi
Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang
berlawanan yaitu kriptanalisis. Kriptanalisis (cryptanalysis) adalah ilmu dan
seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui
kunci yang digunakan. Pelakunya disebut kriptanalisis. Jika seorang
kriptografer (cryptographer) mentransformasikan plainteks menjadi
cipherteks dengan suaatu algoritma dan kunci maka sebaliknya seorang
kripatanalisis berusaha untuk memecahkan cipherteks tersebut untuk
menemukan plainteks atau kunci. Kriptologi (cryptologi) adalah studi
mengenai kriptografi dan kriptanalisis. Baik kriptografi dan kriptanalisis
keduanya saling berkaitan (Munir, 2006).
8
1. Kunci umum (public key): kunci yang boleh diketahui semua
orang(dipublikasikan).
2. Kunci rahasia (private key): kunci yang dirahasiakan (hanya boleh
diketahui olehsatu orang saja). Kunci –kunci tersebut berhubungan
satu sama lain. Dengan kunci public orang dapat mengenkripsi pesan
tetapi tidak bisa mendekripsinya. Hanya orang yang memiliki kunci
rahasia yang dapat mendekripsi pesan tersebut.
3. Hash Function
Fungsi HASH adalah fungsi yang menerima masukan string yang
panjangnya sembarang dan mengonversinya menjadi string keluaran
yang panjangnya tetap (fixed), yang umumnya berukuran jauh lebih
kecil dari pada ukuran semula.
Pada tugas akhir ini penulis menerapkan algoritma simetri pada aplikasi
yang dibuat ini, untuk enkripsi plaintext dan dekripsi ciphertext menggunakan
algoritma Vernam cipher dan RC4 sehingga kunci yang digunakan harus sama
untuk enkripsi dan dekripsi.
9
Vernam cipher merupakan stream cipher yang didefenisikan pada sebuah
alfabet. Sebuah pesan binary M1, M2, M3, ..., Mt dioperasikan dengan kunci
string binary K1, K2, K3, ..., Kt yang memiliki panjang yang sama untuk
menghasilkan sebuah string ciphertext C1, C2, C3, ..., Ct.
Rumus dasar untuk menghitung vernam cipher dalam mode binary dapat di
tuliskan sebagai berkut (Pratika Sari Eka, 2018):
𝐶𝑖 = 𝑃𝑖 + 𝐾𝑖 (𝑚𝑜𝑑 𝑛) … … … … … … … … … … … … … … … … … … … … … . . . .
(2.1)
Keterangan :
Ci = Cipherrtext
Dimana Ci adalah digit binary dari ciphertext, Pi adalah digit binary dari
plaintext, sedangkan Ki adalah bit binary dari kunci, dan + adalah operasi
penjumlahan.
𝐶 = 𝑀 + 𝑘 (𝑚𝑜𝑑 𝑛) … … … … … … … … … … … … … … … … … … … . . … … … .
(2.2)
Keterangan :
Keterangan :
10
Oleh karena operasi penjumlahan modulo berdasarkan nanjang “n” maka
persamaan rumus enkripsi diatas menggunakan operator XOR dapat ditulis sebagai
berikut:
𝐶𝑖 = 𝑃𝑖 ⊕ 𝐾𝑖 … … … … . . … … … … … … … … … … … … … … … … … … … … … …
(2.4)
Dimana:
𝐶𝑖 : ciphertext
𝑃𝑖 : plaintext 𝐾𝑖
: key
𝑃𝑖 = 𝐶𝑖 ⊕ 𝐾𝑖 … … … … . . … … … … … … … … … … … … … … … … … … … … … …
(2.5)
Dimana:
𝑃𝑖 : plaintext
𝐶𝑖 : ciphertext
𝐾𝑖 : key
11
Proses inisialisasi S-Box (Array S):
For i = 0 to 255
S[i]= i
Keterangan: i:
Indeks S[i]:
nilai indeks
3. Menyimpan key dalam key byte array. Pada tahapan ini, key (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.
Proses inisialisasi S-Box (Array K):
Array Key // Array dengan panjang key “length”.
For i= 0 to 255 K[i]=
Key [i mod length]
Keterangan:
Key: array kunci
K[i]: nilai kunci
4. Permutasi pada S-Box. Pada tahapan ini, akan dibangkitkan nilai
pseudorandom yang akan dijadikan aturan untuk permutasi pada
SBox.
Langkah pengacakan S-Box:
i= 0 ; j= 0 for i= 0 to 255
{
j = ( j + S[i] + K[i] ) mod n.... ..........................................................(2.6)
swap S[i] dan S[j]............................................................................ (2.7)
Keterangan : i dan j:
memberi nilai inisial n:
array panjang teks
5. Pada tahapan ini akan dihasilkan nilai pseudorandom yang akan
dikenakan operasi XOR untuk menghasilkan ciphertext ataupun
sebaliknya yaitu untuk menghasilkan plaintext.
Membuat pseudorandom byte:
12
i = (i+1) mod n..................................................................................
(2.8) j = (j+S[i]) mod
n..............................................................................(2.9) swap S[i]dan
S[j] ...........................................................................(2.10) t = (S[i]
+S[j]) mod n.......................................................................(2.11)
K = S[t]
Keterangan :
t: kunci yang dihasilkan
n: array panjang teks
6. Byte K di-XOR-kan dengan plaintext untuk menghasilkan ciphertext
atau di-XOR-kan dengan ciphertext untuk menghasilkan plaintext.
2.4 Android
Android merupakan sebuah sistem operasi pada handphone yang bersifat
terbuka dan berbasis pada sistem operasi Linux. Android bisa digunakan oleh
setiap orang yang ingin menggunakannya pada perangkat mereka. Android
menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi
mereka sendiri yang akan digunakan untuk bermacam peranti bergerak. Awalnya,
Google Inc. membeli Android Inc., pendatang baru yang membuat peranti lunak
untuk ponsel. Kemudian untuk mengembangkan Android, dibentuklah Open
Handset Alliance, konsorsium dari 34 perusahaan peranti keras, peranti lunak, dan
telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcomm, T-Mobile,
dan Nvidia (Nasruddin Safaat h, 2012).
Dengan demikian penulis dapat mengartikan android adalah sistem operasi
untuk telepon seluler berbasis Linux. Android juga menyediakan platform terbuka
bagi para pengembang untuk membangun aplikasi yang dapat dijalankan di
berbagai macam telepon seluler.
13
Gambar 2.2 Arsitektur Sistem Operasi Android (Burnette, 2010)
1. Layer Kernel
Sistem operasi Android dikembangkan dari GNU / kernel Linux, diciptakan
oleh Linus Torvald ketika ia masih menjadi mahasiswa di Universitas
Helsinki pada tahun 1991. Android dapat dimasukkan ke berbagai
perangkat, hal ini karena GNU / Linux mendukung kernel yang memiliki
lapisan abstraksi perangkat keras. Selain itu, dengan GNU / kernel Linux
juga mendukung manajemen memori, manajemen proses, jaringan dan jenis
servis lainnya.
2. Layer Runtime
Lapisan di atas kernel adalah Android runtime, termasuk mesin virtual
Dalvik (Dalvik VM) dan library inti Java. Dalvik VM adalah implementasi
Java dari Google, dioptimalkan untuk perangkat mobile. Semua kode yang
ditulis untuk Android akan ditulis di Java dan dijalankan dalam Virtual
Machine. Dalvik berbeda dari Java tradisional dalam dua hal penting:
1. Dalvik VM menjalankan .dex file, yang dijabarkan pada waktu
kompilasi dari standar file .class dan .jar. File .dex adalah lebih
kompak dan efisien daripada file .class, suatu pertimbangan penting
untuk memori terbatas dan perangkat bertenaga baterai yang berbasis
Android.
2. Library Java core yang datang dengan Android berbeda dari pustaka
Java Standard Edition (Java SE) dan Java Mobile Edition (Java ME).
3. Layer Aplikasi dan Widgets
14
Lapisan teratas dalam diagram arsitektur Android adalah Applications and
Widgets. Applications adalah program yang dapat mengambil alih seluruh
layar dan berinteraksi dengan pengguna. Di sisi lain, Widget (kadang-
kadang disebut gadget), hanya beroperasi di sebuah persegi panjang kecil
dari aplikasi layar Home. (Burnette, 2010).
15
bersifat mencoba semua fungsi dengan memakai perangkat lunak apakah sesuai
dengan spesifikasi yang dibutuhkan. Kasus uji yang dibuat untuk melakukan
pengujian Black Box testing harus dibuat dengan kasus benar dankasus salah.
Beberapa kata kunci dalam pengujian perangkat lunak yang dapat
diperhatikan, yaitu (Simarmata, 2009):
1. Dinamis
Pengujian perangkat lunak dilakukan pada masukan yang bervariasi.
Masukan ini ditentukan sebelum pengujian dilakukan dengan batasan yang
disesuaikan dengan kemampuan perangkat lunak. Masukan tidak harus
sesuatu yang dimungkinkan terjadi pada penggunaan program lebih lanjut,
melainkan meliputi keseluruhan batasan yang dapat dijangkau perangkat
lunak dan dilakukan pemercontohan (sampling) secara acak untuk proses
pengujian.
2. Terbatas
Meskipun pengujian dilakukan pada perangkat lunak sederhana sehingga
rumit sekalipun, pengujian dilakukan dengan memenuhi batasan-batasan
tertentu sesuai dengan kemampuan program. Batasan ini juga diberlakukan
pada masukan-masukan yang dipilih untuk pengujian. Tidak semua
kemungkinan masukan diujika pada perangkat lunak karena akan memakan
waktu yang cukup panjang mengingat begitu banyaknya kemungkinan yang
bisa terjadi. Untuk mengatasi hal ini, pemilihan masukan-masukan pada
proses pengujian secara acak yang diperkirakan mampu memenuhi
kebutuhan pengujian perangkat lunak akan dilakukan.
3. Tertentu
Pengujian dilakukan dengan batasan tertentu disesuaikan dengan harapan
pada fungsi, respon, dan karakteristik perangkat lunak tersebut. Batasan
tersebut akan disesuaikan dengan teknik-teknik pengujian yang ada.
Pemilihan kriteria pengujian yang paling tepat merupakan hal yang
kompleks. Dalam praktiknya, analisis risiko pengujian dan pengalaman
terhadaop pengujian-pengujian sejenis akan diperlukan.
4. Harapan
Kata kunci ini memiliki keadaan-keadaan yang diharapkan, baik berupa
respon sistem terhadap masukan maupun karakteristik responnya. Dalam hal
16
ini, batasan-batasan hasil pengujian yang diharapkan harus ditentukan.
Dengan demikian, dapat diketahui apakah perangkat lunak tersebut telah
memenuhi hasil pengujian yang diharapkan atau memerlukan pembenahan
kembali, baik berupa perbaikan maupun pengembangan perangkat lunak.
Dapat dilihat pada gambar 2.2 dibawah ini merupakan contoh sederhana
gambar tabel Black Box testing:
Gambar 2.4 Contoh Tabel Pengujian Enkripsi (Muhammad Eka Putra, 2017)
17
Berikut ini merupakan contoh tabel uji dekripsi, dapat dilihat pada gambar
2.4 dibawah ini:
Gambar 2.5 Contoh Gambar Uji Dekripsi (Muhammad Eka Putra, 2017)
18
Keuntungan menggunakan metode waterfall adalah prosesnya lebih
terstruktur, hal ini membuat kualitas software baik dan tetap terjaga. Dari sisi user
juga lebih menguntungkan, karena dapat merencanakan dan menyiapkan
kebutuhan data dan proses yang diperlukan sejak awal. Penjadwalan juga menjadi
lebih menentu, karena jadwal setiap proses dapat ditentukan secara pasti.
Sehingga dapat dilihat jelas target penyelesaian pengembangan program. Dengan
adanya urutan yang pasti, dapat dilihat pula perkembangan untuk setiap tahap
secara pasti. Dari sisi lain, model ini merupakan jenis model yang bersifat
dokumen lengkap sehingga proses pemeliharaan dapat dilakukan dengan mudah.
19