Algoritme Berlekamp’s Q-matrix KOMPUTASI MASALAH LOGARITMA DISKRET PADA

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