PERSETUJUAN
Judul : SISTEM TANDA TANGAN DIGITAL PADA
PESAN TEKS MENGGUNAKAN ALGORITMA
KRIPTOGRAFI KUNCI PUBLIK RSA
Kategori : SKRIPSI
Nama : LIA SILVIANA
Nomor Induk Mahasiswa : 071402051
Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI
Departemen : TEKNOLOGI INFORMASI
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI (FASILKOMTI) UNIVERSITAS
SUMATERA UTARA
Diluluskan di Medan, 7 Mei 2013
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dra. Mardiningsih Drs. Sawaluddin, MIT.
NIP 19630405 198811 2 001 NIP 19591231 199802 1 001
Diketahui/Disetujui oleh
Program Studi S1 Teknologi Informasi Ketua,
iii
PERNYATAAN
PREDIKSI KURS RUPIAH TERHADAP DOLLAR AMERIKA SERIKAT
MENGGUNAKANEVOLVING FUZZY NEURAL NETWORK(EFUNN)
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Januari 2013
UCAPAN TERIMA KASIH
Puji dan syukur penulis sampaikan kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan skripsi ini sebagai syarat untuk memperoleh gelar Sarjana Teknologi Informasi, Program Studi S1 Teknologi Informasi Universitas Sumatera Utara.
Ucapan terima kasih penulis sampaikan kepada Bapak Drs. Sawaluddin, MIT dan Ibu Dra. Mardiningsih, M.Sc selaku pembimbing yang telah banyak meluangkan waktu dan pikirannya, memotivasi dan memberikan kritik dan saran kepada penulis. Ucapan terima kasih juga ditujukan kepada Bapak Syahril Efendi, S.Si, M.IT dan Bapak Dedy Arisandi, S.T, M.Kom yang telah bersedia menjadi dosen pembanding. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Program Studi Teknologi Informasi, Prof. Dr. Opim Salim Sitompul, M.Sc. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, semua dosen serta seluruh pegawai biro Tata Usaha Fasilkomti usu yang telah membantu penulis memberikan pelayanan ketatausahaan selama penulis mengikuti perkuliahan di Program Studi S1 Teknologi Informasi.
v
ABSTRAK
Pengiriman pesan melalui e-mail semakin meningkat sehingga diperlukan sistem keamanan yang mampu menjaga kerahasiaan pesan yang dikirim melalui e-mail. Sering terjadinya penyadapan pesan oleh pihak-pihak yang tidak bertanggung jawab membuat penulis melakukan analisis dan membuat aplikasi tandan tangan digital yang mampu menjaga keamanan e-mail. Tanda tangan digital adalah sebuah tanda tangan yang berbasiskan skema kriptografi. Tanda tangan digital dibuat dengan memanfaatkan kriptografi kunci publik. Algoritma RSA adalah salah satu algoritma kunci publik yang dapat digunakan untuk sistem tanda tangan digital. Mekanisme kerja algoritma RSA cukup sederhana dan mudah dimengerti tetapi kokoh. Keamanan RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Perangkat lunak untuk sistem tanda tangan digital yang dibangun dengan menggunakan bahasa pemrograman web PHP dan database MySQL. Perangkat lunak yang dibangun akan menjelaskan proses tanda tangan digital. Aplikasi tersebut dibuat dengan menggunakan algoritma RSA (Ron Rivest, Adi Shamir, dan Leonard Adleman) untuk mengenkripsi dan mendekripsi pesan. Pada tulisan ini penulis akan menganalisis bagaimana implementasi algoritma RSA terhadap pengiriman pesan dan penerimaan pesan sehingga pengguna dapat menjaga kerahasiaan pesan.
DIGITAL SIGNATURE SYSTEM ON TEXT MESSAGE USING RSA PUBLIC KEY CRYPTOGRAPHY ALGORITHM
ABSTRACT
Sending messages via e-mail has increased so that the security system is needed that is able to maintain the confidentiality of messages sent through e-mail. Frequent occurrence intercepts messages by parties who are not responsible to make the authors analyze and make a bunch of digital signature applications are able to maintain the security of e-mail. Digital signature is a signature-based cryptographic schemes. Digital signature created by using public key cryptography. RSA algorithm is a public key algorithm that can be used for digital signature system. Mechanism of action of the RSA algorithm is quite simple and easy to understand but sturdy. RSA security lies in the difficulty of factoring large numbers into prime factors. Software for digital signature system is built using the PHP web programming language and MySQL database. The software is built to explain the process of digital signatures. The application is created using the RSA algorithm (Ron Rivest, Adi Shamir, and Leonard Adleman) to encrypt and decrypt messages. In this paper the author will analyze how the implementation of the RSA algorithm for message sending and receiving messages so that users can keep messages confidential.
vii
DAFTAR ISI
Hal.
Persetujuan ii
Pernyataan iii
Ucapan Terima Kasih 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. Metodologi Penelitian 3
1.7 Sistematika Penulisan 4
BAB 2 Landasan Teori 5
2.1. Kriptografi 5
2.2.1. Tujuan Kriptografi 5
2.2.2. Proses Kriptografi 6
2.2. Kriptografi berdasarkan Kunci 7
2.2.1. Kriptografi Kunci Simetri (Symmetric-key Cryptography) 7 2.2.2. Kunci Asimetri (Asymmetric-key Cryptography)
7
2.3. Keamanan Sistem Kriptografi 9
2.3.1. Kriteria Keamanan Kriptografi 9 2.3.2. Jenis-Jenis Ancaman Keamanan 10 2.4. Jenis-Jenis Serangan Terhadap Sistem Kriptografi 12 2.4.1. Berdasarkan keterlibatan penyerang dalam komunikasi 12 2.4.2. Berdasarkan banyaknya informasi yang diketahui kriptanalis12 2.4.3. Berdasarkan teknik yang digunakan dalam menemukan kunci13
2.5. Tanda Tangan Digital 13
2.5.1. Sifat umum dari tanda tangan digital 14
2.5.2. Penandatanganan Pesan 14
2.5.3. Skenario tandatangan digital 15
2.6. Fungsi Hash 17
2.6.1. Fungsi hash satu-arah (One-way Hash) 18
2.6.2. Algoritma MD5 19
2.7. Bilangan Prima 21 2.7.1. Metode penentuan bilangan prima 21 2.7.2. Metode The Sieve of Eratothenes 22
2.8. Algoritma RSA 27
2.8.1. Konsep dasar perhitungan matematis algoritma RSA 27
2.9. Proses Enkripsi dan Dekripsi RSA 30
2.9.1. Proses pembentukan kunci 30
2.9.2. Proses enkripsi 31
2.9.3. Proses dekripsi 31
2.10. Kecepatan Algoritma RSA 31
2.11. RSA Digital Signature 32
2.11.1 Message Digest 32
2.11.2 Digital Signature 33
2.11.3 Verifikasi Digital Signature 33
2.12. Unified Modeling Language 34
2.12.1 Diagram Use case 35
2.12.2 Spesifikasi Use case (Use case specification) 36 2.12.3 Diagram Aktivitas(Activity Diagram) 37
2.13. Flowchart 38
2.14. Bahasa Pemrograman PHP 39
2.15. Penelitian Terdahulu 41
BAB 3 Analisis dan Perancangan 44
3.1. Analisis Sistem Enkripsi dan Dekripsi dengan Algoritma RSA 44 3.1.1. Algoritma membangkitkan pasangan kunci 44
3.1.2. Enkripsi 45
3.1.3. Dekripsi 45
3.1.4. Contoh perhitungan pembangkit kunci, enkripsi RSA dan
dekripsi RSA 45
3.2. Perancangan Flowchart Sistem 49
3.3. Use case Diagram 53
3.3.1.Model spesifikasi Use case 54
3.3.2.Diagram Aktivitas 59
3.4. Perancangan Antarmuka Pemakai 63
BAB 4 Implementasi dan Pengujian Sistem 68
4.1. Implementasi Sistem 68
4.2. Tahap-Tahap Implementasi 69
4.3. Komponen Utama Dalam Implementasi 69
4.4. Pengujian dan Tampilan 70
BAB 5 Kesimpulan dan Saran 77
5.1 Kesimpulan 77
5.2 Saran 77
Daftar Pustaka 79
ix
DAFTAR TABEL
Hal. Tabel 2.1 Kelebihan dan Kelemahan Kriptografi Kunci Simetri 8 Tabel 2.2 Kelebihan dan Kekurangan Kriptografi Kunci Asimetri 8 Tabel 2.2 Kelebihan dan Kekurangan Kriptografi Kunci Asimetri (Lanjutan) 9
Tabel 2.3 Simbol Aktivitas Diagram 37
Tabel 2.4 Fungsi simbol-simbol flowchart 38
Tabel 2.5 Penelitian Terdahulu 42
Tabel 2.5 Penelitian Terdahulu (Lanjutan) 43
Tabel 3.1 Nilai GCD 45
Tabel 3.1 Nilai GCD (Lanjutan) 46
Tabel 3.2 Perhitungan Kunci Privat 46
Tabel 3.3 Enkripsi 47
Tabel 3.4 Dekripsi 48
Tabel 3.5 Konversi Pesan Ke Karakter ASCII 49
Tabel 3.6 SpesifikasiUse caseUser Login 55
Tabel 3.7 SpesifikasiUse caseUser Daftar Akun 55
Tabel 3.7 SpesifikasiUse caseUser Daftar Akun (Lanjutan) 56
Tabel 3.8 SpesifikasiUse caseUser Lihat Profil 56
Tabel 3.9 SpesifikasiUse caseUser Lihat Email Masuk 57
Tabel 3.10 SpesifikasiUse caseUser Kirim Email 57
Tabel 3.10 SpesifikasiUse caseUser Kirim Email (Lanjutan) 58 Tabel 3.11 SpesifikasiUse caseUser Lihat Email Keluar 58
DAFTAR GAMBAR
Hal.
Gambar 2.1 Proses Kriptografi 6
Gambar 2.2 Skema Kriptografi Kunci Simetri 7
Gambar 2.3 Skema Kriptografi Kunci Asimetri 7
Gambar 2.4 Interruption 10
Gambar 2.5 Interception 11
Gambar 2.6 Modification 11
Gambar 2.7 Fabrication 11
Gambar 2.8 Skenario tanda tangan digital 15
Gambar 2.9 Fungsi hash satu-arah 18
Gambar 2.10 Pembuatan message digest dengan algoritma MD5 20
Gambar 2.11 Pengolahan blok 512 bit (Proses HMD5) 20
Gambar 2.12 Proses 1 pembangkit bilangan prima The Sieve of Eratothenes 23 Gambar 2.13 Proses 2 pembangkit bilangan prima The Sieve of Eratothenes 24 Gambar 2.14 Proses 3 pembangkit bilangan prima The Sieve of Eratothenes 24 Gambar 2.15 Proses 4 pembangkit bilangan prima The Sieve of Eratothenes 25 Gambar 2.16 Proses 5 pembangkit bilangan prima The Sieve of Eratothenes 25 Gambar 2.17 Proses 6 pembangkit bilangan prima The Sieve of Eratothenes 26 Gambar 2.18 Proses 7 pembangkit bilangan prima The Sieve of Eratothenes 26
Gambar 2.19 SkemaDigital Signature 32
Gambar 2.20 Skema proses untuk verifikasi dengan algoritma RSA 33
Gambar 2.21 Aktor-aktoruse case 35
Gambar 2.22 Aktor danuse case 36
Gambar 2.23 Keterhubungan 36
Gambar 3.1 Flowchart proses pembuatan tandatangan digital 50 Gambar 3.2 Flowchart proses verifikasi tandatangan digital 51
Gambar 3.3 Flowchart Enkripsi 52
Gambar 3.4 Flowchart Dekripsi 53
Gambar 3.5 Diagram Use case 54
Gambar 3.6 Diagram Aktivitas Login 60
Gambar 3.7 Diagram Aktivitas Daftar Email 60
Gambar 3.8 Diagram Aktivitas Pembuatan Kunci 61
Gambar 3.9 Diagram Aktivitas Kirim Pesan 61
Gambar 3.10 Diagram Aktivitas Inbox 62
Gambar 3.11 Diagram Aktivitas Cari User 62
Gambar 3.12 Rancangan Halaman Login 63
Gambar 3.13 Rancangan Halaman Daftar Email 64
Gambar 3.14 Rancangan Halaman Beranda 64
Gambar 3.15 Rancangan Halaman Pembangkit Kunci 65
Gambar 3.16 Tampilan Halaman Compose 65
Gambar 3.17 Rancangan Halaman Sent Email 66
xi
Gambar 3.19 Rancangan Halaman Cari User 67
Gambar 4.1 Tampilan utama 70
Gambar 4.2 Form daftar email 70
Gambar 4.3 Halaman Login 71
Gambar 4.4 Halaman Beranda (Home) 71
Gambar 4.5 Halaman Pembangkit Kunci 71
Gambar 4.6 Nilai p dan q 72
Gambar 4.7 Tampilan pasangan kunci publik dan private 72
Gambar 4.8 Halaman Compose 72
Gambar 4.9 Hasil Signature 73
Gambar 4.10 Halaman Sent Email 73
Gambar 4.11 Halaman Inbox 74
Gambar 4.12 Halaman Verifikasi 74
Gambar 4.13 Halaman Cari User 75
Gambar 4.14 Pasangan Kunci public (D, N) 75
Gambar 4.15 Input D dan N 75
Gambar 4.16 Hasil Verifikasi Benar 76
ABSTRAK
Pengiriman pesan melalui e-mail semakin meningkat sehingga diperlukan sistem keamanan yang mampu menjaga kerahasiaan pesan yang dikirim melalui e-mail. Sering terjadinya penyadapan pesan oleh pihak-pihak yang tidak bertanggung jawab membuat penulis melakukan analisis dan membuat aplikasi tandan tangan digital yang mampu menjaga keamanan e-mail. Tanda tangan digital adalah sebuah tanda tangan yang berbasiskan skema kriptografi. Tanda tangan digital dibuat dengan memanfaatkan kriptografi kunci publik. Algoritma RSA adalah salah satu algoritma kunci publik yang dapat digunakan untuk sistem tanda tangan digital. Mekanisme kerja algoritma RSA cukup sederhana dan mudah dimengerti tetapi kokoh. Keamanan RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Perangkat lunak untuk sistem tanda tangan digital yang dibangun dengan menggunakan bahasa pemrograman web PHP dan database MySQL. Perangkat lunak yang dibangun akan menjelaskan proses tanda tangan digital. Aplikasi tersebut dibuat dengan menggunakan algoritma RSA (Ron Rivest, Adi Shamir, dan Leonard Adleman) untuk mengenkripsi dan mendekripsi pesan. Pada tulisan ini penulis akan menganalisis bagaimana implementasi algoritma RSA terhadap pengiriman pesan dan penerimaan pesan sehingga pengguna dapat menjaga kerahasiaan pesan.
vi
DIGITAL SIGNATURE SYSTEM ON TEXT MESSAGE USING RSA PUBLIC KEY CRYPTOGRAPHY ALGORITHM
ABSTRACT
Sending messages via e-mail has increased so that the security system is needed that is able to maintain the confidentiality of messages sent through e-mail. Frequent occurrence intercepts messages by parties who are not responsible to make the authors analyze and make a bunch of digital signature applications are able to maintain the security of e-mail. Digital signature is a signature-based cryptographic schemes. Digital signature created by using public key cryptography. RSA algorithm is a public key algorithm that can be used for digital signature system. Mechanism of action of the RSA algorithm is quite simple and easy to understand but sturdy. RSA security lies in the difficulty of factoring large numbers into prime factors. Software for digital signature system is built using the PHP web programming language and MySQL database. The software is built to explain the process of digital signatures. The application is created using the RSA algorithm (Ron Rivest, Adi Shamir, and Leonard Adleman) to encrypt and decrypt messages. In this paper the author will analyze how the implementation of the RSA algorithm for message sending and receiving messages so that users can keep messages confidential.
PENDAHULUAN
1.1. Latar Belakang
Kemajuan sistem informasi semakin tak terbatas, saat ini banyak dokumen penting
yang dikirim menggunakan media internet. Namun, perkembangan teknologi yang
seperti itu pula yang menyebabkan informasi atau pesan yang dipertukarkan tersebut
menjadi tidak aman. Pelaku kejahatan memanfaatkan celah ketidakamanan tersebut
untuk dimasuki dan melakukan manipulasi.
Jika berbicara tentang keamanan pesan, maka kita tidak dapat memisahkannya
dengan kriptografi. Kriptografi adalah ilmu yang mempelajari teknik-teknik
matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan
(confidentiality), integritas data (data integrity) dan otentikasi (authentication). Sehingga informasi atau pesan yang dikirim akan terjaga kerahasiaannya.
Namun, kriptografi tidak dapat menyediakan aspek keamanan nirpenyangkalan
(non-repudiation), yaitu layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman
atau penerima pesan menyangkal telah menerima pesan (Munir, 2006). Untuk
menghindari hal tersebut diperlukan tanda tangan digital (Digital Signature).
Tanda tangan digital bukan merupakan hasil scan atau input tanda tangan
melalui interface tertentu. Tanda tangan digital adalah suatu nilai kriptografis yang
bergantung pada isi data itu sendiri serta kunci yang digunakan untuk membangkitkan
nilai kriptografisnya (Lutfi, 2010). Pesan ditandatangi oleh pengirim dan diverifikasi
oleh penerima. Pesan yang sudah ditandatangani menunjukkan bahwa pesan tersebut
2
Dalam implementasinya, tanda tangan digital bisa dibuat dengan menggunakan
beberapa algoritma. Algoritma-algoritma yang sering digunakan untuk tanda tangan
digital adalah RSA dan Elgamal. Selain itu, algoritma yang dikhususkan untuk
tandatangan digital adalah Digital Signature Algorithm (DSA), yang merupakan standar untuk Digital Signature Standart (DSS). Pada DSA algoritma signature dan verifikasi berbeda. Pembuat tanda tangan menggunakan kunci privat untuk membuat
tanda tangan sedangkan kunci publik, yang berkorespondensi dengan kunci privat
namun tidak sama, digunakan untuk memverifikasi tanda tangan.
Proses signature pada penelitian ini menggunakan fungsi hash MD5. Penulis menggunakan algoritma MD5 karena algoritmanya semakin kompleks. Walaupun
sudah ada algoritma MD terbaru yaitu MD6 tetapi belum ada penelitian yang lengkap
tentang keamanan dari algoritma ini dan apakah terdapat kolisi atau tidak.
Penulis juga menggunakan algoritma RSA untuk proses enkipsi dan dekripsi
karena keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang
besar menjadi faktor-faktor prima.
Untuk mengeneratebilangan prima, penulis menggunakan metodeThe Sieve of Erastohenes. Alasan penulis menggunakan metode The Sieve of Erastohenes adalah karena untuk menghasilkan bilangan prima metode ini menggunakan memori yang
lebih kecil (Atkin & Bernstein, 2003).
1.2. Rumusan Masalah
Bagaimana mencegah pengubahan dan penyangkalan pesan dengan menggunakan
tandatangan digital.
1.3. Batasan Masalah
Dalam perancangan sistem ini, terdapat beberapa batasan masalah yaitu:
1. Pembangkitan nilai hash dari dokumen teks menggunakan algoritma fungsi
hashing MD5
3. Algoritma yang dipakai untuk membangkitkan bilangan prima adalah The Sieve Eratosthenes
4. Perancangan sistem pada penelitian ini menggunakan PHP dan MySQL.
1.4. Tujuan Penelitian
Tujuan dari penelitian ini adalah untuk menerapkan tandatangan digital pada pesan
teks untuk mengamankan pesan dari paengubahan atau penyangkalan pesan.
1.5. Manfaat Penelitian
Mencegah penyangkalan pesan oleh entitas yang berkomunikasi dan mencegah
pengubahan pesan oleh penyerang
1.6. Metodologi Penelitian
Dalam usaha memperoleh hasil yang diharapkan dari penelitian ini, akan diterapkan
beberapa metode dalam penelitian ini, yaitu:
a. Studi Literatur
Metode studi literatur ini dilakukan dengan mengumpulkan bahan-bahan yang
berkaitan dengan penelitian, baik dari buku-buku yang memuat pemecahan
masalah dari penelitian maupun informasi yang diperoleh melalui internet.
b. Metode Analisis
Menganalisa bagaimana algoritma RSA diimplementasikan dalam tandatangan
digital.
c. Pembuatan Sistem
Pembuatan sistem dengan menggunakan bahasa pemrograman berbasis web PHP
4
d. Pengujian
Pada tahap ini dilakukan proses pengujian dan percobaan terhadap perangkat
lunak sesuai dengan spesifikasi yang ditentukan sebelumnya serta memastikan
program yang dibuat dapat berjalan seperti yang diharapkan.
1.7. SISTEMATIKA PENULISAN
Sistematika penulisan tugas akhir ini dibagi menjadi lima bab, yaitu sebagai berikut:
BAB 1: Pendahuluan
Berisikan konsep dasar penyusunan laporan tugas akhir.
BAB 2: Tinjauan Pustaka
Pada bab ini dibahas mengenai teori-teori yang mendukung pembahasan pada bab
selanjutnya, implementasi tanda tangan digital dengan menggunakan algoritma RSA.
BAB 3: Analisis dan Perancangan Sistem
Berisikan analisa permasalahan algoritma RSA serta perancangan sistem secara
fungsional.
BAB 4: Implementasi Dan Pengujian Sistem
Berisikan gambaran dari struktur program dan memberikan rancang bangun yang
lengkap kepada user dan pemakai komputer lain serta implementasinya, yaitu menguji
untuk menemukan kesalahan.
BAB 5: Penutup
LANDASAN TEORI
2.1. Kriptografi
Kriptografi (cryptography) berasal dari Bahasa Yunani: “cryptos” (rahasia) dan
“graphein” (tulisan).Kriptografi (Cryptography) adalah suatu ilmu yang mempelajari sistem sandi untuk menjamin kerahasiaan dan keamanan data, dilakukan oleh seorang
kriptographer.
2.1.1. Tujuan Kriptografi
Adapun tujuan dari kriptografi yang didefenisikan dalam (Munir, 2006)
adalah:
1. Kerahasiaan (confidentiality), adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
2. Integritas Data (data integrity), adalah layanan yang menjamin bahwa pesan masih asli/utuh atau belum pernah dimanipulasi selama pengiriman.
3. Otentikasi (authentication), adalah layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user
authentication atau entity authentication) maupun mengidentifikasi kebenaran
sumber pesan (data origin authentication). Dua pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan sumber
pesan.
4. Nirpenyangkalan (non-repudiation), adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengiriman pesan menyangkal
8
Tabel 2.1 Kelebihan dan Kelemahan Kriptografi Kunci Simetri
Kelebihan Kelemahan
Algoritma Kriptografi Simetri dirancang sehingga proses
enkripsi/dekripsi membutuhkan
waktu yang singkat.
Ukuran kunci simetri relative pendek.
Dapat digunakan untuk
membangkitkan bilangan acak
Dapat disusun untuk menghasilkan chipper yang lebih kuat
Otentikasi pengirim pesan langsung diketahui dari chipertext yang
diterima, karena kunci hanya
diketahui oleh pengirim dan
penerima saja
Kunci simetri harus dikirim melalui saluran yang aman, kedua entitas
yang berkomunikasi harus menjaga
kerahasiaan kunci ini
Kunci harus sering diubah, mungkin pada setiap sesi komunikasi
Tabel 2.2 Kelebihan dan Kekurangan Kriptografi Kunci Asimetri
Kelebihan Kelemahan
Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap
entitas yang berkomunikasi (tetapi
otentikasi kunci asimetri harus tetap
terjamin).
Pasangan kunci publik dan kunci privat tidak perlu diubah, bahkan
dalam periode waktu yang panjang.
Dapat digunakan untuk
mengamankan pengiriman kunci
simetri
Beberapa algoritma kunci asimetri dapat digunakan untukmember
Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri,
karena enkripsi dan dekripsi
menggunakan bilangan yang besar
dan melibatkan operasi
perpangkatan yang besar
Ukuran cipherteks lebih besar daripada plainteks (bisa dua kali
sampai empat kali ukuran plainteks)
Ukuran kunci relatif lebih besar daripada ukuran kunci simetri
Tabel 2.2 Kelebihan dan Kekurangan Kriptografi Kunci Asimetri (Lanjutan)
Kelebihan Kelemahan
tanda tangan digital pada pesan. orang, maka cipherteks tidak
memberikan informasi mengenai
otentikasi pengirim
Tidak ada algoritma kunci asimetri yang terbukti aman (sama seperti
blok chipper). Kebanyakan
algoritma mendasarkan
keamanannya pada sulitnya
memecahkan persoalan-persoalan
aritmetik (pemfaktoran, logaritmik,
dsb) yang menjadi dasar
pembangkitan kunci
Pada pengiriman pesan, terdapat dua masalah penting yang harus diatasi, yaitu
integritas dan otentikasi pesan. Tidak menutup kemungkinan bahwa pada saat
pengiriman pesan, ada pihak ketiga yang dengan sengaja merubah dan memodifikasi
isi pesan tersebut, sehingga dapat menimbulkan masalah yang serius. Masalah
integritas ini penting untuk diatasi.
2.3. Keamanan Sistem Kriptografi
Suatu sistem kriptografi merupakan sebuah himpunan algoritma, seluruh
kemungkinan plainteks, cipherteks, kunci, dan proses manajemen kunci yang
digunakan (Oppliger, 2005) .
2.3.1. Kriteria Keamanan Kriptografi
Sebuah algoritma kriptografi dikatakan aman (computationally secure) bila memenuhi tiga kriteria berikut:
1. Persamaan matematis yang menggambarkan operasi algoritma kriptografi sangat
12
2.4. Jenis-Jenis Serangan Terhadap Sistem Kriptografi
Berikut ini adalah jenis-jenis serangan terhadap sistem kriptografi yang didefenisikan
oleh (Munir ,2006) yaitu:
2.4.1. Berdasarkan keterlibatan penyerang dalam komunikasi 1. Serangan Pasif
Pada jenis serangan ini, penyerang tidak terlibat dalam komunikasi antara
pengirim dan penerima, namun penyerang menyadap semua pertukaran pesan
antara kedua entitas tersebut. Tujuannya adalah untuk mendapatkan sebanyak
mungkin informasi yang digunakan untuk kriptanalis.
2. Serangan Aktif
Pada jenis serangan ini, penyerang mengintervensi komunikasi dan ikut
mempengaruhi sistem untuk keuntungan dirinya. Misalnya penyerang mengubah
aliran pesan seperti menghapus sebagian cipherteks, mengubah cipherteks,
menyisipkan potongan cipherteks palsu, me-replay pesan lama, mengubah
informasi yang tersimpan dan sebagainya. Contoh dari serangan ini adalah man-in-the-middle attack
2.4.2. Berdasarkan banyaknya informasi yang diketahui kriptanalis 1. Chipertext-only attack
Ini adalah jenis serangan umum namun paling sulit karena informasi yang
tersedia hanyalah cipherteks saja. Kriptanalis memiliki beberapa cipherteks dari
beberapa pesan, semuanya dienkripsi dengan algoritma yang sama. Tugas
kriptanalis adalah menemukan plainteks sebanyak mungkin dari cipherteks
tersebut atau menemukan kunci yang digunakan untuk mendekripsi.
2. Known-plaintext attack
Ini adalah jenis serangan di mana kriptanalis memiliki pasangan plainteks dan
cipherteks yang berkoresponden.
3. Chosen-plaintext attack
Serangan jenis ini lebih hebat daripada known-plaintext attack, karena kriptanalis
dapat memilih plainteks yang dimilikinya untuk dienkripsikan, yaitu
4. Chosen-ciphertext attack
Ini adalah jenis serangan dimana kriptanalis memilih cipherteks untuk
didekripsikan dan memiliki akses ke plainteks hasil dekripsi. Jenis serangan ini
biasanya dipakai pada sistem kriptografi.
5. Chosen-text attack
Ini adalah jenis serangan yang merupakan kombinasi chosen-plaintext attack dan
chosen-ciphertext attack.
2.4.3. Berdasarkan teknik yang digunakan dalam menemukan kunci 1. Exhaustive attack atau brute force attack
Ini adalah serangan untuk mengungkap plainteks atau kunci dengan mencoba
semua kemungkinan kunci. Diasumsikan kriptanalis mengetahui algoritma
kriptografi yang digunakan oleh pengirim pesan. Selain itu kriptanalis memiliki
sejumlah cipherteks dan/atau plainteks yang bersesuaian.
2. Analytical attack
Pada jenis serangan ini, kriptanalis tidak mencoba-coba semua kemungkinan
kunci tetapi menganalisis kelemahan algoritma kriptografi untuk mengurangi
kemungkinan kunci yang tidak mungkin ada. Diasumsikan kriptanalis mengetahui
algoritma kriptografi yang digunakan oleh pengirim pesan.
2.5. Tandatangan Digital
Tanda tangan digital atau Digital Signature merupakan suatu tanda tangan (penanda) yang dibubuhkan pada data digital. Tanda tangan digital bukan merupakan hasil scan
atau input tanda tangan melalui interface tertentu. Tanda tangan digital adalah suatu nilai kriptografis yang bergantung pada isi data itu sendiri serta kunci yang digunakan
untuk membangkitkan nilai kriptografisnya. Sehingga nilai setiap tanda tangan digital
dapat selalu berbeda tergantung data yang ditandatangani (Lutfi, 2010). Dengan tanda
tangan digital maka integritas data terjamin, dan juga digunakan untuk membuktikan
14
2.5.1. Sifat umum dari tanda tangan digital
Beberapa sifat umum tandatangan digital adalah sebagai berikut:
1. Otentik (authenticity), tak bisa/sulit ditulis dan sulit ditiru oleh orang lain. Pesan dan tanda tangan pesan tersebut juga dapat menjadi barang bukti, sehingga
penandatangan tak bisa menyangkal bahwa dulu ia tidak pernah
menandatanganinya.
2. Sah(integrity)untuk dokumen (pesan) itu saja atau salinannya yang sama persis. Tanda tangan itu tidak bisa dipindahkan ke dokumen lainnya, meskipun dokumen
lain itu hanya berbeda sedikit. Ini juga berarti bahwa jika dokumen itu diubah,
tanda tangan digital dari pesan tersebut tidak lagi sah.
3. Nirpenyangkalan (Non Repudiation), non repudiation ini timbul dari keberadaan tanda tangan digital yang menggunakan enkripsi asimetris (asymmetric encryption). Enkripsi asimetris ini melibatkan keberadaan dari kunci privat dan kunci publik. Suatu pesan yang telah dienkripsi dengan menggunakan kunci privat
hanya dapat dekripsi dengan menggunakan kunci publik dari pengirim. Dengan
kata lain, pengirim tidak dapat menyangkal keberadaan pesan tersebut karena
terbukti bahwa pesan tersebut dapat didekripsi dengan kunci publiknya.
4. Dapat diperiksa dengan mudah, termasuk oleh pihak-pihak yang belum pernah
bertatap muka langsung dengan penandatangan.
2.5.2. Penandatanganan Pesan
Menandatangani pesan dapat dilakukan dengan salah satu dari dua cara, yaitu:
1. Enkripsi pesan
Mengenkripsi pesan dengan sendirinya juga menyediakan ukuran otentikasi. Pesan
yang terenkripsi juga sudah menyatakan bahwa pesan tersebut telah
ditandatangani.
2. Tanda tangan digital dengan fungsi hash (hash function)
Pengirim pesan mula-mula menghitungmessage digestdari pesan.Message digest diperoleh dengan mentransformasikan pesan dengan menggunakan fungsi hash 1
arah. Selanjutnya message digest dienkripsi dengan algoritma kriptografi kunci publik menggunakan kunci privat pengirim. Hasil enkripsi inilah yang disebut
dengan cara menyambung (append) lalu dikirim melalui saluran komunikasi. Kemudian di tempat penerima, tandatangan digital dibuktikan keotentikannya
dengan melakukan verifikasi pesan, yaitu dengan cara sebagai berikut:
1. Tandatangan digital didekripsi dengan menggunakan kunci publik pengirim pesan
yang menghasilkan message digest (MD) semula.
2. Penerima pesan mengubah pesan menjadi message digest (MD’) menggunakan
fungsi hash satu arah yang sama dengan fungsi hash yang digunakan pengirim.
3. Jika MD’ = MD, maka pesan dan tandatangan yang diterima memang benar
berasal dari pengirim pesan.
2.5.3 Skenario Tandatangan Digital
Gambar 2.8 Skenario tanda tangan digital (Sadikin, 2012)
Misalnya : Alice ingin mengirim dokumen bertandatangan digital pada Bob. Alice
terlebih dahulu membangkitkan sepasang kunci asimetrik miliknya, yaitu kunci privat
( ) dan kunci publik ( ). Kemudian Alice menandatangani
dokumenMdengan memanggil algoritmasignsebagai berikut:
16
Untuk menghasilkan tandatangan. Alice kemudian mengirim (M, ) kepada
Bob. Bob pada akhirnya memanggil algoritmaverifysebagai berikut:
← ( , , )
Untuk memverifikasi tandatangan, Bob menerima pasangan (M, ) bila nilai
terima adalahtrue(benar).
1. Layanan Keamanan
Tanda tangan digital dapat digunakan untuk mewujudkan 3 layanan keamanan yaitu
otentikasi pesan, keutuhan pesan dan nirpenyangkalan (sadikin 2012).
a. Otentikasi Pesan
Sistem tanda tangan digital dapat mewujudkan layanan otentikasi pesan dengan
ilustrasi berikut ini.
Alice mengirim pesanM, beserta tanda tangan yang dibuat dengan kunci privat Alice. Bob dapat mengotentikasi pesan dengan cara memverifikasi tanda tangan
dengan kunci publik Alice. Pesan terotentikasi bila algoritma verify mengembalikan nilaiTrue.
b. Keutuhan Data
Selain otentikasi pesan, sistem tanda tangan digital yang ditambah fungsi hash dapat
mewujudkan layanan keutuhan data beserta dengan prosessign/verify. Misalnya Alice ingin menandatangani pesan M dan mengirimnya ke Bob dengan menjaga keutuhan pesan. Alice dapat menggunakan fungsi hash h dan mendapatkan tanda tangan dengan cara memanggil algoritmasigndengan masukandigestM.
← ( ( ), )
Alice mengirim (M, ) ke Bob. Setelah menerima (M, )Bob memverifikasi
digestM sebagai berikut:
← ( ( ), , )
c. Non-repudiation
Layanan keamanan yang juga disediakan oleh sistem tanda tangan digital adalahnon -repudiation. Layanannon-repudiationmembuat penolakan terhadap pesan yang telah ditandatangani menjadi tidak mungkin. Misalnya Alice menolak kalau ia telah
menandatangi sebuah dokumen yang sebenarnya ditandatangani oleh Alice. Bob dapat
membuktikan bahwa Alice pernah menandatangani dokumen tersebut.
Untuk mewujudkan layanan non-repudiation diperlukan pihak ketiga yang terpercaya. Pihak ketiga ini berperan sebagai perantara antara Alice dan Bob. Pada
awalnya Alice menandatangani dokumen M dengan kunci privat Alice dan
mendapatkan tanda tangan . Kemudian alice mengirim pasangan (M, ) ke pihak
ketiga. Pihak ketiga memverifikasi (M, ) dengan kunci publik alice dan menyimpan
salinan (M, rho). Pihak ketiga menandatangani M dengan kunci privat pihak ketiga
dan mendapatkan ’. Pihak ketiga mengirimkan (M, rho’) ke Bob. Bob memverifikasi
(M, rho’) dengan kuncipublik pihak ketiga. Jika pada waktu yang akan datang Alice
menolak telah menandatangani M, pihak ketiga memiliki salinan (M, ).
2.6. FungsiHash
Fungsi hash adalah fungsi yang masukannya adalah sebuah pesan dan keluarannya
sebuah sidik pesan atau message fingerprint(Sadikin, 2012). Sidik pesan sering juga disebut message digest. Fungsi hash dapat menerima masukan string apa saja. Jika string menyatakan pesan (message), maka sembarang pesan M berukuran bebas dikompresi oleh fungsi hashHmelalui persamaan:
h=H(M)
Pada persamaanh,nilaihashataumessage digestdari fungsiHuntuk masukan M. Dengan kata lain, fungsi hash mengkompresi sembarang pesan yang berukuran berapa saja menjadi message digest yang ukurannya selalu tetap (dan lebih pendek dari panjang pesan semula).
Nama lain fungsihashadalah:
Fungsi hash adalah publik (tidak dirahasiakan), dan keamanannya terletak pada sifat satu arahnya. Contoh fungsi hash adalah MD, MD2, MD4, MD5, Secure Hash Function (SHA), Snefru, N-hash, RIPE-MD dan lain-lain. Fungsi hash yang banyak dipakai di dalam aplikasi kriptografi adalahMD5danSHA.
Algoritma MD4 (Message Diggest 4) merupakan salah satu seri algoritma Message Diggest yang dibuat oleh Ronald Rivest pada tahun 1990. Proses MD4 terdiri atas 3 buah putaran dengan masing-masing putaran terdiri atas 16 buah operasi
dasar (Nugraha, 2010). Pada tahun 1991, MD4 sudah tidak aman karena ada pihak
lain yang melakukan serangan terhadap putaran (round) terakhir pada operasi MD4. Kolisi pada MD4 ditemukan pada tahun 1995 oleh Hans Dobertin (Nugraha, 2010).
Kolisi merupakan kondisi dimana terdapat dua masukan string yang berbeda, namun memiliki message diggest keluaran fungsi hash yang sama (Widanarto, 2005). Dia dapat menemukan dokumen atau file tertentu dengan message diggest yang sama hanya dalam hitungan detik. Pada tahun 2008,resistanceatau tingkat keamanan MD4 benar-benar dipatahkan. Sejak saat itu algoritma MD4 sangat tidak aman digunakan.
Setelah diketahui kelemahan MD4, dibuatlah versi terbaru Message Diggest, yaitu MD5. Namun pada tahun 2009, resistance dari MD5 berhasil dipatahkan, sehingga MD5 pun sudah dianggap sangat tidak aman untuk digunakan.
Algoritma MD6 merupakan algoritma MD terbaru yang dibuat oleh Ronald
Rivest dan kawan-kawan pada tahun 2008. Algoritma ini merupakan perbaikan dari
MD5. Namun karena cenderung masih baru, belum ada penelitian yang lengkap
tentang keamanan dari algoritma ini dan apakah terdapat kolisi atau tidak.
2.6.2. Algoritma MD5
MD5 adalah fungsi hash satu-arah yang dibuat oleh Ron Rivest. MD5 merupakan perbaikan dari MD4setelah MD4 berhasil diserang oleh kriptanalis. Algoritma MD5 menerima masukan berupa pesan dengan ukuran sembarang dan menghasilkan
1. Terletak pada jumlah putaran (round) yang dilakukan untuk setiap operasi. Pada MD4 hanya operasi hanya dilakukan sebanyak 3 putaran, sedangkan
pada MD5 diperbaiki menjadi 4 putaran.
2. Untuk setiap putaran ditambahkan sebuah konstanta baru yang unik untuk
diproses/dioperasikan bersama-sama dengan string yang sudah ada. Hal ini
tidak ada pada MD4 yang tetap memakai variabel yang sudah ada.
3. Fungsi g pada putaran kedua. Fungsi g pada MD4 adalah (XY v XZ v YZ)
sedangkan pada MD5 adalah (XZ v Y not(Z)).
4. Pada MD5, hasil dari suatu putaran merupakan penambahan dari hasil putaran
sebelumnya, sehingga menambah kompleksitas algoritma.
5. Urutan operasi pada MD4 sedikit diubah pada MD5 untuk meniadakan pola
yang terjadi sehingga terkesan acak dan menambah keamanan.
2.7. Bilangan Prima
Bilangan prima adalah bilangan asli yang lebih besar dari 1, yang faktor pembaginya
adalah 1 dan bilangan itu sendiri, dimulai dari 2. Misalnya angka 5, karena 5 habis
dibagi 1 dan 5 tetapi tidak habis dibagi bilangan bulat positif yang lain, dapat
disimpulkan bahwa 5 merupakan bilangan prima. Angka 9 bisa dibagi 3, ini berarti 9
bukan bilangan prima melainkan bilangan komposit, yaitu bilangan yang mempunyai
lebih dari 2 faktor bilangan bulat positif.
Semua bilangan prima merupakan bilangan ganjil kecuali angka 2. 2 adalah
satu-satunya bilangan prima yang genap, karena bilangan genap selain 2 pasti habis
dibagi 2 yang menyebabkan bilangan tersebut tidak memenuhi syarat atau definisi
bilangan prima.
2.7.1. Metode penentuan bilangan prima
Kashogi (2007) menyatakan ada beberapa metode yang dapat digunakan untuk
menentukan bilangan prima, diantaranya adalah:
a. MetodeBruce Force
22
batas bilangan yang ditentukan dan membandingkannya dengan bilangan prima yang
telah dimasukkan ke dalamlist. Jika bilangan tersebut tidak dapat dibagi oleh seluruh bilangan prima yang ada dalam list maka bilangan tersebut adalah bilangan prima sehingga bilangan tersebut bisa dimasukkan ke dalam listbilangan prima. Pengecekan hanya dilakukan hingga akar kuadrat dari batas nilai yang ditentukan.
b. MetodeThe Sieve of Eratosthenes
Dalam metode ini, teknik yang digunakan adalah dengan membuat sebuah array sepanjang kandidat prima terbesar ditambah satu yang diberi tanda prima. Kemudian
untuk setiap bilangan prima yang ditemukan, setiap array pada indeks kelipatan dari bilangan tersebut akan ditandai sebagai bukan prima. Pada akhir proses, jika suatu
indeks masih memiliki penanda prima pada sel array yang ditunjuk berarti indeks tersebut bilangan prima. Waktu yang diperlukan dengan metode ini jauh lebih cepat
dibandingkan metodebruce force.
c.MetodeSieve of Atkins
Sieve of Atkins merupakan algoritma pengembangan dari Sieve of Eratosthenes. Algoritma ini ditemukan oleh A. O. L. Atkin dan Daniel J. Bernstein. Dalam
algoritma ini:
1. Semua sisa bilangan adalah hasil modulo bilangan tersebut dengan 60
2. Semua bilangan, termasuk x dan y, adalah bilangan bulat positif
3. Membalikkan sebuah entri dalam daftar “penyaringan” berarti membalikkan
penandaan tentang primalitas bilangan tersebut ke keadaan sebaliknya (prima ke
bukan prima, dan sebaliknya)
2.7.2. Metode The Sieve of Eratosthenes
The Sieve of Eratosthenes merupakan sebuah algoritma klasik untuk menentukan seluruh bilangan prima sampai bilangan N yang ditentukan. Cara kerja dari metode ini
adalah dengan melakukan eliminasi bilangan yang bukan bilangan prima untuk
menyaring suatu kumpulan bilangan menjadi kumpulan bilangan prima (Alghazali,
1. Tuliskan daftar bilangan dari 2 sampai bilangan yang akan dicari bilangan
primanya.
2. Tandai bilangan di dalam daftar yang mempunyai nilai kelipatan 2 dan
bilangan 2 tidak ditandai
3. Kemudian ke bilangan 3 dan tandai kelipatan setiap kelipatan 3 dan bilangan 3
tidak di tandai
4. Kemudian ke bilangan berikutnya, bila bilangan tersebut sudah di tandai maka
di lanjutkan ke bilangan berikutnya
5. Kemudian lakukan penandaan seperti bilangan di atas sampai bilangan yang di
tentukan. Semua bilangan yang tidak di tandai adalah bilangan prima
Sebagai contoh untuk menentukan bilangan prima atau tidak dari deret 2
sampai 150 dapat anda lakukan langkah–langkah sebagai berikut :
Keterangan warna pada Gambar 2.12, Gambar 2.13, Gambar 2.14, Gambar 2.15,
Gambar 2.16, Gambar 2.17 yaitu:
a. : Bilangan prima
b. : Bukan bilangan prima
1. Buatlah daftar bilangan prima yang akan di tentukan, yaitu bilangan bulat lebih
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
24
2. Kemudian beri tanda pada bilangan yang mempunyai nilai kelipatan 2 kecuali 2.
2 3 4 5 6 7 8 9 10
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
Gambar 2.13Proses 2 pembangkit bilangan prima The Sieve of Eratothenes
3. Kemudian beri tanda bilangan kelipatan 3 kecuali 3.
2 3 4 5 6 7 8 9 10
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
Gambar 2.14Proses 3 pembangkit bilangan prima The Sieve of Eratothenes
4. Kemudian ulangi langkah di atas untuk bilangan prima selanjutnya. Karena
bilangan 4 sudah tertandai pada proses sebelumnya, lanjut ke bilangan 5. Beri
2 3 4 5 6 7 8 9 10
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
Gambar 2.15Proses 4 pembangkit bilangan prima The Sieve of Eratothenes
5. Kemudian menandai bilangan 6, karena bilangan 6 sudah ditandai pada proses
sebelumnya maka dilanjutkan ke bilangan 7. Karena bilangan 7 merupakan
bilangan prima beri tanda setiap bilangan kelipatan 7 kecuali 7.
2 3 4 5 6 7 8 9 10
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
Gambar 2.16Proses 5 pembangkit bilangan prima The Sieve of Eratothenes
6. Karena kelipatan bilangan 8, 9 dan 10 sudah tertandai dari proses sebelumnya,
26
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
Gambar 2.17Proses 6 pembangkit bilangan prima The Sieve of Eratothenes
7. Kemudian tandai bilangan 12. Karena bilangan 12 sudah ditandai pada proses
sebelumnya maka dilanjutkan menandai bilangan 13 kecuali 13.
2 3 4 5 6 7 8 9 10
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
8. Karena kelipatan bilangan 14 dan 15 sudah ditandai dari proses sebelumnya, maka
deretan bilangan prima yang dihasilkan antara lain 2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113,
2.8. Algoritma RSA
Algoritma kriptografi RSA dibuat oleh tiga orang peneliti dari MIT (Massachussets
Institute of Technology) pada tahun 1976, yaitu Ron Rivest, Adi Shamir dan Leonard
Adleman.
2.8.1. Konsep dasar perhitungan matematis Algoritma RSA
Dalam algoritma RSA terdapat perhitungan matematis dalam pembangkitan pasangan
kunci maupun enkripsi dan dekripsi pesan. Pada proses pembangkitan kunci
dibutuhkan perhitungan yang akan menentukan nilai dari φ n (Totient n) dan perhitungan yang menggunakan algortima Euclidean untuk menentukan dua buah bilangan yang relatif prima. Selain itu pada proses enkripsi dan dekripsi dilakukan
juga perhitungan dengan menggunakan metodeFast Exponentiation.
Algoritma kriptografi RSA merupakan algoritma yang termasuk dalam
kategori algoritma asimetri atau algoritma kunci publik. Algoritma kriptografi RSA
didesain sesuai fungsinya sehingga kunci yang digunakan untuk enkripsi berbeda dari
kunci yang digunakan untuk dekripsi. Algoritma RSA disebut algoritma kunci
publik karena kunci enkripsi dapat dibuat publik yang berarti semua orang boleh
mengetahuinya, namun hanya orang tertentu (si penerima pesan sekaligus pemilik
pasangan kunci publik) yang dapat melakukan dekripsi terhadap pesan tersebut.
Keamanan algoritma RSA adalah sulitnya memfaktorkan bilangan besar
menjadi faktor primanya (Munir, 2006). Hal itu dapat ditunjukkan dari beberapa
kriptosistem yang merupakan bukti konstruktif dari kesulitan untuk memfaktorkan
bilangan terhadap seranganchosen-chipertext attack(Rosen, 2007).
Kita telah melihat bahwa memfaktoran bilangan dalam algoritma RSA berarti
dapat memecahkan kriptosistem, tetapi dalam kenyataannya tidak seperti itu. Dengan
kata lain, belum ada metode untuk memecahkan RSA. Walaupun tidak mudah untuk
dibuktikan, hal itu menunjukkan bahwa komputasi eksponen pada RSA adalah
komputasi pemfaktoran modulus yang keduanya memiliki kompleksitas (Rosen,
2007).
Secara umum ada beberapa besaran-besaran yang harus diperhatikan dalam
28
1. pdanqadalah bilangan prima (rahasia)
2. n= p.q (tidak rahasia)
3. (n) = (p-1)(q-1) (rahasia)
4. e(kunci enkripsi) (tidak rahasia)
5. d(kunci dekripsi) (rahasia)
6. m(plaintext) (tidak rahasia)
7. c(chipertext) (rahasia)
A. Fungsi Totient Euler φ
Fungsi Totient Eulerφatau biasa disebut dengan fungsi Euler merupakan salah satu fungsi yang dipakai dalam perhitungan matematis pada algoritma RSA. Fungsi
Eulermendefinisikan φ(n) untuk n ≥ 1 yang menyatakan jumlah bilangan bulat positif <n yang relatif prima dengann (Munir, 2006). Dua bilangan bulat a dan b dikatakan relatif prima jika GCD (a, b) = 1 (pembagi bersama terbesar dari a dan b adalah 1).
Jika n = p . q (p dan q bilangan prima)
maka φ(n)= (p-1) (q-1)
Contoh 1.φ(15)= (3-1) (5-1) = 8 buah bilangan bulat yang relatif prima terhadap 15, yaitu 1,2,4,7,8,11,13,14.
B. Algoritma Euclidean
Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar atau
Greatest Common Divisor (GCD) dari dua bilangan bulat (Munir, 2006). Penemu algoritma Euclidean adalah Euclid, seorang matematikawan Yunani. Algoritma ini
didasarkan pada pernyataan bahwa ada dua buah bilangan bulat tak negatif yakni m danndimana nilaim≥n.
Adapun tahap-tahap pada algoritmaEuclideanadalah: 1. Jikan= 0 makamadalah GCD(m,n); stop.
3. Ganti nilai m dengan nilai n dan nilain dengan nilai r, lalu ulang kembali ke langkah nomor 1.
Algoritma Euclideandapat digunakan untuk mencari dua buah bilangan bulat yang relatif prima. Dua buah bilangan bulat dikatakan relatif prima jika GCD dari
kedua bilangan bernilai 1.
Contoh 2. Hitung nilai GCD(277, 30) dan GCD(43, 19).
277 mod 30 43 mod 19
277 = 9 . 30 + 7 43 = 2 . 19 + 5
30 = 4 . 7 + 2 19 = 3 . 5 + 4
7 = 3 . 2 + 1 5 = 1 . 4 + 1
2 = 2 . 1 + 0 4 = 4 . 1 + 0
Nilai GCD(277, 30) = 1 Nilai GCD(43, 19) = 1
C. Metode Fast Exponentiation
Metode ini digunakan untuk menghitung operasi pemangkatan besar bilangan bulat
modulo dengan cepat (Munir, 2006). Metode ini berdasarkan pada pernyataan berikut
ini:
abmodm= [(amodm)(bmodm)] modm (2.1)
Untuk lebih jelasnya mengenai langkah-langkah metode fast exponentiation dapat dilihat pada contoh dibawah ini.
Contoh 3.Hitung nilai dari 4752 mod 277.
Sebagai ilustrasi, untuk menghitung 4752mod 277 dapat dilakukan sebagai berikut.
4752 = 474. 4716. 4732
472mod 277 = 2209 mod 277 = 270
30
= 1290366 mod 277 = 100
Jadi nilai dari 4752mod 277 = 100
2.9. Proses Enkripsi dan Dekripsi RSA
Skema algoritma kunci publik sandi RSA terdiri dari tiga proses yaitu, proses
pembangkitan kunci, proses enkripsi, dan proses dekripsi (Mollin, 2002).
2.9.1. Proses pembentukan kunci
Dalam proses pembangkitan kunci baik kunci publik ataupun kunci privat, dapat
dilakukan dengan langkah-langkah seperti di bawah ini:
1. Memilih dua bilangan prima yang diberi simbol sebagaipdanq.
2. Hitung nilain=p.q(n≠ p, karena jikan =p, maka nilain=p2dan akan mudah mendapatkan nilain).
3. Hitungφ(n) = (p-1) (q-1).
4. Memilih kunci publik e yang relatif prima terhadap (n)
5. Bangkitkan kunci privat dengan persamaan dimana1 < < ( )
≡ 1 ( ( )) ↔ = . ( ) (2.2)
Hasil dari algoritma di atas adalah :
b. Kunci privat adalah pasangan (d,n)
2.9.2. Proses enkripsi
1. Ambil kunci publik penerima pesan e ,dan modulus n.
2. Plainteks dinyatakan dengan blok-blok m1, m2, .., sedemikian sehingga setiap blok
merepresentasikan nilai [0,n-1].
3. Setiap blok midienkripsikan menjadi blok cidengan rumus
ci=miemodn (2.3)
2.9.3. Proses dekripsi
Setiap blok chiperteks cididekripsikan kembali menjadi blok midengan rumus :
mi =cidmodn
2.10. Kecepatan Algoritma RSA
Sebuah proses RSA, baik enkripsi, dekripsi, penandatanganan dan verifikasi intinya
adalah sebuah eksponensial terhadap modul. Proses perhitungan ini ditunjukkan oleh
sebuah rangkaian dari multiplikasi terhadap modul. Dalam aplikasi praktikal, adalah
umum untuk menentukan sebuah eksponen kecil yang umum sebagai kunci publik.
Faktanya, keseluruhan kelompok dari user (pemakai) bisa memakai eksponen yang sama, dengan modulus berbeda. Terdapat beberapa pembatasan pada faktor-faktor
prima dari eksponen publik. Hal ini menyebabkan proses enkripsi lebih cepat daripada
proses dekripsi dan verifikasi lebih cepat daripada penandatanganan.
Sebagai perbandingan, algoritma DES dan beberapachiperblok yang lain jauh lebih cepat daripada algoritma RSA. DES secara umum 100 kali lebih cepat pada
perangkat lunak dan antara 1.000 dan 10.000 kali lebih cepat pada perangkat keras,
tergantung dari implementasinya. Implementasi dari algoritma RSA mungkin akan
2.11.2. Digital Signature
Dalam tahapan ini string yang telah dirubah ke dalam message digest (hash), kemudian akan ditandatangani menggunakan private key. Dalam proses penandatanganan ini digunakan algoritma RSA. Message digest tersebut akan ditandatanganin dengan menggunakan persamaan matematis:
= ( ) (2.4)
nilai d merupakanprivate key.
2.11.3. Verifikasi Digital Signature
Membandingkan niai message digest string yang ditandatangani dengan nilai hasil deskripsi menggunakan persamaan = ( ) , nilai n dan e merupakan public key.
34
2.12. Unified Modeling Language
Unified Modeling Language (UML) adalah sebuah “bahasa” yang telah menjadi standard industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti
lunak (Dharwiyanti dan Wahono, 2003). Dengan menggunakan UML kita dapat
membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut
dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun serta ditulis
dalam bahasa pemrograman apapun. Tetapi karena UML juga menggunakanclassdan operation dalam konsep dasarnya, maka UML lebih cocok untuk penulisan piranti
lunak dalam bahasa berorientasi objek.
Menurut Hariyanto (2004) tujuan perancangan UML adalah:
1. Menyediakan bahasa pemodelan visual yang ekspresif dan siap pakai untuk
mengembangkan dan pertukaran model yang berarti.
2. Menyediakan mekanisme perluasan dan spesialisasi untuk memperluas
konsep-konsep inti.
3. Mendukung spesifikasi independen bahasa pemograman dan pengembangan
tertentu.
4. Menyediakan basis formal untuk bahasa pemodelan.
5. Mendukung konsep-konsep pengembangan level lebih tinggi seperti
komponen, kolaborasi,frameworkdanpattern.
Unified Modelling Language (UML) menyediakan sejumlah diagram untuk menggambarkan pemodelan berorientasikan objek yang dilakukan. UML membagi
diagram menjadi dua tipe :
1. Diagram Struktur
Diagram ini memvisualisasi, menspesifikasi, membangun dan mendokumentasikan
aspek statik dari sistem. Diagram struktur UML terdiri dari :
a. Diagram Kelas (Class Diagram) b. Diagram Objek (Object Diagram)
2. Diagram perilaku
Diagram untuk memvisualisasi, menspesifikasi, membangun dan mendokumentasikan
aspek dinamis dari sistem. Diagram strukur di UML terdiri dari :
a. Diagramuse case(Use case diagram) b. Diagram sekuen (Sequence diagram)
c. Diagram kolaborasi (Collaboration diagram) d. Diagramstatechart(Statechart diagram) e. Diagram aktivitas (Activity diagram)
2.12.1. Diagram Use Case
Diagram Use case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem informasi yang akan dibuat (Shalahuddin, 2011). Diagram Use case memodelkan aspek perilaku sistem atau digunakan untuk mendeskripsikan apa yang
seharusnya dilakukan oleh sistem. Beberapa elemen diagramuse caseyaitu : 1. Aktor
Aktor adalah pemakai sistem, dapat berupa manusia atau sistem terotomatisasi
lain. Aktor adalah seseorang atau sesuatu yang dapat berinteraksi dengan sistem,
yaitu siapa dan apa yang menggunakan sistem. Aktor adalah tipe (kelas) bukan
instan. Aktor akan mempresentasikan peran bukan pemakai individu dari sistem.
Gambar 2.21 Aktor-aktoruse case
2. Use case
36
Gambar 2.22 Aktor danuse case
3. Keterhubungan
Keterhubungan antaruse casedenganuse caselain berupa generalisasi antarause caseyaitu :
a. include, perilakuuse casemerupakan bagian dariuse caselain. b. extends, perilakuuse casememperluasuse caseyang lain.
Gambar 2.23 Keterhubungan
2.12.2. Spesifikasi Use Case (Use Case Spesification)
Use case spesifikasi merupakan perkembangan atau deskripsi dari use case diagram untuk setiap use case. Use case spesifikasi menjelaskan bagaimana sebuah use case itu bekerja (Muchtar, 2011).Spesifikasiuse casesistem tanda tangan digital dilakukan berdasarkancaseyang ada padause casediagram. Spesifikasiuse caseterdiri dari : a. Deskripsi singkatcase, yang menjelaskan apa yang terjadi padacase.
b. Pra kondisi yaitu keadaan apa yang terjadi sebelumcaseberlangsung. c. Karateristik yang dimiliki olehlow case.
e. Pasca kondisi yaitu keadaan apa atau output apa yang dihasilkan setelah case berlangsung.
2.12.3. Diagram Aktivitas (Activity Diagram)
Diagram aktivitas adalah diagramflowchartyang diperluas untuk menunjukkan aliran kendali satu aktivitas ke aktivitas lain. Diagram aktivitas berupa operasi-operasi dan
aktivitas-aktivitas di use case (Hariyanto, 2004). Diagram aktivitas dapat digunakan untuk :
Pandangan dalam yang dilakukan di operasi.
1. Pandangan dalam bagaimana objek-objek bekerja
2. Pandangan dalam di aksi-aksi dan pengaruhnya pada objek-objek
3. Pandangan dalam suatuuse case. 4. Logik dalam proses bisnis
Berikut adalah tabel simbol dari aktivasi diagram :
Tabel 2.3 Simbol Aktivitas Diagram
Simbol Keterangan
Start Point
End Point
Activities
Join (Penggabungan)
Fork (Percabangan)
Swimline Sebuah cara mengelompokkan aktifitas berdasarkan aktor (mengelompokkan
aktivitas dalam sebuah urutan yang
38
2.13. Flowchart
Flowchartadalah penggambaran secara grafik dari langkah-langkah dan urutan-urutan prosedur suatu program.Simbol-simbolflowchartmemiliki fungsi yang berbeda antara satu simbol dengan simbol lainnya. Fungsi dari simbol-simbol flowchart adalah sebagai berikut :
Tabel 2.4 Fungsi simbol-simbolflowchart
Simbol Fungsi
Simbol process, yaitu menyatakan suatu tindakan (proses) yang dilakukan didalam program.
Simbol offline connector yaitu menyatakan penghubung bila flowchart terputus disebabkan oleh
pergantian halaman (misalanya tidak cukup dalam satu
halaman).
Simbolonline connector, berfungsi untuk menyatakan sambungan dari prose ke proses yang lainnya dalam
halaman yang sama.
Simbol arus/flowline, yaitu menyatakan jalannya arus suatu proses.
Simbol decision yaitu menunjukkan suatu kondisi tertentu yang akan menghasilkan dua kemungkinan
jawaban yaitu : ya/ tidak.
2.14. Bahasa Pemograman PHP
PHP (Hypertext Preprocessor) adalah bahasa komputer yang dibuat untuk pengembangan web dinamis. Pada umumnya PHP digunakan di server namun juga dapat berdiri sendiri sebagai aplikasigraphical.
Penggunaan PHP dan MySQL dipilih karena PHP dan MySQL memiliki beberapa
kelebihan seperti dinyatakan oleh Nugroho, B (2008) kelebihan nya sebagai berikut:
1. Bahasa pemograman PHP adalah sebuah bahasa scriptyang tidak melakukan sebuah kompilasi dalam penggunaannya.
2. Web Server yang mendukung PHP dapat ditemukan dimana-mana dari mulai IIS sampai dengan Apache dengan konfigurasi yang relatif mudah.
3. Dalam sisi pengembangan lebih mudah, karena banyaknya milis milis dan
developeryang siap membantu dalam pengembangan.
4. Dalam sisi pemahaman, PHP adalah bahasa scripting yang paling mudah karena referensi yang banyak.
5. PHP adalah bahasa opensource yang dapat digunakan di berbagai mesin (Linux, Unix, Windows) dan dapat dijalankan secara runtimemelaluiconsole serta juga dapat menjalankan perintah-perintah sistem.
Sedangkan database MySQL memiliki beberapa kelebihan, yaitu:
1. Portability
MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows,
Linux, FreeBSD, Mac Os X Server, Solaris, Amiga dan masih banyak lagi.
2. Open Source
MySQL dapat didistribusikan secaraopen source(gratis), dibawah lisensi GPL sehingga dapat digunakan secara cuma- cuma.
3. Multiuser
MySQL dapat digunakan oleh beberapa user dalam waktu yang bersamaan tanpa mengalami masalah atau konflik.
4. Performance tuning
MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat meproses lebih banyak SQL per satuan
40
5. Column types
MySQL memiliki tipe kolom yang sangat kompleks, sepertisigned/ unsigned integer,float,double,char,text,date,timestamp, dan lain-lain.
6. Commanddanfunctions
MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah
SelectdanWheredalamquery. 7. Security
MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang perizinan yang mendetail sertapasswordterenkripsi.
8. Scalabilitydanlimits
MySQL mampu mengani database dalam skala besar, dengan jumlah records lebih dari 50 juta dan 60 juta ribu serta 5 milyar baris. Selain itu batas indeks
yang dapat ditampung mencapai 32 indeks pada tiap tabelnya.
9. Connectivity
MySQL dapat melakukan koneksi dengan client menggunakan protocol TCP/IP,Unix soket(UNIX), atauNamed Pipes(NT).
10.Localization
MySQL dapat mendeteksi pesan kesalahan pada client dengan menggunakan lebih dari dua puluh bahasa. Meskipun demikian, bahasa Indonesia belum
termasuk di dalamnya.
11.Interface
MySQL memiliki interface (antar muka) terhadap berbagai aplikasi dan bahasa pemograman dengan menggunakan fungsi API (Application Programming Interface).
12.Clientsdantools
MySQL dilengkapi dengan berbagai tool yang dapat digunakan untuk adminsitrasi database, dan pada setiap tool yang ada disertakan petunjuk online.
13. Struktur Tabel
2.15. Penelitian Terdahulu
Penelitian sebelumnya mengenai algoritma RSA untuk keamanan data yang di
lakukan oleh Sianturi (2008) yaitu Studi Dan Implementasi Keamanan Data Dengan
Tanda Tangan Digital. Hasil yang dicapai dari penelitian diatas, perangkat lunak tanda
tangan digital dapat dibangun dengan mengimplementasikan algoritma RSA. Hasil
pengujian menunjukkan tanda tangan digital mengidentifikasikan pesan yang
ditandatangani, sehingga pesan tidak mungkin dipalsukan ataupun diubah tanpa
diketahui. Perangkat lunak dapat mensimulasikan tujuan tanda tangan digital meliputi
integritas data dan otentitikasi. Input bilangan prima dalam pembangkitan kunci dapat
dikembangkan menjadi input data berupa teks yang selanjutnya akan diubah ke dalam
bilangan prima, sehingga input lebih mudah dilakukan tanpa harus mengetahui
bilangan prima. Bilangan prima yang diinput untuk pengembangan selanjutnya dapat
membuat bilangan yang besar untuk keamanan yang lebih baik.
Pada tahun 2011 Siregar melakukan pengujian untuk mengimplementasikan
algoritma RSA dan Tripel DES dalam hal lama proses dekripsi diantara kedua
algoritma tersebut. Hasil yang dicapai dari penelitian diatas bahwa algoritma RSA
memiliki waktu yang lebih lama daripada algoritma Triple Des, sehingga berdasarkan
penelitan diatas disimpulkan bahwa algoritma RSA lebih aman dibandingkan
algoritma Triple Des karena algoritma RSA menggunakan faktorisasi bilangan
berjumlah banyak (Siregar, 2011).
Pada tahun 2011, Nababan telah membuat kajian tentang Perbandingan antara
Metode Probabilistic Encryption dengan Metode RSA (Rivest-Shamir-Adleman)
(Nababan, 2011). Banyaknya algoritma yang digunakan dalam pembuatan kunci
enkripsi data, yang mengakibatkan sering kali bingung dalam menerapkan algoritma
yang tepat untuk merancang kunci enkripsi dan kunci dekripsi data. Untuk
menerapkan / menampilkan hasil dari suatu kajian diatas kedalam bentuk
implementasi sistem, maka dibangunlah sebuah sistem pendukung dari penerapan
algoritma diatas menggunakan salah satu bahasa pemrograman. Adapun algoritma
yang dipakai dalam perancangan program tersebut nantinya adalah algoritma
CSPRNG (Cryptographically Secure Pseudo Random Generator) berbasis RSA
(Rivest-Shamir-Adleman) dan algoritma Rabin-Miller. Dari penelitian diatas, RSA