Implementasi Algoritma Elgamal Dengan Pembangkit Bilangan Prima Lehmann Dan Algoritma Least Significant Bit (Lsb) Dengan Cover Image Bitmap Untuk Keamanan Data Text

(1)

COVER IMAGE BITMAP UNTUK KEAMANAN DATA TEXT

SKRIPSI

HERMANDA IHUT TUA SIMAMORA

081401079

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2013


(2)

SKRIPSI

Diajukan untuk melengkapi tugas akhir dan memenuhi syarat mencapai gelar Sarjana Komputer

HERMANDA IHUT TUA SIMAMORA

081401079

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2013


(3)

PERSETUJUAN

Judul : IMPLEMENTASI ALGORITMA ELGAMAL

DENGAN PEMBANGKIT BILANGAN LEHMAN DAN ALGORITMA LEAST SIGNIFICANT BIT (LSB) DENGAN COVER IMAGE BITMAP UNTUK KEAMANAN DATA TEXT

Kategori : SKRIPSI

Nama : HERMANDA IHUT TUA SIMAMORA

Nomor Induk Mahasiswa : 081401079

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

Diluluskan di

Medan, 27 Agustus 2013

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Handrizal, Ssi, M.Comp.Sc M. Andri , ST, M.Comp.Sc, MEM NIP.- NIP. 197510082008011011

Diketahui/Disetujui oleh

Departemen Ilmu Komputer FMIPA USU Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001


(4)

PERNYATAAN

IMPLEMENTASI ALGORITMA ELGAMAL DENGAN PEMBANGKIT BILANGAN PRIMA LEHMANN DAN ALGORITMA LEAST SIGNIFICANT BIT (LSB)

DENGAN COVER IMAGE BITMAP UNTUK KEAMANAN DATA TEXT

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, 20 Agustus 2013

HERMANDA IHUT TUA SIMAMORA NIM. 081401079


(5)

PENGHARGAAN

Puji dan syukur penulis ucapkan kepada Tuhan Yang Maha Esa atas berkat dan kasih karunia-nya sehingga penulis dapat menyelesaikan skripsi ini dengan baik.

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 Dr. Poltak Sihombing, M.Kom sebagai Ketua Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

2. Ibu Maya Silvi Lydia, BSc. MSc sebagai Sekretaris Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

3. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

4. Bapak M. Andri Budiman, ST, MCompSc, MEM dan Bapak Handrizal, Ssi, M.Comp.Sc selaku pembimbing yang telah membimbing penulis sehingga penulis dapat menyelesaikan skripsi ini.

5. Bapak Ade Candra, ST, M.Kom dan Bapak Herriyance, ST, M.Kom. sebagai dosen penguji yang telah memberikan saran dan kritikan yang sangat berguna bagi Penulis. 6. Seluruh dosen serta pegawai di Program Studi S1 Ilmu Komputer Departemen Ilmu

Komputer Fakultas Ilmu Komputer dan Teknologi Informasi USU.

7. Ayahanda tercinta M. Simamora dan Ibunda tercinta D. Pasaribu, kakak saya Triyanti Simamora SE, Tiur Yulianta Simamora S.Kep, adik saya Betty Sonia Simamora yang selalu memberikan doa, motivasi dan dukungannya baik materi maupun spiritual serta semangat yang diberikan selama kuliah dan menyelesaikan skripsi ini.

8. Dan juga kepada teman-teman seperjuangan angkatan 2008 program studi S1 Ilmu Komputer USU, terkhusus kepada: Angga Malau, Ria Marpaung , Juwita Pasaribu , Rosalina Situmorang, Brikson Barus , Elieser Hutapea , Harry Davidson, Johannes Hutabarat dan Octavianus Sianturi yang telah berbagi kebersamaan selama berada di S1 Ilmu Komputer

Penulis menyadari bahwa skripsi ini masih jauh dari sempurna. Oleh karena itu penulis menerima kritik dan saran 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, 27 Agutus 2013


(6)

IMPLEMENTASI ALGORITMA ELGAMAL DENGAN PEMBANGKIT BILANGAN PRIMA LEHMANN DAN ALGORITMA LEAST SIGNIFICANT BIT (LSB) DENGAN

COVER IMAGE BITMAP UNTUK KEAMANAN DATA TEXT

ABSTRAK

Pada saat ini, banyak data atau informasi user yang dicuri oleh orang yang tidak berkepentingan, sehingga berkembanglah beberapa teknik keamanan, dimana salah satunya kriptografi. Pada kriptografi, data akan diacak sehingga tidak dapat dibaca dan dimengerti oleh orang lain. Kriptoanalisis adalah teknik yang digunakan untuk memecahkan kriptografi, sehingga data acak dapat dikembalikan ke data asli, sehingga kriptografi tidak sepenuhnya aman. Untuk mendapatkan keamanan yang lebih kuat, maka akan digabungkan kriptografi dengan steganografi. Algoritma kriptografi yang akan digunakan adalah ElGamal dengan pembangkit bilang prima lehmann, sedangkan algoritma steganografi yang akan digunakan adalah least significant bit (LSB). Data atau informasi terlebih dahulu dienkripsi dengan algoritma ElGamal, kemudian disisipkan kedalam sebuah citra dengan algoritma LSB, sehingga hasil dari enkripsi dan steganografi tidak akan menimbulkan kecurigaan bagi pihak lain. Berdasakan pengujian, untuk mengenkripsi dan menyisipkan pesan 20 hingga 60 karakter, dibutuhkan waktu kurang dari 3 detik, sedangkan waktu untuk ekstraksi dan dekripsi kurang dari 1 detik, serta perubahan citra tidak tampak oleh mata. Oleh karena itu, dapat disimpulkan bahwa dengan menggabungkan kriptografi dan steganogrofi maka keamanan data lebih kuat dan kinerja dari program adalah baik.

Kata kunci : Bitmap Image, ElGamal, Least Signifcant bit (LSB), Lehmann, Kriptografi, Teks.


(7)

IMPLEMENTATION OF ELGAMAL ELGORITHM USING LEHMANN'S PRIME GENERATOR AND LEAST SIGNIFICANT BIT ALGORITHM

WITH BITMAP COVER IMAGE TO SECURE TEXT DATA. ABSTRACT

At this time, a lot of data or user information stolen by people who are not interested, so it develops some security techniques, one of which cryptography. Using cryptography, the data will be encrypted so it can not be read and understood by others. Cryptanalysis is the technique used to solve cryptography, so that random data can be restored to the original data, so cryptography is not completely secure. In order to obtain stronger security, it will be combined steganography with cryptography. Cryptographic algorithms that will be used is ElGamal , whereas steganography algorithms that will be used is the least significant bit (LSB). Data or information will encrypted with ElGamal algorithm, and then inserted into an image with the LSB algorithm, so that the results of encryption and steganography would not arouse suspicion for others. Based on the testing, to encrypt and insert messages 20 to 60 characters, it takes less than 3 seconds, while the time for extraction and decryption of less than 1 second, and the image changes are not visible to the eye. Therefore, it can be concluded that by combining cryptography and steganography, it will obtain the stronger security and the performance of the program is good.

Keyword : Cryptography, Bitmap Image, ElGamal, Least Significant Bit (LSB), Lehmann, Text.


(8)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metode Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Tinjauan Pustaka 6

2.1 Definisi dan Tujuan Kriptografi 6

2.2 Jenis Algoritma Kriptografi 7

2.2.1 Algoritma Simetris 7

2.2.2 Algoritma Asimetris 7

2.3 Algoritma ElGamal 8

2.3.1 Pembangkit Bilangan Prima Lehmann 9

2.3.2 Contoh Perhitungan Elgamal 9

2.4 Landasan Matematika Kriptografi 12

2.4.1 Aritmatika Modulo 12

2.4.2 Bilangan Prima 12

2.4.3 Modulo Eksponensial 13

2.4.4 Primitive Root 14

2.5 Steganografi 15

2.5.1 Definisi Steganografi 15

2.5.2 Teknik Steganografi 16

2.5.3 Least Significant Bit (LSB) 17

2.7 Citra Digital 19

2.7.1 Citra Bitmap (BMP) 20

2.8 Tabel ASCII 21

2.9 Unified Modelling Language 23

2.9.1 Use Case Diagram 23

2.9.2 Activity Diagram 25

2.9.3 Class Diagram 26


(9)

Bab 3 Analisis dan Perancangan 28

3.1 Analisis Sistem 28

3.1.1 Analisis Masalah 28

3.1.2 Analisis Persyaratan (Requirement Analysis) 30 3.1.2.1 Analisis Persyaratan Fungsional 30 3.1.2.2 Analisis Persyaratan Non-Fungsional 30 3.1.2.3 Pemodelan Persyaratan Sistem dengan Use Case 31

3.1.3 Analisis Proses Sistem 40

3.2 Perancangan Sistem 45

3.2.1 Class Diagram 45

3.2.2 Perancanga Antar Muka 48

Bab 4 Implementasi dan Pengujian Aplikasi 53

4.1 Implementasi 53

4.1.1 Tampilan Halaman Utama 53

4.1.2 Tampilan Halaman Bangkitkan Kunci 54 4.1.3 Tampilan Halaman Enkripsi dan Penyisipan 56 4.1.4 Tampilan Halaman Ekstraksi dan Dekripsi 60

4.2 Pengujian Aplikasi 64

4.2.1 Langkah-langkah Bangkitkan Kunci 66 4.2.2 Langkah-langkah Pengujian Enkripsi dan Penyisipan 66 4.2.3 Langkah-langkah Pengujian Ekstraksi dan Dekripsi 68 4.2.4 Hasil Pengujian Enkripsi dan Penyisipan 70 4.2.5 Hasil Pengujian Ekstraksi dan Dekripsi 75

Bab 5 Kesimpulan dan Saran 79

5.1. Kesimpulan 79

5.2. Saran 80


(10)

DAFTAR TABEL

Nomor Judul Halaman

2.1 3.1 3.2 3.3 3.4 3.5 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13

Daftar Karakter ASCII yang Digunakan

Dokumentasi Naratif Program Enkripsi dan Steganografi. Dokumentasi Naratif Use Case Bangkitkan kunci

Dokumentasi Naratif Use Case Enkripsi

Dokumentasi Naratif Use Case Ektraksi dan dekripsi Kelas dan Atributnya

Citra Hasil Enkripsi dan Penyisipan

Waktu Enkripsi dan Penyisipan untuk Session I Waktu Enkripsi dan Penyisipan untuk Session II Waktu Enkripsi dan Penyisipan untuk Session III Waktu Enkripsi dan Penyisipan untuk Session IV Waktu Enkripsi dan Penyisipan untuk Session V Waktu Rata-Rata Enkripsi dan Penyisipan Waktu Ekstraksi dan Dekripsi untuk Session I Waktu Ekstraksi dan Dekripsi untuk Session II Waktu Ekstraksi dan Dekripsi untuk Session III Waktu Ekstraksi dan Dekripsi untuk Session IV Waktu Ekstraksi dan Dekripsi untuk Session V Waktu rata-rata Ekstraksi dan Dekripsi

21 32 34 36 38 45 70 73 73 73 73 74 74 76 76 76 77 77 77


(11)

DAFTAR GAMBAR

Nomor Judul Halaman

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14

Diagram Sistem Steganografi

Proses Penyisipan dan Ekstraksi dalam Steganografi Cara mengakses bit dari gambar

Cara mengakses bit text

Menyisipkan bit-bit text file ke byte gambar Cara ekstraksi pesan dari Gambar

Contoh Usecase pada Proses Penjualan Contoh Activity Diagram

Contoh Class Diagram

Contoh sequence Diagram

Diagram Ishikawa untuk Analisis Permasalahan Sistem

Use CaseDiagram Sistem yang Akan dikembangkan

Activity Diagram Program Enkripsi dan Steganografi

Activity Diagram Bangkitkan Kunci

Activity Diagram Proses Enkripsi dan Penyisipan

Activity Diagram Ekstraksi dan Dekripsi

Sequence Diagram Bangkitkan kunci Sequnce Diagram Enkripsi dan Penyisipan

Sequnce Diagram Ekstraksi dan Penyisipan

Class Diagram untuk Sistem yang Dikembangkan

Jframe Menu Utama Program

Jframe Bangkitkan Kunci

Jframe Enkripsi&Penyisipan

Jframe Ekstraksi dan Dekripsi

Jframe About Program

Jframe Cara Penggunaan Program Halaman Utama

Halaman Bangkitkan Kunci Halaman Enkripsi dan Penyisipan Halaman Ekstraksi dan Dekripsi Citra DesktopWindows

Proses Bangkitkan Kunci

Buka File Pesan, Kunci, dan Gambar Proses Enkripsi dan Penyisipan

Simpan File Citra Digital Hasil Enkripsi dan Penyisipan Buka File Gambar dan Kunci

Proses Ekstraksi dan Dekripsi Simpan File Citra

Grafik Waktu Enkripsi dan Penyisipan Grafik Waktu Ekstraksi dan Dekripsi

15 16 17 17 18 18 24 25 26 27 29 31 33 35 37 39 40 41 43 47 48 49 50 51 51 52 53 54 56 60 65 66 67 67 68 68 69 69 74 78


(12)

IMPLEMENTASI ALGORITMA ELGAMAL DENGAN PEMBANGKIT BILANGAN PRIMA LEHMANN DAN ALGORITMA LEAST SIGNIFICANT BIT (LSB) DENGAN

COVER IMAGE BITMAP UNTUK KEAMANAN DATA TEXT

ABSTRAK

Pada saat ini, banyak data atau informasi user yang dicuri oleh orang yang tidak berkepentingan, sehingga berkembanglah beberapa teknik keamanan, dimana salah satunya kriptografi. Pada kriptografi, data akan diacak sehingga tidak dapat dibaca dan dimengerti oleh orang lain. Kriptoanalisis adalah teknik yang digunakan untuk memecahkan kriptografi, sehingga data acak dapat dikembalikan ke data asli, sehingga kriptografi tidak sepenuhnya aman. Untuk mendapatkan keamanan yang lebih kuat, maka akan digabungkan kriptografi dengan steganografi. Algoritma kriptografi yang akan digunakan adalah ElGamal dengan pembangkit bilang prima lehmann, sedangkan algoritma steganografi yang akan digunakan adalah least significant bit (LSB). Data atau informasi terlebih dahulu dienkripsi dengan algoritma ElGamal, kemudian disisipkan kedalam sebuah citra dengan algoritma LSB, sehingga hasil dari enkripsi dan steganografi tidak akan menimbulkan kecurigaan bagi pihak lain. Berdasakan pengujian, untuk mengenkripsi dan menyisipkan pesan 20 hingga 60 karakter, dibutuhkan waktu kurang dari 3 detik, sedangkan waktu untuk ekstraksi dan dekripsi kurang dari 1 detik, serta perubahan citra tidak tampak oleh mata. Oleh karena itu, dapat disimpulkan bahwa dengan menggabungkan kriptografi dan steganogrofi maka keamanan data lebih kuat dan kinerja dari program adalah baik.

Kata kunci : Bitmap Image, ElGamal, Least Signifcant bit (LSB), Lehmann, Kriptografi, Teks.


(13)

IMPLEMENTATION OF ELGAMAL ELGORITHM USING LEHMANN'S PRIME GENERATOR AND LEAST SIGNIFICANT BIT ALGORITHM

WITH BITMAP COVER IMAGE TO SECURE TEXT DATA. ABSTRACT

At this time, a lot of data or user information stolen by people who are not interested, so it develops some security techniques, one of which cryptography. Using cryptography, the data will be encrypted so it can not be read and understood by others. Cryptanalysis is the technique used to solve cryptography, so that random data can be restored to the original data, so cryptography is not completely secure. In order to obtain stronger security, it will be combined steganography with cryptography. Cryptographic algorithms that will be used is ElGamal , whereas steganography algorithms that will be used is the least significant bit (LSB). Data or information will encrypted with ElGamal algorithm, and then inserted into an image with the LSB algorithm, so that the results of encryption and steganography would not arouse suspicion for others. Based on the testing, to encrypt and insert messages 20 to 60 characters, it takes less than 3 seconds, while the time for extraction and decryption of less than 1 second, and the image changes are not visible to the eye. Therefore, it can be concluded that by combining cryptography and steganography, it will obtain the stronger security and the performance of the program is good.

Keyword : Cryptography, Bitmap Image, ElGamal, Least Significant Bit (LSB), Lehmann, Text.


(14)

BAB 1 PENDAHULUAN

1.1Latar Belakang

Dengan perkembangan internet yang sangat pesat, maka kerahasian data atau informasi merupakan objek yang sangat penting. Banyak pengguna internet yang dirugikan karena data atau informasi penting yang mereka miliki jatuh ketangan orang yang tidak bertanggung jawab. Oleh karena itu berkembanglah beberapa teknik pengamanan data atau informasi, diantaranya enkripsi dan steganografi.

Enkripsi adalah proses mengamankan suat tersebut kedalam bentuk acak sehingga isi informasi tersebut tidak dapat dibaca atau dimengerti. Algoritma yang digunakan untuk enkripsi telah mengalami perkembangan, mulai dari algoritma klasik hingga algoritma modern. Akan tetapi enkripsi tetap memiliki kelemahan, salah satunya yaitu hasil dari enkripsi akan menghasilkan karakter acak yang akan menimbulkan kecurigaan bahwa informasi tersebut merupakan informasi yang penting.

Kriptoanalisis adalah teknik yang digunakan untuk memecahkan kriptografi, dimana data acak dapat dikembalikan ke data asli, sehingga kriptografi tidak sepenuhnya aman. Karena kekurangan tersebut maka berkembang pula teknik pengamanan data dengan menyisipkan informasi kedalam media seperti gambar ataupun video sehingga informasi tersebut tidak kelihatan, teknik tersebut disebut steganografi. Steganalisis adalah teknik yang digunakan untuk mencari tau apakah suatu gambar memiliki informasi yang disisipkan, sehingga dengan teknik ini steganografi belum sepenuhnya aman.


(15)

Penelitian yang dilakukan Eike Kiltz dan Krzysztof Piertzak (2010), dalam Journal of Centrum Wiskunde and Informatica, berjudul Leakage Resilient ElGamal Encryption [6]. Dalam penelitian ini dijelaskan bahwa banyak terjadi serangan terhadap data user, meskipun data tersebut telah dienkripsi. Dengan menggunakan enkripsi, tidak ada jaminan bahwa data aman, bahkan banyak data yang telah dienkripsi dapat dipecahkan. Dengan banyaknya teknik kriptoanalis yang telah berkembang pada saat ini, maka semakin besar kemungkinan untuk memecahkan sebuah enkripsi.

Untuk meningkatkan keamanan informasi dalam berkomunikasi, maka pada skripsi ini akan dibuat program yang menggabungkan enkripsi dan steganografi. Dengan menggunakan program ini maka pesan teks akan dienkripsi, kemudian disisipkan kedalam sebuah file gambar berekstensi Bitmap, sehingga pesan tersebut tidak kelihatan. Algoritma yang digunakan untuk enkripsi adalah ElGamal dengan pembangkit bilangan prima Lehmann, Sedangkan untuk menyisipkan pesan tersebut kedalam file gambar akan menggunakan algoritma Least Significant Bit (LSB).

1.2 Perumusan Masalah

Permasalahan yang akan dibahas dalam penelitian ini adalah

1. Bagaimana mengamankan data atau informasi user dari pihak yang tidak berkepentingan dengan menggunakan algoritma ElGamal dan algoritma Least Significant Bit (LSB) . 2. Bagaimana kinerja program.

1.3 Batasan Masalah

Batasan masalah yang menjadi acuan dalam pengerjaan skripsi ini :

1. Algoritma yang digunakan untuk enkripsi adalah ElGamal, sedangkan untuk steganografi dengan metode Least Significant Bit (LSB).

2. Bahasa pemograman yang digunakan adalah Java.

3. File gambar yang digunakan hanya berekstensi Bitmap (BMP).

4. Ukuran file gambar harus besar sehingga dapat menampung ciphertext.

5. Informasi yang disembunyikan hanya berupa teks.


(16)

1.4 Tujuan Penelitian

Tujuan dari penelitian ini adalah membuat sistem keamanan yang kuat karena pesan akan dienkripsi kemudian disisipkan ke file gambar, sehinga ketika file tersebut jatuh ketangan orang lain, maka orang tersebut tidak menyadari bahwa didalam file tersebut terdapat informasi penting.

1.5 Manfaat Penelitian Manfaat dari penelitian ini adalah:

1. Dengan menggunakan program enkripsi dan steganografi, maka kerahasiaan (Confidentiality) dan integritas data user (integrity data) dapat dijaga.

2. Memberikan kenyamanan bagi user untuk mengirim pesan melalui internet, karena mereka tidak perlu khawatir mengenai keamanan pesan yang akan mereka kirim.

1.6 Metode Penelitian

Metodologi penelitian yang akan dugunakan adalah:

1. Studi Literatur

Mempelajari literatur tentang teori dasar yang mendukung penelitian ini, yaitu tentang kriptografi dan steganografi.

2. Analisis dan Perancangan Sistem

Pada tahap ini dilakukan analisis mengenai algoritma yang digunakan untuk enkripsi dan steganografi, membuat batasan masalah, dan membuat gambaran sistem yang jelas dengan menggunakan flowchart.


(17)

3. Implementasi Sistem

Setelah tahap analisis dan perancangan selesai, maka apa yang telah dirancang akan diimplementasikan ke dalam sebuah program dengan menggunakan salah satu bahasa pemograman.

4. Pengujian Sistem

Setelah program selesai dibuat maka akan dilakukan pengujian sistem, dimana akan dilakukan proses enkripsi kemudian steganografi, dan sebaliknya di extract kemudian di dekripsi. Pada pengujian sistem akan dianalisis apakah program bekerja sesuai dengan apa yang telah dirancang.

5. Dokumentasi Sistem

Membuat dokumentasi dari tahap awal hingga pengujian sistem, sebagai laporan tugas akhir.

1.7 Sistematika Penulisan

Sistematika penulisan yang diuraikan pada skripsi ini terdiri dari beberapa bagian utama, yaitu :

BAB 1: PENDAHULUAN

Bab ini berisi tentang penjelasan tentang latar belakang masalah mengapa judul penelitian ini diangkat, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian dan sistematika penulisan.

BAB 2: TINJAUAN PUSTAKA

Bab ini berisi teori-teori yang berkaitan dengan penelitian yang dilakukan penulis. Teori-teori yang akan dibuat mengenai kriptografi, algoritma ElGamal, citra digital, steganografi, algoritma LSB, dan pembangkit bilangan prima lehmann.


(18)

BAB 3: ANALISIS DAN PERANCANGAN

Bab ini berisi tentang analisis dan perancangan sistem dengan menggunakan

Unified Modeling Language (UML) yang tediri dari 4 diagram, yaitu use case diagram, activity diagram, sequence diagram dan class diagram .

BAB 4: IMPLEMENTASI DAN PENGUJIAN APLIKASI

Bab ini berisi implementasi sistem kedalam sebuah program dan pengujian kinerja program. Pada tahap pengujian akan diuji kinerja sistem berdasarkan waktu yang dibutuhkan sistem dalam melakukan proses enkripsi dan penyisipan, serta proses ekstraksi dan dekripsi.

BAB 5: KESIMPULAN DAN SARAN

Bab ini berisi tentang kesimpulan yang dibuat penulis berdasarkan hasil pengujian program yang telah dilakukan, serta saran yang bermanfaat untuk perkembangan sistem di waktu yang akan datang.


(19)

BAB II

LANDASAN TEORI

2.1 Definisi dan Tujuan Kriptografi

Kriptografi adalah ilmu yang mempelajari teknik-teknik denga

sertaplaintext

atau cleartext dan ciphertext. Plaintext adalah data yang dapat dibaca dan dipahami, sedangkan chipertext adalah data acak yang tidak dapat dipahami. Proses yang ada pada kriptografi ada 2, yaitu enkripsi dan dekripsi. Enkripsi adalah proses mengacak data sehingga data tidak dapat dibaca oleh pihak lain atau dengan kata lain mengubah plaintext menjadi

ciphertext. Sedangkan dekripsi adalah proses mengubah pesan yang telah diacak menjadi pesan asli dengan kata lain mengubah ciphertext menjadi plaintext.

Terdapat 4 tujuan dasar kripografi [13], yaitu:

a) Confidentiality (kerahasiaan) yaitu isi pesan yang dikirim tidak diketahui oleh pihak yang tidak berhak.

b) Data integrity (keutuhan data) yaitu isi pesan harus utuh, dimana tidak terjadi manipulasi data (penghapusan, pengubahan atau penambahan) oleh pihak yang tidak berhak.

c) Authentication (keotentikan) yaitu berhubungan dengan identifikasi, baik secara kesatuan sistem atau informasi itu sendiri.

d) Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya).


(20)

2.2 Jenis Algoritma Kriptografi

Terdapat 2 jenis kriptografi jika dibagi berdasarkan kunci yang digunakan untuk proses enkripsi dan dekripsi, yaitu algoritma simetris dan algoritma simetis.

2.2.1 Algoritma Simetris

Jika kunci yang digunakan untuk proses enkripsi dan proses dekripsi sama, maka algoritma tersebut disebut algoritma simetris [1]. Keamanaan dari pesan yang dikirim tergantung pada kunci tersebut, apabila jatuh kepada tangan yang tidak berhak maka dia dapat memperoleh isi pesan tersebut. Pada algoritma ini kunci yang digunakan berdasarkan kesepakatan antara si pengirim dan si penerima. Algoritma simetri memiliki 2 kategori yaitu stream algorithms dan

block algorithms. Stream algorithms beroperasi dalam satu bit tunggal selama satu selang waktu pada plainteks. Block algorithms beroperasi dalam group bit-bit dalam satu selang waktu pada plainteks. Ukuran block yang sering digunakan adalah 64 bit ataupun 128 bit. Beberapa algoritma yang menggunakan simetris adalah Data Encryption Standard (DES), RC2, RC4, RC5, RC 6, International Data Encryption Algorithm (IDEA), Advanced Encryption Standard

(AES), On Time Pad (OTP), A5, dan lain sebagainya.

2.2.2 Algoritma Asimetris

Algoritma asimetris adalah sebuah teknik enkripsi yang menggunakan 2 kunci yang berbeda, yaitu kunci publik untuk proses enkrispi dan kunci privat untuk proses dekripsi [1].

1. Kunci umum (public key), kunci yang boleh semua orang tahu (dipublikasikan).

2. Kunci rahasia (private key), kunci yang dirahasiakan (hanya boleh diketahui oleh satu orang). Dengan kunci public, orang dapat mengenkripsi tetapi tidak dapat mendeskripsikannya, hanya orang yang memiliki kunci private yang dapat mendeskripsikannya. Beberapa algoritma yang menggunakan asimetri adalah Digital Signature Algorithm (DSA), RSA, Diffle-Hellman (DH), Elliptic Curve Cryptography (ECC), Kriptografi


(21)

2.3 Algoritma ElGamal

Algoritma ElGamal awalnya digunakan untuk tanda tangan digital, namun kemudian dimodifikasi untuk digunakan dalam proses enkripsi dan dekripsi. Algoritma ini merupakan salah satu algoritma asimetris, dimana untuk enkripsi menggunakan kunci public dan untuk dekripsi menggunakan kunci

private. Kelebihan dari enkripsi ini adalah untuk plaintext yang sama, setiap kali dienkripsi akan menghasilkan ciphertext yang berbeda, karena session key yang dihasilkan berbeda untuk setiap kali proses enkripsi [7]. Kelemahannya adalah panjang ciphertext-nya akan dua kali dari panjang

plaintext-nya.

Berikut merupakan proses enkripsi dan dekripsi algoritma ElGamal, dimana diasumsikan Alice ingin mengirim pesan m kepada Bob, dan m € {0,1, ..., p-1} [7] .

a. Proses pembangkit kunci ElGamal.

1. Bob memilih sebuah bilangan prima p secara acak dan α adalah akar primitive root modulo p.

2. Bob kemudian memilih sebuah bilangan integer a dimana 2 ≤ a ≤ p-1 dan menghitung �� (���)

3. Bob memiliki kunci public( �,�,�� ) dan kunci private-nya adalah a. b. Proses enkripsi pada algoritma ElGamal.

1. Alice memperoleh kunci public dari Bob ( �,�,�� ). 2. Dia memilih bilangan acak b < p-1 .

3. Dia menghitung �� ( ���� ) dan ���� ( ���� ). 4. Alice selanjutnya mengirim ciphertext� = (��,����). c. Proses dekripsi pada algoritma ElGamal.

1. Bob menggunakan kunci private untuk menghitung (��)−� ≡ (��)�−1−� ( ���� ). 2. Selanjutnya dia mendekripsi m dengan menghitung (��)−��� (���� ).

Keterangan :

1. m merupakan nilai desimal masing-masing karakter dari plaintext.

2. α adalah sebuah bilangan acak yang nilainya merupakan akar primitive root dari modulo p. 3. a merupakan kunci privat yang nilainya merupakan bilangan prima.

4. b merupakan bilangan ganjil yang dirandom. 5. p merupakan bilangan prima yang dirandom.


(22)

2. 3.1 Pembangkit Bilangan Prima Lehmann

Untuk membangkitkan bilangan acak prima dapat menggunakan metode Lehmann. Adapun langkah-langkah untuk mengetahui sebuah bilangan p prima atau tidak [10] adalah sebagai berikut:

1. Pilih sebuah bilangan acak a yang lebih kecil dari p.

2. Hitunga nilai �(�−1)/2 ����.

3. Jika �(�−1)/2 ≢1 (����) dan �(�−1)/2 ≢ −1 (����), maka p dipastikan bukan bilangan prima.

4. Jika �(�−1)/2 ≡ 1 �� −1(����),kemungkinan p bukan bilangan prima tidak lebih dari 50 %. Keterangan :

p merupakan bilangan yang ingin dicek apakah merupakan bilangan prima atau tidak

a adalah bilangan acak yang nilainya lebih kecil dari p

2. 3.2 Contoh Perhitungan ElGamal

Berikut adalah contoh proses perhitungan enkripsi dan dekripsi menggunakan algoritma ElGamal: Andi ingin mengirim sebuah pesan Hermanda kepada ani. ani memilih sebuah kunci privat 223, nilai bilangan primanya 21787, sedangkan nilai yang primitive root terhadapat bilangan primanya adalah 150. Berikut adalah proses yang dilakukan dalam pengiriman pesan :

1. Proses Generate Kunci Hitung: �� (����)= 7279

Hasil : Kunci publik → (p = 21787, � = 150, �� = 7279), Kunci privat → ( p =21787,

a=223). 2. Proses Enkripsi Pesan :

Pertama, ubah karakter ke decimal menggunakan tabel ascii, kemudian bangkitkan nilai b, dimana syaratnya b < p-1.

H=72 => b = 9832 e=101= > b= 9583 r=114 = > b = 1939


(23)

m= 109 => b = 13902 a= 97 => b = 18045 n=110 => b = 12817 d=100=> b =15641 a=97=> b =1317

Kedua, Lakukan perhitungan ciphertext dengan rumus { �� ( ���� ),���� ( ���� ).} �� ( ��� ) =>1509832 ( ��� 21787 ) = 21715

1509583 ( ��� 21787 ) = 3416 150 1939 ( ��� 21787 ) = 19092 15013902 ( ��� 21787 ) = 3372 15018045 ( ��� 21787 ) = 21337 15012817 ( ��� 21787 ) = 6487 15015641 ( ��� 21787 ) = 14118 1501317 ( ��� 21787 ) = 19426 ���� ( ��� )=> 7272799832 ( ��� 21787 ) = 8248

101�72799583 ( ��� 21787 ) = 9552 114�72791939 ( ��� 21787 ) = 4812 109�727913902 ( ��� 21787 ) = 7553 97�727918045 ( ��� 21787 ) = 8394

110�727912817 ( ��� 21787 ) = 8740 100�727915641 ( ��� 21787 ) = 7234 97�72791317 ( ��� 21787 ) = 10154


(24)

Dari Proses diatas, dihasilkan ciphertext { 21715, 8248, 3416, 9552, 19092, 4812, 3372, 7553, 21337, 8394, 6487, 8740, 14118, 7234, 19426, 10154 }

3. Proses Dekripsi Pesan.

Langkah Pertama yaitu menghitung (��)−� ≡ (��)�−1−� ( ��� ) menggunakan kunci privat.

Selanjutnya mendekripsi m dengan menghitung (��)−��� (���� ). (��)�−1−� ( ���� )=> (21715 )21563 ( ��� 21787) = 1120 (3416)21563 ( ��� 21787 ) = 4929 (19092)21563 ( ��� 21787 ) = 6221

(3372)21563 ( ��� 21787 ) = 19064 (21337)21563 ( ��� 21787 ) = 3735 (6487)21563 ( ��� 21787 ) = 8650 (14118)21563 ( ��� 21787 ) = 7686 (19426)21563 ( ��� 21787 ) = 10503

(��)−��� (���� )= 1120�8248 ��� 2903 = 72 4929x9552 mod 2903 = 101

6221x4812 mod 2903 = 114

19064x7553 mod 2903 = 109

3735x8394 mod 2093 = 97

8650x8740 mod 2903 = 110

7686x7234 mod 2093 = 100

10503x10154 mod 2093 = 97

Dari perhitungan diatas maka nilai plaintextnya {72,101,114,109,97,110,100,97}, setelah nilai tersebut diubah ke karakter menggunakan tabel ascii sehingga menghasilkan plaintext Hermanda.


(25)

2.4 Landasan Matematika Kriptografi 2.4.1 Aritmetika Modulo

Bilangan modulo adalah bilangan sisa hasil pembagian sebuah bilangan dengan bilangan yang lain. Misalkan sebuah bilangan m dibagi dengan b menghasilkan sisa bilangan a,dimana nilai bilangan a terletak diantara himpunan{0,1,2,...,b-1}, maka b disebut modulus atau modulo. Notasi : m mod b = a , sedemikian sehingga m = bq + a , dengan 0 ≤ a < b .

Contoh :

23 mod 6 = 5 (23 = 6.3 + 5) 2 mod 5 =2 (2 = 2.0 +2) -21 mod 9 =6 (-21=9(-3)+6)

Penjelasan untuk -41 mod 9 = 4 : karena m negatif, bagi |m| dengan b mendapatkan sisa a’. Maka m mod b = ba’ bila a’≠ 0. Jadi |-21| mod 9 = 3, sehingga -21 mod 9 = 9 – 3 = 6

Alasan mengapa aritmatika modulo baik digunakan pada kriptografi adalah sebagai berikut:

1) karena nilai-nilai aritmatika modulo berada dalam himpunan berhingga, yaitu diantara 0 hingga modulus b-1, maka perhitungan pada proses kritografi tidak diluar himpunan, yang berarti dalam proses dekripsi tidak akan mengahasikan nilai yang berbeda dari pesan aslinya

2) Bilangan yang akan dikerjakan adalah bilangan bulat, sehingga dengan menggunakan aritmatika modulo kita tidak perlu khawatir kehilangan informasi akibat pembulatan (round off) sebagaimana pada operasi bilangan riil .

2.4.2 Bilangan Prima

Bilangan prima adalah bilangan asli yang nilainya lebih besar dari 1 dan bilangan itu hanya dapat dibagai 1 dan bilangan itu sendiri [7]. Oleh karena bilangan prima nilainya harus lebih besar dari 1, maka bilangan prima dimulai dari 2, sehingga nilai bilanngan prima yaitu 2,3,5,7,11,...,dan seterusnya. Seluruh bilangan prima selalu ganjil, kecuali bilangan prima 2


(26)

yang merupakan bilangan genap. Bilangan asli yang lebih besar dari satu dan tidak termasuk dalam bilangan prima, maka bilangan tersebut disebut bilangan komposit. Contohnya bilangan 20 disebut komposit karea bilangan tersebut dapat dibagi 1,2,4,5,10 dan 20.

Teori The Fundamental Theorem of Arithmetic menyebutkan bahwa setiap bilangan positif dimana nilainya lebih besar atau sama dengan 2, maka bilangan tersebut dapat dinyatakan sebagai perkalian satu atau lebih bilangan prima.

Sebagai contoh : 9= 3 X 3 → bilangan asli 9 dapat difaktorkan dari 2 bilangan prima. Dalama pengujian suatu bilangan, apakah merupakan bilangan prima atau bilangan komposit, maka dapat dilakukan dengan membagi bilangan tersebut dengan sejumlah bilangan prima yang dimulai 2,3,..., hingga bilangan prima lebih kecil atau sama dengan akar bilangan itu sendiri. Apabila bilangan tersebut habis dibagi dengan salah satu bilangan prima tersebut, maka bilangan tersebut adalah bilangan komposit, tetapi jika bilangan tersebut tidak habis dibagi dengan semua bilangan prima tersebut, maka bilangan tersebut merupakan bilangan prima[8].

2.4.3 Modulo Eksponensial

Untuk membagi sebuah bilangan dengan pangkat besar maka dibutuhkan fungsi modulo

eksponensial, karena dengan menggunakan modulo biasa akan membutuhkan waktu yang besar. Misalkan kita ingin mencari modulo dari 6110 mod 634, dengan menggunakan modulo konvensional maka fungsinya akan seperti berikut:

8121 mod 513 = (8 x 8 x 8 x ... x 8) mod 513

= 1.8788340662190665823115844774315e+109 mod 513 = 8

Dengan fungsi modulo konvensional maka tipe integer tidak sanggup untuk menampung bilangan sebesar itu, oleh karena itu untuk dapat menyelesaikan modulo dengan pangkat besar dibutuhkan fungsi modulo eksponensial. Sebelum dilakukan perhitungan di atas maka diperlukan satu variabel yang akan digunakan untuk melakukan perulangan sebanyak pangkat bilangan tersebut[8]. Nilai variabel ini diinisialisasi dari 1.


(27)

Contoh : 79 mod 27 diselesaikan dengan menggunakan modulo eksponensial :

n diinisialisasi dari bilangan 1, perulangan akan dilakukan dari bilangan 1 sampai 9 dengan rumus d = 7 x d mod 23, nilai inisialisasi d pertama = 1.

n = 1 → 7 x 1 mod 27 = 7 n = 2 → 7 x 7 mod 27 = 22 n = 3 → 7 x 22 mod 27 = 19 n = 4 → 7 x 19 mod 27 = 25 n = 5 → 7 x 25 mod 27 = 13 n = 6 → 7 x 13mod 27 = 10 n = 7 → 7 x 10 mod 27 =16 n = 8 → 7 x 16 mod 27 =4 n = 9 → 7 x 14 mod 27 =1

Berikut pseducode dari modulo eksponensial :

function modular_pow(base, exponent, modulus) c := 1

for e_prime = 1 to exponent c := (c * base) mod modulus

return c

2.4.4 Primitive Root

Jika m elemen bilangan natural maka 1 < m < p, p merupakan bilangan prima. Kemudian hitung nilai mt untuk t = 1, 2, ... sampai mt = 1 (mod p). Dengan kata lain, hitung pangkat hingga nilai ordp (m) ditemukan. Nilai ordp (m) dapat diperoleh dari nilai ⏀(p) = p-1. Jika t = ordp (m) = ⏀(p) maka m merupakan sebuah primitive roots modulo p [7].

Contoh : Apakah 2 dan 4 merupakan primitive root dari 5 atau tidak.

Pertama nilai ⏀(p) = p-1,nilai p=5, maka nilai ⏀(p) =4, jadi nilai t=1,2,3,4. Kemudian cari nilai bilangan dipangkatkan t={1,2,3,4} kemudian dimodulokan dengan p. Untuk bilangan 2 nilai modulonya adalah 21 modulo 5 = 2, 22 modulo 5 = 4, 23 modulo 5 = 3, 24 modulo 5 = 1, dari hasil tersebut ditemukan bahwa hasil modulonya tidak ada yang bernilai yang sama, maka 2 adalah primitve root 5. Untuk bilangan 4 nilai modulonya adalah 41 modulo 5 = 4, 42 modulo 5 = 1, 43 modulo 5 = 4, 44 modulo 5 = 1, dari hasil tersebut dapat ditemukan bahwa ada nilai modulonya yang sama, maka 4 bukan primitive root 5.


(28)

2.5 Steganografi

2.5.1 Definisi Steganografi

Steganografi adalah seni dan ilmu menulis pada sebuah covertext, dimana yang mengetahui adanya pesan rahasia yang dikirim hanya si pengirim dan penerima [2]. Syarat utama dari steganografi adalah tidak ada algoritma yang dapat mendeteksi keberadaan hidden message pada sebuah media yang telah disisipi hidden message tersebut. Pada steganografi dibutuhkan dua properti, yaitu covertext dan hidden message. Steganografi digital menggunakan media digital sebagai covertext, contohnya citra, suara, text, video, dan untuk hidden message-nya juga dapat berupa citra, suara, text ataupun video.

Penyembunyian pesan rahasia kedalam sebuah media digital akan mengubah kualitas dari media tersebut. Untuk itu, pada steganografi ada beberapa kriteria yang harus diperhatikan [5], yaitu:

1. Fidelity. kualitas covertext yang telah disisipi pesan tidak jauh berubah. artinya setelah pesan disisipkan ke covertext, maka hasil steganografi masih terlihat dengan baik, sehingga pengamat tidak tau jika pada covertext telah disisipkan pesan rahasia.

2. Recovery. pesan yang disembunyikan dapat diambil kembali (recovery), karena tujuan utama dari steganografi adalah menyembunyikan pesan dari orang yang tidak berhak dan memberikan pesan tersebut kepada sipenerima.


(29)

Media yang telah disisipi pesan disebut stegomessage. Proses penyembunyian data ke dalam media disebut penyisipan (embedding), sedangkan proses sebaliknya disebut ekstraksi. Penambahan kunci yang bersifat opsional dimaksudkan untuk lebih meningkatkan keamanan.

Gambar 2.2 Proses Penyisipan dan Ekstraksi dalam Steganografi 2.5.2 Teknik Steganografi

Pada steganografi terdapat beberapa teknik [2], yaitu:

1. Teknik substitusi, yaitu dengan mensubtitusikan bagain yang redundant dari cover dengan pesan rahasia. contohnya: Least Significant Bit (LSB) Substitution.

2. Teknik Tranformasi, yaitu menyisipkan pesan pada perubahan ruang dari media, seperti perubahan frekuensi media. contohnya : Discrete Cosine Transform (DCT) domain.

3. Teknik spread spectrum, yaitu dengan mengadopsi teknik penyebaran spectrum

pada saat komunikasi wireless, dimana sinyal yang ditransmisikan dalam sebuah

bandwith melebihi kebutuhan minimun untuk mengirim informasi.

4. Teknik statistik, yaitu dengan memecahkan cover kedalam block-block dan setiap

block digunakan untuk untuk menyimpan sebuah bit pesan. teknik ini sulit untuk diterapkan pada banyak kasus, karena harus ada pengujian yang telah dilakukan dimana perbedaan antara block cover yang dimodifikasi dan yang tidak dimodifikasi diijinkan.

5. Teknik distorsi, yaitu dengan menyisipkan pesan pada distorsi sinyal, dengan kata lain menyisipkan pesan diantara kekosongan sinyal yang ada. contohnya dengan menyisipkan pesan diantara jarak antar kata pada sebuah text.

6. Teknik End Of File (EOF), yaitu dengan menyisipkan pesan pada bagian akhir dari cover file.


(30)

2.6 Least Significant Bit (LSB)

Dengan mengunakan Teknik LSB, maka pesan rahasia akan disisipkan kedalam pixel-pixel dimana nilai perubahan pixelnya sangat kecil, sehingga perubahan citra tidak tertangkap oleh indra penglihatan manusia [2]. Pada teknik ini akan dilakukan modifikasi bit-bit pada setiap byte warna pada sebuah pixel. Nilai bit pada bit-bit LSB akan diganti dengan bit-bit pesan yang akan disisipkan. Berikut adalah Gambaran cara kerja penyisipan pesan menggunakan teknik LSB :

1. Langkah pertama yaitu dengan mengakses bit-bit dari Gambar.

0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 ...

Gambar 2.3 Cara mengakses bit dari gambar. 2. Langkah berikut yaitu membaca file text, Kemudian mengakses bit-bitnya.

Pada proses

Gambar 2.4 Cara mengakses bit text. ...

R G B R G B ...

p U b ...

112 117 98 ...

0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 1 ... Original Image

Pixel array

3

8 bits/byte

8 bits/byte

1 byte/char

String text


(31)

3. Menyisipkan setiap satu bit dari text file ke setiap byte dari gambar, dimana disisipkan ke bagian ujung, sehingga perubahan gambar sangat kecil.

0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 ...

0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 ...

Gambar 2.5 Menyisipkan bit-bit text file ke byte gambar

4. Ekstraksi Pesan dari gambar, dengan cara mengambil bit terakhir dari setiap byte gambar yang telah disisipi bit-bit text file.

Gambar 2.6 Cara ekstraksi pesan dari Gambar.

0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 1 ...

0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 ...

0 1 1 ... text

original Image bits

Modified Image bits

Modified Image

text bits Modifie

dImage

Original Text


(32)

Dari proses diatas dapat dilihat bahwa setiap bit LSB akan digantikan dengan bit-bit pesan. Apabila citra covernya menggunakan bitmap 24 bit, maka setiap pixel pada gambar tersebut terdiri dari warna merah, hijau dan biru (RGB) yang masing-masing tersusun dari 8 bit, dengan demikian pada setiap pixel berkas bitmap akan disisipkan 3 bit pesan. Kelebihan dari algoritma LSB adalah cepat dan mudah untuk diaplikasikan, sedangkan kekurangannya adalah ukuran pesan yang dapat disisipkan terbatas.

2.7 Citra Digital

Citra adalah representasi dari sebuah objek. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat analog, berupa sinyal-sinyal video, seperti gambar pada monitor televisi atau yang bersifat digital yang dapat langsung disimpan pada suatu pita magnetic. Menurut presisi yang digunakan untuk menyatakan titik-titik kordinat pada domain spatial (bidang), dan untuk menyatakan nilai keabuan atau warna dari suatu citra, maka secara teoritis citra dapat dikelompokkan menjadi empat kelas, yaitu : citra kontinu-kontinu, kontinu-diskrit,

diskrit-kontinu, dan diskrit-diskrit. Dimana label pertama menyatakan presisi dari titik-titik koordinat pada bidang citra, sedangkan label kedua menyatakan presisi nilai keabuan atau warna. Kontinu dinyatakan dengan presisi angka tak terhingga, sedangkan diskrit dinyatakan dengan presisi angka terhingga. Komputer digital bekerja dengan angka-angka presisi

terhingga. Dengan demikian, hanya citra dari kelas diskrit yang dapat diolah oleh komputer. Citra dari kelas tersebut lebih dikenal dengan citra digital.

Citra digital adalah citra yang terdiri dari sinyal-sinyal frekuensi elektromagnetis yang sudah di-sampling sehingga dapat ditentukan ukuran titik gambar tersebut yang pada umumnya disebut pixel. Untuk menyatakan citra (image) secara matematis, dapat didefinisikan fungsi f(x,y) di mana x dan y menyatakan suatu posisi dalam koordinat dua dimensi dan harga f pada titik (x,y) adalah harga yang menunjukkan warna citra pada titik tersebut. Citra digital adalah citra yang dinyatakan secara diskrit (tidak kontinu), baik untuk posisi koordinatnya maupun warnanya. Dengan demikian, citra digital dapat digambarkan sebagai suatu matriks, di mana indeks baris dan indeks kolom dari matriks menyatakan posisi suatu titik di dalam citra, dan harga dari elemen matriks menyatakan warna citra pada titik tersebut. Dalam citra digital yang dinyatakan sebagai susunan matriks seperti ini, elemen-elemen matriks tadi disebut juga dengan istilah pixel yang berasal dari kata picture element.


(33)

2.7.1 Citra Bitmap (BMP)

Format Bitmap merupakan sebuah format citra yang digunakan untuk menyimpan citra tanpa menggunakan kompresi, sehingga menghasilkan citra yang lebih baik dari format lain. Ada 3 macam citra dalam format BMP, yaitu citra biner, citra berwarna dan citra hitam-putih (grayscale). Citra biner hanya memiliki 2 nilai keabuan, yaitu 0 dan 1, sehingga 1 bit sudah cukup untuk merepresentasikan nilai pixel. Citra berwarna adalah citra umum, dimana citra tersebut merupakan kombinasi 3 warna dasar, yaitu merah, hijau dan biru. Setiap Pixel

tersusun oleh R (red), G (green) dan B (blue). Dengan kombinasi ketiga warna maka akan menghasilkan warna yang khas dari nilai pixel dari ketiga warna dasar tersebut. Pada citra hitam-putih, nilai R = G = B untuk menyatakan bahwa citra hitam-putih hanya mempunyai satu kanal warna. Citra hitam-putih pada umumnya adalah citra 8 bit.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.

Pada format bitmap, citra disimpan sebagai suatu matriks di mana masing-masing elemennya digunakan untuk menyimpan informasi warna untuk setiap pixel. Jumlah warna yang dapat disimpan ditentukan dengan satuan bit-per-pixel. Semakin besar ukuran

bit-per-pixel dari suatu bitmap, semakin banyak pula jumlah warna yang dapat disimpan. Dalam

Windows dikenal bitmap dengan 1, 4, 8, 16, dan 24 bit per pixel. Jumlah warna maksimum yang dapat disimpan dalam suatu bitmap adalah sebanyak 2n, dimana n adalah banyaknya bit yang digunakan untuk menyimpan satu titik dari bitmap.


(34)

2.8 Tabel ASCII

Tabel American Standart Code for information (ASCII) terdiri dari 7 bit. Karakter yang ada pada tabel ini adalah karakter umum yang ada pada Sistem operasi Windows, Linux, Mac OS, dan lain sebagainya. Nilai desimalnya antara 0 hingga 127 dan untuk nilai binarinya 00000000 hingga 01111111. Untuk tabel exteded ASCII terdiri dari 8 bit, dimana terdiri dari 0 hingga 127 ASCII dasar ditambah dengan 128 hingga 255 karakter spesial dan nilai binarinya, yaitu 00000000 hingga 11111111. Pada tabel ASCII ada 32 karakter yang bersifat karakter kontrol yang disebut juga non-printable chacracters, dan karakter ini jarangan digunakan. Berikut merupkan tabel karakter yang sering digunakan :

Tabel 2.1 Daftar Karakter ASCII yang Digunakan

Decimal Binary Value Decimal Binary Value Decimal Binary Value

33 00100001 ! 53 00110101 5 73 01001001 I 34 00100010 " 54 00110110 6 74 01001010 J 35 00100011 # 55 00110111 7 75 01001011 K 36 00100100 $ 56 00111000 8 76 01001100 L 37 00100101 % 57 00111001 9 77 01001101 M 38 00100110 & 58 00111010 : 78 01001110 N 39 00100111 ' 59 00111011 ; 79 01001111 O 40 00101000 ( 60 00111100 < 80 01010000 P 41 00101001 ) 61 00111110 = 81 01010001 Q 42 00101010 * 62 00111110 > 82 01010010 R 43 00101011 + 63 00111111 ? 83 01010011 S 44 00101100 , 64 01000000 @ 84 01010100 T 45 00101101 - 65 01000001 A 85 01010101 U 46 00101110 . 66 01000010 B 86 01010110 V 47 00101111 / 67 01000011 C 87 01010111 W 48 00110000 0 68 01000100 D 88 01011000 X 49 00110001 1 69 01000101 E 89 01011001 Y 50 00110010 2 70 01000110 F 90 01011010 Z 51 00110011 3 71 01000111 G 91 01011011 [ 52 00110100 4 72 01001000 H 92 01011100 \


(35)

Decimal Binary Value Decimal Binary Value

93 01011101 ] 113 01110001 q 94 01011110 ^ 114 01110010 r 95 01011111 _ 115 01110011 s 96 01100000 ` 116 01110100 t 97 01100001 a 117 01110101 u 98 01100010 b 118 01110110 v 99 01100011 c 119 01110111 w 100 01100100 d 120 01111000 x 101 01100101 e 121 01111000 y 102 01100110 f 122 01111010 z 103 01100111 g 123 01111011 { 104 01101000 h 124 01111100 | 105 01101001 i 125 01111101 } 106 01101010 j 126 01111110 ~ 107 01101011 k 127 01111111 DEL

108 01101100 l

109 01101101 m

110 01101110 n

111 01101111 o

112 01110000 p

Kode karakter ASCII sangat dibutuhkan untuk proses enkripsi dan dekripsi menggunakan algoritma ElGamal, Karena sebelum dienkripsi maka setiap karakter akan diubah ke dalam bentuk decimal menggunakan tabel ASCII. Pada proses enkripsi maka pesan terlebih dahulu diubah kebentuk decimal menggunakan tabel ASCII, setelah itu maka proses perhitungan menggunakan algoritma Elgamal dilakukan. Setelah Pesan dienkripsi maka ketika ciphertext didekripsi, maka hasil perhitungan dekripsi diubah ke pesan asli menggunakan tabel ASCII.


(36)

2.9 Unified Modelling Language

Unified Modeling Language (UML) adalah sebuah bahasa yang digunakan untuk menspesifikasikan, menvisualisasikan, membangun dan mendokumentasikan bagian objek dari sistem software, seperti model bisnis, model kerja software, dan lain sebagainya [13]. UML merupakan sebuah standart tunggal untuk mengembangkan sebuah sistem yang berorientasikan objek. Pada akhir tahun 1980 hingga awal tahun 1990 bahasa pemograman berorientasi objek berkembang pesat, sehingga kebutuhan akan metode dan analisis sistem berorentasi objek semakin besar. Oleh karena kebutuhan tersebut, maka pada tahun 1994 Booch dan Rumbaugh memulai menggabungkan metode relasional mereka. Pada 1995 pertama kali draft bahasa Unified direlease dan pada tahun 1996 metode tersebut diberinama UML.

Untuk menganalisis dan merancang sistem pada penelitian ini, maka digunakan beberapa diagram yaitu adalah use case diagram, activity diagram, sequence diagram dan

class diagram.

2.9.1 Use Case Diagram

Use Case adalah sebuah teknik yang menggambarkan interaksi aktor dengan sistem, korelasi antar proses, dan bagaimana sistem tersebut digunakan [9]. Dalam Use case ada beberapa komponen penting, yaitu aktor, skenario, dan use case itu sendiri. Pengertian aktor yang dimaksud disini adalah sesuatu dengan perilaku, contohnya manusia, sistem komputer, atau organisasi. Skenario yang dimaksud disini adalah urutan tindakan tertentu dan interaksi antara aktor dengan sistem. Sedangkan use case adalah kumpulan relasi dari skenario yang sukses dan yang gagal yang menggambarkan penggunaan sistem oleh aktor-aktor untuk mendukung tercapainya tujuan.

Sebagai contoh kasus maka akan diangkat masalah proses penjualan tiket bioskop, sehingga dapat dipahami bagaimana merancang use case. Pada contoh kasus ini, yang menjadi aktor utama adalah kasir dan yang menjadi stake holder pada sistem ini adalah kasir, penonton, perusahaan, penyedia layanan kartu credit. Pada sistem ini, kasir akan menginginkan kecepatan dalam mengentri data, keakuratan dalam mengentri data dan tidak


(37)

menginginkan terjadinya error pada saat menggunakan sistem. Penonton akan menginginkan proses pembayaran yang cepat dan dapat memilih bagku sendiri. Perusahaan menginginkan keakuratan transaksi dan kepuasan pelanggan. Penyedia layanan kartu credit menginginkan agar pengguna kartu kredit dapat membayar tiket dengan kartu kredit yang mereka miliki. Prasyarat dari sistem ini adalah kasir akan diautentikasi dan setiap kasih memiliki ID sendiri. Tujuan dari sistem ini adalah Agar proses penjualan tiket bioskop lebih cepat, pencatatan transaksi lebih baik dan lebih detail, dan pelanggan merasa puas karena prosesnya cepat . Berikut adalah Use case contoh kasus diatas :


(38)

2.9.2 Activity Diagram

Untuk dapat menggambarkan proses yang terjadi dan juga langkah-langkah use case yang ada atau logika behaviour dari objek, maka digunanakan sebuah diagram yang disebut Activity diagram. Dengan menggunakan diagram ini, dapat juga dimodelkan action yang akan dilakukan pada saat sebuah operasi dieksekusi atau memodelkan hasil dari action yang dilakukan [9]. Activity Diagram menyerupai flowchart karena secara grafis diagram ini menggambarkan aliran aktivitas baik proses bisnis ataupun use case. Perbedaan activity diagram dengan flowchart adalah activity diagram menyediakan sebuah mekanisme untuk menggambar kegiatan yang tampak secara paralel, sedangkan flowchart tidak. Berikut contoh

activity diagram :


(39)

2.9.3 Class Diagram

Class diagram adalah sebuah diagram yang berfungsi untuk menggambar struktur dari class, atribut-atribut dari class, dan hubungan antara class. Pada class diagram akan dijelaskan korelasi antar class dalam sebuah sistem dan bagaimana mereka saling terkait untuk mencapai sebuah tujuan [9]. Class memiliki 3 area pokok (utama) yaitu : nama ,atribut, dan operasi. Nama berfungsi untuk member identitas pada sebuah kelas, atribut fungsinya adalah untuk member karakteristik pada data yang dimiliki suatu objek di dalam kelas, sedangkan operasi fungsinya adalah memberikan sebuah fungsi ke sebuah objek.


(40)

2.9.4 Sequence Diagram

Sequence diagram adalah diagram yang digunakan untuk menggambarkan interaksi antar objek didalam skenario dan urutan proses yang terjadi berdasarkan urutan waktu [9] . Diagram ini akan menunjukkan sejumlah contoh objek dan message yang diletakkan diantara objek-objek ini dalam sebuah use case. Komponen utama sequence diagram terdiri atas objek yang dituliskan dengan kotak segiempat bernama. Message diwakili oleh garis dengan tanda panah dan waktu yang ditunjukkan dengan progress vertikal. Objek diletakkan didekat bagian atas diagram dengan urutan kiri ke kanan. Mereka diatur dalam urutan guna menyederhanakan diagram. Message bergerak dari satu participant ke participant lain dan dari satu lifeline ke lifeline yang lain.


(41)

BAB III

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Untuk dapat memahami kebutuhan sistem dan gambaran tugas-tugas yang akan dikerjakan sistem, maka dilakukan analisis dan perancangan sistem. Dalam analisis dan perancang sistem, akan dilakukan pemodelan rancang bangun sistem yang akan diimplementasikan dalam bentuk nyata.

3.1.1 Analisis Masalah

Diagram Ishikawa (fishbone diagram) biasanya digunakan untuk mengidentifikasi masalah yang ada pada sistem yang akan dirancang. Dengan diagram ishikawa kita dapat mengindentifikasi, mengeksplorasi dan menggambarkan suatau masalah serta sebab dan akibat dari masalah tersebut dalam bentuk grafis. Diagram ini disebut juga diagram sebab-akibat atapun diagram tulang ikan. Dengan mengindetifikasi masalah yang ada pada sistem, akan membantu dalam menganalisis persyaratan sistem yang akan dikembangkan sehingga tujuan dari sistem dapat dicapai.

Masalah utama dari sistem yang akan dikembangkan pada skripsi ini adalah bagaimana mengamankan data atau informasi rahasia sehingga tidak jatuh ketangan yang tidak berkepentingan. Selanjutnya masalah ini diuraikan kedalam 4 kategori yaitu : pengguna sistem atau program, implementasi kriptografi dan steganografi, ukuran pesan dan citra, serta kunci.


(42)

Dalam kategori pengguna sistem atau program, yang menjadi masalah adalah data atau informasi yang dimiliki bersifat rahasia, jadi apabila data atau informasi tersebut jatuh ketangan yang tidak berkepentingan akan sangat merugikan pengguna. Pada kategori impelementasi kriptografi dan steganografi yang jadi masalah adalah hasil enkripsi pesan sangat tergantung dari panjang bilangan prima yang dibangkitkan sehingga apabila bilangan prima yang dibangkitkan sangat besar maka ketika disisipkan kecitra kemungkinan citra tidak dapat menampung panjangnya bit hasil enkripsi tersebut. Untuk kategori ukuran data atau informasi dan citra, yang jadi masalah adalah apabila ukuran data atau informasi besar sedangkan ukuran citranya kecil, maka citra tidak dapat menampung pesan yang telah dienkripsi. Sedangkan untuk kategori kunci, penyebab masalah adalah apabila kunci yang dibangkitkan tidak memenuhi syarat primitive root maka kemungkinan hasil dekripsinya berbeda dengan data sebenarnya besar. Dari semua masalah yang telah disebutkan diatas, maka berikut akan dibuat diagram ishikawanya :

Gambar 3.1 Diagram Ishikawa untuk Analisis Permasalahan Sistem

Masalah utama ditunjukkan pada segi empat paling kanan diagram ishikawa (bagian kepala), kategori ditunjukkan oleh segi empat yang terhubung ke sebuah garis tulang, sedangkan sebab akibat ditunjukkan oleh tulang-tulang kecil yang diwakili oleh garis panah yang mengarah ke tulang-tulang kategori.


(43)

3.1.2 Analisis Persyaratan (Requirement Analysis)

Dalam analisis persyatan sistem ada dua bagian penting yang harus dipenuhi, yaitu analisis persyaratan fungsional dan analisis persaratan non-fungsional.

3.1.2.1 Analisis Persyaratan Fungsional

Segala sesuatu yang harus dipenuhi sistem untuk mencapai tujuannya merupakan bagian dari persyaratan fungsional. Berikut adalah persyaratan fungsional sistem yang akan dirancang : 1. Sistem harus dapat mengenkripsi pesan menggunakan algoritma ElGamal, kemudian

menyisipkannya ke citra dengan algoritma LSB. Untuk dapat memperoleh data atau informasi asli, sistem harus dapat mengekstraksi data enkripsi dengan algoritma LSB, kemudian didekripsi dengan algoritma ElGamal.

2. Sistem harus dapat membangkitkan kunci, dimana user tidak harus mengerti tentang algoritma ElGamal.

3.1.2.2 Analisis Persyaratan Non-Fungsional

Persyaratan non-fungsional adalah persyaratan apa yang harus dilakukan sistem. Beberapa persyaratan non-fungsional yang harus dipenuhi oleh sistem yang dirancang adalah sebagai berikut :

1. Sistem harus dapat mengubah karakter ke desimal dengan menggunakan tabel ascii dan juga sebaliknya dengan benar, sehingga tidak ada perbedaan hasil dekripsi dengan data atau informasi asli.

2. Perubahan citra yang ditimbulkan oleh penyisipan data enkripsi harus kecil dan tidak tampak oleh mata manusia.

3. Waktu eksekusi untuk enkripsi dan penyisipan ciphertext ke citra harus kecil, dan juga sebaliknya waktu untuk ekstraksi dan dekripsi juga harus kecil.


(44)

3.1.2.3 Pemodelan Persyaratan Sistem dengan Use Case

Untuk mendapatkan gambaran yang lebih jelas mengenai objek yang akan saling berinteraksi dengan sistem dan apa saja yang harus dilakukan oleh sistem agar sistem tersebut berfungsi dengan baik dan sesuai dengan fungsinya, maka akan dilakukan pemodelan sistem. Pemodelan yang akan dikembangkan adalah diagram use case, dimana yang menjadi aktor utamanya adalah pengguna. Pengguna dapat dikategorikan menjadu dua entitas yakni pengirim dan penerima.

Berdasarkan analisis kebutuhan sistem, beberapa hal yang harus dipenuhi oleh sistem, yaitu:

1. Sistem harus dapat membangkitkan kunci publik dan kunci privat yang akan digunakan dalam proses enkripsi dan dekripsi.

2. Sistem harus dapat melakukan enkripsi data atau informasi, kemudian sistem juga harus dapat menyisipkan chipertext ke file citra.

3. Sistem harus dapat mengekstraksi data atau informasi yang telah disisipkan kedalam citra, kemudian di dekripsi.

Berikut ini merupakan rancangan use case sistem yang akan dibuat sesuai dengan analisis kebutuhan yang telah dilakukan :


(45)

Dari use case diagram tampak bahwa penerima akan membangkitkan kunci publik dan kunci privat, kemudian kunci publik diberikan kepada siapa saja yang ingin mengirim data atau informasi kepadanya. Sedangkan kunci privat hanya diketahui oleh si penerima sehingga orang yang tidak berkepentingan tidak mengetahui data atau informasi yang dikirimkan oleh si pengirim. Setelah si pengirim mendapatkan kunci publik, kemudian pengirim akan melakukan proses enkripsi dan menyisipkan ciphertext ke dalam sebuah citra. Setelah data dienkripsi dan disisipkan, maka si pengirim dapat mengirimkan citra yang berisi data atau infromasi tersebut melalui layanan email atau sejenisnya kepada penerima. Setelah penerima menerima citra yang dikirimkan si pengirim, maka penerima akan mengekstraksi dan mendekripsikan data atau informasi yang ada pada citra tersebut. Berikut ini dokumentasi naratif untuk use case diagram :

Tabel 3.1 Dokumentasi Naratif Program Enkripsi dan Steganografi. Nama use case Program enkripsi dan steganografi

Aktor Penerima dan pengirim

Deskripsi

Use case mendeskripsikan bagaimana proses yang terjadi antara satu proses dengan proses yang lain dan antar proses dengan peringim atau penerima.

Pre-condition Data atau informasi yang dikirm berupa file txt

Typical course of event

Aksi aktor Respon sistem

Langkah-1: Penerima menjalankan program.

Langkah-3: Penerima akan memilih bangkitkan kunci dari menu utama.

Langkah-5 : Penerima akan menyimpan kunci, kemudian membagikan kunci publik kepada setiap orang yang ingin mengirim data atau informasi kepadanya.

Langkah-7: Penerima akan

Langkah-2: Sistem akan memuat modul-modul pada menu utama.

Langkah-4: Sistem kemudian membangkitkan kunci publik dan privat.

Langkah-6:Pengirim kemudian menjalankan program dan melakukan proses enkripsi dan menyisipkannya ke citra, dan mengirimkannya ke penerima.


(46)

mengekstraksi dan mendekripsi-kan data atau informasi yang ada pada citra.

Alternate course

Aksi aktor Respon sistem

- -

Post condition Data atau informasi yang dikirim si pengirim kepada penerima

sampai tanpa diketahui oleh orang lain.

Tabel diatas menjelaskan use case program enkripsi dan steganografi secara detail dimana terdapat actor, pre-condition, post-condition dan serta action dari pengguna dan sistem. Dengan tabel diatas dapat diketahui bagaimana cara penggunaan program dan langkah-langkah dalam menggunakan program.

Activity diagram untuk use case program enkripsi dan steganografi adalah :


(47)

Pada use case dapat dilihat terdapat beberapa aksi yang dilakukan oleh aktor, yaitu bangkitkan kunci, enkripsi dan penyisipan, ekstraksi dan dekripsi. Untuk menjelaskan ketiga proses, akan digambarkan dengan diagram activity setiap proses. Untuk menjelaskan proses bangkitkan kunci, maka berikut akan dibuatkan dokumentasi naratif untuk use case

bangkitkan kunci :

Tabel 3.2 Dokumentasi Naratif Use Case Bangkitkan kunci Nama use case Bangkitkan kunci

Aktor Penerima

Deskripsi Use case mendeskripsikan bagaimana penerima menggunakan sistem untuk membangkitkan sebuah kunci privat dan pulik.

Pre-condition Penerima belum memiliki kunci privat dan publik

Typical course of event

Aksi aktor Respon sistem

Langkah 1: Penerima

mengimputkan sebuah bilangan. Langkah 3: Penerima

menginputkan bilangan prima tersebut sebagai kunci.

Langkah 5: Penerima akan menyimpan kunci yang telah dibangkitkan kedalam file txt.

Langkah 2: sistem mengecek apakah biangan tersebut prima atau tidak. Jika prima maka bilangan tersebut akan dicetak dan jika tidak, akan digenerate sebuah bilangan prima.

Langkah 4: Sistem akan membangkitkan kunci privat dan publik

Alternate course

Aksi aktor Respon sistem

- -

Post condition Kunci telah dibangkitkan dan telah disimpan

Tabel diatas menjelaskan usecase bangkitkan kunci secara detail dimana terdapat

actor, pre-condition, post-condition dan serta action dari pengguna dan sistem. Dengan tabel diatas dapat diketahui apa saja action yang dilakukan pengguna dan sistem pada saat membangkitkan kunci.


(48)

Gambar 3.4 Activity Diagram Bangkitkan Kunci

Pada proses enkripsi dan penyisipan, maka hal pertama yang dilakukan sistem adalah memeriksa apakah data atau informasi yang akan disisipkan ada atau tidak, kemudian sistem juga mengecek kunci publiknya dan citra yang akan disisipi. Apabila ada yang kosong, maka sistem akan memberikan pemberitahuan apa yang harus dilakukan, jika tidak ada yang kosong, akan dilakukan proses enkripsi. Pada proses enkripsi, maka setiap karakter data atau informasi akan diubah ke bentuk desimal menggunakan kode ascii. Setelah diubah ke bentuk desimal, akan dilakukan proses enkripsi dengan menggunakan algoritma ElGamal. Hasil enkripsi akan diubah ke bentuk binari, kemudian dihitung jumlah bitnya. Setelah itu, dihitung pula jumlah bit yang dapat ditampung oleh citra, jika citra tidak dapat menampung bit hasil enkripsi, maka proses diberhentikan. Apabila bit-bit hasil enkripsi dapat ditampung oleh citra, akan dilakukan proses penyisipan bit-bit tersebut ke citra. Setelah itu akan dicetak citra yang telah disisipi. Untuk lebih memahami proses enkripsi dan penyisipan, berikut akan dibuat tabel dokumentasi naratif proses enkripsi dan penyisipan :


(49)

Tabel 3.3 Dokumentasi Naratif Use Case Enkripsi. Nama use case Enkripsi dan Penyisipan

Aktor Pengirim

Deskripsi

Use case ini berfungsi untuk melakukan enkripsi dengan algoritma ElGamal, kemudian hasil enkripsi disisipkan ke sebuah citra dengan algoritma LSB

Pre-condition Data atau informasi dalam bentuk text atau txt.

Typical course of event

Aksi aktor Respon sistem

Langkah 1: Pengirim menginput- kan data atau informasi, kunci publik dan citra.

Langkah 8: Pengirim menyimpan citra yang berisi data atau informasi yang telah dienkripsi.

Langkah 2: Sistem mengecek apakah data, kunci dan citra ada yang kosong atau tidak. Langkah 3 : Sistem melakukan proses enkripsi.

Langkah 4 : sistem mengecek apakah citra dapat menampung hasil enkripsi.

Langkah 5: Sistem menyisip-kan ciphertext ke citra.

Langkah 7: Sistem mencetak citra yang telah disisipi dengan ciphertext.

Alternate course

Aksi aktor Respon sistem

- -

Post condition Data atau informasi telah dienkripsi dan disisipkan ke citra, dimana

perubahan citra sangat kecil yang tidak tampak oleh mata manusia.

Tabel diatas menjelaskan use case enkripsi dan penyisipan secara detail dimana terdapat actor, pre-condition, post-condition dan serta action dari pengguna dan sistem. Dengan tabel diatas dapat diketahui action yang dilakukan pengguna dan proses yang terjadi pada saat proses enkripsi dan penyisipan.


(50)

Gambar 3.5 Activity Diagram Proses Enkripsi dan Penyisipan

Pada proses ekstraksi dan dekripsi, penerima akan menginputkan citra yang diterima dari si pengirim dan kunci privatnya. Sistem akan mengecek apakah citra atau kunci privat, ada yang kosong. Apabila ada yang kosong, akan ada pemberitahuan apa yang harus dilakukan dan apabila tidak ada maka sistem akan melakukan proses ekstraksi. Hasil ektraksi akan didekripsi kemudiam hasilnya akan dicetak. Penerima menyimpan data atau informasi dalam bentuk file txt. Untuk lebih jelas, berikut akan dibuatkan dokumentasi naratif use case


(51)

Tabel 3.4 Dokumentasi Naratif Use Case Ektraksi dan Dekripsi Nama use case Ekstraksi dan dekripsi

Aktor Penerima

Deskripsi

Use case ini berfungsi untuk melakukan ekstraksi hasil enkripsi dari citra, kemudian didekripsi untuk memperoleh data atau informasi yang disimpan pada citra.

Pre-condition Data atau informasi dalam bentuk yang dienkripsi dan disisipkan

dalam citra.

Typical course of event

Aksi aktor Respon sistem

Langkah 1: Penerima menginput- kan citra (berisi data atau informasi ) dan kunci privat.

Langkah 6: Penerima akan menyimpan hasil ektraksi dan dekripsi dalam bentuk file txt.

Langkah 2: Sistem memeriksa citra dan kunci privat, apakah ada yang kosong.

Langkah 3 : Sistem melakukan proses ekstraksi.

Langkah 4 : Sistem melakukan proses dekripsi atas hasil ektraksi.

Langkah 5: Sistem akan mencetak hasil ekstraksi dan dekripsi.

Alternate course

Aksi aktor Respon sistem

- -

Post condition Diperoleh data atau informasi yang ada pada citra yang kemudian

disimpan dalam file txt.

Tabel diatas menjelaskan usecase ekstraksi dan dekripsi secara detail dimana terdapat

actor, pre-condition, post-condition dan serta action dari pengguna dan sistem. Dengan tabel diatas dapat diketahui action yang dilakukan pengguna dan proses-proses yang terjadi pada saat ekstraksi dan dekripsi.


(52)

Activity diagram untuk use case proses ekstraksi dan dekripsi adalah sebagai berikut :

Gambar 3.6 Activity Diagram Ekstraksi dan Dekripsi

Berdasarkan dokumentasi naratif dan activity diagram dapat dilihat bahwa proses pertama yang dilakukan adalah ekstraksi data atau informasi yang disisipkan pada citra dengan menggunakan algoritma LSB. Kemudian hasil ekstraksi didekripsikan menggunakan algoritma ElGamal. Pada proses dekripsi, kunci yang digunakan adalah kunci privat. Apabila kunci privatnya salah maka proses dekripsinya tetap dikerjakan, akan tetapi hasil dekripsinya akan berbeda dengan data atau informasi aslinya.


(53)

3.1.3 Analisis Proses Sistem

Pada bab sebelumnya telah dijelaskan bahwa pada progam akan ada 3 proses, yaitu bangkitkan kunci, enkripsi dan penyisipan, ekstraksi dan dekripsi. Tahap pertama yang dilakukan adalah bangkitkan kunci, untuk menjelaskan proses yang terjadi serta hubungan antar proses, maka berikut akan digambarkan dengan sequence diagram :

Gambar 3.7 Sequence Diagram Bangkitkan kunci

Pada tahap bangkitkan kunci maka penerima menginputkan sebuah bilangan untuk dicek apakah prima atau tidak. Jika prima akan dicetak nilai yang diinputkan tersebut, jika tidak prima akan dibangkitkan sebuah bilangan prima yang mendekati nilai yang diinputkan tersebut, kemudian dicetak. Setelah mendapat balasan dari sistem, penerima akan menginputkan bilangan prima tersebut sebagai kunci. Kemudian sistem akan mencari

primitive root dari kunci dan membangkitkan sebuah bilangan prima yang berbeda dari kunci. Setelah itu sistem akan membangkitkan kunci privat dan publik, kemudian mencetaknya.


(54)

Pada tahap kedua yang dilakukan adalah enkripsi dan penyisipan data atau informasi ke citra, untuk menjelaskan proses yang terjadi dan hubungan antar proses maka akan digambarkan dengan sequence diagram berikut ini:

Gambar 3.8 Sequnce Diagram Enkripsi dan Penyisipan

Pada tahap enkripsi dan penyisipan, maka pengirim akan menginputkan kunci dan data atau informasi untuk melakukan proses enkripsi. Setelah sistem memperoleh data dan kunci, sistem akan mengkonversi karakter data ke desimal. Kemudian akan dilakukan proses enkripsi, dimana nilai desimal data dan kunci akan dimasukkan kedalam 2 buah fungsi yang merupakan fungsi algoritma ElGamal. Hasil dari kedua fungsi akan digabungkan dan hasil penggabungan tersebut merupakan ciphertext. Ciphertext akan digunakan sebagai input ke proses penyisipan.


(55)

Berikut merupakan pseudocode enkripsi ElGamal :

Untuk melakukan proses penyisipaan maka pengirim akan menginputkan sebuah citra. Setelah sistem memperoleh ciphertext dan citra, sistem akan membandingkan panjang binari

ciphertext dengan panjang byte citra dikurangi 3. Jika panjang binary ciphertext lebih besar maka proses akan dihentikan, sedangkan jika tidak maka setiap bit binari data akan disisipkan ke setiap byte citra. Panjang dari binari data akan disisipkan ke 3 byte terakhir, kemudian byte

citra akan dikonversi kembali ke citra. Berikut merupakan pseudocode penyisipan pesan dengan algoritma LSB :

text <- plaintext

m <- konversi karakter plaintext ke decimal dengan tabel ascii key <- �,�,��

bangkitkan b ,dimana nilai b < p-1

for (int i=0; i < text.length() ; i++) { r [i] [0] = �� ( ���� )

r [i] [1] = ���� ( ���� )

result += r [i] [0] + r [i] [1] } return result

byte citra <- citra BMP

String citrabinary <- konversi citra ke binary binary databinary <- konversi pesan ke binary String ciphertext

if (citra.lenth()-3 < databinary.length()) { } else {

String m <- Konversi databinary.length() ke binary byte n [i]<- konversi m ke 3 byte n

for (int i = citra.length()-3 ;i<=citra.length();i++{ citra [i] =n [i] }

for (int i=0; i < databinary.length(); i++) { String newcitrabinary =

citrabinary.substring(0,6)+databinary.charAt(i) citra [i]=byte.parsebyte (newcitrabinary, 2) } return citra


(56)

Pada tahap ketiga yang dilakukan adalah proses ekstraksi dan dekripsi, untuk menjelaskan proses yang terjadi dan hubungan antar proses, maka akan digambarkan dengan sequence diagram berikut ini :

Gambar 3.9 Sequnce Diagram Ekstraksi dan Penyisipan

Pada tahap ekstraksi dan penyisipan, penerima akan menginputkan citra agar data

ciphertext diekstrak dari citra. Citra yang diinputkan akan dikonversi ke dalam byte dan 3

byte akhir akan dibaca untuk menentukan panjang binari data ciphertext. Setelah panjang binari data diketahui, baru sistem akan mengambil bit ke 8 dari setiap byte citra sebanyak panjang binari data. Setelah itu, bit-bit tersebut akan dikonversi ke karakter yang merupakan


(1)

break; }

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(EkstraksidanDekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(EkstraksidanDekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(EkstraksidanDekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(EkstraksidanDekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new EkstraksidanDekripsi().setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JButton jButton1;

private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6;

private javax.swing.JFileChooser jFileChooser1; private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7;

private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2;

// End of variables declaration }

//about.java

public class About extends javax.swing.JFrame { /** Creates new form About */

public About() { initComponents(); }


(2)

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {

jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel();

javax.swing.JLabel appDescLabel = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setResizable(false);

jLabel1.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/resource/about.png"))) jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 20)); jLabel2.setText("Program Enkripsi dan Steganografi");

appDescLabel.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N

appDescLabel.setText("<html>Aplikasi dapat Digunakan untuk Mengamankan Data atau informasi yang bersifat rahasia, karena Data atau informasi akan Dienkripsi kemudian disisipkan Ke dalam gambar.

<html>Algoritma yang digunakan untuk Enkripsi adalah Elgamal dan untuk Steganografi adalah Least Significant Bit");

appDescLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING); jLabel3.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/resource/logo fasilkom1.png"))); // NOI18N

jLabel4.setText("Program ini merupakan bagian dari Skripsi S-1 Ilmu Komputer USU");

jButton1.setText("Menu Utama");

jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt);

} });

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { MenuUtama menu_utama= new MenuUtama();

menu_utama.show(); this.dispose(); }

public static void main(String args[]) { try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName()); break;

} }

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(About.class.getName()).log(java.util.log ging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(About.class.getName()).log(java.util.log ging.Level.SEVERE, null, ex);


(3)

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(About.class.getName()).log(java.util.log ging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(About.class.getName()).log(java.util.log ging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new About().setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JButton jButton1;

private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4; }

//CaraPenggunaan.java package finalelgamal.lsb;

public class CaraPenggunaan extends javax.swing.JFrame { /** Creates new form CaraPenggunaan */

public CaraPenggunaan() { initComponents(); }

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {

jLabel1 = new javax.swing.JLabel();

jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jLabel1.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/resource/guide.png"))) jTextArea1.setColumns(20);

jTextArea1.setEditable(false); jTextArea1.setRows(5);

jTextArea1.setText("Cara Penggunaan Program ini:\n1.Bangkitkan Kunci melalui Menu program->Bangkitkan \n Kunci. Dibagian kanan ada fungsi untuk \n membangkitkan sebuah bilangan prima yang\n akan kita gunakan untuk membangkitkan kunci.\n2.Setelah Kunci dibangkitkan maka akan \n dibangkitkan 2 kunci, yaitu publik dan privat,\n Kemudian save kunci tersebut.\n3.Untuk Meng-Enkripsi dan Menyisipkan Data atau\n Informasi ke Citra,Menu program->Enkripsi&Sisipkan\n Pesan. Browse Pesan yang

berekstensi txt,\n Kemudian Browse Kunci Publik yang telah \n Disimpan, selanjutnya Browse Gambar\n yang berkekstensi Bmp sebagai cover. Klik\n Buton Enkripsi&Sisipkan, Kemudian Save gambar\n yang telah disisipi Pesan.\n4.Untuk memperoleh Kembali Pesan Aslinya, Buka\n Menu program->Ekstrak&Dekripsi.Browse Gambar yang \n Telah Disisipi Pesan, Kemudian


(4)

Browse Kunci \n Privat, Selanjutnya klik Button Ekstrak&Dekripsi.\n Kemudian Save.");

jScrollPane1.setViewportView(jTextArea1); jButton1.setText("Menu Utama");

jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt);

} });

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { MenuUtama menu_utama=new MenuUtama();

menu_utama.show(); this.dispose();


(5)

(Hermanda Ihut Tua Simamora)

DATA PRIBADI

Nama Lengkap

: Hermanda Ihut Tua Simamora

Nama Panggilan

: Herman

Tempat/Tanggal Lahir: Sumbul Karo / 13 Mei 1990

Jenis Kelamin

: Pria

Agama

: Protestan

Warga Negara

: Indonesia

Alamat

: Jl. Jamin Ginting gang Purba Dalam no 25, Medan

HP

: 085277221390

E-mail

: hermandas41@gmail.com

Status

: belum menikah

RIWAYAT PENDIDIKAN

Perguruan Tinggi

Universitas Sumatera Utara

Fakultas Ilmu Komputer dan Teknologi Informasi

2008 - 2013

Sekolah Menengah Atas

SMA Cahaya Medan

2005-2008

Sekolah Menengah Pertama

SMP Kesuma Sumbul Karo

2002-2005

Sekolah Dasar

SD Negeri 030319 Sumbul Karo

1996-2002

Programming : Java

Networking : Cisco, Mikrotik, Linux, dan Windows Server

Database

: MySQL

IDE

: NetBeans

Software

: Ms. Office

KEMAMPUAN KOMPUTER


(6)

PENGALAMAN KERJA

No

Instansi/Lembaga

Jabatan/Posisi

Tahun

1

Program Studi S1 Ilmu

Komputer Fasilkom-TI USU

Asisten Laboratorium

2011-2013

Kursus Yang Dikuti

No.

Kursus

Tahun

1

CCNA Academy

2013

2

Mikrotik

2012

3

Linux

2012

4

Bahasa Inggris

2012

Sertifikat Yang Dimiliki

No.

Nama Sertifikat

Tahun

1

CCNA Certification

2013

2

IT Essential Certification

2012

SEMINAR

No.

Seminar

Tahun

1

Seminar Mobile Entrepreneurship

2011

2

Seminar Nasional Pengembangan Profesi Melalui Sertifikasi

Kompetensi Teknologi Informasi Komputer

2012

3

Seminar Nasional Teknologi Informasi dan Komunikasi

2013


Dokumen yang terkait

Modifikasi Least Significant Bit(LSB) Menggunakan Persamaan Kuadrat Pada Kunci Steganografi

2 32 64

Implementasi Algoritma Massey-Omura dan Algoritma Least Significant Bit (LSB) Modifikasi Tempat Penyisipan Dengan Cover Image Bitmap Untuk Keamanan Data Text

2 18 125

Implementasi Algoritma Massey-Omura dan Algoritma Least Significant Bit (LSB) Modifikasi Tempat Penyisipan Dengan Cover Image Bitmap Untuk Keamanan Data Text

1 1 13

Implementasi Algoritma Massey-Omura dan Algoritma Least Significant Bit (LSB) Modifikasi Tempat Penyisipan Dengan Cover Image Bitmap Untuk Keamanan Data Text

0 0 2

Implementasi Algoritma Massey-Omura dan Algoritma Least Significant Bit (LSB) Modifikasi Tempat Penyisipan Dengan Cover Image Bitmap Untuk Keamanan Data Text

0 0 5

Implementasi Algoritma Massey-Omura dan Algoritma Least Significant Bit (LSB) Modifikasi Tempat Penyisipan Dengan Cover Image Bitmap Untuk Keamanan Data Text

1 6 16

Implementasi Algoritma Massey-Omura dan Algoritma Least Significant Bit (LSB) Modifikasi Tempat Penyisipan Dengan Cover Image Bitmap Untuk Keamanan Data Text

0 0 2

Implementasi Algoritma Massey-Omura dan Algoritma Least Significant Bit (LSB) Modifikasi Tempat Penyisipan Dengan Cover Image Bitmap Untuk Keamanan Data Text

1 2 11

Implementasi Algoritma Elgamal Dengan Pembangkit Bilangan Prima Lehmann Dan Algoritma Least Significant Bit (Lsb) Dengan Cover Image Bitmap Untuk Keamanan Data Text

0 0 35

IMPLEMENTASI ALGORITMA ELGAMAL DENGAN PEMBANGKIT BILANGAN PRIMA LEHMANN DAN ALGORITMA LEAST SIGNIFICANT BIT (LSB) DENGAN COVER IMAGE BITMAP UNTUK KEAMANAN DATA TEXT

0 0 11