81
Penyelesaian : Menggunakan Algoritme 3.2.12 dengan input
dan diperoleh nilai
, yakni
= +
+ +
+ +
+ +
+ + .
= gcd ,
= +.
Karena deg
= ≠ = , maka :
Dengan menggunakan Algoritme 3.2.11 dengan input dan
= , diperoleh nilai
, yakni : =
+ . =banyaknya faktor
= . = hasil bagi
dengan =
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
= faktor ke- polinomial =
+ = hasil bagi
dengan .
= +
+ +
+ +
+ +
+ +
+ +
+ +
+ ℎ
= sisa bagi dengan
= . = .
= hasil bagi dengan
. =
+ +
+ +
+ +
+ +
+ + +
ℎ = sisa bagi
dengan = .
= .
Hasil = =
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
4. Faktorisasi Lengkap
= …
.
Algoritme faktorisasi lengkap adalah algoritme untuk memfaktorkan polinomial
∈ ℤ[ ]sehingga =
… , untuk setiap
82
adalah polinomial irredusibel atas ℤ [ ] dan setiap
, .
Algoritme ini adalah kombinasi dari Algoritme 3.2.11, 3.2.12, 3.2.13 dan 3.2.14.
Algoritme 3.2.15
Algoritme Faktorisasi Lengkap Input : polinomial
∈ ℤ[ ] Output :
= …
1. Jika
irredusibel, maka hasilnya 2.
Jika redusibel, maka lakukan langkah berikut :
a Jika polinomial hanya mempunyai 1 suku, maka hasilnya adalah
. b Jika polinomial
mempunyai lebih dari 1 suku, maka lakukan langkah berikut.
Set ←suku terkecil polinomial
, i
Jika , maka :
1 Set ←hasil bagi polinomial
dengan .
2 Untuk dari 1 sampai diperoleh = lakukan :
Set ←gunakan Algoritme 3.2.13 dengan input
dan . Set
← gcd ,
. Jika
≠ , maka : Set
←gunakan Algoritme 3.2.14 dengan input dan .
Set ←
dibagi faktor terakhir polinomial Set
←faktor terakhir polinomial .
ii Jika
= , maka lakukan langkah berikut : Untuk dari 1 sampai diperoleh
= lakukan Set
←gunakan Algoritme 3.2.13 dengan input dan .
Set ← gcd
, .
Jika ≠ , maka :
Set ←gunakan Algoritme 3.2.14 dengan input
dan . Set
← dibagi faktor terakhir polinomial
83
Set ←faktor terakhir polinomial
. Ambil hasil
= …
. Algoritme 3.2.15 diimplementasikan dengan bantuan software Maple 11,
dapat dilihat pada Lampiran 2.8.
Contoh 29 Faktorisasi Lengkap
Diketahui : =
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
Tentukan : faktorisasi lengkap dari .
Penyelesaian : adalah polinomial irredusibel berderajad 22.
Karena suku terkecil polinomial adalah
= , , maka langkah pertama memfaktorkan
adalah dengan membaginya dengan , diperoleh : =
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ Set
= +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ + Untuk dari 1 sampai diperoleh
= :
= + . Perhitungan menggunakan Algoritme 3.2.12 dengan input
dan 1 = gcd
, =
+. =
+ +
+ +
+ . =
+ . =
+ +
+ + .
=
+ . Perhitungan menggunakan Algoritme 3.2.12 dengan input dan 2
= gcd ,
= + + . =
+ + +
+ +
+ . =
+ + . =
+ +
+ + .
84
=
+ . Perhitungan menggunakan Algoritme 3.2.12 dengan input dan 3
= gcd ,
= . Karena
= , maka proses selanjutnya kembali lagi mencari ,
atau dengan kata lain diperoleh : =
+ +
+ + .
= , dan =
= +
+ +
+ .
= + . Perhitungan menggunakan Algoritme 3.2.12 dengan input
dan 4 = gcd
, = +
+ + + .
= +
+ + +
. =
+ +
+ + . = .
Jadi =
. =
= +
+ +
+ +
+ + =
+ +
+ +
+ +
+ 3.2.8.2
Solusi Masalah Logaritma Diskret
pada
∗
dengan Algoritme Index Calculus
Misalkan adalah sebuah generator grup multiplikatif
∗
, dengan order
∗
adalah =
− , ∈
∗
dan polinomial
irredusibel berderajad atas
ℤ . Masalah logaritma diskret adalah menentukan ,
−, sedemikian sehingga log
mod .
Untuk menentukan log
mod , dengan Algoritme Index Calculus
berikut langkah-langkahnya. Pertama pilih sebuah subset
= { , , … , } dari
∗
, yang disebut faktor basis , sedemikian sehingga elemen-elemen
∗
secara efisien dapat dinyatakan sebagai produk dari elemen-elemen di
. Dengan , , … ,
adalah merupakan polinomial-polinomial irredusibel atas ℤ . Dalam
85
Menezes et al. 1997, belum ada ketentuan berapa banyak polinomial basis yang harus diambil atau dipilih. Dalam tulisan ini faktor basis
diambil atau dipilih dari polinomial irredusibel-polinomial irredusibel atas
ℤ yang berderajad kurang dari atau sama dengan setengah .
Langkah kedua menghitung logaritma elemen-elemen . Caranya pilih integer acak ,
−, hingga dapat dinyatakan sebagai produk
elemen-elemen ; =
, .
Peluang keberhasilan memfaktorkan ini tergantung dari pemilihan
faktor basis . Jika besar maka peluang acak setiap anggota grup multiplikatif
∗
dapat difaktorkan sebagai elemen-elemen akan lebih besar, sebaliknya jika ukuran lebih kecil maka peluang kegagalan memfaktorkan elemen-elemen
grup multiplikatif
∗
akan lebih besar. Disisi lain ukuran lebih besar
mengakibatkan sistem persamaan linear yang harus dikumpulkan menjadi lebih banyak dan tahapan untuk menyelesaikan sistem persamaan linearnya pun
menjadi lebih rumit dan panjang. Jika
sudah dapat difaktorkan, selanjutnya logaritmakan kedua ruas persamaan
dengan basis untuk memperoleh persamaan : =
= .
. …
log = log
. .
… log
= log + log
+ log + + log
log mod
Prosedur ini diulang hingga diperoleh paling sedikit persamaan, sedemikian
sehingga sistem persamaan linear yang diperoleh tersebut konsisten dan memiliki solusi tunggal. Suatu persamaan linear disebut konsisten jika memiliki paling
sedikit satu penyelesaian, disebut takkonsisten jika tidak memiliki penyelesaian.
86
Langkah ketiga, sistem persamaan linear yang diperoleh pada langkah 2 di atas diselesaikan untuk mendapatkan
log , untuk
. Langkah keempat menentukan
. Pilih integer acak , −
hingga dapat dinyatakan sebagai produk elemen-elemen :
, Langkah kelima menghitung
log . Logaritmakan kedua ruas persamaan
dengan basis , diperoleh : =
= .
. …
log = log
. .
… log
+ log = log
+ log
+ log
+ + log + log
= log
mod
= log = − +
log mod
Berikut Algoritme Index Calculus pada
∗
.
Algoritme 3.2.16
Algoritme Index Calculus untuk menentukan masalah logaritma diskret pada
∗
Deskripsi : menentukan solusi logaritma diskret , dimana mod
. Input :
generator grup multiplikatif
∗
,
∗
berorder =
− , ∈
∗
. Output : logaritma diskret
log mod
1 Memilih faktor basis .
= { , , … , } subset
∗
, sedemikian sehingga setiap elemen-elemen
∗
secara efisien dapat dinyatakan sebagai produk dari elemen-elemen di .
2 Pilih bilangan acak ,
−. Coba nyatakan sebagai product
dari elemen-elemen seperti berikut :
87
mod =
dengan .
Jika berhasil maka logaritmakan kedua ruas sehingga diperoleh =∑
log mod . Ulangi langkah ini hingga diperoleh paling
sedikit persamaan. 3
Menentukan nilai dari log
, .
4 Pilih integer acak ,
−. Coba tentukan sebagai product
dari elemen-elemen di sehingga = ∏
, dengan .
5 Jika berhasil maka logaritmakan kedua ruas sehingga
log =
∑ log
− mod . Solusi logaritma diskret adalah : = log
= − + log
mod
Dalam Menezes et al. 1997 nilai harapan kompleksitas waktu Algoritme Index Calculus adalah
, , dimana = ,
adalah konstanta. Implementasinya dengan bantuan sofware Maple 11 dapat dilihat pada Lampiran
3.9.
Contoh 30 Menentukan masalah logaritma diskret pada grup siklik
=
∗
dengan Index Calculus Diketahui :
polinomial primitif =
+ +
+ + ,
generator
∗
, dan = +
+ . Tentukan
log mod
. Penyelesaian :
Pilih
⊆
∗
. = { ,
+ , + + , +
+ , +
+ }.
= , mod
= +
+ =
+ +
log = log
+ +
= log + log
+ +
= , mod
= +
+ +
88
= +
+ +
+ +
log = log
+ +
+ +
+ = log
+ + log +
+ + log
+ +
= ,
mod =
+ = +
+ +
log = log
+ +
+ = log
+ + log +
+ =
, mod
= +
+ +
+ =
+ +
+ +
log = log
+ +
+ +
= log + log
+ +
+ log +
+ =
, mod
= +
+ = +
+ +
+ . log
= log +
+ +
+ = log
+ +
+ log +
+
Dengan = log
, = log
+ , = log
+ + ,
= log +
+ , dan = log
+ + , maka dari
persamaan , , , dan diperoleh :
+ mod 255
+ +
mod 255 +
mod 255 +
+ mod 255
+ mod 255
Penyelesaian 5 sistem kongruensi di atas adalah :
= , = − , = ,
= ,
= .
Selanjutnya pilih ,
−. = , maka :
= +
+ mod
= +
+ . = .
Sehingga log
mod = −
mod =
. Berikut Tabel Nilai Harapan Kompleksitas Waktu Algoritme untuk
Algoritme Exhaustive Search, Baby-Step Giant-Step, Baby-Step Giant-Step 2,
89
Baby-Step Giant-Step 3, Naif Square, Pollard’s rho, Pohlig Hellman, dan Index Calculus.
Tabel 3.2.17 Nilai Harapan Kompleksitas Waktu Algoritme
No Algoritme
Bentuk Oh-Besar 1
Exhaustive Search O
2 Baby-Step Giant Step
O √
3 Baby-Step Giant Step 2
O √
4 Baby-Step Giant Step 3
O √
5 Naif Square
O √
6 Pollard’s rho
O √
7 Pohlig Hellman
∑ log
+ 8
Index Calculus , , =
,
3.3 KOMPUTASI MASALAH LOGARITMA DISKRET PADA