Metode Silver-Pohlig-Hellman

15.1 Metode Silver-Pohlig-Hellman

Untuk bilangan prima p, GF(p) merupakan suatu finite field. Jika p − 1 dapat diuraikan menjadi produk bilangan-bilangan prima yang kecil, maka logaritma diskrit dalam GF(p) ∗ dapat dikalkulasi dengan cepat menggunakan metode Silver-Pohlig-Hellman. Metode ini menggunakan fakta bahwa karena GF(p) ∗ mempunyai p − 1 elemen, maka aritmatika multiplicative group untuk pangkat suatu elemen dari GF(p) ∗ dapat dilakukan modulo p − 1. Berikut adalah bagaimana metode Silver-Pohlig-Hellman mencari solusi untuk k, 0 ≤ k < p−1, jika g generator untuk GF(p) ∗ dan u = g k .

290 BAB 15. MATEMATIKA VIII - LOGARITMA DISKRIT Langkah pertama dalam metode Silver-Pohlig-Hellman adalah mengkom-

putasi, untuk setiap bilangan prima p i yang membagi p − 1, akar-akar pangkat p i dari 1,

r p i ,j =g j(p−1)/p i ,

dimana g adalah generator untuk GF(p) ∗ dan j = 0, 1, . . . , p i − 1. Kita simpan {r p i ,j } 0≤j<p i dalam sebuah tabel.

Langkah berikutnya adalah mencari solusi untuk k modulo p α i i untuk setiap bilangan prima p i yang membagi p −1, dimana α i adalah banyaknya p i (pangkat dari p i ) dalam uraian p − 1. Kita dapat tuliskan

p i −1 −1 i (mod p α i i ). Jika kita bisa temukan k 0 ,k 1 ,...,k α i −1 maka kita akan dapatkan nilai un-

k ≡k 0 +k 1 p i +k 2 p 2 +...+k

tuk k (mod p α i −1 i ). Kita akan gunakan aritmatika GF(p) dalam mencari k 0 . Pertama, kita kalkulasi u (p−1)/p i untuk mendapatkan akar pangkat p i dari 1 (karena u p−1 = 1). Karena u = g k dan (k p +k p 2 +...+k

−1 p i )/p i adalah suatu bilangan bulat, kita dapatkan

α i −1

u (p−1)/p i = g k(p−1)/p i

= g (k 0 +k 1 p i +k 2 p 2 i +...+k αi−1 p αi−1 i )(p−1)/p i

= g k 0 (p−1)/p i = r p i ,k 0 .

Jadi kita dapat periksa tabel {r p i ,j } 0≤j<p i untuk mencari m dimana r p i ,m = r p i ,k 0 dan mendapatkan k 0 = m . Untuk mencari k 1 , kita buat u 1 = u/g k 0 ,

jadi logaritma diskrit dari u 1 adalah

k −k 0 ≡k 1 p i +k 2 p 2 i +...+k α i −1 p α i −1 i (mod p α i i ). Karena u i adalah pemangkatan dengan p i ,u (p−1)/p

1 1 = 1 maka kita dapatkan

u (p−1)/p i 1 = g (k−k 0 )(p−1)/p i

= g (k 1 +k 2 p i +...+k αi−1 p αi−2 i )(p−1)/p i = g k 1 (p−1)/p i = r p i ,k 1 .

Lagi, kita gunakan tabel {r p i ,j } 0≤j<p i untuk mendapatkan k 1 . Jadi pola untuk mencari k 0 ,k 1 ,...,k α i −1 sudah jelas. Untuk setiap j = 1, 2, . . . , α i − 1, kita buat

u j = u/g k 0 +k 1 p i +...+k j−1 p j−1 i ,

15.1. METODE SILVER-POHLIG-HELLMAN 291 yang mempunyai logaritma diskrit ekuivalen dengan k j

j p i +...+k α

i −1 p −1 i

(mod p j

i ). Karena u j merupakan pemangkatan dengan p i , maka u (p−1)/p j i j =1 dan kita dapatkan

j αi−1 p αi−j−1 i )(p−1)/p i

(p−1)/p u j+1 i = g (k j +k j+1 p i +...+k

= g k j (p−1)/p i = r p i ,k j .

Kita cari k j menggunakan tabel. Kita gabungkan hasilnya untuk mendapatkan

0 +k p i +k 2 p 2 ≡k i 1 i −1 +...+k α i −1 p i (mod p i i ). Langkah terahir setelah mendapatkan k modulo p α i i untuk setiap p i yang

membagi p adalah menggabungkan hasil menggunakan Chinese Remainder Theorem (lihat bagian 10.2) untuk mendapatkan k modulo p.

Sebagai contoh penggunaan metode Silver-Pohlig-Hellman mari kita cari logaritma diskrit dari 28 dengan basis 2 dalam GF(37) ∗ (2 adalah generator untuk GF(37) ∗ ). Jadi kita ingin solusi untuk k dimana

28 ≡2 k (mod 37).

Karena p = 37 maka

Jadi p 1 = 2, α 1 = 2, p 2 = 3 dan α 2 = 2. Untuk langkah pertama, kita dapatkan

Jadi langkah pertama menghasilkan tabel

r 2,0 = 1, r 2,1 = 36, r 3,0 = 1, r 3,1 = 26, r 3,2 = 10.

Berikutnya untuk p 1 = 2 kita kalkulasi 28 36/2 ≡ 1 (mod 37). Dari tabel kita dapatkan r 2,0 , jadi k 0 = 0. Kemudian kita kalkulasi 28 36/4 ≡ 36 (mod 37), dan dari tabel kita dapatkan k 1 = 1. Jadi k = 0 + 1 · 2 = 2 dan kita dapatkan

k ≡ 2 (mod 4).

292 BAB 15. MATEMATIKA VIII - LOGARITMA DISKRIT Berikutnya untuk p 2 = 3 kita kalkulasi 28 36/3 ≡ 26 (mod 37). Dari tabel kita

dapatkan k 0 = 1. Kemudian kita kalkulasi 14 36/9 ≡ 10 (mod 37), dan dari tabel kita dapatkan k 1 = 2. Jadi k = 1 + 2 · 3 = 7 dan kita dapatkan

k ≡ 7 (mod 9).

Menggunakan Chinese Remainder Theorem kita dapatkan k = 34, jadi

28 ≡2 34 (mod 37).

Tentunya contoh diatas tidak mencerminkan potensi metode karena hanya melibatkan bilangan-bilangan yang kecil. Metode Silver-Pohlig-Hellman cukup efisien jika setiap bilangan prima yang membagi p − 1 relatif kecil, meskipun p sendiri sangat besar. Akan tetapi jika ada bilangan prima yang besar (con- tohnya 50 digit) yang membagi p − 1 maka metode Silver-Pohlig-Hellman tidak akan berdaya karena perlu membuat tabel yang sangat besar untuk langkah pertama.

Ada varian metode Silver-Pohlig-Hellman yang menggunakan metode baby steps - giant steps untuk mencari k 0 ,k 1 ,...,k α i −1 . Untuk mencari k 0 , kita buat

v=u p−1/p i = (g p−1/p i ) k 0 =h k 0

dimana h = g p−1/p i . Kita pecahkan v = h k 0 menggunakan metode baby steps - giant steps dimana order dari h adalah n = (p − 1)/p i .