17
Definisi 2.5.2 Suatu sistem persamaan linear dikatakan homogen jika konstanta-
konstanta di ruas kanan semuanya nol. Sistem-sistem homogen selalu konsisten Leon 1998.
Teorema 2.5.3 Sistem persamaan linear homogen
× memiliki penyelesaian taktrivial jika
Leon 1998.
2.6 Algoritme Berlekamp’s Q-matrix
Algoritme 2.6.1 Algoritme Berlekamp’s Q-Matrix
Input : Polinomial monik bebas kuadrat berderajad dalam
[ ]. Output : Faktorisasi
dalam polinomial irredusibel monik. 1.
Untuk setiap ,
−, hitung polinomial mod
= ∑
, ∈
. 2.
Bentuk matriks ×
3. Tentukan basis
, , … , untuk ruang null pada matriks
− , dengan matriks identitas
× . Banyaknya faktor irredusibel pada adalah .
4. ← {
}. 5.
Untuk , lakukan langkah berikut :
5.1 Untuk setiap polinomial ℎ
∈ , degℎ , lakukan langkah berikut
Hitung gcd ℎ
, − , untuk setiap ∈ , dan ganti ℎ
pada dengan semua polinomial hasil perhitungan gcd yang berderajad
. 6.
Hasilnya adalah polinomial-polinomial F yang berupa faktor-faktor irredusibel
Menezes et al. 1997.
2.7 Kompleksitas Waktu Asimptotik
Algoritme aritmetik yang dihasilkan dalam penelitian ini akan dianalisis dari segi fungsi kompleksitas waktu time-complexity function, yaitu sebagai
fungsi untuk mengukur banyaknya operasi dalam suatu algoritme yang mempunyai variabel input
. Yang dimaksud dengan banyaknya operasi adalah banyaknya operasi dasar jumlah, kurang, kali dan bagi ditambahkan dengan
assignment dan perbandingan ekspresi logika Guritman 2004. Hal ini perlu
18 untuk mengetahui kinerja algoritme. Kinerja algoritme akan tampak untuk
besar, bukan pada kecil. Langkah pertama dalam pengukuran kinerja algoritme adalah membuat
makna sebanding. Gagasannya adalah dengan menghilangkan faktor koefisien di dalam ekspresi
. Sebagai contoh, andaikan bahwa kompleksitas waktu terburuk dari sebuah algoritme adalah
= +
+ . Untuk besar,
pertumbuhan sebanding dengan
, suku + menjadi tidak berarti
dibandingkan . Suku-suku yang tidak mendominasi perhitungan pada rumus
dapat diabaikan, sehingga kompleksitas waktu adalah
dengan mengabaikan koefisien 2, ditulis
= .
Definisi 2.7.1
= dibaca ”
adalah ” artinya
berorder paling besar bila terdapat konstanta C dan
sedemikian sehingga , untuk
Munir 2001.
Teorema 2.7.2 Bila
= +
+ + +
adalah polinom derajad
maka =
Munir 2001. Setelah mendefinisikan fungsi
untuk suatu algoritme, kemudian dengan Tabel Oh-Besar Menezes et al. 1997 kita tentukan order dari
sebagai ukuran efisiensi algoritme yang bersangkutan.
Dalam tabel berikut diberikan beberapa bentuk Oh-Besar yang sering muncul dalam aplikasi analisis algoritme Guritman 2004. Urutan batasan lebih
baik disusun dari atas ke bawah.
Tabel 2.7.1 Oh-Besar Bentuk Oh-Besar
Nama
O1 konstan
Olog
2
n logaritmik
On linear
On log
2
n n log
2
n On
2
kuadratik On
3
kubik On
m
, m = 0, 1, 2, ... polinomial
Oc
n
, c 1 eksponensial
On faktorial
19
BAB III HASIL DAN PEMBAHASAN
Pada bab ini akan dijelaskan hal-hal yang berhubungan dengan masalah logaritma diskret pada
dan bagaimana mengeksplorasinya dengan menggunakan algoritme Exhaustive Search, Baby-Step Giant-Step, Pollard’s rho,
Pohlig-Hellman, dan Index Calculus.
3.1
MASALAH LOGARITMA DISKRET PADA FINITE FIELD
3.1.1 FINITE FIELD
Galois Field adalah nama populer untuk field dengan jumlah elemen terbatas finite. Disebut Galois Field, sebagai penghargaan terhadap Evariste
Galois yang menemukan hubungan antara grup dan persamaan polinomial. Galois Field dinotasikan
, berorder , dengan
prima dan integer positif.
Jika = , maka menurut Teorema 2.3.28
atau bisa juga dinotasikan ℤ
adalah integer modulo p berbentuk field berorder . Setiap operasi aritmetikanya dilakukan dalam modulo
agar hasilnya tetap berada dalam daerah .
Selanjutnya pembahasan akan difokuskan pada .
Berdasarkan Teorema 2.3.31 adalah perluasan field
ℤ . Berdasarkan Definisi 2.3.20
ℤ [x] adalah himpunan semua polinomial dalam peubah x dengan koefisien dalam
ℤ merupakan sebuah ring di bawah operasi penjumlahan dan perkalian polinomial. Misalkan
polinomial tak konstan atas ℤ [ ], maka berdasarkan Teorema 2.3.32 ada ∈
sedemikian sehingga = . Jika ada seperti ini, maka
disebut algebraic atas ℤ Definisi
2.3.33. Selanjutnya berdasarkan Teorema 2.3.43, jika deg
, ℤ = , maka ℤ
merupakan ruang vektor atas ℤ
berdimensi- dengan basis
{ , , , … . , ,
}. ℤ adalah field. Misalkan
∈ ℤ[ ]adalah polinomial irredusibel atas ℤ berderajad , maka menurut Teorema 2.3.14
adalah suatu ideal,
20
dengan = {
| ∈ ℤ
[ ]}. Selanjutnya, berdasarkan Teorema 2.3.34
ℤ [ ] adalah finite field berorder
, dengan operasi penjumlahan dan perkalian polinomial dilakukan dalam modulo
. Dari uraian di atas dan berdasarkan Teorema 2.3.37 dan Teorema 2.3.38,
jika diberikan polinomial irredusibel ∈ ℤ[ ]berderajad
dan = ,
maka setiap
∈ ℤ dapat dinyatakan secara unik dalam bentuk
= + +
+ + , dimana
∈ ℤ , −, dan
≅ ℤ [ ] ≅ ℤ
≅{ + + +
| ∈ ℤ untuk semua
}.
Contoh 1 Finite Field
= +
+ adalah polinomial irredusibel berderajad 4 atas ℤ , dan =
+ + =
= + , maka
= ℤ [ ] = { , , , , , , , , , ,
, ,
, ,
, }
= { , , , , , + , + , + , +
+ , + , + ,
+ + ,
+ + , + + + , +
+ , + } Dari uraian di atas, ada beberapa cara yang dapat dilakukan untuk
merepresentasikan elemen-elemen , diantaranya adalah
dengan representasi grup siklik, representasi polinomial, representasi vektor dan
representasi himpunan. 1
Representasi grup siklik : 0, ,
1
, ..., , dengan
adalah generator
∗
, dimana
∗
= − { }.
2 Representasi polinomial dalam peubah
: +
+ + +
, dimana ∈ ℤ ,
−. 3
Representasi vektor : [ ,
, , ...], dengan
∈ ℤ 4
Representasi himpunan : { ,
, , ...}, dengan
. Cara merepresentasikan elemen-elemen
dengan representasi himpunan mengacu pada tesis Rosdiana 2009. Representasi himpunan selanjutnya
diperlukan pada saat komputasi untuk menentukan masalah logaritma diskret. Pada contoh 1 di atas cara merepresentasikan elemen-elemen
adalah
21
dengan representasi grup siklik dan representasi polinomial. Tabel 3.1.1 berikut memperlihatkan elemen-elemen
dalam beberapa representasi.
Tabel 3.1.1 Elemen-elemen
No Representasi
Himpunan Representasi
Vektor Representasi
Grup Siklik Representasi
Polinomial 1
{} [0,0,0,0]
2 {0}
[1,0,0,0] 1
1 3
{1} [0,1,0,0]
1 1
4 {2}
[0,0,1,0]
2 2
5 {3}
[0,0,0,1]
3 3
6 {0,1}
[1,1,0,0]
4
+ 7
{1,2} [0,1,1,0]
5
+
2
8 {2,3}
[0,0,1,1]
6
+
3
9 {0,1,3}
[1,1,0,1]
7
+ +
3
10 {0,2}
[1,0,1,0]
8
+
2
11 {1,3}
[0,1,0,1]
9
+
3
12 {0,1,2}
[1,1,1,0]
10
+ +
2
13 {1,2,3}
[0,1,1,1]
11
+ +
3
14 {0,1,2,3}
[1,1,1,1]
12
+ + +
3
15 {0,2,3}
[1,0,1,1]
13
+ +
3
16 {0,3}
[1,0,0,1]
14
+
3
Setiap operasi aritmetika dilakukan terhadap polinom yang tidak
dapat direduksi lagi irredusibel dalam ℤ . Secara umum dapat dituliskan sebagai
berikut. Misalkan adalah polinomial irredusibel atas
ℤ berderajad , maka operasi penjumlahan dan perkalian dalam
dapat didefinisikan sebagai berikut :
1. Penjumlahan
Jika = +
+ + +
, = +
+ + +
∈ . Maka
+ =, dimana = +
+ + +
dengan +
mod 2. 2.
Perkalian
22
Jika = +
+ + +
, = +
+ + +
∈ . Maka
. =, dimana s= +
+ + +
dengan = ∑
mod ,
−. Penjumlahan dan perkalian dalam
ini dihitung dengan menggunakan algoritme standar untuk integer dan aritmetika polinomial. Unsur
identitas penjumlahannya adalah polinomial 0, dan unsur identitas perkaliannya adalah polinomial 1. Pengurangan adalah invers dari penjumlahan; jika
∈ maka invers penjumlahan dari
dinotasikan −
pada adalah solusi unik untuk persamaan
+ = dalam
. Selanjutnya, pembagian adalah invers dari perkalian; jika
∈ maka invers perkalian
dari dinotasikan
pada adalah solusi unik untuk persamaan
. = pada . Invers perkalian dalam
dapat dihitung secara efisien dengan menggunakan Algoritme Euclidean yang Diperluas.
Dalam pembahasan selanjutnya akan dibahas tanpa elemen {0},
dinotasikan dengan
∗
, membentuk grup di bawah operasi perkalian Definisi 2.3.29.
3.1.2 MASALAH LOGARITMA DISKRET PADA
∗
Berdasarkan Teorema 2.3.30,
∗
adalah grup siklik yang berorder =
− . Karena
∗
merupakan grup siklik maka terdapat suatu generator yang membangun
∗
yang disebut elemen primitif. Jika diberikan
elemen primitif dari
∗
dan diketahui order dari
∗
adalah , maka ℴ
= Teorema 2.3.9, sehingga :
∗
= = { , , , … ,
} dan berdasarkan Teorema 2.3.6
, , , … , semuanya berbeda.
Berdasarkan Definisi 2.4.1 dan Definisi 2.4.4, jika diberikan grup siklik
∗
berorder , generator
∗
, ∈
∗
, dan adalah
polinomial irredusibel atas ℤ . Logaritma diskret dengan basis adalah integer
unik , −, sedemikian sehingga :
mod
23
dan bagaimana menentukan disebut masalah logaritma diskret. Nilai
pada rentang
− yang merupakan solusi masalah logaritma diskret mod
dijamin ada Teorema 2.4.6. Menentukan masalah logaritma diskret menjadi sulit apabila order grup
multiplikatif
∗
besar. Karena itu diperlukan suatu teknik tertentu untuk menyelesaikannya. Beberapa teknik yang dapat digunakan untuk menentukan
masalah logaritma diskret ini adalah Algoritme Exhaustive Search, Baby-Step Giant-Step, Pollard’s rho, Pohlig Hellman, dan Index Calculus. Dalam Menezes
et el. 1997 kelima algoritme tersebut dikenakan pada grup siklik G umum, sedangkan pada tulisan ini dikenakan pada sistem aritmatik grup multiplikatif
∗
. 3.2 SOLUSI MASALAH LOGARITME DISKRET PADA
∗
Untuk menentukan masalah logaritma diskret diatas ada beberapa algoritme yang bisa digunakan, diantaranya adalah Algoritme Exhaustive Search,
Baby-Step Giant-Step, Pollard’s rho, Pohlig-Hellman dan Index Calculus. Algoritme untuk menentukan masalah logaritma diskret dalam Menezes et al.
1997 dijelaskan secara umum dalam grup siklik berhingga berorder
dengan generator , dan untuk pendekatan yang lebih konkrit dipilih grup multiplikatif
ℤ
∗
berorder − dimana operasi grupnya adalah operasi perkalian modulo .
Pada tulisan ini algoritme-algoritme tersebut dieksplorasi untuk menentukan masalah logaritma diskret pada
∗
. 3.2.1
Solusi Masalah Logaritma Diskret pada
∗
dengan Algoritme Exhaustive Search
Ide dasar Algoritme Exhaustive Search adalah Definisi Masalah Logaritma Diskret Definisi 2.4.4.Misalkan
adalah polinomial irredusibel atas ℤ dan
algebraic atas ℤ , maka
∗
= = { , , , … ,
= , … , }.
Menentukan masalah logaritma diskret pada
∗
sehingga = dengan
Algoritme Exhaustive Search adalah dengan mencoba semua kemungkinan nilai ,
− , sampai ditemukan yang benar, artinya jika dipangkatkan
24
akan sama dengan dalam mod
dinotasikan mod
. Atau dengan bahasa sederhana untuk menentukan masalah logaritma diskret , kalikan
dengan sampai ditemukan . Banyaknya langkah dalam proses perkalian ini
adalah , − .
. =
. =
. =
. =
. = =
Selama proses perkalian jika ditemukan , maka
direduksi ke mod dan dalam proses reduksi berlaku aturan penjumlahan dan perkalian dalam
. Selanjutnya dari dan
diperoleh : =
= log
= log =
Jadi =
mod .
Berikut Algoritme Exhaustive Search yang dieksplorasi dari Definisi Masalah Logaritma Diskret secara umum Definisi 2.4.4
Algoritme 3.2.1
Algoritme Exhaustive Search untuk menentukan masalah logaritma diskret pada
∗
Input : generator grup multiplikatif
∗
berorder =
− , ∈
∗
, dan polinomial irredusibel atas
ℤ berderajad . Output : logaritma diskret
log mod
. 1
Untuk setiap , −, hitung nilai
mod .
2 Setelah langkah ke- dimana
mod , maka proses berhenti.
3 Solusi dari
mod adalah
mod .
25
Dalam Menezes et al. 1997 nilai harapan kompleksitas waktu Algoritme Exhaustive Search
adalah . Algoritme Exhaustive Search
ini diimplementasikan dengan bantuan sofware Maple 11, dapat dilihat pada
Lampiran 3.1
Contoh 2 Menentukan masalah logaritma diskret pada grup multiplikatif
∗
dengan Algoritme Exhaustive Search Diketahui : adalah generator grup multiplikatif
∗
, = +
+ + ∈
∗
, dan =
+ + .
Tentukan log
mod .
Solusi : Grup multiplikatif
∗
dibangun oleh suatu polinomial berderajad 7
irredusibel atas ℤ . Diketahui
adalah generator grup multiplikatif
∗
. Perkalian dari elemen-elemen
∗
adalah perkalian dalam modulo ,
sehingga mod
+ +
mod − −
+ mod ,
sebab − dalam ℤ .
Grup multiplikatif
∗
berorder = − =
, artinya ada 127 kemungkinan nilai ,
, yang memenuhi mod
. Dengan Algoritme Exhaustive Search, akan dicari nilai
sedemikian sehingga +
+ + mod
. Kita akan coba untuk setiap kemungkinan nilai ,
, sampai ditemukan nilai yang benar yang memenuhi
mod .
Tabel 3.2.1 Representasi Polinomial
mod untuk
∗
dengan = +
+ +
mod
1
26
mod 2
3 4
5 6
7
+
8
+
9
+
10
+
11
+
12
+
13
+ +
14
+
15
+
16
+
17
+
18
+
19
+ +
20
+ +
21
+ + +
Pada saat = , diperoleh kongruensi
+ +
+
mod .
Dengan demikian diperoleh solusi dari log
mod adalah
mod mod 127.
Karena Algoritme Exhaustive Search ini metodenya yaitu dengan mencoba semua kemungkinan solusi yang ada, maka solusi yang tepat secara pasti akan
ditemukan. Namun kelemahannya adalah kompleksitas waktu yang besar sehingga tidak efisien digunakan untuk menyelesaikan masalah logaritma diskret
dalam
∗
berorder besar. Oleh karena itu diperlukan metode lain agar penyelesaian masalah logaritma diskret pada
∗
menjadi lebih efisien untuk kasus yang relatif besar.
27
3.2.2 Solusi Masalah Logaritma Diskret pada
∗
dengan Algoritme Baby-Step Giant-Step
Algoritme Baby-Step Giant-Step pertama kali dipublikasikan oleh Shanks pada tahun 1971. Algoritme ini merupakan time-memory trade-off dari Algoritme
Exhaustive Search yakni situasi dimana memori komputer digunakan untuk mengurangi biaya dan waktu eksekusi program Menezes et al. 1997.
Berikut analisis Algoritme Baby-Step Giant-Step untuk
∗
yang dieksplorasi dari Algoritme Baby-Step Giant-Step untuk grup siklik
umum. Misalkan
adalah sebuah generator grup siklik
∗
, dengan order
∗
adalah , ∈
∗
dan polinomial irredusibel berderajad
atas ℤ . Masalah logaritma diskret adalah menentukan ,
−, sedemikian
sehingga log
mod .
Untuk menentukan
log mod
, dengan Algoritme Baby-Step Giant-Step ada dua fase yang harus dilewati yaitu fase baby-step dan fase giant-step. Ide dasarnya adalah
membagi dengan
, = √ , sampai ditemukan
dalam himpunan { , , , … ,
}. Langkah pertama menentukan nilai
= √ dimaksudkan untuk
menentukan batas minimal banyaknya representasi polinomial yang akan
disimpan dalam memori komputer. Langkah
kedua adalah
membentuk tabel
dengan pasangan
, mod ,
−, dimaksudkan untuk menentukan representasi polinomial sebanyak
yang akan disimpan di memori komputer, yakni { , , , … ,
}. Untuk membentuk tabel pasangan , mod dapat
digunakan Algoritme Exhaustive Search. Selanjutnya representasi polinomial– polinomial
disimpan dalam memori komputer. Penyimpanan representasi polinomial–polinomial
ini disebut fase baby-step. Langkah ketiga Algoritme Baby-Step Giant-Step adalah menentukan nilai
dan sedemikian sehingga mod
, untuk suatu . Caranya
adalah dengan membagi dengan representasi polinomial
sampai ditemukan
yang merupakan salah satu anggota { , , , … ,
}. Banyak
28
langkah dalam proses pembagian ini adalah . Dalam proses pembagian ini berlaku aturan penjumlahan dan perkalian polinomial dalam
. ∶ =
: = ∶
= ∶
= ∶
= =
Untuk menentukan nilai dan
dengan cara membagi dengan representasi
polinomial sama artinya dengan mengalikan
dengan polinomial . Kalau
cara kedua ini yang digunakan maka langkah pertama adalah menentukan dengan menggunakan Algoritme Euclidean yang Diperluas. Selanjutnya kalikan
dengan representasi polinomial sampai diperoleh
= . Proses menghitung nilai
ini disebut fase giant-step. Jika sudah ditemukan nilai dan , maka selanjutnya dapat ditentukan nilai
logaritma diskret . Berdasarkan Definisi Logaritma Diskret : log
mod ⇔
mod Sehingga dari 1 dan 2 diperoleh :
= =
= log
= log −
= =
+ Jadi solusi dari
mod adalah
= +
log mod .
Algoritme 3.2.2
Algoritme Baby-Step Giant-Step untuk menentukan masalah logaritma diskret pada
∗
Input : generator grup siklik
∗
berorder =
− , dan ∈
∗
, dan polinomial irredusibel atas
ℤ berderajad . Output : logaritma diskret
log mod
.
29
1 Menetapkan nilai
= √ 2
Bentuk tabel dengan pasangan ,
mod , dimana
−. 3
Hitung , kemudian tetapkan nilai
= .
Bentuk tabel dengan pasangan ,
mod ,
, sampai diperoleh nilai dari
= . 4
Solusi dari mod
adalah +
mod .
Dalam Menezes et al. 1997 nilai harapan kompleksitas waktu Algoritme Baby-Step Giant-Step adalah
√ . Implementasinya dengan bantuan sofware
Maple 11 dapat dilihat pada Lampiran 3.3.
Contoh 3 Menentukan masalah logaritma diskret pada grup multiplikatif
∗
dengan Baby-Step Giant-Step Diketahui : adalah generator grup multiplikatif
∗
, = +
+ +
+ ∈
∗
, dan =
+ + .
Tentukan log
mod .
Penyelesaian : 1.
Order dari
∗
adalah = − =
Jadi = √
= . Artinya banyaknya representasi polinomial yang
akan disimpan di memori komputer minimal adalah 12, , yakni
{ , , , … , }
2. =
+ + polinomial irredusibel atas ℤ , dengan
generator
∗
sehingga : mod
+ +
mod + mod
30
Tabel 3.2.2 Representasi Polinomial
mod untuk
∗
dengan = +
+ +
+ Representasi polinomial
mod 1
1 2
3 4
5 6
7 +
8
+
9
+
10
+
11
+
Pada Tabel 3.2.2 ini terlihat jika , maka polinomial
direduksi ke mod
. 3.
Menentukan nilai
, = , , , … yang memenuhi kongruensi
mod .
Agar mudah
tentukan terlebih
dahulu mod
. Untuk menentukan gunakan Algoritme Euclidean
Diperluas : + +
+ +
+ + +
+ +
+ +
+ + +
Jadi mod
= +
+ + .
31
Tabel 3.2.3 Hasil Perhitungan
, : mod
, untuk
∗
dengan = +
+ +
+ . Representasi Polinomial
: mod
+ +
+ + 1
+ + +
2 +
+ +
3 +
Pada saat = , diperoleh nilai
= =
+ , dengan = . 4.
Jadi solusi = log
mod =
+ = . + =
Tiga algoritme berikut Algoritme Baby-Step Giant-Step 2, Algoritme Baby-Step Giant-Step 3, Algoritme Naif Square juga dieksplorasi dari Algoritme
Baby-Step Giant-Step untuk grup siklik umum.
3.2.3 Solusi Masalah Logaritma Diskret pada
∗
dengan Algoritme Baby-Step Giant-Step 2
Misalkan adalah sebuah generator grup siklik
∗
, dengan order
∗
adalah , ∈
∗
dan polinomial irredusibel berderajad
atas ℤ . Masalah logaritma diskret adalah menentukan ,
−, sedemikian
sehingga log
mod .
Untuk menentukan
log mod
, dengan Algoritme Baby-Step Giant-Step 2 juga ada dua fase yang harus dilewati yaitu fase baby-step dan fase giant-step. Ide dasarnya
adalah membagi dengan
, sampai ditemukan dalam himpunan
{ , , , … , }.
Langkah pertama menentukan nilai = √
dimaksudkan untuk menentukan batas minimal banyaknya representasi polinomial
yang akan disimpan dalam memori komputer. Sebenarnya
tidak harus sama dengan √ ,
boleh kurang atau lebih dari √ tergantung dari kapasitas memori komputer
yang digunakan, tetapi pada tulisan ini untuk komputasi diambil nilai = √ .
32
Langkah kedua
adalah membentuk
tabel dengan
pasangan , mod
, −, dimaksudkan untuk menentukan polinomial
sebanyak yang akan disimpan di memori komputer, yakni { , , , … ,
}. Untuk membentuk tabel pasangan
, mod dapat digunakan Algoritme
Exhaustive Search. Selanjutnya representasi polinomial–polinomial disimpan
dalam memori komputer. Penyimpanan polinomial–polinomial ini disebut fase
baby-step. Langkah ketiga Algoritme Baby-Step Giant-Step adalah menentukan nilai
dan sedemikian sehingga mod
, untuk suatu . Caranya
adalah dengan membagi dengan representasi polinomial
sampai ditemukan yang merupakan salah satu anggota
{ , , , … , }. Banyak langkah
dalam proses pembagian ini adalah . Dalam proses pembagian ini berlaku aturan penjumlahan dan perkalian polinomial dalam
. ∶
= :
= ∶
=
∶ =
∶ =
= Proses menghitung nilai
ini disebut fase giant-step. Jika sudah ditemukan nilai dan , maka selanjutnya dapat ditentukan nilai
logaritma diskret . Berdasarkan Definisi Logaritma Diskret : log
mod ⇔
mod Sehingga dari 1 dan 2 diperoleh :
= =
= log
= log −
= =
+ Jadi solusi dari
mod adalah
= +
log mod .
33
Algoritme 3.2.3
Algoritme Baby-Step Giant-Step 2 untuk menentukan masalah logaritma diskret pada
∗
Input : generator grup multiplikatif
∗
berorder =
− , ∈
∗
, dan polinomial irredusibel atas
ℤ berderajad . Output : logaritma diskret
log mod
1 Menetapkan nilai
= √ 2
Bentuk tabel dengan pasangan ,
mod , dimana
−. 3
Hitung , kemudian tetapkan nilai
= .
Bentuk tabel dengan pasangan ,
mod ,
, sampai diperoleh nilai dari
= . 4
Solusi dari mod
adalah +
mod .
Dalam Menezes et al. 1997 nilai harapan kompleksitas waktu Algoritme Baby-Step Giant-Step adalah
√ . Implementasinya dengan bantuan sofware
Maple 11 dapat dilihat pada Lampiran 3.4.
Contoh 4 Menentukan masalah logaritma diskret pada grup multiplikatif
∗
dengan Baby-Step Giant-Step 2 Diketahui : adalah generator grup multiplikatif
∗
, = +
+ +
+ ∈
∗
, dan =
+ + .
Tentukan log
mod .
Penyelesaian : 1 Order dari
∗
adalah = − =
Jadi = √
= . Artinya banyaknya representasi polinomial yang
akan disimpan di memori komputer minimal adalah 12, −, yakni
{ , , , … , }
2 =
+ + polinomial irredusibel atas ℤ , dengan
generator
∗
sehingga : mod
+ +
mod
34
+ mod Representasi polinomial yang akan disimpan di memori komputer dapat dilihat
pada Tabel 3.2.2 hal 30. 3 Menentukan
nilai ,
= , , , … yang memenuhi kongruensi mod
. Agar mudah menentukan terlebih dahulu tentukan mod
dengan menggunakan Algoritme Euclidean yang Diperluas :
Jadi +
+ +
+ + mod
.
Tabel 3.2.4 Hasil Perhitungan
, : mod
, untuk
∗
dengan = +
+ +
+ . Representasi Polinomial
: mod
+ +
+ + 1
+ +
+ 2
+ +
3 +
+ +
4 + +
5 +
6 Pada saat
= , diperoleh nilai =
= , dengan
= . 4 Jadi solusi
= log mod
= + = . + =.
+ + +
+ +
+ +
= + +
+ +
+ +
+
35
3.2.4 Solusi Masalah Logaritma Diskret pada
∗
dengan Algoritme Baby-Step Giant-Step 3
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
seperti halnya pada Algoritme Baby-Step Giant-Step dan Algoritme Baby-Step Giant-Step 2, Algoritme Baby-
Step Giant-Step 3 juga harus melewati fase baby-step dan fase giant-step. Ide dasarnya adalah membagi
dengan sampai ditemukan
; = ,
, −,
integer positif, , dengan
adalah salah satu anggota himpunan
{ , , , … , , … , }.
Langkah pertama menentukan nilai = ,
, dimaksudkan untuk menentukan batas minimal banyaknya representasi polinomial
, −. yang akan disimpan di memori komputer.
Langkah kedua
adalah membentuk
tabel dengan
pasangan ,
mod ,
∀ , dimana −, dimaksudkan untuk menentukan
representasi polinomial yang akan disimpan di memori komputer, yakni
{ , , , … , }. Sama seperti pada algoritme Baby-Step Giant-Step, untuk
membentuk tabel pasangan , mod
juga dapat digunakan Algoritme Exhaustive Search. Fase ini disebut fase baby-step.
Langkah ketiga Algoritme Baby-Step Giant-Step 3 adalah menentukan nilai ,
dan sedemikian sehingga
mod , untuk suatu
, . Caranya adalah membagi
dengan representasi polinomial sampai ditemukan
, dimana merupakan salah satu anggota
{ , , , … , }. Dalam proses pembagian ini berlaku aturan penjumlahan
dan perkalian polinomial dalam . Banyak langkah dalam proses
pembagian ini adalah . ∶ =
: =
36
∶ =
∶ =
∶ =
= Proses menghitung nilai
ini disebut fase giant-step. Jika sudah ditemukan nilai , dan , maka selanjutnya dapat ditentukan
nilai logaritma diskret . Berdasarkan Definisi Logaritma Diskret : log
mod ⇔
mod Sehingga dari 1 dan 2 diperoleh :
= =
= log
= log −
= + =
+ + Jadi
solusi dari
mod adalah
= + +
log mod
.
Algoritme 3.2.4
Algoritme Baby-Step Giant-Step 3 untuk menentukan masalah logaritma diskret pada
∗
Input : generator grup multiplikatif
∗
berorder =
− , ∈
∗
, dan polinomial irredusibel atas
ℤ berderajad . Output : logaritma diskret
log mod
. 1
Tetapkan nilai = ,
. 2
Bentuk tabel
dengan pasangan
, mod
, ∀ , dimana
−. 3
Mencari nilai , dan , sedemikian sehingga mod
, untuk suatu
dan .
4 Solusi dari
mod adalah
+ + mod
.
37
Nilai harapan kompleksitas waktu Algoritme Baby-Step Giant-Step 2
adalah
√ Menezes et al. 1997. Implementasinya dengan bantuan sofware
Maple 11 dapat dilihat pada Lampiran 3.5.
Contoh 5 Menentukan masalah logaritma diskret pada grup siklik
=
∗
dengan Baby-Step Giant-Step 3 Diketahui :
adalah generator grup multiplikatif
∗
, = +
+ +
+ ∈
∗
, dan =
+ + .
Tentukan log
mod .
Penyelesaian : =
+ + irredusibel atas ℤ . Ambil = √
= √ − = . Jadi
banyaknya representasi polinomial yang akan disimpan di memori komputer sebanyak
=12 yaitu { , , … , },
generator, maka
= +
+ = =
+ Representasi polinomial yang akan disimpan di memori komputer dapat dilihat
pada Tabel 3.2.2 hal 30. Selanjutnya menentukan nilai
dan , yang memenuhi kongruensi mod
. Agar mudah menentukan dan terlebih dahulu tentukan
mod . Ambil
= , Sehingga diperoleh = = . Untuk
menentukan gunakan Algoritme Euclidean yang Diperluas :
Jadi mod
= +
+ +
+ +
Selanjutnya tentukan terlebih dahulu mod
, untuk .
+ + +
+ +
+ + =
+ +
+ +
+ + +
38
Tabel 3.2.5 Hasil Perhitungan
, : mod
, untuk
∗
dengan = +
+ +
+ . :
mod =
+ +
+ + +
+ + =
+ +
+ + +
+ +
+ =
+ + +
+ = +
+ = =
Pada saat = , diperoleh kongruensi :
+ mod
; = , = , dan = .
Sehingga : + +
mod × + + mod
mod 127 Pada contoh ini banyaknya proses pembagian hingga ditemukan
ada 6 langkah. Langkah ini lebih banyak jika dibandingkan dengan banyaknya langkah
pada contoh 4 yang menggunakan Algoritme Baby-Step Giant-Step. Dari contoh ini terlihat bahwa jika representasi polinomial yang disimpan di memori komputer
besar, maka proses pembagian sampai diperoleh representasi polinomial ,
∈ { , , , , … }, akan lebih cepat banyaknya langkah lebih sedikit, begitu juga sebaliknya.
3.2.5 Solusi Masalah Logaritma Diskret pada
∗
dengan Algoritme Naif Square
Misalkan adalah sebuah generator grup siklik
∗
, dengan order
∗
adalah , ∈
∗
dan polinomial irredusibel berderajad
atas ℤ . Masalah logaritma diskret adalah menentukan ,
−, sedemikian
sehingga log
mod .
Untuk menentukan
log mod
seperti halnya pada Algoritme Baby-Step Giant-Step, Algoritme Baby-Step Giant-Step 2 dan Algoritme Baby-Step Giant-Step 3,
Algoritme Naif Square juga harus melewati fase baby-step dan fase giant-step. Ide
39
dasarnya adalah mengalikan dengan
sampai ditemukan ,
√ dalam himpunan
, , , … , , … ,
√
. Langkah pertama menentukan nilai
= √ , dimaksudkan untuk menentukan batas minimal banyaknya representasi polinomial
, −.
yang akan disimpan di memori komputer. Langkah
kedua adalah
membentuk tabel
dengan pasangan
, mod
, ∀ , dimana
−, dimaksudkan untuk menentukan representasi polinomial
yang akan disimpan di memori komputer, yakni { , , , … ,
}. Sama seperti pada Algoritme Baby-Step Giant-Step, Algoritme Baby-Step Giant-Step 2 dan Baby-Step Giant-Step 3 untuk membentuk
tabel pasangan , mod
pada Algoritme Naif Square juga dapat digunakan Algoritme Exhaustive Search. Fase ini disebut fase baby-step.
Langkah ketiga Algoritme Naif Square adalah menentukan nilai sedemikian sehingga
mod , untuk suatu
. Caranya adalah dengan mengalikan
dengan sampai ditemukan
yang merupakan salah satu anggota
{ , , , … , }. Dalam proses perkalian ini berlaku aturan
penjumlahan dan perkalian polinomial dalam . Banyak langkah dalam
proses perkalian ini adalah . =
= =
= = =
Proses menghitung nilai ini disebut fase giant-step.
Jika sudah ditemukan nilai , maka selanjutnya dapat ditentukan nilai logaritma diskret . Berdasarkan Definisi Logaritma Diskret :
log mod
⇔ mod
Sehingga dari 1 dan 2 diperoleh : =
=
40
= =
= × Jadi solusi dari
mod adalah
= × log
mod .
Menentukan mod caranya dengan menggunakan Algoritme Euclidean yang
Diperluas.
Algoritme 3.2.5
Algoritme Naif Square untuk menentukan masalah logaritma diskret pada
∗
Input : generator grup multiplikatif
∗
berorder =
− , ∈
∗
, dan polinomial irredusibel atas
ℤ berderajad . Output : logaritma diskret
log mod
1 Bentuk
tabel dengan
pasangan ,
mod ,
dimana −.
2 Mencari nilai , sedemikian sehingga
mod , untuk suatu
. 3
Menentukan mod .
4 Solusi dari
mod adalah
× mod . Dalam Menezes et al. 1997 nilai harapan kompleksitas waktu Algoritme
Naif Square adalah √
. Implementasinya dengan bantuan sofware Maple 11 dapat dilihat pada Lampiran 3.6.
Contoh 6 Menentukan masalah logaritma diskret pada grup siklik
=
∗
dengan Naif Square Diketahui :
generator grup multiplikatif
∗
, = +
+ +
+ ∈
∗
, dan =
+ + .
Tentukan log
mod .
Penyelesaian :
41
Order dari
∗
adalah = − =
. Diketahui =
+ + ,
dan generator. Karena pada
∗
berlaku aturan penjumlahan dan perkalian dalam mod
, maka =
+ + =
= + .
Representasi polinomial yang akan disimpan di memori komputer dapat dilihat pada Tabel 3.2.2 hal 30, dengan
, mod =
, mod
. Selanjutnya menentukan .
Tabel 3.2.6 Hasil Perhitungan
, mod
, untuk
∗
dengan = +
+ +
+ . Representasi polinomial
mod 1
+ +
+ + 2
+ + +
3 +
4 +
+ + 5
+ +
6 +
7 +
+ +
8 +
+ +
+ +
9 +
+ +
10 +
+ + 11
+ Jadi
mod diperoleh pada saat
= dan = . Sehingga :
= × mod 127 = ×
mod 127 = ×
mod 127 =
. Pada algoritme ini, banyaknya langkah perhitungan yang diperlukan untuk
memperoleh relatif besar jika dibandingkan dengan banyaknya langkah pada
Algoritme Baby-Step Giant-Step, Baby-Step Giant-Step 2 dan Baby-Step Giant- Step 3. Kelebihannya adalah Naif Square tidak serumit Baby-Step Giant-Step,
42
Baby-Step Giant-Step 2 dan Baby-Step Giant-Step 3, karena hanya memerlukan invers integer tidak memerlukan invers himpunan.
Kelemahan Algoritme Baby-Step Giant-Step, Baby-Step Giant-Step 2, Baby-Step Giant-Step 3 dan Naif Square adalah memerlukan banyak memori
ketika grup berorder besar. Metode Pollard’s rho menyederhanakannya dengan algoritme probabilistik dengan perkiraan kompleksitas waktu yang sama tetapi
memerlukan memori penyimpanan yang lebih sedikit.
3.2.6 Solusi Masalah Logaritma Diskret pada
∗
dengan Algoritme Pollard’s rho
Algoritme Pollard’s rho adalah algoritme untuk memecahkan masalah logaritma diskret dan masalah faktorisasi integer, ditemukan oleh John Pollard
pada tahun 1975. Efektif digunakan untuk pemfaktoran bilangan komposit dengan faktor kecil. Algoritme ini didasarkan pada Algoritme Floyd’s Cycle-Finding dan
pada pengamatan bahwa seperti pada Birthday Paradox Problem dua bilangan dan
adalah kongruen modulo dengan peluang
, setelah langkah ke √ √ ln .
Agar lebih mudah untuk memahami Algoritme Pollard’s rho, terlebih dahulu akan kita kaji tentang Algoritme Floyd’s Cycle-Finding dan Birthday
Paradox.
Floyd’s Cycle-Finding
Algoritme Floyd’s Cycle-Finding ditemukan oleh Robert W. Floyd pada tahun 1967. Algoritme Floyd’s Cycle-Finding digunakan untuk menemukan cycle
dalam barisan { , , , … , } dengan membandingkan elemen-elemen
sampai sehingga pasangan
= ditemukan.
Lemma 2.4.8 menjelaskan hubungan antara Algoritme Floyd’s Cycle- Finding dengan Algoritme Pollard’s rho. Lemma tersebut menunjukkan bahwa
dalam barisan bilangan yang dibangkitkan oleh sebuah fungsi yang memetakan sebuah himpunan hingga ke himpunan hingga menjamin adanya satu atau lebih
bilangan yang sama. Dalam barisan bilangan yang dibangkitkan tersebut terjadi pengulangan modulo.
43
Floyd’s Cycle Finding digunakan untuk menemukan dan
sedemikian sehingga mod .
Birthday Paradox
Diasumsikan bahwa dalam 1 tahun terdiri dari 365 hari. Berapa banyak orang yang harus ada sehingga peluang 2 orang memiliki hari ulang tahun yang
sama adalah ? Pertanyaan tersebut menjadi dasar dari Birthday Paradox.
Kunci untuk memahami permasalahan ini adalah dengan berpikir bahwa peluang tidak ada 2 orang yang memiliki ulang tahun yang sama adalah peluang
bahwa orang ke-1 akan memiliki ulang tahun yang berbeda dengan orang ke-2 dan akan berbeda dengan orang ke-3 dan seterusnya. Semakin banyak orang yang
dilibatkan, maka peluang tidak adanya 2 orang dengan tanggal ulang tahun yang sama akan semakin kecil.
Untuk menghitung peluang ini, kita abaikan variasi tahun kabisat, terdapat orang kembar, dan asumsi bahwa 365 tanggal akan memiliki kemungkinan yang
sama. Misalkan banyaknya hari dalam satu tahun adalah
= hari. Pertama
akan dihitung peluang
∗
yaitu peluang orang tidak akan memiliki tanggal
ulang tahun yang sama.
∗
= −
− …
− −
= .
. …
− +
= −
Orang ke-2 memiliki tanggal ulang tahun yang berbeda dengan orang ke-1 dengan peluang kejadian
, orang ke-3 harus memiliki tanggal ulang tahun yang berbeda dengan 2 orang pertama dengan peluang kejadian
, dan seterusnya. Peluang setidaknya 2 orang dari kelompok tersebut memiliki tanggal ulang
tahun yang sama adalah komplemen dari peluang tanggal ulang tahun semua orang akan berbeda, yaitu :
= − −
44
Misalkan , adalah peluang bahwa dari banyaknya orang akan
menghasilkan sedikitnya 2 tanggal hari ulang tahun yang sama. Dapat dilihat bahwa
, = − =
, = − .
= − , = − .
− = −
−
, = − . −
. −
= − −
. −
, = − . −
… −
+
= −
∗
= − −
Dengan menggunakan rumus di atas ternyata nilai akan melebihi 50 ketika
= , perhitungannya dapat dilihat di tabel berikut :
Tabel 3.2.7 Hasil Perhitungan Birthday Paradox
10 0.1169
20 0.4114
23 0.5073
30 0.7063
40 0.8912
50 0.9704
60 0.9941
70 0.9992
80 0.9999
90 0.9999
100 1.0000
150 1.0000
45
Jadi dalam teori probabilitas, birthday paradox menyatakan bahwa dari suatu kelompok dengan anggota 23 orang yang dipilih secara acak, maka peluang
setidaknya ada 2 orang yang memiliki tanggal ulang tahun yang sama adalah lebih dari 50. Semakin besar
semakin meningkat tajam peluang yang diperolehnya. Pada percobaan orang yang ke-100 saja peluangnya sudah mencapai 1. Padahal
secara umum peluang percobaan untuk menghasilkan sedikitnya 2 tanggal hari ulang tahun yang sama dijamin akan bernilai satu ketika banyaknya percobaan
tersebut sama atau lebih besar dari input yang ada. Dalam kasus ini besarnya input adalah 365. Karena peluang ini lebih besar dari yang diperkirakan oleh sebagian
besar orang maka disebut sebagai paradox. Hal inilah yang menjadi motivasi dari Birthday Paradox.
Dari uraian di atas dapat disimpulkan bahwa Birthday Paradox digunakan untuk menjamin bahwa mulai adanya satu atau lebih bilangan yang sama dalam
barisan bilangan sedikitnya setelah langkah ke- √ √ ln dengan peluang lebih
dari setengah. Berikut analisis Algoritme Pollard’s rho untuk
∗
yang dieksplorasi dari Algoritme Pollard’s rho untuk grup siklik
umum. Misalkan
∗
adalah grup multiplikatif dibawah operasi perkalian berorder
= − , generator
∗
, ∈
∗
, dan polinomial
irredusibel berderajad atas
ℤ . Ide dari Algoritme Pollard’s rho untuk menentukan
masalah logaritma
diskret log
mod adalah
menemukan =
pada barisan { } untuk
. Langkah pertama adalah mempartisi grup multiplikatif
∗
menjadi 3 partisi subset yang kira-kira berukuran sama,
∗
= ∪
∪ . Berikut contoh pendefinisian keanggotaan himpunan
, = , , . Misal
adalah himpunan semua polinomial derajadnya kelipatan 3 sisa 1, adalah
himpunan semua polinomial derajadnya kelipatan 3 sisa 2, adalah himpunan
semua polinomial derajadnya kelipatan 3 sisa 0. Pendefinisian keanggotaan yang tepat penting untuk menghindari ketidakmerataan pendistribusian anggota
∗
ke dalam subset-subsetnya. Karena jika pendistribusiannya tidak merata akan mengakibat hasil komputasi logaritma diskret yang diperoleh salah, atau
bahkan yang lebih parah tidak akan ditemukan =
pada barisan { }. Selain
46
contoh tersebut masih ada 5 kemungkinan kombinasi pendefinisian yang bisa digunakan. Lebih jelas bisa dilihat di tabel berikut :
Tabel 3.2.8 Beberapa Kemungkinan Pendefinisian Keanggotaan Himpunan
⊆
∗
, = , , untuk Algoritme Pollard’s rho
No Sisa dari derajad polinomial
kelipatan tiga untuk 1
1 2
2 1
2 3
2 1
4 2
1 5
1 2
6 2
1 Selanjutnya
berdasarkan Algoritme
Floyd’s Cycle-Finding,
kita bangkitkan barisan
, , … secara acak dengan iterasi menggunakan fungsi dengan
:
∗
→
∗
sampai ditemukan =
. Karena
∗
berhingga, maka barisan { } akhirnya menjadi periodik membentuk siklus, yakni
ada index terkecil sehingga
= untuk beberapa
, kemudian =
untuk semua + seperti pada gambar berikut Hankerson 2004.
disebut tail length dan disebut cycle length dari barisan. Kita definisikan fungsi
:
∗
× ℤ × ℤ →
∗
× ℤ × ℤ sebagai berikut :
47
, , =
, , + jika ∈ ,
, jika ∈
, + , jika ∈
dengan integer. Selanjutnya, setiap tripel
, , harus memenuhi bentuk
= . Dimulai
dengan mendefinisikan tripel awal, yakni untuk = ,0, 0, 0, maka
, , =
, , jika = ,
, jika
Bandingkan tripel ,
, dan
, , sampai ditemukan suatu nilai
sedemikian sehingga = . Jika sudah ditemukan
= , maka : =
∗ Diketahui
= log , artinya = , maka persamaan ∗ menjadi =
= ∗∗
Karena berorder , maka dari ∗∗
+ =
+ mod
− =
− mod
Jika gcd
− , = , maka
− mempunyai invers, sehingga diperoleh
solusi sebagai berikut : =
− −
mod
Algoritme 3.2.6
Algoritme Pollard’s rho untuk menentukan masalah logaritma diskret pada
∗
Input : generator grup multiplikatif
∗
, ,
∗
berorder =
− , ∈
=
∗
, polinomial irredusibel atas
ℤ berderajad .
Output : logaritma diskret log
mod 1
Bagi grup multiplikatif
∗
menjadi 3 partisi himpunan yaitu ,
dan .
2 Bentuk barisan
, , , …, barisan , , , …, dan barisan , , , … dengan iterasi menggunakan fungsi yang didefinisikan :
48
, , =
, , + jika ∈ ,
, jika ∈
, + , jika ∈
3 Untuk
= , definisikan = , = , = . , ,
= , , jika =
, ,
jika 4
Bandingkan nilai dari , ,
dan ,
, sedemikian sehingga
diperoleh =
atau =
. 5
Kemudian dengan aturan perkalian dan aturan logaritma dengan basis ,
persamaan di atas menjadi =
sehingga diperoleh −
log =
− mod
. 6
Jika =
− mod maka
persamaan menjadi
r log =
− mod
sehingga didapatkan
log =
− mod
dan solusi logaritma diskret adalah : = log
= −
mod Dalam Menezes et al. 1997 nilai harapan kompleksitas waktu Algoritme
Pollard’s rho ini adalah √
. Implementasinya dengan bantuan sofware Maple 11 dapat dilihat pada Lampiran 3.7.
Contoh 7 Menentukan masalah logaritma diskret pada grup multiplikatif
∗
dengan Pollard’s rho Diketahui :
generator grup multiplikatif
∗
, = +
+ ∈
∗
, dan =
+ +
Tentukan log
mod .
Penyelesaian :
∗
dipartisi menjadi 3 himpunan yaitu , , dan
; = himpunan semua polinomial derajadnya kelipatan tiga sisa 1.
= himpunan semua polinomial derajadnya kelipatan tiga sisa 2. = himpunan semua polinomial derajadnya kelipatan tiga sisa 0.
Misalkan ambil = , sehingga
= . Didefinisikan :
49
= ≝
. mod ,
jika ∈ mod
, jika ∈ . mod
, jika ∈ , untuk
= , jika ∈
mod , jika ∈ + mod ,
jika ∈ =
+ mod , jika ∈
mod , jika ∈ , jika ∈
yang memenuhi persamaan =
, dimana .
Nilai-nilai untuk , , ,
, ,
, dengan = ,
= = dapat dilihat
pada tabel berikut.
Tabel 3.2.9 Hasil Perhitungan
, , , ,
, , pada
∗
dengan = +
+ dan
= .
1 1
+ +
+ 1
1 2
+ +
+ 1
1 +
+ 2
2 3
+ + 1
2 +
+ + 2
4 4
+ +
2 2
+ 3
5 5
+ 2
3 +
4 6
6 +
+ + 2
4 5
7 7
+ +
+ 3
4 + +
6 8
8 +
3 5
+ +
6 10
9 +
4 5
+ + +
7 11
10 +
4 6
+ +
8 12
11 +
5 6
8 14
12 5
7 +
8 16
13 6
7 +
+ 9
17 14
+ + 6
8 +
+ 9
19 15
+ 6
9 +
+ 10
20 16
+ +
6 10
+ + 10
22 17
+ +
7 10
+ +
10 24
18 +
+ + 7
11 +
+ + 11
25
50
Diperoleh : =
= +
+ + , =
− mod 31 =
− mod 31 = 17,
= mod 31 = 11,
= −
mod 31 =
− mod 31
= 13. Jadi
= log mod
= .
Contoh 8
Diketahui : generator grup multiplikatif
∗
, dan = +
+ ∈
∗
, =
+ + .
Tentukan log
mod .
Penyelesaian : Cara penyelesaiannya sama seperti pada Contoh 7, tetapi dengan mengambil
= , sehingga =
= + .
Tabel 3.2.10 Hasil Perhitungan
, , , ,
, , pada
∗
dengan = +
+ dan
= =
+ .
1 +
1 +
2 2
+ 2
+ +
3 1
3 +
+ + 2
1 +
+ + 3
3
= =
+ +
+ , =
− mod 31=
− mod 31= 29,
= mod 31 = 15,
= −
mod 31 =
− mod 31
= 13. Jadi
= log mod
= .
Contoh 9
Diketahui : generator grup multiplikatif
∗
, = +
+ ∈
∗
, dan =
+ + .
Tentukan log
mod .
51
Penyelesaian : Cara penyelesaiannya sama seperti pada Contoh 7 dan 8, tetapi dengan
mengambil = , sehingga
= =
+ +
+ + .
Tabel 3.2.11 Hasil Perhitungan
, , , ,
, , pada
∗
dengan = +
+ dan
= =
+ +
+ + .
1 +
+ + +
1 +
+ 1
1 2
+ +
1 1
+ + +
1 3
3 +
1 2
+ 2
4 4
+ + +
1 3
+ + 3
5 5
+ 2
3 +
+ 3
7 6
+ 2
4 + +
5 7
7 3
4 10
15
= = ,
= −
mod 31= −
mod 31= 20, =
mod 31 = 14, =
− mod 31
= −
mod 31 = 13.
Contoh 10
Diketahui : generator grup multiplikatif
∗
, = +
∈
∗
, dan =
+ + .
Tentukan log
mod .
Penyelesaian : Sama seperti pada Contoh 7
∗
dipartisi menjadi 3 himpunan yaitu ,
, dan
; = himpunan semua polinomial derajadnya kelipatan tiga sisa 1.
= himpunan semua polinomial derajadnya kelipatan tiga sisa 2. = himpunan semua polinomial derajadnya kelipatan tiga sisa 0.
Misalkan ambil = , sehingga
= =
+ .
52
Didefinisikan : =
≝ . ,
jika ∈ , jika ∈
. , jika ∈ , untuk
= , jika x ∈ S
mod n, jika x ∈ S + mod n,
jika x ∈ S dan
= + mod ,
jika ∈ mod , jika ∈
, jika ∈ yang memenuhi persamaan
= , dimana
. Nilai-nilai untuk
, , , ,
, , dengan
= , =
= dapat dilihat pada tabel berikut.
Tabel 3.2.12 Hasil Perhitungan
, , , ,
, , pada
∗
dengan = + dan
= =
+ .
i 1
+ 1
+ +
1 1
2 +
+ 1
1 +
4 2
3 2
1 5
3
Diperoleh : =
= , = − mod
= − mod = 13,
= mod
= , =
− mod
= − mod
= . Jadi
= log mod
= .
Contoh 11
Diketahui : generator grup multiplikatif
∗
, = +
∈
∗
, dan =
+ + .
Tentukan log
mod .
Penyelesaian :
53
Misalkan ambil = , sehingga
= =
+ + .
Tabel 3.2.13 Hasil Perhitungan
, , , ,
, , pada
∗
dengan = + dan
= =
+ + .
i 1
+ + 1
+ 2
2 +
2 +
+ 4
3 +
3 + +
10 4
+ +
4 + +
10 5
+ 5
+ + 10
6 + +
10 + +
10
= =
+ + , = −
mod = − mod
= 0, Karena
= , maka tidak mempunyai invers modulo. Sehingga dalam kasus ini tidak bisa ditentukan yang benar.
Contoh 12
Diketahui : generator grup multiplikatif
∗
, = +
∈
∗
, dan =
+ + .
Tentukan log
mod .
Penyelesaian : Cara penyelesaiannya sama seperti pada Contoh 11 dan 12. Misalkan ambil
= , sehingga = .
Tabel 3.2.14 Hasil Perhitungan
, , , ,
, , pada
∗
dengan = + dan
= .
i 1
1 + +
1 1
2 + +
1 1
+ + 4
4
= =
+ + ,
= − mod = − mod
= 12.
54
Karena gcd
, ≠ , maka
tidak mempunyai invers modulo. Sehingga dalam kasus ini tidak bisa ditentukan yang benar.
Dari Contoh 10, 11 dan 12, terlihat bahwa penentuan adalah pangkat
dari generator akan sangat berpengaruh pada keberhasilan untuk menentukan logaritma diskret
yang benar. Tetapi jika kita lihat Contoh 7, 8, dan 9, pengambilan
yang berbeda tidak mempengaruhi keberhasilan dalam menentukan logaritma diskret . Ini sebenarnya berhubungan dengan order grup
siklik
∗
; =
− . Jika
∗
berorder prima, maka walaupun dengan
berbeda tetap akan diperoleh hasil yang tepat, dan sebaliknya jika
∗
berorder komposit maka memilih harus berhati-hati agar ditemukan
yang benar. Berikut beberapa kemungkinan yang dapat terjadi akibat dari ketidaktepatan pemilihan generator pada grup
∗
berorder komposit. 1
= . Jika = , maka tidak mempunyai invers modulo. Sehingga tidak bisa ditentukan logaritma diskret yang benar.
2 gcd ,
≠ ; adalah order grup
∗
. Jika gcd ,
≠ , maka tidak mempunyai invers modulo. Sehingga tidak bisa ditentukan logaritma
diskret yang benar atau logaritma diskret yang diperoleh tidak tepat. Selain pemilihan pangkat generator , hal penting yang juga harus
diperhatikan dalam Algoritme Pollard’s rho ini adalah cara mempartisi grup siklik
∗
menjadi 3 himpunan bagian. Pembagian grup harus seacak mungkin, agar pendistribusian anggota tidak menumpuk pada satu himpunan
bagian, karena akan berpengaruh untuk keberhasilan penentuan logaritma diskret yang tepat. Perhatikan bahwa himpunan bagian ini tidak harus subgrup dari
grup multiplikatif
∗
. 3.2.7
Solusi Masalah Logaritma Diskret pada
∗
dengan Algoritme Pohlig-Hellman
Algoritme Pohlig-Hellman adalah sebuah algoritme yang digunakan untuk mengkomputasi logaritma diskret dalam sebuah kelompok multiplikatif yang
pangkatnya bukan merupakan bilangan prima yang aman. Algoritme ini didasari oleh Teorema Sisa Cina.
55
Berikut analisis Algoritme Pohlig-Hellman untuk
∗
yang dieksplorasi dari Algoritme Pohlig-Hellman untuk grup siklik
umum. Misalkan
∗
adalah grup siklik dibawah operasi perkalian berorder =
− . generator
∗
, ∈
∗
, dan polinomial
irredusibel berderajad atas
ℤ . Berdasarkan Teorema Dasar Aritmetika,
dapat difaktorkan atas kuasa prima :
= dimana
adalah bilangan prima berbeda dan .
Ide dari Algoritme Pohlig Hellman untuk menentukan masalah logaritma diskret
log mod
adalah menemukan mod , dengan terlebih
dahulu menentukan mod , untuk setiap ,
, menggunakan Teorema Sisa Cina. Artinya komputasi dilakukan pada subgrup berorder prima berpangkat
integer positif .
Perhatikan masalah logaritma diskret pada grup berikut :
mod .
adalah solusi dari masalah tersebut, sehingga menurut Definisi Masalah Logaritma Diskret y dinyatakan dalam modulo , dinotasikan y
mod . mod = mod
Karena adalah bilangan prima berbeda, maka berdasarkan Teorema Sisa Cina
diperoleh sistem kongruensi berikut : = mod
untuk setiap , .
Selanjutnya untuk menentukan nilai , maka terlebih dahulu ditentukan nilai . Misal
= dan = , maka 3 menjadi : = mod
dimana − .
dapat diekspresikan dalam q- yang direpresentasikan sebagai :
56
= dimana
− , untuk −.
Perhatikan persamaan 4, juga dapat diekspresikan sebagai
= + , untuk beberapa integer . Sehingga diperoleh :
= +
Selanjutnya menghitung . Nilai diperoleh dari :
= mod
dengan menggunakan Algoritme Exhaustive Search atau Baby-Step Giant-Step. Bukti persamaan 6 :
mod =
mod =
mod =
. mod
= .
mod =
. mod
= mod
∎ Adalah mudah untuk menghitung
dengan menggunakan persamaan 6. Jika
= , maka diperoleh = . Jika , setelah nilai diketahui, maka langkah selanjutnya adalah menentukan
, , … , dan kemudian hitung
dengan menggunakan persamaan 5. Cara untuk menentukan
, , … , sama seperti menentukan
. Tetapkan
= dan definisikan =
untuk −. Kemudian untuk menghitung , , … ,
gunakan perumuman persamaan 6 berikut :
57
= mod
Bukti persamaan 7 : =
mod =
mod =
mod =
mod =
mod =
. mod
= .
mod =
mod =
mod =
mod ∎
Perhatikan bahwa dapat dihitung dari , dengan diketahui :
= Oleh karena itu,
, , , , … , ,
dapat dihitung secara bergantian dengan menggunakan 6 dan 8.
Setelah semua nilai diketahui, maka diperoleh kongruensi
mod ,
. Selanjutnya dengan menggunakan Algoritme Gauss diperoleh
log mod
.
Algoritme 3.2.7
Algoritme Pohlig Hellman untuk menentukan masalah logaritma diskret pada
∗
Input : generator grup siklik
∗
berorder =
− , ∈
∗
, dan
polinomial irredusibel berderajad atas
ℤ .
58
Output : logaritma diskret log
mod 1.
Cari faktorisasi prima dari , yaitu =
… , dimana
, .
2. Untuk
setiap ,
, tentukan
nilai dengan
= + +
+ + . Untuk menentukan nilai
maka terlebih dahulu tentukan koefisien
, , … , dengan langkah-langkah
berikut: 2.1
Masukkan nilai = dan = .
2.2 Menentukan
= mod
, untuk −.
2.3 Definisikan
= . 2.4
Untuk setiap
, −,
hitung nilai
= mod
. Kemudian tentukan nilai sedemikian
sehingga = . Sehingga diperoleh = . Selanjutnya definisikan
mod 2.5
Untuk setiap , , hitung
; = +
+ + +
. 3.
Gunakan Algoritme Gauss untuk menghitung integer sehingga
mod dimana
dan − .
4. Ambil sebagai hasil.
Dalam Menezes et al. 1997 nilai harapan kompleksitas waktu Algoritme Pohlig Hellman adalah
∑ log
+ . Implementasinya dengan
bantuan sofware Maple 11 dapat dilihat pada Lampiran 3.8.
Contoh 13 Menentukan masalah logaritma diskret pada grup multiplikatif
∗
dengan Pohlig-Hellman Diketahui :
generator grup multiplikatif
∗
, =
+ +
+ + ∈
∗
, dan =
+ +
+ + .
Tentukan = log
mod .
59
Penyelesaian : Grup
∗
berorder , dengan =
− = = . . .
Selanjutnya akan ditentukan dimana
mod , mod ,
mod dan
mod . Sebelumnya harus ditentukan terlebih
dahulu = +
+ + +
; .
Definisikan =
= +
+ +
+ .
Untuk = ,
= , dan = mod
. − = .
=
mod .
= ⇒ mod
. Dengan menggunakan Algoritme Exhaustive Search diperoleh :
= = , dan
mod .
=
+ +
+ +
mod .
= ⇒ +
+ +
+ mod
. Dengan menggunakan Algoritme Exhaustive Search diperoleh :
= =
Jadi : = +
= + . = dan
mod 9 i
Untuk =
= , dan = mod
. − = , berarti = .
=
+ +
+ +
+ + mod
.
60
= ⇒ +
+ +
+ +
+ mod
. Dengan menggunakan Algoritme Exhaustive Search diperoleh :
= =
Jadi : = =
dan mod 5 ii
Untuk
= = , dan =
mod .
− = , berarti = . +
+ +
+ +
+ +
+ +
mod .
= ⇒ +
+ +
+ +
+ +
+ + mod
Dengan menggunakan Algoritme Exhaustive Search diperoleh : =
= Jadi :
= = dan
mod 7 iii
Untuk =
= , dan
= mod
. − = , berarti = .
+ +
+ + mod
. = ⇒
+ +
+ + mod
. Dengan menggunakan Algoritme Exhaustive Search diperoleh :
= =
Jadi : = =
dan mod 13 iv
61
Dari i, ii, iii dan iv diperoleh sistem kongruensi: mod 9
mod 5 mod 7
mod 13 Selanjutnya menyelesaikan sistem kongruensi di atas dengan menggunakan
Teorema Sisa Cina dan Algoritme Gauss.
= , = , = , = .
= , = ,
= , =
=
= ,
= =
, =
= ,
= =
.
mod 9, maka =
mod 5, maka =
mod 7, maka =
mod 13, maka =
+
+ +
mod 4095 . .
+ . . + . .
+ . . mod 4095
mod 4095 Jadi
= log mod
= .
Contoh 14 Menentukan masalah logaritma diskret pada grup siklik
=
∗
dengan Pohlig Hellman Diketahui :
generator grup multiplikatif
∗
, =
+ +
∈
∗
, dan =
+ + .
Tentukan = log
mod .
Penyelesaian : Grup
berorder , dengan =
− = = . . .
Selanjutnya akan ditentukan dimana
mod ,
mod , mod
dan mod
. Sebelumnya harus ditentukan terlebih dahulu
= + +
+ + ;
. Definisikan
= =
+ + .
Untuk
= ,
62
= , dan = mod
. − = .
=
mod .
= ⇒ mod
. Diperoleh
= = , dan
mod .
=
+ +
+ +
+ +
+ +
+ +
+ + mod
. = ⇒
+ +
+ +
+ +
+ +
+ +
+ + mod
. Jadi diperoleh
= = , dan
mod + .
=
mod .
= ⇒ mod
Diperoleh =
= . Jadi :
= + +
= + . + . =
dan mod 27 i
Untuk
= = , dan =
mod .
− = , berarti = .
= +
+ +
+ + mod
. = ⇒
+ +
+ +
+ mod .
63
Diperoleh =
= . Jadi :
= = dan
mod 7 ii
Untuk =
= , dan
= mod
. − = , berarti = .
+ +
+ +
+ +
+ +
+ + mod
. = ⇒
+ +
+ +
+ +
+ +
+ + mod
Diperoleh =
= . Jadi :
= = dan
mod 19 iii
Untuk =
= , dan
= mod
. − = , berarti = .
+ +
+ +
+ +
+ +
+ +
+ mod .
= ⇒ +
+ +
+ +
+ +
+ +
+ + mod
. Diperoleh
= = .
Jadi : = =
dan mod 73 iv
Dari i, ii, iii dan iv diperoleh sistem kongruensi: mod 27
mod 7
64
mod 19 mod 73
Selanjutnya menyelesaikan sistem kongruensi di atas dengan menggunakan Teorema Sisa Cina dan Algoritme Gauss.
= , = , =
, =
.
= ,
= , =
, =
=
= ,
= =
, =
= ,
= =
.
mod 27, maka =
mod 7, maka =
mod 19, maka =
mod 73, maka =
+
+ +
mod 262143 . .
+ . . + . .
+ . . mod 262143
mod 262143 Jadi
= log mod
= .
Contoh 15 Menentukan masalah logaritma diskret pada grup multiplikatif
∗
dengan Pohlig Hellman Diketahui :
generator grup multiplikatif
∗
, = +
+ ∈
∗
, dan =
+ + .
Tentukan = log
mod .
Penyelesaian : Grup
∗
berorder , dengan = − =
Selanjutnya akan ditentukan dimana
mod . Sebelumnya harus
ditentukan terlebih dahulu = +
+ + +
. Definisikan
= = +
+ .
Untuk = ,
= , dan = mod
. = :
mod .
65
= ⇒ mod
. Dengan menggunakan Algoritme Exhaustive Search atau Baby-Step Giant-Step
diperoleh : =
= . Sehingga
= = , dan mod 7.
log mod
= . Pada Contoh 15, grup multiplikatif
∗
berorder prima, sehingga untuk menentukan logaritma diskret
hanya memerlukan nilai dari . Nilai
diperoleh dengan mencoba semua kemungkinan nilai yang ada;
, sampai ditemukan
yang benar. Pelacakan lengkap seperti ini masih efektif dilakukan karena
∗
berorder kecil. Jika
∗
berorder prima besar, untuk menentukan logaritma diskret
dengan Algoritme Pohlig Hellman tidak begitu efektif, karena ordernya tidak bisa difaktorkan menjadi faktor prima yang
smooth. Dalam hal order
∗
tidak bisa difaktorkan menjadi faktor prima, maka menentukan logaritma diskret
bisa langsung menggunakan Algoritme Exhaustive Search, Baby-Step Giant-Step atau Pollard’s rho.
3.2.8 Solusi Masalah Logaritma Diskret pada
∗
dengan Algoritme Index Calculus
Misalkan adalah generator grup siklik
berorder , dan ∈ . Untuk
menentukan = log
dengan Algoritme Index Calculus umum diantaranya adalah menentukan faktorisasi dari suatu generator
berpangkat dengan .
Masalah pemfaktoran ini menjadi bagian penting dalam Algoritme Index Calculus. Karena itu agar lebih mudah memahami Algoritme Index Calculus pada
∗
, terlebih dahulu akan kita pelajari tentang faktorisasi polinomial ∈ ℤ[ ].
3.2.8.1 Faktorisasi Polinomial
Diberikan polinomial ∈ ℤ[ ]. Masalah faktorisasi polinomial adalah
bagaimana memfaktorkan , sehingga
= …
, untuk
66
setiap adalah polinomial irredusibel atas
ℤ [ ]dan setiap ,
Menezes et al. 1997. Pada tulisan ini faktorisasi polinomial dibatasi pada polinomial-polinomial atas
ℤ [ ] dan solusi faktorisasi polinomial akan dikerjakan dalam beberapa tahap. Tahap pertama adalah faktorisasi bebas kuadrat,
kedua faktorisasi bebas kuadrat berderajad , ketiga faktorisasi berderajad dan
terakhir faktorisasi lengkap =
… .
1. Faktorisasi Bebas Kuadrat
Definisi 3.2.8.1 Misalkan
∈ ℤ[ ]. Maka bebas kuadrat jika tidak ada
pengulangan faktor, yakni tidak terdapat polinomial berderajad
sedemikian sehingga membagi
. Faktorisasi bebas kuadrat dari adalah
= ∏ , dimana setiap
adalah polinomial bebas kuadrat dan
gcd ,
= , untuk ≠ . Menezes et al. 1997 Perhatikan bahwa setiap polinomial
∈ ℤ[ ] adalah merupakan polinomial monik. Definisi yang berhubungan dengan polinomial monik dapat
dilihat pada Definisi 2.3.19. Bagian faktorisasi bebas kuadrat ini menunjukkan bagaimana masalah memfaktorkan polinomial
direduksi ke masalah pemfaktoran satu atau lebih polinomial monik bebas kuadrat. Ide dasarnya sama
dengan ide Algoritme Barlekamp’s Q-Matrix. Misalkan
= ∏ adalah polinomial monik atas
ℤ [ ] berderajad
, mempunyai faktor irredusibel berbeda ,
. Algoritme Berlekamp’s Q-Matrix untuk memfaktorkan
didasarkan pada fakta berikut. Himpunan polinomial :
ℬ = { ∈ ℤ[ ]
| mod
} adalah ruang vektor berdimensi atas
ℤ . Karena ℬ adalah ruang vektor maka ℬ memiliki basis, sebut saja basisnya adalah
ℱ = { ,
, … , }. Untuk
setiap faktor berbeda dan
dari ada
∈ ℱ dan ∈ ℤ
sedemikian sehingga membagi
− , tetapi tidak membagi
− . Faktor dan
dapat dipisah dengan menghitung gcd
, −
Menezes et al. 1997. Pada Algoritme Berlekamp’s Q- Matrix menentukan
− yaitu dengan menggunakan atau melibatkan
67
matriks identitas, sedangkan pada tulisan ini digunakan pelacakan probabilistik metode trial and error. Selanjutnya, Algoritme Berlekamp’s Q-Matrix dapat
dilihat di Landasan Teori Algoritme 2.6.1. Misalkan
∈ ℤ[ ], dengan adalah polinomial irredusibel monik
berderajad atas
ℤ , dan misalkan ∈ ℤ [ ],
, sedemikian sehingga membagi
− , dan adalah karakteristik dari
ℤ [ ]. Misalkan
= +
+ + +
, maka =
+ +
+ + mod
dan =
+ +
+ + mod
Polinomial −
mempunyai = akar Teorema 2.4.7,
dengan = , . Berdasarkan fakta yang digunakan Algoritme Berlekamp’
Q-Matrix hal 66 dan berdasarkan Teorema 2.4.7 −
menjadi : −
= −
pada ℤ [ ]. Karena
membagi −
, diperoleh = gcd
, −
= gcd ,
− = gcd
, gcd
, −
Ditulis, = gcd
, .
= gcd ,
− .
Algoritme faktorisasi bebas kuadrat dirancang untuk mendapatkan salah satu
, dimana = , 2. Berikut Algoritme Faktorisasi Bebas Kuadrat.
Algoritme Faktorisasi Bebas Kuadrat
Algoritme Faktorisasi Bebas Kuadrat adalah algoritme untuk menentukan faktorisasi bebas kuadrat dari polinomial monik bebas kuadrat
atas ℤ
dengan mengambil atau mengekstrak satu faktor saja. Algoritme Faktorisasi Bebas Kuadrat dilakukan dalam 3 tahap. Tahap
pertama adalah menguji apakah polinomial input merupakan polinomial
monik bebas kuadrat atau bukan Algoritme 3.2.8, dengan cara menginput = .
Jika adalah polinomial bebas kuadrat maka akan ditemukan
= mod
.
68
Algoritme 3.2.8
Algoritme Faktorisasi Bebas Kuadrat 1 Input
: polinomial monik ∈ ℤ[ ]berderajad dan integer , = .
Output : = gcd
, , dimana
adalah salah satu anggota ,
, … , sedemikian sehingga
= …
1. ←
mod 2.
← mod
3. Untuk dari 1 sampai diperoleh
= , lakukan :
1 ←
+ 2
ℎ ←
. =
3 ← ℎ
mod 4.
← gcd ,
Algoritme 3.2.8 diimplementasikan dengan bantuan software Maple 11, dapat dilihat pada Lampiran 2.1.
Contoh 16
Diketahui : =
+ + + ∈ ℤ[ ], dengan = .
Tentukan apakah adalah polinomial monik bebas kuadrat.
Penyelesaian : Misalkan :
= mod
= =
mod =
Selanjutnya dilakukan penjumlahan dan perkalian dan
sampai diperoleh
= = .
Berikut perhitungan =
+ ,
ℎ =
, dan =
ℎ mod
.
69
Tabel 3.2.15
Hasil Perhitungan
, ℎ
, dan
, dengan
= +
+ + . ℎ
+ + +
+ +
+ +
+ + +
+ +
+ + +
Pada saat nilainya sama dengan
= + + . Pengulangan akan
terus berlangsung sehingga tidak akan ditemukan =
mod .
Akibatnya =
+ + + bukan merupakan polinomial monik bebas
kuadrat, sehingga untuk memfaktorkan membutuhkan algoritme lain bisa digunakan Algoritme 3.2.14.
Contoh 17
Diketahui :
= +
+ +
+ +
+ +
+ ∈ ℤ[ ], dengan
= . Tentukan apakah adalah polinomial monik bebas kuadrat.
Penyelesaian : Misalkan :
= mod
= =
mod =
Selanjutnya dilakukan penjumlahan dan perkalian dan
sampai diperoleh
= = .
Berikut perhitungan
= +
, ℎ
= ,
dan = ℎ
mod .
=
+ . ℎ
= . = .
=
+ +
ℎ = .
= .
= +
+ + .
70
ℎ =
. =
+ +
+ +
+ +
+ +
+ + .
= +
+ +
+ +
+ +
+ . ℎ
= +
+ +
+ +
+ +
+ +
+ . =
+ +
+ +
+ + .
=
+ +
+ +
+ +
+ . ℎ
= +
+ +
+ +
+ . =
+ +
+ +
+ +
+ .
= . ℎ
= +
+ +
+ +
+ + .
= . Pada saat
nilainya sama dengan = . Selanjutnya karena
= , maka
gcd ,
ditetapkan sama dengan . Dan karena ditemukan
= mod
, maka adalah merupakan polinomial monik bebas
kuadrat. Sehingga selanjutnya untuk mengekstrak 1 faktor bebas kuadrat dari polinomial
dapat menggunakan Algoritme 3.2.9 berikut. Algoritme 3.2.9 berikut adalah algoritme untuk menentukan faktorisasi
bebas kuadrat dari polinomial monik bebas kuadrat ∈ ℤ[ ]dengan hanya
mengambil satu faktor saja.
Algoritme 3.2.9
Algoritme Faktorisasi Bebas Kuadrat 2 Input : polinomial monik bebas kuadrat
∈ ℤ[ ]berderajad . Output :
= gcd ,
, dimana adalah salah satu anggota
{ ,
, … , , … ,
} sedemikian
sehingga =
… …
1. ←
2. ←gunakan Algoritme 3.2.8 dengan input = dan
= 3.
Untuk dari 3 dengan langkah 2 selama t ≠ atau
≠ , lakukan:
← gunakan Algoritme 3.2.8 dengan input = dan =
. Hasilnya adalah
.
71
Algoritme 3.2.9 diimplementasikan dengan bantuan software Maple 11, dapat dilihat pada Lampiran 2.2.
Contoh 18
Diketahui =
+ +
+ +
+ +
+ + ∈ ℤ[ ]
Tentukan faktorisasi bebas kuadrat dari .
Penyelesaian :
= =
+ +
+ +
+ +
+ + .
Selanjutnya tentukan menggunakan Algoritme 3.2.8 dengan input
dan = , diperoleh
= . Ulangi langkah ini dengan input
dan = , diperoleh
= +
+ +
+ . Ulangi dengan input dan
= , diperoleh = .
Ambil hasil =
+ +
+ + .
Algoritme 3.2.10
Algoritme Faktorisasi Bebas Kuadrat 3 Deskripsi
: Menentukan faktorisasi bebas kuadrat dari polinomial monik bebas kuadrat
dengan hanya mengambil satu faktor saja. Input
: polinomial monik ∈ ℤ[ ]berderajad dan integer positif .
Output :
= gcd ,
, dimana adalah salah satu anggota
{ ,
, … , , … ,
} sedemikian
sehingga =
… …
1. ←gunakan Algoritme 3.2.9 dengan input
. 2.
Untuk dari 1 selama deg
≠ lakukan : ←gunakan Algoritme 3.2.9 dengan input
. Hasinya adalah
. Algoritme 3.2.10 diimplementasikan dengan bantuan software Maple 11,
dapat dilihat pada Lampiran 2.3.
Contoh 19
Diketahui =
+ +
+ +
+ +
+ + ∈ ℤ[ ], dan
= .
72
Tentukan faktorisasi bebas kuadrat dari .
Penyelesaian :
= +
+ + + perhitungan menggunakan Algoritme 3.2.9
dengan input .
Selanjutnya karena
deg =
= maka satu faktor bebas kuadrat dari adalah
= +
+ + + .
Jadi =
+ +
+ + .
Contoh 20
Diketahui =
+ +
+ +
+ +
+ + ∈ ℤ[ ], dan
= . Tentukan faktorisasi bebas kuadrat dari
. Penyelesaian :
=
+ +
+ + perhitungan menggunakan Algoritme 3.2.9 dengan input
.
Selanjutnya karena deg
≠ = maka ulangi lagi prosedur
sebelumnya dengan input =
+ +
+ + dan = . Dan
karena ternyata adalah polinomial irredusibel berderajad 7, maka
walaupun proses perhitungan menggunakan Algoritme 3.2.9 terus diulang tidak akan pernah ditemukan suatu faktor dari
yang berderajad sama dengan 4. Jadi perhitungan untuk mengambil atau mengekstrak satu faktor
bebas kuadrat berderajad = dari polinomial
gagal.
2. Faktorisasi Bebas Kuadrat Berderajad
Algoritme Faktorisasi Bebas Kuadrat Berderajad adalah algoritme untuk mengambil semua faktor bebas kuadrat berderajad
dengan menggunakan Algoritme Faktorisasi Bebas Kuadrat.
Algoritme 3.2.11
Algoritme Faktorisasi Bebas Kuadrat Berderajad Input : polinomial monik bebas kuadrat
∈ ℤ[ ]berderajad dan integer positif .
73
Output : =
… 1.
← deg dibagi dengan .
← .
2. Untuk dari 1 selama lakukan :
←gunakan Algoritme 3.2.10 dengan input dan .
←hasil bagi dan
. 3. Hasil =
= =
… Algoritme 3.2.11 diimplementasikan dengan bantuan software Maple 11,
dapat dilihat pada Lampiran 2.4.
Contoh 21
Diketahui : =
+ +
+ +
+ +
+ +
+ +
+ + +
+ + +
= . Tentukan : faktorisasi bebas kuadrat berderajad dari
. Penyelesaian :
= =
= . Set
= .
1. Tentukan
. Untuk menentukan gunakan Algoritme 3.2.10 dengan
input dan
= . Diperoleh : =
+ + . =
= +
+ +
+ +
+ +
+ . 2.
Tentukan . Untuk menentukan
gunakan Algoritme 3.2.10 dengan input
dan = . Diperoleh :
= +
+ + + .
= =
+ +
+ +
+ +
+ + .
3. Tentukan
. Untuk menentukan gunakan Algoritme 3.2.10 dengan
input dan
= . Diperoleh : =
+ +
+ + .
74
= =
+ +
+ + .
Jadi : =
. =
+ + +
+ +
+ +
+ +
+ +
+ +
+ Algoritme Faktorisasi Faktor Berderajad
ini akan mengekstrak semua faktor berderajad , misal
… dan suatu faktor
yang tidak berderajad , tetapi
merupakan suatu polinomial monik bebas kuadrat. Jika
bukan merupakan polinomial monik bebas kuadrat maka pemfaktoran gagal, seperti pada kasus atau Contoh 20.
3. Faktorisasi Berderajad
Algoritme Faktorisasi Berderajad adalah algoritme untuk menentukan
satu faktor berderajad beserta pengulangan atau pangkatnya dengan
memanfaatkan hasil Algoritme 3.2.12 dan sifat gcd himpunan. Input pada algoritme ini tidak harus polinomial monik bebas kuadrat. Berikut 2 algoritme
pendukung sebelum masuk ke Algoritme Faktorisasi Berderajad , yakni
Algoritme 3.2.12 dan Algoritme 3.2.13.
Algoritme 3.2.12
Algoritme Sisa Bagi 1 Input : polinomial
∈ ℤ[ ]dan integer Output : sisa bagi
oleh .
1. Set
←deg ← log
. 2.
Jika , maka ambil hasil
. Jika
, maka lakukan langkah berikut : ← mod
← mod
Ambil hasil .
75
Algoritme 3.2.12 dimaksudkan untuk menentukan sisa pembagian oleh
, diimplementasikan dengan bantuan software Maple 11, dapat dilihat pada Lampiran 2.5.
Contoh 22 Sisa Bagi 1 untuk kasus deg
Diketahui =
+ +
+ + , dan = .
Tentukan mod
. Penyelesaian :
Karena deg =
= , maka mod
adalah .
Contoh 23 Sisa Bagi 1 untuk kasus deg
Diketahui =
+ +
+ + , dan = .
Tentukan mod
. Penyelesaian :
Karena deg =
= , maka langkah pertama adalah menentukan , = deg
= . Kemudian hitung = log = .
= mod
= mod
= +
+ + .
= mod
= . Jadi sisa baginya adalah
.
Algoritme 3.2.13
Algoritme Sisa Bagi 2 Input : polinomial
∈ ℤ[ ]dan integer Output : sisa bagi
+ oleh .
1 Set
← sisa bagi
oleh perhitungan gunakan Algoritme 3.2.12
2 Jika :
2.1 Suku pertama polinomial adalah 1, maka lakukan langkah berikut.
Jika suku pertama adalah 1, maka lakukan langkah berikut.
ℎ ←
+ .
← ℎ : .
← + .
Ambil hasil : .
76
Jika suku pertama tidak sama dengan 1, maka lakukan langkah
berikut. ←
: . ←
+ . Ambil hasil
. a.
Suku pertama polinomial tidak sama dengan 1, maka lakukan
langkah berikut. Jika suku pertama
sama dengan suku pertama , maka
lakukan langkah berikut. ℎ
← +
. ← ℎ
: . ←
+ . Ambil hasil :
. Jika suku pertama
tidak sama dengan suku pertama , maka
lakukan langkah berikut. ←
: . ←
+ . Ambil hasil
. Algoritme 3.2.13
dimaksudkan untuk menentukan sisa pembagian + oleh
, diimplementasikan dengan bantuan software Maple 11, dapat dilihat pada Lampiran 2.6.
Contoh 24 Sisa Bagi 2
Diketahui =
+ +
+ + , dan = .
Tentukan sisa bagi + oleh
. Penyelesaian :
Berdasarkan Contoh 22, =
mod = .
Karena suku pertama polinomial adalah 1 dan suku pertama
tidak sama dengan 1, maka :
= :
= : = . =
+ = + .
77
Jadi sisa bagi +1 oleh
adalah + .
Algoritme 3.2.14
Algoritme Satu Faktor Derajad Input :
∈ ℤ[ ]dan integer positif . Output : satu faktor berderajad beserta pangkatnya.
1. ←gunakan Algoritme 3.2.13 dengan input polinomial
dan integer positif .
← gcd ,
. 2.
Jika a
= , maka hasilnya adalah .
b ≠ , maka lakukan langkah berikut :
i. Jika
deg = , maka lakukan langkah berikut :
1 Set =
. 2 Untuk dari 1 selama
gcd ,
= , lakukan :
← dibagi dengan
. 3
Ambil hasil =
ii. Jika
deg ≠ , maka lakukan langkah berikut :
1 ←gunakan Algoritme 3.2.11 dengan input
dan . ←banyaknya faktor polinomial
. ← hasil bagi
dengan 2 Untuk dari 1 sampai lakukan
←faktor ke- polinomial ← hasil bagi dengan
. ℎ
←sisa bagi dengan
. ← .
Untuk selama ℎ
= lakukan : ← hasil bagi dengan
. ℎ
←sisa bagi dengan
. ← +.
Hasil : .
78
Algoritme 3.2.14 dimaksudkan untuk memfaktorkan polinomial yang tidak bebas kuadrat, diimplementasikan dengan bantuan software Maple 11, dapat
dilihat pada Lampiran 2.7.
Contoh 25 Faktorisasi satu faktor berderajad .
Diketahui : =
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ + = .
Tentukan : faktorisasi satu faktor derajad . Penyelesaian :
Menggunakan Algoritme 3.2.13 dengan input dan
diperoleh nilai ,
yakni =
+ . = gcd
, =
+. Karena
deg =
= , maka :
Set =
.
Untuk dari 1 selama
gcd ,
= atau dengan kata lain
selama sisa bagi dengan
sama dengan nol, lakukan langkah berikut : bagi
dengan . Hasilnya dapat dilihat pada tabel
perhitungan berikut.
Tabel 3.2.16 Hasil Perhitungan
: :
hasil bagi sisa bagi
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
79
Dari tabel
terlihat bahwa
pada saat
= , sisa
bagi :
≠ , maka proses pembagian berhenti pada langkah ke-5 = dan hasil pemfaktoran
adalah : =
= +
+ +
+ +
Contoh 26 Faktorisasi satu faktor berderajad .
Diketahui : =
+ +
+ + , dan = .
Tentukan : faktorisasi satu faktor derajad . Penyelesaian :
Menggunakan Algoritme 3.2.13 dengan input dan
diperoleh nilai ,
yakni =
+ . = gcd
, = + + .
Karena deg
= = , maka :
Set
= .
Untuk
dari 1 selama gcd
, =
atau dengan kata lain selama sisa bagi
dengan sama dengan nol, lakukan langkah
berikut : bagi dengan
. Hasilnya dapat dilihat pada tabel perhitungan berikut.
Tabel
: hasil bagi
sisa bagi +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
Dari tabel
terlihat bahwa
pada saat
= , sisa
bagi :
≠ , maka proses pembagian berhenti pada langkah ke-4 = dan hasil pemfaktoran
adalah : =
= +
+ +
+ +
+
80
Contoh 27 Faktorisasi satu faktor berderajad .
Diketahui : =
+ +
+ + , dan = .
Tentukan : faktorisasi satu faktor derajad . Penyelesaian :
Menggunakan Algoritme 3.2.13 dengan input dan
diperoleh nilai ,
yakni =
+ . = gcd
, = +
+ + + .
Karena deg
= = , maka :
Set
= .
Untuk
dari 1 selama gcd
, =
atau dengan kata lain selama sisa bagi
dengan sama dengan nol, lakukan langkah
berikut : bagi dengan
. Hasilnya dapat dilihat pada tabel perhitungan berikut.
Tabel
: hasil bagi
sisa bagi +
+ +
+ +
Dari tabel
terlihat bahwa
pada saat
= , sisa
bagi :
≠ , maka proses pembagian berhenti pada langkah ke-2 = dan hasil pemfaktoran
adalah : =
= +
+ + +
= +
+ + +
Contoh 28 Faktorisasi satu faktor berderajad .
Diketahui : =
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
dan = .
Tentukan : faktorisasi satu faktor derajad .
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
∗
Diketahui polinomial irredusibel atas
ℤ , generator
∗
, =
− adalah order dari
∗
, ∈
∗
, logaritma diskret yang
memenuhi mod
. Berikut waktu komputasi logaritma diskret dengan menggunakan Algoritme Exhaustive Search, Baby-Step Giant-Step, Baby-
Step Giant-Step 2, Baby-Step Giant-Step 3, Naif Square, Pollard’s rho, Pohlig Hellman, dan Index Calculus jika diketahui
dan , dengan menggunakan computer Intel Core 2 Duo 1,83 GHz 1 GB.
Tabel 3.3.1. Waktu Komputasi dengan Algoritme Exhaustive Search
detik 16
65.535 60.000
5,92 17
131.071 130.944
13,08 18
262.143 142.422
14,69 19
524.287 345.461
38,00 20
1.048.575 996.754
127,53 21
2.097.151 1.096.754
162,67
90
detik 22
4.194.303 3.167.543
539,90 23
8.388.607 6.987.241
1.337,89 24
16.777.215 10.765.423
2.320,59 25
33.554.431 30.768.121
6.377,30 Dari Tabel 3.3.1 terlihat bahwa dengan bertambah besarnya
dan , maka waktu komputasi
yang diperlukan untuk menentukan logaritma diskret akan
semakin besar. Sehingga Algoritme Exhaustive Search ini lebih efektif digunakan menentukan masalah logaritma diskret pada grup multiplikatif
∗
berorder kecil.
Tabel 3.3.2, 3.3.3, 3.3.4 dan 3.3.5 berikut adalah waktu komputasi untuk algoritme yang idenya adalah Algoritme Baby-Step Giant-Step pada grup siklik
umum. Keempat algoritme tersebut pada fase baby-step fase menyimpan mod
memerlukan waktu komputasi yang sama. Walaupun pada kenyataannya jika
mod sudah disimpan di memori komputer pada saat
mengkomputasi salah satu algoritme tersebut sebenarnya mod
dapat digunakan untuk komputasi algoritme lain Algoritme 3.2.2 , 3.2.3, 3.2.4 atau
3.2.5 dengan yang sama.
Tabel 3.3.2 Waktu Komputasi dengan Algoritme Baby-Step Giant-Step
detik = + 16
65.535 60.000
0,00 + 1,13 = 1,13 17
131.071 130.944
0,00 + 0,17 = 0,17 18
262.143 142.422
0,16 + 0,20 = 0,36 19
524.287 345.461
0,16 + 0,27 = 0,43 20
1.048.575 996.754
0,13 + 0,58 = 0,71 21
2.097.151 1.096.754
0,08 + 0,53 = 0,61 22
4.194.303 3.167.543
0,15 + 0,97 = 1,12 23
8.388.607 6.987.241
0,27 + 1,50 = 1,77 24
16.777.215 10.765.423
0,28 + 1,65 = 1,93 25
33.554.431 30.768.121
0,08 + 3,63 = 3,71
91
Ket : adalah waktu yang diperlukan untuk menentukan masalah logaritma
diskret dengan adalah waktu untuk menyimpan , waktu menentukan nilai .
mod ,
−, = √
− , yang disimpan di memori komputer adalah sebanyak dengan ide membagi dengan
. Waktu komputasi untuk algoritme ini sudah jauh lebih cepat jika dibanding dengan Algoritme
Exhaustive Search pada saat dan sama.
Tabel 3.3.3 Waktu Komputasi dengan Algoritme Baby-Step Giant-Step 2
detik = + 16
65.535 60.000
0,00 + 1,56 = 1,56 17
131.071 130.944
0,00 + 2,98 = 2,98 18
262.143 142.422
0,16 + 2,73 = 2,89 19
524.287 345.461
0,16 + 7,71 = 7,87 20
1.048.575 996.754
0,13 + 24,83 = 24,96 21
2.097.151 1.096.754
0,08 + 40,27 = 40,35 22
4.194.303 3.167.543
0,15 + 133,61 = 133,76 23
8.388.607 6.987.241
0,27 + 253,51 = 253,78 24
16.777.215 10.765.423
0,28 + 431,52 = 431,80 25
33.554.431 30.768.121
0,08 + 1.275,72 = 1.275,80 Ket :
adalah waktu yang diperlukan untuk menentukan masalah logaritma diskret dengan adalah waktu untuk menyimpan
, waktu menentukan nilai . mod
, −,
= √ − , yang disimpan di memori
komputer adalah sebanyak dengan ide membagi dengan .
Tabel 3.3.4 Waktu Komputasi dengan Algoritme Baby-Step Giant-Step 3
detik = +
16 65.535
60.000 8
0,00 + 0,11 = 0,11 17
131.071 130.944
8 0,00 + 0,19 = 0,19
18 262.143
142.422 10
0,16 + 0,10 = 0,26 19
524.287 345.461
10 0,16 + 0,15 = 0,31
20 1.048.575
996.754 10
0,13 + 0,54 = 0,67
92
detik = +
21 2.097.151
1.096.754 11
0,08 + 0,33 = 0,41 22
4.194.303 3.167.543
12 0,15 + 0,37 = 0,52
23 8.388.607
6.987.241 11
0,27 + 1,72 = 1,99 24
16.777.215 10.765.423
14 0,28 + 0,34 = 0,62
25 33.554.431
30.768.121 12
0,08 + 5,80 = 5,88 mod
, −,
= √ − , yang disimpan di memori
komputer adalah sebanyak dengan ide membagi dengan
, = ,
, =
− . Untuk algoritme ini sebenarnya banyaknya mod
yang boleh disimpan di memori komputer tidak harus sama dengan , tetapi dalam tulisan ini untuk mempermudah fase baby-step maka digunakan
mod yang sudah tersimpan di memori komputer pada waktu
mengkomputasi logaritma diskret dengan algoritme sebelumnya. Dari Tabel 3.3.2, 3.3.3 dan 3.3.4 terlihat perbedaan pada saat fase giant-step, Algoritme Baby-Step
Giant-Step 2 memerlukan waktu komputasi logaritma diskret lebih lama jika dibandingkan dengan 2 algoritme lainnya.
Tabel 3.3.5 Waktu Komputasi dengan Algoritme Naif Square
detik 16
65.535 60.000
0,00 + 0,00 = 0,00 17
131.071 130.944
0,00 + 0,38 = 0,38 18
262.143 142.422
0,16 + 0,37 = 0,53 19
524.287 345.461
0,16 + 0,00 = 0,16 20
1.048.575 996.754
0,13 + 0,67 = 0,80 21
2.097.151 1.096.754
0,08 + 0,38 = 0,46 22
4.194.303 3.167.543
0,15 + 0,70 = 0,85 23
8.388.607 6.987.241
0,27 + 0,52 = 0,79 24
16.777.215 10.765.423
0,28 + 2,20 = 2,48 25
33.554.431 30.768.121
0,08 + 3,41 = 3,49
93
Sama seperti Algoritme Baby-Step Giant-Step, Baby-Step Giant-Step 2, dan Baby- Step Giant-Step 3, perhitungan logaritma diskret dengan Algoritme Naif Square
ini juga dengan menyimpan mod
sebanyak . Terlihat pada Tabel 3.3.5 ini waktu komputasinya juga lebih cepat jika dibanding dengan waktu komputasi
logaritma diskret dengan Algoritme Baby-Step Giant-Step 2.
Tabel 3.3.6 Waktu Komputasi dengan Algoritme Pollard’s rho
detik Ket
16 65.535
60.000 17.164
0,55 17
131.071 130.944
14.478 0,47
18 262.143
142.422 182.012
0,82 19
524.287 345.461
126.954 0,87
20 1.048.575
996.754 86.323
- a
127.384 1,34
21 2.097.151
1.096.754 1.995.591
- c
1.727.088 2,18
22 4.194.303
3.167.543 2.989.841
- c
2.724.953 8,73
23 8.388.607
6.987.241 65.194
- c
3.716.467 1,83
24 16.777.215
10.765.423 15.773.804
14,9 25
33.554.431 30.768.121
7.774.661 17,39
Ket : a tak ada invers modulo c Jawaban tak sesuaisama dengan y.
Komputasi dengan Algoritme Pollard’s rho bergantung pada pemilihan yang
tepat. Sehingga dalam komputasi dengan Algoritme Pollard’s rho ini dipilih
dengan beberapa kali mencoba sampai ditemukan jawaban yang benar.
94
Tabel 3.3.7 Waktu Komputasi dengan Algoritme Pohlig-Hellman
detik 16
65.535 60.000
0,23 17
131.071 130.944
13,28 18
262.143 142.422
30,23 19
524.287 345.461
39,69 20
1.048.575 996.754
0,15 21
2.097.151 1.096.754
0,29 22
4.194.303 3.167.543
0,46 23
8.388.607 6.987.241
7,72 24
16.777.215 10.765.423
0,34 25
33.554.431 30.768.121
1,45
Tabel 3.3.8 Waktu Komputasi dengan Algoritme Index Calculus
Faktor basis dlm deg
detik 16
65.535 60.000
7,15 17
131.071 130.944
4,08 18
262.143 142.422
12,69 19
524.287 345.461
30,65 20
1.048.575 996.754
36,37 21
2.097.151 1.096.754
74,14 22
4.194.303 3.167.543
193,06 23
8.388.607 6.987.241
87,16 24
16.777.215 10.765.423
680,48 25
33.554.431 30.768.121
954,65 Komputasi logaritma diskret dengan Algoritme Index Calculus ini bergantung
pada pemilihan faktor basis S, pemilihan sedemikian sehingga
dapat difaktorkan atas elemen-elemen .
95
Tabel 3.3.9 Waktu Komputasi Logaritma Diskret dengan Beberapa Algoritme
m n
y Waktu Komputasi t dalam Satuan Detik dengan Algoritme
Exhaustive Search
BSGS BSGS 2
BSGS 3 Naif
Square Pollard’s rho
Pohlig Hellman
Index Calculus t
t t
t t
d t
Ket t
Faktor Basis dalam deg
t 16
65.535 60.000
5,92 1,13
1,56 0,11
0,00 17.164
0,55 0,23
7,15 17
131.071 130.944
13,08 0,17
2,98 0,19
0,38 14.478
0,47 13,28
4,08 18
262.143 142.422
14,69 0,36
2,89 0,26
0,53 182.012
0,82 30,23
12,69 19
524.287 345.461
38,00 0,43
7,87 0,31
0,16 126.954
0,87 39,69
30,65 20
1.048.575 996.754
127,53 0,71
24,96 0,67
0,80 86.323
- a
0,15 36,37
127.384 1,34
21 2.097.151
1.096.754 162,67
0,61 40,35
0,41 0,46
1.995.591 -
c 0,29
74,14 1.727.088
2,18 22
4.194.303 3.167.543
539,90 1,12
133,76 0,52
0,85 2.989.841
- c
0,46 193,06
2.724.953 8,73
23 8.388.607
6.987.241 1.337,89
1,77 253,78
1,99 0,79
65.194 -
c 7,72
87,16 3.716.467
1,83 24
16.777.215 10.765.423
2.320,59 1,93
431,80 0,62
2,48 15.773.804
14,9 0,34
680,48 25
33.554.431 30.768.121
6.377,30 3,71
1.275,80 5,88
3,49 7.774.661
17,39 1,45
954,65 Ket. a tak ada invers modulo
c jawaban tak sesuai atau tak sama dengan y. BSGS : Baby-Step Giant-Step
BAB IV KESIMPULAN DAN SARAN