Implementasi Kombinasi Algoritma Ntruencrypt Dan Steganografi End Of File Pada Pengamanan Data Teks

(1)

PENGAMANAN DATA TEKS

SKRIPSI

YANSEN BOSTON SIMATUPANG

101401070

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2015


(2)

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

MEDAN 2015


(3)

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,

Dr. Poltak Sihombing, M.Kom. NIP.196203171991031001


(4)

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

YANSEN BOSTON SIMATUPANG 101401070


(5)

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.

13.Abang Arion Immanuel Sitorus dan Andronikus Simarmata yang telah banyak berbagi ilmu dalam menyelesaikan skripsi ini.


(6)

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


(7)

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.


(8)

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.


(9)

DAFTAR ISI

PERSETUJUAN ii

PERNYATAAN iii

PENGHARGAAN iv

ABSTRAK vi

ABSTRACT vii

DAFTAR ISI viii

DAFTAR TABEL x

DAFTAR GAMBAR xi

DAFTAR LAMPIRAN xii

BAB I PENDAHULUAN

1.1 Latar Belakang Masalah 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metode Penelitian 4

1.7 Sistematika Penulisan 5

BAB II TINJAUAN PUSTAKA

2.1 Kriptografi 6

2.1.1 Kriptografi Simetri 7

2.1.2 Kriptografi Asimetri 8

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.3 Polinomial Ring 11

2.4 Algoritma NTRUEncrypt 14

2.4.1 Pembangkitan Kunci 16

2.4.2 Enkripsi Pesan 18

2.4.3 Dekripsi Pesan 20

2.5 Citra Digital 21

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


(10)

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.1.1 Form Home 53

4.1.2 Form Pengirim 54

4.1.3 Form Penerima 5

4.1.4 Form Petunjuk 56

4.2 Pengujian Sistem 57

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


(11)

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


(12)

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

Gambar 4.12 Perbandingan Waktu Proses Pembangkitan Kunci 63 Gambar 4.13 Perbandingan Waktu Proses Enkripsi dan Dekripsi 64 Gambar 4.14 Perbandingan Waktu Proses Penyisipan dan Ekstraksi Pesan 66


(13)

DAFTAR LAMPIRAN

Halaman

Listing Program A-1


(14)

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.


(15)

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.


(16)

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.

Steganografi adalah ilmu menyembunyikan pesan teks pada media lain yang telah ada sedemikian sehingga teks yang tersembunyi menyatu dengan media itu. Media tempat penyimpanan itu bisa berupa gambar, audio atau video. Steganografi yang kuat memiliki sifat media yang telah tertanam teks tersembunyi yang sulit dibedakan dengan media asli namu teks tersembunyi tetap dapat diekstraksi.


(17)

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

Berdasarkan latar belakang yang telah dikemukakan sebelumnya, maka rumusan masalah dalam penelitian ini adalah “bagaimana mengimplementasikan pengenkripsian dan penyembunyian data menggunakan algoritma kriptografi dan steganografi”.


(18)

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

Penelitian ini diharapkan menghasilkan aplikasi yang mampu meningkatkan keamanan suatu data teks dengan mengkombinasikan algoritma NTRUEncrypt dan steganografi End of File.


(19)

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

Setelah implementasi, maka penulis akan membuat dokumentasi atau laporan tiap tahap dari program yang penulis rancang.


(20)

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

Bab ini akan memuat kesimpulan secara umum dari uraian pada bab-bab sebelumnya, serta saran untuk pengembangan lebih lanjut dari penelitian ini.


(21)

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 menghasilkan ciphertext yang terlihat acak.


(22)

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 dapat dilihat pada gambar 2.1.


(23)

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


(24)

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


(25)

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) dan aplikasi kasus dasar adalah


(26)

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 memenuhi kondisi berikut:


(27)

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:


(28)

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 � + ) = ( ∑=0+ ∑ =0i ,


(29)

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 = x + 2x2


(30)

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


(31)

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 privatnya adalah f.


(32)

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.

2. Bangkitkan polinomial acak f pada ring (ℤ/3ℤ)[x]/(xN-1) yang mempunyai nilai df=4.

f = x - x2 + x3

3. Bangkitkan polynomial acak g pada ring (ℤ/3ℤ)[x]/(xN-1) yang mempunyai nilai df=2.

g = -1 + x2 - x3 + x4

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

Init x7 - 1 x3 - x2 + x

- - 0 1 -

1 x7 - 1 x3 - x2 + x

x4 + x3 + 2x + 2

x + 2 0 1 2x4 + 2x3

+ x + 1 2 x3 - x2 +

x

x + 2 x2 + 1 1 1 2x4 + 2x3

+ x + 1

x6 + x5 + x4 + 2x2 +

2x

3 x + 2 1 x + 2 0 2x4 + 2x3

+ x + 1

x6 + x5 + x4 + 2x2 +

2x

x7 - 1

4 1 0 - - x6 + x5 +

x4 + 2x2 + 2x

x7 - 1 -

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), prosesnya sama dengan proses mencari fp. Nilai invers fp terdapat pada tabel 2.3


(33)

Tabel 2.3 Nilai Invers f Modulo q (fq)

k A B Q R t1 t2 T

Init x7 - 1 x3 - x2 + x

- - 0 1 -

1 x7 - 1 x3 - x2 + x

x4 + x3 + 31x +

31

x + 31

0 1 31x4 +

31x3 + x + 1 2 x3 + 31x2

+ x

x + 31 x2 + 1 1 1 31x4 +

31x3 + x + 1

x6 + x5 + x4 + 31x2

+ 31x

3 x + 31 1 x + 31 0 31x4 +

31x3 + x + 1

x6 + x5 + x4 + 31x2 +

31x

x7 - 1

4 1 0 - - x6 + x5 +

x4 + 31x2 + 31x

x7 - 1 -

Berdasarkan tabel 2.2 dan tabel 2.3, maka nilai fp = 2x + 2x2 + x4 + x5 + x6 dan nilai fq = 31x + 31x2 + x4 + x5 + x6

5. Kunci publik polinom H H = (p × fq× g) mod q

H = (3 × (31x + 31x2 + x4 + x5 + x6) × (-1 + x2 - x3 + x4)) mod 32 = 6x + 3x2 + 29x4 + 29x5 + 29x6

Maka diperoleh kunci privat f = x - x2 + x3, dan kunci publik H = 6x + 3x2 + 29x4 + 29x5 + 29x6.

2.4.2. Enkripsi Pesan

Setelah melakukan pembangkitan kunci, langkah selanjutnya adalah mengenkripsi pesan. proses enkripsi antara lain:

1. m merupakan plaintext yang diubah dalam bentuk polynomial pada ring (ℤ/pℤ)[X]/(XN-1). Polinom m akan memiliki koefisien pada range (-1, 0, 1).


(34)

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 + 25x5 + 28x6.


(35)

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


(36)

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 digital ditunjukkan pada Gambar 5 (Kadir & Susanto, 2013).


(37)

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 tepat untuk gambar-gambar dengan perpaduan gradasi warna yang rumit seperti foto


(38)

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 = 16.777.216 kombinasi warna.


(39)

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 memiliki bentuk persepsi yang sama dengan bentuk aslinya. Menurut Suhono,


(40)

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 lanjut.


(41)

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 Image Secret Message

Embedding

Algorithm Stego Image

Extraction Algorithm

Cover Image Secret Message

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 6x6 piksel sebagai berikut:

98 167 10 101 56 200 105 29 199 8 100 150 88 102 25 55 127 55 30 188 99 37 230 12 78 94 91 234 45 108


(42)

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.


(43)

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.

Algoritma NTRUEncrypt merupakan algoritma yang tergolong ke dalam algoritma yang menggunakan sistem kunci publik. Algoritma ini digunakan untuk mengamankan data teks. Algoritma ini menggunakan operasi terhadap polynomial. Sehingga pesan atau plaintext diubah terlebih dahulu ke dalam bentuk polynomial


(44)

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).


(45)

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

Dalam sistem ini digunakan algoritma NTRUEncrypt untuk melakukan proses enkripsi dan dekripsi, sedangkan untuk penyisipan pesan dilakukan dengan steganografi EOF. Proses pertama yang akan dikerjakan sistem adalah proses pembangkitan kunci yaitu kunci privat dan kunci publik. Pembangkitan kunci dilakukan setelah menentukan parameter set. Kunci privat yang dibangkitkan harus


(46)

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

dan penyembunyian data EOF, flowchart ekstraksi EOF dan dekripsi pesan, flowchart enkripsi, flowchart dekripsi, flowchart penyisipan data, serta flowchart ekstraksi.


(47)

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


(48)

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

Input nilai parameter N,

p, q dan df

Bangkitkan polinom f dan g

Nilai fp dan fq ada? Mencari nilai fp

dan fq T

Selesai Y

Mencari kunci publik H = (p x fp x g)

modulo q

Polinom f dan H


(49)

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


(50)

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


(51)

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

Predefined process yang terdapat pada gambar 3.5 antara lain proses ekstraksi dan dekripsi pesan.


(52)

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


(53)

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

Input nilai parameter N, p, q dan

df

Import kunci privat

f

Cari Nilai fp

Hitung nilai polinom a = (f x e) modulo q

Hitung nilai polinom

b = (a) modulo p

Hitung nilai polinom c = (fp x b)

modulo p

Ubah polinomial c ke string

Plaintext

Mulai Ciphertext


(54)

3.2.2. Perancangan Unified Modeling Language (UML)

Model diagram UML yang digunakan pada penelitian ini antara lain Use-case diagram, Sequence diagram, dan Activity diagram.

3.2.2.1. Use case Diagram

Use case diagram berfungsi untuk menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Use case mempresentasikan interaksi antara aktor dengan sistem.

Use case menggambarkan kebutuhan sistem dari sudut pandang pengguna.

Gambar 3.8 Usecase Diagram Sistem

Pada gambar 3.8 pengguna memiliki peran sebagai pengirim dan penerima pesan. Untuk melakukan enkripsi pesan, pengirim terlebih dahulu menentukan parameter yang digunakan untuk membangkitkan kunci, yaitu kunci privat dan kunci publik. Kunci publik digunakan untuk melakukan enkripsi plaintext. Ciphertext

sebagai hasil enkripsi akan disisipkan pada citra dengan format .bmp. Citra stego merupakan citra yang telah disisipkan ciphertext.


(55)

Untuk melakukan dekripsi pesan, maka pengguna yang bertindak sebagai penerima terlebih dahulu melakukan proses ekstraksi pesan dari citra stego. Hasil ekstraksi citra stego adalah citra asli dan ciphertext. Kemudian Ciphertext akan didekripsi menggunakan kunci privat dan parameter yang digunakan saat membangkitkan kunci.

Setiap use case yang terdapat pada diagram sistem akan dijelaskan dengan dokumentasi naratif dan activity diagram. Dokumentasi naratif pada proses pembangkitan kunci yang terdapat dalam use case diagram dilihat pada Tabel 3.1

Tabel 3.1 Dokumentasi Naratif Use Case Bangkitkan Kunci Nama use case Pembangkitan Kunci

Aktor Pengguna

Deskripsi Use case berfungsi untuk membangkitkan kunci privat dan publik.

Pre-condition -

Typical course of event

Aksi aktor Respon sistem

Langkah 1: Pengguna memilih parameter set yang akan

digunakan untuk pembangkitan kunci.

Langkah 4: Menyimpan kunci privat dengan menekan button

Simpan

Langkah 2: Sistem

membangkitkan kunci privat. Langkah 3: Sistem

membangkitkan kunci publik.

Langkah 5: Sistem menyimpan kunci privat yang akan

digunakan untuk dekripsi pesan.


(56)

- -

Post condition Kunci privat dan publik berhasil dibangkitkan.

Dokumentasi naratif pada proses enkripsi plaintext yang terdapat dalam use case diagram dilihat pada Tabel 3.2

Tabel 3.2 Dokumentasi Naratif Use Case Enkripsi Nama use case Enkripsi

Aktor Pengguna

Deskripsi Use case mendekripsikan proses enkripsi plaintext.

Pre-condition Kunci privat dan kunci publik telah dibangkitkan

Typical course of event

Aksi aktor Respon sistem

Langkah 1: Menginput

plaintext dengan menekan

button Cari

Langkah 3: Melakukan proses enkripsi dengan menekan button Enkripsi

Langkah 5: Menyimpan

ciphertext dengan menekan

button Simpan

Langkah 2: Sistem membaca inputan

plaintext.

Langkah 4: Sistem mengenkripsi

plaintext dan menampilkan ciphertext

Langkah 6: Sistem menyimpan

ciphertext.

Alternate course Aksi actor Respon sistem

- -


(57)

Dokumentasi naratif pada proses penyisipan ciphertext yang terdapat dalam

use case diagram dilihat pada Tabel 3.3

Tabel 3.3 Dokumentasi Naratif Use Case Penyisipan Nama use case Penyisipan

Aktor Pengguna

Deskripsi Use case mendekripsikan proses penyisipan ciphertext.

Pre-condition Ciphertext telah dienkripsi

Typical course of event

Aksi aktor Respon sistem

Langkah 1 : Menginputkan citra asli

Langkah 3: Melakukan proses penyisipan dengan menekan button Penyisipan

Langkah 6: Menyimpan citra stego dengan

menekan button Simpan

Langkah 2: Sistem membaca inputan citra asli.

Langkah 4: Sistem menyisipkan

ciphertext di akhir pixel citra dan menghasilkan citra stego.

Langkah 6: Sistem menyimpan citra stego.

Alternate course Aksi aktor Respon sistem

- -


(1)

while (true) {

while (f.coeffs[0] == 0) {

for (int i = 1; i <= N; i++) {

f.coeffs[i - 1] = f.coeffs[i];

c.coeffs[N + 1 - i] = c.coeffs[N - i]; }

f.coeffs[N] = 0; c.coeffs[0] = 0; k++;

if (f.equalsZero()) return null; }

if (f.equalsOne()) break;

if (f.degree() < g.degree()) {

integerPolynomial temp = f; f = g;

g = temp; temp = b; b = c; c = temp; }

f.add(g, 2); b.add(c, 2); }

if (b.coeffs[N] != 0) return null;

integerPolynomial Fq = new integerPolynomial(N); int j = 0;

k %= N;

for (int i = N - 1; i >= 0; i--) {

j = i - k; if (j < 0) j += N;

Fq.coeffs[j] = b.coeffs[i]; }

int v = 2; while (v < q) {

v *= 2;

int[] temparr = new int[Fq.coeffs.Length]; Fq.coeffs.CopyTo(temparr, 0);

integerPolynomial temp = new integerPolynomial(temparr);

temp.mult2(v);

Fq = mult(Fq, v).mult(Fq, v); temp.sub(Fq, v);

Fq = temp; }

Fq.nilaiKoefisienPositif(q); return Fq;


(2)

public integerPolynomial inversFp() {

int N = coeffs.Length; int k = 0;

integerPolynomial b = new integerPolynomial(N + 1); b.coeffs[0] = 1;

integerPolynomial c = new integerPolynomial(N + 1); integerPolynomial f = new integerPolynomial(N + 1); Array.Copy(coeffs, f.coeffs, coeffs.Length);

Array.Resize(ref f.coeffs, N + 1);

integerPolynomial g = new integerPolynomial(N + 1); g.coeffs[0] = -1;

g.coeffs[N] = 1; while (true) {

while (f.coeffs[0] == 0) {

for (int i = 1; i <= N; i++) {

f.coeffs[i - 1] = f.coeffs[i]; c.coeffs[N + 1 - i] = c.coeffs[N - i]; }

f.coeffs[N] = 0; c.coeffs[0] = 0; k++;

if (f.equalsZero()) return null; }

if (f.equalsAbsOne()) break;

if (f.degree() < g.degree()) {

integerPolynomial temp = f; f = g;

g = temp; temp = b; b = c; c = temp; }

if (f.coeffs[0] == g.coeffs[0]) {

f.sub(g, 3); b.sub(c, 3); }

else {

f.add(g, 3); b.add(c, 3); }

}

if (b.coeffs[N] != 0) return null;

integerPolynomial Fp = new integerPolynomial(N); int j = 0;

k %= N;

for (int i = N - 1; i >= 0; i--) {


(3)

j = i - k; if (j < 0) j += N;

Fp.coeffs[j] = f.coeffs[0] * b.coeffs[i]; }

Fp.nilaiKoefisienPositif(3); return Fp;

}

public void nilaiKoeffDekripsi(int q) {

for (int i = 0; i < coeffs.Length; i++) {

while (coeffs[i] < -q / 2) coeffs[i] += q;

while (coeffs[i] > q / 2) coeffs[i] -= q;

} }

public int degree() {

int degree = coeffs.Length - 1;

while (degree > 0 && coeffs[degree] == 0) degree--;

return degree; }

public void modulo(int modulus) {

for (int i = 0; i < coeffs.Length; i++) coeffs[i] %= modulus;

}

public void modulo3() {

for (int i = 0; i < coeffs.Length; i++) {

coeffs[i] %= 3; if (coeffs[i] > 1) coeffs[i] -= 3; if (coeffs[i] < -1) coeffs[i] += 3; }

}

public void nilaiKoefisienPositif(int modulus) {

for (int i = 0; i < coeffs.Length; i++) while (coeffs[i] < 0)

coeffs[i] += modulus; }

public void clear() {

for (int i = 0; i < coeffs.Length; i++) coeffs[i] = 0;


(4)

} }

4.

NTRUEncrypt.cs

using System;

using System.Collections.Generic; using System.Linq;

using System.Text;

using System.Threading.Tasks; using System.Numerics;

using Microsoft.VisualBasic; namespace NTRUEOF

{

public class NTRUEncrypt {

public int waktuGenerateKPriv; public int waktuGenerateKPub; public int waktuEnkripsi; public int waktuDekripsi; DateTime awal;

DateTime akhir; TimeSpan total;

public integerPolynomial

generateKunciPrivat(parameterEnkripsi param) {

int N = param.N; int q = param.q; int df = param.df; int dg = param.dg; int waktuKPrivat; awal = DateTime.Now;

integerPolynomial f = null; integerPolynomial fp = null; integerPolynomial fq = null; do

{

f = integerPolynomial.generatePolinomial(N, df, df - 1);

fp = f.inversFp(); fq = f.inversFq(q);

} while (fp == null || fq == null); akhir = DateTime.Now;

total = akhir - awal;

waktuKPrivat = Convert.ToInt32(total.TotalMilliseconds); this.waktuGenerateKPriv = waktuKPrivat;

return f; }

public integerPolynomial

generateKunciPublik(integerPolynomial priv, parameterEnkripsi param) {

int N = param.N; int q = param.q; int df = param.df;


(5)

int dg = param.dg; int waktuKPublik; awal = DateTime.Now;

integerPolynomial fq = priv.inversFq(q); integerPolynomial g =

integerPolynomial.generatePolinomial(N, dg, dg); integerPolynomial h = fq.mult(g, q); h.mult3(q);

h.nilaiKoefisienPositif(q); g.clear();

fq.clear();

akhir = DateTime.Now; total = akhir - awal;

waktuKPublik = Convert.ToInt32(total.TotalMilliseconds); this.waktuGenerateKPub = waktuKPublik;

return h; }

public integerPolynomial encrypt(integerPolynomial m,

integerPolynomial r, integerPolynomial kunciPublik, parameterEnkripsi param)

{

int waktuEnkripsi; awal = DateTime.Now;

integerPolynomial e = r.mult(kunciPublik, param.q); e.add(m, param.q);

e.nilaiKoefisienPositif(param.q); akhir = DateTime.Now;

total = akhir - awal;

waktuEnkripsi = Convert.ToInt32(total.TotalMilliseconds); this.waktuEnkripsi = waktuEnkripsi;

return e; }

public integerPolynomial decrypt(integerPolynomial e, integerPolynomial kunciPrivat, parameterEnkripsi param)

{

int waktuDekripsi; awal = DateTime.Now;

integerPolynomial a = kunciPrivat.mult(e, param.q); a.nilaiKoeffDekripsi(param.q);

a.modulo3();

integerPolynomial fp = kunciPrivat.inversFp(); integerPolynomial c = fp.mult(a, 3);

c.nilaiKoeffDekripsi(3); akhir = DateTime.Now; total = akhir - awal;

waktuDekripsi = Convert.ToInt32(total.TotalMilliseconds); this.waktuDekripsi = waktuDekripsi;

return c; }

} }


(6)

CURRICULUM VITAE

Nama

:

Yansen Boston Simatupang

Alamat Sekarang

:

Jln. Bunga Cempaka No. 36 Padang Bulan - Medan

Alamat Orangtua

:

Sipahutar

Telp/Hp

:

081376314941

Email

:

yansenboston@yahoo.co.id

Riwayat Pendidikan

2010

2015

:

S-1 Ilmu Komputer Universitas Sumatera Utara, Medan

2006

2009

:

SMA Bintang Timur Balige

2003

2006

:

SMP Negeri 1 Sipahutar

1997

2003

:

SD Negeri No. 177657 Siabal-abal

Keahlian

Bahasa Pemrograman :

C#