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