BAB II
TINJAUAN PUSTAKA
2.1. Kriptografi
Kriptografi adalah ilmu yang mempelajari teknik-teknik matematis yang berhubungan dengan aspek keamanan informasi seperti keabsahan, integritas data, serta autentifikasi data. Kriptografi tidak berarti hanya memberikan keamanan informasi saja, namun lebih kearah teknik-teknik untuk mengamankannya. (Wahana Komputer, 2010)
2.1.1. Terminologi
Dalam menjaga kerahasiaan data, kriptografi mengubah data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditransformasikan kembali ke dalam bentuk plaintext agar dapat dikenali. (Wahana Komputer, 2010)
Proses pengubahan dari plaintext menjadi ciphertext disebut proses Encipherment atau enkripsi (encryption), sedangkan proses mengubah kembali ciphertext disebut proses dekripsi (decryption). (Wahana Komputer, 2010)
Untuk mengenkripsi dan mendekripsi data, kriptografi menggunakan suatu algoritma dan kunci (key). Algoritma adalah fungsi matematika yang digunakan untuk mengenkripsi dan mendekripsi. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk mengenkripsi dan mendekripsi data. (Wahana Komputer, 2010)
2.2. Teknik Kriptografi
Pada umumnya terdapat dua teknik yang digunakan dalam kriptografi, yakni kunci simetrik dan kunci asimetrik (public-key). (Wahana Komputer 2010)
2.2.1. Algoritma Kriptografi Simetris
sebagai algoritma kunci rahasia, algoritma kunci tunggal atau algoritma satu kunci dan mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka dapat berkomunikasi dengan aman.(Amanda Lilda Ramadayanti, 2008)
Gambar 2.1. Kriptografi Simetris (Amanda Lilda Ramadayanti, 2008)
Algoritma kriptografi simetris dibagi menjadi dua kategori yaitu algoritma aliran (Stream Cipher) dan algoritma blok (Block Cipher). Pada algoritma aliran, proses penyandiannya berorientasi pada satu bit atau satu byte data. Sedangkan pada algoritma blok, proses penyandianya berorientasi pada sekumpulan bit atau byte data (per blok). (Wahana Komputer, 2010)
2.2.2. Algoritma Kriptografi Asimetris
Algoritma Kriptografi Asimetris merupakan algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Algoritma ini disebut juga algoritma kunci umum (public key algorithm) karena kunci untuk enkripsi dibuat umum (public key) atau dapat diketahui oleh setiap orang, tapi kunci untuk dekripsi hanya diketahui oleh orang yang berwenang saja atau sering disebut kunci pribadi (private key). (Wahana Komputer, 2010)
2.3. Sistem Kriptografi Vernam Cipher
Vernam Cipher ditemukan oleh Gilbert Sandford Vernam (1890-1960) yang juga seorang penemu stream cipher pada tahun 1917. Vernam berkerja di suatu perusahaan bernama Bell Labs, dia memiliki hak paten yang menjelaskan tentang sebuah cipher dengan kunci yang telah disiapkan pada sebuah pita kertas, kemudian dikombinasikan dengan sebuah plaintext untuk menghasilkan sebuah pesan ciphertext yang dapat ditransmisikan. Pita yang sama kemudian digunakan pula untuk mendekripsikan ciphertext.
Vernam cipher merupakan stream cipher yang didefenisikan pada sebuah alfabet. Sebuah pesan binaryM1, M2, M3, …, Mt dioperasikan dengan kunci string binaryK1, K2, K3, …, Kt yang memiliki panjang yang sama untuk menghasilkan sebuah string ciphertextC1, C2, C3, …, Ct. (Dhiren R. Patel, 2008)
2.3.1. Algoritma Vernam Cipher
Rumus dasar untuk menghitung vernam cipher dalam mode binary dapat di tuliskan sebagai berkut :
Ci = Pi+ Ki(mod n) ………..………... (2.1) Keterangan :
Ci = Ciphertext Pi = Plaintext Ki = Kunci
n = Banyaknya jumlah karakter yang digunakan
Algoritma yang digunakan untuk vernam cipher dapat dinyatakan sebagai berikut:
1. Misalkan setiap alfabet plaintext sebagai sebuah urutan nomor yang meningkat, contoh A=0, B=1, …, Z=25.
2. Lakukan hal yang sama untuk setiap karakter input plaintext
3. Tambahkan setiap nomor yang bersangkutan dari alfabet plaintext kepada nomor alfabet kunci yang bersangkutan.
4. Jika hasil yang dikeluarkan melebihi 26, modulo hasilnya dengan 26.
5. Terjemahkan setiap nomor hasil yang didapat tadi kembali kedalam alfabet yang bersangkutan. Hal ini akan memberikan outputciphertext. (Kahate, 2013)
2.3.2. Enkripsi Vernam cipher
Secara matematis proses enkripsi plaintext (M) menjadi ciphertext (C) menggunakan kunci rahasia (k) dapat dinyatakan sebagai berikut :
C = M + k (mod n) …….……….……….……….….. (2.2) Keterangan :
C = Ciphertext
M = Message / Plaintext k = Key / Kunci
n = Banyaknya jumlah karakter yang digunakan
2.3.3. Dekripsi Vernam cipher
Proses dekripsi ciphertext (C) menjadi plaintext (P) menggunakan kunci rahasia (k) dapat dinyatakan sebagai berikut :
M = C – k (mod n) ..……….……….…....… (2.3) Keterangan :
M = Message / Plaintext C = Ciphertext
k = Key / Kunci
2.4. Sistem Kriptografi Data Encryption Standard (DES)
Pada tahun 1972 sebuah perusahaan National Bureau Standard (NBS) di Amerika Serikat, yang sekarang dikenal sebagai National Institute of Standard and Technology (NIST), memulai sebua projek untuk mengamankan data dan komunikasi komputer. Mereka ingin mengembangkan algoritma kriptografi tunggal. Setelah dua tahun, NBS menyadari bahwa IBM’s Lucifer dapat menjadi kandidat yang bagus, dari pada mengembangkan algoritma baru dari awal. Setelah beberapa diskusi, pada tahun 1975 NBS mengumumkan detail dari algoritma tersebut. Pada akhir tahun 1976, pemerintah federal Amerika Serikat mengadopsi algoritma ini dan kemudian mengganti namanya menjadi Data Encryption Standard (DES). (Atul Kahate, 2013)
DESmerupakan blockcipher simetris yang beroperasi pada blok 64 bit yang menggunakan sebuah kunci 56 bit. DES mengenkripsi data dalam blok 64 bit. Input dari dari algoritma ini adalah blok plaintext sepanjang 64 bit dan menghasilkan output blok ciphertext sepanjang 64 bit pula, yang didapat setelah dilakukan 16 kali putaran dari operasi pengulangan yang sama. (Man Young Rhee, 2003)
Seperti algoritma lainya, algoritma ini mempunyai dua input pada fungsi enkripsinya: sebuah plaintext 64 bit yang akan di enkrispi dan sebuah kunci 56 bit. Hal yang paling utama yang diperlukan untuk membangun blok-blok dari plaintext adalah kombinasi dari permutasi dan subtitusi pada blok plaintext. Subtitusi didapatkan dari pencarian pada TabelS-boxes. Pada algoritma DES Enkripsi dan dekripsi menggunakan algoritma yang sama namun dalam urutan yang terbalik. (Man Young Rhee, 2003)
2.4.1. Algoritma Data Encryption Standard
Gambar 2.3. Skema Algoritma DES (Atul Kahate, 2013)
1. Pada tahap pertama, permutasikan sebuah blok 64 bit plaintext dengan TabelInitial Permutation (IP).
2. Setelah itu akan didapatkan plaintext hasil initial permutation (IP).
3. Selanjutnya bagi hasil dari initial permutation tadi menjadi dua bagian, yaitu bagian kiri (L) dan bagian kanan (R).
4. Kemudian lakukan proses enkripsi sebanyak 16 kali putaran pada tiap bagian kiri (L) dan kanan (R) dengan kunci masing-masing.
5. Terakhir gabungkan bagian kiri (L) dan kanan (R) dan lakukan permutasi terakhir menggunakan TabelFinal Permutation (FP) / Invers Initial Permutation (IP-1). 6. Proses ini akan menghasilkan ciphertext. (Atul Kahate, 2013).
2.4.2. Pembangkitan kunci Internal
Misalnya Kunci Eksternal (KE) yang tersusun dari 64 bit. Kunci eksternal ini menjadi masukan untuk proses permutasi dengan menggunakan matriks permutasi kompresi (PC-1).
Proses selanjutnya lakukan permutasi dari matriks kunci eksternal 64 bit terhadap
Permutation Choice (PC-1). (Nimmi Gupta, 2012)
�� −1 = �
Dalam permutasi ini, tiap bit ke delapan (parity bit) diabaikan. Hasil permutasinya
adalah sepanjang 56 bit dibagi menjadi 2 bagian kiri dan kanan yang masing masing
panjangnya 28 bit, yang masing-masing disimpan dalam C0 dan D0: (Rifkie Primartha, 2011)
C0 berisi bit-bit dari K pada posisi :
Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu atau dua bit
tergantung pada tiap putaran. Operasi pergeseran bersifat wrapping atau round shift. (Rifkie
Primartha, 2011). Setiap pasang blok Cn dan Dn, dibentuk dari pasang blok sebelumnya Cn-1
dan Dn-1masing-masing, untuk n = 1, 2, .., 4 menggunakan pergeseran left shift. Untuk
melakukan left shift , geser setiap satu bit ke kiri, kecuali untuk bit yang pertama, dimana bit
tersebut akan di pindahkan ke bagian akhir dari blok. Artinya C3 dan D3, diperoleh dari
pergeseran left shift C2 dan D2, C4 dan D4 diperoleh dari C3dan D3, begitu seterusnya. (Nimmi
Tabel 2.1. Jumlah pergeseran biat tiap putaran (Man Young Rhee, 2003)
Round
number 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Number of
left shift 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Setelah proses pergeseran bit (Cn, Dn) lakukan permutasi kompresi 56 bit menjadi 48 bit
dengan menggunakan matriks permutation choice 2 (PC-2). (Nimmi Gupta, 2010)
�� −2 = �
14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
�
Jadi setiap kunci internal Knmempunyai panjang 48 bit. Proses pembangkitan
kunci-kunci internal ditujukkan pada Gambar2.4. Bila jumlah pergeseran bit-bit pada Tabel 2.1
dijumlahkan maka akan menghasilkan jumlah 28, yang sama dengan jumlah bit pada Cn dan
Dn. Karena itu, setelah putaran ke-16 akan didapatkan kembali C16 = C0 dan D16 = D0. (Rifkie
Primartha, 2011)
2.4.3.Enkripsi DES
Proses awal yang dilakukan dalam enkripsi adalah Permutasi Awal (Initial Permutation, IP).
Pengacakan dilakukan dengan menggunakan Matriks Initial Permutation.
�� = �
Proses enciphering terhadap blok plaintext dilakukan setelah permutasi awal. Setiap blok plaintext mengalami 16 kali putaran enciphering (Rifkie Primartha, 2010). Secara matematis, satu putaran DES dinyatakan sebagai (Nimmi Gupta, 2012):
Ln = Rn-1 ………..…………....……….. (2.4)
Kemudian setiap blok Rn-1di ekspansi dari 32 bit menjadi 48 bit. (Jin-Woo Park, 2007) Berikut matriks permutasi Ekspansi (E) (Man Young Rhee, 2003):
�=
E(Rn-1) ⊕ Kn = A ……….………..………... (2.6) A = (B1)(B2)(B3)(B4)(B5)(B6)(B7)(B8).……….... (2.7) Keterangan :
E =Fungsi ekspansi
Rn = Right permutation ke – n
Kn = Key permutation
A = Vektor hasil XOR yang panjangnya 48 bit
B1,…,B1 6 = Bit hasil XOR yang dikelompokan masing-masing 6 bit
Fungsi f di dapat dari mengimplementasikan permutasi pada bit-bit vektor A sebagai berikut (Jin-Woo Park, 2007):
f = P(S1(B1)S2(B2),…,S8(B8))……… (2.8) Keterangan :
f = Fungsi permutasi f P = Permutasi kotak – P S1,…,S8 = Subtitusi kotak – S
B1,…,B16 = Bit hasil XOR yang dikelompokan menjadi 6 bit
Vektor A dikelompokkan menjadi 8 kelompok, masing-masing 6 bit, dan menjadi masukan bagi proses subtitusi. Proses subtitusi dilakukan dengan menggunakan delapan kotak-S (S-boxes), S1sampai S8. Setiap kotak-S menerima masukan 6 bit dan menghasilkan keluaran 4 bit. Kelompok 6 bit pertama menggunakan S1, kelompok 6 bit kedua menggunakan S2, dan seterusnya. (Rifkie Primartha, 2011) Kotak-S dapat dilihat pada Tabel 2.
Tabel 2.2. Matriks Kotak-S (Man Young Rhee, 2003)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
Hal pertama yang harus dilakukan adalah menuliskan kembali bit-bit vektor A dan kemudian kelompokkan bit-bit tersebut menjadi 8 kelompok yang masing-masing kelompok terdiri dari 6 bit.
Kotak-S menerima masukan 6 bit dan menghasilkan keluaran 4 bit, bit pertama dan terakhir dari masukan menggambarkan sebuah angka desimal dari range 0 sampai 3 (00 sampai 11) misalkan i. 4 bit pertengahan menggambarkan sebuah angka desimal dari range 0 sampai 15 (0000 sampai 1111) misalkan j. Kemudian lihat Tabel kotak-S, carilah angka yang didapat dari kolom i dan baris j. Kemudian ubah angka desimal yang didapat ke dalam binary. (Nimmi Gupta, 2012)
Setelah didapat hasil dari kotak-S, maka selanjutnya dilakukan proses permutasi yang bertujuan untuk mengacak hasil proses subtitusi kotak-S. Permutasi dilakukan dengan matriks permutasi kotak-P (P-box). (Rifkie Primartha, 2011)
� = Ln-1 untuk mendapatkan Rn menggunakan rumus (8.5) (Rifkie Primartha, 2011)
Langkah terakhir setelah dilakukan 16 kali putaran, gabungkan blok kiri (L16) dan blok kanan (R16), kemudian lakukan proses permutasi menggunakan Matriks Permutasi Awal Balikan (Invers Initial Permutation, IP-1). (Nimmi Gupta, 2010)
2.4.4. Dekripsi DES
Proses dekripsi DES menggunakan proses yang sama dengan enkripsi. Proses dekripsi DES menggunakan ciphertext sebagai inputan, tetapi gunakan kunci Kn dalam urutan yang terbalik. Misalnya gunakan kunci K16 untuk iterasi yang pertama, K15 untuk iterasi kedua, sampai K1 untuk iterasi yang terakhir. (Naveen Kumar, 2012) Secara matematis dapat dituliskan sebagai berikut (Nimmi Gupta, 2012) :
Ln = Rn-1 ………..………..…….…….… (2.8) Rn = Ln-1 ⊕ f(Rn-1, Kn) ……….………..….. (2.9) Keterangan :
Ln = Left permutation Ke – n Rn = Right permutation Ke – n Kn = Key permutation Ke – n f = Fungsi permutasi f
Jika pada proses enkripsi urutan kunci yang digunakan adalah K1, K2, …, K16, maka untuk proses dekripsi urutan kunci yang digunakan adalah K16, K15, …, K1. Masukan awalnya adalah R16 dan L16 untuk deciphering. Blok R16dan L16diperoleh dengan melakukan permutasi ciphertextdengan matriks permutasi IP-1. (Rifkie Primartha, 2011)
2.5. Sistem Operasi Android
Pada tahun 2005, Google mengakuisisi sebuah perusahaan kecil yang didirikan oleh Andy Ruben yang bernamaDanger, Inc. Danger merupakan sebuah perusahaan yang membuat ponsel dengan merek T-Mobile. Pada awalnya pengembangan Androidsama sekali tidak diketahui. Perusahaan Danger memang dikenal membuat software mobile, tetapi Google tidak pernah memberikan keterangan atau rencana bahwa Android akan dikembangkan. (Marziah Karch, 2010)
operator selular, software developers, perusahaan perangkat keras, dan komponen. (Marziah Karch, 2010)
Sejak diakuisisi oleh Google dan diterapkan ke dalam sebuah perangkat mobile, OS Android dikembangkan dengan kode yang dinamai berdasarkan nama dessert (pencuci mulut) dan diurut berdasarkan alfabet, seperti Cupcake (OS Android 1.5), Donut (OS Android 1.6), Eclair (OS Android 2.0 – 2.1), Froyo (OS Android 2.2 –
2.2.3), Gingerbread (OS Android 2.3–2.3.7), Honeycomb (OS Android 3.0–3.2.6), Ice
Cream Sandwich (OS Android 4.0–4.0.4), Jelly Bean (OS Android 4.1–4.3), KitKat
(OS Android 4.4+), Lollipop (OS Android 5.0) dan Marshmallow (OS Android 6.0).
2.6. Chatting / Messaging
Di dunia Internet, chatting (mengobrol) merupakan komunikasi tertulis secara online melalui media internet. Komunikasi tersebut umumnya dilakukan dengan cara mengetikkan kata-kata yang ingin di sampaikan dengan mitra bicara.
Ada beberapa cara dalam melakukan chatting, yaitu melalui halaman Web dan menggunakan program aplikasi tertentu. Banyak situs yang menyediakan fasilitas untuk chatting dalam bentuk Webchatting, seperti Yahoo! Messenger, MSN Messenger, ICQ, Plasa Messenger, dan sebagainya. (Era Retnoningsih, 2007)
2.7. Skema Encoding Base64
Gambar 2.5. Konversi Byte ke dalam base64 (Knudsen, 1998)
Encoding base64 selalu merentangkan inputan data menjadi kelipatan 24 bit (3 byte). Berikut beberapa contoh algoritma base64 :
Inputan kelipatan dari 3 byte. Dalam hal ini, tidak memerlukan perentangan.
Inputan memiliki extra satu bit. Byte ini kemudian dibagi menjadi 2 digit base64, dan dua digit perentangan ditambahkan ke tiap akhir dari digit base64.
2.8. Penelitian yang relevan
Berikut ini beberapa penelitian tentang kriptografi yang berkaitan dengan Algoritma Vernam Cipher dan Data Encryption Standard(DES) :
No Nama/Tahun Judul Hasil Penelitian 1. Rio Auditya
Semakin banyak pesan teks, maka semakin lama waktu yang dibutuhkan untuk proses enkripsi dan dekripsi.
2. M. Yuli Andri tidak akan mengetahui algoritma apa yang digunakan pada berkas tersebut.
3. Amanda Lilda Ramadayanti (2008)
Analisa Algoritma Vernam (OTP)