Bab II ini berisi tentang pembahasan teori-teori tentang kriptografi, algoritma VigeneredanData Encrytpion Standard.
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).
Kriptografi adalah ilmu mengenai tekhnik enkripsi dimana data diacak menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi (Kromodimoeljo, 2010).
2.1.1. Terminologi
Ketika seorang pengirim ingin mengirimkan suatu pesan kepada si penerima, dimana si pengirim ingin pesan yang disampaikannya tidak dapat dibaca oleh orang lain yang ingin melakukan penyadapan. Dalam kriptografi pesan asli biasa disebut plaintext dan pesan yang disamarkan disebut ciphertext. Proses menyamarkan pesan sedemikian rupa untuk menyembunyikan substansinya disebut enkripsi. Sebuah pesan yang dienkripsi disebut ciphertext. Proses untuk mengubah ciphertextkembali ke plaintextadalah dekripsi (Mollin,2007).
Pada standar ISO 7498-2 menggunakan istilah encipher untuk proses enkripsi dan decipher untuk proses dekripsi. Skema rangkaian proses enkripsi dan dekripsi ditunjukkan secara umum pada Gambar 2.1.
matematika yang meliputi kriptografi dan kriptanalisis adalah kriptologi dan praktisinya disebut kriptologis (Munir, 2006).
Gambar 2.1. Skema Proses enkripsi dan dekripsi (Schneier, 1996)
2.1.2. Komponen Kriptografi
Dalam kriptografi terdapat beberapa istilah penting antara lain : 1. Pesan, Plaintext, dan Ciphertext
Pesan merupakan data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plaintext. Pesan dapat berupa data atau informasi yang dikirim atau yang disimpan dalam media penyimpanan. Pesan yang tersimpan bisa berbentuk teks, citra (image), suara/bunyi (audio) dan video. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain maka, pesan dapat disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut ciphertext.
2. Pengirim dan Penerima
Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitasnya yang lain. Penerima (receiver) adalah entitas yang menerima pesan. Entitas di sini dapat berupa orang, mesin (komputer), kartu kredit, dan sebagainya.
3. Enkripsi dan Dekripsi
Proses menyandikan pesan asli (plaintext) menjadi pesan tersandi (ciphertext) disebut enkripsi (encryption) sedangkan proses untuk mengembalikan pesan tersandi (ciphertext) menjadi plaintextsemula dinamakan dekripsi (decryption).
4. Cipher dan Kunci
Algoritma kriptografi disebut juga cipher yaitu aturan untuk enchipering dan
Enkripsi Dekripsi
dibutuhkan untuk memecahkan ciphertext menjadi plaintext tanpa mengetahui kunci yang digunakan. Kunci (key) merupakan parameter yang digunakan untuk transformasi enciphering dan deciphering. Kunci biasanya berupa string atau deretan bilangan.
5. Sistem kriptografi
Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi. Sistem kriptografi (cryptosystem) terdiri dari algoritma kriptografi, semua plaintext dan ciphertextyang mungkin dan kunci.
6. Penyadap (eavesdropper)
Penyadap merupakan orang yang mencoba menangkap pesan selama ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi sebanyak-banyaknya mengenai sistem kriptogafi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan ciphertext. Nama lain penyadap : enemy, adversary, intruder, interceptor, bad guy.
7. Kriptanalisis
Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang berlawanan yaitu kriptanalisis (Munir, 2006). kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan ciphertextmenjadi plaintexttanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis.
2.1.3. Tujuan Kriptografi
Kriptografi bertujuan untuk memberikan layanan keamanan (Paar & Pelzl, 2010) sebagai berikut:
1. Kerahasian (Confidentiality)
Informasi dirahasiakan dari semua pihak yang tidak berwenang. 2. Keutuhan Data (Integrity)
3. Autentikasi (Anthentication)
Kepastian terhadap identitas setiap entitas yang terlibat dan keaslian sumber data. 4. Nirpenyangkalan
Setiap entitas yang berkomunikasi tidak dapat menolak atau menyangkal atas data yang telah dikirim atau diterima.
2.2. Jenis-Jenis 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).
Karakteristik kriptografi dibagi dua berdasarkan tipe operasi yang dipakai untuk enkripsi dan dekripsi (teknik substitusi dan teknik permutasi) serta berdasarkan tipe pengolahan pesan (block cipherdan stream cipher) (Sadikin, 2012).
2.2.1. Algoritma Simetris
Algoritma simetris adalah algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya (Wandani, 2012). Bila mengirim pesan dengan 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.
Gambar 2.2. Skema kriptografi simetris
2.2.2. Algoritma Asimetris
Algoritma asimetris disebut juga dengan kriptografi kunci publik karena algortima ini memiliki kunci yang berbeda untuk enkripsi dan dekripsi, dimana enkripsi menggunakan public keydan untuk dekripsinya menggunakan private key. Public key dan private key harus saling berpasangan secara matematis. Dengan memberikan public key, pembuat kunci berhak memberikan dan mendapatkan public key agar pesan aman dan hanya bisa dibaca oleh si pembuat kunci. Dalam kriptografi kunci asimetri, hampir semua algoritma kriptografinya menggunakan konsep kunci publik, seperti Rivest-Shamir-Adleman (RSA), El-Gamal, Rabin dan sebagainya (Harahap, 2014). Kecuali algoritma Pohlig˗Hellman karena kunci enkripsi maupun kunci dekripsinya bersifat rahasia. Skema kriptografi asimetris dapat dilihat pada Gambar 2.3.
Gambar 2.3. Kriptografi asimetris (Wandani, 2012)
2.3. Sandi Vigenere
sesuaikan dengan angka, a = 0, b = 1, c = 2, …, z = 25. Kemudian tambahkan angka kata kunci dan angka pesan. Lalu hasilnya dimodulukan dengan 26, dan hasilnya yang berupa angka tersebut dirubah ke dalam huruf untuk mendapatkan huruf yang tersandi. Sandi vigenere merupakan sebuah algoritma kriptografi klasik, algoritma ini tergolong algoritma dasar karena menggunakan algoritma berbasis karakter (Mushlih, 2012).
2.3.1. Cara Kerja Sandi Vigenere
Gambar 2.4 digunakan untuk menyandikan sebuah pesan. Setiap huruf yang disandikan dengan menggunakan baris yang berbeda, sesuai dengan kata kunci yang diulang-ulang.
Contoh :
Pesan = S E R A T U S R I B U Kata kunci = J A L A N
Kata kunci harus diulang sampai jumlah huruf sama dekan pesan. Jumlah huruf pada pesan ada 11 huruf sedangkan kata kunci ada 5 huruf. Kata kunci menjadi “ J A L A N J A L A N J ” sesuai dengan banyaknya huruf pesan.
Huruf pertama pada pesan di sandikan dengan huruf pertama kata kunci, dan begitu seterusnya. Huruf pertama pada contoh adalah “S” dan huruf pertama pada kata kunci “J” disandikan/enkripsi menjadi huruf “B”. (Lihat Gambar 2.4.)
Gambar 2.4. Contoh gambar tabel vigenere
Untuk proses deskripsi atau mengembalikan sama seperti di atas. Huruf pertama pesan tersandi, disandikan dengan huruf pertama kata kunci, dan begitu seterusnya.
Pesan tersandi = B E C A G D S C I O D Kata kunci = J A L A N J A L A N J Pesan = S E R A T U S R I B U
rumus enkripsi
Ci = ( Pi + Ki ) mod 26 ... (2.1)
rumus deskripsi
Pi = ( Ci – Ki ) mod 26 ... (2.2) Keterangan
Ci = nilai desimal (a=0) karakter tersandi ke-i Pi = nilai desimal karakter pesan ke-i
Ki = nilai desimal karakter kata kunci ke-i Contoh :
menggunakan kasus di atas dengan menggunakan Rumus Enkripsi dimana Pi = S dan Ki = J
Desimal Karakter Desimal Karakter Desimal Karakter
Agustus 1974 pengajuan yang ke dua diserahkan. Kali ini, IBM mencalonkan cipher Lucifer yang dikembangkan oleh Horst Feistel, Walter Tuchman, Don Coppersmith, Alam Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith dan Bryan Tuckerman. Penamaan Lucifer diambil berdasarkan nama Lucifer yang merupakan salah satu Demon. Demonpada hal ini berarti Demonstration (Ariyus, 2006).
Metode DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher block. DES dirancang untuk melakukan encipherdan decipherdata yang berisi 56-bit di bawah kendali 56-bit kunci internal atau upa-kunci. Dalam melakukan decipher harus dilakukan dengan menggunakan kunci yang sama dengan saat proses encipher tetapi saat melakukan decipher pemberian alaman berubah sehingga proses decipher merupakan kebalikan dari proses encipher. Sejumlah data yang akan di encipherdisebut sebagai permutasi awal atau initial permutation(IP). Komputasi key-dependentdidefenisikan sebagai fungsi f cipherdan fungsi KS sebagai key schedule. Dekripsi dari komputasi diberikan pertama bersama dengan detail bagaimana algoritma digunakan dalan proses encipher. Selanjutnya penggunaan algoritma untuk proses decipher dideskripsikan. Pada akhirnya, sebuah defenisi cipher fungsi f diberikan dalam bentuk fungsi primitif yang disebut fungsi seleksi Si dan fungsi permutasi P (Alvi, 2011).
2.4.1. Skema Global DES
Gambar 2.5. Skema global data encryption standard
Dalam proses encipher, blok plaintext terbagi menjadi dua bagian yaitu bagian kiri (L) dan bagian kanan (R), yang masing-masing memiliki panjang 32-bit. Pada setiap putaran i, blok R merupakan masukan untuk fungsi tranformasi f. Pada fungsi f, blok R dikombinasikan dengan kunci internal Ki. Keluaran dari fungsi ini di XOR kan dengan blok L yang langsung diambil dari blok R sebelumnya. Ini merupakan 1 putaran DES. Secara matematis, satu putaran DES dinyatakan sebagai berikut:
Li= Ri - 1 ... (2.3) Ri= Li - 1 XOR f (Ri – 1, Ki) ... (2.4)
2.4.2. Permutasi Awal (Initial Permutation)
Sebelum putaran pertama, terhadap blok plaintext dilakukan permutasi awal (initial permutation atau IP). Tujuan permutasi awal adalah mengacak plaintext sehingga urutan bit-bit didalamnya berubah. Pengacakan dilakukan dengan menggunakan matriks permutasi seperti pada Tabel 2.2.
Cara membaca Tabel 2.2. dua entry ujung kiri atas (29 dan 21) berarti: “pindahkan bit ke-29 ke posisi bit 1”
“pindahkan bit ke-21 ke posisi bit 2”
2.4.3. Pembangkit Kunci Internal
Kunci internal dibutuhkan sebanyak 16 buah karena ada 16 putaran. Kunci tersebut yaitu K1, K2, ..., K16. Kunci-kunci internal ini dapat dibangkitkan dari kunci eksternal yang diberikan oleh pengguna. Kunci ekternal panjangnya 64-bit atau 8 karakter. Misalkan kunci ekternal yang disusun dari 64-bit adalah K.
Kunci eksternal ini menjadi masukkan untuk permutasi dengan menggunakan matrik permutasi kompresi PC-1 seperti pada Tabel 2.3.
57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36
D0: berisi bit-bit dari K pada posisi
63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
Selanjutnya, ke dua bagian digeser ke kiri (left shift) sepanjang 1 (satu) atau 2(dua) bit tergantung pada setiap putaran. Operasi bergeser bersifat wripping atau round shift.
Misalkan (Ci, Di) menyatakan penggabungan Cidan Di. (Ci+1, Di+1) diperoleh dengan menggeser Ci dan Di satu atau dua bit.
Setelah pergeseran bit, (Ci , Di) mengalami permutasi kompresi dengan menggunakan matriks PC-2, seperti pada Tabel 2.4.
Tabel 2.4. Permutasi kompresi 2
14 7 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
Dengan permutasi ini, kunci internal Kiditurunkan dari (Ci, Di) yang dalam hal ini Kimerupakan penggabungan bit-bit Cipada posisi:
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2 Dengan bit-bit Dipada posisi:
41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
Gambar 2.7. Proses pembangkitan kunci-kunci internal DES
2.4.4. Proses Enkripsi
Proses enciphering terhadap blok plaintext dilakukan setelah permutasi awal. Setiap blok plaintext mengalami 16 kali putaran enciphering. Setiap putaran enciphering merupakan jaringan Feistel yang secara matematis dinyatakan seperti rumus 2.3 dan rumus 2.4.
Gambar 2.8. Rincian komputasi fungsi ?
E adalah fungsi ekspansi yang memperluas blok Ri-1 yang panjangnya 32 bit menjadi blok 48 bit. Fungsi ekspansi direalisasikan dengan matriks permutasi ekspansi seperti pada Tabel 2.5.
Tabel 2.5. Fungsi ekspansi
32 1 2 3 4 5 4 5 6 7 8 9
8 9 10 11 12 13 12 13 14 15 16 17
16 17 18 19 20 21 20 21 22 23 24 25
24 25 26 27 28 29 28 29 30 31 32 1
Selanjutnya, hasil ekspansi, yaitu E(Ri-1), yang panjangnya 48 bit di-XOR-kan dengan Kiyang panjangnya 48 bit menghasilkan vektor A yang panjangnya 48 bit: E(Ri - 1) XOR Ki= A ... (2.5)
menggunakan S1, kelompok 6 bit ke dua menggunakan S2, dan seterusnya. Keluaran proses subtitution adalah vektor B yang panjangnya 48 bit. Vektor B menjadi masukan untuk proses permutasi. Tujuan permutasi adalah untuk mengacak hasil proses subtitution S-box. Permutasi dilakukan dengan menggunakan matriks permutasi P (P-box) seperti pada Tabel 2.6.
Tabel 2.6. Matriks permutasi P
16 7 20 21 29 12 28 17 1 15 23 26 5 8 31 10
2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25
Bit-bit P(B) merupakan keluaran dari fungsi f. Akhirnya, bit-bit P(B) di-XOR kan dengan Li – 1untuk mendapatkan Ri.
Ri= Li – 1 XOR P(B) ... (2.6) Jadi, keluaran dari putaran ke-i adalah
(Li, Ri) =(Ri – 1, Li – 1 XOR P(B)) ... (2.7) Skema perolehan Ri dapat dilihat pada Gambar 2.9.
Gambar 2.9. Skema perolehan Ri
2.4.5. Permutasi Akhir (Invers Initial Permutation)
40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
2.4.6. Proses Dekripsi
Proses dekripsi terhadap ciphertext merupakan kebalikan dari proses enkripsi. DES menggunakan algoritma yang sama untuk proses enkripsi dan dekripsi. Jika pada proses enkripsi urutan kunci internal yang digunakan adalah K1, K2, ..., K16, maka pada proses dekripsi urutan kunci yang digunakan adalah K16, K15, ..., K1. Untuk tiap putaran 16, 15, ..., 1, keluaran pada setiap putaran decipheringseperti rumus 2.3 dan rumus 2.4.
Dalam hal ini, (R16, L16) adalah blok masukkan awal untuk deciphering. Blok (R16, L16) diperoleh dengan mempermutasikan ciphertext dengan matriks permutasi IP-1. Pra-keluaran dari deciphering adalah (L0, R0). Dengan permutasi awal IP akan didapatkan kembali blok plaintext semula. Selama deciphering, K16 dihasilkan dari (C16, D16) dengan permutasi PC-2. Tentu saja (C16, D16) tidak dapat diperoleh langsung pada permulaan deciphering. Tetapi karena (C16, D16) = (D0, C0), K16 dapat dihasilkan dari (C0, D0) tanpa perlu lagi melakukan pergeseran bit. Catatlah bahwa (C0, D0) yang merupakan bit-bit dari kunci eksternal K yang diberikan pengguna pada waktu dekripsi.
Selanjutnya, K15 dihasilkan dari (C15, D15) yang mana (C15, D15) diperoleh dengan menggeser C16( yang sama dengan C0) dan D16 ( yang sama dengan C0) satu bit ke kanan. Sisanya, K14sampai K1dihasilkan dari (C14, D14) sampai (D1,C1).
2.5. Windows Phone
windows phone 7, sebelumnya Microsoft terlah memulai sistem operasi mobile ini pada tahun 2007, yang awal mulanya windows mobiledengan versi 5.0.
Windows phone bekerja sama dengan smartphone asal Finlandia yaitu Nokia, Pada Februari 2011, CEO Microsoft Steven Ballmer dan CEO Nokia Stephen Elop mengumumkan kerjasama di antara kedua perusahaan, dimana windows phone akan menjadi sistem operasi utama pada Smartphone Nokia tersebut, sebelumnya nokia memiliki sistem operasi Symbian dan megoo.
Pembuatan aplikasi dalam keluarga windows sama dengan yang satu dengan yang lainnya, bahasa yang digunakan juga sama dengan pembuatan aplikasi di keluarga windows, seperti Visual Basic, C++, C# , HTML5 (Putra, 2013).
2.6. Penelitian yang Relevan
Berikut ini beberapa penelitian tentang kriptografi yang berkaitan dengan algoritma vigenere dan algoritma des:
1. Bayu Kristian Nugroho (2010) dalam skripsi yang berjudul Aplikasi Enkripsi SMS pada Telepon Selular Berbasis j2me dengan Metode Vigenere Cipher. Menyatakan bahwa metode enkripsi vigenereadalah metode enkripsi substitusi klasik yang telah ketinggalan zaman dan mudah dipecahkan oleh cryptanalysis. Kelemahan ini ditutup dengan cara merubah pesan ke kode ASCII lalu dienkripsi dengan metode enkripsi vigenere cipher. dengan cara ini ciphertext akan lebih sulit dipecahkan oleh cryptanalysis.
2. Ario Yudo Husodo (2010) dalam skripsi yang berjudul Penerapan Metode Enkripsi Vigenere Cipher dalam Pengamanan Transaksi Mobile Banking. Menyatakan bahwa kekuatan keamanan metode vigenere terdapat pada panjang kunci vigeneredan pola karakter penyusun kunci vigenere yang tidak beraturan.