• Tidak ada hasil yang ditemukan

HASIL DAN PEMBAHASAN

2. mp_div_mod

 +

=

, 1

min

'

1 1

B

b

a

B

a

q

n n n

B adalah basis yang digunakan. Jika pada persamaan di atas nilai bn-1 a / b,

maka q’-2 q q(Knuth 1998, diacu dalam Welschenbach 2005). Dengan asumsi bahwa nilai bn-1 mendekati nilai B, maka nilai q’ adalah q’-2 ≤ q ≤ q’.

Proses normalisasi pada fungsi mp_div

hanya akan mengubah nilai sisa bagi pada proses pembagian tanpa mengubah nilai hasil bagi. Oleh karena itu, untuk mendapatkan nilai sisa bagi yang sebenarnya diperlukan proses denormalisasi yaitu dengan membagi sisa bagi dengan k. Algoritme fungsi mp_div

dapat dilihat pada Lampiran 1.

2. mp_div_mod

Fungsi mp_div_mod merupakan fungsi pembagian yang digunakan dalam field prima dimana pembagian suatu bilangan a oleh b merupakan perkalian bilangan a dengan b-1. Jika hasil yang diperoleh bukan merupakan anggota dalam field tersebut , maka hasil tersebut harus dilakukan proses reduksi. Algoritme fungsi mp_div_mod

adalah sebagai berikut:

Input : mp_int a, mp_int b, dan mp_int p Output : c =( a / b) mod p 1. Inisialisasi d 2. d b-1 (mp_invmod) 3. c a b-1 (mp_mul) 4. If c = a c 0 ( mp_zero) 5. Else if c > a c c mod p (mp_mod) 6. Return ( MP_OKAY ) e. Reduksi

Reduksi merupakan operasi yang dilakukan untuk mencari nilai sisa bagi dari pembagian dua bilangan mp_int sehingga hasil yang diperoleh merupakan anggota field prima. Fungsi dalam librari yang digunakan untuk melakukan operasi reduksi yaitu:

mp_mod

Algoritme fungsi mp_mod menggunakan algoritme pembagian klasik sama seperti pada fungsi mp_div dimana output dari fungsi mp_div adalah nilai hasil bagi dan nilai sisa bagi. Nilai sisa bagi inilah yang diperlukan oleh fungsi mp_mod.

f. Invers Perkalian

Invers perkalian suatu bilangan mp_int a adalah a-1 dengan a a-1 = 1. Nilai invers tersebut diperlukan dalam operasi pembagian pada field prima. Fungsi dalam librari yang digunakan untuk melakukan operasi invers perkalian yaitu:

mp_invmod

Fungsi mp_invmod digunakan untuk mencari nilai invers perkalian pada suatu bilangan mp_int a pada field prima p. Algoritme yang digunakan fungsi ini adalah extended Euclidean. Algoritme ini menggunakan operasi pembagian dalam prosesnya sehingga membutuhkan cost yang cukup tinggi. Algoritme fungsi

mp_invmod adalah sebagai berikut: Input : mp_int a dan mp_int p Output : c = a-1

1.Inisialisasi q, r, y1, y2, mul, y, ta, dan tb

2. ta p 3. tb a 4. y2 1 5. If b=0 Return (MP_VAL) 6. While tb≠ 0 q ta / tb r ta mod tb y y1 – q y2 ta tb tb r y1 y2 y2 y 7. c y1 mod p

8. Bersihkan variabel sementara 9. Return ( MP_OKAY )

g. Eksponensial

Operasi eksponensial merupakan operasi yang berperan penting dalam kriptografi kunci asimetrik. Operasi ini digunakan dalam proses enkripsi dan dekripsi. Fungsi dalam librari yang digunakan untuk melakukan operasi eksponensial yaitu:

mp_exp_mod

Fungsi mp_exp_mod merupakan fungsi eksponensial yang digunakan pada field prima. Algoritme yang digunakan pada fungsi ini adalah left to right exponentiation. Algoritme ini bekerja dengan menggunakan nilai biner dari bilangan pemangkatnya (b). Algoritme ini melakukan proses perkalian multipresisi sebanyak n + t dengan n adalah panjang bit b dan t adalah banyaknya bit b yang

bernilai 1. Algoritme fungsi mp_exp_mod

adalah sebagai berikut:

Input : mp_int a, mp_int b, dan mp_int p Output : c = abmod p

1. c 1

2. x 1 << bitlength(basis) -1 3. For i from b.used-1 to 0 temp bi

For j from 0 to bitlength(basis)-1 c c2 mod p If temp & x ≠ 0 c (c a) mod p temp temp << 1 4. Return ( MP_OKAY ) Pengujian

Pengujian dilakukan dengan cara membandingkan output yang dihasilkan sistem dengan output yang dihasilkan oleh software pembanding sehingga dapat diketahui nilai kebenaran dari output tersebut. Software yang digunakan sebagai pembanding adalah MAPLE 12. Pengujian dilakukan sebanyak 10 kali untuk masing-masing operasi dan dihasilkan output yang benar. Untuk mengetahui kinerja sistem, dihitung nilai total waktu eksekusinya. Total waktu eksekusi dari hasil pengujian terhadap masing-masing fungsi aritmatik field prima dapat dilihat pada tabel-tabel di bawah ini. Tabel 5 Total waktu eksekusi fungsi

penjumlahan pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0000028 0.000475 512 0.001963 0.0000028 0.001966 1024 0.010542 0.0000036 0.010545

Tabel 5 di atas menunjukkan bahwa total waktu konversi basis (dari basis 10 ke basis 232 kemudian dikonversi kembali dari basis 232 ke basis 10) jauh lebih besar dari waktu operasi penjumlahan. Oleh karena itu, proses konversi basis sangat mempengaruhi total waktu eksekusi operasi penjumlahan.

Tabel 6 Total waktu eksekusi fungsi pengurangan pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0000029 0.000475 512 0.001963 0.0000035 0.001967 1024 0.010542 0.0000041 0.010546

Tabel 6 di atas menunjukkan bahwa total waktu eksekusi operasi pengurangan sama seperti operasi penjumlahan. Hal ini dikarenakan banyaknya proses pada operasi pengurangan dan operasi penjumlahan adalah sama atau dengan kata lain kedua proses ini memiliki kompleksitas yang sama.

Tabel 7 Total waktu eksekusi fungsi perkalian pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0000353 0.000507 512 0.001963 0.0000977 0.002061 1024 0.010542 0.0003669 0.010909

Tabel 7 di atas menunjukkan bahwa total waktu eksekusi operasi perkalian tidak berbeda jauh dengan operasi penjumlahan dan pengurangan. Hal ini disebabkan perbandingan antara total waktu konversi basis dan waktu operasi sangat besar. Akan tetapi, jika dilihat pada waktu operasinya, waktu operasi pada perkalian jauh lebih besar dari operasi penjumlahan dan pengurangan.

Tabel 8 Total waktu eksekusi fungsi pembagian pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0043139 0.004786 512 0.001963 0.0065998 0.008563 1024 0.010542 0.0190874 0.029629

Tabel 8 di atas menunjukkan bahwa total waktu konversi basis pada operasi pembagian lebih kecil dari pada waktu operasinya tetapi perbedaannya tidak terlalu signifikan. Akan tetapi, jika hanya dilihat pada waktu operasinya, operasi pembagian memerlukan waktu yang jauh lebih besar dari operasi perkalian. Hal ini disebabkan jumlah proses pada operasi pembagian jauh lebih banyak dari operasi perkalian dimana pada operasi pembagian terdapat proses invers dan juga perkalian. Tabel 9 Total waktu eksekusi fungsi

eksponensial pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0121269 0.012599 512 0.001963 0.0614644 0.063428 1024 0.010542 0.4215481 0.432090

Tabel 9 di atas menunjukkan bahwa waktu operasi pada operasi eksponensial jauh lebih besar dari total waktu konversi basisnya. Hal itu menyebabkan total waktu eksekusi operasi eksponensial tidak berbeda jauh dengan waktu operasinya.

KESIMPULAN DAN SARAN

Kesimpulan

Bilangan besar direpresentasikan dalam basis 232 pada komputer 32 bit. Representasi ini akan membutuhkan jumlah digit array paling sedikit bila dibandingkan dengan representasi lainnya sehingga efisien dalam penggunaan memori. Untuk bilangan 1024 bit hanya dibutuhkan 32 digit array. Semakin sedikit digit array yang dibutuhkan untuk merepresentasikan bilangan besar, maka semakin cepat komputasi pada bilangan besar tersebut.

Dari pengujian yang dilakukan sebanyak 10 kali untuk masing-masing operasi pada field prima, sistem menghasilkan output yang benar. Pada bilangan 1024 bit, operasi penjumlahan membutuhkan waktu eksekusi sebesar 0.010545s, operasi pengurangan membutuhkan waktu eksekusi sebesar 0.010546 s, operasi perkalian membutuhkan waktu eksekusi sebesar 0.010909 s, operasi pembagian membutuhkan waktu eksekusi sebesar 0.029629s, dan operasi pengurangan membutuhkan waktu eksekusi sebesar 0.432090s.

Tabel 6 Total waktu eksekusi fungsi pengurangan pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0000029 0.000475 512 0.001963 0.0000035 0.001967 1024 0.010542 0.0000041 0.010546

Tabel 6 di atas menunjukkan bahwa total waktu eksekusi operasi pengurangan sama seperti operasi penjumlahan. Hal ini dikarenakan banyaknya proses pada operasi pengurangan dan operasi penjumlahan adalah sama atau dengan kata lain kedua proses ini memiliki kompleksitas yang sama.

Tabel 7 Total waktu eksekusi fungsi perkalian pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0000353 0.000507 512 0.001963 0.0000977 0.002061 1024 0.010542 0.0003669 0.010909

Tabel 7 di atas menunjukkan bahwa total waktu eksekusi operasi perkalian tidak berbeda jauh dengan operasi penjumlahan dan pengurangan. Hal ini disebabkan perbandingan antara total waktu konversi basis dan waktu operasi sangat besar. Akan tetapi, jika dilihat pada waktu operasinya, waktu operasi pada perkalian jauh lebih besar dari operasi penjumlahan dan pengurangan.

Tabel 8 Total waktu eksekusi fungsi pembagian pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0043139 0.004786 512 0.001963 0.0065998 0.008563 1024 0.010542 0.0190874 0.029629

Tabel 8 di atas menunjukkan bahwa total waktu konversi basis pada operasi pembagian lebih kecil dari pada waktu operasinya tetapi perbedaannya tidak terlalu signifikan. Akan tetapi, jika hanya dilihat pada waktu operasinya, operasi pembagian memerlukan waktu yang jauh lebih besar dari operasi perkalian. Hal ini disebabkan jumlah proses pada operasi pembagian jauh lebih banyak dari operasi perkalian dimana pada operasi pembagian terdapat proses invers dan juga perkalian. Tabel 9 Total waktu eksekusi fungsi

eksponensial pada field prima

Bit Total Waktu Konversi Basis (s) Waktu Operasi ( s) Total Waktu (s) 256 0.000472 0.0121269 0.012599 512 0.001963 0.0614644 0.063428 1024 0.010542 0.4215481 0.432090

Tabel 9 di atas menunjukkan bahwa waktu operasi pada operasi eksponensial jauh lebih besar dari total waktu konversi basisnya. Hal itu menyebabkan total waktu eksekusi operasi eksponensial tidak berbeda jauh dengan waktu operasinya.

KESIMPULAN DAN SARAN

Kesimpulan

Bilangan besar direpresentasikan dalam basis 232 pada komputer 32 bit. Representasi ini akan membutuhkan jumlah digit array paling sedikit bila dibandingkan dengan representasi lainnya sehingga efisien dalam penggunaan memori. Untuk bilangan 1024 bit hanya dibutuhkan 32 digit array. Semakin sedikit digit array yang dibutuhkan untuk merepresentasikan bilangan besar, maka semakin cepat komputasi pada bilangan besar tersebut.

Dari pengujian yang dilakukan sebanyak 10 kali untuk masing-masing operasi pada field prima, sistem menghasilkan output yang benar. Pada bilangan 1024 bit, operasi penjumlahan membutuhkan waktu eksekusi sebesar 0.010545s, operasi pengurangan membutuhkan waktu eksekusi sebesar 0.010546 s, operasi perkalian membutuhkan waktu eksekusi sebesar 0.010909 s, operasi pembagian membutuhkan waktu eksekusi sebesar 0.029629s, dan operasi pengurangan membutuhkan waktu eksekusi sebesar 0.432090s.

Saran

Penelitian ini dapat dikembangkan lebih lanjut dengan menggunakan algoritme lain yang lebih baik. Untuk operasi perkalian, dapat digunakan algoritme Karatsuba. Jika dilihat dari kompleksitasnya, algoritme Karatsuba mempunyai kompleksitas yang lebih baik dari algoritme schoolbook sehingga diharapkan dapat mempercepat operasi perkalian. Untuk operasi reduksi, dapat digunakan algoritme Montgomery. Algoritme Montgomery merupakan algoritme reduksi yang mengganti operasi pembagian pada algoritme klasik dengan operasi lain yang less-expensive sehingga diharapkan dapat mempercepat proses reduksi.

DAFTAR PUSTAKA

Burnett S, Paine S. 2001. RSA Security’s Official Guide to Cryptography. New York: McGraw-Hill.

Denis TS. 2006. BigNum Math: Implementing Cryptographic Multiple Precision Arithmetic. Canada: Syngress Publishing, Inc.

Hankerson D, Menezes A, Vanstone S. 2004. Guide to Elliptic Curve Cryptography. New York: Springer.

Knuth D. 1998. The Art of Computer Programming. Addison-Wesley, Reading, MA.

Pressman R. 2001. Software Engineering: a Practitioner’s Approach. New York: McGraw-Hill.

Weimerskirch A, Paar C. 2006. Generalizations of the Karatsuba Algorithm for Efficient Implementations. http://www.crypto.rub.de/ imperia/md/content/texte/publications/tecrep orts/kaweb.pdf [3 November 2010].

Welschenbach M. 2005. Cryptography in C and C++. New York: Springer.

IMPLEMENTASI ARITMATIK FIELD PRIMA

Dokumen terkait