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 M
p
= 2
p
– 1. Rumus ini ditemukan oleh Marin Mersenne seorang berkebangsaan Perancis yang hidup antara tahun 1588-1648.
Untuk memperoleh bilangan Mersenne M
p
adalah prima, maka p juga haruslah sebuah bilangan prima. Akan tetapi M
p
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 M
p
= 2
p
– 1 dimana p ≥ 3
2. Hitung S
j
= S
2 j-1
– 2 mod M
p
dengan S
1
= 4 untuk j = 2,3,…,n-1 3. Jika S
p-1
= 0 mod M
p
maka dapat disimpulkan bahwa M
p
bilangan prima dan jika M
p
≠ 0 maka M
p
adalah bilangan komposit.
Universitas Sumatera Utara
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
Universitas Sumatera Utara
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 Encoding PDU
Plainteks SMS
Enkripsi RSA
Cipherteks
Encoding Format PDU
Cipherteks dalam format PDU
Universitas Sumatera Utara
Gambar 3.2 Skema Global Proses Decoding PDU 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-bit biner.
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
Plainteks SMS
Universitas Sumatera Utara
3.1.2.1 PDU 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
Irfanspasi08
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”.
Universitas Sumatera Utara
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
Nama RP UDHI SRI VPF VPF RD MTI MTI
Nilai 1
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.
Universitas Sumatera Utara
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 : Format enhanced 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 Service Center 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.
Universitas Sumatera Utara
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.
Universitas Sumatera Utara
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 VP-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.
Universitas Sumatera Utara
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 default alphabet 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
48 011 0000
0111 0000 70
8 56
011 1000 -
-
3.1.2.2 PDU 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:
Universitas Sumatera Utara
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 Irfanspasi08
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 Service Center 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 05 00 00 F0
Universitas Sumatera Utara
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 Digabung menjadi : 07912658050000F0
Universitas Sumatera Utara
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
Nama RP UDHI SRI none none MMS MTI MTI
Nilai 1
Keterangan : a RP Replay Path, alur yang menunjukkan bahwa ada alur jawaban.
Universitas Sumatera Utara
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 265896356165F5
Universitas Sumatera Utara
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 equipment-
specific
Universitas Sumatera Utara
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. 1528 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 bit default alphabet 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 default alphabet 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.
Universitas Sumatera Utara
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
- -
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 M
p
= 2
p
- 1
Universitas Sumatera Utara
Untuk memperoleh bilangan Mersenne M
p
adalah bilangan prima, maka p yang dimasukkan juga haruslah sebuah bilangan prima dan p harus lebih besar sama
dengan tiga. Akan tetapi M
p
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 M
p
= 2
p
– 1 dimana p ≥ 3
2. Hitung S
j
= S
2 j-1
– 2 mod M
p
dengan S
1
= 4 untuk j = 2,3,…,n-1 3. Jika S
p-1
= 0 mod M
p
maka dapat disimpulkan bahwa M
p
bilangan prima dan jika M
p
≠ 0 maka M
p
adalah bilangan komposit. Contoh 1 :
Kita cari bilangan Mersenne dengan memasukkan p = 3 Maka M
3
= 2
3
– 1 = 8 – 1
= 7
Dengan S
1
= 4 maka
S
2
= S
2 2-1
– 2 mod M
3
= 4
2
– 2 mod 7 = 16 – 2 mod 7
= 14 mod 7 = 0
Kita dapat S
p-1
atau S
3-1
atau S
4
= 0 maka M
3
= 7 adalah bilangan prima.
Contoh 2 :
Kita cari bilangan Mersenne dengan memasukkan p = 5 Maka M
5
= 2
5
– 1
Universitas Sumatera Utara
= 32 – 1 = 31
Dengan S
1
= 4 maka
S
2
= S
2 2-1
– 2 mod M
5
= 4
2
– 2 mod 31 = 16 – 2 mod 31
= 14 mod 31 = 14
S
3
= S
2 3-1
– 2 mod M
5
= 14
2
– 2 mod 31 = 196 – 2 mod 31
= 194 mod 31 = 8
S
4
= S
2 4-1
– 2 mod M
5
= 8
2
– 2 mod 31 = 64 – 2 mod 31
= 62 mod 31 = 0
Kita dapat S
p-1
atau S
5-1
atau S
4
= 0 maka M
5
= 31 adalah bilangan prima.
Contoh 3 :
Kita cari bilangan Mersenne dengan memasukkan p = 11 Maka M
11
= 2
11
– 1 = 2048 – 1
= 2047 Dengan S
1
= 4 maka
S
2
= S
2 2-1
– 2 mod M
11
= 4
2
– 2 mod 2047
Universitas Sumatera Utara
= 16 – 2 mod 2047 = 14 mod 2047
= 14
S
3
= S
2 3-1
– 2 mod M
11
= 14
2
– 2 mod 2047 = 196 – 2 mod 2047
= 194 mod 2047 = 194
S
4
= S
2 4-1
– 2 mod M
11
= 194
2
– 2 mod 2047 = 37676 – 2 mod 2047
= 37674 mod 2047 = 788
S
5
= S
2 5-1
– 2 mod M
11
= 788
2
– 2 mod 2047 = 620944 – 2 mod 2047
= 620942 mod 2047 = 701
S
6
= S
2 6-1
– 2 mod M
11
= 701
2
– 2 mod 2047 = 491401 – 2 mod 2047
= 491399 mod 2047 = 119
S
7
= S
2 7-1
– 2 mod M
11
= 119
2
– 2 mod 2047 = 14161 – 2 mod 2047
= 14159 mod 2047 = 1877
Universitas Sumatera Utara
S
8
= S
2 8-1
– 2 mod M
11
= 1877
2
– 2 mod 2047 = 3523129 – 2 mod 2047
= 3523127 mod 2047 = 240
S
9
= S
2 9-1
– 2 mod M
11
= 240
2
– 2 mod 2047 = 57600 – 2 mod 2047
= 57598 mod 2047 = 282
S
10
= S
2 10-1
– 2 mod M
11
= 282
2
– 2 mod 2047 = 79524 – 2 mod 2047
= 79522 mod 2047 = 1736
Kita dapat S
p-1
atau S
11-1
atau S
10
≠ 0 maka M
11
= 2047 adalah bukan bilangan
prima 23 x 89 = 2047. Dan terbukti bahwa tidak semua M
p
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 untuk digital signature. 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
Universitas Sumatera Utara
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= pq, dan n bersifat tidak rahasia n = 31 7 = 217
c. Dapatkan nilai Фn, dimana Фn= p-1q-1, dan m bersifat rahasia
Фn = 31 - 17 - 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 Euclids digunakan untuk mencari gcd dua bilangan sebagai berikut:
Universitas Sumatera Utara
function Euclida, b Input: Two integers a and b with a
≥ b ≥ 0 Output: gcda, b
if b = 0: return a return Euclidb, a mod b
Sumber : Dasgupta, 2006
e = 2 = gcde, 180 = 2 no e = 3 = gcde, 180 = 3 no
e = 4 = gcde, 180 = 4 no e = 5 = gcde, 180 = 5 no
e = 6 = gcde, 180 = 6 no e = 7 = gcde, 180 = 1 yes
e. Hitung kunci dekripsi, d, dengan kekongruenan ed ≡1 mod Фn
Cari nilai d, dengan syarat de Фn ≡ 1 Фn. Kita dapat menuliskan
kembali pernyataan tersebut dengan d = 1+k Фne 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 d = 103
Universitas Sumatera Utara
2. Enkripsi
a. Ambil kunci publik penerima pesan, e, dan n. Kemudian masukkan pesan yang ingin dienkripsi plaintext.
Contoh: Plaintext: Irfan 08
Kode ASCII dalam desimal: I = 73
r = 114 f = 102
a = 97 n = 110
spasi = 32 0 = 48
8 = 56
Agar nantinya lebih mudah dalam proses dekripsi, yaitu dalam memisahkan kode ASCII desimal kedalam untuk mengembalikan kedalam
Digabungkan menjadi : m = 7311410297110324856
b. Plaintext dinyatakan dengan blok-blok m1, m2, …, m
i
sedemikian sehingga setiap blok merepresentasikan nilai di dalam selang [0, n-1].
Kode ASCII dalam desimal dari plaintext di atas dipecah menjadi blok-blok m. Nilai-nilai m haruslah masih dalam selang [0, 133-1]. Misalkan dibagi menjadi
2 angka dalam 1 blok. Maka blok-blok yang terbentuk adalah :
m1=73 m4=02
m7=03 m10=06
m2=11 m5=97
m8=24 m3=41
m6=11 m9=85
c. Setiap blok m
i
dienkripsi menjadi blok c
i
dengan rumus c
i
= m
i e
mod n.
Bila nilai dari m
i e
terlalu besar sehingga tidak memungkinkan untuk ditampung kedalam sebuah variabel integer dan akan memperlambat proses
perhitungan, maka digunakanlah fungsi modular eksponensiasi, yaitu:
Universitas Sumatera Utara
function modexpx, y,N Input: Two n-bit integers x and N, an integer exponent y
Output: x
y
mod N if y = 0: return 1
z = modexpx, y2 , N if y is even:
return z
2
mod N else:
return x z
2
mod N Sumber : Dasgupta, 2006
Dengan kunci publik e = 7 dan n = 217, maka blok-blok m diatas dapat dienkripsi menjadi blok-blok c sebagai berikut:
Tabel 3.17 Blok-Blok m
i
Dienkripsi Menjadi Blok-Blok c
i
i m
i
e n
c
i =
m
i e
mod n
1 73
7 217
199 2
11 7
217 137
3 41
7 217
20 4
02 7
217 128
5 97
7 217
202 6
11 7
217 137
7 03
7 217
17 8
24 7
217 03
9 85
7 217
29 10
06 7
217 06
Jadi ciphertext yang dihasilkan adalah : 199 137 20 128 202 137 17 03 29 06
Universitas Sumatera Utara
3. Dekripsi Setiap blok ciphertext c
i
didekripsikan kembali menjadi blok m
i
dengan rumus: m
i
= c
i d
mod n
Dengan kunci privat, d = 103 dan n =217, maka dapat dilakukan proses dekripsi sebagai berikut:
Tabel 3.18 Blok-Blok c
i
Didekripsi Menjadi Blok-Blok m
i
i c
i
d n
m
i
= c
i d
mod n
1 199
103 217
73 2
137 103
217 11
3 20
103 217
41 4
128 103
217 02
5 202
103 217
97 6
137 103
217 11
7 17
103 217
03 8
03 103
217 24
9 29
103 217
85 10
06 103
217 06
Maka dihasilkan kembali: m = 73114102971103248506
Dengan melakukan langkah di atas, dapat dilihat bahwa pesandata telah sama dengan data asli sebelum enkripsi yaitu bila diubah ke dalam karakter ASCII dapat
dibaca sebagai berikut: Plaintext = Irfan 08
Universitas Sumatera Utara
3.2 Perancangan Sistem