Bilangan Prima Implementasi Kriptografi Kurva Eliptik Dengan Algoritma Elgamal Dan Metode Pembangkitan Bilangan Prima Rabin-Miller Untuk Pengamanan File Teks

Representasi field menentukan bit-pattern mana yang akan digunakan untuk merepresentasikan bermacam-macam elemen field. Representasi dipilih untuk membuat operasi aritmatika field menjadi efisien.[1]

2.3.4 Group

Group merupakan kumpulan dari field. Terdapat tiga buah group utama yang sangat disukai oleh para ahli kriptografi yaitu :[1] 1. Group perkalian dari field bilangan prima : GFp. 2. Group perkalian dari finite field dari karakteristik 2 : GF2 n . 3. Elliptic Curve Group pada finite field F : ECF. Jika p adalah modulus dan bilangan prima, maka kompleksitas untuk mencari logaritma diskrit pada GFp pada dasarnya sama dengan memfaktorisasi sebuah integer n, dimana n adalah pemangkatan dari dua buah bilangan prima yang hampir sama panjang.[1]

2.4 Bilangan Prima

Bilangan prima adalah bilangan integer yang lebih besar dari satu yang memiliki faktor bilangan satu dan bilangan itu sendiri. Dalam proses pembangkitan bilangan prima, sering dihadapkan dengan beberapa masalah berikut ini :[8][9] 1. Berapa banyak bilangan prima yang tersedia ? Cukupkah untuk memberikan keamanan bagi kriptografi ? Ahli matematika telah menemukan bahwa jumlah bilangan prima yang tersedia pada bilangan 512 bit adalah sekitar 10 151 . 2. Mungkinkah dua orang atau lebih mendapatkan dua bilangan prima yang sama? Bila terdapat satu milyar 10 9 orang yang masing-masing berusaha mendapatkan 1000 bilangan prima, maka diperlukan hanya 10 12 bilangan prima yang berbeda untuk memenuhinya. Bandingkan 10 12 bilangan prima yang diperlukan dengan 10 151 bilangan prima yang tersedia. Bayangkan pula bila disediakan bilangan 1024 bit, maka akan tersedia bilangan prima sekitar 10 305 . Angka ini diperoleh dari jumlah bilangan prima yang kurang dari n adalah sekitar n ln n. 3. Dapatkah seseorang membuat database yang dapat menyimpan seluruh bilangan prima dari 2 hingga kurang dari 2 1024 ? Dapat, tapi juga mustahil. Bila mempunyai Universitas Sumatera Utara harddisk yang berkapasitas 10 35 word untuk mempermudah perhitungan, dianggap setiap word sanggup menyimpan satu bilangan prima, maka akan diperlukan sekitar 10 270 harddisk untuk menyimpan seluruh bilangan prima yang kurang dari 2 1024 . Selain itu, pemfaktoran bilangan prima juga tidak mudah. Bila mencari faktor prima sedemikian sulit, bagaimana dapat membangkitkan bilangan prima dengan mudah ? Triknya adalah pertanyaan ya tidak. Apakah ini bilangan prima ? Menjawab pertanyaan ini lebih mudah daripada menjawab pertanyaan yang lebih kompleks seperti berapa faktor prima dari n ?[8][9] Cara yang salah untuk mendapatkan bilangan prima adalah dengan membangkitkan bilangan acak dan kemudian mencoba memfaktorkannya. Cara yang benar adalah membangkitkan bilangan acak dan kemudian mencoba apakah merupakan bilangan prima. Terdapat beberapa metode tes peluang prima, tes menentukan apakah suatu bilangan termasuk bilangan prima atau bukan dengan tingkat keyakinan tertentu. Jadi kita tidak yakin seratus persen bahwa bilangan yang kita tes adalah betul-betul bilangan prima. [8][9]

2.4.1 Metode Pengujian Bilangan Prima Rabin-Miller

Metode untuk tes peluang prima yang paling sering digunakan adalah metode Rabin- Miller. Algoritma ini dirancang oleh Michael Rabin dengan berdasarkan beberapa ide dari Gary Miller. Algoritma pengetesan ini adalah seperti berikut :[8][9] 1. Pilih bilangan acak p untuk dites. 2. Hitung b, dimana b adalah banyaknya p – 1 dibagi 2 yaitu, b adalah pangkat terbesar dari 2, sedemikian sehingga 2b merupakan faktor dari p – 1. 3. Kemudian hitung m, sedemikian sehingga p = 1 + 2 b .m 4. Pilih bilangan acak a sedemikian sehingga a lebih kecil daripada p. 5. Set j = 0 dan set z = a m mod p. 6. Jika z = 1 atau jika z = p – 1, maka p lolos tes dan mungkin bilangan prima. 7. Jika j 0 dan z = 1, maka p bukan bilangan prima. Universitas Sumatera Utara 8. Set j = j + 1. Bila j b dan z ≠ p – 1, set z = z 2 mod p dan kembali ke tahap 4. Jika z = p – 1, maka p lolos tes dan mungkin prima. 9. Jika j = b dan z ≠ p – 1, maka p bukan bilangan prima.

2.4.2 Implementasi Pembangkit Bilangan Prima

Dalam dunia nyata, implementasi pembangkitan bilangan prima dapat berlangsung dengan sangat cepat. Salah satu implementasinya adalah sebagai berikut:[8][9] 1. Bangkitkan bilangan acak p sepanjang n bit. 2. Set bit Most Significant Bit MSB dan Least Significant Bit LSB nya ke “1”. Atau set bit paling kiri dan kanannya ke bit satu. Pengesetan bit MSB menjamin panjang bit bilangan prima yang dihasilkan sesuai dengan yang diinginkan. Pengesetan bit LSB menjamin agar bilangan acak adalah bilangan ganjil, karena bilangan prima pasti harus bilangan ganjil. 3. Periksa apakah p tidak dapat dibagi bilangan prima kecil : 2,3,5,7,11, dan seterusnya hingga bilangan prima tertinggi yang lebih kecil dari 256. Pemeriksaan ini akan mengurangi 80 peluang bahwa bilangan yang dipilih bukan bilangan prima. Artinya bila bilangan yang dipilih tidak dapat dibagi bilangan prima kecil di atas, peluang bilangan yang dipilih merupakan bilangan prima adalah 80 . Lakukan tes Rabin – Miller untuk beberapa nilai a. Bila p lolos tes untuk satu nilai a, bangkitkan nilai a lainnya. Pilih nilai a yang kecil agar perhitungan lebih cepat. Lakukan tes dengan minimal 5 macam nilai a. Bila p gagal tes, bangkitkan p lainnya dan ulangi langkah 2

2.5 Algoritma ElGamal