PENGAMANAN DATA TEKS
SKRIPSI
YANSEN BOSTON SIMATUPANG
101401070
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
PENGAMANAN DATA TEKS
SKRIPSI
Diajukan untuk melengkapi tugas akhir dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
YANSEN BOSTON SIMATUPANG 101401070
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : IMPLEMENTASI KOMBINASI ALGORITMA
NTRUENCRYPT DAN STEGANOGRAFI END OF FILE PADA PENGAMANAN DATA TEKS
Kategori : SKRIPSI
Nama : YANSEN BOSTON SIMATUPANG
Nomor Induk Mahasiswa : 101401070
Program Studi : SARJANA (S1) ILMU KOMPUTER
Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI (FASILKOM-TI) UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, April 2015
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Amer Sharif, S.Si, M.Kom M. Andri B, ST, M.Comp.Sc, MEM.
NIP.197510082008011011
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
PERNYATAAN
IMPLEMENTASI KOMBINASI ALGORITMA NTRUENCRYPT DAN STEGANOGRAFI END OF FILE PADA
PENGAMANAN DATA TEKS
SKRIPSI
Penulis mengakui bahwa skripsi ini adalah hasil karya sendiri, kecuali beberapa ringkasan dan kutipan yang masing-masing disebutkan sumbernya.
Medan, Maret 2015
PENGHARGAAN
Puji syukur dan terima kasih penulis ucapkan kepada Tuhan Yesus Kristus yang telah menjaga, merawat dan melimpahkan kasih dan karunia-Nya kepada penulis, sehingga skripsi ini dapat diselesaikan dalam waktu yang telah ditetapkan.
Dengan segala kerendahan hati, pada kesempatan ini penulis menyampaikan terima kasih kepada semua pihak yang telah membantu penyelesaian skripsi ini. Penulis mengucapkan terima kasih kepada:
1. Bapak Prof. Dr. dr. Syahril Pasaribu, D.T.M.&H., M.Sc.(C.T.M.). Sp.A.(K.) selaku 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 sebagai Ketua Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara.
4. Ibu Maya Silvi Lydia, B.Sc., M.Sc. sebagai Sekretaris Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara dan Dosen Pembanding I yang telah memberikan saran dan kritikan dalam penyempurnaan skripsi ini kepada penulis.
5. Bapak Ade Candra, S.T., M.Kom selaku Dosen Pembimbing Akademik yang telah memberikan bimbingan dan dukungan kepada penulis.
6. Bapak M. Andri Budiman, S.T., M.Comp.Sc., M.E.M. selaku Dosen Pembimbing I yang telah memberikan arahan dan bimbingan kepada penulis. 7. Bapak Amer Sharif, S.Si., M.Kom selaku Dosen Pembimbing II yang telah
memberikan arahan dan bimbingan kepada penulis.
8. Ibu Maya Silvi Lydia, B.Sc., M.Sc. selaku Dosen Pembanding I yang telah memberikan saran dan kritikan dalam penyempurnaan skripsi ini kepada penulis.
9. Ibu Dian Rachmawati, S.Si, M.Kom selaku Dosen Pembanding II yang telah memberikan saran dan kritikan dalam penyempurnaan skripsi ini kepada penulis.
10.Kedua orangtua penulis Bapak W. Simatupang, S.Pd dan Ibu J. Panjaitan, S.pd, Abang penulis Hamonangan W.D. Simatupang, S.T. serta Adik penulis Tri Astral Simatupang dan Dian H. Simatupang yang telah memberikan dukungan berupa doa, harapan dan dukungan baik moril maupun materi. 11.Seluruh tenaga pengajar dan pegawai pada Fakultas Ilmu Komputer dan
Teknologi Informasi USU, khususnya Program Studi S-1 Ilmu Komputer. 12.Teman-teman mahasiswa S-1 Ilmu Komputer Rivai H. Purba, Hengky P. F.
Gulo, Lorent O. Barus, S.Kom., Kurniawan W.A.P. Hutagaol, Johanes P. Saragih, Gunalan Anggirasa, Timothy, S. Kom., Janwandi R. Sinaga, S.Kom, Yohanes Silitonga dan semua rekan-rekan kuliah Stambuk 2010 yang telah berbagi kebersamaan selama berada di S-1 Ilmu Komputer.
14.Teman-teman komunitas LOGIC yang telah berbagi kebersamaan selama menyelesaikan skripsi ini.
15.Dan semua pihak yang terlibat langsung atau tidak langsung yang penulis tidak dapat tulisan satu per satu.
Penulis menyadari bahwa skripsi ini masih jauh dari kesempurnaan. Oleh karena itu penulis menerima kritik dan masukan dari semua pihak yang bersifat membangun dan menyempurnakan skripsi ini. Penulis berharap semoga skripsi ini bermanfaat bagi penulis sendiri pada khususnya dan pembaca pada umumnya.
Medan, 10 Maret 2015
ABSTRAK
Perkembangan teknologi jaringan komputer menyebabkan terhubungnya satu komputer dengan komputer lainnya. Hal ini membuka peluang adanya ancaman terhadap keamanan data. Untuk melindungi data dari ancaman tersebut adalah dengan memanfaatkan teknik kriptografi dan steganografi. Algoritma kriptografi yang digunakan pada penelitian ini adalah algoritma NTRUEncrypt. Algoritma ini merupakan algoritma yang memanfaatkan polynomial. Plaintext diubah dahulu kedalam bentuk polynomial agar dapat melakukan proses enkripsi dan dekripsi. Steganografi yang digunakan adalah metode end of file. Metode ini melakukan proses penyisipan data pada akhir citra. Tahap pertama yang dilakukan adalah menentukan parameter set yang digunakan untuk membangkitkan kunci privat dan kunci publik. Selanjutnya plaintext yang berformat *.txt dienkripsi dengan algoritma NTRUEncrypt menggunakan kunci publik dan menghasilkan ciphertext, kemudian disisipkan ke dalam sebuah citra yang berformat *.bmp dengan metode end of file. Proses penyisipan pesan pada citra asli akan menghasilkan citra stego. Citra stego akan diekstraksi kembali menjadi citra asli dan ciphertext. Ciphertext yang dihasilkan akan didekripsi menggunakan kunci privat untuk mendapatkan plaintext semula. Secara keseluruhan, waktu yang diperlukan untuk semua proses berbanding lurus dengan panjang polynomial (parameter N), waktu proses enkripsi lebih cepat dibandingkan waktu proses dekripsi dan waktu proses penyisipan lebih lama dibandingkan proses ekstraksi ciphertext.
IMPLEMENTATION OF COMBINATION OF NTRUENCRYPT ALGORITMH AND STEGANOGRAPHY END OF FILE
ON TEXT DATA SECURITY
ABSTRACT
The development of computer network technology causes connection of one computer to another computer. This makes the chances of a threat to the security of the data.To protect this data is to use cryptography and steganography techniques.Cryptographic algorithms used in this study is NTRUEncrypt algorithm. This algorithm is an algorithm that utilizes polynomial. Plaintext is converted first into a polynomial form that can perform encryption and decryption process. Steganography that used is end of file method. This method does data insertion process at the end of the image. The first phase is to determine the set of parameters used to generate the private key and public key. Furthermore plaintext file with *.txt format encrypted with NTRUEncrypt algorithm using the public key and produce the ciphertext, and then inserted into an image file with * .bmp format with the end of file method. The process of inserting a message in the original image will produce a stego image. Stego image will be extracted back into the original image and the ciphertext. The ciphertext that resulted will be decrypted using the private key to obtain the original plaintext. Overall, the execution time for all processes is proportional to the length of the polynomial (parameter N), the encryption process time is faster than the decryption process time and insertion process time longer than the extraction process time.
DAFTAR ISI
1.1 Latar Belakang Masalah 1
1.2 Rumusan Masalah 2
2.2 Landasan Matematika Kriptografi 9
2.2.1 Bilangan Prima 9
2.2.2 Faktor Persekutuan Terbesar (FPB) 10
2.2.3 Aritmetika Modulo 11
2.5.1 Format File Citra Bitmap 22
2.6 Steganografi 24
2.6.1 End of File 26
BAB III ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem 28
3.1.1 Analisis Masalah 28
3.1.2 Analisis Persyaratan 29
3.1.2.2 Persyaratan Non-Fungsional 30
3.1.3 Analisis Proses 30
3.2 Perancangan Sistem 31
3.2.1 Perancangan Flowchart Aplikasi 31
3.2.1.1 Flowchart Enkripsi Algoritma NTRUEncrypt dan Penyembunyian Data EOF 32 3.2.1.2 Flowchart Pembangkitan Kunci 33 3.2.1.3 Flowchart Enkripsi NTRUEncrypt 34 3.2.1.4 Flowchart Penyisipan Steganografi EOF 35 3.2.1.5 Flowchart Ektraksi EOF dan Dekripsi
Algoritma NTRUEncrypt 36 3.2.1.6 Flowchart Ekstraksi Steganografi EOF 37 3.2.1.7 Flowchart Dekripsi NTRUEncrypt 38 3.2.2 Perancangan Unified Modeling Languange (UML) 39
3.2.2.1 Use Case Diagram 39
3.2.2.2 Sequence Diagram 45
3.2.2.3 Activity Diagram 46
3.2.3 Rancangan Interface Aplikasi 48
3.2.3.1 Rancangan Interface Form Home 48 3.2.3.2 Rancangan Interface Form Pengirim 49 3.2.3.3 Rancangan Interface Form Penerima 51 3.2.3.4 Rancangan Interface Form Petunjuk 52
BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi Sistem 53
4.2.1 Proses Enkripsi Plaintext dan Penyisipan Ciphertext 58 4.2.2 Proses Ekstraksi Ciphertext dan Dekripsi Ciphertext 60
4.3 Hasil Pengujian 62
4.3.1 Pengujian Waktu Proses Pembangkitan Kunci 62 4.3.2 Pengujian Waktu Proses Enkripsi dan Dekripsi 63 4.3.3 Pengujian Waktu Proses Penyisipan dan Ekstraksi 65 4.3.4 Pengujian Hasil Penyisipan pada Setiap Parameter Set 66 4.3.5 Pengujian antara Parameter Set dengan
Warna Blur Pada Citra 67
BAB V KESIMPULAN DAN SARAN
5.1 Kesimpulan 70
5.2 Saran 71
DAFTAR TABEL
Tabel 2.1 Standar Parameter pada Algoritma NTRUEncrypt 15
Tabel 2.2 Nilai Invers f Modulo p (fp) 17
Tabel 2.3 Nilai Invers f Modulo q (fq) 18
Tabel 3.1 Dokumentasi Naratif Use Case Bangkitkan Kunci 40
Tabel 3.2 Dokumentasi naratif Use Case Enkripsi 41
Tabel 3.3 Dokumentasi naratif Use Case Penyisipan 42
Tabel 3.4 Dokumentasi naratif Use Case Ekstraksi 43
Tabel 3.5 Dokumentasi naratif Use Case Dekripsi 44
Tabel 4.1 Spesifikasi Kebutuhan Perangkat Keras untuk Implementasi 52
Tabel 4.2 Parameter Set Pengujian Sistem 57
Tabel 4.3 Data Waktu Pembangkitan Kunci 62
Tabel 4.4 Data Waktu Proses Enkripsi dan Dekripsi 64 Tabel 4.5 Data Waktu Proses Penyisipan dan Ekstraksi 65
Tabel 4.6 Ukuran Citra Setelah Penyisipan Pesan 66
DAFTAR GAMBAR
Gambar 2.1 Skema Kriptogafi Simetri 8
Gambar 2.2 Skema Kriptografi Asimetri 9
Gambar 2.3 Sistem koordinat citra berukuran M x N 22 Gambar 2.4 Contoh Gambar dengan Format Bitmap (.bmp) 24 Gambar 2.5 Perbedaan Steganografi dan Kriptografi 25 Gambar 2.6 Proses penyisipan dan ekstraksi data rahasia 26 Gambar 3.1 Flowchart enkripsi dan penyisipan pesan 32
Gambar 3.2 Flowchart pembangkitan kunci 33
Gambar 3.3 Flowchart enkripsi plaintext 34
Gambar 3.4 Flowchart Penyisipan Ciphertext 35
Gambar 3.5 Flowchart ekstraksi dan dekripsi pesan 36
Gambar 3.6 Flowchart Ekstraksi Ciphertext 37
Gambar 3.7 Flowchart dekripsi Ciphertext 38
Gambar 3.8 Use Case Diagram Sistem 39
Gambar 3.9 Sequence diagram enkripsi dan penyisipan plaintext 45 Gambar 3.10 Sequence diagram ekstraksi dan dekripsi ciphertext 46 Gambar 3.11 Activity diagram enkripsi dan penyisipan plaintext 47 Gambar 3.12 Activity diagram ekstraksi dan dekripsi ciphertext 48
Gambar 3.13 Rancangan Interface Form Home 49
Gambar 3.14 Rancangan Interface Form Pengirim 50
Gambar 3.15 Rancangan Interface Form Penerima 51
Gambar 3.16 Rancangan Interface Form Petunjuk 52
Gambar 4.1 Form Home 54
Gambar 4.2 Form Pengirim 55
Gambar 4.3 Form Penerima 56
Gambar 4.4 Form Petunjuk 56
Gambar 4.5 Pesan yang Akan Disipkan Pesan (DSC0347.bmp) 57
Gambar 4.6 Proses Pembangkitan Kunci Privat 58
Gambar 4.7 Proses Pembangkitan Kunci Publik 59
Gambar 4.8 Proses Enkripsi Data 59
Gambar 4.9 Proses Penyisipan Ciphertext 60
Gambar 4.10 Proses Ekstraksi Pesan 61
Gambar 4.11 Proses Dekripsi Pesan 61
DAFTAR LAMPIRAN
Halaman
Listing Program A-1
ABSTRAK
Perkembangan teknologi jaringan komputer menyebabkan terhubungnya satu komputer dengan komputer lainnya. Hal ini membuka peluang adanya ancaman terhadap keamanan data. Untuk melindungi data dari ancaman tersebut adalah dengan memanfaatkan teknik kriptografi dan steganografi. Algoritma kriptografi yang digunakan pada penelitian ini adalah algoritma NTRUEncrypt. Algoritma ini merupakan algoritma yang memanfaatkan polynomial. Plaintext diubah dahulu kedalam bentuk polynomial agar dapat melakukan proses enkripsi dan dekripsi. Steganografi yang digunakan adalah metode end of file. Metode ini melakukan proses penyisipan data pada akhir citra. Tahap pertama yang dilakukan adalah menentukan parameter set yang digunakan untuk membangkitkan kunci privat dan kunci publik. Selanjutnya plaintext yang berformat *.txt dienkripsi dengan algoritma NTRUEncrypt menggunakan kunci publik dan menghasilkan ciphertext, kemudian disisipkan ke dalam sebuah citra yang berformat *.bmp dengan metode end of file. Proses penyisipan pesan pada citra asli akan menghasilkan citra stego. Citra stego akan diekstraksi kembali menjadi citra asli dan ciphertext. Ciphertext yang dihasilkan akan didekripsi menggunakan kunci privat untuk mendapatkan plaintext semula. Secara keseluruhan, waktu yang diperlukan untuk semua proses berbanding lurus dengan panjang polynomial (parameter N), waktu proses enkripsi lebih cepat dibandingkan waktu proses dekripsi dan waktu proses penyisipan lebih lama dibandingkan proses ekstraksi ciphertext.
IMPLEMENTATION OF COMBINATION OF NTRUENCRYPT ALGORITMH AND STEGANOGRAPHY END OF FILE
ON TEXT DATA SECURITY
ABSTRACT
The development of computer network technology causes connection of one computer to another computer. This makes the chances of a threat to the security of the data.To protect this data is to use cryptography and steganography techniques.Cryptographic algorithms used in this study is NTRUEncrypt algorithm. This algorithm is an algorithm that utilizes polynomial. Plaintext is converted first into a polynomial form that can perform encryption and decryption process. Steganography that used is end of file method. This method does data insertion process at the end of the image. The first phase is to determine the set of parameters used to generate the private key and public key. Furthermore plaintext file with *.txt format encrypted with NTRUEncrypt algorithm using the public key and produce the ciphertext, and then inserted into an image file with * .bmp format with the end of file method. The process of inserting a message in the original image will produce a stego image. Stego image will be extracted back into the original image and the ciphertext. The ciphertext that resulted will be decrypted using the private key to obtain the original plaintext. Overall, the execution time for all processes is proportional to the length of the polynomial (parameter N), the encryption process time is faster than the decryption process time and insertion process time longer than the extraction process time.
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Perkembangan teknologi jaringan komputer menyebabkan terhubungnya satu komputer dengan komputer lainnya. Hal ini membuka banyak peluang dalam pengembangan aplikasi komputer tetapi juga membuat peluang adanya ancaman terhadap pengubahan dan pencurian data. Sebuah aplikasi yang melintasi jaringan publik seperti internet diasumsikan dapat diakses oleh siapapun termasuk orang-orang atau pihak-pihak yang memang berniat untuk mencuri atau mengubah data. Untuk melindungi data tersebut adalah dengan memanfaatkan teknik kriptografi dan steganografi.
Kriptografi adalah ilmu yang mempelajari bagaimana supaya pesan atau dokumen aman, tidak bisa dibaca oleh pihak yang tidak berhak. Kriptografi memiliki proses utama dalam menjaga dan menyandikan sebuah pesan. Proses enkripsi merupakan pengoperasian fungsi enkripsi menggunakan kunci enkripsi pada plaintext
sehingga dihasilkan ciphertext. Sedangkan untuk proses dekripsi merupakan pengoperasian fungsi dekripsi menggunakan kunci dekripsi pada ciphertext sehingga dihasilkan plaintext. Proses enkripsi dan dekripsi dalam kriptografi merupakan proses yang utama.
NTRUEncrypt adalah algoritma yang tergolong ke dalam algoritma yang menggunakan sistem kunci publik. Algoritma ini dibuat oleh tiga orang yaitu Jeffrey Hoffstein, Jill Pipher dan Joseph Silverman. Prosesnya NTRUEncrypt menggunakan operasi terhadap polynomial. Sehingga dalam prakteknya pesan perlu diubah dahulu kedalam bentuk polynomial untuk dapat dilakukan proses enkripsi dan dekripsi. Proses penting pada implementasi algoritma NTRUEncrypt adalah penentuan parameter yang digunakan dan pembangkitan kunci privat dan kunci publik, proses enkripsi, dan proses dekripsi.
Metode EOF merupakan salah satu teknik yang digunakan dalam steganografi. Metode ini menggunakan cara dengan menyisipkan data pada akhir file. Sehingga, tidak akan mengganggu kualitas data awal yang akan disisipkan pesan. Namun, ukuran file setelah disisipkan pesan rahasia akan bertambah.
Beberapa penelitian terdahulu yang berhubungan dengan penelitian ini antara lain tentang algoritma NTRUEncrypt yaitu Implementasi Algoritma Kunci Publik
NTRUEncrypt pada Add-InMicrosoft Outlock (Sitorus, 2012), sedangkan steganografi dengan metode End of File yaitu Implementasi Pengenkripsian dan Penyembunyian Data Menggunakan Tiny Encryption Algorithm dan End of File (Alfian, 2013).
Berdasarkan uraian di atas, maka penulis bermaksud untuk mengimplementasikan algoritma kriptografi NTRUEncrypt dan Steganografi dengan metode End of File (EOF). Oleh sebab itu, penulis mengambil tugas akhir dengan
judul “Implementasi Kombinasi Algoritma NTRUEncrypt Dan Steganografi End Of File Pada Pengamanan Data Teks”.
1.2. Rumusan Masalah
1.3. Batasan Masalah
Adapun batasan masalah dalam tugas akhir ini adalah sebagai berikut:
a. Jenis file citra asli yang digunakan adalah citra dengan format bitmap (.bmp) b. Plainteks dapat diinputkan langsung atau berupa file .txt.
c. Pesan dienkripsi menggunakan algoritma NTRUEncrypt dan disisipkan menggunakan metode End of File (EOF).
d. Parameter yang digunakan dalam algoritma NTRUEncrypt, yaitu N sebagai panjang polynomial, p sebagai small modulus, q sebagai large modulus dan df untuk nilai koefisien kunci privat telah ditetapkan terlebih dahulu untuk menghindari kesalahan pada saat enkripsi dan dekripsi.
e. Panjang maksimal pesan yang dienkripsi adalah 247 karakter. f. Bahasa pemrograman menggunakan Visual Studio C# (sharp).
1.4. Tujuan Penelitian
Tujuan penelitian ini adalah untuk merancang dan mengimplementasikan pengenkripsian data teks menggunakan algoritma NTRUEncrypt dan menyisipkannya ke dalam media gambar bitmap dengan metode End of File.
1.5. Manfaat Penelitian
1.6. Metode Penelitian
Metodologi penelitian yang akan digunakan adalah:
1. Studi Literatur
Studi literatur dilakukan dengan peninjauan terhadap buku, jurnal, dan hasil penelitian untuk mengetahui algoritma NTRUEncrypt dan Steganografi End of File yang kemudian melalui kedua metode tersebut akan menghasilkan suatu kombinasi.
2. Analisis dan Perancangan
Dengan adanya rumusan dan batasan masalah, kebutuhan perancangan dianalisis disertai pembuatan flowchart, Unified Modeling Language(UML), dan design interface.
3. Implementasi
Implementasi berupa aplikasi yang mampu mengenkripsi maupun mendekripsi data teks menggunakan algoritma NTRUEncrypt dan menyembunyikannya dengan menggunakan steganografi End Of File.
4. Pengujian
Metode ini dilaksanakan dengan melakukan pengujian terhadap gambar yang telah disisipi pesan dengan melihat kriteria penyembunyian pesan, yaitu recovery dan
fidelity. Pada pengujian recovery, pesan yang disembunyikan harus dapat diungkap kembali. Sedangkan fidelity, mutu citra penampung tidak jauh berubah setelah penambahan ciphertext.
5. Dokumentasi dan laporan Akhir
1.7. Sistematika Penelitian
Sistematika penulisan skripsi ini terdiri dari beberapa bagian utama, sebagai berikut:
BAB 1: PENDAHULUAN
Bab ini menguraikan Latar Belakang, Rumusan Masalah, Tujuan, Batasan Masalah dan Sistematika Penulisan Skripsi.
BAB 2: TINJAUAN PUSTAKA
Bab ini berisi rangkuman informasi yang dihimpun dari pustaka yang relevan dengan topik yang menjadi objek kajian, untuk memperluas basis informasi dalam melakukan kajian dan/atau akan digunakan sebagai basis argumentasi di dalam mengemukakan pandangan.
BAB 3: ANALISIS DAN PERANCANGAN SISTEM
Bab ini berisi tentang analisis dan perancangan sistem dengan menggunakan flowchart
atau diagram alir serta perancangan interface atau antarmuka sistem untuk menghasilkan suatu rancang bangun yang pada tahap selanjutnya diimplementasikan dengan bahasa pemrograman.
BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM
Menguraikan analisis dan hasil yang diperoleh di akhir pelaksanaan Skripsi dan pokok-pokok kesimpulan yang dapat dikemukakan sehubungan dengan pencapaian hasil kajian algoritma NTRUEncrypt dan steganografi End of File.
BAB 5: KESIMPULAN DAN SARAN
TINJAUAN PUSTAKA
2.1. Kriptografi
Kriptografi adalah ilmu yang mempelajari bagaimana supaya pesan atau dokumen kita
aman, tidak bisa dibaca oleh pihak yang tidak berhak. Kriptografi mempunyai sejarah
yang sangat panjang. Sejak jaman Romawi, Yulius Caesar telah menggunakan teknik
kriptografi yang sekarang dianggap kuno dan sangat mudah dibobol untuk keperluan
militernya. Pada perang dunia kedua, Jerman dan Jepang menggunakan kriptografi
untuk keperluan komunikasi militernya (Kurniawan, 2004).
Kriptografi berasal dari bahasa Yunani. Menurut bahasa tersebut kata
kriptografi dibagi menjadi dua, yaitu kripto dan graphia. Kripto berarti rahasia dan
graphia berarti tulisan. Kriptografi adalah ilmu untuk menjaga keamaan pesan ketika
pesan dikirim dari suatu tempat ke tempat yang lain (Ariyus, 2006).
Sistem kriptografi terdiri dari lima bagian (Sadikin, 2012), yaitu:
1. Plaintext: pesan atau data dalam bentuk aslinya yang dapat terbaca. Plaintext
adalah masukan bagi algoritma enkripsi.
2. Secret Key: yang juga merupakan masukan bagi algoritma enkripsi merupakan
nilai yang bebas terhadap teks asli dan menentukan hasil keluaran algoritma
enkripsi.
3. Ciphertext: merupakan keluaran algoritma enkripsi. Ciphertext dapat dianggap
sebagai pesan dalam bentuk tersembunyi. Algoritma enkripsi yang baik akan
4. Algoritma enkripsi: memiliki dua masukan, yaitu teks asli dan kunci rahasia.
Algoritma enkripsi melakukan trasformasi terhadap teks asli sehingga
menghasilkan teks sandi.
5. Algoritma dekripsi: memiliki dua masukan, yaitu teks sandi dan kunci rahasia.
Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli.
Berdasarkan kunci yang dipakai pada proses enkripsi dan dekripsi, kriptografi
dibagi ke dalam dua bagian, yaitu kriptografi simetri, kriptografi asimetri.
2.1.1. Kriptografi Simetri
Algoritma ini sering disebut dengan algoritma klasik karena memakai kunci yang
sama untuk kegiatan enkripsi dan dekripsi. Algoritma ini sudah ada sejak lebih dari
4000 tahun yang lalu. Bila mengirim pesan dengan menggunakan algoritma ini,
sipenerima pesan harus diberitahu kunci pesan tersebut agar bisa mendekripsikan
pesan yang dikirim. Keamanan dari pesan yang menggunakan algoritma ini
tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain maka orang
tersebut akan dapat melakukan enkripsi dan dekripsi. Algoritma yang memakai kunci
simetri di antaranya, Data Encryption Standard (DES), International Data Encryption
Algorithm (IDEA), Advanced Encryption Standard (AES) dan One Time Pad (OTP)
(Ariyus, 2008).
Enkripsi dan dekripsi dengan algoritma simetri dapat dituliskan menjadi:
EK(M) = C……….(1)
DK(C) = M………(2)
Berdasarkan rumus (1), M adalah plaintext, C adalah Ciphertext, Ek adalah algoritma
enkripsi dan pada rumus (2) Dk adalah algoritma dekripsi. Proses algoritma simetri
Gambar 2.1 Skema Kriptografi Simetri
Algoritma simetrik dibagi menjadi 2 kategori, yaitu block algorithms dan
stream algorithms. Block algorithms, data dienkripsi dalam blok-blok data. Block
cipher akan mengenkripsi blok data satu-persatu sampai blok plaintext terakhir.
Sedangkan stream algorithms, data dienkripsi dalam bit-bit data (Scheiner, 1996).
2.1.2. Kriptografi Asimetri
Algoritma asimetri sering juga dengan algoritma kunci publik, dengan arti kata kunci
yang digunakan untuk melakukan enkripsi dan dekripsi berbeda. Pada algoritma
asimetri kunci terbagi menjadi dua bagian, yaitu:
1. Kunci umum (public key): kunci yang boleh semua orang tahu (dipublikasikan).
2. Kunci rahasia (private key): kunci yang dirahasiakan.
Kunci-kunci tersebut berhubungan satu sama lain. Dengan kunci publik orang
dapat mengenkripsi pesan tetapi tidak bisa mendekripsinya. Hanya orang yang
memiliki kunci rahasia yang dapat mendekripsi pesan tersebut. Algoritma asimetri
bisa mengirimkan pesan dengan lebih aman daripada algoritma simetri. Contoh, Bob
mengirim pesan ke Alice menggunakan algoritma asimetri. Hal yang harus dilakukan
adalah:
1. Bob memberitahukan kunci publiknya ke Alice.
2. Alice mengenkripsi pesan dengan menggunakan kunci publik Bob
3. Bob mendekripsi pesan dari Alice dengan kunci rahasianya.
4. Begitu juga sebaliknya jika Bob ingin mengirim pesan ke Alice
Plaintext Enkripsi Dekripsi Plaintext
Kunci
Algoritma yang memakai kunci publik di antaranya, Diffie-Hellman (DH),
RSA dan NTRUEncrypt. Enkripsi menggunakan algoritma asimetri dapat dituliskan
menjadi:
EK(M) = C
Meskipun kunci publik dan kunci rahasia berbeda, dekripsi dengan menggunakan
kunci rahasia (Scheiner, 1996), yaitu
DK(C) = M
Gambar 2.2 merupakan gambaran mengenai proses enkripsi dan dekripsi
menggunakan algoritma asimetri.
Gambar 2.2 Skema Kriptografi Asimetri
2.2. Landasan Matematika Kriptografi
Matematika merupakan bagian penting dalam konsep kriptografi, sehingga
memerlukan pemahaman beberapa ilmu matematika yang sering digunakan dalam
kriptografi. Kriptografi dengan kunci publik berbasis pada persoalan dari teori
bilangan yang merupakan bagian dari matematika.
2.2.1. Bilangan Prima
Sebuah bilangan integer a>1 disebut bilangan prima jika dan hanya jika bilangan
tersebut habis dibagi satu dan bilangan itu sendiri. Jumlah bilangan prima telah
dibuktikan Euclid (300SM) adalah tak terhingga, namun semakin besar bilangan
integer semakin jarang bilangan prima. Sebagai contoh, 7 adalah bilangan prima
karena hanya habis dibagi oleh 1 dan 7 (Sadikin, 2012).
Plaintext Enkripsi Dekripsi Plaintext
Kunci Publik
Ciphertext
2.2.2 Faktor Persekutuan Terbesar (FPB)
Dua buah bilangan bulat dapat memiliki faktor pembagi yang sama. Faktor pembagi
bersama yang terpenting adalah faktor persekutuan terbesar (greatest common
divisor-gcd) atau FPB (Munir, 2007). Dua buah bilangan a dan b merupakan bilangan bulat
tidak nol. FPB dari a dan b adalah bilangan bulat terbesar adalah c sehingga c|a dan
c|b, maka FPB a dan b dapat dinyatakan FPB(a,b)=c. Misalkan 36 mempunyai
pembagi {1, 2, 3, 4, 6, 9, 12, 18} dan 24 mempunyai pembagi {1, 2, 3, 4, 6, 8, 12}.
Faktor pembagi 36 dan 24 {1, 2, 3, 4, 6, 12} yang terbesar adalah 12, sehingga
FPB(36, 24) = 12.
Untuk menemukan FPB dari dua buah bilangan maka digunakan satu
algoritma, yaitu algoritma Euclidean. Algoritma Euclidean ditemukan oleh Euclid,
seorang matematikawan Yunani yang menuliskan algoritmanya tersebut dalam
bukunya yang terkenal, Element. Euclid membuat algoritma yang dapat menemukan
gcd dua buah bilangan integer a dan b dengan secara rekursif. Terdapat dua kasus,
pertama kasus dasar, yaitu ketika b = 0
gcd(a,0) = a
dan kasus umum ketika b ≠ 0
gcd(a,b) = gcd(b,a mod b)
Kasus dasar menyatakan bila b = 0 maka didefenisikan nilai gcd adalah a.
sedangkan kasus umum menyatakan untuk mencari (a,b) dapat direduksi menjadi
gcd(b, a mod b). jadi kasus umum dapat dikenakan berkali-kali sampai akhirnya akan
bertemu dengan kasus dasar untuk menemukan gcd(a,b) (Sadikin, 2012).
Contoh :
Carilah FPB dari 88 dan 36 menggunakan algoritma Euclidean
Jawab:
Aplikasi kasus umum
gcd(96,42) = gcd(42,96 mod 42) = gcd(42,12)
gcd(42,12) = gcd(12,42 mod 12) = gcd(12,6)
gcd(12,6) = gcd(6,12 mod 6) = gcd(6,0)
gcd(6,0) = 6
Penjelasan gcd (6,0) = 6
6 mempunyai pembagi {0,1,2,3,6}, sedangkan 0 mempunyai pembagi untuk semua
bilangan integer, faktor pembagi 6 dan 0 terbesar adalah 6.
Sehingga dapat dibuktikan bahwa gcd(6,0) = 6
karena itu, gcd(96,42) = 6.
2.2.3 Aritmetika Modulo
Aritmetika modulo merupakan aspek penting dalam komputasi integer, khususnya
pada aplikasi kriptografi. Operator yang digunakan pada aritmetika modulo adalah
mod. Operator mod memberikan sisa pembagian. Misalkan a adalah bilangan bulat
dan m adalah adalah bilangan bulat lebih besar dari nol. Operasi a mod m (dibaca “a
modulo m”) memberikan sisa jika a dibagi dengan m.
Notasi: a mod m = r sedemikian sehingga a = mq + r, dengan 0 ≤ r < m.
Bilangan m disebut modulos atau modulo, dan hasil aritmetika modulo m terletak dalam himpunan {0,1,2,…,m-1}(Sadikin, 2012).
Contoh :
Beberapa hasil operasi dengan operator modulo:
i. 43 mod 10 = 3, karena 43 = 10.3 + 3
ii. 21 mod 8 = 5, karena 21 = 8.2 + 5
iii. 6 mod 8 = 6, karena 6 = 8.0 + 6
iv. 0 mod 14 = 0, karena 0 = 0.14 + 0
v. – 43 mod 6 = 1 karena – 41 = 6. – 7 +1
2.3. Polynomial Ring
Bilangan riil adalah bilangan-bilangan yang merupakan gabungan bilangan rasional
dan irasional. Bilangan riil disimbolkan dengan R. Sebuah ring A adalah suatu
himpunan R yang mempunyai dua operasi yaitu penjumlahan dan perkalian, yang
1. R dengan operator penjumlahan (+)
- 0 + R = R + 0 = R ( identitas penjumlahan)
- ∀a,b ∈ R : a + b = b + a (komutatif)
- ∀a,b,c ∈ R : (a + b) + c = a + (b + c) (asosiatif)
- ∀a ∈ R : a-1∈ R : a + a-1 = a-1 + a = 0 (invers)
2. Operator perkalian (x)
- ∀a,b ∈ R : a × b = b × a (komutatif)
- ∀a,b,c ∈ R : a × (b × c) = (a × b) × c (asosiatif)
- 1 x R = R x 1 = R ( identitas perkalian)
3. Gabungan perkalian dan penjumlahan
- ∀a,b,c ∈ R : a x (b + c) = (a x b) + (a x c) (distributif)
Struktur aljabar field merupakan pengkhususan terhadap struktur aljabar ring.
Kondisi operator untuk field adalah kondisi operator untuk ring dengan tambahan
operator perkalian x memiliki invers untuk semua simbol yang bukan identitas
penjumlahan. Setiap ring di mana setiap elemen non-zero mempunyai invers perkalian
disebut field (Sadikin, 2012).
Polynomial berderajat n mempunyai bentuk umum:
f(x) = anxn + an-1xn-1+ …+a2x2 + a1x1 +a0
dimana a merupakan bilangan real. Meskipun rumus umum terlihat rumit, untuk lebih
sederhana dapat dilihat pada contoh:
f(x) = 6x4 + 7x3 + x2 + 5
Jika R adalah suatu ring, maka R[x] adalah polynomial ring dengan variable x.
Setiap elemen dari R[x] adalah polynomial dengan variabel x dan koefisien dari ring R. Sebaliknya, setiap polynomial dengan variabel x dan koefisien dari ring R
merupakan elemen dari R[x] (Kromodimoejo, 2010).
Sebagai contoh, dengan ring untuk koefisien berupa field K = Z/3Z,
x5 + 2x3 + x2 + 2
merupakan polynomial elemen K[x] dengan degree (pangkat terbesar) 5. Suatu
polynomial p dapat ditulis:
dimana n adalah degree dari p dan ai adalah koefisien untuk suku dengan pangkat i
jadi setiap ai adalah elemen dari ring R, dan an ≠ 0. Sebetulnya ai berlaku untuk
setiap i ∊ Z tetapi ai = 0 untuk i > n dan i < 0. Untuk contoh x5 + 2x3 + x2 + 2, a0 = 2,
a1 = 0, a2 = 1, a3 = 2, a4 = 2 dan a5 = 1.
Aritmatika dalam Polynomial ring R[x] adalah sebagai berikut:
1. Penjumlahan dilakukan dengan menjumlahkan semua suku dari kedua polynomial
(suku dengan pangkat yang sama dijadikan satu dengan menjumlahkan koefisien).
Sebagai contoh, dengan R = Z/3Z, jika p1 = x5+2x3+x2+2 dan p2 = x4+2x3+x2,
maka p1+p2 = x5+x4+x3+2x2+2. Penjumlahan koefisien dilakukan dengan
aritmetika R, dalam contoh menggunakan aritmatika modulo 3.
2. Perkalian dilakukan dengan mengalikan setiap suku dari polynomial pertama
dengan setiap suku dari polynomial kedua dan menjumlahkan semua hasil
perkalian. Sebagai contoh, dengan R = Z/3Z, jika p1 = x2+2x dan p2 = 2x+1 maka
p1.p2 = (x2+2x)( 2x+1)= 2x3+2x2+2. Perkalian koefisien dilakukan dengan
aritmetika R, dalam contoh menggunakan aritmatika modulo 3.
Menggunakan notasi penjumlahan
p1 = ∑=0 � dan p2 = ∑=0 �
maka aritmetika penjumlahan pada polynomial ring ditulis menjadi:
p1 + p2 = ( ∑=0 � ) + (∑=0 � )
= ∑=0ax , + �
Sedangkan, untuk aritmetika perkalian ditulis menjadi:
p1.p2 = ( ∑=0 � ) . (∑ =0 � )
= ∑=0 � . (∑ =0 � ))
= ( ∑=0 ∑ =0 � + )
2.4. Algoritma NTRUEncrypt
NTRUEncrypt ditemukan oleh Jeffrey Hoffstein, Jill Pipher dan Joseph Silverman.
Algoritma ini pertama kali diperkenalkan oleh Hoffstein pada CRYPTO’96 dan
dipublikasikan pada tahun 1998. Algoritma ini telah dimodifikasi sejak pertama kali
diperkenalkan, NTRU telah berganti nama menjadi NTRUEncrypt (Rosenberg, 2004).
Polynomial ring (ℤ/pZ)[x]/(xN-1), merupakan bagian penting dalam algoritma
NTRUEncrypt, di mana modulo p akan mereduksi koefisien pada polinomial.
Aritmetika pada polynomial ring yaitu penjumlahan, perkalian dan invers merupakan
bagian penting dalam algoritma NTRUEncrypt. Ring ini memiliki irreducible
polynomial XN-1. Karakter irreducible polynomial mirip dengan bilangan prima, yaitu
tidak bisa difaktorkan ke dalam bentuk polinomial lain, tidak bisa habis dibagi kecuali
dengan dirinya dan satu.
Contoh
Irreducible polynomial pada perkalian polynomial dengan N=3 pada ℤ/3ℤ[X]/(XN-1).
a × b = (1 + 2x + 2x2) × ( 2x + x2)
= 2x + 5x2 + 6x3 + 2x4
Polynomial hasil perkalian terdapat 6x3 dan 2x4 (melebihi nilai N-1=3-1=2), maka
diperlukan reduksi terhadap hasil perkalian. Irreducible polynomial adalah xN-1, maka
xN-1 = 0, sehingga x3 = 1. 6x3 dan 2x4 akan direduksi menjadi:
6x3 = 6 × x3 = 6 × 1 = 6, dan
2x4 = 2x × x3 = 2x × 1 = 2x,
Sehingga hasil a × b, menjadi:
a × b = (1 + 2x + 2x2) × ( 2x + x2)
= 2x + 5x2 + 6x3 + 2x4
= 2x + 5x2 + 6 + 2x
= (6 + 4x + 5x2 ) mod 3
Ada empat parameter yang digunakan untuk membangkitkan kunci yaitu
bilangan integer N, p, q dan df, dimana N dan p merupakan bilangan prima, gcd(p,q) =
gcd(N,q) = 1.
N : dimensi dari polynomial yang digunakan (polinom akan memiliki derajat N–1), N
merupakan bilangan prima.
p : small modulus, koefisien dari polynomial akan direduksi dengan modulo p, p
adalah bilangan prima.
q : large modulus, koefisien dari polynomial akan direduksi dengan modulo q, q
merupakan bilangan kelipatan 2.
df: nilai yang akan digunakan untuk membangkitkan polynomial f pada proses
pembangkitan kunci privat.
Menyangkut masalah keamanan, NTRU Cryptosystems, Inc
merekomendasikan penggunaan parameter standar EES (Escrowed Encryption
Standard) pada implementasi algoritma NTRUEncrypt sesuai dengan data pada tabel
2.1 berikut.
Tabel 2.1 Standar Parameter pada Algoritma NTRUEncrypt
Parameter set Security level N q p df
ees401ep1 112 401 211 3 113
ees541ep1 112 541 211 3 49
ees659ep1 112 659 211 3 38
ees449ep1 128 449 211 3 134
ees613ep1 128 613 211 3 55
ees761ep1 128 761 211 3 42
ees677ep1 192 677 211 3 157
ees887ep1 192 887 211 3 81
ees1087ep1 192 1087 211 3 63
ees1087ep2 256 1087 211 3 120
ees1171ep1 256 1171 211 3 106
Parameter set merupakan nama parameternya. Escrowed Encryption Standard
merupakan singkatan dari EES. Angka setelah ees pada ees401ep1, ees541ep1 dan
yang lainnya menunjukkan derajat polynomial-nya atau nilai N. Ep2 digunakan jika
terdapat dua parameter dengan N yang sama tetapi dengan tingkat keamanan yang
lebih tinggi. Kolom security level merupakan tingkat keamanan kunci dalam satuan
bit.
2.4.1. Pembangkitan Kunci
Algoritma NTRUEncrypt merupakan algorima kriptografi kunci publik atu
algoritma asimetri, maka dibutuhkan dua kunci, yaitu kunci publik dan kunci privat.
Pembangkitan kunci NTRUEncrypt antara lain:
1. Tentukan parameter N, p, q dan df. Tabel 1 dapat digunakan untuk menentukan
parameter yang digunakan berdasarkan level keamanan yang bersesuaian.
2. Bangkitkan dua polinom kecil secara acak, yaitu f dan g dari ring (ℤ/pℤ)[x]/(xN-1).
Isi dari polinom f dan g bersifat rahasia karena jika salah satunya diketahui oleh
pihak lain, maka orang dapat mendekripsikan pesan. Metode yang dapat
digunakan untuk membangkitkan polynomial acak f adalah dengan
mendistribusikan secara acak nilai 1 sebanyak df, nilai -1 sebanyak df-1,
selebihnya nilai 0 ke dalam koefisien polynomial. Polinomial g dapat
dibangkitkan dengan cara yang sama menggunakan parameter dg yang dihasilkan
dari nilai N/3. Polynomial g akan memiliki koefisien bernilai -1 dan 1 sebanyak
dg, dan sisanya adalah 0.
3. Hitung invers dari f modulus p (fp) dan invers diri f modulus q (fq), f*fp = 1
(modulus p) dan f*fq = 1(modulus q). Tidak semua polynomial mempunyai
invers. Jika ternyata nilai invers tidak ditemukan, maka harus dicari lagi nilai f
yang lain.
4. hitung kunci publik (polinom H) dengan rumus H = (p × fq× g) mod q dan kunci
Contoh:
Langkah-langkah menentukan kunci privat dan kunci publik pada NTRUEncrypt
1. Menentukan nilai N, p, q, df yaitu N=7, p=3, q=32, df =2.
4. Invers polynomial f modulo p (fp) dan f modulo q (fq) adalah:
Tabel 2.2 Nilai Invers f Modulo p (fp)
k A B Q R t1 t2 t
Tabel 2.2 merupakan tabel untuk mencari nilai invers f modulo p (fp), dimana
Q = (A : B) dan R = A mod B, sedangkan nilai t = t1 - (Q x t2). Nilai fp merupakan
nilai t1 pada proses terakhir. Sedangkan, untuk mencari nilai invers f modulo q (fq),
Tabel 2.3 Nilai Invers f Modulo q (fq)
Setelah melakukan pembangkitan kunci, langkah selanjutnya adalah mengenkripsi
pesan. proses enkripsi antara lain:
1. m merupakan plaintext yang diubah dalam bentuk polynomial pada ring
2. Bangkitkan polinom kecil r secara acak pada ring (ℤ/pℤ)[X]/(XN-1). Polinom ini
adalah blinding value yang berfungsi untuk menyamarkan pesan.
3. Enkripsi polynomial m dengan rumus berikut:
e = (r × H + m) mod q
Polinom e adalah pesan terenkripsi yang akan dikirimkan.
Contoh:
Langkah-langkah mengenkripsi pesan string “d” dengan menggunakan kunci publik H
= 6x + 3x2 + 29x4 + 29x5 + 29x6 adalah sebagai berikut:
1. Pesan string “d” diubah ke dalam bentuk polynomial m menjadi:
m = - x + x2 - x3 - x5 - x6
Langkah-langkah mengubah string “d” menjadi polynomial: Nilai ASCII string “d” adalah 100
100 : 3 = 33 sisa bagi 1
33 : 3 = 11 sisa bagi 0
11 : 3 = 3 sisa bagi 2
3 : 3 = 1 sisa bagi 0
Maka dihasilkan array dengan m = [1 0 2 0 1], karena N = 7 maka nilai m = [1 0
2 0 1 0 0] koefisien polynomial m harus diantara -1,0,1 maka nilai m dikurangi 1,
maka nilai m = [0 -1 1 -1 0 -1 -1]
Maka polynomial m = - x + x2 - x3 - x5 - x6
2. Bangkitkan polinom r sebagai blinding value:
r = 1 + x - x2
3. e merupakan polinom hasil enkripsi:
e = (r × H + m) mod q
e = ((1 + x - x2) × (6x + 3x2 + 29x4 + 29x5 + 29x6) + (- x + x2– x3 - x5 - x6))
mod 32
= 8x + 10x2 + 28x3 + 26x4 + 25x5 + 28x6
Maka dihasilkan polynomial baru hasil enkripsi adalah 8x + 10x2 + 28x3 + 26x4
2.4.3. Dekripsi Pesan
Langkah-langkah pada proses dekripsi adalah sebagai berikut:
1. Hitung nilai polinom a dengan rumus berikut: a = (f × e) mod q, dimana
koefisien polinom a berada pada interval –q/2 dan q/2.
2. Hitung nilai polinom b dengan rumus berikut: b = a mod p, koefisien polinom b
berada pada interval -1 dan 1.
3. Hitung nilai polinom c dengan rumus berikut: c = (fp × b) mod p, koefisien
polinom b berada pada interval -1 dan 1.
Polinom c merupakan polinom hasil dekripsi pesan.
Contoh:
Langkah-langkah mendekripsi pesan e = 8x + 10x2 + 28x3 + 26x4 + 25x5 + 28x6
dengan nilai
f = x - x2 + x3
fp = 2x + 2x2 + x4 + x5 + x6
fq = 31x + 31x2 + x4 + x5 + x6
Proses dekripsi polinom e adalah sebagai berikut:
1. Polinom a = (f × e) mod q
a = (f × e) mod q
a = ((x - x2 + x3) × ( 8x + 10x2 + 28x3 + 26x4 + 25x5 + 28x6)) mod 32
= (-3 - 3x + 4x2 + 2x3 - 6x4 + 8x5 - 5x6 ) mod 32
2. Polinom b = a mod p
b = a mod p
b = (-3 - 3x + 4x2 - 2x3 - 6x4 + 8x5 - 5x6) mod 3
= (x2 - x3 - x5 + x6 ) mod 3
3. Polinom c = (fp × b) mod p
c = (fp × b) mod p
c = ((2x + 2x2 + x4 + x5 + x6) × (-x2 - x3 - x5 + x6)) mod 3
c = - x + x2– x3 - x5 - x6
Polinom m= - x + x2 - x3 + x5 - x6, maka array m = [0 -1 1 -1 0 -1 -1], untuk
mengubah kembali dalam bilangan ASCII maka m ditambahkan dengan 1, maka nilai
m = [1 0 2 0 1 0 0], m diubah kembali ke nilai ASCII
1 (1 x 3) + 0 = 3
0 (3 x 3) + 2 = 11
2 (11 x 3) + 0 = 33
0 (33 x 3) + 1 = 100
1 100
Maka dihasilkan nilai m = 100, 100 merupakan nilai ASCII dari string “d”.
2.5. Citra Digital
Citra adalah gambar pada bidang dwimatra (dua dimensi). Citra merupakan fungsi
menerus (continue) dari intensitas cahaya pada bidang dwimatra. Sumber cahaya
menerangi objek, objek memantulkan kembali sebagian dari berkas cahaya tersebut.
Pantulan cahaya ini ditangkap oleh alat-alat optik, misalnya mata pada manusia,
kamera, pemindai dan sebagainya, sehingga bayangan objek yang disebut citra
terekam.
Citra ada dua macam, yaitu citra kontinu dan citra diskrit. Citra kontinu
dihasilkan dari sistem optik yang menerima sinyal analog, misalnya mata manusia dan
kamera analog. Citra diskrit dihasilkan melalui proses digitalisasi terhadap citra
kontinu. Beberapa sistem optik dilengkapi dengan fungsi digitalisasi sehingga mampu
menghasilkan citra diskrit, misalnya kamera digital dan scanner (Munir, 2007).
Citra digital dibentuk oleh kumpulan titik yang dinamakan piksel (pixel atau
picture element). Setiap piksel digambarkan sebagai satu kotak kecil. Setiap piksel
mempunyai koordinat posisi. Sistem koordinat yang dipakai untuk menyatakan citra
0 N-1
M-1 0
x
y
Posisi sebuah piksel
Gambar 2.3Sistem Koordinat Citra Berukuran M x N
(M Baris dan N Kolom)
Dengan sistem koordinat yang mengikuti gambar 2.3, sebuah piksel mempunyai
koordinat berupa
(x, y)
Dalam hal ini,
x menyatakan posisi kolom; y menyatakan posisi baris;
piksel pojok kiri-atas mempunyai koordinat (0, 0) dan piksel pada pojok kanan-bawah mempunyai koordinat (N-1, M-1).
2.5.1. Format File Citra Bitmap
Citra bitmap sering disebut juga dengan citra raster. Citra bitmap menyimpan data
kode citra secara digital dan lengkap. Citra bitmap dipresentasikan dalam bentuk
matriks atau dipetakan dengan bilangan biner atau sistem bilangan lain. Citra ini
memiliki kelebihan untuk memanipulasi warna, tetapi untuk mengubah objek lebih
sulit. Tampilan bitmap mampu menunjukkan kehalusan gradasi bayangan dan warna
dari sebuah gambar. Oleh karena itu, bitmap merupakan media elektronik yang paling
dan lukisan digital. Bila citra ini diperbesar maka tampilan di monitor akan tampak
pecah-pecah (Sutoyo, dkk. 2009).
Citra dalam format BMP lebih bagus daripada citra dalam format yang
lainnya, karena citra dalam format BMP umumnya tidak dimampatkan sehingga tidak
ada informasi yang hilang. Terjemahan bebas bitmap adalah pemetaan bit. Artinya,
nilai intensitas pixel di dalam citra dipetakan ke sejumlah bit tertentu. Peta bit yang
umum adalah 8, artinya setiap pixel panjangnya 8 bit. Delapan bit ini
merepresentasikan nilai intensitas pixel. Dengan demikian ada sebanyak 28 = 256
derajat keabuan, mulai dari 0 sampai 255 (Munir, 2007).
Citra dalam format BMP ada tiga macam: citra biner, citra berwarna, dan citra
hitam-putih (greyscale). Citra biner hanya mempunyai dua nilai keabuan, 0 dan 1.
Oleh karena itu, 1 bit sudah cukup untuk merepresentasikan nilai pixel. Citra berwarna
adalah citra yang lebih umum. Warna yang terlihat pada citra bitmap merupakan
kombinasi dari tiga warna dasar, yaitu merah, hijau, dan biru. Setiap pixel disusun
oleh tiga komponen warna: R (red), G (green), dan B (blue). Kombinasi dari ketiga
warna RGB tersebut menghasilkan warna yang khas untuk pixel yang bersangkutan.
Setiap komponen panjangnya 8 bit, jadi ada 256 nilai keabuan untuk warna merah,
256 nilai keabuan untuk warna hijau, dan 256 nilai keabuan untuk warna biru. Nilai
setiap pixel tidak menyatakan derajat keabuannya secara langsung, tetapi nilai pixel
menyatakan indeks tabel RGB yang memuat nilai keabuan merah (R), nilai keabuan
hijau (G), dan nilai keabuan biru (B) untuk pixel yang bersangkutan. Pada citra
hitam-putih, nilai R = G = B untuk menyatakan bahwa citra hitam-putih hanya mempunyai
satu kanal warna. Citra hitam-putih umumnya adalah citra 8-bit (Munir, 2007).
Citra yang lebih kaya warna adalah citra 24-bit. Setiap pixel panjangnya 24 bit,
karena setiap pixel langsung menyatakan komponen warna merah, komponen warna
hijau, dan komponen warna biru. Masing-masing komponen panjangnya 8 bit. Citra
24-bit disebut juga citra 16 juta warna, karena ia mampu menghasilkan 224 =
Gambar 2.4Contoh Gambar dengan Format Bitmap (.bmp)
2.6. Steganografi
Steganografi adalah ilmu menyembunyikan teks pada media lain yang telah ada
sedemikian sehingga teks yang tersembunyi menyatu dengan media itu. Media tempat
penyembunyian pesan dapat berupa media teks, gambar, audio atau video.
Steganografi yang kuat memiliki sifat yang tertanam teks tersembunyi sulit dibedakan
dengan media asli namun teks tersembunyi tetap dapat diekstraksi (Sadikin, 2012).
Penggunaan steganografi antara lain bertujuan untuk menyamarkan eksistensi
(keberadaan) data rahasia sehingga sulit dideteksi, dan melindungi hak cipta suatu
produk. Steganografi dapat dipandang sebagai kelanjutan kriptografi. Jika pada
kriptografi, data yang telah disandikan (ciphertext) tetap tersedia, maka dengan
steganografi cipherteks dapat disembunyikan sehingga pihak ketiga tidak mengetahui
keberadaannya. Data rahasia yang disembunyikan dapat diekstraksi kembali persis
sama seperti keadaan aslinya (Munir, 2007).
Steganografi berbeda dengan kriptografi, letak perbedaannya adalah pada hasil
keluarannya. Hasil dari kriptografi biasanya berupa data yang berbeda dari bentuk
aslinya dan biasanya data seolah-olah berantakan sehingga tidak dapat diketahui
informasi apa yang terkandung didalamnya (namun sesungguhnya dapat dikembalikan
ke bentuk semula lewat proses dekripsi), sedangkan hasil keluaran dari Steganografi
kesamaan persepsi tersebut adalah oleh indera manusia (khususnya visual), namun
bila digunakan komputer atau perangkat pengolah digital lainnya dapat dengan jelas
dibedakan antara sebelum proses dan setelah proses (Alfian, 2013).
Gambar 2.5 Perbedaan Steganografi dan Kriptografi
Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas
citra tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah
(Munir, 2007):
1. Fidelity. Mutu citra penampung tidak jauh berubah. Setelah penambahan data
rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak
mengetahui kalau di dalam citra tersebut terdapat data rahasia.
2. Robustness. Data yang disembunyikan harus tahan (robust) terhadap berbagai
operasi manipulasi yang dilakukan pada citra penampung, seperti pengubahan
kontras, penajaman, pemampatan, rotasi, perbesaran gambar, pemotongan
(cropping), enkripsi, dan sebagainya. Bila pada citra penampung dilakukan
operasi-operasi pengolahan citra tersebut, maka data yang disembunyikan
seharusnya tidak rusak (tetap valid jika diekstraksi kembali)
3. Recovery. Data yang disembunyikan harus dapat diungkapkan kembali (reveal).
Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu data rahasia
di dalam citra penampung harus dapat diambil kembali untuk digunakan lebih
Steganografi membutuhkan dua properti, yaitu wadah penampung dan data
rahasia yang akan disembunyikan. Steganografi digital menggunakan media sebagai
wadah penampang, misalnya citra, audio, teks dan video (Sutoyo,dkk. 2009). Gambar
2.6 adalah ilustrasi untuk menggambarkan proses penyimpanan (penyisipan) pesan ke
dalam media digital dengan teknik steganografi. Secret message adalah pesan yang
akan disisipkan ke dalam cover image. Cover image adalah media digital atau gambar.
Embedding Algorithm merupakan algoritma yang digunakan untuk menyisipkan
pesan. Sedangkan stego image adalah gambar yang telah disisipi oleh secret message.
Sedangkan Extraction Algorithm digunakan untuk mengekstraksi pesan rahasia.
Cover
Gambar 2.6 Proses Penyisipan dan Ekstraksi Data Rahasia
2.6.1. End of File
Metode EOF merupakan salah satu teknik yang digunakan dalam Steganografi.
Metode ini menggunakan cara dengan menyisipkan data pada akhir file. Sehingga,
tidak akan mengganggu kualitas data awal yang akan disisipkan pesan. Namun,
ukuran file setelah disisipkan pesan rahasia akan bertambah. Sebab, ukuran file yang
telah disisipkan pesan rahasia sama dengan ukuran file sebelum disisipkan pesan
rahasia yang disisipkan. Untuk mengenal data yang disisipkan pada akhir file,
diperlukan suatu tanda pengenal atau simbol pada awal dan akhir data yang akan
disisipkan (Alfian, 2013). Misalnya matriks pada sebuah citra dengan skala keabuan
Citra tersebut akan disisipkan sebuah pesan, yaitu “YANSEN”. Kode ASCII dari
pesan tersebut adalah:
89 65 78 83 69 78
Pesan tersebut akan disisipkan dengan menggunakan metode EOF, sehingga citra
menjadi:
98 167 10 101 56 200 89
105 29 199 8 100 150 65
88 102 25 55 127 55 78
30 188 99 37 230 12 83
78 94 91 234 45 108 69
34 67 90 111 121 11 78
Langkah-langkah menyisipkan pesan dengan metode EOF antara lain:
1. Menginputkan ciphertext yang akan disisipkan.
2. Menginputkan citra yang akan menjadi media penyisipan ciphertext.
3. Membaca nilai setiap pixel citra.
4. Menyisipkan ciphertext ke dalam citra, yaitu pada akhir pixel citra .
Sedangkan langkah-langkah mengekstraksi pesan yang sudah disisipkan dengan
metode EOF antara lain:
1. Menginputkan citra yang telah disisipkan ciphertext (stego image).
2. Membaca nilai pixel stego image yang terdapat pada citra.
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Analisis sistem adalah proses menentukan kebutuhan sistem, apa yang harus dilakukan sistem untuk memenuhi kebutuhan pengguna (user). Pada saat tahap perancangan diperlukan analisis sistem yang akan dibangun. Tahapan analisis kebutuhan merupakan tahap awal untuk membangun sebuah sistem atau aplikasi. Dengan adanya analisis diharapkan agar hasil yang baik dan sesuai dengan kebutuhan.
3.1.1. Analisis Masalah
Perkembangan teknologi jaringan komputer menyebabkan terhubungnya satu komputer dengan komputer lainnya. Sehingga, keamanan data merupakan prioritas utama dalam pendistribusian data. Dalam pendistribusian data, tentu pengirim tidak akan mau data yang dikirimkan diketahui isinya oleh lain, meskipun data tersebut sudah berhasil diambil. Untuk melindungi data tersebut adalah dengan memanfaatkan teknik kriptografi dan steganografi. Dengan kriptografi data akan benar-benar berbeda dengan data yang sebenarnya dan disisipkan ke dalam media gambar mengunakan teknik steganografi sehingga menutup kemungkinan data disalahgunakan oleh orang lain.
untuk dapat melakukan proses enkripsi untuk menghasilkan ciphertext. Penentuan parameter yang digunakan dalam pembangkitan kunci merupakan proses penting pada algoritma NTRUEncrypt.
Ciphertext yang dihasilkan dari proses enkripsi akan disisipkan ke dalam citra dengan format bitmap (.bmp). Metode yang digunakan untuk menyisipkan pesan adalah steganografi End of File. Metode ini menyisipkan pesan pada akhir file. Sehingga tidak akan mengganggu kualitas data awal yang akan disisipkan pesan.
3.1.2. Analisis Persyaratan
Analisis persyaratan sistem dikelompokkan ke dalam dua kategori yaitu, analisis persyaratan fungsional dan analisis persyaratan non-fungsional. Persyaratan fungsional berisi persyaratan pokok dari suatu sistem dimana persyaratan tersebut wajib ada atau disediakan dalam sistem tersebut. Sedangkan persyaratan non-fungsional berupa persyaratan tambahan yang dapat menunjang kinerja dari persyaratan fungsional.
3.1.2.1. Persyaratan Fungsional
Persyaratan fungsional dari sistem yang akan dirancang adalah sebagai berikut. 1. Plaintext yang akan dienkripsi adalah file dengan format text (.txt).
2. Citra digital yang digunakan untuk penyisipan pesan adalah file dengan format bitmap (.bmp).
3. Parameter yang digunakan saat enkripsi dan dekripsi adalah sama. 4. Hasil dekripsi pesan disimpan kedalam format text (.txt).
3.1.2.2. Persyaratan Non-Fungsional
Adapun persyaratan non-fungsional pada sistem ini adalah sebagai berikut :
1. Performa
Sistem yang dibangun harus dapat menunjukkan hasil dari proses enkripsi dan penyisipan pesan menggunakan algoritma NTRUEncrypt dan steganografi End of File.Dan pesan tersebut dapat diekstraksi kembali dari citra penampung. 2. Mudah dipelajari dan digunakan
Sistem dibangun sederhana agar mudah digunakan dan dipelajari oleh pengguna (User).
3. Hemat biaya
Perangkat lunak yang dibangun tidak memerlukan peralatan tambahan ataupun perangkat pendukung dalam proses eksekusinya.
4. Dokumentasi
Perangkat lunak yang akan dibangun mampu menyimpan citra digital disisipkan pesan dan dapat menyimpan pesan yang diekstraksi kembali.
5. Manajemen kualitas
Perangkat lunak yang akan dibangun harus memiliki kualitas yang baik yaitu proses enkripsi dan penyisipan pesan relatif cepat. Begitu juga saat proses ekstraksi pesan dan dekripsi
6. Kontrol
Perangkat lunak harus mampu memanajemen proses error yang terjadi pada saat penggunaan.
3.1.3. Analisis Proses
mempunyai invers. Kunci publik yang dibangkitkan akan digunakan untuk mengenkripsi file text yang diinputkan. Setelah melakukan enkripsi, ciphertext akan disisipkan pada citra asli, yaitu citra dengan format .bmp. Citra hasil penyisipan (citra stego) disimpan dalam media penyimpanan dan akan dikirim kepada penerima pesan. Untuk mengetahui pesan yang diterima maka citra stego harus diekstraksi, citra yang diektraksi menghasilkan citra asli dan ciphertext. Kemudian ciphertext didekripsi untuk mengetahui isi pesan tersebut.
3.2. Perancangan Sistem
Perancangan sistem merupakan tahapan yang dilakukan setelah tahap analisis sistem. Adapun perancangan sistem yang dilakukan adalah perancangan flowchart, kemudian dilanjutkan dengan pembuatan diagram Unified Modeling Language (UML) dari sistem.
3.2.1. Perancangan Flowchart Aplikasi
Pada bagian ini akan dijelaskan langkah-langkah pembuatan aplikasi dalam flowchart
sistem kemudian akan dijabarkan dalam bagian-bagian flowchart algoritma.
Flowchart di dalam sistem diantaranya: flowchart enkripsi Algoritma NTRUEncrypt
3.2.1.1.Flowchart Enkripsi Algoritma NTRUEncrypt dan Penyembunyian Data
EOF
Pada proses ini, algoritma yang digunakan adalah algoritma NTRUEncrypt dan steganografi end of file. Jika pengguna adalah pengirim maka hal pertama yang akan dilakukan adalah menentukan parameter yang akan digunakan untuk membangkitkan kunci yaitu kunci privat dan kunci publik. Kemudian dilanjutkan dengan mengenkripsi plaintext, hasil enkripsi yaitu sebuah ciphertext kemudian disisipkan pada citra asli yang berformat bitmap (.bmp) menggunakan metode end of file yang terlebih dahulu diinputkan. Melalui proses tersebut maka akan dihasilkan Stego Image
yang telah disisipkan ciphertext. Flowchart enkripsi dan penyisipan pesan dapat dilihat pada gambar 3.1.
Mulai
Input nilai parameter N, p, q dan df
Input Plaintext
Selesai Stego image Cipher Text
Import citra .bmp
Pembangkitan kunci privat dan
kunci publik
Enkripsi pesan
Penyisipian pesan dengan
metode EOF
Ada tiga predefined proses yang terdapat pada gambar 3.1. Predefined proses
adalah proses yang memiliki penjelasan lebih rinci dan dikembangkan agar lebih jelas dipahami. Adapun predefined process dari flowchart diatas antara lain proses pembangkitan kunci, enkripsi dan penyisipan pesan.
3.2.1.2.Flowchart Pembangkitan Kunci NTRUEncrypt
Pada proses ini, untuk membangkitkan kunci pengguna harus terlebih dahulu menentukan parameter yang digunakan algoritma NTRUEncrypt yaitu N, p, q dan df
yang terdapat pada tabel 2.1. Nilai N, p, q dan df digunakan untuk membangkitkan
polynomialf dan g. Kemudian sistem akan mencari nilai invers dari f modulus p (fp) dan invers dari f modulus q (fq). Tidak semua polynomial mempunyai invers, jika nilai invers tidak ditemukan, maka sistem akan membangkitkan kembali polynomial f yang lain. Setelah mendapat nilai f, maka sistem akan menghitung nilai polynomialH = (p x
fp x g) mod q. Polynomial H merupakan kunci publik dan polinomial f merupakan kunci privat. Proses pembangkitan kunci dapat dilihat pada gambar 3.2.
Mulai
3.2.1.3.Flowchart Enkripsi NTRUEncrypt
Setelah melakukan proses pembangkitan kunci, langkah selanjutnya adalah melakukan proses enkripsi. Pada proses enkripsi, plaintext diinputkan terlebih dahulu, kemudian plaintext tersebut diubah kedalam bentuk polynomial, yaitu polynomial m. Sistem akan membangkitkan nilai polynomial r yang berfungsi untuk menyamarkan pesan pada saat proses enkripsi. Pesan tersebut akan dienkripsi menggunakan kunci publik yaitu polynomial H dan polynomial r dengan rumus E = (r x H + m) mod q.
Polynomial E merupakan polynomial hasil dekripsi yaitu ciphertext. Proses enkripsi
plaintext dapa dilihat pada gambar 3.3
Mulai
Input plaintext
Plaintext diubah ke bentuk polynomial m
Bangkitkan polynomial r
Enkripsi Pesan e = (r x H + m)
modulo q
Polynomial E
Selesai Polynomial
H
3.2.1.4.Flowchart Penyisipan Steganografi EOF
Setelah melakukan pores enkripsi, langkah selanjutnya adalah proses penyisipan. Pada proses ini dimulai dengan menginputkan ciphertext dan citra yang akan menjadi media penyisipan ciphertext, yaitu citra dengan format bitmap (.bmp). Setelah itu sistem akan membaca nilai piksel citra, kemudian menyisipkan ciphertext pada akhir piksel. Untuk mengenal data yang disisipkan pada akhir citra, maka diperlukan suatu tanda pengenal atau simbol pada awal dan akhir ciphertext yang akan disisipkan. Proses penyisipan ciphertext pada citra asli akan menghasilkan citra stego. Proses penyisipan ciphertext dapat dilihat pada gambar 3.4.
Mulai
Input ciphertext, citra .bmp
Selesai Baca nilai pixel citra
Sisipkan ciphertext pada pixel citra dengan metode EOF
Citra stego
3.2.1.5.Flowchart Ekstraksi EOF dan Dekripsi Algoritma NTRUEncrypt
Pada proses ini, pengguna terlebih dahulu menginputkan citra stego. Untuk mendapatkan pesan, citra stego yang telah disisipkan ciphertext akan diekstraksi oleh penerima pesan. Hasil ekstraksi adalah citra asli dan ciphertext. Setelah proses ekstraksi, pengguna melakukan proses dekripsi ciphertext menggunakan kunci privat yang telah dibangkitkan dan parameter set yang digunakan saat membangkitkan kunci. Hasil dekripsi pesan adalah plaintext. Flowchart ekstraksi dan dekripsi pesan dapat dilihat pada gambar 3.5.
Mulai
Ciphertext
Selesai
Plaintext
Import citra stego
Input nilai parameter N, p,
q dan df
Import kunci privat
Ekstraksi Pesan
Dekripsi Ciphertext
Gambar 3.5 Flowchart Ekstraksi dan Dekripsi Pesan
3.2.1.6.Flowchart Ekstraksi Steganografi EOF
Pada proses ini dimulai dengan menginputkan citra stego. Citra stego merupakan citra yang telah disisipkan ciphertext. Setelah citra stego diinputkan, sistem akan membaca nilai setiap piksel citra stego. Sistem akan memeriksa tanda yang digunakan saat proses penyisipan. Jika penanda pesan ada, maka sistem akan melakukan proses ekstraksi pada citra tersebut. Sedangkan jika penanda pesan tidak ada, maka citra tersebut bukan citra yang disisipkan ciphertext. Proses ekstraksi pesan akan menghasilkan citra stego dan ciphertext. Proses ekstraksi ciphertext dapat dilihat pada gambar 3.6.
Mulai
Input stego image
Selesai Baca nilai pixel stego
image
Ekstraksi pesan dari
stego image EOF
Plaintext
Penanda pesan ada?
Y
T
3.2.1.7. Flowchart Dekripsi NTRUEncrypt
Pada proses dekripsi, pengguna kembali memasukkan nilai parameter yang digunakan pada saat pembangkitan kunci, kemudian menginputkan kunci privat yaitu polynomial f. Setelah itu sistem akan mencari nilai invers f modulo p (fp). Pesan tersebut akan dienkripsi dengan mencari nilai polynomial a = (f x e) mod q, dimana interval koefisien berada pada interval –q/2 dan q/2. Setelah mendapat polynomial a, sistem mencari polynomial b = a mod p, nilai koefisien polynomialb pada interval -1 dan 1, kemudian mencari nilai polynomial c = (fp x b) mod q, nilai koefisien polynomial c
pada interval -1 dan 1. Polynomial c merupakan hasil dekripsi pesan, kemudian diubah kembali ke string yaitu plaintext. Proses dekripsi dapat dilihat pada gambar 3.7
Mulai