KEAMANAN DATA TEXT
SKRIPSI
HERMANDA IHUT TUA SIMAMORA
081401079
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
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
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,
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
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
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.
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.
DAFTAR ISI
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
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
DAFTAR TABEL
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
DAFTAR GAMBAR
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
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
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.
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.
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.
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.
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
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 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 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
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
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.
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.
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
���� ( ���� )=> 72�72799832 ( ��� 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
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
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 = b – a’ 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
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
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.
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.
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.
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
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
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,
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
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 [
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
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.
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 :
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 :
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.
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.
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.
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
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
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 :
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
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 :
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
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
Gambar 3.4 Activity Diagram Bangkitkan Kunci
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.
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
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
Activity diagram untuk use case proses ekstraksi dan dekripsi adalah sebagai berikut :
Gambar 3.6 Activity Diagram Ekstraksi dan Dekripsi
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
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
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) }
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
Berikut merupakan pseudocode ekstraksi ciphertext dari citra :
Ciphertext hasil ekstraksi akan menjadi input untuk proses dekripsi. Untuk dapat mendeskripsi ciphertext dibutuhkan kunci privat, oleh karena itu maka penerima akan menginputkan kunci privat. Setelah sistem memperoleh ciphertext dan kunci privat maka sistem akan melakukan proses dekripsi. Hasil dekripsi akan berupa bilangan desimal, oleh karena itu sistem akan mengkonversi desimal ke karakter. Setelah proses konversi dilakukan, maka akan dihasilkan data atau informasi asli. Berikut merupakan pseudocode dekripsi
ciphertext :
byte citra <- citra BMP
String panjangcontainer
Int panjang
string ciphertext
for (int i=citra.length()-3 ;i<=citra.length() ;i++) {
panjangcontainer <- ambil nilai citra[i],lalu konversi ke binary
panjang =String.ParseInt(panjangcontainer) }
for ( int i=7; i< panjang; i+=8){
data +=container.charAt(i)
if( data.length()==8){
String cipher <-konversi data ke karakter
ciphertext +=cipher }
}
return ciphertext
String cipher <- ciphertext
String key <- p,a
String R,Result,Resultakhir
for ( int i=0; i < cipher.length; i++) {
R= (��)−�≡(��)�−1−� ( ���� )
Result = (��)−��� (���� )
Resultakhir +=Result; }
3.2 Perancangan Sistem
Setelah melakukan analisis terhadap kebutuhan sistem, maka hasil analisis tersebut akan digunakan dalam perancangan sistem. Dalam merancang sistem yang akan dibangun, akan dibuat model rancang dalam bentuk rancang class diagram dan rancang antar muka. Hasil model rancang inilah yang akan diimplementasikan kedalam bahasa pemograman java.
3.2.1 Class Diagram
Berdasarkan hasil analisis kebutuhan sistem dan pemodelan sistem, maka akan dibangun sebuah class diagram yang berisikan informasi kelas-kelas yang akan diimplementasikan. Dalam merancang sistem ini, akan dirancang 3 buah kelas yang tediri dari bangkitkan kunci, enkripsi dan steganografi. Berikut merupan dekripsi kelas dan atribut-atributnya :
Tabel 3.5 Kelas dan Atributnya
Nama Kelas Daftar Atribut Deskripsi
Bangkitkan kunci 1. Bilangan : Int 2. Bilangan Prima : Int 3. Kunci : Int
4. Kunci Privat : String 5. Kunci Publik : String 6. getText()
7. setText()
8. isPrimitive(int a, int b) 9. modulo(int a, int b,int c ) 10.checkPrima(int prima) 11.bangkitkankunci()