SKRIPSI
JONATHAN SIMAMORA 111401106
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN
2016
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
JONATHAN SIMAMORA 111401106
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN
2016
PERSETUJUAN
Judul : IMPLEMENTASI ALGORITMA ONE TIME PAD DAN ALGORITMA HILL CIPHER PADA APLIKASI SHORT MESSAGE SERVICE (SMS) BERBASIS ANDROID
Kategori : SKRIPSI
Nama : JONATHAN SIMAMORA
Nomor Induk Mahasiswa : 111401106
Program Studi : SARJANA (S1) ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI UNIVERSITAS SUMATERA
UTARA
Diluluskan di
Medan, Januari 2016
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Amer Sharif, S.Si, M.Kom M. Andri Budiman, ST, M.Comp.Sc, M.E.M
NIP. - NIP. 19751008 200801 1 011
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001
PERNYATAAN
IMPLEMENTASI ALGORITMA ONE TIME PAD DAN ALGORITMA HILL CIPHER PADA APLIKASI SHORT MESSAGE SERVICE (SMS)
BERBASIS ANDROID
SKRIPSI
Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, Januari 2016
Jonathan Simamora 111401106
PENGHARGAAN
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Kuasa atas segala berkat- Nya sehingga penulis dapat menyelesaikan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara.
Selama pengerjaan skripsi dengan judul Implementasi Algoritma One Time Pad dan algoritma Hill Cipher pada aplikasi Short Message Service (SMS) berbasis Android, penulis menyadari bahwa banyak pihak yang turut membantu, baik dari pihak keluarga, sahabat dan orang-orang terkasih yang memotivasi dalam pengerjaannya. Dalam kesempatan ini, penulis mengucapkan terima kasih kepada:
1. Bapak Prof. Drs. Subhilhar, M.A., Ph.D.selaku Pj. Rektor Universitas Sumatera Utara.
2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom. selaku Ketua Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara sekaligus selaku Dosen Penguji I yang telah memberikan kritik, saran dan dukungan kepada penulis dalam menyelesaikan skripsi ini.
4. Ibu Maya Silvi Lydia, B.Sc, M.Sc. selaku Sekretaris Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara
5. Bapak M. Andri Budiman, ST, M.Comp.Sc, M.E.M selaku Dosen Pembimbing I yang telah memberikan bimbingan, saran, nasehat dan masukan kepada saya dalam pengerjaan skripsi ini.
6. Bapak Amer Sharif, S.Si, M. Kom selaku Dosen Pembimbing II yang telah memberikan kritik, saran dan dukungan kepada penulis dalam menyelesaikan skripsi ini.
7. Bapak Drs. Dahlan Sitompul, M.Eng selaku Dosen Penguji II Yang telah memberikan kritik, saran dan dukungan kepada penulis dalam menyelesaikan skripsi ini.
8. Seluruh dosen dan pegawai Program studi S1 Ilmu Komputer Fasilkom-TI USU.
9. Bapak saya Armen Simamora, S.H, Ibu saya Sulastri A.R Simbolon, S.Kep, N.ers., Abang saya Daniel B.H. Simamora, S.H, Gandar Brisson Siregar, A.md dan Kakak saya Dr. Arlentina B. Simamora yang selalu memberikan Doa, dukungan dan bantuan yang ternilai harganya kepada penulis dalam menyelesaikan skripsi ini.
10. Teman-teman kuliah saya KOM A angkatan 2011 khususnya Hari, Edwin, Fernandes, Samuel, Henry, Stephen, Farid, Ridho, Edi, Deka, Joshua, Johan, Mey, Adit, Ari, Agung, Ari, Rifai, Afif yang telah memberi inspirasi dan semangat kepada penulis.
11. Dan teman-teman SMA saya PSIWAK4 angkatan 53 yang selalu memberi semangat dan motivasi kepada penulis dalam menyelesaikan skripsi ini.
Semoga Tuhan Yang Maha Esa melimpahkan berkat dan karunia kepada semua pihak yang telah memberikan inspirasi, bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan pengerjaan skripsi ini.
Penulis menyadari bahwa skripsi ini masih memiliki banyak kekurangan dan jauh dari kesempurnaan. Oleh karena itu, penulis mengharapkan kritik dan saran yang bersifat membangun untuk menyempurnakan skripsi ini. Sehingga dapat bermanfaat bagi kita semuanya.
Medan, Januari 2016
Penulis
ABSTRAK
Seiring dengan perkembangan zaman, keamanan suatu pesan sangat penting untuk dijaga ataupun dirahasiakan guna menghindari hal-hal yang tidak diinginkan. Ilmu yang mempelajari tentang pengamanan data dinamakan Kriptografi. Dalam penelitian ini penulis menggabungkan Algoritma One Time Pad digunakan untuk mengamankan pesan dan Algoritma Hill Cipher untuk mengamankan kunci dari pesan. Dalam penelitian ini penulis membuat sebuah aplikasi yang berisikan implementasi kombinasi algoritma simetris berbasis Android. Besar data sesudah proses enkripsi akan meningkat, akan tetapi akan kembali ke ukuran semula setelah proses dekripsi. Waktu yang dibutuhkan untuk proses enkripsi berkisar selama 0,00178 detik dan waktu yang dibutuhkan untuk proses dekripsi berkisar selama 0,0039 detik.
Kunci : Kriptografi, One Time Pad, Hill Cipher, Pesan, Android
IMPLEMENTATION OF ONE TIME PAD ALGOTIRHM AND HILL CIPHER ALGORITHM IN SHORT MESSAGE SERVICE APLICATION BASED ON
ANDROID
ABSTRACT
Along with the modernisation of time, security of a message is very important to be kept or kept secret to avoid unwanted things. Science study about security data is named Cryptography. In this study authors combine algorithm One Time Pad used for securing and algorithm Hill Cipher for securing key of the message. In this study authors make an application that contained symmetric algorithm combination implementation based Android. Large data encryption process after will be increased, but will return to the size again after the decrypt. Time needed for encryption process is around 0.00178 seconds and the time needed for decryption process is around 0.0039 seconds.
Keywords : Cryptography, One Time Pad, Hill Cipher, Message, Android
DAFTAR ISI
Hal.
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar isi viii
Daftar Gambar x
DaftarTabel xi
Daftar Lampiran xii
Bab I Pendahuluan
1.1 Latar Belakang 1
1.2 Perumusan Masalah 2
1.3 Batasan Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 4
1.7 Sistematika penulisan 5
Bab II Landasan Teori
2.1 Kriptografi 6
2.1.1 Sejarah Kriptografi 6
2.1.2 Algoritma Kriptografi 7
2.2 Jenis-jenis Algoritma Kriptografi 9
2.2.1Algoritma Simetris 9
2.2.2Algoritma Asimetris 11
2.3 Algoritma One Time Pad 12
2.3.1 Enkripsi One Time Pad 12
2.3.2 Dekripsi One Time Pad 13
2.4 Algoritma Hill Cipher 14
2.4.1 Enkripsi Hill Cipher 16
2.4.2 Dekripsi Hill Cipher 17
2.5.Algoritma Blum-Blum Shub 22
2.6 Aritmatika Modulo 23
2.6.1Greatest Common Divisor (GCD) 24
2.6.2Bilangan Prima 24
2.6.3Relatif Prima 25
2.6.4 Algoritma Euclid 26
2.6.5 Extended Euclidean 26
2.6.6 Chinese Remainder Theorem 27
2.7 Android 28
2.8 Penelitan Relevan 29
Bab III Analisis dan Perancangan Sistem
3.1 Analisis Sistem 30
3.1.1 Analisis Masalah 30
3.1.2 Analisis Persyaratan 31
3.1.2.1 Persyaratan Fungsional 31
3.1.2.2 Persyaratan Nonfungsional 32
3.1.3 Analisis Proses 32
3.2 Pemodelan (UML) 33
3.2.1 Use Case Diagram 33
3.2.2 Activity Diagram 35
3.2.3 Sequence Diagram 35
3.3 Flowchart 37
3.3.1 Flowchart Sistem 37
3.3.2 Flowchart Enkripsi 39
3.3.3 Flowchart Dekripsi 40
3.4 Perancangan sistem 41
3.4.1 Form Utama 41
3.4.2 Form Pengirim 42
3.4.3 Form Penerima 43
Bab IV Implementasi dan Pengujian
4.1 Implementasi Sistem 45
4.1.1Form Main Menu 45
4.1.2 Form Buat Pesan 46
4.1.3 Form Pesan Keluar 46
4.1.4 Form Tentang 47
4.1.5 Form Bantuan 48
4.2 Pengujian Sistem 49
4.2.1 Pengujian Hasil Enkripsi 49
4.2.1.1 Pengujian Hasil Enkripsi dengan Sistem 49 4.2.1.2 Pengujian Hasil Enkripsi dengan Perhitungan Manual 50
4.3 Pengujian Lama Waktu Enkripsi dan Dekripsi 52
4.3.1 Pengujian Lama Waktu Enkripsi 52
4.3.2 Pengujian Lama Waktu Dekripsi 53
4.3.3 Perbandingan Waktu Enkripsi dan Dekripsi 54 Bab V Kesimpulan dan Saran
5.1 Kesimpulan 55
5.2 Saran 55
Daftar Pustaka 56
DAFTAR GAMBAR
Hal.
Gambar 2.1 Proses Enkripsi dan Dekripsi 8
Gambar 2.2 Skema Kriptografi Simetris 9
Gambar 2.3 Skema Kriptografi Asimetris 11
Gambar 2.4 Illustrasi Enkripsi Hill Cipher 16
Gambar 2.5 Illustrasi Dekripsi Hill Cipher 18
Gambar 3.1 Diagram Ishikawa 31
Gambar 3.2 Use Case Diagram 33
Gambar 3.3 Activity Diagram 35
Gambar 3.4 Activity Diagram Pada Prose Enkripsi 36
Gambar 3.5 Activity Diagram Pada Proses Dekripsi 37
Gambar 3.6 Flowchart Sistem 38
Gambar 3.7 Flowchart Enkripsi 39
Gambar 3.8 Flowchart Dekripsi 40
Gambar 3.9 Form Menu Utama 41
Gambar 3.10 Perancangan Form Pengirim 42
Gambar 3.11 Perancangan Form Penerima 43
Gambar 4.1 Form main Menu 45
Gambar 4.2 Form Enkripsi 46
Gambar 4.3 Form Dekripsi 47
Gambar 4.4 Form tentang 48
Gambar 4.5 Form Bantuan 49
Gambar 4.6 Proses enkripsi dan hasilnya 50
Gambar 4.7 Grafik waktu enkripsi 53
Gambar 4.8 Grafik waktu dekripsi 54
Gambar 4.9 Grafik perbandingan waktu enkripsi dan dekripsi 54
DAFTAR TABEL
Hal.
Tabel 2.1 Enkripsi One Time Pad 12
Tabel 2.2 Dekripsi One Time Pad 13
Table 2.3 Transformasi Alphabet 16
Table 2.4 Enkripsi Hill Cipher 17
Table 2.5 Dekripsi Hill Cipher 19
Table 2.6 Hasil Adjoint matrix K 19
Tabel 2.7 Proses determinan matrix K 19
Tabel 2.8 Proses pencarian 𝐾−1 20
Tabel 2.9 Proses Pembulatan 20
Tabel 2.10 Proses saling Invers 20
Tabel 2.11 Tabel Cipher teks 20
Tabel 2.12 Proses dekripsi Hill Cipher 22
Tabel 3.1 Naratif Use Case Encryption 33
Tabel 3.2 Naratif Use Case Decryption 34
Tabel 4.1 Tabel Enkripsi Pesan One Time Pad 51
Tabel 4.2 Proses Enkripsi Hill Cipher 51
Tabel 4.3 Hasil Enkripsi Hill Cipher 52
Tabel 4.5 Hasil Pengujian Lamanya Proses Enkripsi 52 Tabel 4.5 Hasil Pengujian Lamanya Proses Dekripsi 53 Tabel 4.6 Perbandingan Waktu Enkripsi dan Dekripsi 54
DAFTAR LAMPIRAN
Hal.
A. Listing Program A-1
B. Curriculum Vitae B-1
BAB 1 PENDAHULUAN
1.1 Latar Belakang
Perkembangan ilmu pengetahunan yang sangat pesat terutama di bidang informatika dapat dirasakan dalam berbagai dimensi kehidupan manusia. Perkembangan ilmu pengetahuan itu sendiri telah memicu manusia untuk lebih mengembangkan teknologi.
Perkembangan teknologi juga menuntut kita untuk meningkatkan keamanan. Seiring dengan itu keamanan informasi yang dipertukarkan juga sangat diperlukan guna menghindari hal-hal yang tidak diinginkan.
Ada beberapa teknik yang digunakan untuk menjaga keamanan informasi maupun pesan. Salah satu metode pengamanan informasi maupun pesan adalah dengan menggunakan enkripsi dan dekripsi data. Bidang ilmu yang mempelajari metode tersebut dinamakan Kriptografi.
Kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan atau informasi yang dapat dibaca. Pesan biasanya disebut juga plaintext. (Kromodimoeljo, 2010). Dalam kriptografi banyak algoritma yang bias diterapkan seperti: Hill Cipher, Vigenere Cipher, Caesar Cipher, Affine Cipher, AES, DES, IDEA, RSA, dan lain-lain.
Proses menyamarkan pesan sedemikian rupa untuk menyembunyikan substansinya disebut enkripsi. Sebuah pesan yang dienkripsi disebut ciphertext. Proses untuk mengubah ciphertext kembali ke plaintext adalah dekripsi (Mollin, 2007).
Metode dalam mengenkripsi dan dekripsi data sudah banyak dan telah dimulai sejak zaman dahulu. Mulai dari era sebelum Masehi, hingga sekarang algoritma penyandian ini selalu berkembang. Namun demikian, penelitian akademis yang ekstensif dalam bidang kriptografi masih tergolong baru. Pada pertengahan tahun 1970-an, muncul konsep baru dalam kriptografi yaitu kriptografi kunci publik (Kromodimoeljo, 2010).
Algoritma kriptografi memiliki 2 jenis, yaitu algoritma simetris dan algoritma asimetris. Algoritma simetris adalah suatu algoritma dimana kunci enkripsi yang digunakan sama dengan kunci dekripsi. Sebelum mengirim pesan, pengirim dan penerima pesan harus memiliki kunci yang sama untuk digunakan bersama, dan kunci itu haruslah rahasia bagi pihak yang tidak berkepentingan sehingga algoritma ini sering disebut juga algoritma kunci rahasia. Algoritma asimetris adalah algoritma dimana kunci yang digunakan untuk proses enkripsi dan dekripsi tidaklah sama.
Salah satu algoritma klasik adalah One Time Pad. One Time Pad adalah salah satu algoritma simetris, algortima yang sempurna dan tidak dapat dipecahkan sehingga diberi gelar Unbreakable Cipher (Munir, 2006). Algoritma ini menggunakan satu kunci untuk satu pesan dan untuk pesan berikutnya dilakukan proses pengacakkan. Tetapi algoritma ini memiliki kelemahan yaitu kunci yang digunakan harus benar-benar acak dan panjang kunci harus sama dengan panjang pesan.
Algoritma Hill Cipher merupakan algoritma simetris dan jenis lain dari Polygraphic Cipher. Sandi ini mngenkripsi suatu string huruf menjadi bentuk string yang lain dengan panjang yang sama.
Pada penelitian ini pesan teks nantinya akan dienkripsi dengan menggunakan algoritma One Time Pad sehingga menghasilkan cipherteks pesan. kemudian kunci yang digunakan pada Hill Cipher. Dengan demikian baik pesan maupun kuncinya akan terjaga kerahasiaannya dikarenakan sama-sama mengalami proses enkripsi tetapi menggunakan algoritma yang berbeda.
Agar mempermudah dalam penggunaan aplikasi dekripsi dan enkripsi, penulis akan membangun aplikasi tersebut berbasis Android pada smartphone. Penulis memilih Android dikarenakan pengguna Android sudah sangat banyak sehingga diharapkan pengguna aplikasi ini nantinya banyak juga.
1.2 Perumusan Masalah
Berdasarkan uraian latar belakang yang telah diuraikan, maka rumusan masalah yang akan dibahas adalah bagaimana mengimplementasikan algoritma One Time Pad dan algoritma Hill Cipher berbasis Android sebagai cara merahasiakan pesan dalam bentuk Short Message Service (SMS).
1.3 Batasan Masalah
Ruang lingkup dalam penelitian ini adalah sebagai berikut:
1. Bahasa pemrograman yang digunakan adalah Java dengan Eclipse sebagai IDE.
2. Pada algoritma Hill Cipher menggunakan matriks 3x3.
3. Tidak membandingkan kedua algoritma.
4. Karakter yang digunakan menggunakan tabel ASCII 127.
5. Blum-Blum Shub sebagai pembangkit kunci.
6. Penelitian ini hanya membahas teknik pengamanan pesan teks dengan algoritma One Time Pad serta algoritma Hill Cipher sebagai pengaman kunci.
1.4 Tujuan Penelitian
Dalam penelitian ini, tujuan yang ingin dicapai adalah menerapkan aplikasi Short Message Service (SMS) untuk merahasiakan pesan dengan menggunakan algoritma One Time Pad dan Algoritma Hill Cipher pada perangkat berbasis Android.
1.5 Manfaat Penelitian
Diharapkan penelitian ini bermanfaat untuk:
1. Menambah pengetahuan penulis dalam melakukan proses enkripsi dan dekripsi suatu pesan dengan menggunakan algoritma One Time Pad dan algoritma Hill Cipher.
2. Penelitian ini diharapkan mampu menghasilkan solusi dengan membangun aplikasi dekripsi dan enkripsi yang lebih aman dan tidak mudah dipecahkan oleh pihak-pihak yang tidak berwenang.
3. Sebagai bahan referensi bagi peneliti yang ingin membahas topik yang terkait dengan penelitian ini.
1.6 Metodologi Penelitian
Metodologi penelitian yang digunakan dalam penulisan tugas akhir ini adalah sebagai berikut:
1. Studi Literatur
Pada tahapan ini penulis mengumpulkan bahan dan data sebagai referensi dari berbagai buku, jurnal, prosiding, skripsi dan sumber lainnya yang berkaitan dengan penulisan tugas akhir. Ini dilakukan untuk memperoleh informasi yang terkait dengan metode One Time Pad, Hill Cipher, serta pemrograman java untuk pemrograman android.
2. Analisis
Tahap ini digunakan untuk mengolah data dari hasil studi literatur yang kemudian dilakukan analisis terhadap cara kerja proses enkripsi dan dekripsi dengan menggunakan algoritma One Time Pad dan algoritma Hill Cipher.
3. Perancangan Sistem
Pada tahap ini dilakukan perancangan sistem yang meliputiproses pembuatan algoritma program, use case scenario, flowchart sistem, flowchart algoritma, rancangan aplikasi, dan pembuatan user interface aplikasi.
4. Implementasi Sistem
Metode ini dilakukan dengan mengimplementasikan rancangan sistem yang telah dibuat pada analisis dan perancangan sistem ke dalam program komputer dengan menggunakan bahasa pemrograman Java kemudian nantinya diimplementasikan kedalam Eclipse sehingga dapat dijalankan di perangkat smartphone berbasis Android.
5. Pengujian Sistem
Pada tahapan ini dilakukan pengujian aplikasi yang di buat telah berhasil berjalan sesuai dengan keinginan dan akan melakukan perbaikan apabila terdapat error.
6. Dokumentasi
Berisikan laporan dan kesimpulan akhir dari penelitian dan pengujian dalam bentuk skripsi.
1.7 Sistematika Penulisan
Agar pembahasan lebih sistematis, maka tulisan ini dibuat dalam lima bab, yaitu : BAB I PENDAHULUAN
Berisi latar belakang, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian dan sistematika penulisan.
BAB II LANDASAN TEORI
Berisi teori mengenai kriptografi, enkripsi, dekripsi, algoritma modern, algoritma klasik, algoritma One Time Pad, Algoritma Hill Cipher dan Algoritma Blum-Blum Shub.
BAB III ANALISIS DAN PERANCANGAN
Berisi tentang analisis algoritma autokey cipher dan algoritma kunci publik rabin terhadap proses enkripsi dan dekripsi yang terdiri dari Use Case Diagram, Activity Diagram, Flowchart dan perancangan tampilan form aplikasi.
BAB IV IMPLEMENTASI DAN PENGUJIAN
Berisi mengenai sistem dan pembuatan program sesuai dengan analisis dan perancangan sistem kemudian dilakukan pengujian terhadap sistem.
BAB V KESIMPULAN DAN SARAN
Berisi kesimpulan yang diperoleh dari hasil penelitian dan saran-saran yang berguna untuk pengembangan penelitian selanjutnya.
BAB 2
LANDASAN TEORI
2.1 Kriptografi
Kriptografi berasal dari bahasa Yunani, Crypto dan graphia. Crypto berarti secret (rahasia) dan graphien bererti writing (tulisan). Menurut terminologinya kriptografi adalah ilmu dan seni menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat lain (Ariyus, 2008).
2.1.1 Sejarah Kriptografi
Kriptografi pada dasarnya sudah dikenal sejak lama. Menurut catatan sejarah, kriptografi sudah digunakan oleh bangsa Mesir sejak 4000 tahun yang lalu oleh raja- raja Mesir pada saat perang untuk mengirimkan pesan rahasia kepada panglima perangnya melalui kurir-kurinya. Orang yang melakukan penyandian ini disebut kriptografer, sedangkan orang yang mendalami ilmu dan seni dalam membuka atau memecahkan suatu algoritma kriptografi tanpa harus mengetahui kuncinya disebut kriptanalis.
Seiring dengan perkembangan teknologi, algoritma kriptografi pun mulai berubah menuju ke arah algoritma kriptografi yang lebih rumit dan kompleks. Kriptografi mau tidak mau harus diakui mempunyai peranan yang paling penting dalam peperangan sehingga algoritma kriptografi berkembang cukup pesat pada saat Perang Dunia I dan Perang Dunia II. Menurut catatan sejarah, terdapat beberapa algoritma kriptografi yang pernah digunakan dalam peperangan, diantaranya adalah ADFVGX yang dipakai oleh Jerman pada Perang Dunia I, Sigaba/M-134 yang digunakan oleh Amerika Serikat pada Perang Dunia II, Typex oleh Inggris, dan Purple oleh Jepang. Selain itu
Jerman juga mempunyai mesin legendaris yang dipakai untuk memecahkan sandi yang dikirim oleh pihak musuh dalam peperangan yaitu Enigma.
Algoritma kriptografi yang baik tidak ditentukan oleh kerumitan dalam mengolah data atau pesan yang akan disampaikan.
Ada 4 syarat yang perlu dipenuhi, yaitu:
1. Kerahasiaan.
Pesan (plaintext) hanyadapat dibaca oleh pihak yang memliki kewenangan.
2. Autentikasi.
Pengirim pesan harus dapat diidentifikasi dengan pasti, penyusup harus dipastikan tidak bisa berpura-pura menjadi orang lain.
3. Integritas.
Penerima pesan harus dapat memastikan bahwa pesan yang dia terima tidak dimodifikasi ketika sedang dalam proses transmisi data.
4. Non-Repudiation.
Pengirim pesan harus tidak bisa menyangkal pesan yang dia kirimkan (Andri, 2009).
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 orang- orang yang tidak berhak atas pesan tersebut.
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).
Karakter kriptografi dibagi dua berdasarkan tipe operasi yang dipakai untuk enkripsi dan dekripsi (teknik subtitusi dan teknik permutasi) serta berdasarkan tipe pengolahan pesan (Block Cipher dan Stream Cipher).
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 ciphertext.
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 pada plaintext digunakan kunci One Time Pad.
Secara umum fungsi tersebut digambarkan:
Gambar 2.1 Proses Enkripsi dan Dekripsi (Andri, 2009)
Keamanan dari algoritma kriptografi tergantung dari bagaimana suatu algoritma itu bekerja, maka algoritma semacam ini disebut dengan algoritma terbatas. Algoritma terbatas merupakan suatu algoritma yang dipakai sekelompok orang untuk merahasiakan pesan yang dikirimnya. Jika salah satu dari anggota kelompok itu keluar dari kelompoknya maka, algoritma yang dipakai diganti dengan yang baru, jika tidak hal ini bisa menjadi masalah dikemudian hari.
Jika keseluruhan dari keamanan algoritma tergantung pada kunci yang dipakai maka, ini bisa dipublikasikan dan dianalisis oleh orang lain. Jika algoritma yang telah
dipublikasikan bisa dipecahkan dalam waktu singkat oleh orang lain maka, algoritma tersebut belum aman untuk digunakan (Ariyus, 2008).
2.2 Jenis-jenis Algoritma Kriptografi
Algoritma kriptografi dibagi menjadi dua jenis, yaitu algoritma simetris dan algoritma asimetris.
2.2.1 Algoritma Simetris
Algoritma Simetris adalah algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya (Kromodimoeljo, 2010). Pada prosesnya, pengirim pesan dan penerima pesan harus saling berbagi kunci rahasia tersebut.
Jika kunci tersebut diketahui oleh orang lain maka orang tersebut dapat melakukan enkripsi dan dekripsi pada pesan (Sadikin, 2012). Skema kriptografi simetris dapat dilihat pada gambar 2.2.
Gambar 2.2 Skema Kriptografi Simetris (Andri, 2009)
Algoritma simetri memiliki banyak macam, berdasarkan bit yang dienkripsi dapat dibagi menjadi dua kategori:
1. Cipher aliran (stream cipher)
Algoritma kriptografi beroperasi pada plainteks atau cipherteks dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsikan atau didekripsikan bit per bit.
2. Cipher blok (block cipher)
Algoritma kriptografi beroperasi pada plainteks atau cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya. Misalnya panjang blok adalah 64 bit, maka itu berarti algoritma enkripsi memperlakukan 8 karakter setiap kali penyandian (1 karakter = 8 bit dalam pengkodean ASCII).
Algoritma Enkripsi
Algoritma Dekripsi Kunci Rahasia
Teks Asli Ciphertext Teks Asli
Pada cipher blok, rangkaian bit-bit plainteks dibagi menjadi blok-blok bit dengan panjang sama. Enkripsi dilakukan terhadap blok bit plainteks menggunakan bit-bit kunci (yang ukurannya sama dengan blok plainteks). Algoritma enkripsi menghasilkan blok cipherteks yang berukuran sama dengan blok plainteks. Dekripsi dilakukan dengan cara yang serupa seperti enkripsi. Algoritma standar yang menggunakan prinsip kunci simetri antara lain OTP (One Time Pad), DES, RC2, RC4, RC5, RC6, IDEA, Twofish, Blowfish, FEAL, SAFER, LOKI, CAST, RIJNDEL, GOST, A5, Kasumi dan lain lain(Ariyus, 2008).
Salah satu teknik enkripsi menggunakan kunci simetri adalah teknik subtitusi, yaitu mengganti setiap karakter plaintext dengan karakter lain. Terdapat empat cara dalam menggunakan teknik subtitusi, yaitu :
1. Monoalphabet, dimana setiap karakter ciphertext mengganti satu macam karakter plaintext tertentu.
2. Polialphabet, dimana setiap karakter ciphertext mengganti lebih dari satu macam karakter plaintext.
3. Monograf/unilateral, dimana satu enkripsi dilakukan terhadap satu karakter plaintext.
4. Poligraf/multilateral, dimana satu enkripsi dilakukan terhadap lebih dari satu karakter plaintext (Alfred et al., 1996 dalam Nugroho, 2010).
Kelebihan kriptografi kunci simetri:
1. Proses enkripsi / dekripsi membutuhkan waktu yang singkat.
2. Ukuran kunci simetri relatif pendek.
3. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan saja.
Kelemahan kriptografi kunci simetri:
1. Kunci simetri harus dikirim melalui saluran yang aman. Kedua entitas yang berkomunikasi harus menjaga kerahasiaan kunci ini.
2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi (Andri, 2009).
2.2.2 Algoritma Asimetris
Algoritma Asimetris adalah algoritma yang kunci untuk enkripsi dan dekripsinya jauh berbeda. Algoritma ini dikenal juga dengan sebutan Kunci Publik. Kriptografi kunci publik menggunakan sepasang kunci kriptografi yang terhubung secara matematis.
Jika kunci yang satu digunakan untuk enkripsi pesan, maka hanya kunci pasangannya yang dapat melakukan dekripsi terhadap pesan tersebut. Mengetahui salah satu kunci, bukan berarti dapat mengetahui kunci pasangannya dengan mudah.
Gambar 2.3 Skema Kriptografi Asimetris (Wandani, 2012)
Algoritma standar yang termasuk algoritma asimetri adalah ECC, LUC, RSA, EI- Gamal dan DH(Ariyus, 2008).
Kelebihan kriptografi kunci publik:
1. Hanya kunci privat yang perlu dijaga kerahasiannya oleh setiap entitas yang berkomunikasi (tetapi, otentikasi kunci publik tetap harus terjamin). Tidak ada kebutuhan mengirim kunci privat sebagaimana pada kriptografi kunci simetri.
2. Pasangan kunci publik/ kunci privat tidak perlu diubah, bahkan dalam periode waktu yang panjang.
3. Dapat digunakan untuk mengamankan pengiriman kunci simetri.
4. Beberapa algoritma kunci publik dapat digunakan untuk memberi tanda tangan digital pada pesan.
Kelemahan kriptografi kunci publik:
1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri, karena enkripsi dan dekripsi menggunakan bilangan yang lebih besar dan melibatkan operasi perpangkatan yang besar.
2. Ukuran cipherteks lebih besar daripada plainteks.
3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetri (Andri, 2009).
2.3 Algoritma One Time Pad
Algoritma ini ditemukan pada tahun 1917 oleh Mayor Joseph Mauborgne dan Gilbert Vernam. Cipher ini termasuk ke dalam kelompok algoritma kriptografi simetri (Prameswara, 2013). One Time Pad berisi deretan karakter kunci yang dibangkitkan secara acak dan setiap kunci hanya bisa dipakai sekali pakai (Ariyus, 2008).
Pemilihan kunci harus secara acak agar tidak bisa diproduksi ulang dan membuat lawan tidak mudah memecahkannya (Ariyus, 2008). Panjang stream karakter kunci sama dengan panjang pesan. One Time Pad (pad = kertas bloknot) berisi barisan karakter-karakter kunci yang dibangkitkan secara acak. Satu pad hanya digunakan sekali (one time) saja untuk mengenkripsi pesan, setelah itu pad yang telah digunakan dihancurkan. Panjang kunci One Time Pad – panjang teks asli sehingga tidak ada kebutuhan untuk mengulang penggunaan kunci selama proses enkripsi.
2.3.1 Enkripsi One Time Pad
Aturan enkripsi yang digunakan persis sama seperti pada kode Vigenere.
Enkripsi: Ci = (Pi + Ki) mod n …….………... (1) Dekripsi: Pi = (Ci – Ki) mod n………... (2)
Dimana:
Ci= ciphertext;
Pi=plaintext;
Ki= kunci;
N= 26 (alfabetis);
Contoh:
Bila diketahui teks – asli: (Pi) = “ONETIMEPAD”
Dengan kunci (Ki): “TBFRGFARFM”
Diasumsikan A= 0, B = 1, . . . , Z=25.
Maka akan didapat teks-kode (Ci) : “HOJKOREGFP” yang mana diperoleh sebagai berikut:
Kunci (Ki) Plaintext
(Pi) Ci= (Pi+Ki)Mod 26 Ciphertext Hasil Akhir (Ci)
T=19 O=14 (14+19)mod26=7 7=H
HOJKOREGFP
B=1 N=13 (13+1)mod26=14 14=O
F=5 E=4 (4+5)mod26=9 9=J
R=17 T=19 (19+17)mod26=10 10=K
G=6 I=8 (8+6)mod26=14 14=O
F=5 M=12 (12+5)mod26=17 17=R
A=0 E=4 (4+0)mod26=4 4=E
R=17 P=15 (15+17)mod26=6 6=G
F=5 A=0 (0+5)mod26=5 5=F
M=12 D=3 (3+12)mod26=15 15=P
Tabel 2.1 Enkripsi One Time Pad 2.3.2 Dekrepsi One Time Pad
Contoh:
Bila diketahui Ci= “HOJKOREGFP”
Dengan Kunci (Ki)= “TBFRGFARFM”
Diasumsikan A= 0, B = 1, . . . , Z=25.
Maka akan didapat teks (Pi)= ”ONETIMEPAD” yang diperoleh sebagai berikut:
Ciphertext (Ci) Kunci (Ki) Pi=(Ci-Ki)mod26 Plaintext Hasil Akhir
7=H T=19 (7-19)mod26=14 O=14
ONETIMEPAD
14=O B=1 (14-1)mod26=13 N=13
9=J F=5 (9-5)mod26=4 E=4
10=K R=17 (10-17)mod26=19 T=19
14=O G=6 (14-6)mod26=8 I=8
17=R F=5 (17-5)mod26=12 M=12
4=E A=0 (4-0)mod26=4 E=4
6=G R=17 (6-17)mod26=15 P=15
5=F F=5 (5-5)mod26=0 A=0
15=P M=12 (15-12)mod26=3 D=3
Tabel 2.2 Dekripsi One Time Pad
Sistem One Time Pad tidak dapat dipecahkan karena beberapa alasan:
1. Barisan kunci acak + teks asli yang tidak acak = teks kode yang seluruhnya acak.
2. Mendekripsi teks kode dengan beberapa kunci berbeda dapat menghasilkan teks asli yang bermakna sehingga kriptanalis tidak punya cara untuk menentukan teks asli mana yang benar.
Meskipun algoritma ini algoritma sempurna dan sangat aman, tetapi dalam praktiknya One Time Pad jarang digunakan karena dikategorikan sedikit rumit yang disebabkan panjang kunci = panjang pesan, sehingga timbul beberapa masalah penyimpanan kunci, pendistribusian kunci, dan masalah pengiriman kunci karena kunci yang dibangkitkan secara acak, maka ”tidak mungkin” pengirim dan penerima membangkitkan kunci yang sama secara simultan.
One Time Pad hanya dapat digunakan jika tersedia saluran komnunikasi alternative yang cukup aman untuk mengirim kunci. Saluran ini pada umumnya cukup mahal dan lambat. (Ariyus, 2008).
Algoritma ini memiliki kelemahan lain yakni kunci yang dipakai haruslah benar-benar acak. Menggunakan pseudorandom generator tidak dihitung, karena algoritma ini memiliki bagian yang tidak acak. Oleh karena itu, algoritma ini hanya dapat digunakan jika tersedia saluran komunikasi kedua yang cukup aman untuk mengirim kunci (Prameswara, 2013).
2.4 Algoritma Hill Cipher
Sejak kekaisaran Romawi, kriptosistem yang lebih rumit dikembangkan oleh orang seperti ahli matematika Italia Leon Battista Alberti (lahir pada tahun 1404), matematikawan Jerman Johannes Trithernius (lahir pada tahun 1492), seorang kriptographer dan diplomat Perancis Blaise de Vigenere (1523-1596), Lester S.Hill, yang menemukan Hill Cipher pada tahun 1929. Hill Cipher merupakan jenis lain dari Polygraphic cipher. Sandi ini mengenkripsi suatu string huruf menjadi bentuk string yang lain dengan panjang sama. Teknik Hill Cipher dikembangkan oleh Lester S.Hill pada Hunter Collage dan dipublikasikan pada American Mathematical Monthly, Volume 36, Issue 6 (Juni-Juli, 1929) halaman 106-312. Hill Cipher menggunakan matriks untuk mentransformasi string berupa blok huruf.
Hill Cipher berdasarkan pada aljabar linier dan seperti sandi Vignere, Hill Cipher merupakan Block Cipher. Sandi ini dapat dipecahkan dengan Known-Plaintext Attacks tetapi tahan melawan ciphertext-only attack. Cara kerja sandi ini berdasarkan atas perkalian matriks dengan menggunakan sebuah kunci K.
Penjelasan mengenai Hill Cipher ini dapat diuraikan sebaai berikut:
Misalkan m adalah bilangan bulat positif dan 𝑃 = 𝐶 = 𝑍26 𝑚 dan misalkan K
={ 𝑚 × 𝑚 merupakan matriks yang nilai elemenya terdiri dari 𝑍26}, maka untuk suatu kunci K, dapat didefenisikan sebagai ℮𝐾 𝑋 = 𝐾 × 𝑀𝑜𝑑 26
Dan 𝑑𝐾 𝑦 = 𝐾−1𝑦 𝑀𝑜𝑑 26 dimana semua operasi dilakukan dalam matriks 𝑍26. Karena 𝐾−1 dengan mudah dapat dihitung dari K, maka Hill Cipher merupakan suatu kriptosistem asimetrik. Hill Cipher juga merupakan blok cipher linier umum. Suatu blok cipher linier dapat dengan mudah dipecahkan yang dikenal cara Known-plaintext attacks. Maka bagi penyerang yang mengetahui beberapa contoh plaintext dengan enkripsi yang berhubungan, tidaklah sulit baginya untuk mencari kunci yang dipakai untuk mengenkripsikan plaintext tersebut. Metode dari perhitungan frekuensi sering dipakai untuk usaha ini. Metode ini mengeksplorasi perulangan (redundancy) dari bahasa alami yang dipakai sebagai plaintext pada pesan.
Penjelasan cara kerja Hill Cipher dapat disederhanakan dengan cara seperti berikut ini:
Misalkan K merupakan sebuah matriks kunci 𝑚 × 𝑚 yang merupakan represantasi dari suatu persamaan linier. Ciphertext (C) dan plaintext (P) merupakan matriks 𝑚 × 1. Maka didapat persamaan untuk menghasilkan ciphertextsebagai berikut:
C= ( K . P )mod n………..(3) 𝐶1
𝐶2 𝐶3
=
𝐾11 𝐾12 𝐾13 𝐾21 𝐾22 𝐾23 𝐾31 𝐾32 𝐾33
𝑥 𝑃1 𝑃2 𝑃3
𝑀𝑜𝑑 𝑛 Keterangan:
C = ciphertext;
P = plaintext;
K = kunci;
N = 26 (alfabetis);
Dekripsi memerlukan kunci K yang bersifat invertible (dapat dibalik kembali).
Contohnya 𝐾. 𝐾−1 𝑀𝑜𝑑 26 = 𝐼 dimana I merupakan matriks identitas.
Karena C= K.P Mod 26 maka 𝐾 = 𝐶 . 𝑃−1 𝑀𝑜𝑑 26 tidak semua Plaintext bersifat invertible (dapat dibalik kembali). Sandi Caesar, Hill Cipher, dan sandi Playfair semua bekerja dengan sebuah alphabet tunggal saat disubtitusikan.
2.4.1 Enkripsi Hill Cipher
Langkah-langkah untuk proses enkripsi plaintext dengan Hill Cipher adalah sebagai berikut:
1. Pilih suatu matriks kunci K yang berupa matriks bujur sangkar yang dipakai sebagai kunci.
2. Transformasikan tiap huruf dalam teks ke bilangan bulat yang sesuai (A=1;
B=2; .… Z=26).
3. Kelompokkan barisan angka yang didapat ke dalam beberapa blok vektor P yang panjangnya sama dengan ukuran matriks K.
4. Hitung C = K . P (Mod 26) untuk tiap vector P.
5. Kembalikan tiap angka dalam vektor sandi C ke huruf yang sesuai untuk mendapatkan teks sandi.
Gambar 2.4 Illustrasi Enkripsi Hill Cipher
Bagian ini akan menjelaskan enkripsi dengan Hill Cipher dengan memberikan contoh.
Hill Cipher menggunakan matriks untuk mentransformasikan string plaintext menjadi ciphertext.
Untuk mentransformasikan plaintext maka pertama sekali semua alphabet dinyatakan dalam nilai seperti berikut:
A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25
Tabel 2.3 Transformasi alphabet
Contoh:
Kode Hill dengan mengunakan matriks 3×3 dengan kunci matriks:
4 2 3
6 3 3
3 2 1
Diketahui teks asli adalah: “ILOVETHEWAYYOULOVEME”
Kunci Matriks
3×3 Plaintext
Hasil perkalian kunci dengan
Plaintext
Hasil Akhir Ciphertext
4 2 3
6 3 3
3 2 1
ILO=
8 11 14
32 + 22 + 42 48 + 33 + 42 24 + 22 + 14
96
123 60
𝑀𝑜𝑑 26 18 19 8
= S T I
VET=
21 4 20
84 + 8 + 57 126 + 12 + 57
63 + 8 + 19
149 195 90
𝑀𝑜𝑑 26 19 13 12
= T N M
HEW=
7 4 22
28 + 8 + 66 42 + 12 + 66
21 + 8 + 22
102 120 51
𝑀𝑜𝑑 26 24 16 25
= Y Q Z
AYY=
0 24 24
0 + 48 + 72 0 + 72 + 72 0 + 48 + 24
120 144 72
𝑀𝑜𝑑 26 16 14 20
= Q O U
OUL=
14 20 11
56 + 40 + 33 84 + 60 + 33 42 + 40 + 11
129 177 93
𝑀𝑜𝑑 26 25 21 15
= Z V P
OVE=
14 21 4
56 + 42 + 12 84 + 63 + 12 42 + 42 + 4
110 159 88
𝑀𝑜𝑑 26 6 3 10
= G D K
MEA=
12 4 0
48 + 8 + 0 72 + 12 + 0
36 + 8 + 0
56 84 44
𝑀𝑜𝑑 26 4 6 18
= E G S
Tabel 2.4 Enkripsi Hill Cipher
Jadi teks asli dari “ILO VET HEW AYY OUL OVE MEA” adalah “ STI TNM YQZ QOU ZVP GDK EGS”.1
2.4.2 Dekripsi Hill Cipher
Algoritma proses pendekripsian Hill Cipher dapat diuraikan dalam bentuk langkah- langkah sebagai berikut:
1. Hitung matriks 𝐾−1 (Mod 26) sebagai kunci pembuka. 𝐾−1ada jika FPB ((det(K),26)=1.
2. Transformasikan tiap huruf dalam teks ke bilangan bulat yang sesuai (A=1;
B=2;… Z=26).
3. Kelompokkan barisan angka yang didapat ke dalam beberapa blok vektor C yang panjangnya sama dengan ukuran matriks 𝐾−1.
4. Hitung P = 𝐾−1. 𝐶 (𝑀𝑜𝑑 26) untuk tiap vector C.
5. Kembalikan tiap angka dalam vektor sandi P ke huruf yang sesuai untuk mendapatkan teks sandi.
Berikut adalah ilustrasi dekripsi Hill Cipher:
Gambar 2.5 Illustrasi dekripsi Hill Cipher
Contoh kode Hill pada dekripsi Hill Cipher:
Diketahui Kode Hill dengan mengunakan matriks 3×3 dengan kunci matriks:
4 2 3
6 3 3
3 2 1
Diketahui teks adalah: “STITNMYQZQOUZVPGDKEGS”.
1. Cari Adjoint dari matrix K
𝐾11
4 2 3
6 3 3
3 2 1
=> = 3*1-3*2= -3 => 𝐾11 = (−1)1+1∗ −3
= (−3) 3 3
2 1
𝐾12
4 2 3
6 3 3 3 2 1
=> = (6*1)-(3*3)=
-3 => 𝐾12 = (−1)1+2∗ −3 6 3 = 3
3 1
𝐾13
4 2 3
6 3 3 3 2 1
=> = (6*2)-(3*3)=
3 => 𝐾13 = (−1)1+3 ∗ 3 = 3 6 3
3 2
𝐾21
4 2 3
6 3 3
3 2 1
=> = (2*1)-(3*2)=
-4 => 𝐾12 = (−1)2+1∗ −4 2 3
2 1 = 4 𝐾22
4 2 3
6 3 3
3 2 1
=> = (4*1)-(3*3)=
-5 => 𝐾22 = (−1)2+2 ∗ −5
= −5 4 3
3 1
𝐾23 4 2 3
6 3 3
3 2 1
=> = (4*2)-(2*3)=
2 => 𝐾23 = (−1)2+3∗ 2
= −2 4 2
3 2
𝐾31
4 2 3
6 3 3
3 2 1
=> = (2*3)-(3*3)=
-3 => 𝐾31 = (−1)3+1 ∗ −6
= −3 2 3
3 3
𝐾32 4 2 3
6 3 3
3 2 1
=> = (4*3)-(3*6)=
-6 => 𝐾32 = (−1)3+2 ∗ −6 4 3 = 6
6 3
𝐾33 4 2 3
6 3 3
3 2 1
=> = (4*3)-(2*6)=
0 => 𝐾33 = (−1)3+3∗ 0 = 0 4 2
6 3
Tabel 2.5 Dekripsi Hill Cipher
Tabel 2.6 hasil adjoint dari matrix K
2. Adjoint diperoleh, Cari determinan matrix K,
4 2 3 4 2
6 3 3 6 3
3 2 1 3 2
Tabel 2.7 Proses determinan matrix K
Det K = ((4*3*1)+(2*3*3)+(3*6*2))-((3*3*3)-(4*3*2)-(2*6*2))
= 12+18+36-27-24-12
= 66-63
= 3 Adj K adalah
𝐾11 𝐾21 𝐾31
𝐾12 𝐾22 𝐾32
𝐾13 𝐾23 𝐾33
Adj K adalah
-3 4 -3
3 -5 6
3 -2 0
3. Invers dari Determinan K Det K * X = 1 mod 26
=> 3*9 = 1 mod 26
=> 27 = 1 mod 26
=> 27 mod 26 = 1
4. Kemudian 𝐶𝑎𝑟𝑖 𝐾−1 = det 𝐾−1∗ adj K mod 26
𝐾−1
= 9*
−3 4 −3
3 −5 6
3 −2 0
𝑀𝑜𝑑 26 =
−27 36 −27
27 −45 54
27 −18 0
𝑚𝑜𝑑 26 =
−1 10 −1
1 −19 2
1 −18 0
Tabel 2.8 Proses pencarian 𝑲−𝟏
5. Ketika adanya hasil yang negative (-) maka, ditambahkan 26 agar tetap memperoleh bilangan Positif (+), ini dilakukan karena yang digunakan adalah bilangan 0 hingga 25.
−1 10 −1
1 −19 2
1 −18 0
(+26) (Hanya yang bernilai
negative)
25 10 25
1 7 2
1 8 0
Tabel 2.9 Proses pembulatan
6. Pembuktian bahwa K saling invers dengan 𝐾−1, dengan melakukan perkalian, dan hasil akhirnya adalah matriks identitas.
K 𝐾−1
=
K* 𝐾−1
4 2 3
6 3 3
3 2 1
*
25 10 25
1 7 2
1 8 0
4*25+2*1+3*
1
4*10+2*7+3*
8
4*25+2*2+3*
0 6*25+3*1+3*
1
6*10+3*7+3*
8
6*25+3*2+3*
0 3*25+2*1+1*
1
3*10+2*7+1*
8
3*25+2*2+3*
0 100+2+3 40+14+24 100+40+0
Mod 26 =
105 78 104
156 105 156
78 52 79
𝑚𝑜𝑑 26
1 0 0
0 1 0
0 0 1
150+3+3 60+21+24 150+6+0
75+2+1 30+14+8 75+2+0
Tabel 2.10 Proses saling invers
7. Mendekripsikan dengan mengalikan matrix 𝐾−1 dengan Ciphertext (𝐾−1∗ 𝐶𝑖) 𝑀𝑜𝑑 26.
S T I T N M Y Q Z
18 19 8 19 13 12 24 16 25
Q O U Z V P G D K
16 14 20 25 21 15 6 3 10
E G S
4 6 18
Tabel 2.11 Tabel cipher teks STI
(𝐾−1 ∗ 𝐶𝑖) 𝑚𝑜𝑑 26 Plain text
25 10 25
1 7 2
1 8 0
∗ 18 19 8
mod 26
(25*18+10*19+25*8) Mod 26
840 167 170
mod 26
8 11 14
=ILO (1*18+7*19+2*8)
Mod 26
(1*18+8*19+0*8) Mod 26
TNM
(𝐾−1∗ 𝐶𝑖) 𝑚𝑜𝑑 26 Plain text
25 10 25
1 7 2
1 8 0
∗ 19 13 12
mod 26
(25*19+10*13+25*12) Mod 26
905 134 123
mod 26
21 4 19
=VET (1*19+7*13+2*12)
Mod 26
(1*19+8*13+0*12) Mod 26
YQZ
(𝐾−1∗ 𝐶𝑖) 𝑚𝑜𝑑 26 Plain text
25 10 25
1 7 2
1 8 0
∗ 24 16 25
mod 26
(25*24+10*16+25*25) Mod 26
1385 186 152
mod 26 7 4 22
=HEW (1*24+7*16+2*25)
Mod 26
(1*24+8*16+0*25) Mod 26
QOU
(𝐾−1∗ 𝐶𝑖) 𝑚𝑜𝑑 26 Plain text
25 10 25
1 7 2
1 8 0
∗ 16 14 20
mod 26
(25*16+10*14+25*20) Mod 26
1040 154 128
mod 26 0 24 24
=AYY (1*16+7*14+2*20)
Mod 26
(1*16+8*14+0*20) Mod 26
Tabel 2.12 Proses dekripsi Hill Cipher
Jadi teks asli dari “STI TNM YQZ QOU ZVP GDK EGS” adalah “ILO VET HEW AYY OUL OVE MEA”.
2.5 Algoritma Blum-Blum Shub
Algoritma Blum-blum Shub adalah pembangkit bilangan acak yang dikatakan aman dan memenuhi untuk kriptografi. Algoritma Blum- Blum Shub diusulkan menjadi pembangkit bilangan pseudorandom sejak tahun 1986 oleh Lenore Blum, Manuel Blum dan Michael Shub. Algoritma Blum- Blum Shub merupakan CSPRNG (Cryptographically Secure Pseudorandom Number Generator) yang paling sederhana dan paling mangkus (secara kompleksitas teoritis) dan berbasis teori bilangan. Blum- Blum Shub memiliki keunggulan yakni BBS tidak dapat diprediksi dari arah kiri (unpredictable to the left) dan tidak dapat diprediksi dari arah kanan (unpredictable to the kanan), artinya jika diberikan barisan bit yang
ZVP
(𝐾−1∗ 𝐶𝑖) 𝑚𝑜𝑑 26 Plain text
25 10 25
1 7 2
1 8 0
∗ 25 21 15
mod 26
(25*25+10*21+25*15) Mod 26
1210 202 193
mod 26 14 20 11
=OUL (1*25+7*21+2*15)
Mod 26
(1*25+8*21+0*15) Mod 26
GDK
(𝐾−1∗ 𝐶𝑖) 𝑚𝑜𝑑 26 Plain text
25 10 25
1 7 2
1 8 0
∗ 6 3 10
mod 26
(25*6+10*3+25*10) Mod 26
430 47 30
mod 26
14 21 4
=OVE (1*6+7*3+2*10) Mod
26
(1*6+8*3+0*10) Mod 26
EGS
(𝐾−1 ∗ 𝐶𝑖) 𝑚𝑜𝑑 26 Plain text
25 10 25
1 7 2
1 8 0
∗ 4 6 18
mod 26
(25*4+10*6+25*18) Mod 26
12 4 0
mod 26
12 4 0
=MEA (1*4+7*6+2*18) Mod
26
(1*4+8*6+0*18) Mod 26
dihasilkan oleh BBS, kriptanalis tidak dapat memprediksi barisan bit sebelumnya dan barsian bit sesudahnya.
Algoritma:
1. Pilih dua buah bilangan prima rahasia, p dan q, yang masing-masing kongruen dengan 3 modulo 4.
2. Kalikan keduanya menjadi n = pq. Bilangan m ini disebut bilangan bulat Blum
3. Pilih bilangan bulat acak lain, s(seed) sebagai umpan sedemikian sehingga:
(i) 2 s < n
(ii) s dan n relatif prima kemudian hitung x0 = s2 mod n
4. Barisan bit acak dihasilkan dengan melakukan iterasi berikut sepanjang yang diinginkan:
(i) Hitung xi = xi – 1 2 mod n
(ii) zi = bit LSB (Least Significant Bit) dari xi Barisan bit acak adalah z1, z2, z3, …
Contoh. Misalkan kita memilih p = 11 dan q = 23 sehingga n = pq = 253. Kita pilih s = 3 dan kita hitung x0 =32 mod 253 = 9. Barisan bit acak kita hasilkan sebagai berikut:
x1 = x02
mod n = 92 mod 253 = 81 z1 = 1 (karena 81 ganjil, bit LSB-nya pasti 1) x2 = x12
mod n = 812 mod 253 = 236 z2 = 0 (karena 236 genap, bit LSB-nya pasti 0)
x3 = x22
mod n = 2362 mod 253 = 36 z1 = 0 x4 = x32
mod n = 362 mod 253 = 31 z1 = 1 x5 = x42
mod n = 312 mod 253 = 202 z1 = 0 dst
Barisan bit acak yang dihasilkan 10010..
2.6 Aritmatika Modulo
Aritmatika modulo merupakan sisa hasil pembagian 2 (dua) bilangan. Operator yang digunakan dalam aritmatika modulo adalah mod. Misalkan a adalah bilangan bulat dibagi dengan m adalah bilangan bulat > 0 , maka akan menghasilkan sisa bagi r dengan q adalah hasil bagi. Sehingga dapat dinotasikan sebagai berikut :
a mod m = r sedemikian sehingga a = mq + r, dengan 0 ≤ r < m Contoh : 65 mod 7 = 2, dimana 65 = (7*9) + 2.
2.6.1 Greatest Common Divisor (GCD)
Greatest common divisor (GCD) merupakan bilangan bulat terbesar yang merupakan pembagi yang sama dari dua bilangan bulat. Misalkan a dan b adalah 2 (dua) bilangan bulat yang tidak nol. Greatest common divisor (GCD) dari a dan b adalah bilangan bulat terbesar c sedemikian sehingga c|a dan c|b. Greatest common divisor (GCD) dari a dan b dapat dinotasikan dengan gcd(a,b)(Mollin, 2008).
Contoh : GCD(100,30) adalah:
100 mod 30 = 10 30 mod 10 = 0
Karena telah menghasilkan sisa pembagian sama dengan 0, maka proses berakhir dan didapatlah GCD(100,30) = 10.
2.6.2 Bilangan Prima
Bilangan prima adalah bilangan bulat positif a, dimana a ≥ 2 hanya dapat dibagi dengan 1 dan bilangan itu sendiri. Seluruh bilangan prima adalah bilangan ganjil, kecuali 2 yang merupakan bilangan genap. Contoh bilangan prima adalah 2, 3, 5, 7, 11, 13, 17, ….
Untuk menguji apakah n merupakan bilangan prima atau bukan, kita cukup membagi n dengan sejumlah bilangan prima, dengan syarat bilangan prima ≤ √n. Jika n habis dibagi dengan salah satu dari bilangan prima tersebut, maka n bukan bilangan prima, tetapi jika n tidak habis dibagi oleh semua bilangan prima tersebut, maka n adalah bilangan prima.
Terdapat metode lain yang dapat digunakan untuk menguji keprimaan suatu bilangan bulat, yang terkenal dengan Teorema Fermat. Berikut pernyataan dari Teorema Fermat : Jika p adalah bilangan prima dan a adalah bilangan bulat yang tidak habis dibagi dengan p, yaitu GCD(a,p) = 1, maka : ap-1 ≡ 1 (mod p) (Mollin, 2008).
Teorema Fermat ini memiliki kelemahan yaitu terdapat bilangan bulat bukan prima p sedemikian sehingga ap–1 ≡ 1 (mod p). Bilangan bulat p seperti itu disebut bilangan prima semu (pseudoprimes). Bilangan bulat a yang menyebabkan ap–1 ≡ 1 (mod p),
dimana p adalah bilangan prima semu disebut dengan bilangan carmichael atau fermat’s liar. Akan tetapi, bilangan prima semu relatif jarang ditemukan.
Contoh :
Apakah p = 49 adalah bilangan prima?
a. Pilihlah sembarang bilangan bulat positif a dengan syarat 1<a<p.
b. Hitung ap-1 mod p sebanyak dua kali untuk menghindari ditemukan bilangan prima semu. Jika salah satu hasil perhitungan tidak sama dengan 1, maka bilangan bulat p bukan bilangan prima.
348 mod 49 = 43 648 mod 49 = 8
Karena ap-1 mod p ≠ 1, maka bilangan bulat p = 49 bukan bilangan prima.
2.6.3 Relatif Prima
Dua bilangan bulat a dan b dikatakan relatif prima jika GCD(a,b) = 1. Bilangan- bilangan a1, a2, …, anadalah relatif prima berpasangan (pairwise relatively prime) jika GCD(ai, aj) = 1 untuk 1 ≤ i <j ≤ n. Dengan demikian, sekumpulan bilangan bisa ditunjukkan apakah relatif prima atau tidak dengan mengevaluasi GCD dari semua pasangan bilangan yang mungkin. Jika GCD pasangan-pasangan tersebut semuanya bernilai 1, maka syarat pairwise relatively prime dipenuhi. Sebaliknya, jika salah satu GCD dari pasangan bilangan tersebut tidak sama dengan 1, maka kumpulan bilangan tersebut bukan pairwise relatively prime. Dan 2 (dua) bilangan prima pasti adalah pairwise relatively prime.
Contoh :
a. GCD(25,15) adalah : 25 mod 15 = 10 15 mod 10 = 5 10 mod 5 = 0
Bilangan-bilangan 27 dan 15 adalah bukan pairwise relatively prime karena GCD(27,15) = 3.
b. GCD(19,7) adalah : 19 mod 7 = 5 7 mod 5 = 2 5 mod 2 = 1 3 mod 1 = 0
Bilangan – bilangan prima 11 dan 7 adalah pairwise relatively prime karena GCD(11,7) = 1.
2.6.4 Algoritma Euclid
Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar dari 2 (dua) bilangan bulat. Algoritma ini didasarkan pada pernyataan berikut ini :
Dua bilangan bilangan bulat positif r0dan r1, dengan r0 ≥ r1, kemudian dihitung menggunakan algoritma pembagian :
r0 = q1 * r1+ r2, 0 <r2<r1 r1 = q2 * r2+ r3, 0 <r3<r2 rn-2 = qn-1 * rn-1+ rn 0 <rn<rn-1 rn-1 = qn * rn
Dari pernyataan tersebut, dapat diperoleh :
GCD(r0, r1) = GCD(r1, r2) = ……….. = GCD(rn-1,rn) = GCD(rn,0) = rn
Contoh : GCD(30,18) adalah : 30 = 1*18 + (30-18) 30 = 1*18 + 12
18 = 1*12 + (18 – 12) 18 = 1*12 + 6
12 = 2*6 Jadi, GCD(40,24)=6
2.6.5 Extended Euclidean
Algoritma Extended Euclidean ini merupakan perluasan dari algoritma Euclidean yang berfungsi untuk menentukan nilai x dan y sedemikian sehingga r0*x + r1*y = GCD(r0,r1) dengan r0 , r1merupakan bilangan bulat positif serta x dan y merupakan bilangan bulat. Dua bilangan bulat r0dan r1yang merupakan pairwise relatively prime dapat menemukan bilangan bulat x dan y sedemikian sehingga r0*x + r1*y = 1.
Dengan menggunakan algoritma Euclidean dan rumus : tj = tj-2 - qj–1 * tj-1 , j ≥ 2
Dengan tjadalah suatu barisan bilangan t1 , t2 , t3 ,…, tn dan qjdiperoleh dari perhitungan GCD(r0, r1) = 1 dengan r1-1
= tn. Sehingga diperoleh : rn = tn*r1 atau 1 = tn*r1.
Contoh : 13x + 8y = 1
Step 1: Hitung GCD dengan Algoritma Euclidean:
(1) 13 = 1 * 8 + 5 (2) 8 = 1 * 5 + 3 (3) 5 = 1 * 3 + 2 (4) 3 = 1 * 2 + 1
2 = 2 * 1 Maka GCD(13,8) = 1 Step 2: Menggunakan substitusi terbalik:
(4) 1 = 3 - 2
(3) = 3 – (5 - 3) = 2 * 3 – 5 (2) = 2(8 - 5) – 5= 2 * 8 – 3 * 5 (1) = 2 * 8 – 3(13 - 8) = 5 * 8 – 3 * 13 Penyelesaian: 13(-3) + 8(5)
Sehingga didapat nilai x = -3 dan y = 5.
2.6.6 Chinese Remainder Theorem
Chinese Remainder Theorem (CRT) adalah suatu teorema untuk menyelesaikan permasalahan pada seluruh sistem persamaan jika diketahui faktorisasi prima dari n.
Chinese Remainder Theorem ini ditemukan oleh matematikawan cina pada abad pertama, yang bernama Sun Tse. Jika ada suatu pertanyaan sebagai berikut:
“Tentukan sebuah bilangan bulat yang bila dibagi dengan 3 menyisakan 2, bila dibagi 4 menyisakan 3, dan bila dibagi 5 menyisakan 4.”
Dengan menggunakan Chinese Remainder Theorem akan ditemukan penyelesaian dari pertanyaan tersebut. Misalkan m1, m2, …, mn adalah bilangan bulat positif sedemikian sehingga PBB(mi, mj) = 1 untuk i ≠ j. Maka sistem dapat dihasilkan : x ≡ ak(mod mk), mempunyai sebuah solusi unik modulo m = m1x m2 x … x mn.. Maka, pernyataan Sun Tse dapat dapat diselesaikan sebagai berikut :
a. Rumuskan pernyataan Sun Tse dengan rumus x ≡ ak (mod mk).
x ≡ 2 (mod 3) x ≡ 3 (mod 4) x ≡ 4 (mod 5)
b. Hitung semua perkalian modulus.
N = 3*4*5 = 60
c. Buat himpunan untuk masing – masing persamaan dari angka terkecil yang memenuhi sampai perkalian ketiga modulus.
x1 = {2,5,8,11,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59}
x2 = {3,7,11,15,19,23,27,31,35,39,43,47,51,55,59}
x3= {4,9,14,19,24,29,34,39,44,49,54,59}
d. Iriskan ketiganya untuk mendapat nilai x.
x = x1⋂x2⋂x3= 59
e. Hitung interval LCM (The Least Common Multiple) dari ketiga modulus.
LCM(3,4,5) = 60 , sehingga x memenuhi akan berulang setiap interval 60 angka, yaitu x = {…,59,119,179,…} (Wandani, 2012).
2.7 Android
Android adalah sistem operasi untuk telepon seluler yang berbasiskan Linux.Android menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi mereka sendiri sehingga dapat digunakan oleh bermacam peranti penggerak. Awalnya Google Inc. membeli Android Inc. pendatang baru yang membuat software (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 pada perangkat seluler. Di lain pihak, Google merilis kode-kode Android dibawah lisensi Apache, sebuah lisensi perangkat lunak dan standar terbuka perangkat seluler.
Terdapat dua jenis distributor sistem operasi Android. Pertama yang dapat 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. Berikut adalah rangkaian perjalanan android
1. Kerjasama Android Inc. dengan Google Inc.8. Android Versi 2.3 (Gingerbread) 2. 2007 - 2008 Produk awal Android 9. Android Versi 3.0 (Honeycomb) 3. Android Versi 1.1 10. Android Versi 4.0 (ICS)
4. Android Versi 1.5 (Cupcake) 11. Android Versi 4.1-4.3 (Jelly Bean) 5. Android Versi 1.6 (Donut) 12. Android Versi 4.4 (KitKat) dan 6. Android Versi 2.0/2.1 (Eclair) 13. Android Versi 5.0 (Lollipop) 7. Android Versi 2.2 (Froyo)
2.8. Penelitian yang Relevan
Berikut ini beberapa penelitian tentang kriptografi yang berkaitan dengan algoritma One Time Pad dan Algoritma Hill Cipher:
1. Firman Rickson Saragih, membuat penelitian yang berjudul Penggunaan Kriptografi One Time Pad (Algoritma Vernam) dalam Pengamanan Informasi. Hasil penelitian yang diperoleh adalah One-time pad merupakan algoritma pengenkripsian data dan informasi yang relative sederhana dan mudah digunakan namun cukup aman dalam menjamin kerahasiaan informasi atau data yang ingin dikirimkan oleh pengirim pesan kepada penerima pesan tanpa dapat diketahui oleh pihak lain.
2. M. Rizki Novriandi Nasution membuat penelitian yang berjudul Implementasi Algoritma Hill Cipher dan RSA pada Enkripsi Hybrid Pesan SMS pada Android. Hasil penelitian yang diperoleh adalah kedua algoritma yang digunakan untuk melekukan proses enkripsi masing-masing algoritma memliki kelebihan masing-masing