Anda di halaman 1dari 50

TINJAUAN MENGENAI APLIKASI METODE

MONTGOMERY MULTIFLICATION-CHINESE REMAINDER


THEOREM (CRT) DALAM
MEMPERCEPAT DESKRIPSI RSA

tugas mata kuliah Keamanan Jaringan Informasi

Djoko Nursanto
23202123

BIDANG KHUSUS TEKNOLOGI INFORMASI

PROGRAM PASCA SARJANA


DEPARTEMEN TEKNIK ELEKTRO

INSTITUT TEKNOLOGI BANDUNG


2003

DAFTAR ISI

1. Gambaran Umum
1.1 Urgensi Sistem Keamanan .............................................................................

1.2 Hacker, cracker dan motif ..............................................................................

1.3 Jenis serangan sekuriti ...................................................................................

2. Kriptografi
2.1 Pengertian Dasar ...........................................................................................

2.2 Cryptographic system (cryptosystem) ............................................................

2.3 Cryptographic Protokol ...................................................................................

2.4 Penyerangan terhadap protokol .....................................................................

2.5 Berbagai macam basic cryptanalytic attacks .................................................

2.6 Secure Socket Layer .......................................................................................

3. Algoritma Enskripsi RSA ..................................................................................... 11


3.1 Contoh Permasalahan .................................................................................... 11
3.2 Algoritma RSA ..............................................................................................

12

3.3 Implementasi RSA Menggunakan Java ........................................................

15

3.4 Digital Signature ............................................................................................

16

3.5 Sertifikat ........................................................................................................

17

4. Algoritma Montgomery
4.1 Pendahuluan .................................................................................................

17

4.2 Perkalian Montgomery ...................................................................................

18

4.3 Eksponensiasi Basis Montgomery ........................................................................

19

4.4 Analisis Kecepatan .........................................................................................

21

4.5 Pertimbangan Keamanan ............................................................................... 22


5. Chinese Remainder Theorem ............................................................................... 23
6. Contoh Implementasi Teorema Chinese Remainder (CRT) dan
Montgomery Multiplicattion untuk mempercepat deskripsi RSA ..........................
Daftar Pustaka

27

TINJAUAN MENGENAI APLIKASI METODE


MONTGOMERY MULTIFLICATION-CHINESE REMAINDER
THEOREM (CRT) DALAM
MEMPERCEPAT DESKRIPSI RSA

1. Gambaran Umum
1.1 Urgensi Sistem Keamanan
Dalam dunia komunikasi data global yang selalu berubah, hubungan Internet yang
murah, dan cepatnya perkembangan software, keamanan menjadi isu yang semakin
penting. Keamanan saat ini menjadi suatu kebutuhan dasar karena komputasi global
tidak aman. Sebagai contoh, dengan berpindahnya data anda dari titik A ke titik B di
Internet, ia akan melalui beberapa titik lain selama perjalanan, membuka kesempatan
bagi pihak lain untuk memotong data,merubah data bahakan merubah tujuan data .
Beberapa fakta yang membuat sistem keamanan data menjadi penting adalah :
a.

tidak ada sistem komputer yang dapat diamankan secara


total, yang dapat dilakukan adalah membuat kesulitan bagi orang lain untuk
mengganggu sistem komputer kita.

b.

semakin aman sistem kita semakin intrusif keamanan yang


diperlukan. Perlu ditentukan tindakan yang membuat sistem masih dapat
digunakan dan aman untuk digunakan. Jika mempunyai site yang berukuran
besar hingga menengah, diperlu menetapkan suatu Kebijakan Keamanan
(Security Policy) yang berisikan tingkat keamanan yang dibutuhkan oleh site
dan auditing apa yang digunakan untuk memeriksanya. Contoh kebijakan
keamanan model ini dapat dilihat di http://ds.internic.net/rfc/rfc2196.txt.

c.

setiap individu mempunyai privasi yang berbeda. Sebelum


mengamankan suatu sistem, perlu ditentukan tingkat ancaman yang di
hadapi, risiko apa yang perlu atau tidak perlu diambil, dan seberapa rentan
sistem terhadap gangguan.

1.2 Hacker, cracker dan motif


Cracker merupakan individu maupun kelompok orang yang memanfaatkan hasil
penemuan penyusupan terhadap komputer lain untuk melakukan eksploitasi dan
mengambil manfaat dari hasilnya. Seorang cracker dapat melakukan exploitasi di
mana saja dan kapan saja, tanpa harus mempunyai pengetahuan khusus. Cracker

jenis ini dikenal sebagai ``script kiddies''. Motivasi para cracker sangat beragam,
diantaranya adalah untuk propaganda ( deface web site / email ), kriminal murni,
penyerangan destruktif (akibat dendam atau ketidaksukaan terhadap suatu insitusi),
dan lain-lain. Apapun motif dari cracker selalu ada pihak yang dirugikan akibat
tindakannya.
Berbeda dengan Cracker, Hacker adalah entitas yang menemukan kelemahan
(vunerability) sistem dalam konteks security incidents. Seorang hacker bisa menjadi
seorang cracker, tetapi seorang cracker belum tentu menguasai kemampuan yang
dipunyai seorang hacker.
Motivasi para hacker untuk menemukan vunerability adalah untuk membuktikan
kemampuannya atau sebagai bagian dari kontrol sosial terhadap sistem.
Pada prakteknya suatu pembentukan sistem yang aman akan mencoba melindungi
adanya beberapa kemungkinan serangan yang dapat dilakukan pihak lain terhadap
kita antara lain :

Intrusion. Pada penyerangan ini seorang penyerang akan dapat menggunakan


sistem komputer yang kita miliki. Sebagian penyerang jenis ini menginginkan
akses sebagaimana halnya pengguna yang memiliki hak untuk mengakses
sistem.

Denial of services. Penyerangan jenis ini mengakibatkan pengguna yang sah


tak dapat mengakses sistem. Sebagai contoh adalah Distributed Denial of
Services (DDOS) yang mengakibatkan beberapa situs Internet tak bisa diakses.
Seringkali orang melupakan jenis serangan ini dan hanya berkonsentrasi pada
intrusion saja.

Joyrider. Pada serangan ini disebabkan oleh orang yang merasa iseng dan ingin
memperoleh kesenangan dengan cara menyerang suatu sistem. Mereka masuk
ke sistem karena beranggapan bahwa mungkin data yang di dalamnya menarik.
Rata-rata mereka karena rasa ingin tahu, tapi ada juga yang menyebabkan
kerusakan atau kehilangan data.

Vandal. Jenis serangan ini bertujuan untuk merusak sistem. Seringkali ditujukan
untuk site-site besar.

Scorekeeper. jenis serangan in hanyalah bertujuan untuk mendapatkan reputasi


dengan cara mengcrack sistem sebanyak mungkin. Sebagian besar dari mereka

tertarik pada situs-situs tertentu saja. Sebagian dari mereka tak begitu peduli
dengan data yang ada di dalamnya. Saat ini jenis ini lebih dikenal dengan istilah
script kiddies

Mata-mata. Jenis serangan ini bertujuan untuk memperoleh data atau informasi
rahasia dari pihak kompetitor. Saat ini semakin banyak perusahaan yang
memanfaatkan jasa ini.
Terdapat beberapa macam mata-mata, yaitu :
o

The Curious (Si Ingin Tahu) - tipe penyusup ini pada dasarnya tertarik
menemukan jenis sistem dan data yang anda miliki.

The Malicious (Si Perusak) - tipe penyusup ini berusaha untuk merusak
sistem, atau merubah web page anda, atau sebaliknya membuat waktu
dan uang anda kembali pulih.

The High-Profile Intruder (Si Profil Tinggi) - tipe penyusup ini berusaha
menggunakan sistem untuk memperoleh popularitas dan ketenaran. Dia
mungkin menggunakan sistem profil tinggi anda untuk mengiklankan
kemampuannya.

The Competition (Si Pesaing) - tipe penyusup ini tertarik pada data
dalam sistem.

1.3 Jenis serangan sekuriti


Serangan pada suatu sistem jaringan komputer sendiri pada dasarnya memiliki 3
gelombang trend utama yaitu (Schneier, 2000)

Gelombang pertama adalah serangan fisik


Serangan ini ditujukan kepada fasilitas jaringan, perangkat elektronis dan
komputer. Sebagai pertahanan terhadap serangan jenis ini biasanya digunakan
sistem backup ataupun sistem komputer yang terdistribusi, sehingga mencegah
kesalahan di satu titik mengakibatkan seluruh sistem menjadi tak bekerja. Cara
pemecahan terhadap serangan ini telah diketahui dengan baik. Jaringan Internet
sendiri didisain untuk mengatasi permasalahan seperti ini.

Gelombang pertama adalah serangan sintatik


Serangan ini ditujukan terhadap keringkihan (vulnerability ) pada perangkat
lunak, celah yang ada pada algoritma kriptografi atau protokol. Serangan Denial
of Services (DoS) juga tergolong pada serangan jenis ini. Serangan jenis inilah
yang saat ini paling populer. Tetapi relatif cara penanganannya telah diketahui
dan biasanya pihak administrator atau pengguna yang lalai menerapkannya.

Gelombang pertama adalah serangan semantik


Serangan jenis ini memanfaatkan arti dari isi pesan yang dikirim. Dengan kata
lain adalah menyebarkan disinformasi melalui jaringan, atau menyebarkan
informasi tertentu yang mengakibatkan timbulnya suatu kejadian. Pada dasarnya
banyak pengguna cenderung percaya apa yang mereka baca. Seringkali
keluguan mempercayai berita ini disalah-gunakan pihak tertentu untuk
menyebarkan issue-issue yang menyesatkan.

2. Kriptografi
2.1 Pengertian Dasar
Suatu pesan yang tidak disandikan disebut sebagai plaintext ataupun dapat disebut
juga sebagai cleartext. Proses yang dilakukan untuk mengubah plaintext ke dalam
ciphertext

disebut encryption atau encipherment. Sedangkan proses untuk

mengubah ciphertext kembali ke plaintext disebut decryption atau decipherment.


Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan dilakukan
oleh cryptographer. Sedang, cryptanalysis adalah suatu ilmu dan seni membuka
(breaking) ciphertext dan orang yang melakukannya disebut cryptanalyst.
Cryptographic

system

atau

cryptosystem

adalah

suatu

fasilitas

untuk

mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini,


seperangkat parameter yang menentukan transformasi pencipheran tertentu disebut
suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci
kriptografi. Secara umum, kunci-kunci yang digunakan untuk proses pengenkripsian
dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan.
Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis
sebagai berikut :

EK(M)=C (Proses Enkripsi)


DK(C)=M (Proses Dekripsi)
Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K lalu
dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan
dengan menggunakan kunci K sehingga dihasilkan pesan M yang sama seperti
pesan sebelumnya.
Keamanan suatu pesan tergantung pada kunci ataupun kunci-kunci yang digunakan,
dan tidak tergantung pada algoritma yang digunakan. Sehingga algoritma-algoritma
yang digunakan tersebut dapat dipublikasikan dan dianalisis, serta produk-produk
yang menggunakan algoritma tersebut dapat diproduksi massal. Tidak menjadi
masalah apabila seseorang mengetahui algoritma yang digunakan. Selama ia tidak
mengetahui kunci yang dipakai, ia tetap tidak dapat membaca pesan.
2.2 Cryptographic system (cryptosystem)
Suatu cryptosystem terdiri dari sebuah algoritma, seluruh kemungkinan plaintext,
ciphertext dan kunci-kunci. Secara umum cryptosystem dapat digolongkan menjadi
dua buah, yaitu :
1. Symmetric Cryptosystem
Dalam symmetric cryptosystem ini, kunci yang digunakan untuk proses enkripsi dan
dekripsi pada prinsipnya identik, tetapi satu buah kunci dapat pula diturunkan dari
kunci yang lainnya. Kunci-kunci ini harus dirahasiakan. Oleh karena itulah sistem ini
sering disebut sebagai secret-key ciphersystem. Jumlah kunci yang dibutuhkan
umumnya adalah :
n

C2 =n.(n-1)
2

dengan n menyatakan banyaknya pengguna. Contoh dari sistem ini adalah Data
Encryption Standard (DES), Blowfish, IDEA.
2. Assymmetric Cryptosystem
Dalam assymmetric cryptosystem ini digunakan dua buah kunci. Satu kunci yang
disebut kunci publik (public key) dapat dipublikasikan, sedang kunci yang lain yang
disebut kunci privat (private key) harus dirahasiakan. Proses menggunakan sistem ini
dapat diterangkan secara sederhana sebagai berikut : bila A ingin mengirimkan
pesan kepada B, A dapat menyandikan pesannya dengan menggunakan kunci publik

B, dan bila B ingin membaca surat tersebut, ia perlu mendekripsikan surat itu dengan
kunci privatnya. Dengan demikian kedua belah pihak dapat menjamin asal surat
serta keaslian surat tersebut, karena adanya mekanisme ini. Contoh sistem ini antara
lain RSA Scheme dan Merkle-Hellman Scheme.
Setiap cryptosytem yang baik harus memiliki karakteristik sebagai berikut :

Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada kerahasiaan
algoritma yang digunakan.

Cryptosystem yang baik memiliki ruang kunci (keyspace) yang besar.

Cryptosystem yang baik akan menghasilkan ciphertext yang terlihat acak dalam
seluruh tes statistik yang dilakukan terhadapnya.

Cryptosystem yang baik mampu menahan seluruh serangan yang telah dikenal
sebelumnya

2.3 Cryptographic Protokol


Suatu protokol adalah serangkaian langkah yang melibatkan dua pihak atau lebih
dan dirancang untuk menyelesaikan suatu tugas. Dari definisi ini dapat diambil
beberapa arti sebagai berikut :

protokol memiliki urutan dari awal hingga akhir;

setiap langkah harus dilaksanakan secara bergiliran;

suatu langkah tidak dapat dikerjakan bila langkah sebelumnya belum selesai;

diperlukan dua pihak atau lebih untuk melaksanakan protokol;

protokol harus mencapai suatu hasil;

Selain itu, suatu protokol pun memiliki karakteristik yang lain, yaitu :

setiap orang yang terlibat dalam protokol harus mengetahui terlebih dahulu
mengenai protokol dan seluruh langkah yang akan dilaksanakan;

setiap orang yang terlibat dalam protokol harus menyetujui untuk mengikutinya;

protokol tidak boleh menimbulkan kerancuan;

protokol harus lengkap;

Cryptographic protocol adalah suatu protokol yang menggunakan kriptografi. Protokol


ini melibatkan sejumlah algoritma kriptografi. Penggunaan kriptografi dalam sebuah
protokol terutama ditujukan untuk mencegah atau pun mendeteksi adanya
eavesdropping dan cheating.
Fungsi Protokol
Komputer memerlukan suatu protokol formal agar dapat melakukan hal yang biasa
dilakukan manusia tanpa berpikir. Protokol digunakan untuk mengabtraksikan proses
penyelesaian suatu tugas dari mekanisme yang digunakan. Protokol komunikasi
adalah sama meskipun diimplementasikan pada PC atau VAX.
2.4 Penyerangan terhadap protokol
Penyerangan cryptographic dapat ditujukan pada beberapa hal berikut :

algoritma cryptographic yang digunakan dalam protokol;

teknik cryptographic yang digunakan untuk mengimplementasikan algoritma dan


protokol;

protokol itu sendiri;

Seseorang dapat mencoba berbagai cara untuk menyerang suatu protokol. Mereka
yang tidak terlibat dalam protokol dapat menyadap sebagian atau seluruh protokol.
Tindakan ini disebut penyerangan pasif, karena si penyerang tidak mempengaruhi
atau mengubah protokol, ia hanya mengamati protokol dan berusaha untuk
memperoleh informasi.
Selain itu, seorang penyerang dapat berusaha untuk mengubah protokol demi
keuntungannya sendiri. Ia dapat mengirimkan pesan dalam protokol, menghapus
pesan, atau bahkan mengubah informasi yang ada di dalam suatu komputer.
Tindakan-tindakan ini disebut sebagai penyerangan aktif, karena ia membutuhkan
suatu campur tangan aktif.
Seorang penyerang tidaklah hanya berasal dari lingkungan luar protokol, namun ia
mungkin juga berasal dari dalam protokol itu sendiri, ia dapat merupakan salah satu
pihak yang terlibat dalam protokol. Tipe penyerang semacam ini disebut sebagai
cheater. Passive cheater mengikuti protokol, tetapi berusaha memperoleh informasi

lebih banyak daripada yang diperbolehkan protokol bagi dirinya. Active cheater
mengubah protokol dalam usahanya untuk berbuat hal yang bersifat ilegal/curang.
Usaha untuk menjaga keamanan protokol akan semakin sulit apabila pihak-pihak
yang terlibat umumnya merupakan active cheater, oleh karena itu suatu protokol
yang baik harus mampu atau pun harus aman terhadap kemungkinan passive
cheating.
2.5 Berbagai macam basic cryptanalytic attacks
Tujuan cryptanalytic attack adalah untuk mengetahui beberapa plaintext yang sesuai
dengan ciphertext yang ada dan berusaha menentukan kunci yang memetakan satu
dengan yang lainnya. Plaintext ini dapat diketahui karena ia merupakan standar atau
karena pendugaan. Jika suatu teks diduga berada di dalam suatu pesan, posisinya
mungkin tidak diketahui, tetapi suatu pesan lazimnya cukup pendek sehingga
memungkinkan cryptanalyst menduga plaintext yang diketahui dalam setiap posisi
yang mungkin dan melakukan penyerangan pada setiap kasus secara paralel.
Suatu algoritma enkripsi yang kuat tidak hanya mampu bertahan terhadap serangan
plaintext yang dikenal tetapi juga mampu bertahan terhadap adaptive chosen
plaintext. Dalam penyerangan ini, cryptanalyst berkesempatan memilih plaintext yang
digunakan dan dapat melakukannya secara berulang kali, memilih plaintext untuk
tahap N+1 setelah menganalisis hasil tahap N.
Yang dimaksud cryptanalytic attacks adalah usaha-usaha yang dilakukan seseorang
untuk memperoleh informasi ataupun data yang telah dienkripsi. Secara ringkas
terdapat tujuh macam basic cryptanalytic attacks berdasarkan tingkat kesulitannya
bagi penyerang, dimulai dari yang paling sulit adalah :

Ciphertext-only attack. Dalam penyerangan ini, seorang cryptanalyst memiliki


ciphertext dari sejumlah pesan yang seluruhnya telah dienkripsi menggunakan
algoritma yang sama.

Known-plaintext attack. Dalam tipe penyerangan ini, cryptanalyst memiliki akses


tidak hanya ke ciphertext sejumlah pesan, namun ia juga memiliki plaintext
pesan-pesan tersebut.

Chosen-plaintext attack. Pada penyerangan ini, cryptanalyst tidak hanya memiliki


akses atas ciphertext dan plaintext untuk beberapa pesan, tetapi ia juga dapat
memilih plaintext yang dienkripsi.

Adaptive-chosen-plaintext attack. Penyerangan tipe ini merupakan suatu kasus


khusus chosen-plaintext attack. Cryptanalyst tidak hanya dapat memilih plaintext
yang dienkripsi, ia pun memiliki kemampuan untuk memodifikasi pilihan
berdasarkan

hasil

enkripsi

sebelumnya.

Dalam

chosen-plaintext

attack,

cryptanalyst mungkin hanya dapat memiliki plaintext dalam suatu blok besar
untuk dienkripsi; dalam adaptive-chosen-plaintext attack ini ia dapat memilih blok
plaintext yang lebih kecil dan kemudian memilih yang lain berdasarkan hasil yang
pertama, proses ini dapat dilakukannya terus menerus hingga ia dapat
memperoleh seluruh informasi.

Chosen-ciphertext attack. Pada tipe ini, cryptanalyst dapat memilih ciphertext


yang berbeda untuk didekripsi dan memiliki akses atas plaintext yang didekripsi.

Chosen-key

attack.

Cryptanalyst

pada

tipe

penyerangan

ini

memiliki

pengetahuan tentang hubungan antara kunci-kunci yang berbeda.

Rubber-hose cryptanalysis. Pada tipe penyerangan ini, cryptanalyst mengancam,


memeras, atau bahkan memaksa seseorang hingga mereka memberikan
kuncinya.

2.6 Secure Socket Layer


SSL adalah suatu protokol komunikasi pada Internet yang menyediakan fasilitas
keamanan seperti kerahasiaan, keutuhan dan keabsahan. Protokol ini bebas
dipergunakan siapa saja, bahkan didukung oleh dua browser utama, yaitu Netscape
Navigator dan Microsoft Internet Explorer. SSL juga tidak mengkhususkan diri untuk
hanya mendukung protokol tertentu seperti HTTP misalnya -- karena SSL
menggunakan port 443 untuk berhubungan dengan pelayan internet yang juga
memiliki fasilitas SSL. Lapisan aplikasi diatasnya dapat memanfaatkan kunci yang
telah dinegosiasikan oleh SSL. Dengan memanfaatkan SSL, aplikasi internet dapat
melakukan komunikasi yang aman melalui fasilitas yang disediakan oleh SSL, yaitu :
1. Kerahasiaan pesan, sehingga tidak bisa dibaca oleh pihak yang tidak diinginkan
2. Keutuhan pesan, sehingga tidak bisa diubah-ubah di tengah jalan
3. Keabsahan, sehingga meyakinkan pihak-pihak yang berkomunikasi mengenai
keabsahan pesan dan keabsahan jati diri lawan bicaranya.

Saat aplikasi menggunakan SSL, sebenarnya terjadi dua sesi, yakni sesi handshake
dan sesi pertukaran informasi. Berikut akan dijabarkan sebuah skenario yang aman
dari sesi handshake SSL :
1. Klien mengirimkan client hello yang harus dijawab dengan server hello. Tahap ini
terjadi kesepakatan atas penggunaan versi protokol, session ID, perangkat
kriptografi, metoda kompresi.
2. Pelayan kemudian dapat mengirim sertifikat kepada klien. Selain itu pelayan bisa
meminta klien untuk menunjukkan sertifikatnya namun tidak harus. Pelayan
lantas mengirimkan pesan server hello done, lalu menunggu jawaban dari klien.
3. Jika pelayan meminta sertifikat dengan pesan certificate request, maka klien
harus mengirimkan pesan certificate mesaage atau no certificate.
4. Pesan client key exchange kini dikirim, dimana pesan yang disandikan itu
tergantung dari algoritma kriptografi kunci publik yang disepakati pada tahap
pertama. Pesan itu berisi kunci-kunci yang dibuat secara acak oleh klien untuk
keperluan enkripsi dan perhitungan sidik jari (hash). Jika memungkinkan, dapat
pula disertai tanda tangan digital melalui pengiriman pesan certificate verify.
5. Lalu pesan change cipher spec dikirimkan oleh klien sambil mengaktifkan
spesifikasi cipher yang telah disepakati. Hal ini dilakukan dengan mengkopi
pending cipher spec ke current cipher spec. Segera setelah itu, klien
mengirimkan pesan finished guna mengakhiri handshake. Hal serupa dilakukan
pula oleh pelayan.
6. Akhirnya pelayan dan klien dapat bertukar pesan dengan menyandikannya
dengan kunci dan algoritma yang telah disepakati bersama pada level aplikasi.
Guna mencegah serangan yang dilakukan terhadap pesan yang disandikan, pelayan
dan klien dapat melakukan handshake beberapa kali pada session ID yang sama
guna mengubah kunci, namun mereka tidak perlu mengubah parameter komunikasi
yang telah disepakati sebelumnya.
Klien perlu memeriksa sertifikat yang diterimanya agar lebih yakin bahwa dia sedang
berkomunikasi dengan pelayan yang diinginkan. Klien memeriksa sertifikat digital itu
dengan membandingkan tanda tangan OS (otoritas sertifikat) pada sertifikat digital itu
dengan daftar OS yang dimiliki. Penyertaan serfikat digital OS utama pada browser
akan menghindarkan klien dari pemalsuan sertifikat OS utama.

10

SSL memanfaatkan teknologi kunci publik 40-bit dari RSA, yang ternyata dapat
dijebol dalam waktu 1,3 hari dengan 100 komputer menggunakan brute-force attack.
Ini tidak berarti teknologi SSL tidak bermanfaat. Tujuannya jelas, yakni agar biaya
yang dikeluarkan oleh pihak penyerang lebih besar dari pada harga informasi yang
dienkripsi melalui SSL, sehingga secara ekonomi tidak menguntungkan.
Sedangkan kunci enkripsi simetris yang dipergunakan adalah 128-bit (40-bit
dienkripsi dan 80-bit tidak dienkripsi saat kunci dipertukarkan). Dengan clear-text
attack, masih sangat sulit untuk memecahkannya.
Ada pula serangan yang berusaha menipu pelayan dengan merekam pembicaraan
antara klien dan pelayan sebelumnya. Dalam skenario SSL tanpa sertifikat klien, hal
ini dapat dicegah dengan penggunaan angka random yang dipertukarkan setiap
terjadi pertukaran pesan. ClientHello.random dan Serverhello.random dapat dibuat
dan dipertukarkan saat tahap pertama.

3. Algoritma Enskripsi RSA


RSA adalah salah satu dari public key criptosystem yang sangat sering
digunakan untuk memberikan privasi terhadap keaslian suatu data digital. Keamanan
enkripsi/dekripsi data model ini terletak pada kesulitan untuk memfaktorkan modulus n
yang sangat besar. Besarnya bilangan yang digunakan mengakibatkan lambatnya
operasi yang melibatkan algoritma RSA ini. Dibandingkan dengan algoritma private key
data encription standar (DES), RSA lebih lambat pada saat implementasi terhadap
hardware.
Di tahun 1978, Rivest, Shamir dan Adleman membuat sebuah algoritma untuk teori
penomoran pada sebuah public-key cryptosystem, algoritma ini dikenal dengan RSA
criptosystem. Pada perkembangannya RSA banyak digunakan karena kemudahannya.
3.1

Contoh Permasalahan

11

Dalam berkomunikasi menggunakan jaringan internet, lubang keamanan


menjadi masalah serius karena perkembangan e-mail, e-banking, e-business dan
jenis komunikasi lainnya makin pesat untuk mentranfer data-data penting.
Sebagai contoh kasus Alice dan Bob yang ingin berkomunikasi dengan privasi
tinggi, pada kenyataannya ada pihak ketiga yang dapat mengakses kemunikasi
mereka, dalam hal ini Eve.

Enkripsi Simetrik
Salah satu solusi untuk Alice dan Bob dalam kasus ini adalah tukar-menukar

data disertai suatu kunci digital, dimana keduanya telah sama-sama mengetahui
kunci rahasia tersebut. Alice menggunakan kunci ini untuk mengkodekan
pesan yang dia kirimkan, dan Bob merekonstruksi pesan tersebut kembali
dengan kunci yang sama. Pesan yang dienkrip (ciphertexts) tetap dapat diterima
Eve tetapi tidak dapat membacanya karena tidak mempunyai kunci yang sama
untuk mendekripsi kode pesan tersebut.

Enkripsi Kunci Publik

Dalam penggunaan model enkripsi ini, kunci publik yang digunakan


berbeda untuk enkripsi dan dekripsi. Digambarkan dalam diagram di atas, Key
generator akan menghasilkan dua buah kunci publik, dimana setiap orang dapat
mengetahui dan menggunakan kunci publik ini, tetapi hanya Bob yang
mengetahui kunci privatnya untuk melakukan dekripsi pesan yang dikirim.
Metoda ini memungkinkan Alice dan Bob tetap dapat berkomunikasi tanpa
terganggu oleh pihak ke tiga.
3.2

Algoritma RSA
Secara umum algoritma metode RSA ini adalah sebagai berikut :

Key Generation

Encryption

1.

Dapatkan dua bilangan prima besar, p dan q

C = Pe % n

2.

Dapatkan nilai n, dimana n= pq

12

3.

Dapatkan nilai m, dimana m= ( p-1)(q-1)

4.

Pilih sebuah angka kecil e, coprime untuk m

Decryption

5.

Cari nilai d,dimana d.e% m= 1

P = Cd % n

Publish e dan n sebagai kunci publik


Ambil d dan n sebagai kunci privat
x % y maksudnya adalah suatu nilai
sisa x dibagi y (% = modulus)

Penjelasan metode ini selengkapnya adalah sebagai berikut :


1.

Key Generation
a. Dapatkan 2 bilangan prima, p dan q
Besar kecilnya bilangan prima ini menentukan tingkat keamanan
data, semakin besar bilangan semakin banyak faktorialnya yang
mengakibatkan semakin sulit data dapat dipecahkan dalam waktu
singkat, sebagai contoh :
P=7
Q=19

b. Dapatkan nilai n, dimana n= pq


n = 7 * 19
= 133

c.

Dapatkan nilai m, dimana m= ( p-1)(q-1)


m = (7 - 1)(19 - 1)
= 6 * 18
= 108

d. Pilih sebuah angka kecil e, coprime untuk m.


e coprime untuk m, maksudnya adalah bilangan terbesar yang dapat
membagi

e dan m untuk menghasilkan nilai 1 (pembagi ini

dinyatakan dengan gcd --greatest common divisor). Algoritma


Euclid's digunakan untuk mencari gcd dua bilangan sebagai berikut :
e = 2 => gcd(e, 108) = 2 (no)
e = 3 => gcd(e, 108) = 3 (no)
e = 4 => gcd(e, 108) = 4 (no)
e = 5 => gcd(e, 108) = 1 (yes!)

e. Cari nilai d,dimana d.e% m = 1


Ini sama dengan seperti mencari nilai d memenuhi d.e = 1 + m.n,
dimana n adalah bilangan integer, kita dapat menuliskan kembali

13

pernyataan tersebut dengan d = (1+m.n)/e sehingga nilai-nilai n


dapat diselesaikan sampai didapat sebuah nilai yang integer seperti
di bawah ini :
n = 0 => d = 1 / 5 (no)
n = 1 => d = 109 / 5 (no)
n = 2 => d = 217 / 5 (no)
n = 3 => d = 325 / 5
= 65 (yes!)

Setelah langkah ini selesai didapatkan kesimpulan :


Public Key

Secret Key

n = 133

n = 133

E = 5

d = 65

2. Komunikasi

Enkripsi
Pesan dalam proses enkripsi harus merupakan suatu bilangan lebih
kecil dari nilai p dan q. Bagaimanapun, dalam posisi ini kita tidak
mengetahui p atau q, tapi dalam prakteknya suatu lower bound/nilai
yang lebih rendah pada p dan q harus dimunculkan. Contoh proses
ini, kita gunakan nilai "6".
C = Pe % n
= 65

% 133

= 7776 % 133
= 62

Dekripsi
Setelah proses enkripsi seperti di atas, maka dapat dilakukan proses
dekripsi dalam beberapa langkah sebagai berikut :
P = Cd % n
= 6265 % 133
= 62 * 6264 % 133
= 62 * (622)32 % 133
= 62 * 384432 % 133

14

= 62 * (3844 % 133)32

% 133

= 62 * 12032 % 133
Selanjutnya mengulangi urutan operasi yang mengurangi 62 65
sampai 12032 untuk mengurangi eksponen operasi tersebut hingga
menjadi 1.
= 62 * 3616 % 133
= 62 * 998 % 133
= 62 * 924 % 133
= 62 * 852

% 133

= 62 * 43 % 133
= 2666 % 133
= 6
Dengan melakukan langkah di atas, dapat dilihat bahwa pesan/data
telah sama dengan data asli sebelum enkripsi yaitu 6.
3.3 Implementasi RSA Menggunakan Java
Untuk implementasi dari teori di atas dapat digunakan kode java sebagai berikut :
import java.math.BigInteger;
import java.security.SecureRandom;
class Rsa
{
private BigInteger n, d, e;
public Rsa(int bitlen)
{
SecureRandom r = new SecureRandom();
BigInteger p = new BigInteger(bitlen / 2, 100, r);
BigInteger q = new BigInteger(bitlen / 2, 100, r);
n = p.multiply(q);
BigInteger m = (p.subtract(BigInteger.ONE))
.multiply(q.subtract(BigInteger.ONE));
e = new BigInteger("3");
while(m.gcd(e).intValue() > 1) e = e.add(new BigInteger("2"));
d = e.modInverse(m);
}
public BigInteger encrypt(BigInteger message)
{
return message.modPow(e, n);
}
public BigInteger decrypt(BigInteger message)
{

15

return message.modPow(d, n);


}
}

3.4 Digital Signature


Digital Signature berfungsi untuk melakukan validasi terhadap setiap data yang
dikirim. Dalam pengiriman data, secanggih apapun pipa dan gemboknya, tentu
saja perlu diperhatikan validitasnya. Validitas tersebut berkaitan dengan
pertanyaan apakah data yang sampai ke penerima dalam keadaan utuh sesuai
dengan aslinya saat dikirim tanpa sedikitpun adanya gangguan-gangguan dari
pihak lain. Digital Signature menggunakan fungsi algoritma yang disebut dengan
istilah hashing algorithm. Fungsi tersebut akan menghasilkan sebuah kombinasi
karakter yang unik yang disebut dengan hashed data.
Keunikannya adalah jika di tengah perjalanan data mengalami modifikasi,
penghapusan maupun disadap diam-diam oleh hacker walaupun hanya 1
karakter, maka hashed data yang berada di penerima akan berbeda dengan
yang dikirimkan pada awalnya. Keunikan lainnya adalah hashed data tersebut
tidak bisa dikembalikan lagi ke dalam bentuk awal seperti sebelum disentuh
dengan fungsi algoritma, sehingga disebutlah sebagai one-way hash. Mekanisme
kerja untuk menghasilkan Digital Signature tersebut adalah sebagai berikut
(dicontohkan dalam proses kerja e-mail) :
a. Proses hashing algorithm akan mengambil intisari dari isi e-mail yang akan
dikirim, memprosesnya secara one-way hash dan menghasilkan hashed
data. Kemudian hashed data tersebut di enkripsi menggunakan private key
dan menghasilkan apa yang disebut dengan Digital Signature. Di dalam
Digital Signature tersebut juga disertakan metode hashing algorithm yang
digunakan.
b. Kemudian Digital Signature tersebut dikirimkan bersama isi e-mail tersebut.
c.

Sesampainya di penerima, akan dilakukan proses hashing algorithm


terhadap isi e-mail tersebut. Proses one-way hash persis seperti yang
dilakukan saat pengiriman, karena algoritmanya turut dibawa dalam Digital
Signature. Dari proses tersebut menghasilkan hashed-data sekunder.

d. Secara pararel, Digital Signature yang diterima tadi langsung didekripsi oleh
public key. Hasil dekripsi tersebut tentunya akan memunculkan hashed data

16

yang serupa seperti hashed data sebelum dienkripsi oleh pengirim e-mail.
Hashed data disebut hashed data primer.
e. Proses selanjutnya adalah memperbandingkan hashed data primer dengan
hashed data sekunder. Jika saja saat diperjalanan ada hacker yang
mengubah atau menyadap isi e-mail, paka hashed data sekunder akan
berbeda dengan hashed data primer. Segera mekanisme Digital Signature
tersebut akan menyampaikan peringatan bahwa telah terjadi 'sesuatu' di
tengah jalan.
Setelah saluran data aman dengan menggunakan SSL, gembok terjamin dengan
menggunakan Public Key Cryptography dan validitas data terjaga dengan
menggunakan Digital Signature, tetapi terdapat satu masalah lagi. Siapakah
yang bisa kita percaya untuk menjamin kredibilitas ketiga faktor di atas (SSL,
Public Key Cryptography dan Digital Signature)? Untuk itulah maka fungsi
Certificate of Authority mengambil peranan.
3.5 Sertifikat
Sertificate of Authority (CA) adalah sebuah dokumen elektronis yang digunakan
untuk mengidentifikasikan individu, server, perusahaan atau entitas lainnya dan
mengasosiasikannya identitas tersebut dengan public key. CA digunakan oleh
Public Key Cryptography berkaitan dengan pertanyaan apakah data yang kita
diterima benar-benar ldari pengirim yang kita percaya dan apakah data yang
akan kita kirim akan benar-benar menuju ke penerima yang kita tuju. Masalah
kepercayaan dan kredibilitas ini memang sangat diperlukan oleh sebuah entitas
yang menjalankan suatu transaksi tertentu dengan pihak lain di Internet.
Jika sebuah entitas ingin menyelenggarakan sebuah transaksi di Internet,
semisal e-commerce atau e-banking, maka setelah infrastrukturnya telah siap,
dia tidak langsung beroperasi. Yang harus dilakukannya adalah mendaftarkan
dirinya, server-nya dan perusahaannya ke sebuah institusi resmi untuk
mendapatkan CA. CA tersebut dapat menjadi jaminan atas kredibilitas dan
realibilitas infrastruktur yang dimilikinya. Beberapa institusi internasional di
Internet

yang

menyediakan

layanan

CA

ini

adalah

VeriSign,

Inc

(www.verisign.com), British Telecommunication (www.trustwise.com), GlobalSign


(www.globalsign.net) dan Thawte Certification (www.thawte.com).

17

4.

Algoritma Montgomery

4.1

Pendahuluan
Montgomery multiplication sekarang ini digunakan sebagai inti algoritma berbasis
kriptosistem dalam aritmatik modular. Munculnya kelas baru pada pemecahan
masalah/attack (timing attack dan power attack), implementasi algoritma ini
menjadi lebih mudah dipelajari.
Selama ini IEEE menggunakan algoritma dari Colin D.Walker sebagai standar
kecepatan RSA, dimana ini dapat ditingkatkan dengan penambahan metode
perkalian montgomery. Selain RSA berbasis kriptosistem, eksponen modular
sering dihitung dengan montgomery multiplication. Beberapa implementasi
algoritma ini telah banyak diterapkan dalam hardware dan software dengan
tujuan utama untuk mempercepat proses enkripsi/dekripsi.
Timing attack dan power attack yang berbasis pada informasi sidechannel merupakan cara mengantisipasi kebocoran akibat divais

hardware.

Berbagai cara lainnya digunakan dalam algoritma untuk menperkuat informasi


side-channel ini, dan implementasi baru adalah mengurangi ancaman yang
dapat mengganggu performa kecepatan. Dari sisi hardware masalah ini
sangatlah komplek, karena masalah batasan penambahan kecepatan atau
pengurangan ukuran sirkit yang diperlukan untuk menghasilkan implementasi
sesuai analisis perhitungan montgomery. Jika ukuran modulus lebih kecil dari
ukuran multiplier akan menghasilkan implementasi yang tidak cocok.
4.2 Perkalian Montgomery
Montgomery Multiplication

adalah

algoritma

untuk operasi hitung

yang

enghasilkan 2 integer modulo A dan B integer N. Karena A dan B mempunyai


komposisi yang besar (dengan alasan keamanan RSA), maka dengan metoda
Montgomery Multiplication ini data akan di tata ulang dalam blok-blok kecil.
Panjang t ini akan ditata menjadi 8, 16, 32, 64 dan kelipatannya mengikuti
perumusan :

dimana, p = blok-blok bilangan yang diperlukan untuk merepresentasikan semua


bilangan yang digunakan dalam algoritma.
Contoh algoritma metode perkalian montgomery dapat dilihat pada analisis
berikut :

18

nilai

dihitung juga sehingga

p harus

memenuhi

4.3 Eksponensiasi Basis Montgomery


4.3.1

Deskripsi
Perkalian montgomery adalah komponen dasar yang digunakan
untuk mengimplementasikan sebuah kotak klasik dan algoritma perkalian
yang menghitung sebuah eksponensial. Hasil perkalian montgomery.......
bukan .......................... tetapi ...................................... Agar hasil operasi
menjadi benar di akhir eksponensial, maka kita perlu membuat :
a.

Pre-multiplication . .................................

b.

Post-multiplication .. ............................

Asumsi :

C. Walker berpendapat bahwa ini adalah hasil akhir dimana eksponen


(E) lebih kecil dari modulus N dan tidak memerlukan reduksi lanjutan,
tetapi Quisquater berpendapat bahwa hasil perkalian adalah input untuk
proses berikutnya dimana output ini harus mempunyai batasan seperti
input.Pada 2 iterasi terakhir, ........................ Dengan asumsi...............dan
..........................
akan menjamin .................. sehingga di akhir iterasi didapat hasil :
.......................................
Dan pada perkalian

terakhir didapat eksponensial . ............. Post-

multiplication /perkalian dengan 1 akan mengembalikan kepada nilai


terakhir yang memungkinkan sehingga hasil akhir :

19

Dan memenuhi :

Dihasilkan :
S < N , S = integer
Pada kasus S = N akan dihilangkan sebab ia harus memenuhi :

Ini menandakan bila A = 0 (tak ada reduksi) atau A = N (didalam


kriptosistem klasik, A < N)

4.3.2

Shortcoming
Dengan A, B < 2N, t > 1 dan

output

dibatasi

hasil

: S < 2N selama

perkalian
ini

berlaku

maka kondisi tersebut dikatakan phase pre-multiplication. Dalam phasemultiplication,

integer A di kalikan dengan menghasilkan > 2N

tetapi setelah phase ini tak ada jaminan bahwa S dibatasi oleh 2N. Untuk
mengatasi hal ini dapat menggunakan 2 cara, yaitu :
1. pre-compute
2. menggunakan algoritma perkalian modular normal dan hitung
Akan tetapi inipun menimbulkan masalah kecil yaitu performa akan
tergangggu,

akan mengganggu jika ukuran N dan t

menggunakan ukuran normalnya.


4.3.3

Bound Optimisation
Dengan batasan ( S < 2 N ) dimana
menimbulkan

serta t > 2 tidak akan

masalah pada implementasi software. Disisi hardware

performa ini menjadi masalah. Jika ukuran N <

ini

tidak

akan

bekerja dengan baik sebab sekarang ukuran minimum N tidak kurang


dari 512 bit.
Tiap alangkah algoritma mengikuti ketentuan

dari
dan A < 2N

dimana
Jika kita mulai dari second iterasi terakhir akan didapat :

20

4.4 Analisis Kecepatan


4.4.1

Membangun Sebuah Model Umum


Dapat diperkirakan untuk membangun sebuah model umum dengan cara
sebagai berikut :
1.

representasikan CA, sebuah clock cycle untuk menjumlah

2.

representasikan CM, sebuah clock cycle untuk mengalikan

Ditiap langkah ini diperlukan :


1.
untuk menghitung S
2.

untuk menghitung qi.

Selanjutnya diperlukan

pengurang akhir, dalam kasus ini perkalian

montgomery pengurang akhir ini mengambil clock

cycle

.
Sehingga dapat diperkirakan kebutuhan clock cycle untuk perkalian
montgomery sebagai berikut :

4.4.2

dengan pengurang akhir.

Perbandingan Kecepatan
Versi asli algoritma montgomery selalu membuat sebuah pengurang
setelah perkalian dan memilih untuk mengambil hasil pengurangan, jika
hasil tersebut lebih besar dari 0. Modifikasi waktu dapat menghindari
timing attack dengan menggunakan penjumlahan cycle waktu yang sama
sesaat sebelum hasil tersebut dibuang.

21

Tabel 4.1 Perumusan yang digunakan untuk memprediksi bilangan


permintaan clock cycle untuk algoritma yang berbeda

Tabel 4.2 Prediksi penambahan waktu untuk perkalian (CA = 1, CM = 6)


dengan pengurang modular akhir ((14p + 14)p)

Penjumlahan-penjumlahan cycle datang dari loop kosong, ini tidak


terproteksi untuk mengantisipasi power attack. Dengan memperkirakan
waktu perkalian sama dengan waktu penjumlahan yang hanya 1 clock
cycle, dapat dihasilkan output seperti pada tabel 4.4.

4.5 Pertimbangan Keamanan


Dalam prose perkalian montgomery ini terdapat 2 masalah yang dapat
mengganggu proses, yaitu : time attack dan power attack.
4.5.1

Timing attack
Algoritma RSA yang original sebelum melalui proses modifikasi apapun
sebenarnya telah memiliki
pembahasan

proteksi terhadap time attack. Dalam

ini security bukanlah menambahkan jumlah algoritma

keamanan tetapi membuat sebuah desain yang berfungsi sebagai


cleaner yang selalu melakukan pengurangan dan menjumlah loop
kosong pada bagian akhir eksponensiasi.

22

Tabel 4.3 Waktu penambahan rata-rata

Tabel 4.4. Prediksi penambahan waktu

4.5.2

Power attack
Algoritma kecepatan RSA yang original, setelah melakukan pengurangan
akhir , sebuah instruksi kondisi menentukan hasil dimana pengurangan
akhir harus dibuang. Sebab hasil tadi dikembalikan oleh nilai bukan oleh
alamatnya, jika hasil tersebut terus disimpan , ini akan tercetak ulang
(copy). Untuk menghindari terjadinya cetak ulang tersebut sebuah loop
kosong mengsimulasikan waktu pengambilan oleh nilai copy-an tersebut.
Metoda ini dapat dideteksi dengan mudah dalam sebuah power attack.
Dalam versi baru, sebuah penguat keamanan telah dapat menghindari
power attack sebab tak ada instruksi kondisi yang eksis selama proses
montgomery tersebut.

5. Chinese Remainder Theorem


Motivasi penggunaan CRT untuk algoritma
sekuriti

data

tidak

lepas

dari

berkembangkan komunikasi via internet


yang sangat bertumpu pada akselerasi
dan sekuriti datanya.
Contoh 1:
OpenSSL, 800 MHZ Athlon
RSA sign ( 1024 bit) 6.4 m
155.4 sign./second

23

Contoh 2:
RSA crypto chip ( 200 MHZ)
RSA sign ( 1024 bit) 0.5 m
2000 sign./second ( CRT)
Sebagai gambaran awal, sistem CRT dapat digambarkan sebagai berikut :

algoritma dan struktur :

Kelebihan Teoreme Chinese remainder adalah sebagai berikut :

Mempercepat untuk operasi kunci pribadi ( decryption,generasi tandatangan).

Dua n/2-bit eksponensials mod P dan mod Q. sebagai ganti satu n-bit
eksponensial mod N ( N=P*Q).

Split n-bit multiplier hardware ke dalam dua n/2-bit pengali, melaksanakan n/2-bit
eksponensials paralel.

Kombinasi hasil menurut CRT.

CRT meningkat/kan decryption melewati suatu faktor approx. 3- 3.5.

24

Kalkulasi penting di dalam rencana enkripsi RSA adalah eksponensial modular M= E d


( Mod n). Ini dilakukan setiap kali bagian dari pesan dilakukan encrypted/decrypted. d
dan n adalah bilangan bulat sangat besar oleh karena itu operasi ini sangat
computationaly intensive. Kita harus temukan alternatif metoda biner untuk
eksponensial modular.
Keuntungan dasar dengan menggunakan teoreme Chinese remainder

adalah

memugkinkan kita untuk membagi modulo eksponensial yang besar ke dalam dua
eksponensial yang jauh lebih kecil, satu di atas p dan satu di atas q. Dua modulo ini
adalah faktor utama n yang dikenali. Lebih lanjut

mengurangi masalah ukuran

dengan penggunaan teoreme Fermat'S yang lebih Kecil. Metoda ini pertama
diusulkan oleh Quisquater dan Couvreur.
Definisi CRT: Suatu residu sisa suatu divisi dari suatu jumlah yang disebut suatu
modulus ( yaitu residu 5/7 adalah 2).
Definisi CRT: Suatu penyajian residu suatu jumlah x yang diset pada suatu bentuk
residu { r1, r2,, rk} berkenaan dengan modulo { m1, m2,, mk}.
Jika kita menggunakan penyajian residu { r1,r2,, rk} pada x, Teoreme Chinese
remainder membuat ia mungkin untuk menentukan | x| yang disajikan faktor umum
terbesar mengenai seluruh pembawa modulo 1 ( yaitu ( ri, rj)= 1, i!= j). modulo
dikenal sebagai memasangkan prime secara relatif (M. Shahkarami Dan G.A. Jullien,
2002, Universitas Calgary). Hal penting di sini adalah bahwa jika kita membagi
jumlah x ke dalam bentuk residunya, kita dapat melaksanakan operasi pada residu
itu bebas tiap satu dan lainnya. Sekali ketika menyelesaikan proses residu kita dapat
merekonstruksi jawaban akhir menggunakan CRT . Kita mengetahui bahwa residu x
adalah jauh lebih kecil dari x dirinya sendiri, oleh karena itu operasi individu akan
menjadi kompleksitas yang jauh lebih kecil.
Membagi operasi modulo adalah dua kalkulasi mandiri. Sebagai ganti dilakukannya
eksponensial ( mod n) kita membagi x ke dalam ( mod p) dan ( mod q). Karena
kedua-duanya p dan q adalah utama mereka mencukupi kebutuhan untuk
rekonstruksi yang menggunakan

CRT. Kita kini tinggal melakukan eksponensial

keduanya sebagai berikut:


Mp = Ed (mod p)
Mq = Ed (mod q)

25

Kita kemudian bisa menerapkan CRT untuk merekonstruksi pesan akhir dari Mp
dan Mq.
Single-radix conversion (SRC)
Implementasi CRT unutk memepercepat kriptografi RSA tidak hanya dengan
menbagi kode pesan menjadi dua tetapi juga dapat menggunakan satu langkah
konversi dinamakan SRC.Berikut adalah langkah-langkah untuk SRC berlaku pula
bagi RSA.
Langkah 1: membagi eksponensial kedalam bentuk ( mod p) dan ( mod q)
Mp = Ed (mod p)
Mq = Ed (mod q)
Langkah 2: kurangi kompleksitas dengan menerapkan Teoreme Fermat's kepada
eksponen, kita hanya harus menghitung:
Mp = Ed (mod p)
Mq = Ed (mod q)
Dimana :
d1 = d mod(p-1)
d2 = d mod(q-1)
Ukuran d1, dan d2 kini separuh d. Karena kompleksitas tumbuh bersifat exponen
terhadap d, ini menghasilkan tabungan data sangat besar.
Langkah 3: gunakan CRT untuk merekonstruksi pesan kita
M = Mp(q-1 mod p)q + Mq(p-1 mod q)p (mod n)

Mixed-radix conversion (MRC)


Decryption menggunakan MRC serupa dengan SRC . Satu-Satunya perbedaan
untuk aplikasi ini adalah di dalam perhitungan rekonstruksi akhir.
Langkah 1: Bagi eksponensial ke dalam ( mod p) dan ( mod q). Juga menerapkan
Teoreme Fermat's untuk mengurangi eksponen.
Mp = Ed (mod p)

26

Mq = Ed (mod q)
Langkah 2: Rekonstruksi pesan menggunakan cara sebagai berikut :
M = Mp + [(Mq - Mp) (p-1 mod q) mod q] p
atau lebih familiar menggunakan :
M = Mq + [(Mp - Mq) (q-1 mod p) mod p] q
seperti kunci pribadi sintaksis PKCS#1 meliputi kebalikan yang diperlukan.
6. Contoh Implementasi Teorema Chinese Remainder (CRT) dan Montgomery
Multiplicattion untuk mempercepat deskripsi RSA
I. Pendahuluan
a. Latar Belakang
Kecepatan public key encription merupakan suatu kendala pada proses
pertukaran informasi rahasia antar dua proses yang membutuhkan kecepatan
tinggi seperti kebutuhan pada protokol secure socket layer (SSL), dimana satu
server melayani permintaan lebih dari satu client menggunakan public key
encription, sehingga secara keseluruhan akan menggunakan waktu proses yang
sangat besar dan memperlambat proses keseluruhan.
Salah satu metoda yang aman untuk mempercepat proses dekripsi RSA
adalah menggunakan Chinese Remainder Theorem. Sedangkan analisis untuk
operasi eksponensialnya menggunakan metoda montgomery.
b. Tujuan

Studi literatur terhadap metode Chinese Remainder Theorem dan


penggunaan metode Montgomery Multiplication untuk analisis
perolehan kecepatan operasi enkripsi/dekripsi

Menghitung besarnya peningkatan kecepatan yang diperoleh dengan


metode yang digunakan

c. Manfaat
Diperoleh suatu cara alternatif untuk menambah kecepatan enkripsi/dekripsi
RSA melalui implementasi hardware dan software yang tidak terlampau banyak
mengubah struktur komputer serta tidak mengabaikan keamanan datanya
II. Teori Penunjang
2.1 RSA
Metoda encript/decript ini dikembangkan oleh Rivest-Shamir-Adleman, dimana
algoritma yang digunakan adalah adanya public key 2 kunci yang berbeda untuk

27

encript dan decript. Keistimewaan metode ini terletak pada kesulitan untuk
memfaktorkan modulus n yang sangat besar, tetapi kelebihan ini mengakibatkan
lambatnya waktu untuk menyelesaikan proses.
2.2.1 Skema
RSA terdiri dari dua kunci, yaitu :
Privat key d, mempunyai karakteristik :

Dipublikasikan bebas

Pengiriman balik pesan kepada pemegang kunci privat


untuk meng-encript pesan M menjadi C
Public key (e,n), mempunyai karakteristik :

Rahasia pemegang (end user)

Digunakan untuk men-decript pesan C menjadi M


yang ditujukan kepadanya

Dapat

berfungsi

sebagai

digital

signature

yang

beroperasi dengan menggunakan privat key


Kedua kunci dihasilkan dengan cara :

1.

pilih secara random bilangan prima yang sangat besar p


dan q masing-masing > 512 bit

2.

hitung n = p.q dan hitung euler phifunction n,Q(n)


=(p-1)(q-1)

3.

pilih e hingga relatif prima terhadap Q(n), yaitu


ged(e,Q(n)) = 1

4.

hitung d hingga merupakan invers multipikatif modulo Q(n)


dari e yaitu ed = 1 modulo Q(n)

2.1.2

Implementasi RSA

RSA dapat di implementasikan secara hardware dan software, dimana


standar implementasi menggunakan PKCS#1. Public key e harus
terlindungi secara baik sehingga pemilihan 3,17 dan 65537 sering
digunakan. Rekomendasi PKCS#1 : 3 (0112),17 (100012) atau 65537
(100000000000000012) karena ketiga bilangan tersebut memiliki bit 1
sebanyak 2 buah, sehingga diperlukan hanya 17 perkalian untuk operasi
eksponensiasi, akibatnya operasi decript menjadi lebih cepat.
Metoda penghitungan biner untuk Me mod n, integer M,e dan n
menggunakan algoritma modular exponential, yaitu eksponensial yang
disusun dari operasi perkalian modular dan pangkat 2 modular. Berikut
adalah algoritma tersebut :

28

a. c :=1;
b. p :=m;
c.

for i=0 to h-2


a. if ei=1 then c:=c.p mod n
b. p :=p.p mod n

d. if eh-1=1 then c:=c.p mod n


e. return c
Tiap bit dari e discan dari bit 0 LSB hingga h-1 MSB, hal ini dilakukan
dalam loop, jika ei = 1 maka dilakukan perkalian modular c.p mod n dan
kemudian diteruskan dengan p.p mod n. Algoritma ini membuat algoritma
model Fermat F4 (216+1) atau 65537, melakukan 17 perkalian , yaitu 15
kali menghitung

p.p mod n dan 1 kali c.p mod n dalam loop 3 dan

kemudian 1 kali c.p mod n pada langkah 4.


2.2 Kecepatan Dekripsi dengan Chinesse Remainder Theorem (CRT)
Untuk mempercepat operasi dekripsi digunakan Metoda Chinese Remainder
Theorem. Metode ini menggunakan faktor prima mod n, yaitu p dan q karena n
= p.q, yang menyatakan sebagai berikut :
Agar m1, m2,...,mr relatif prima, maka sistem kongruen
X = a1 mod m1
X = a2 mod m2
X = a3 mod m3
mempunyai solusi unik untuk modulo M = m1, m2, ....., mr.
Proses dekripsi CRT ditentukan sebagai berikut:
M = Cd mod n dengan n = p.q, dapat dipecah menjadi 2 bagian (aturan
PKCS#1 & RSAES OAEP), yaitu :
M1 = Cdp mod p...............................................(2.1)
M2 = Cdq mod q...............................................(2.2)
Dengan
dp = d mod (p 1)...........................................(2.3)
dq = d mod (q 1)...........................................(2.4)
kemudian dapat dihitung :
qinv = q-1 mod p
dan pesan plaintext M diperoleh dengan :
M = M2 + q.qinv(M1 M2) mod p......................(2.5)
Dengan modulus n 1024 bit, maka p dan q adalah integer dengan ukuran
masing-masing adalah 512 bit. Karena p dan q berukuran 512 bit, maka dari

29

(1) dan (3) dan (2) dan (4), M 1, dq, dan qinv adalah integer modulo p demikian
pula dengan

M2

dan dq adalah integer modulo q, sehingga ukuran dari

M1,M2,dp,dq dan qinv juga 512 bit.


Karena eksponen dp dan dq yang digunakan pada (2.1) dan (2.2) telah
direduksi pada (2.3) dan (2.4) menjadi 512 bit, dan operasi (1) dan (2)
menggunakan algoritma modular eksponensial (algoritma 2), maka jumlah loop
i yang dilakukan hanya sebanyak 511 kali. Jika dilakukan dengan eksponen d
dan modulus n yang berukuran 1024 untuk algoritma eksponensial maka
jumlah loop yang harus dilakukan adalah sebanyak 1023 kali. Peningkatan
kecepatan yang diperoleh dengan mereduksi ukuran eksponen adalah
mendekati 4.
2.3

Sistem Bilangan Congruent Modulo n


Jika terdapat persamaan a = b mod n, maka dikatakan a congruent terhadap
b mod n bila selisih a-b dapat dibagi oleh n sehingga :
n | (a-b)
atau
a b = k.n
Beberapa sifat dari congruent adalah :
1.

a = b mod n jika dan hanya jika a dan b menghasilkan sisa yang sama
jika dibagi dengan n

2.

reflexive, jika a = a mod n

3.

symmetry, jika a = b mod n, maka b = a mod n

4.

transive, jika a = b mod n dan b = c mod n, maka a = c mod n

5.

jika a = a1 mod n dan b = b1 mod n, maka a + b = a1 + b1 (mod n)

kelas ekuivalen dari integer adalah semua integer congruent ke a modulo n.


Sedangkan integer modulo n, dinyatakan Zn, adalah set dari kelas ekuivalen
integer. Penjumlahan, pengurangan dan perkalian berlaku pada set ini.
Contoh :Z25={0,1,2,....,24}
Pada operasi modular eksponensial, M =C d mod n intinya adalah perulangan
modular multiflication, nilai M tidak akan lebih dari n - 1.

2.4

Aritmatik Integer Multipresisi


2.4.1

Perkalian Multipresisi

Didefinikan

dan

adalah

integer

yang

dinyatakan

dalam

representasikan radiks b : x = (x n.xn-1 ..x1xo)b dan y = (ytyt-1...x1xo)b digit

30

base b. Jika kedua bilangan tersebut mempunyai panjanng yang sama s


hasilnya adalah 2s digit.
Algoritma 1. Perkalian Multi-precision integer_______
Input

: integer positif x dan y dengan s digit base b

Output : Product x.y = (w2s-1 ... w1w0)b


1. for i = 0 to s -1
2. C

3. for j = 0 to s -1
3.1. (C,S)
3.2. wi+j

w i+j + x i+ yi + C
S

4. return (w 2s-1 ... w1w0)b


____________________________________________
contoh :
xj = A,yi = B, wi+j = F, C = E
(C,S) = 8B = F + AB + C
sehingga,
(C,S) = (8,B) dan w i+j = S = B, dan pada siklus berikutnya dari loop j C =
8.
2.4.2

Perkalian Modular

x dan y Zn dan n integer, perkalian modular dinyatakan sebagai :


x, y mod n
operasi perkalian modular dapat dilakukan dengan melakukan perkalian
standar terhadap x dan y, kemudian diikuti dengan mengambil sisa
pembagian x, y/n. Metode ini dikenal sebagai algoritma klasik.
2.4.3

Montgomery Multiplication

n adalah integer positif k bit dan r serta T adalah integer sedemikian rupa
sehingga r > n, gcd(n,r) = 1 dan 0 < T < n. Tr-1 mod n disebut
montgomery reduction dari T modulo n. Dengan representasi dari
residue class modulo n, algoritma ini menggantikan operasi pembagian
oleh pangkat dari 2. Anggap algoritma memerlukan r dan n relatif prima
yaitu gcd(n,r) = 1. Kemudian ditentukan bahwa r = 2k, maka syarat
gcd(n,r)= 1 dipenuhi jika n adalah ganjil.
Dalam aplikasi RSA criptosystem syarat ini dipenuhi, yaitu
modulus n adalah selalu ganjil. Anggap a dan c adalah integer yang

31

sedemikian rupa sehingga 0 <a,c<n. Agar =ar mod n dan

= cr

mod n. Montgomery reduction dari ac adalah acr-1 mod n.

dan

-1

disebut representasi montgomery dari a dan c. Disini r adalah invers r


mod n, yaitu r-1r = 1 mod n.
Untuk

menggambarkan

algoritma

montgomery

diperlukan

besaran tambahan n, yaitu integer yang memenuhi r.r-1 n.n = 1


r-1 dan n dapat dihitung dengan algoritma extended euclidean. Fungsi
untuk menghitung acr-1 mod n dinyatakan dalam algoritma fungsi monpro
sebagai berikut :
1. t := .

langkah ini untuk mendapatkan t.

2. m := t.n mod r

selanjutnya t dikali dengan n(hasil penghitungan dengan


algoritma euclidean)

m merupakan k LSB dari hasil perkalian t.n

3. u = (t + m.n)/r

hasil perkalian ini dibagi dengan r dan hasilnya adalah


sisa dari pembagian.

Karena r merupakan pangkat dari 2, yaitu 2k untuk k bit


bilangan ganjil n, dan pembagian hanya menggeser bit
ke kiri

Karena r adalah

k
2

, u pada langkah ketiga adalah

diperoleh dengan mengabaikan k bit LSB dari (t + mn).


4. if u > n then return u n else return u

pengujian apakah u telah merupakan integer modulo n,


jika u lebih besar atau sama dengan n maka n
dikurangkan dengan u.

Representasi Montgomery = ar mod n, dan fungsi menghitung


Montgomery multiplication sebagai berikut :
Monpro(a,c) = acr-1 mod n
Dengan substitusi a dengan a dan dengan r2 mod n:
Monpro(a,c) = acr-1 mod n
Monpro(a,c) = acr-1 mod n
Sehingga
= monpro (a,r2 mod n)

32

Formula

ini menunjukan bahwa representasi montgomery dari suatu

integer

dapat dihitung dengan menggunakan fungsi montgomery

multiplication.
Dan representasi biasa dari yaitu a :
a = r-1 mod n
a = 1r-1 mod n
Sehingga a dapat dihitung dengan fungsi :
a = monpro (,1)
Cara ini akan efisien pada saat menggunakan montgomery exponential,
karena

hanya

mengulang-ulang

fungsi

monpro()

sedangkan

penghitungan hanya 1 kali.


2.4.4

Montgomery Exponentation

Metode ini merupakan operasi modular ekponential terhadap integer


modulo n dalam representasi montgomery. Berikut adalah algoritma
modular exponential menggunakan fungsi monpro().
____________________________________________________
Algoritma 2 Modular Eksponensial_______________________
Input

: C, e Zn, n integer k bit

Output : a = Ce mod n
1.

hitung n menggunakan metode extended euclidean

2.

:= C.r mod n

Dapat dihitung hanya dengan menggeser C sebanyak

bit ke kiri dan mengambil sisa pembagian oleh n atau


menggunakan fungsi monpro(C,r2)
3.

:= 1.r mod n

ini merupakan fungsi yang akan menjadi konstan untuk


satu modulus n, diperlukan 1 kali selanjutnya disimpan hasilnya

4.

for i = k 1 downto 0
:= monpro(, )
if ei = 1 then := monpro(, )

jumlah pemanggilan monpro() pada algoritma modular


exponential sebanyak k ditambah dengan jumlah banyaknya bit
1 pada eksponen e.

5.

a := monpro(,1)

6.

operasi untuk mendapatkan representasi reguler dari .


return a

33

______________________________________________________
III.

Software RSA
Menurut rekomendasi dokumen PKCS#1, secara umum perangkat lunak untuk
implementasi RSA meliputi :

Criptographic primitives

Skema enkripsi

Skema signature

Sintaks ASN.1 untuk merepresentasikan kunci

Pada bahasan ini akan difokuskan pada Criptographic primitive


3.1 Criptographic Primitive
Criptographic primitive adalah operasi-operasi matematika dimana skema
kriptographi dibangun yang ditujukan untuk implementasi pada perangkat keras
maupun perangkat lunak. Ada empat tipe primitive ini seperti direkomendasikan
PKCS#1, yaitu :

Enkripsi
Menghasilkan representasi chipertext dari representasi pesan dibawah
kendali kunci publik. Berikut ini algoritma RSA encription primitive
(RSAEP) ((n,e),m)
Input

: (n.e) kunci publik RSA


M representasi pesan, integer antara 0 dan n-1

Output : c representasi ciphertext, integer antara 0 dan n-1


Langkah
1.

:
jika representasi pesan m tidak berada diantara 0 dan n
-1, representasi out of range dihasilkan pada output

2.

c = me mod n

3.

output c

Dekripsi
Representasi pesan dari representasi ciphertext dibawah kendali kunci
privat yang berkaitan. Berikut ini algoritma RSA decription primitive
(RSADP) ((n,d),c).
Input

: (n.d) kunci privat RSA


(p,q,dp,dq,qinv) kunci privat, metoda 2, c representasi
ciphertext, integer antara 0 dan n - 1

34

Output : m representasi pesan, integer antara 0 dan n-1


Langkah

:
1

jika representasi ciphertext (cm) tidak berada


diantara 0 dan n -1, representasi out of range
dihasilkan pada output

jika digunakan metode 1


i. m = cd mod n
jika digunakan metode 2
ii.

M 1 = cdp mod p

iii. M2 = cdp mod q


iv. h = qinv(M1 M2) mod p
v. m =M2 + hq
3

output m

RSAEP maupun RSADP menggunakan operasi modular exponential


dan menggunakan input representasi pesan m atau ciphertext
integer modulo n Zn.
3.2 Implementasi Software Criptographic Primitive
RSA

criptographic primitive

menspesifikasikan

operasi matematik yang

dilakukan dalam melaksanakan proses enkripsi/dekripsi menggunakan formula


matematik yang sama yaitu modular exponential dengan input eksponen yang
berbeda.
3.2.1

Struktur Data

Skema enkripsi yang aman untuk saat ini adalah menggunakan modulus
n dengan ukuran 1024 bit. Arsitektur komputer 32 bit sekarang yang
mengguanakan kompiler dengan tipe data

long integer 32 bit

mengimplikasikan penggunaan tipe data yang lebih rumit seperti array


dengan 32 elemen. Namun menurut spesifikasi, operasi dekripsi
mengguanakan

metode

chinesse

remainder

(metode

2)

dari

criptographic primitive yang dijelaskan dalam dokumen PKCS#1,


modulus yang digunakan adalah p dan q dengan panjang 512 bit. Agar
dapat memenuhi kedua metode tersebut seperti dispesifikasikan, struktur
data untuk integer modulo n atau integer modulo p dan q yang cocok
untuk diimplementasikan criptographic primitive adalah array dinamis.
Operasi-operasi

metematika

yang

terlibat

dalam

operasi

enkripsi/dekripsi adalah modular eksponensial, perkalian, penjumlahan,

35

pengurangan integer modulo n. Susunan operator dan statemen untuk


mengerjakan suatu pekerjaan tertentu merupakan suatu program.
3.2.2

Implementasi Program

Program yang dibuat ini adalah program untuk melakukan operasi


dekripsi dengan metode chinesse remainder theorem dimana algoritma
modular eksponensial menggunakan metode montgomery. Program
akan membaca file-file input dan menyimpan input tersebut dalam
variabel very long integer. Kemudian ciphertext direduksi menjadi integer
modulo p dan integer modulo q. Setelah reduksi diperoleh, operasi
montgomery exponential dilakukan terhadap kedua reduksi tersebut
menggunakan eksponen dp dan dq. Kemudian hasil dari kedua
montgomery exponential tersebut ditemukan solusi unik M menggunakan
CRT dan hasil ditampilkan pada layar monitor.
Besarnya parameter-parameter yang terlibat dalam operasi
dekripsi

beresiko

memberikan

menimbulkan

jaminan

akan

kesalahan.

keberhasilan

Input

dari

menginput

file

data

lebih
tanpa

kesalahan. Parmater-parameter tersebut adalah :

1.

co-faktor prima p dan q dalam file expp.txt dan expq.txt

2.

eksponen dp dan dq dalam file dp.txt dan dq.txt

3.

koefisien CRT qinv dalam file qinv.txt

4.

ciphertext dalam file cipher.txt

Analisis Desain Hardware RSA


4.1 Montgomery Eksponensial
Algoritma modular exponential LR (dari kiri ke kanan) untuk menghitung
C = Md mod n, dengan M,C, dan d Zn.
1.

if eh-1 = 1 then C := M else C = 1

2.

for i = h 2 downto 0
a. C = C, C mod n
b. If ei = 1 then C = C,M mod n

3.

return C

langkah 2a dan 2b adalah untuk menghitung perkalian modular dengan modulus


n. Algoritma Montgomery exponential dengan memodifikasi algoritma modular
eksponensial yang menggunakan montgomery multiflication dituliskan :
1.

hitung n menggunakan algoritma extended euclidean

2.

= C.r mod n

3.

= 1.r mod n

36

4.

for i = k-1 downto 0


= monpro(, )
if ei = 1 then = monpro(, )

5.

a = monpro(,1)

6.

return a

4.2 Montgomery Multiplication


Montgomery

Multiplication

menghitung

modular

multiplication

dalam

representasi montgomery. Besaran n digunakan oleh fungsi monpro() yang


merupakan operasi yang paling sering dilakukan. Fungsi monpro() detail operasi
diulang sebagai berikut :
1.

t := .

2.

m := t.n mod r

3.

u = (t + m.n)/r

4.

if u n then return u n else return u

langkah 1 merupakan perkalian standar, langkah 2 dan 3 adalah operasi


perkalian standar yang diteruskan dengan mengambil k-bit LSB operasi t,n dan
mengabaikan k-bit LSB dari operasi t + m.n. langkah 4 merupakan operasi
perbandingan untuk menentukan apakah u adalah elemen dari set integer
modulo n atau bukan.
Operasi ini dilakukan dengan mengurangkan n pada u, u adalah elemen set
integer modulo n jika hasil pengurangan adalah negatif, jika terjadi maka fungsi
monpro() mengembalikan nilai u, dan jika hasilnya nol atau positif berarti u bukan
elemen integer modulo n dan fungsi monpro mengembalikan nilai u n. Ini
berarti

menguntungkan dari segi waktu untuk menghitung u n dibanding

menggunakan komparator gerbang logika. Fungsi montgomeri Multiflication,


monpro() dalam perangkat lunak yang dibuat Adnan dalam bahasa C terdiri dari
3 operasi perkalian integer multi presisi dan 1 operasi pengurangan. Operasi
pengurangan ini dilakukan jika hasil perkalian bukan merupakan elemen dari set
integer modulo n.
4.3 Desain Hardware
4.3.1

Algoritma

Perangkat keras pengali integer multi-presisi dengan panjang k bit


dirancang menggunakan algoritma perkalian standar (pencil dan paper
algoritm). Algoritma ini sangat mudah di implementasikan baik dengan
perangkat keras maupun perangkat lunak. Untuk mengurangi siklus

37

clock yang diperlukan dan memudahkan implementasi digunakan radiks


2w dengan w = 4.
Algoritma dari maksud tersebut adalah sebagai berikut :
1.

for i = 0 to s 1

2.

3.

for j = 0 to s -1

4.

i.

(C,S)

ii.

wi+j

wi+j + xjyi + C
S

return (w2s-1 ... w1w0)16

Dengan demikian s adalah banyaknya word yang diperlukan untuk


merepresentasikan bilangan biner x dan y k bit dengan word size 4 bit,
sehingga s = k/4 word. Pada langkah 4, dilakukan operasi :
(C,S)

wi+j + xjyi + C

Dengan demikian perangkat keras pengali dirancang agar mampu


.melakukan operasi perkalian dalam jumlah tersebut
4.3.2

Pemodelan Path Data

Salah satu cara untuk meningkatkan kecepatan komputasi adalah


menggunakan teknik paralel. Kemampuan mengeksekusi bagian-bagian
program secara paralel, diperlukan setiap bagian independen terhadap
bagian yang lain. Dependensi ini sangat erat kaitannya dengan
ketergantungan data dalam urutan program, hal ini disebut data
dependence.
Untuk

memvisualisasikan

data

dependensi

ini

digunakan

data

dependence graph. Node (titik) dari cara ini berkaitan dengan


operasi/instruksi atau statemen dari program dan tanda panah berkaitan
dengan aliran data dari operasi ke operasi. Untuk algoritma perkalian
integer multi-presisi satu satunya statemen komputasi adalah statemen:
(C,S)

wi-j + xjyi + C

Sehingga setiap node dari data dependence graph menggambarkan


operasi tersebut di atas. Tanda panah menunjukan aliran data partial
product (C,S).
Data

dependency

graph

yang

digambarkan

pada

menggambarkan operasi perkalian s word yi dan s word xj.

38

gambar

5.2

Kolom dari data dependence graph menunjukan bahwa word y i dikalikan


ke seluruh word x0. Partial product 8 bit atau 2 word (1 word = 4 bit) dari
perkalian word xj dan yi yang masing-masing 4 bit. C kemudian
ditambahkan keperkalian 2 word berikutnya pada kolom yang sama yaitu
untuk word xj yang berbeda dan word y i yang sama. Sedangkan S
ditambahkan ke perkalian word xj yang sama dan word yi yang berbeda
atau pada kolom berikutnya C merupakan MSB word dari partial product
sedangkan S merupakan LSB word dari partial product.
Terlihat dari dependence graph bahwa ada potensi untuk ekploitasi
paralelisme untuk algoritma perkalian standar ini pada statemen
(C,S)

wi-j + xjyi + C.

Potensi tersebut yaitu melakukan paralelisme untuk kolom yang berbeda,


namun kolom tertentu harus menunggu 2 siklus operasi selesai dari
kolom sebelumnnya untuk menunggu kedatangan word partial product
wi+j yang bersesuaian.
Metode pencil dan paper secara detail digambarkan sebagai berikut :

Xs-1

x3

x2

x1

x0

Ys-1

y3

y2

y1

y0

__________________________________________________________
Ss-1

S3

S2

S1(x1y0)

S0(x0y0)

Ss

Ss-1

S3

S2

S1(x0y1)

Untuk x0 dan y1 operasi (C,S)


dari operasi (C,S)

wi-j + xjyi + C harus menunggu S1


w i-j + xjyi + C. Data dependency graph

digunakan untuk memodelkan arsitektur perangkat keras, berdasar


gambar 5.2 disusun suatu arsitektur pipeline, dimana node pada suatu
kolom adalah satu elemen seperti yang diperlihatkan pada gambar 4.1.
Karena elemen pemroses berikutnya harus menunggu data s dari
elemen sebelumnya maka model gambar 4.2 terdapat suatu node yang
tidak terpakai dan dinyatakan dengan bulatan terang. Dengan mengatur
ulang data dependency graph gambar 4.2 diperoleh graph yang baru
seperti gambar 4.3 dengan menambahkan input partial sum yang
ditunjukan dengan panah masuk pada sisi sebelah kiri. Sedangkan
panah keluar pada sebelah kanan adalah keluaran partial sum.

39

Dengan menugaskan tiap node dari kiri ke kanan sebagai elemen


pemroses PE0 hingga PE7, setiap elemen pemroses menerima word x j
dalam loop j untuk menghasilkan partial product dengan mengalikan
dengan word yk+7-N dengan k = 0,8,16,....S-8.
Dengan melengkapkan jumlah loop j hingga S+8 kali untuk
mempropagasikan 8 word partial product plus carry ke keluaran elemen
pemroses PE7, kemudian mengulang loop j sebanyak S/8, dan hasil
observasi dari data dependensi graph, maka model ini dapat melakukan
operasi SUM = SUM_INPUT + X.Y, dengan SUM dan SUM_ INPUT
adalah integer tak bertanda 2 x 4 x S bit, X dan Y adalah integer tak
bertanda 4 x S bit untuk word size = 4 bit.
4.3.3

Blok Arsitektur

Blok arsitektur dari pengali integer multi-presisi adalah unit pengali


pipeline yang terdiri dari 8 elemen pemroses . Setiap elemen pemroses
menerima data multiplier a 4 bit dan multiplicand 4 bit serta data input
sum S 4 bit yang menghasilkan perkalian (C,S)

S + a.b + C

Unit kontrol pipeline 4 bit xj dengan 32 bit yi. Dengan melakukan inner
loop sebanyak 128 kali, unit pipeline menghasilkan partial product 512
bit. Unit ini terdiri dari register file A 4 bit untuk menyimpan s word operan
xj, formasi linier 8 elemen pemroses, register geser 8 word 4 bit untuk
menyimpan operan yi. Digunakan 2 buah dual port RAM, satu untuk
menyimpan partial product yang kemudian akan ditambahkan ke unit
pipeline untuk melengkapkan operasi perkalian multi-presisi. Dual port
yang lain menyimpan s word operan Y dan menyimpan hasil perkalian.
Hasil perkalian disimpan ke memori ini pada saat dan cara yang sama
saat partial product

dihasilkan dan disimpan dual port ram oleh unit

pipeline dengan maksud agar dapat dikalikan kembali. Alamat efektif


untuk mengakses lokasi memori atau file register index dan register
base.
Dengan mengulang inner loop sebanyak 16 kali dalam outer loop dan
menggeser partial product sebanyak 32 bit untuk setiap outer loop dan
kemudian ditambahkan dengan partial product dari siklus outer loop
sebelumnya, unit pipeline beserta 3 buah pencacah digunakan untuk
memastikan operasi perkalian mengikuti prosedur perkalian yang
dimodelkan graph dan dispesifikasikan. Blok arsitektur pengali integer
dengan unit pengali pipeline digambarkan pada gambar 4.4

40

4.3.4

Pemodelan ASM untuk Unit Kontrol

Algoritma State Machine (ASM) digunakan untuk memodelkan prilaku


kontrol unit seperti pada gambar 4.6. ASM digunakan
memudahkan

untuk

spesifikasi

dengan

bahasa

untuk lebih

deskripsi

VHDL

dibandingkan dengan model finite state machine.


Dari model ASM tersebut, transisi state beserta sinyal-sinyal
kontrol dari unit kontrol dispesifikasikan dengan bahasa VHDL. Jika
sistem direset maka sistem akan berawal pada state 000 dan terus pada
state ini hingga sinyal start dideteksi oleh decision box (?1). Jika sinyal
start maka alamat-alamat operan dimuat ke register index dan register
base kemudian state berpindah ke state 001. State 001, delapan word
multiplican B dijemput dan delapan input sum s dupropagasikan ke
dalam pipeline unit. Kemudian state berpindah ke state 011 yang
menaikan cacahan pencacah pertama dan alamat lokasi word B dan
input sum S. Penjemputan delapan word

B dan s dihitung dengan

menggunakan pencacah dan dideteksi oleh decision box (?2) hingga


delapan perulangan. Sehingga state 001 dan 011 berulang sebanyak
delapan kali yang kemudian berpindah ke state 111. Selama satu
periode clock transisi dari state

011 ke state 111, seluruh elemen

pemroses memproses operan yang dimilikinya, dan pada state 111 hasil
pemrosesan enam elemen pemroses pertama diberikan ke elemen
pemrosesan terakhir disimpan ke dalam dual port memori. Pada state ini
juga input sum dari dual port memori diberikan ke elemen pemroses
pertama. Periode clock berikutnya state berpindah ke state 110.
Cacahan pencacah ke-2 dan alamat input sum s dan output sum s
dinaikan pada state 110 ini. State 111 dilakukan sebanyak 8 kali dan
dideteksi oleh decision box (?3) yang kemudian state akan berpindah ke
state 010 yang menaikan alamat base input sum sebanyak 8 lokasi.
Kemudian state berpindah ke state 101 yang merupakan state yang
digunakan untuk mendapatkan penundaan satu periode clock. Seluruh
proses tersebut dari state 001 hingga state 101 dilakukan sebanyak 16
kali yang diatur oleh pencacah ke3 dan dideteksi oleh decision box (?
4).

41

4.4 Simulasi
Setiap modul seperti pada gambar 4.4 mempunyai file desain VHDL, dimana
modul-modul tersebut digunakan untuk membentuk modul-modul sistem yang
lebih besar dan akhirnya menjadi top level file desain. Implementasi perangkat
keras di tujukan dengan target chip FPGA dari keluarga FLEX 10K30E.
Tabel 4.1 sumber daya FLEX10K30E yang terpakai
Sumber daya
Logic cell
Embeded cell
EAB

terpakai
636
12
3

Tabel di atas memberikan gambaran jumlah sumber daya chip FPGA yang
digunakan. Jika multiplier 512 bit x 512 bit dirancanng secara paralel yang
berarti rangkaian kombinasional 1024 input, maka akan terdapat 2 1024 suku
sum of product untuk setiap bit output, dengan ada suku product (gerbang AND)
berinput sebanyak 1024 bit.
Simulasi dilakukan untuk mengalikan integer 512 x 512 bit dalam waktu 120 us
dengan perioda sinyal clock 25 ns atau frekuensi clock = 38.46 MHz atau jumlah
siklus clock yang diperlukan adalah sekitar 4616 siklus clock.
4.5 Analisis Performa Desain Hardware
Time complexity dari pencil-and-paper algorithm dinotasikan dengan 0(k 2) bit
operation

dimana

Membandingkan

k2

adalah

performa

problem

antara

satu

size

dari

algoritma

implementasi

dalam

algoritma

bit.

dengan

implementasi lain dengan algoritma yang sama tidak cukup dengan melihat
jumlah siklus clock yang diperlukan, sebab suatu algoritma yang sama dengan
implementasi yang berbeda sering mempunyai problem size yang berbeda.
Misalnya CPU 8086 dengan instruksi perkalian 8 bit x 8 bit dalam 70 siklus clock,
problem size adalah 64 bit, hendak dibandingkan dengan CPU 80C51 dengan
instruksi perkalian 16 bit x 16 bit dalam 12 siklus clock, problem size adalah
sama dengan 256 bit, dapat dikatakan bahwa implementasi algoritma perkalian
pada CPU 80C51 lebih baik daripada implementasi pada CPU 8086, namun kita
tidak mempunyai suatu angka yang menyatakan berapa kali lebih baik CPU
80C51 terhadap CPU 8086.
Untuk mengukur performa dari rancangan, Adnan membuat suatu mesin
hipotesis, komputer x, melakukan perkalian dengan metode pencil-and-paper
algorithm (O(k2) bit operations), bekerja dengan 1 siklus clock untuk
mengoperasikan 1 bit operan. Maka untuk mengalikan integer 8 bit , komputer ini

42

membutuhkan sebanyak 64 siklus clock. Untuk membandingkan performa


rancangan sistem digital yang menjalankan suatu algoritma, digunakan indeks
performa IP yang dapat dijadikan parameter untuk mengurut performa suatu
sistem digital. Indeks tersebut dihitung dengan membagi siklus clock sistem yang
dijadikan acuan dengan siklus clock sistem yang diuji.
IP = CCref .....................................................(4.1)
CC
CCref

: jumlah siklus clock mesin acuan

CC

: jumlah siklus clock mesin teruji

Persamaan di atas menyatakan berapa kali implementasi algoritma menekan


jumlah siklus clock, dengan CCref merupakan suatu angka yang setara dengan
jumlah siklus clock mesin hipotesis yaitu komputer x atau sama dengan problem
size algoritma.
Untuk rancangan kami indeks performa yang diperoleh adalah dibandingkan
dengan komputer x dengan program perkalian 512 bit x 512 bit maka CCref =
262144, sehingga indeks performa rancangan :

IP = 262144
4616
= 56.79
Berikut tabel indeks performa dari beberapa CPU terhadap komputer x :
Tabel 4.2 Perbandingan indeks performa
CPU
8086
80C51
Rancangan

IP
0.91
21.3
56.79

CCref
82
16 2
512 2

Besaran indeks performa IP hanya mengestimasi suatu nilai eksak yang dapat
digunakan untuk membandingkan performa antara satu implementasi dengan
implementasi lain seperti halnya besarnya time complexity yang mengestimasi
waktu yang diperlukan untuk menyelesaikan algoritma. Dan untuk mendapatkan
perbandingan performa implementasi algoritma yang baik digunakan parameter
CCref yang sama. Sebab jika dimisalkan 80C51 (word size k = 16) digunakan

43

untuk menyelesaikan algoritma perkalian dengan problem size 5122 (k = 512)


maka diperlukan tambajan siklus clock. Sehingga cara yang baik adalah
menghitung jumlah total siklus clock yang diperlukan oleh CPU 80C51 atau CPU
apapun yang hendak dibandingkan, untuk menyelesaikan perkalian dengan
problem size 5122 kemudian nilai ini digunakan sebagai pembagi terhadap CCref
= 5122
5

Analisis Performa Metode Montgomery Exponential


5.1 Analisis Performa
Modular multiflication a, b mod n dengan cara klasik dilakukan perkalian dengan
problem size k2 kemudian diikuti oleh operasi reduksi modulo n, n = integer k
bit, dengan problem size k(k + c) dengan suatu nilai c > 1.
Dengan demikian problem size untuk modular multiflication klasik sama dengan
2k2 + k.c . Modular exponential dengan metode klasik ini dieksekusi dengan
problem size.
log2 d (2k 2 + k.c) ............................................(5.1)
atau
2k 2 + k 2 c untuk proses dekripsi RSA menggunakan kunci privat dk bit.
Dengan menggunakan problem size 2k2 + k, maka problem size modular
exponential sama dengan
log2 d(2k 2 + k) ............................................... (5.2)
atau
2k 3 + k 2 untuk proses dekripsi RSA menggunakan kunci privat dk bit.
Kesimpulan , metode montgomery exponential dapat lebih efisien dalam waktu
eksekusi tc adalah :
tc = sk3 + k2C 2 k 3 k2 ............................(5.3)
= k 2 (c 1)
5.2 Analisis Performa CRT
Metode CRT memecah operasi modular exponential dengan eksponen dk bit
dengan 2 operasi modular exponential dengan 2 eksponen dp dan dq yang
masing-masing berukuran k/2 bit, sehingga problem size operasi dekripsi
menggunakan metode CRT adalah :
2(2 (k/2) 3 + (k/2) 2C) ................................ .....(5.4)
2k 3 + 2k 2 C ...................................................(5.5)
4

44

Dengan membandingkan persamaan 5.3 dan 5.5 untuk proses dekripsi dengan
kunci privat d, metode CRT mengurangi problem size dengan faktor pembagi
hampir 4.
6

Penutup
Dengan uraian-uaraian di atas maka dapat diambil beberapa kesimpulan, yaitu :
1.

metode CRT mereduksi texe modular eksponensial dengan


menghasilkan dua sub-keys dengan ukuran masing-masing 512 bit dari kunci
1024 dengan faktor peningkatan kecepatan secara teoritis = 4.

2.

Metode montgomery multiplication mereduksi texe perkalian


modular yang dilakukan berulang-ulang dalam modular eksponensial secara
teoritis,

3.

tc = k 2( c 1)
Modifikasi model graph dari data dependency untuk algoritma

perkalian standar (standar pencil-and-paper) memodelkan operasi matematika


s = s + A.B secara paralel.
4.

Montgomery dengan mod n dilakukan dengan 3 perkalian


standar dan jika hasilnya bukan set integer modulo n, n dikurangkan dari hasil
perkalian tersebut.

45

DAFTAR PUSTAKA

Adnan, _____________, Tesis, Teknik Elektro ITB, Bandung, 2001

Infrastruktur Keamanan e-Banking :


http://bebas.vlsm.org/v03/com/ictwatch/paper/paper009.htm

Keamanan data dan metode enkripsi :


http://bdg.centrin.net.id/~budskman/protek.htm

Linux Security HOWTO versi Bahasa Indonesia :


http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/id/other-formats/html/IDSecurity-HOWTO.html#toc6

Pengenalan Kriptografi : http://www.tedi-h.com/papers/p_kripto.html

Email Sebagai Senjata Dari Email Kaleng Sampai spam :


http://www.neotek.co.id/0302/03021416.pdf

Studi Perbandingan Sistem-sistem Perdagangan di Internet dan Desain Protokol Cek


Bilyet Digital :
http://www.geocities.com/SiliconValley/8972/resource/komparasi/komparasi.html#daft
ar

Strategi Merancang Sekuriti Jaringan Komputer Anda :


http://www.bogor.net/idkf/idkf-1/network/network-security/strategi-merancangsekuriti-jaringan-komputer-anda-01-1998.rtf

Pertimbangan Sekuriti Pada Sistem Informasi Kelautan Nasional :


http://antareja.rvs.uni-bielefeld.de/avinanta/Publication/Kelautan/#top

Membongkar Program enkripsi FED versi 1.30 :


http://bdg.centrin.net.id/~budskman/fed.htm

Penghapusan Data Secara Permanen :


http://bdg.centrin.net.id/~budskman/wipe.htm

analyzing and comparing montgomery.:


security.ece.orst.edu/koc/papers/j37acmon.pdf

montgomery no final .. :
www.dice.ucl.ac.be/crypto/publications/ 2000/Montgomery.pdf

Implementing 1,024-bit RSA Implementing 1,024-bit RSA :


http://palms.ee.princeton.edu/fiskiran/repository/ASAP/phillips00implementing.pdf

A Methodology for High-Speed Software Implementations :


http://islab.oregonstate.edu/papers/r05hssnt.pdf

The Chinese Remainder Theorem : http://www.win.tue.nl/~henkvt/CRT.pdf

Anda mungkin juga menyukai