Simulasi Algoritma Rivest Shamir Adleman (RSA) pada Short Message Service (SMS) dengan Pengujian Bilangan Prima Menggunakan Lucas Lehmer Primality Test

(1)

SIMULASI ALGORITMA RIVEST SHAMIR ADLEMAN (RSA) PADA

SHORT MESSAGE SERVICE (SMS) DENGAN PENGUJIAN

BILANGAN PRIMA MENGGUNAKAN LUCAS

LEHMER PRIMALITY TEST

SKRIPSI

IRFAN ANTONI SIREGAR

081401048

PROGRAM STUDI S1 ILMU KOMPUTER

DEPARTEMEN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2012


(2)

SIMULASI ALGORITMA RIVEST SHAMIR ADLEMAN (RSA) PADA SHORT MESSAGE SERVICE (SMS) DENGAN PENGUJIAN

BILANGAN PRIMA MENGGUNAKAN LUCAS LEHMER PRIMALITY TEST

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer

IRFAN ANTONI SIREGAR 081401048

PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2012


(3)

PERSETUJUAN

Judul : SIMULASI ALGORITMA RIVEST SHAMIR

ADLEMAN (RSA) PADA SHORT MESSAGE

SERVICE (SMS) DENGAN PENGUJIAN

BILANGAN PRIMA MENGGUNAKAN LUCAS LEHMER PRIMALITY TEST

Kategori : SKRIPSI

Nama : IRFAN ANTONI SIREGAR

Nomor Induk Mahasiswa : 081401048

Program Studi : S1 ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI (FASILKOM-TI) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, Juli 2012

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Amer Sharif, S.Si, M.Kom M. Andri B., ST., M.Comp.Sc.,MEM

NIP. - NIP. 197510082008011001

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001


(4)

PERNYATAAN

SIMULASI ALGORITMA RIVEST SHAMIR ADLEMAN (RSA) PADA SHORT MESSAGE SERVICE (SMS) DENGAN PENGUJIAN

BILANGAN PRIMA MENGGUNAKAN LUCAS LEHMER PRIMALITY TEST

SKRIPSI

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

Medan, Juli 2012

IRFAN ANTONI SIREGAR NIM 081401048


(5)

PENGHARGAAN

Alhamdulillahirabbil’alamin, penulis mengucapkan puji syukur yang tiada hentinya kehadirat Allah SWT atas limpahan rahmat dan karunia-Nya serta segala nikmat iman, islam, pikiran dan pemahaman terhadap ilmu pengetahuan sehingga penulis dapat menyelesaikan skripsi ini dengan baik. Shalawat dan salam penulis ucapkan kepada Rasulullah Muhammad SAW beserta para sahabat dan keluarganya yang telah menjadi tauladan bagi penulis dalam menjalani kehidupan.

Pada kesempatan kali ini penulis ingin mengucapkan terima kasih kepada semua pihak yang telah membantu penulis selama pengerjaan skripsi ini, antara lain kepada :

1. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Departemen Ilmu Komputer, Fakultas Ilmu komputer dan Teknologi Informasi, Universitas Sumatera Utara.

2. Bapak Mohammad Andri Budiman, S.T, M.Comp.Sc, MEM selaku pembimbing I atas bimbingan dan nasehatnya kepada penulis dalam menyelesaikan skripsi ini. Serta Bapak Amer Sharif, S.Si, M.Kom selaku pembimbing II atas bimbingan, nasehat dan motivasi kepada penulis selama penulisan skripsi ini..

3. Ibu Dian Rachmawati, S.Si, M.Kom selaku dosen penguji I dan Ibu Maya Silvi Lydia, B.Sc., M.Sc selaku dosen penguji II atas masukan dan nasehatnya kepada penulis dalam menyelesaikan skripsi ini.

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

5. Seluruh dosen-dosen Departemen Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara yang telah membimbing dan mencurahkan ilmunya selama masa perkuliahan.

6. Seluruh pegawai administrasi Departemen Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara yang telah membantu penulis dalam pengurusan administrasi selama perkuliahan, seminar dan sidang meja hijau.

7. Kedua orang tua tercinta, Ayahanda Usri Siregar dan Ibunda Nurnayan Hasibuan atas segala nasehat, doa, dan dukungan serta kepercayaan yang telah diberikan kepada penulis selama kuliah dan menyelesaiakan skripsi ini.


(6)

8. Adinda Delisma Siregar, Syahrial Efendi Siregar dan Asril Ilyas Siregar atas segala dukungan, doa dan keceriaan yang diberikan kepada penulis untuk dapat menyelesaikan skripsi ini.

9. Jamilah Daulay, atas kesetiaan, semangat, doa, dukungan, dan motivasi yang diberikan kepada penulis.

10. Reycho Surahman Sinaga, Ahmad Ihsan, Ficky Vernandes Isman, Ahmad Royhan Putra, Tengku Surya Pramana, Eko Verdianto, Gustaf Prameswara, Siska Anggraini, Bilqis, Sadifa Asrofa, Brigson Haradonal Barus, Yeni Susanti, Angga Ricardo, Heni Mulyana, Bang Joko Irwansyah, Bang Fahreza Akbar dan Bang Suharsono atas dukungan, kebersamaan dan motivasi yang diberikan kepada penulis.

11. Keluarga besar S1 Ilmu Komputer, khususnya angkatan 2008 yang telah banyak memberi dukungan, masukan dan kerjasama yang baik.

12. Teman-teman kost Pak Galung, Bang Ardinal, Bang Bembeng, Bang Taufik, Bang Faisal, Bang Iman, Bang Kabul, Muhammad Syukur, Harmoko Hariwijaya, Birman Simatupang, Abdul Mustaqim, Amir Panjaitan, Zainuddin Siregar, Anton dan Yono.

13. Semua pihak yang terlibat langsung ataupun tidak langsung dalam membantu penyelesaian skripsi ini yang tidak dapat penulis ucapkan satu persatu.

Penulis menyadari bahwa skripsi ini masih jauh dari kesempurnaan, karena kesempurnaan hanyalah milik Allah semata. 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, Juli 2012


(7)

ABSTRAK

Salah satu fasilitas teknologi paling populer yang ada saat ini yang menyediakan layanan pertukaran informasi adalah Short Message Service (SMS). Perlu dilakukan pengamanan terhadap isi pesan SMS dengan menggunakan kriptografi, salah satu diantaranya adalah algoritma kunci public Rivest-Shamir-Adleman (RSA) ini. Algoritma RSA menggunakan bilangan prima untuk mengenkripsi isi pesan. Bilangan prima dibangkitkan dengan menggunakan metode bilangan mersenne. Dalam penelitian ini, pengecekan terhadap keprimaan suatu bilangan menggunakan Lucas Lehmer Primality Test. Sistem yang dihasilkan dapat menjaga melakukan enkripsi dan dekripsi terhadap pesan SMS menggunakan algoritma RSA.

Kata Kunci : Kriptografi, Lucas Lehmer Primality Test, Rivest-Shamir-Adleman (RSA), Short Message Service (SMS)


(8)

SIMULATION OF RIVEST SHAMIR ADLEMAN (RSA) ALGORITHM IN SHORT MESSAGE SERVICE (SMS) WITH PRIME NUMBERS

TESTING USING LUCAS LEHMER PRIMALITY TEST

ABSTRACT

One of the most popular technology facilities that exist today that provide information exchange services are Short Message Service (SMS). It is necessary to secure the content of the message by means of cryptography, one of which is the public key algorithm Rivest-Shamir-Adleman (RSA), the. RSA uses primes algorithm to encrypt the message. The prime number used are generated using the mersenne method. The primality of the prime number obtained from the mersenne method is later checked using Lucas Lehmer primality test. The resulting system are able to encrypt and decrypt message using the RSA algorithm.

Keywords : Cryptography, Lucas Lehmer Primality Test, Rivest-Shamir-Adleman (RSA), Short Message Service (SMS)


(9)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii Penghargaan iv Abstrak vi Abstract vii Daftar Isi viii Daftar Tabel x Daftar Gambar xi Bab 1 Pendahuluan 1.1Latar Belakang Masalah 1

1.2Rumusan Masalah 2

1.3Batasan Masalah 3

1.4Tujuan Penelitian 3

1.5Manfaat Penelitian 3

1.6Metodologi Penelitian 3

1.7Sistematika Penulisan 4

Bab 2 Tinjauan Pustaka 2.1 Short Message Service (SMS) 6 2.1.1 Sejarah SMS 6 2.1.2 Arsitektur SMS 7 2.1.2.1 Short Message Entity (SME) 7

2.1.2.2 Short Message Service Center (SMSC) 7

2.1.2.3 Email Gateway 7

2.1.3 Cara Kerja SMS 8 2.1.4 Sistem Kerja SMS 9 2.1.5 Protocol Data Unit (PDU) 9 2.2 Kriptografi 10

2.2.1 Definisi Kriptografi 10

2.2.2 Sejarah Kriptografi 11

2.2.3 Tujuan Kriptografi 12

2.2.4 Komponen Cipher 12

2.2.4.1 Algoritma Kunci Simetri 13

2.2.4.2 Algoritma Kunci Asimetri 14

2.2.5 Jenis-Jenis Serangan Terhadap Kriptografi 16

2.3 Algoritma Diffie-Hellman 18

2.3.1 Pertukaran Kunci 18

2.4 Algoritma Rivest-Shamir-Adleman (RSA) 20

2.4.1 Sejarah RSA 20

2.4.2 Algoritma RSA dalam Proses Enkripsi dan Dekripsi 21


(10)

2.5 Lucas Lehmer Primality Test 23

Bab 3 Analisis dan Perancangan Sistem 3.1 Analisis 24

3.1.1 Analisis Permasalahan 24

3.1.2 Analisis Protocol Data Unit (PDU) 26

3.1.2.1 PDU Pengiriman (SMS Submit) 27

3.1.2.2PDU Penerimaan (SMS Deliver) 33

3.1.3 Analisis Lucas Lehmer Primality Test 40

3.1.4 Analisis Algoritma RSA 44

3.2 Perancangan Sistem 49

3.2.1 Pesan Enkripsi 49

3.2.2 Rancangan Pengiriman dan Penerimaan 50

3.2.3 Perancangan Flowchart 51

3.2.3.1 Flowchart Pembangkitan Pasangan Kunci RSA 52 3.2.3.2 Flowchart Proses Enkripsi Algoritma RSA 53

3.2.3.3 Flowchart Proses Dekripsi Algoritma RSA 54

3.2.4 Perancangan Data Flow Diagram (DFD) 55

3.2.4.1 DFD Level 0 55

3.2.4.2 DFD Level 1 56

3.2.4.3 DFD Level 2 57

3.2.5 Perancangan Interface 58

3.2.5.1 Halaman Utama 59

3.2.5.2 Halaman Tulis Pesan 59

3.2.5.3 Halaman Tujuan 60

3.2.5.4 Halaman Bangkitkan Kunci 61

Bab 4 Implementasi 4.1 Implementasi 62

4.2 Hasil dan Pembahasan 62

4.2.1 EnkripsiAlgoritma RSA 62

4.2.2 Dekripsi Algoritma RSA 66

4.3 Tampilan Sistem 70

4.3.1 Tampilan Awal 70

4.3.2 Tampilan Menu Utama 71

4.3.3 Tampilan Pembangkitan Kunci 71

4.3.4 Tampilan Tulis Pesan 72

4.3.5 Tampilan Tujuan 73

4.3.6 Tampilan Kotak Masuk 73

4.3.7 Tampilan Pesan Masuk 74

4.3.8 Tampilan Pesan Keluar 75

Bab 5 Kesimpulan dan Saran 5.1 Kesimpulan 76

5.2 Saran 76

Daftar Pustaka 77


(11)

DAFTAR TABEL

Nomor Tabel

Nama Tabel Halaman

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8

Skema Format PDU Pengiriman

Contoh Pesan SMS Submit dalam Format PDU SCA dari PDU Pengiriman

PDU-Type dari PDU Pengiriman Destination Address (DA)

Nilai Validitas Periode

User Data pada PDU Pengiriman Skema Format PDU Penerimaan

Contoh Pesan SMS Deliver dalam Format PDU SCA dari PDU Penerimaan

Nomor SMS Center Operator Seluler Di Indonesia PDU-Type dari PDU Penerimaan

Originator Address (OA) Data Coding Scheme (DCS)

Nilai Service Center Time Stamp (SCTS) User Data pada PDU Penerimaan

Blok-Blok mi Dienkripsi Menjadi Blok-Blok ci Blok-Blok ci Didekripsi Menjadi Blok-Blok mi Konversi Karakter Plaintext ke Kode ASCII Desimal Proses Enkripsi dengan Algoritma RSA

Proses Pengubahan ke Bentuk Biner 16 Bit Hasil Pengubahan Biner 8 Bit ke Karakter ASCII

Konversi Hasil Dekompresi ke Desimal ASCII dan Biner 8 Bit Hasil Konversi Biner 16 Bit ke Ciphertext Berupa Desimal ASCII

Proses Dekripsi dengan algoritma RSA Konversi dari Hasil Dekripsi ke Plaintext

27 27 28 28 30 31 32 33 33 34 34 36 37 37 38 39 47 48 64 64 65 66 67 69 69 70


(12)

DAFTAR GAMBAR

Nomor Gambar

Nama Gambar Halaman

2.1 2.2 2.3 2.4 2.5 2.6 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8

Proses Pengiriman SMS antar sesama teknologi jaringan

Proses Pengiriman SMS antar teknologi jaringan yang berbeda

Proses Enkripsi dan Dekripsi sederhana Skema Kriptografi Kunci Simetri Skema Kriptografi Kunci Asimetri Pertukaran Kunci Diffie-Hellman

Skema Global Proses Enkripsi dan EncodingPDU Skema Global Proses DecodingPDU dan Dekripsi Rancangan pengiriman SMS

Rancangan penerimaan SMS

Rancangan pengiriman dan penerimaan SMS Flowchart Pembangkitan Pasangan Kunci RSA Flowchart Proses Enkripsi Algoritma RSA Flowchart Proses Dekripsi Algoritma RSA DFD Level 0

DFD Level 1 DFD Level 2

Rancangan Halaman Utama Rancangan Halaman Tulis Pesan Rancangan Halaman Tujuan

Rancangan Halaman Bangkitkan Kunci Tampilan Awal

Tampilan Menu Utama

Tampilan Pembangkitan Kunci Tampilan Tulis Pesan

Tampilan Tujuan Tampilan Kotak Masuk Tampilan Pesan Masuk Tampilan Pesan Keluar

8 9 11 14 15 19 25 26 49 50 51 53 54 55 55 57 58 60 60 61 62 71 72 72 73 73 74 74 75


(13)

ABSTRAK

Salah satu fasilitas teknologi paling populer yang ada saat ini yang menyediakan layanan pertukaran informasi adalah Short Message Service (SMS). Perlu dilakukan pengamanan terhadap isi pesan SMS dengan menggunakan kriptografi, salah satu diantaranya adalah algoritma kunci public Rivest-Shamir-Adleman (RSA) ini. Algoritma RSA menggunakan bilangan prima untuk mengenkripsi isi pesan. Bilangan prima dibangkitkan dengan menggunakan metode bilangan mersenne. Dalam penelitian ini, pengecekan terhadap keprimaan suatu bilangan menggunakan Lucas Lehmer Primality Test. Sistem yang dihasilkan dapat menjaga melakukan enkripsi dan dekripsi terhadap pesan SMS menggunakan algoritma RSA.

Kata Kunci : Kriptografi, Lucas Lehmer Primality Test, Rivest-Shamir-Adleman (RSA), Short Message Service (SMS)


(14)

SIMULATION OF RIVEST SHAMIR ADLEMAN (RSA) ALGORITHM IN SHORT MESSAGE SERVICE (SMS) WITH PRIME NUMBERS

TESTING USING LUCAS LEHMER PRIMALITY TEST

ABSTRACT

One of the most popular technology facilities that exist today that provide information exchange services are Short Message Service (SMS). It is necessary to secure the content of the message by means of cryptography, one of which is the public key algorithm Rivest-Shamir-Adleman (RSA), the. RSA uses primes algorithm to encrypt the message. The prime number used are generated using the mersenne method. The primality of the prime number obtained from the mersenne method is later checked using Lucas Lehmer primality test. The resulting system are able to encrypt and decrypt message using the RSA algorithm.

Keywords : Cryptography, Lucas Lehmer Primality Test, Rivest-Shamir-Adleman (RSA), Short Message Service (SMS)


(15)

BAB 1 PENDAHULUAN

1.1 Latar Belakang Masalah

Pada saat ini komunikasi secara langsung antara orang dengan orang lainnya semakin sedikit. Ini disebabkan oleh kesibukan yang memenuhi seluruh kehidupan masyarakat. Oleh karena itu handphone yang merupakan salah satu alat komunikasi yang cepat dan dapat digunakan dimana saja menjadi andalan. Handphone dapat digunakan untuk berbicara antara satu orang dengan orang lain serta dapat berkomunikasi dengan saling mengirim pesan singkat dengan fasilitas Short Message Service (SMS). SMS merupakan sebuah fasilitas digital sederhana yang mengizinkan handphone untuk menerima dan atau mengirim pesan teks.

Namun dari berbagai fasilitas itu terdapat hal penting yang harus diperhatikan yaitu masalah keamanan pada handphone itu sendiri. Masalah keamanan ini sering kali kurang mendapat perhatian dari para pemilik dan pengelola sistem informasi. Seringkali masalah keamanan berada di urutan kedua, atau bahkan di urutan terakhir dalam daftar hal-hal yang dianggap penting. Apabila menggangu performansi dari sistem, seringkali keamanan dikurangi atau ditiadakan. Sehingga sering terjadi penyadapan informasi baik saat berbicara menggunakan handphone maupun pada saat mengirim pesan SMS.

Dengan adanya kemungkinan penyadapan data, maka aspek keamanan dalam pertukaran informasi menjadi sangat penting karena suatu komunikasi data jarak jauh belum tentu memiliki jalur transmisi yang aman dari penyadapan sehingga keamanan informasi menjadi bagian penting dalam dunia informasi itu sendiri. Terdapat


(16)

data-data yang tidak terlalu penting, sehingga apabila publik mengetahui data-data tersebut, pemilik data tidak terlalu dirugikan. Tetapi apabila pemilik data adalah pihak militer atau pemerintah, keamanan dalam pertukaran informasi menjadi sangat penting karena data yang mereka kirim kebanyakan adalah data rahasia yang tidak boleh diketahui oleh publik.

Kriptografi adalah salah satu teknik yang digunakan untuk meningkatkan aspek keamanan suatu informasi. Kriptografi merupakan kajian ilmu dan seni untuk menjaga suatu pesan atau informasi agar data tersebut aman. Kriptografi mendukung kebutuhan dua aspek keamanan informasi yaitu secrecy (perlindungan terhadap kerahasiaan data informasi) dan authentication (perlindungan terhadap pemalsuan dan pengubahan informasi yang tidak diinginkan).

Salah satu metode dalam kriptografi yang dapat digunakan untuk menjamin keamanan data adalah dengan metode RSA. Algoritma ini pertama kali dipublikasikan di tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard Adleman dari Massachusetts Institute of Technology (MIT). Nama RSA sendiri adalah singkatan dari nama belakang mereka bertiga.

Oleh karena itu penulis tertarik untuk membuat penelitian tentang bagaimana melindungi data pada SMS agar tidak dapat diketahui orang lain. Untuk itulah penulis mengambil judul “Simulasi Algoritma Rivest-Shamir-Adleman (RSA) Pada Short Message Service (SMS) Dengan Pengujian Bilangan Prima Menggunakan Lucas Lehmer Primality Test”.

1.2 Rumusan Masalah

Masalah yang dibahas dalam Tugas Akhir ini adalah bagaimana algoritma Rivest-Shamir-Adleman (RSA) dalam proses pengenkripsian dan pendekripsian data pada Short Message Service (SMS).


(17)

1.3 Batasan Masalah

Batasan masalah dalam skripisi ini adalah sebagai berikut:

1. Penelitian ini hanya membahas implementasi algoritma RSA dengan pengujian bilangan prima menggunakan Lucas Lehmer Primality Test dan tidak membandingkannya dengan algoritma lain.

2. Bilangan prima yang digunakan dalam algoritma RSA adalah bilangan prima mersenne dan bilangan prima yang menghasilkan bilangan mersenne.

3. Program yang digunakan untuk membangun aplikasi dalam penelitian adalah teknologi Java Micro Edition.

1.4 Tujuan Penelitian

Tujuan penelitian ini adalah sebagai berikut:

1. Mengetahui proses pengenkripsian dan pendekripsian data SMS dengan menggunakan algoritma RSA.

2. Menghasilkan aplikasi yang dapat mengamankan isi SMS dengan mengimplementasikan algoritma kriptografi RSA.

1.5 Manfaat Penelitian

Manfaat penelitian ini adalah untuk memproteksi isi pesan jika terjadi penyadapan. Dengan adanya proses pengkodean terhadap isi pesan SMS maka hal ini dapat memproteksi isi pesan SMS ketika terjadi penyadapan.

1.6 Metode Penelitian

Tahapan penelitian yang dilakukan adalah sebagai berikut:


(18)

Pada tahap ini penulis melakukan pembelajaran pada sumber-sumber referensi yang berkaitan dengan penelitian. Sumber referensi dapat diperoleh melalui buku, artikel, jurnal, makalah, maupun dari internet.

2. Perancangan Sistem

Tahap ini merupakan perancangan antar muka dan perancangan sistem dengan mengunakan algoritma RSA pada isi pesan SMS.

3. Implementasi Sistem

Pada tahap ini dilakukan pengimplementasian sistem algoritma RSA pada SMS ke dalam bahasa pemrograman Java Micro Edition (Java ME).

4. Pengujian Sistem

Pada tahap ini dilakukan pengujian terhadap aplikasi yang telah dibangun apakah aplikasi dapat berjalan sesuai dengan teori dan tujuan dari penelitian .

5. Pembuatan Laporan

Pembuatan laporan bertujuan untuk dijadikan sebagai dokumentasi hasil penelitian dalam bentuk skripsi.

1.7 Sistematika Penulisan

Sistematika penulisan dari skripsi ini terdiri dari lima bab, masing-masing bab adalah sebagai berikut:


(19)

BAB 1 : PENDAHULUAN

Bab ini menjelaskan mengenai latar belakang pemilihan judul skripsi “Implementasi Algoritma Rivest-Shamir-Adleman (RSA) Pada Short Message Service (SMS) Dengan Pengujian Bilangan Prima Menggunakan Lucas Lehmer Primality Test”, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi, dan sistematika penulisan.

BAB 2 : TINJAUAN PUSTAKA

Bab ini membahas teori-teori yang berkaitan dengan Short Message Service (SMS), kriptografi, algoritma Rivest-Shamir-Adleman (RSA) dan metode Lucas Lehmer Primality Test.

BAB 3 : ANALISIS DAN PERANCANGAN SISTEM

Bab ini menjelaskan tentang analisis kebutuhan perangkat lunak dan perancangan aplikasi Short Message Service (SMS) menggunakan algoritma Rivest-Shamir-Adleman (RSA).

BAB 4 : IMPLEMENTASI PROGRAM

Bab ini membahas tentang implementasi dari perangkat lunak dan mengulas analisis hasil pengujian yang telah dilakukan terhadap aplikasi Short Message Service (SMS).

BAB 5 : PENUTUP

Pada bab ini memuat kesimpulan skripsi yang merupakan jawaban dari rumusan masalah dan saran yang berguna untuk melengkapi dan menyempurnakan skripsi ini untuk pengembangan selanjutnya.


(20)

BAB 2

TINJAUAN PUSTAKA

2.1 Short Message Service (SMS)

Short Message Service (SMS) adalah salah satu tipe Instant Messaging (IM) yang memungkinkan user untuk bertukar pesan singkat kapanpun, walaupun user sedang melakukan panggilan data atau suara. Kata “short” yang berarti singkat pada SMS merujuk pada ukuran maksimal dari suatu pesan teks yaitu 160 karakter pada alfabet latin. Untuk alfabet lainnya, misalnya alfabet atau kanji China, ukuran maksimum SMS-nya adalah 70 karakter [11].

2.1.1 Sejarah SMS

SMS merupakan fasilitas standar dari Global Sistem for Mobile Communication (GSM) yang dikembangakan dan distandarisasi oleh European Telecommunication Standard Institute (ETSI). Fasilitas ini dipakai untuk mengirim dan menerima pesan dalam bentuk teks ke dan dari sebuah ponsel. Isu SMS pertama kali muncul di belahan Eropa pada sekitar tahun 1991 bersama sebuah teknologi komunikasi wireless yang saat ini cukup banyak penggunanya, yaitu Global Sistem for Mobile comunication (GSM). Dipercaya bahwa pesan pertama yang dikirimkan menggunakan SMS dilakukan pada bulan Desember 1992, dikirimkan dari sebuah Personal Computer (PC) ke telepon mobile (bergerak) dalam jaringan GSM milik Vodafone Inggris. Perkembangannya kemudian merambah ke benua Amerika, dipelopori oleh beberapa operator komunikasi bergerak berbasis digital seperti BellSouth Mobility, PrimeCo, Nextel, dan beberapa operator lain.


(21)

2.1.2 Arsitektur SMS

SMS dimaksudkan untuk menjadi alat pertukaran informasi antara dua mobile. Elemen-elemen utama pada arsitektur SMS terdiri dari Short Message Entity (SME), Short Message Service Center (SMSC) dan Email Gateway.

2.1.2.1 Short Message Entity (SME)

Short Message Entity (SME) adalah elemen yang dapat mengirim atau menerima pesan singkat. SME dapat berupa software aplikasi pada mobile handset, dapat juga berupa server yang terkoneksi dengan SMSC secara langsung atau melaui gateway.

2.1.2.2 Short Message Service Center (SMSC)

Short Message Service Center (SMSC) memegang peran kunci pada arsitektur SMS. SMSC adalah kombinasi perangkat lunak dan perangkat keras yang bertanggung jawab memperkuat, menyimpan dan meneruskan pesan pendek antar SME dan piranti bergerak (mobile phone). Secara fisik SMSC dapat berwujud sebuah PC biasa yang mempunyai interkonektivitas dengan jaringan GMS.

2.1.2.3 Email Gateway

Email Gateway Short memungkinkan sebuah email beroperasi menjadi SMS dengan interkoneksi SMSC pada internet. Dengan email gateway pesan dapat dikirim dari sebuah SME menuju sebuah host internet dan sebaliknya.


(22)

2.1.3 Cara Kerja SMS

Ketika pengirim mengirim SMS, maka pesan terlebih dahulu dikirim ke Mobile Switching Center (MSC) melalui jaringan seluler yang tersedia meliputi tower Base Transceiver Station (BTS), diteruskan ke Base Station Controller (BSC), kemudian sampai ke MSC. Dari MSC, SMS diteruskan ke SMSC untuk disimpan. SMSC akan memeriksa melalui Home Location Register (HLR) untuk mengetahui apakah handpone tujuan sedang aktif. Jika handpone tujuan aktif maka pesan disampaikan MSC melalui jaringan yang sedang menghandle penerima (BSC dan BTS). Jika handpone sedang tidak aktif maka pesan akan disimpan di SMSC, menunggu pemberitahuan MSC bahwa handpone sudah aktif kembali dan seterusnya SMS dikirim dengan batas maksimum waktu tunggu yaitu validity period dari pesan SMS itu sendiri.

Dengan teknologi GSM/GPRS, operator jaringan telepon dapat dengan mudahnya melakukan pertukaran pesan dari jaringan yang berbeda. Pemetaan sinyal dilakukan di antara dua jaringan telepon. dalam pemetaan dua jaringan ini, SMSC dari pembuat SME mengolah HLR jaringan tujuan untuk mendapatkan informasi mengenai penerima dan mengirimnya langsung. Dalam contoh ini, SMSC penerima pesan tidak berpengaruh. Ilustrasi contoh tersebut pada gambar 2.1

Gambar 2.1 Proses Pengiriman SMS antar sesama teknologi jaringan

Untuk pengiriman pesan diantara teknologi jaringan yang berbeda (seperti GSM/GPRS dan CDMA), dilakukan dengan menyambungkan dua gateway jaringan


(23)

telepon dengan menggunakan protokol pertukaran. Seperti yang di ilustrasikan pada gambar 2.2

Gambar 2.2 Proses Pengiriman SMS antar teknologi jaringan yang berbeda

Dalam pengiriman antara dua teknologi jaringan yang berbeda terdapat beberapa tahap. Pertama, pesan dibuat dan dikirim oleh SME ke SMSC pengirim. Selanjutnya SMSC pengirim meneruskan pesan melalui SMSC penerima dan SMSC penerima mengirimkan pesan ke SME penerima. Jika status report diminta oleh pengirim pesan, maka SMSC penerima membuat status report dan mengirimkanya ke SME pengirim.

2.1.4 Sistem Kerja SMS

Semua SMS yang dikirim atau diterima sebenarnya telah mengalami pengolahan sebelumnya. Kumpulan pesan yang berupa teks telah mengalami proses yang cukup rumit, tidak semudah ketika mengetik dan mengirim SMS tersebut. Seperti halnya teks yang kita ketikkan dirubah ke dalam format PDU (Protocol Data Unit ) dimana pada tahap ini teks diolah sedemikian rupa sehingga akhirnya dapat diterima dan di baca oleh penerima.

2.1.5 Protocol Data Unit (PDU)

Data yang mengalir ke atau dari SMS Center harus berbentuk PDU (Protocol Data Unit). PDU berisi bilangan heksa desimal yang mencerminkan bahasa I/O. PDU terdiri atas beberapa Header. Header untuk kirim SMS ke SMS Center berbeda


(24)

dengan SMS yang diterima dari SMS Center. Maksud dari bilangan heksa desimal adalah bilangan yang terdiri atas 0, 1, 2 , 3, 4, 5 ,6 ,7 ,8 ,9 ,A ,B ,C ,D ,E ,F.

Data di PDU mempunyai format data oktet yaitu format data 8 bit. Adapun karakter yang dipakai mempunyai format data 7 bit (septet). Untuk menterjemahkan karakter menjadi data PDU supaya bisa dimengerti, maka dilakukan proses konversi yaitu dari data 7 bit (format septet) ke data 8 bit (format oktet).

2.2 Kriptografi

Kriptografi dapat diartikan sebagai ilmu atau seni untuk menjaga keamanan pesan. Ketika suatu pesan dikirim dari suatu tempat ke tempat lain, isi pesan tersebut mungkin dapat disadap oleh pihak lain yang tidak berhak untuk mengetahui isi pesan tersebut. Untuk menjaga pesan, maka pesan tersebut dapat diubah menjadi suatu kode yang tidak dapat dimengerti oleh pihak lain.

2.2.1 Definisi Kriptografi

Kriptografi berasal dari bahasa Yunani, crypto dan graphia. Crypto berarti secret (rahasia) dan graphia berarti writing (tulisan). Menurut terminologinya kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika dikirim dari suatu tempat ke tempat yang lain [1]. Selain definisi tersebut, terdapat pula definisi yang menjelaskan bahwa kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, serta otentikasi [6].

Secara umum, kriptografi merupakan teknik penyandian data dengan cara mengenkripsi informasi awal (plaintext) yang dikodekan dengan kunci tertentu menggunakan algoritma enkripsi tertentu sehingga menghasilkan informasi baru (ciphertext) yang tidak dapat dibaca secara langsung. Ciphertext tersebut dapat


(25)

dikembalikan lagi menjadi informasi awal (plaintext) melalui proses dekripsi. Proses kriptografi secara umum dapat dilihat pada Gambar 2.3.

.

Gambar 2.3 Proses Enkripsi dan Dekripsi sederhana

2.2.2 Sejarah Kriptografi

Kriptografi mempunyai sejarah yang sangat menarik dan panjang sejalan dengan sejarah kehidupan manusia. Kriptografi sudah digunakan 4000 tahun yang lalu yang diperkenalkan oleh orang-orang Mesir untuk mengirim pesan ke pasukan militer yang berada di lapangan dan supaya pesan tersebut tidak terbaca oleh pihak musuh walaupun kurir pembawa pesan tersebut tertangkap oleh musuh [10].

Informasi lengkap mengenai sejarah kriptografi dapat ditemukan di dalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi mulai dari penggunaan kriptografi oleh bangsa Mesir 4000 tahun yang lalu (berupa hieroglyph yang tidak standard pada piramid) hingga penggunaan kriptografi pada abad ke-20.

Perkembangan komputer dan sistem komunikasi pada tahun 60-an berdampak pada permintaan dari sektor-sektor privat sebagai sarana untuk melindungi informasi dalam bentuk digital dan untuk menyediakan layanan keamanan. Dimulai dari usaha Feistel pada IBM di awal tahun 70-an dan mencapai puncaknya pada 1977 dengan pengangkatan Data Encryption Standard (DES) sebagai standar pemrosesan informasi federal US untuk mengenkripsi informasi yang unclassified. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah.


(26)

2.2.3 Tujuan Kriptografi

Secara umum tujuan kriptografi diciptakan adalah untuk merahasiakan suatu pesan agar tidak bisa dibaca oleh pihak yang tidak absah. Berpedoman dari tujuan umum tersebut, terdapat empat tujuan mendasar kriptografi digunakan dalam bidang keamanan informasi, yaitu:

1. Confidentiality (Kerahasiaan), yaitu layanan yang digunakan untuk menjaga isi informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi. Biasanya dilakukan dengan cara membuat suatu algoritma matematis yang mampu mengubah data hingga menjadi sulit untuk dibaca dan dipahami.

2. Data Integrity (Integritas Data), yaitu layanan yang mampu mengenali atau mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain).

3. Authentication (Otentikasi), yaitu layanan yang berhubungan dengan identifikasi/ pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diotentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.

4. Non-repudiation (Nirpenyangkalan), yaitu layanan yang dapat mencegah terjadinya penyangkalan aksi terhadap pengiriman atau terciptanya suatu informasi oleh yang mengirimkan/membuat.

2.2.4 Komponen Cipher

Algoritma kriptografi atau cipher terdiri dari tiga fungsi dasar, yaitu: 1. Enkripsi.


(27)

Merupakan hal yang sangat penting dalam kriptografi, merupakan pengamanan data yang dikirimkan agar terjaga kerahasiaannya. Pesan asli disebut plaintext, yang diubah menjadi kode-kode yang tidak dimengerti. Enkripsi bisa diartikan dengan cipher atau kode. Sama halnya dengan kita tidak mengerti akan sebuah kata maka kita akan melihatnya di dalam kamus atau daftar istilah. Beda halnya dengan enkripsi, untuk mengubah teks-asli ke bentuk teks-kode kita menggunakan algoritma yang dapat mengkodekan data yang kita inginkan.

2. Dekripsi.

Merupakan kebalikan dari enkripsi. Pesan yang telah dienkripsi dikembalikan ke bentuk asalnya (teks-asli), disebut dengan dekripsi pesan. Algoritma yang digunakan untuk dekripsi tertentu berbeda dengan algoritma yang digunakan untuk dekripsi.

3. Kunci.

Yang dimaksud di sini adalah kunci yang dipakai untuk melakukan enkripsi dan dekripsi. Kunci terbagi menjadi dua bagian, kunci rahasia (private key) dan kunci umum (public key).

Algoritma kriptografi dibagi menjadi dua bagian berdasarkan kunci yang dipakai: 1. Algoritma Kunci Simetri (menggunakan satu kunci untuk enkripsi dan dekripsinya), 2. Algoritma Kunci Asimetri (menggunakan kunci yang berbeda untuk enkripsi dan dekripsi),

2.2.4.1 Algoritma Kunci Simetri

Ini adalah jenis kriptografi yang paling umum dipergunakan. Kunci untuk membuat pesan yang disandikan sama dengan kunci untuk membuka pesan yang disandikan itu. Jadi pembuat pesan dan penerimanya harus memiliki kunci yang sama persis. Siapapun yang memiliki kunci tersebut, termasuk pihak-pihak yang tidak diinginkan, dapat membuat dan membongkar rahasia ciphertext. Masalah yang paling jelas di sini terkadang bukanlah masalah pengiriman ciphertext-nya, melainkan masalah bagaimana menyampaikan kunci simetris tersebut kepada pihak yang diinginkan.


(28)

Contoh algoritma kunci simetris yang terkenal adalah DES (Data Encryption Standard) dan RC-4.

Gambar 2.4 Skema Kriptografi Kunci Simetri

Dua kategori yang termasuk pada algoritma simetris ini adalah algoritma block cipher dan stream cipher. Algoritma block cipher adalah algoritma yang masukan dan keluarannya berupa satu block, dan setiap blocknya terdiri dari banyak bit. Beberapa mode operasi enkripsi block cipher diantaranya Data Encryption Standard ( DES ), Advanced Encrytion Standard (AES), dan Blowfish.

Sedangkan stream cipher ( cipher aliran ) adalah cipher yang berasal dari hasil XOR antara bit plaintext dengan setiap bit kuncinya. Stream cipher sangat rawan terhadap attack pembalikan bit. Beberapa model algoritma stream cipher antara lain adalah algoritma One Time Pad ( OTP ), algoritma Rivest Code 4 (RC 4), algoritma IDEA, algoritma Blowfish, dan algoritma RC2.

2.2.4.2 Algoritma Kunci Asimetri

Kriptografi kunci asimetri menggunakan kunci yang berbeda (pasangan kunci) untuk keperluan proses enkripsi dan proses dekripsi. Perbedaan yang sangat terlihat antara kriptografi kunci simetri dan kriptografi kunci asimetri terletak pada sifat kunci, pada kriptografi kunci simetri, kunci bersifat rahasia, sedangkan pada kriptografi kunci asimetri terdapat pasangan kunci yang memiliki dua sifat yang berbeda, yaitu kunci rahasia (private key) untuk proses dekripsi dan kunci publik (public key) untuk proses


(29)

enkrispsi. Karena sifat salah satu kuncinya publik maka kriptografi kunci asimetri sering disebut juga kriptografi algoritma kunci publik.

Distribusi kunci pada kritografi kunci asimetri sangat mudah, karena kunci enkrispsi bersifat publik maka distribusi kunci dapat dilakukan di jalur mana saja bahkan jalur yang ingin diamankan sekalipun.

Gambar 2.5 Skema Kriptografi Kunci Asimetri

Kriptografi ini bukan tanpa celah, karena kunci enkripsinya yang bersifat publik maka kriptografi ini relatif lemah terhadap serangan cryptanalist terutama serangan chosen-plaintext. Selain itu, kriptografi ini memiliki kelemahan lain dalam hal kecepatan. Kriptografi asimetri 1000 kali lebih lamban dibandingkan kriptografi simetri. Adapun keunggulan dari kriptografi kunci asimetri selain distribusi kunci yang sangat mudah adalah manajemen kunci yang tidak rumit karena tiap komunikan hanya butuh sepasang kunci (enkripsi dan dekripsi), sehingga dapat dituliskan untuk n komunikan yang berkomunikasi hanya dibutuhkan n pasang kunci.

Terdapat banyak algoritma yang dikembangkan pakar-pakar kriptografi untuk algoritma kunci asimetri, diantaranya: algoritma RSA, algoritma Digital Signature Algorithm (DSA), algoritma Diffie-Hellman ( DH ), algoritma McEliece, algoritma Rabin, algoritma Knapsack, algoritma LUC, dan algoritma El Gamal.


(30)

2.2.5 Jenis-Jenis Serangan Terhadap Kriptografi

Serangan terhadap sistem kriptografi dapat dikelompokkan dengan beberapa cara. Berdasarkan keterlibatan penyerang dalam komunikasi, serangan dapat dibagi atas dua macam, yaitu serangan aktif dan serangan pasif.

1. Serangan aktif

Pada jenis serangan ini, penyerang mengintervensi komunikasi dan ikut mempengaruhi sistem untuk keuntungan dirinya. Misalnya penyerang mengubah aliran pesan seperti menghapus sebagian ciphertext, mengubah ciphertext, menyisipkan potongan ciphertext palsu, me-replay pesan lama, mengubah informasi yang tersimpan, dan sebagainya.

2. 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 kriptanalisis. Beberapa metode penyadapan data antara lain:

a) Wiretapping; penyadap mencegat data yang ditransmisikan pada saluran komunikasi dengan menggunakan sambungan perangkat keras.

b) Electromagnetic eavesdropping: penyadap mencegat data yang ditransmisikan melalui saluran wireless, misalnya radio dan microwave.

c) Acoustic eavesdropping: menangkap gelombang suara yang dihasilkan oleh suara manusia.

Berdasarkan banyaknya informasi yang diketahui oleh kriptanalis, dikelompokkan menjadi 5 jenis:

1. Ciphertext-only attack

Ini adalah jenis serangan yang paling umum namun paling sulit karena informasi yang tersedia hanyalah ciphertext saja. Kriptanalis memiliki beberapa ciphertext dari pesan,


(31)

semuanya dienkripsi dengan algoritma yang sama. Tugas kriptanalis adalah menemukan plaintext sebanyak mungkin dari ciphertext tersebut atau menemukan kunci yang digunakan untuk mendekripsi.

2. Known-plaintext attack

Ini adalah jenis serangan dimana kriptanalis memiliki pasangan plaintext dan ciphertext yang berkoresponden. Plaintext mungkin diperoleh dengan mempelajari karakteristik pesan. Beberapa pesan yang formatnya terstruktur membuka peluang kepada kriptanalis untuk menerka plaintext dari ciphertext yang bersesuaian.

3. Chosen-plaintext attack

Serangan jenis ini lebih hebat dari pada known-plaintext attack, karena kriptanalis dapat memilih plaintext yang dimilikinya untuk dienkripsikan, yaitu plaintext yang lebih mengarahkan penemuan kunci.

4. Chosen-ciphertext attack

Ini adalah jenis serangan dimana kriptanalis memilih ciphertext untuk didekripsikan dan memiliki akses ke plaintext hasil dekripsi (misalnya terhadap mesin elektronik yang melakukan dekripsi secara otomatis). Jenis serangan ini bisaanya dipakai pada sistem kriptografi.

5. Chosen-text attack

Ini adalah jenis serangan yang merupakan kombinasi chosen-plaintext dan chosen-ciphertext attack.

Berdasarkan teknik yang digunakan dalam menemukan kunci, dibagi atas: 1. Exhaustive attack atau brute force attack

Ini adalah serangan untuk mengungkap plaintext atau kunci dengan mencoba semua kemungkinan kunci. Diasumsikan kriptanalis mengetahui algoritma kriptografi yang digunakan oleh pengirim pesan. Selain itu kriptanalis memiliki sejumlah ciphertext dan/ atau plaintext yang bersesuaian.


(32)

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. Analisis dapat menggunakan pendekatan matematik dan statistik dalam rangka menemukan kunci. Secara statistik misalnya dengan menggunakan analisis frekuensi, sedangkan secara matematik dengan memecahkan persamaan-persamaan matematika (yang diperoleh dari defenisi suatu algoritma kriptografi) yang mengandung peubah-peubah yang merepresentasikan plaintext atau kunci.

2.3 Algoritma Diffie-Hellman

Sampai akhir tahun 1975, hanya ada algoritma kunci simetris. Karena kriptografi simetris menggunakan kunci yang sama untuk enkripsi dan dekripsi, maka hal ini mengimplikasikan dua pihak yang berkomunikasi saling mempercayai. Satu masalah kritis di dalam kriptografi kunci simetris adalah cara mendistribusikan kunci karena dianggap tidak aman. Masalah ini dipecahkan oleh Whitfield Diffie dan Martin Hellman dengan mengusulkan kriptografi nirsimetris (asymmetris cryptosystem) yang memungkinkan pengguna berkomunikasi secara aman tanpa perlu berbagi kunci rahasia. Algoritma Diffie-Hellman atau dinamakan juga protokol Diffie-Hellman berguna untuk mempertukarkan kunci sesi (kunci rahasia untuk komunikasi dengan kriptografi simetris) antara dua orang atau lebih. Dan algoritma ini menjadi awal mula munculnya algoritma kriptografi RSA [10].

2.3.1 Pertukaran Kunci

Misalkan dua orang yang berkomunikasi adalah Irfan dan Antoni. Mula-mula Irfan dan Antoni menyepakati dua buah bilangan prima yang besar, n dan g, sedemikian sehingga g < n. Nialai n dan g tidak perlu dirahasiakan. Bahkan Irfan dan Antoni bisa membicarakannya melalui saluran yang tidak aman sekalipun.


(33)

Langkah-langkah dalam pertukaran kunci adalah sebagai berikut:

1. Irfan membangkitkan bilangant bulat acak dengan besar x dan mengirim hasil perhitungan X = gx mod n kepada Antoni.

2. Antoni membangkitkan bilangant bulat acak dengan besar x dan mengirim hasil perhitungan Y = gy mod n kepada Irfan.

3. Irfan menghitung K = Yx mod n 4. Antoni menghitung K’ = Xy mod n

Jika perhitungan dilakukan dengan benar, maka K akan bernilai sama dengan K’ yang berarti kunci simetris sudah berhasil diterima oleh kedua belah pihak. Baik K dan K’ sama dengan gxy mod n. Regar yang menyadap pembicaraan antara Irfan dan Antoni tidak dapat menghitung K. Dia hanya memiliki informasi n, g, X dan Y, tetapi dia tidak mempunyai informasi nilai x dan y. Untuk mengetahui nilai x atau y, dia perlu melakukan perhitungan logaritma diskrit yang sangat sulit dikerjakan.

Gambar berikut 2.6 memperlihatkan diagram algoritma pertukaran kunci Diffie-Hellman.

Gambar 2.6 Pertukaran Kunci Diffie-Hellman

Misalkan Irfan dan Antoni menyepakati n = 97 dan g = 5 (g < n). Irfan dan Antoni melakukan pertukaran kunci simetri sebagai berikut:

1. Irfan memilih x = 36 dan menghitung Bangkitkan x

Hitung X = gx mod n

Hitung K = Yx mod n

Bangkitkan y

Hitung Y = gy mod n


(34)

X = gx mod n = 536 mod 97 = 50 Irfan mengirimkan X kepada Antoni. 2. Antoni memilih y = 58 dan menghitung

Y = gy mod n = 558 mod 97 = 44 Antoni mengirimkan X kepada Irfan. 3. Irfan menghitung kunci simetris K,

K = Yx mod n = 4436 mod 97 = 75 4. Antoni menghitung kunci simetris K’,

K’ = Xy mod n = 5058 mod 97 = 75

Jadi, Irfan dan Antoni sudah mempunyai kunci sesi yang sama, yaitu K = 75. Kunci siap digunakan untuk melakukan komunikasi dengan kriptografi simetris.

2.4 Algoritma RivestShamirAdleman (RSA)

RSA merupakan salah satu algoritma yang paling maju dalam bidang kriptografi. RSA masih digunakan secara luas dalam berbagai bidang kriptografi dan dipercaya dapat mengamankan kerahasiaan data dengan menggunakan kunci yang cukup panjang. Akan tetapi besarnya bilangan yang digunakan mengakibatkan lambatnya operasi yang melibatkan algoritma RSA ini [7].

2.4.1 Sejarah RSA

RSA adalah salah satu contoh kriptografi yang menerapkan konsep public key. Algoritma ini pertama kali dipublikasikan di tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard Adleman dari Massachusetts Institute of Technology (MIT). Nama RSA sendiri adalah singkatan dari nama belakang mereka bertiga [7].

Clifford Cocks, seorang matematikawan Inggris sebenarnya juga telah mengembangkan algoritma yang hampir sama dengan RSA ini pada tahun 1973. Namun algoritma buatannya tidak begitu dikenal oleh publik, dan baru dipublikasi


(35)

pada tahun 1997 karena merupakan proyek rahasia. Walau begitu algoritma yang dikembangkan Rivest, Shamir, dan Adleman tidak berhubungan dengan pekerjaan Cocks.

Algoritma RSA dipatenkan oleh Massachusetts Institute of Technology pada ta Semenjak Algoritma RSA dipublikasikan sebagai aplikasi paten, regulasi di sebagian besar negara-negara lain tidak memungkinkan penggunaan paten.

2.4.2 Algoritma RSA dalam Proses Enkripsi dan Dekripsi

Pada algoritma RSA terdapat 3 langkah utama yaitu key generation (pembangkitan kunci), enkripsi, dan dekripsi.

Kunci pada RSA mencakup dua buah kunci, yaitu public key dan private key. Public key digunakan untuk melakukan enkripsi, dan dapat diketahui oleh orang lain. Sedangkan private key tetap dirahasiakan dan digunakan untuk melakukan dekripsi. Pembangkitan kunci atau key generation dari RSA adalah sebagai berikut :

1. Pilih dua buah bilangan prima sembarang p dan q. Jaga kerahasiaan p dan q ini.

2. Hitung n = p * q. Besaran n ini tidak perlu dirahasiakan.

3. Hitung Ф(n) = (p-1) * (q-1). Sekali Ф(n)telah dihitung, p dan q dapat dihapus untuk mencegah diketahuinya oleh pihak lain.

4. Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang relatif prima terhadap Ф(n)(relatif prima berarti GCD(e, Ф(n)) = 1 dengan syarat e (p-1), e (q-1), dan e < n.

5. Kunci publik (Public Key) = (n,e).

6. Hitung kunci privat (d) dengan kekongruenan e*d ≡1 (mod Ф(n)).

Maka d dapat dihitung dengan cara yang sederhana dengan syarat (d*e) mod Ф(n) ≡ 1 mod Ф(n). Kita dapat menuliskan kembali pernyataan tersebut dengan d =


(36)

(1+k*Ф(n))/e sehingga nilai-nilai k dapat diselesaikan sampai didapat sebuah nilai k dan d adalah anggota bilangan bulat.

Proses enkripsi dapat dilakukan dengan :

Sedangkan proses dekripsi dilakukan dengan :

Dengan mencoba nilai k = 1, 2, 3, ..., diperoleh nilai d yang bulat. Nilai itu yang akan dipakai sebagai kunci pribadi untuk dekripsi pesan.

Dalam implementasi sebenarnya, nilai p dan q diharapkan sangat besar sekali (misalnya 100 digit) agar pekerjaan memfaktorkan n menjadi faktor primanya menjadi sangat sukar, sehingga lebih susah untuk ditembus.

2.4.3 Keamanan dan Kecepatan RSA

Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan menjadi faktor primanya, dalam hal ini memfaktorkan n menjadi p dan q. Masing-masing p dan q besarnya dapat mencapai 100 sampai 200 digit dan bahkan lebih. Sekali n berhasil difaktorkan, maka menghitung nilai m adalah perkara mudah. Selanjutnya, walau nilai e diumumkan, perhitungan kunci d tidaklah mudah pula karena nilai m yang tidak diketahui [10].

RSA memiliki modulus 512-bit dengan kecepatan 64 kilobit per detik. Saat ini chip sedang direncanakan akan mendekati 1 megabit per detik menggunakan modulus 512-bit. Dalam perangkat keras, kecepatan RSA sekitar 1000 kali lebih lambat dibandingkan dengan DES. Sedangkan dalam perangkat lunak, kecepatan DES adalah sekitar 100 kali lebih cepat dari kecepatan RSA [13].

Ci = mie mod n


(37)

2.5 Lucas Lehmer Primality Test

Di dalam kriptografi, bilangan prima memiliki peranan yang sangat penting. Beberapa algoritma kriptografi, seperti RSA, menggantungkan kekuatannya pada sulitnya faktorisasi bilangan besar. Oleh karena itu, penggunaan bilangan prima yang besar menjadi sangat penting. Sebenarnya ada banyak cara untuk mengetahui suatu bilangan itu prima atau bukan, dan salah satu yang bisa digunakan adalah Lucas-Lehmer primality test.

Metode ini pertama kali ditemukan oleh dua orang ilmuan yaitu Francois Edouard Lucas Anatole berkebangsaan Perancis dan Derrick Henry Lehmer berkebangsaan Amerika Serikat.

Lucas Lehmer Primality Test bekerja dengan memanfaatkan bilangan Mersenne. Rumus bilangan Mersenne yaitu Mp = 2p – 1. Rumus ini ditemukan oleh Marin Mersenne seorang berkebangsaan Perancis yang hidup antara tahun 1588-1648. Untuk memperoleh bilangan Mersenne (Mp) adalah prima, maka p juga haruslah sebuah bilangan prima. Akan tetapi Mp belum tentu prima meskipun p adalah prima. Bilangan Mersenne biasanya digunakan untuk mencari bilangan prima yang sangat besar [7].

Berikut ini merupakan langkah-langkah untuk mengetahui keprimaan suatu bilangan dengan Lucas-Lehmer primality test.

1. Masukkan bilangan Mersenne Mp = 2p – 1 dimana p ≥ 3

2. Hitung Sj = S2j-1 – 2 mod Mp dengan S1 = 4 untuk j = 2,3,…,n-1

3. Jika Sp-1 = 0 mod Mp maka dapat disimpulkan bahwa Mp bilangan prima dan jika Mp ≠ 0 maka Mp adalah bilangan komposit.


(38)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis

Sebelum merancang sebuah sistem, perlu dilakukan analisis terlebih dahulu. Analisis sistem adalah proses menentukan kebutuhan sistem, apa yang harus dilakukan sistem untuk memenuhi kebutuhan klien (user). Tahapan analisis sistem merupakan tahapan yang sangat penting karena kesalahan di dalam tahapan ini akan menyebabkan kesalahan pada tahapan selanjutnya. Sistem yang dirancang akan lebih baik dan memudahkan pengembang sistem dalam perbaikan apabila pada kemudian hari ditemukan kesalahan atau kekurangan [11].

3.1.1 Analisis Permasalahan

Enkripsi merupakan proses dimana informasi atau data yang akan dikirim diubah menjadi bentuk yang hampir tidak dikenali sebagai informasi awalnya dengan menggunakan algoritma tertentu. Sedangkan dekripsi merupakan kebalikan dari enkripsi yaitu mengubah kembali bentuk tersamar tersebut menjadi informasi awal.

Aplikasi enkripsi dan dekripsi SMS ini dibuat dan dirancang dengan menggunakan metode pendekatan atas-bawah (Top-Down Aprroach) sehingga perancangan akan dimulai dari bentuk yang paling global, yaitu diagram konteks, kemudian akan diturunkan bertahap menjadi bentuk yang lebih rinci.

Sistem yang akan dirancang terdiri dari dua proses secara garis besar, yaitu pengiriman SMS melalui proses enkripsi dengan algoritma RSA, encoding kedalam


(39)

format PDU (Protocol Data Unit), dan penerimaan SMS yang di dalamnya terdapat proses decoding PDU, dekripsi dengan algoritma RSA. Skema global dari proses-proses tersebut dapat dilihat pada gambar 3.1 dan 3.2.

Gambar 3.1 Skema Global Proses Enkripsi dan EncodingPDU Plainteks SMS

Enkripsi RSA

Cipherteks

Encoding Format PDU

Cipherteks dalam format PDU


(40)

Gambar 3.2 Skema Global Proses DecodingPDU dan Dekripsi

3.1.2 Analisis Protocol Data Unit (PDU)

Dalam proses pengiriman atau penerimaan SMS, data yang dikirim maupun diterima oleh stasiun bergerak menggunakan salah satu dari 2 mode yang ada, yaitu mode teks atau mode PDU. Dalam mode PDU, pesan yang dikirim berupa informasi dalam bentuk data dengan beberapa bagian-bagian informasi. Hal ini akan memberikan kemudahan jika dalam pengiriman akan dilakukan kompresi data, atau akan dibentuk sistem penyandian data dari karakter dalam bentuk untaian bit-bitbiner.

PDU tidak hanya berisi pesan teks saja, tetapi terdapat beberapa meta informasi yang lainnya, seperti nomor pengirim, nomor SMS Center, waktu pengiriman dan sebagainya. Semua informasi yang terdapat dalam PDU, dituliskan dalam bentuk pasangan-pasangan bilangan heksadesimal. Jenis PDU SMS yang akan digunakan adalah PDU Pengiriman (SMS Submit) dan PDU Penerimaan (SMS Deliver ).

Cipherteks dalam format PDU

Decoding Format PDU

Cipherteks

Dekripsi RSA


(41)

3.1.2.1PDU Pengiriman (SMS Submit)

PDU pengiriman (SMS Submit) adalah pesan yang dikirim dari ponsel ke terminal yang kemudian dikirimkan ke SMSC. Pesan yang akan dikirimkan oleh terminal masih berbentuk teks, sedangkan dalam pengiriman ke SMSC harus dalam bentuk PDU. Oleh karena itu sebelum dikirim, terminal atau ponsel akan melakukan perubahan format teks menjadi format PDU, proses ini disebut dengan encodec. Adapun skema dari format PDU pengiriman adalah sebagai berikut.

Tabel 3.1 Skema Format PDU Pengiriman

SCA PDU-Type MR DA PID DCS VP UDL UD

Sebagai contoh bila kita mengirim pesan ke nomor 6285691511707 dengan isi pesan adalah “Info Jadwal” dengan validitas waktu selama 5 hari, 10 jam, 60 menit. Maka format PDU-nya adalah seperti pada tabel 3.2 berikut.

Tabel 3.2 Contoh Pesan SMS Submit dalam Format PDU Pesan

Asli

Irfan<spasi>08

PDU 0011000D81265896511107F70000AB8B0BOB49B939EC6C170

Berikut ini merupakan penjelasan masing-masing dari format PDU Pengiriman di atas :

1. SCA (Service Center Address)

SCA berisi informasi nomor SMS Center. SCA memiliki tiga komponen utama, yaitu len, type of number dan BCD digits. Pada pengiriman SMS, nomor SMSC operator pengirim tidak dicantumkan. Oleh karena panjang SMS adalah 00 hexa maka field -field yang lain dapat diabaikan. SMSC yang digunakan adalah SMSC yang terdapat pada SIM card berdasarkan perintah “AT+CSCA”.


(42)

Tabel 3.3 SCA dari PDU Pengiriman

Octet Keterangan Nilai

Len Panjang informasi SMSC 00

Type of Number

81 H = format lokal

91 H = format internasional

<none>

BCD Digits Nomor SMSC. Jika panjangnya ganjil, maka pada akhir karakter ditambahkan 0F H

<none>

2. Tipe PDU (PDU-Type)

Nilai default dari PDU untuk SMS Submit adalah 11 H. Pada tabel 3.2, nilai PDU-nya adalah 11 H.

Tabel 3.4 PDU-Type dari PDU Pengiriman

Bit 7 6 5 4 3 2 1 0

Nama RP UDHI SRI VPF VPF RD MTI MTI

Nilai 0 0 0 1 0 0 0 1

Keterangan :

(a) RP (Report Path) adalah parameter yang menunjukkan bahwa ada alur jawaban.

(b) UDHI (User Data Header Indicator), bit ini bernilai 1 jika data pengirim dimulai dengan suatu judul atau tema.

(c) SRI (Status Report Indication), bit ini bernilai 1 jika suatu status laporan akan dikembalikan ke SME.


(43)

(d) VPF (Validity Period Format), format dari batas waktu pengiriman jika pesan gagal diterima.

00 : Jika pesan tidak sampai di SMSC.

10 : Format relatif (satu octet). 01 : Formatenhanced (tujuh octet). 11 : Format absolut (tujuh octet).

(e) RD (Reject Duplicates), parameter yang menandakan ya atau tidaknya Service Center akan menerima suatu pengiriman pesan SMS untuk suatu pesan yang masih disimpan dalam ServiceCenter tersebut. RD mempunyai MR dan DA yang sama sebagai pesan dan dikirimkan dari OA yang sama. (f) MTI (Message Type Indicator), bit ini bernilai 0 untuk menunjukkan bahwa

PDU ini adalah suatu SMS Deliver.

3. MR (Message Reference)

MR (Message Reference) adalah acuan dari pengaturan SMSC. Nilai yang diberikan adalah “00” dan pengaturan SMS dilakukan sendiri oleh ponsel tujuan. Pada tabel 3.2, nilai MR-nya adalah 00 H.

4. DA (Destination Address)

DA berisi informasi nomor alamat yang dituju. DA memiliki tiga komponen utama, yaitu len, type of number dan destination number. Penulisan format destination number sama dengan originator address. Pada tabel 3.2, nilai len, type of number dan destination number berturut-turut adalah 0D81265896511107F7.


(44)

Tabel 3.5 Destination Address (DA)

Octet Keterangan Nilai

Len Panjang nomor tujuan 0D

Type of Number

Type of address dari SMSC

81 H = format lokal 91 H = format internasional

81

Destination Number

Nomor destination address. Jika panjangnya ganjil, maka pada akhir karakter ditambahkan 0F H

0D81265896511107F7

5. PID (Protocol Identifier)

PID adalah tipe atau format dari cara pengiriman pesan, yang biasanya diatur dari ponsel pengirim. Misalnya tipe Standard Text, Fax, E-mail, Telex, X400 dan lain-lain. Nilai default dari PID adalah 00 (Standard Text). Pada tabel 3.2, nilai PID adalah 00 H, sehingga pesan yang diterima berupa teks standar.

6. DCS (Data Coding Scheme)

DCS merupakan skema pengkodean data yang digunakan untuk menentukan kelas dari pesan tersebut, apakah berupa SMS dengan teks standar, flash SMS atau blinking SMS. Pada tabel 3.2, DCS bernilai 00 H yang menunjukkan bahwa SMS yang dikirim berupa teks standar.


(45)

7. VP (Validity Period)

VP berisi informasi jangka waktu validitas pesan SMS yang disimpan di SMSC apabila pesan tersebut gagal diterima oleh ponsel penerima. Pada tabel 3.2, nilai VP-nya adalah AB8B0B H.

Tabel 3.6 Nilai Validitas Periode

Waktu VP Nilai Validitas Periode 5 menit - 720 menit (12 jam) (Waktu VP / 5) – 1

12.5 jam - 24 jam 143 + ((Waktu VP – 12) * 2)

2 - 30 Hari 166 + Waktu VP

Lebih dari 4 minggu 192 + Waktu VP

Pada contoh di atas, waktu nya adalah 5 hari, 10 jam, 60 menit. Maka nilai VP-nya adalah :

Hari : 166 + 5 = 171 d = AB H,

Jam : 143 + (( 10 - 12 ) * 2) = 139 d = 8B H,

Menit : (60 / 5) - 1 = 11 d = 0B

Jadi hasil VP-nya adalah AB8B0B H.

8. UDL (User Data Length)

UDL berisi informasi mengenai panjang data yang diterima dalam bentuk teks standar. Pada contoh di atas, isi pesan yang dikirim adalah “Info Jadwal” yang memiliki 11 karakter, maka pada tabel 3.2 nilai UDL-nya adalah 0B H.


(46)

9. UD (User Data)

Berisi informasi data utama yang dibawa. Pesan “Info Jadwal” yang dikodekan menjadi 7 bit default alphabet (septet ) harus di-encode-kan menjadi 8 bit (octet ) untuk SMS-Deliver. Pada tabel 3.2, nilai UD-nya adalah “49B939EC6C170”. Tabel 3.7 di bawah ini menunjukkan cara pengkodean dengan menggunakan bantuan tabel defaultalphabet 7 bit. Pada tiap octet jika jumlah bit kurang dari 8, maka diambil bit paling kanan pada septet selanjutnya dan ditambahkan pada bagian kiri septet sebelumnya.

Tabel 3.7 User Data pada PDU Pengiriman

Karakter Desimal Septet (7 bit) Octet (8 bit) Nilai (hexa)

I 73 100 1001 0100 1001 49

r 114 111 0010 1011 1001 B9

f 102 110 0110 0011 1001 39

a 97 110 0001 1110 1100 EC

n 110 110 1110 0000 0110 6

(spasi) 32 010 0000 1100 0001 C1

0 48 011 0000 0111 0000 70

8 56 011 1000 - -

3.1.2.2PDU Penerimaan (SMS Deliver)

Aplikasi Server yang akan dibuat adalah menggunakan mode PDU dengan encoding 7 bit default alphabet. Berikut adalah contoh perubahan mode PDU menjadi teks biasa sehingga dapat kita mengerti. SMS Deliver PDU adalah terminal yang menerima pesan dari SMSC dalam format PDU. PDU Penerimaan memiliki format seperti pada tabel 3.8 di bawah ini. Pada PDU ini, terdapat beberapa meta-informasi yang dibawa, antara lain:


(47)

Tabel 3.8 Skema Format PDU Penerimaan

SCA PDU -Type OA PID DCS SCTS UDL UD

Contoh : Kita menerima pesan dari 6285695316565 dengan isi pesan SMS “Poli Paru” pada tanggal 20 Oktober 2011 pukul 10:45:21 WIB. Maka format PDU adalah pada tabel 3.9 :

Tabel 3.9 Contoh Pesan SMS Deliver dalam Format PDU Pesan Asli Irfan 08 (Irfan<spasi>08)

PDU 2681050000F0040D81265896356165F50000110102015 412820949B939EC6C170

Berikut merupakan penjelasan masing-masing dari format PDU.

Penerimaan di atas :

1. SCA (Service Center Address)

SCA berisi informasi SMS center. SCA memiliki tiga komponen utama, yaitu len, type of number dan ServiceCenter Number, seperti pada tabel 3.10 berikut. Pada tabel 3.9, nilai SCA-nya adalah 2681050000F0.

Tabel 3.10 SCA dari PDU Penerimaan

Octet Keterangan Nilai

Len Panjang informasi SMSC

dalam octet 26

Type of Number Type of address dari SMSC 81 H = format lokal

91 H = format internasional

85

Service Center Number

Nomor SMSC dari operator pengirim. Jika panjangnya ganjil, maka pada akhir karakter ditambahkan 0F H


(48)

Tabel 3.11 Nomor SMS Center Operator Seluler Di Indonesia No. Operator Selular Nomor SMS Center Kode PDU

1. Telkomsel 081100000 /

62811000000

06818011000000/ 07912618010000F0

2. Satelindo 0816124 / 62816125 0581806121F4 / 079126181642

3. Excelcom 0818445009 /

6281445009

06818081440590 / 079126184885400F9

4. Indosat-M3 0855000000 /

62855000000

06818055000000 / 07912658050000F0

6. 3 089644000001 /

6289644000001

0681806944000010 / 0791269846040000F1

Contoh: untuk nomor SMS Center Indosat-M3 (IM3) dapat ditulis dengan dua cara sebagai berikut:

Cara I: 0855000000 diubah menjadi:

a. 06  ada 6 pasang b. 81  1 pasang

c. 80-55-00-00-00  5 pasang

Digabung menjadi : 06818055000000

Cara II: 62855000000 diubah menjadi:

a. 07  ada 7 pasang b. 91  1 pasang

c. 26-58-05-00-00-F0  6 pasang


(49)

Contoh: untuk nomor ponsel yang dituju adalah 6285275677333 dapat ditulis dengan dua cara sebagai berikut :

Cara I: 085275677333 diubah menjadi :

a. 0C  ada 12 angka b. 81

c. 80-25-57-76-37-33

Digabung menjadi : 0C81802557763733

Cara II: 6285275677333 diubah menjadi:

a. 0D  ada 13 angka b. 91

c. 26-58-72-65-77-33-F3

Digabung menjadi : 0D91265872657733F3

2. Tipe PDU (PDU Type)

Berisi informasi jenis dari PDU tersebut. Nilai default dari PDU untuk SMS Deliver adalah 04 H dan nilai PDU-type pada tabel 3.9 adalah 04 H.

Tabel 3.12 PDU-Type dari PDU Penerimaan

Bit 7 6 5 4 3 2 1 0

Nama RP UDHI SRI <none> <none> MMS MTI MTI

Nilai 0 0 0 0 0 1 0 0

Keterangan :


(50)

(b) UDHI (User Data Header Indicator), bit ini bernilai 1 jika SMS menggunakan judul.

(c) SRI (Status Report Indication), bit ini bernilai 1 jika suatu status laporan akan dikembalikan.

(d) MMS (More Message to Send), bit ini bernilai 1 jika ada pesan lebih yang dikirim.

(e) MTI (Message Type Indicator), bit ini bernilai 0 untuk menunjukkan bahwa PDU ini adalah SMS Deliver.

3. OA (Originator Address)

Berisi informasi nomor pengirim. OA memiliki tiga komponen utama, yaitu len (panjangnya nomor pengirim), type of number (format dari nomor pengirim) dan originator number (nomor pengirim). Nilai OA pada tabel 3.9 adalah 0D81265896356165F5.

Tabel 3.13 Originator Address (OA)

Octet Keterangan Nilai

Len Panjang nomor

Orginator Address 0D

Type of Number

Format dari nomor pengirim

81 H = format lokal 91H = format internasional

81

Orginator Number

Nomor pengirim dari operator pengirim. Jika panjangnya ganjil, maka pada akhir karakter ditambahkan 0F H


(51)

4. PID (Protocol Identifier)

PID adalah tipe atau format dari cara pengiriman pesan, yang biasanya diatur dari ponsel pengirim. Misalnya tipe Standard Text, Fax, E-mail, Telex, X400 dan lain-lain. Nilai default dari PID adalah 00 (Standard Text). Pada tabel 3.9, nilai PID adalah 00 H.

5. DCS (Data Coding Scheme)

DCS berisi informasi skema pengkodean data yang digunakan. Nilai default-nya adalah 00 H, dengan menggunakan character coding default 7 bit dan message class 0. Pada beberapa handphone, message class 0 dengan encoding 7 bit adalah berupa flash SMS. Sedangkan encoding 16 bit Unicode (ucs2), message yang didahului “0001” dengan class 0 adalah berupa blinking flash SMS. Pada tabel 3.9, nilai DCS adalah 00 H. DCS juga menentukan message class seperti tabel di bawah ini.

Tabel 3.14 Data Coding Scheme (DCS) Nilai

(hexa)

Character

coding Message Class

00 Default (7 bit) No class

F0 Default (7 bit) Class 0 (immediate display) F1 Default (7 bit) Class 1 (mobile

equipment-specific)

F2 Default (7 bit) Class 2 (SIM specific message ) F3 Default (7 bit) Class 3 (terminate

equipment-specific)

F4 8 – bit Class 0 (immediate display)

F5 8 – bit Class 1 (mobile

equipment-specific)

F6 8 – bit Class 2 (SIM specific message) F7 8 – bit Class 3 (terminate


(52)

6. SCTS (Service Center Time Stamp)

Berisi informasi waktu dari penerimaan pesan oleh SMSC penerima. Pada tabel 3.9, nilai SCTS-nya adalah 11010201541282 yang berarti :

Tabel 3.15 Nilai Service Center Time Stamp (SCTS) Tahun 11 menjadi 2011

Bulan 01 menjadi 10, Oktober Tanggal 02 menjadi 20

Jam 01 menjadi 10 Menit 54 menjadi 45 Detik 12 menjadi 21 Zona

Waktu

82 menjadi 28, dimana 1 unit = 15 menit. (15*28) / 60 = 7, menjadi GMT+7 = WIB.

7. UDL (User Data Length)

UDL berisi informasi mengenai panjang data yang diterima dalam bentuk teks standar. Pada tabel 3.9, nilai UDL-nya adalah 09 H, yang berarti pesan yang diterima adalah sebanyak 9 karakter.

8. UD (User Data)

Berisi informasi data utama yang dibawa. Pesan “Poli Paru” yang dikodekan menjadi 7 bitdefaultalphabet (Septet ) harus di-encode-kan menjadi 8 bit (Octet ) untuk SMS-Transfer. Pada tabel 3.9 diatas, nilai UD-nya adalah “D0373B0D8286E575”. Tabel 3.16 di bawah ini menunjukkan cara pengkodean dengan menggunakan bantuan tabel defaultalphabet 7 bit (tabel 3.7). Pada tiap octet jika jumlah bit kurang dari 8, maka diambil bit paling kanan pada septet selanjutnya dan ditambahkan pada bagian kiri septet sebelumnya.


(53)

Tabel 3.16 User Data pada PDU Penerimaan Nilai

(hexa) Octet (8 bit) Septet (7 bit) Desimal Karakter

49 0100 1001 100 1001 73 I

B9 1011 1001 111 0010 114 r

39 0011 1001 110 0110 102 f

EC 1110 1100 110 0001 97 a

6 0000 0110 110 1110 110 n

C1 1100 0001 010 0000 32 (spasi)

70 0111 0000 011 0000 48 0

- - 011 1000 56 8

3.1.3 Analisis Lucas Lehmer Primality Test

Di dalam kriptografi, bilangan prima memiliki peranan yang sangat penting. Beberapa algoritma kriptografi, seperti RSA, menggantungkan kekuatannya pada sulitnya faktorisasi bilangan besar. Oleh karena itu, penggunaan bilangan prima yang besar menjadi sangat penting. Ada banyak cara untuk mengetahui suatu bilangan itu prima atau bukan, dan salah satu yang bisa digunakan adalah Lucas-Lehmer primality Test.

Lucas Lehmer Primality Test bekerja dengan memanfaatkan bilangan Mersenne. Rumus bilangan Mersenne yaitu:

Keterangan:

M = Bilangan Mersenne P = Bilangan Prima


(54)

Untuk memperoleh bilangan Mersenne (Mp) adalah bilangan prima, maka p yang dimasukkan juga haruslah sebuah bilangan prima dan p harus lebih besar sama dengan tiga. Akan tetapi Mp belum tentu bilangan prima meskipun p adalah bilangan prima. Bilangan Mersenne biasanya digunakan untuk mencari bilangan prima yang sangat besar.

Berikut ini merupakan langkah-langkah untuk mengetahui keprimaan suatu bilangan dengan Lucas-Lehmer primality test.

1. Masukkan bilangan Mersenne Mp = 2p – 1 dimana p ≥ 3

2. Hitung Sj = S2j-1 – 2 mod Mp dengan S1 = 4 untuk j = 2,3,…,n-1

3. Jika Sp-1 = 0 mod Mp maka dapat disimpulkan bahwa Mp bilangan prima dan jika Mp≠ 0 maka Mp adalah bilangan komposit.

Contoh 1 :

Kita cari bilangan Mersenne dengan memasukkan p = 3 Maka M3 = 23 – 1

= 8 – 1 = 7

Dengan S1 = 4 maka

S2 = S22-1 – 2 mod M3 = 42 – 2 mod 7 = 16 – 2 mod 7

= 14 mod 7 = 0

Kita dapat Sp-1 atau S3-1 atau S4 = 0 maka M3 = 7 adalah bilangan prima.

Contoh 2 :

Kita cari bilangan Mersenne dengan memasukkan p = 5 Maka M5 = 25 – 1


(55)

= 32 – 1 = 31 Dengan S1 = 4 maka

S2 = S22-1 – 2 mod M5 = 42 – 2 mod 31 = 16 – 2 mod 31

= 14 mod 31 = 14

S3 = S23-1 – 2 mod M5 = 142 – 2 mod 31 = 196 – 2 mod 31

= 194 mod 31 = 8

S4 = S24-1 – 2 mod M5 = 82 – 2 mod 31 = 64 – 2 mod 31

= 62 mod 31 = 0

Kita dapat Sp-1 atau S5-1 atau S4 = 0 maka M5 = 31 adalah bilangan prima.

Contoh 3 :

Kita cari bilangan Mersenne dengan memasukkan p = 11 Maka M11 = 211 – 1

= 2048 – 1 = 2047 Dengan S1 = 4 maka

S2 = S22-1 – 2 mod M11 = 42 – 2 mod 2047


(56)

= 16 – 2 mod 2047 = 14 mod 2047 = 14

S3 = S23-1 – 2 mod M11 = 142 – 2 mod 2047 = 196 – 2 mod 2047

= 194 mod 2047 = 194

S4 = S24-1 – 2 mod M11 = 1942 – 2 mod 2047 = 37676 – 2 mod 2047

= 37674 mod 2047 = 788

S5 = S25-1 – 2 mod M11 = 7882 – 2 mod 2047 = 620944 – 2 mod 2047

= 620942 mod 2047 = 701

S6 = S26-1 – 2 mod M11 = 7012 – 2 mod 2047 = 491401 – 2 mod 2047

= 491399 mod 2047 = 119

S7 = S27-1 – 2 mod M11 = 1192 – 2 mod 2047 = 14161 – 2 mod 2047

= 14159 mod 2047 = 1877


(57)

S8 = S28-1 – 2 mod M11 = 18772 – 2 mod 2047 = 3523129 – 2 mod 2047

= 3523127 mod 2047 = 240

S9 = S29-1 – 2 mod M11 = 2402 – 2 mod 2047 = 57600 – 2 mod 2047

= 57598 mod 2047 = 282

S10 = S210-1 – 2 mod M11 = 2822 – 2 mod 2047 = 79524 – 2 mod 2047

= 79522 mod 2047 = 1736

Kita dapat Sp-1 atau S11-1 atau S10 ≠ 0 maka M11 = 2047 adalah bukan bilangan prima (23 x 89 = 2047). Dan terbukti bahwa tidak semua Mp adalah bilangan prima meskipun p adalah bilangan prima.

Bilangan prima yang dimasukkan ke dalam algoritma RSA adalah bilangan prima yang dapat menghasilkan bilangan mersenne, sehingga tidak semua bilangan prima dapat dimasukkan atau dibangkitkan dalam aplikasi.

3.1.4 Analisis Algoritma RSA

Algoritma RSA merupakan algoritma pertama yang cocok unt Namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi dan menjadi salah satu yang paling maju dalam bidang kriptografi. Prinsip kerja algoritma RSA ini terletak pada sulitnya memfaktorkan bilangan yang besar


(58)

menjadi faktor-faktor prima. Pemfaktoran bertujuan untuk mendapatkan kunci privat. Jika bilangan tersebut tidak dapat difaktorkan, maka keamanan algoritma RSA tarsebut terjamin. Penjelasan metode RSA selengkapnya adalah sebagai berikut:

1. Pembangkitan Kunci RSA

a. Dapatkan 2 buah bilangan prima p dan q.

Bilangan prima p dan q ini harus dirahasiakan. Besar kecilnya bilangan prima ini menentukan tingkat keamanan data, semakin besar bilangan semakin banyak faktorialnya yang mengakibatkan semakin sulit data untuk dapat dipecahkan dalam waktu singkat. Pengujian suatu bilangan prima dilakukan dengan metode Lucas Lehmer Primality Test.

Misal, diperoleh nilai: p =31

q =7

b. Dapatkan nilai n, dimana n= p*q, dan n bersifat tidak rahasia n = 31 * 7 = 217

c. Dapatkan nilai Ф(n), dimana Ф(n)=( p-1)*(q-1), dan m bersifat rahasia Ф(n) = (31 - 1)*(7 - 1)

= 30 * 6 = 180

d. Pilih sebuah bilangan bulat kecil e yang coprime terhadap Ф(n), dimana e merupakan kunci publik untuk proses enkripsi dan e tidak rahasia.

e coprime terhadap Ф(n), maksudnya adalah bilangan terbesar yang dapat membagi e dan Ф(n) untuk menghasilkan nilai 1 (pembagi ini dinyatakan dengan gcd / greatest common divisor). Algoritma Euclid's digunakan untuk mencari gcd dua bilangan sebagai berikut:


(59)

function Euclid(a, b)

Input: Two integers a and b with a ≥ b ≥ 0 Output: gcd(a, b)

if b = 0: return a

return Euclid(b, a mod b) Sumber : Dasgupta, 2006

e = 2 => gcd(e, 180) = 2 (no) e = 3 => gcd(e, 180) = 3 (no) e = 4 => gcd(e, 180) = 4 (no) e = 5 => gcd(e, 180) = 5 (no) e = 6 => gcd(e, 180) = 6 (no) e = 7 => gcd(e, 180) = 1 (yes!)

e. Hitung kunci dekripsi, d, dengan kekongruenan e*d ≡1 (mod Ф(n))

Cari nilai d, dengan syarat (d*e)% Ф(n) ≡ 1 % Ф(n). Kita dapat menuliskan kembali pernyataan tersebut dengan d = (1+k* Ф(n))/e sehingga nilai-nilai k dapat diselesaikan sampai didapat sebuah nilai yang integer seperti berikut:

k = 0 => d = 1 / 7 = 0,14 (no) k = 1 => d = 181 / 7 = 25,86 (no) k = 2 => d = 361 / 7 = 51,57 (no) k = 3 => d = 481 /7 = 68,71 (no) k = 4 => d = 721 /7 = 103 (yes!)

Maka akan didapatkan: Kunci Publik

n = 217 e = 7

Kunci Rahasia n = 217


(1)

void showMain() {

display.setCurrent(compose); }

void showContactsList() {

contactlistform = new ContactListForm(this); contactlistform.LoadContacts();

display.setCurrent(contactlistform); }

void contactSelected(String telephoneNumber) { this.setPhoneNumber(telephoneNumber); showMain();

}

void setPhoneNumber(String phoneNumber) { toWhom.setString(phoneNumber); }

public void commandAction (Command command, Item item) { // write pre-action user code here

if(command==exit) {

}

if (command == add && item==TextField1) { showContactsList();

}

if (item == stringItem) { if (command == okCommand2) { // write pre-action user code here

switchDisplayable (null, getTulisPesan ()); // write post-action user code here

} } else if (item == stringItem1) {

if (command == okCommand1) { // write pre-action user code here

switchDisplayable (null, getMasukkanKunci ()); openRecStore("PesanKeluar");

KotakMasuk.deleteAll(); process("KotakMasuk",3);

KotakMasuk.append(pesanKotakMasuk); } } else if (item == stringItem2) {

if (command == okCommand9) {

switchDisplayable (null, getKotakKeluar ()); KotakKeluar.deleteAll();

openRecStore("PesanKeluar"); readRecordsOut();

closeRecStore();

} } else if (item == stringItem9) {

if (command == okCommand14) {

p = ambil_prima(); q = ambil_prima(); while (p==q){


(2)

q = ambil_prima(); }

//---mencari n---

n=p*q;

//---Totian(n_teta)--- n_teta = (p-1)*(q-1);

boolean fpb=false;

//---men-check apakah e coprime terhadap n_teta--- boolean coprime =false;

double u=0.0; e = 0.0;

while (coprime==false) { e = rand.nextInt(pow(10,3)); if (e<n_teta){

double result=euclid(e,n_teta); if (result==1) {

coprime=true; break;

} else

coprime=false; }

else

coprime=false; }

//---mencari nilai d---

boolean cek_d=false; d=0.0;

int k=0;

while (cek_d==false){ for (k=0;k<n_teta;k++){

double bil_bulat=1+(k*n_teta); if (bil_bulat%e==0){

d=bil_bulat/e; cek_d=true; break; }

else

cek_d=false; }

}

//---tampilan halaman kunci--- textField2.setString(Double.toString(p));

textField3.setString(Double.toString(q)); textField4.setString(Double.toString(n)); textField5.setString(Double.toString(n_teta)); textField6.setString(Double.toString(e)); textField7.setString(Double.toString(d)); textField8.setString(Integer.toString(k));

switchDisplayable (null, getHasilKunci ()); // write post-action user code here

} } // write post-action user code here


(3)

}

public void destroyApp(boolean unconditional) { done = true;

thread = null;

if (smsconn != null) { try {

smsconn.close();

} catch (IOException e) { }

notifyDestroyed(); }

notifyDestroyed(); }

public void openRecStore(String rec){ try{

rs = RecordStore.openRecordStore(rec, true ); }catch (Exception e){}

}

public void closeRecStore(){ try{

rs.closeRecordStore(); }catch (Exception e){} }

public void deleteRecStore(String rec){

if (RecordStore.listRecordStores() != null){ try{

RecordStore.deleteRecordStore(rec); }catch (Exception e){}

} }

public void writeRecord(String str){

byte[] rec = str.getBytes();int recId; // returned by addRecord but not used

ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream outputStream = new DataOutputStream(baos); try {

// Push the score into a byte array. outputStream.writeUTF(str);

// Then push the player name. //outputStream.writeUTF(str2); }

catch (IOException ioe) { System.out.println(ioe); ioe.printStackTrace(); }

// Extract the byte array byte[] b = baos.toByteArray();

// Add it to the record store try {

recId = rs.addRecord(b, 0, b.length); }

catch (RecordStoreException rse) { System.out.println(rse); rse.printStackTrace(); }


(4)

}

public void readRecords(){ try{

byte[] recData = new byte[5]; int len;

for(int i = 1; i <= rs.getNumRecords(); i++){ if(rs.getRecordSize(i) > recData.length){ recData = new byte[rs.getRecordSize(i)]; }

len = rs.getRecord(i, recData, 0);

System.out.println("---");

System.out.println("Record " + i + " : " + new String(recData, 0, len).substring(2));

System.out.println("---"); }

}catch (Exception e){} }

public void readRecordsOut(){ try{

byte[] recData = new byte[5]; int len;

String var; int i=1;

while(i<=rs.getNumRecords()) {

if(rs.getRecordSize(i) > recData.length){ recData = new byte[rs.getRecordSize(i)]; }

System.out.println("---"); len = rs.getRecord(i, recData, 0);

System.out.println(len);

System.out.println(new String(recData,0,len));

pesanNo = new StringItem("No. Pengirim : ",new String(recData,0,len).substring(2));

i+=1;

if(rs.getRecordSize(i) > recData.length){ recData = new byte[rs.getRecordSize(i)]; }

System.out.println("---"); len = rs.getRecord(i, recData, 0);

System.out.println(len);

System.out.println(new String(recData,0,len));

pesanOut = new StringItem("Pesan : ",new String(recData,0,len).substring(2));

KotakKeluar.append(pesanNo); KotakKeluar.append(pesanOut);

KotakKeluar.append(new Spacer(1, 16)); i++;

}

}catch (Exception e){} }

public void process(String rec,int i){ try{

byte[] recData = new byte[5]; int len;

String var;

if(rs.getRecordSize(i) > recData.length){ recData = new byte[rs.getRecordSize(i)]; }


(5)

System.out.println("---"); len = rs.getRecord(i, recData, 0);

System.out.println(len);

System.out.println(new String(recData,0,len));

pesanKotakMasuk = new StringItem(" ",new String(recData,0,len).substring(2));

}catch (Exception e){} }

public void showMessage(String message, Displayable displayable) { Alert alert = new Alert("");

alert.setTitle("Error"); alert.setString(message); alert.setType(AlertType.ERROR); alert.setTimeout(5000);

display.setCurrent(alert); }

public void notifyIncomingMessage(MessageConnection conn) { if (thread == null) {

content.setString("Waiting for Authentication Request"); display.setCurrent(content);

done = false;

thread = new Thread(this); thread.start();

} }

public void run() {

try {

System.out.println("Pengirim"); msg = smsconn.receive();

System.out.println("Pengirim"); if (msg != null) {

System.out.println("a");

senderAddress = msg.getAddress(); int k, j = 0;

for (k = 0; k <= senderAddress.length() - 1; k++) { if (senderAddress.charAt(k) == ':') {

j++;

if (j == 2) { break; }

} }

senderAddress = senderAddress.substring(0, k + 1); content.setString(senderAddress);

senderAddress = senderAddress + smsPort;

if (msg instanceof TextMessage) {

mess = ((TextMessage) msg).getPayloadText(); }

else {

StringBuffer buf = new StringBuffer();

byte[] data = ((BinaryMessage) msg).getPayloadData();

for (int i = 0; i < data.length; i++) { int intData = (int) data[i] & 0xFF; if (intData < 0x10) {

buf.append("0"); }

buf.append(Integer.toHexString(intData)); buf.append(' ');


(6)

}

mess = buf.toString(); }

if (mess.equals("Give me Rights")) { try {

clientConn = (MessageConnection) Connector.open(senderAddress);

}catch (Exception e) {

alert = new Alert("Alert");

alert.setString("Unable to connect to Station because of network problem");

alert.setTimeout(2000); display.setCurrent(alert); }

try {

TextMessage textmessage = (TextMessage) clientConn.newMessage(MessageConnection.TEXT_MESSAGE);

//textmessage.setAddress(senderAddress);

textmessage.setAddress("sms://:"+smsPort);

textmessage.setPayloadText("Approoved"); clientConn.send(textmessage);

} catch (Exception e) {

Alert alert = new Alert("", "", null, AlertType.INFO);

alert.setTimeout(Alert.FOREVER); alert.setString(e.toString()); display.setCurrent(alert); }

} } else { }

} catch (IOException e) {

content.setString(e.toString()); display.setCurrent(content); }

}