• Tidak ada hasil yang ditemukan

IV. SIMPULAN DAN SARAN

4.2 Saran

4.2 Saran

Tema dalam karya ilmiah ini dapat diteruskan bagi yang berminat, yaitu menentukan solusi dari 2

(mod )

xa n

dengan n bilangan komposit

( 1 2 3

1e 2e 3e... ek k

n=p p p p , denganpi prima dan

i

e bilangan bulat positif).

DAFTAR PUSTAKA Hidayat, T. 2005. Analisis Algoritma Kunci

Publik Rabin. Skripsi. Departemen Matematika FMIPA IPB, Bogor

Ningsih, Y. 2006. Masalah Residu Kuadratik. Skripsi. Departemen Matematika FMIPA IPB, Bogor

Niven, I. Zuckerman, H. S. dan Montgomery, L. H. 1991. An Introduction to The Theory of Numbers. John Wiley & Sons. Inc: New York.

Menezes, A. J. Oorschot, P. C. V. dan S. Vanstone. 1997. Handbook of Applied Cryptography. CRC Press, Inc: New York.

Lampiran 1.

Implementasi Algoritma 1 dengan bantuan perangkat lunak Mathematica 5.2.

Algoritma 1 :

Mencari solusi 2

( )

mod

xa p dengan terlebih dahulu mencari generator dari *p. INPUT : Bilangan prima ganjil p dan bilangan bulat a, 1 ≤ ap-1.

OUTPUT : Dua akar kuadrat a modulo p.

<< NumberTheory`NumberTheoryFunctions` Algoritma1[a_Integer, p_Integer] :=

If[PrimeQ[p] = = False, Print["p bukan prima"], If[JacobiSymbol[a, p] = = -1, Print["Tak ada solusi"], If[JacobiSymbol[a, p] = = 0, {0}, {aa = Mod[a, p]; g = PrimitiveRoot[p] ; For[i = 0, i p - 1, i = 2 + i, If[PowerMod[g, i, p] = = aa, Break[] ] ; u = Mod[ 2 i , 1 2 p− ] ; x = PowerMod[g, u, p], Mod[-x, p] } ] ] ] Contoh : Input : Algoritma1[24,97] Output : { 86, 11 } Input : Algoritma1[541,104729] Output : { 28205, 76524 }

Lampiran 2.

Implementasi Algoritma RESSOL dengan bantuan perangkat lunak Mathematica 5.2.

Algoritma 2 (Algoritma RESSOL) Mencari akar kuadrat modulo p prima ganjil

INPUT : Bilangan prima ganjil p dan bilangan bulat a, 1 ≤ ap – 1. OUTPUT : Dua akar kuadrat a modulo p.

RESSOL[a_Integer, p_Integer] :=

If[PrimeQ[p] = = False, Print["p bukan prima"], If[JacobiSymbol[a, p] = = -1, Print["Tak ada solusi"], If[JacobiSymbol[a, p] = = 0, {0}, {m = p – 1 ; k = 0 ; While[IntegerQ[ 2 m ], {m = 2 m , k++}] ; aInv = PowerMod[a, -1, p] ; z = Random[Integer,{1, p-1}]; While[JacobiSymbol[z, p] 1, z = Random[Integer,{1, p-1}]; ]; c = PowerMod[z, m, p] ; r = PowerMod[a, 1 2 m+ , p] ; For[i = 1, i k - 1, i++, { d = PowerMod[r2 * aInv, 2k - i - 1, p], If[Mod[d, p] = = p - 1, r = Mod[r*c, p] ], c = Mod[c2, p] } ; r, Mod[-r, p] } ] ] ] Contoh : Input : RESSOL[26951623672, 98573007539] Output : { 98338017685, 234989854 } Input : RESSOL[13, 29996224275833] Output : { 28303375151909, 1692849123924 }

Lampiran 3.

Implementasi Algoritma 3 dengan bantuan perangkat lunak Mathematica 5.2.

Algoritma 3 :

Mencari akar kuadrat modulo pq, dengan p dan q prima ganjil.

INPUT : Bilangan prima ganjil p dan q , dan 1 ≤ apq – 1 OUTPUT : Empat akar kuadrat a modulo pq.

Algoritma3[a_Integer, p_Integer, q_Integer]:= If[PrimeQ[p] = = False || PrimeQ[q] = = False,

Print["p atau q bukan prima"],

If[JacobiSymbol[a, p] = = -1 || JacobiSymbol[a, q] = = -1, Print["Tak ada solusi"], w = Ressol[a, p] 1 ;

e = Ressol[a, q] 1 ;

{b, {c, d}} = ExtendedGCD[p,q] ; x = Mod[w* d* q + e* c* p, p* q] ; y = Mod[w* d* qe* c* p, p* q] ;

If[x y||x Mod[-y, pq],{x, Mod[-x, pq]},{x, y, Mod[-x, pq],Mod[-y, pq] } ] ] ] Contoh : Input : Algoritma3[3, 23, 97] Output : { 1833, 1465, 398, 766 } Input : Algoritma3[541, 104729, 15485863] Output : { 287132176177, 519495455767, 1334686769950, 1102323490360 }

Lampiran 4.

Implementasi Algoritma 4 dengan bantuan perangkat lunak Mathematica 5.2.

Algoritma 4 :

Mencari akar kuadrat modulo pj , dengan p prima ganjil dan j≥2.

INPUT : Bilangan prima ganjil p , j≥2dan a∈[1,pj−1] OUTPUT : Dua akar kuadrat a modulo pj.

Algoritma4[a_Integer, p_Integer, j_Integer] := If[PrimeQ[p] = = False, Print["p bukan prima"], If[JacobiSymbol[a, p] = = -1, Print["Tak ada solusi"], If[JacobiSymbol[a, p] = = 0,

If[f[x_] := x^2 - a; Mod[f[0], p^2] = = 0, sol[2] = Table[p (i - 1), {i, p}];

tempsol[n_] := Array[bb, {Length[sol[n - 1]], p}]; For[k = 3, k j, k++,

For[i1 = 1, i1 Length[sol[k - 1]], i1++, If[Mod[f[sol[k - 1][[i1]]], p^k] = = 0,

For[i2 = 1, i2 p, i2++, bb[i1, i2] = sol[k - 1][[i1]] + p^(k - 1)(i2 - 1) ],

For[i2 = 1, i2 p, i2++, bb[i1, i2] = Null ] ] ]; ss = DeleteCases[tempsol[k], Table[Null, {p}]]; sol[k] = Union[ss[[1]], ss[[2]]]; ]; sol[j],

Print["Tak ada solusi"] ], {RESSOL[a, p] ; f[1] = r ; fInvers = PowerMod[2*r, -1, p] ; f[t_] := f[t] = f[t - 1] - (f[t - 1] ^ 2 - a) fInvers ; For[i = 1, i j, i++, s = Mod[f[i], p ^ i] ] ; s, Mod[ -s, p ^ j] } ] ] ] Contoh : Input : Algoritma4[54, 101, 12] Output : { 173271594768487760705407, 953553435363481959955794 } Input : Algoritma4[112, 541, 10] Output : { 2064697425807989041443720167, 82997796719148457447487234 } Input : Algoritma4[9, 3, 10] Output : { 3, 19680, 19686, 39363, 39369, 59046 } Input : Algoritma4[49, 7, 15] Output : { 7, 678223072842, 678223072856, 1356446145691, 1356446145705, 2034669218540, 2034669218554, 2712892291389, 2712892291403, 3391115364238, 3391115364252, 4069338437087, 4069338437101, 4747561509936 }

Lampiran 5.

Waktu Eksekusi Algoritma 1 dan Algoritma RESSOL dengan bantuan perangkat lunak

Mathematica 5.2.

INPUT : Bilangan prima ganjil p dan n (adalah banyaknya nilai a yang diinginkan) OUTPUT : Waktu eksekusi Algoritma 1 dan Algoritma RESSOL (dalam detik)

WaktuEksekusi[p_Integer, n_Integer]:= { we = Table [ a = Random[Integer,{1, p-1}]; While[JacobiSymbol[a, p] = = -1, a = Random[Integer,{1, p-1}]; ] ; { p, a, Timing[Algoritma1[a, p]][[1]], Timing[RESSOL[a, p]][[1]]}, {n} ];

TableForm[we, TableHeadings->{Automatic,{" p"," a"," Algoritma 1"," RESSOL"}}] } Contoh : Input : WaktuEksekusi[1299709, 7] Output : P a Algoritma 1 RESSOL 1 1299709 328426 1,2657 0,0069 2 1299709 671944 2,1884 0,0098 3 1299709 231057 1,4539 0,0081 4 1299709 601890 3,8138 0,0076 5 1299709 825496 1,2037 0,0015 6 1299709 290150 3,8286 0,0016 7 1299709 291949 2,7545 0,0031

Lampiran 6.

Waktu Algoritma RESSOL dengan bantuan perangkat lunak Mathematica 5.2

INPUT : Bilangan prima ganjil p = 29.996.224.275.833 dan n(adalah banyaknya nilai a yang diinginkan)

OUTPUT : Waktu eksekusi Algoritma RESSOL (dalam detik) weRessol[n_Integer]:= {p = 29996224275833 weR = Table[ a = Random[Integer,{1, p-1}]; While[JacobiSymbol[a, p] -1, a = Random[Integer,{1, p-1}]; ]; {p, a, Timing[RESSOL[a, p]][[1]]}, {n} ];

TableForm[weR, TableHeadings->{Automatic, {" p"," a"," RESSOL"}}] } Contoh : Input : weRessol[10] Output : P a RESSOL 1 29996224275833 424613597121 0,0159 2 29996224275833 10878246026665 0,0178 3 29996224275833 5887477973699 0,0167 4 29996224275833 20786675373559 0,0206 5 29996224275833 1574940209207 0,0185 6 29996224275833 5641355712333 0,0194 7 29996224275833 10073237724502 0,0153 8 29996224275833 27504498309348 0,0212 9 29996224275833 7273523082800 0,0143 10 29996224275833 18488184417987 0,0134

ASPEK KOMPUTASI

SOLUSI RESIDU KUADRATIK

MUHAMMAD MUKAFI

G54103011

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

BOGOR

2007

RINGKASAN

MUHAMMAD MUKAFI. Aspek Komputasi Solusi Residu Kuadratik. Dibimbing oleh SUGI

GURITMANdanSISWANDI.

Dalam menentukan apakah suatu kongruensi 2

( )

mod

xa p dengan abilangan bulat danp bilangan prima mempunyai solusi atau tidak dapat digunakan Kriteria Euler. Jika

( )

( )

1 / 2

1 mod p

a p maka x2a

(

modp

)

mempunyai solusi.

Jika 2

( )

mod

xa p mempunyai solusi, maka untuk mementukan solusinya dapat digunakan Algoritma RESSOL (Residue Solver). Algoritma RESSOL adalah algoritma acak (randomized algorithm) dan bukan algoritma deterministic, tetapi prosedur perhitungannya lebih praktis dan cepat.

Algoritma RESSOL hanya dapat digunakan untuk mencari solusi dari 2

( )

mod

xa p

dengan p prima ganjil. Tetapi dari Algoritma RESSOL tersebut dapat dikembangkan menjadi beberapa algoritma untuk mencari solusi dari 2

( )

mod

xa pq dengan pdanqprima ganjil, dan 2

(mod j)

I. PENDAHULUAN 1.1 Latar Belakang

Salah satu masalah dalam teori bilangan adalah masalah residu kuadratik yaitu mencari solusi dari kongruensi x2a(mod )n dengan

a dan n adalah suatu bilangan bulat.

Untuk mencari solusi dari

( )

2

mod

xa n terlebih dahulu ditentukan apakah a merupakan residu kuadratik dari n

atau bukan. Masalah residu kuadratik telah dibahas sebelumnya oleh Yuliarti Ningsih (2006). Jika a merupakan residu kuadratik maka 2

( )

mod

xa n mempunyai solusi.

Mencari solusi dari 2

(mod )

xa n lebih mudah jika n adalah bilangan prima, tetapi jika n adalah bilangan komposit yang tidak diketahui faktor primanya maka akan sulit untuk dicari solusinya.

Pencarian solusi dari 2

( )

mod

xa n

dapat kita bagi menjadi beberapa kasus yaitu untuk n prima, n = p q dengan p dan q

prima ganjil, dan n = j

p dengan p prima ganjil dan j bilangan bulat dimanaj≥2.

Untuk kasus 2

( )

mod

xa p dengan p

prima ganjil dan a adalah residu kuadratik, terdapat suatu algoritma yang dapat digunakan untuk mencari solusinya yaitu Algoritma RESSOL (Residue Solver) dan Algoritma 1.

Untuk kasus 2

( )

mod

xa pq dengan p

dan q prima ganjil, terlebih dahulu dicari solusi kongruensi dari masing-masing faktor prima tersebut dengan Algoritma RESSOL, kemudian digunakan Teorema Sisa Cina untuk menemukan solusinya.

Untuk kasus 2

( )

mod j

xa p dengan p

prima ganjil dan j≥2, terlebih dahulu diceri solusi dari 2

( )

mod

xa p dengan Algoritma RESSOL, kemudian digunakan Lemma Hensel’s untuk mencari solusinya.

1.2 Tujuan

Tujuan dari penulisan ini adalah : 1. Mempelajari teorema-teorema yang

terkait dengan solusi residu kuadratik dan mengkonstruksi Algoritma 1 untuk mencari solusinya.

2. Merekonstruksi Algoritma RESSOL beserta analisisnya.

3. Mengkonstruksi Algoritma untuk mencari solusi 2

( )

mod

xa pq dan

dengan a dan j bilangan bulat

(

j≥2

)

serta p dan q prima ganjil.

4. Membandingkan waktu eksekusi Algoritma 1 dengan Algoritma RESSOL yang terkait bilangan besar.

II. LANDASAN TEORI Pada bagian ini akan dituliskan beberapa

definisi dan teorema yang digunakan sebagai landasan bagi argumen-argumen yang dituliskan pada bab-bab berikutnya.

2.1 Bilangan Bulat

Himpunan Bilangan Bulat dinotasikan .

{

..., 2, 1, 0,1, 2,...

}

= − − .

Definisi 2.1 [Keterbagian]

Bilangan bulat b dikatakan pembagi dari bilangan bulat a(a 0), jika ada bilangan bulat x sedemikian sehinggab axdan ditulis

a | b. Apabila b bukan pembagi dari a, maka ditulis a|/b.

[Niven, 1991]

Definisi 2.2 [Pembagi Bersama Terbesar] Suatu bilangan bulat tak negatif d dikatakan pembagi bersama terbesar dari bilangan bulat

a dan b, jika :

1. d adalah pembagi bersama dari a dan b, dan

2. Jika c dimana c|a dan c|b, maka

c|d.

Biasanya pembagi bersama terbesar dari a

dan b dinotasikan dengan d ( , )a b

.

[Menezes, 1997]

Definisi 2.3 [Relatif Prima]

Bilangan a dan b dikatakan relatif prima jika ( , )a b 1dan bilangan-bilangan a a1, 2,...,an

dikatakan relatif prima jika ( ,a a1 2,...,an) 1.

( )

2

mod j

I. PENDAHULUAN 1.1 Latar Belakang

Salah satu masalah dalam teori bilangan adalah masalah residu kuadratik yaitu mencari solusi dari kongruensi x2a(mod )n dengan

a dan n adalah suatu bilangan bulat.

Untuk mencari solusi dari

( )

2

mod

xa n terlebih dahulu ditentukan apakah a merupakan residu kuadratik dari n

atau bukan. Masalah residu kuadratik telah dibahas sebelumnya oleh Yuliarti Ningsih (2006). Jika a merupakan residu kuadratik maka 2

( )

mod

xa n mempunyai solusi.

Mencari solusi dari 2

(mod )

xa n lebih mudah jika n adalah bilangan prima, tetapi jika n adalah bilangan komposit yang tidak diketahui faktor primanya maka akan sulit untuk dicari solusinya.

Pencarian solusi dari 2

( )

mod

xa n

dapat kita bagi menjadi beberapa kasus yaitu untuk n prima, n = p q dengan p dan q

prima ganjil, dan n = j

p dengan p prima ganjil dan j bilangan bulat dimanaj≥2.

Untuk kasus 2

( )

mod

xa p dengan p

prima ganjil dan a adalah residu kuadratik, terdapat suatu algoritma yang dapat digunakan untuk mencari solusinya yaitu Algoritma RESSOL (Residue Solver) dan Algoritma 1.

Untuk kasus 2

( )

mod

xa pq dengan p

dan q prima ganjil, terlebih dahulu dicari solusi kongruensi dari masing-masing faktor prima tersebut dengan Algoritma RESSOL, kemudian digunakan Teorema Sisa Cina untuk menemukan solusinya.

Untuk kasus 2

( )

mod j

xa p dengan p

prima ganjil dan j≥2, terlebih dahulu diceri solusi dari 2

( )

mod

xa p dengan Algoritma RESSOL, kemudian digunakan Lemma Hensel’s untuk mencari solusinya.

1.2 Tujuan

Tujuan dari penulisan ini adalah : 1. Mempelajari teorema-teorema yang

terkait dengan solusi residu kuadratik dan mengkonstruksi Algoritma 1 untuk mencari solusinya.

2. Merekonstruksi Algoritma RESSOL beserta analisisnya.

3. Mengkonstruksi Algoritma untuk mencari solusi 2

( )

mod

xa pq dan

dengan a dan j bilangan bulat

(

j≥2

)

serta p dan q prima ganjil.

4. Membandingkan waktu eksekusi Algoritma 1 dengan Algoritma RESSOL yang terkait bilangan besar.

II. LANDASAN TEORI Pada bagian ini akan dituliskan beberapa

definisi dan teorema yang digunakan sebagai landasan bagi argumen-argumen yang dituliskan pada bab-bab berikutnya.

2.1 Bilangan Bulat

Himpunan Bilangan Bulat dinotasikan .

{

..., 2, 1, 0,1, 2,...

}

= − − .

Definisi 2.1 [Keterbagian]

Bilangan bulat b dikatakan pembagi dari bilangan bulat a(a 0), jika ada bilangan bulat x sedemikian sehinggab axdan ditulis

a | b. Apabila b bukan pembagi dari a, maka ditulis a|/b.

[Niven, 1991]

Definisi 2.2 [Pembagi Bersama Terbesar] Suatu bilangan bulat tak negatif d dikatakan pembagi bersama terbesar dari bilangan bulat

a dan b, jika :

1. d adalah pembagi bersama dari a dan b, dan

2. Jika c dimana c|a dan c|b, maka

c|d.

Biasanya pembagi bersama terbesar dari a

dan b dinotasikan dengan d ( , )a b

.

[Menezes, 1997]

Definisi 2.3 [Relatif Prima]

Bilangan a dan b dikatakan relatif prima jika ( , )a b 1dan bilangan-bilangan a a1, 2,...,an

dikatakan relatif prima jika ( ,a a1 2,...,an) 1.

( )

2

mod j

Bilangan-bilangan a a1, 2,...,an dikatakan relatif prima berpasangan jika ( ,a ai j) 1 untuk setiap i 1, 2, 3...,n dan j 1, 2, 3...,n

dengan i j.

[Niven, 1991]

Definisi 2.4 [Bilangan Prima]

Suatu bilangan bulat p > 1 dinamakan prima atau bilangan prima , jika pembagi dari p

adalah 1 dan p itu sendiri.

Bilangan bulat a > 1 yang bukan prima dinamakan bilangan komposit.

[Niven, 1991]

Teorema 2.1

1. Jikap abdan p prima makap aataup b. 2. Jika p a a1 2....andan p prima maka

1

p a atau p a2atau p a3… atau p an. [Niven, 1991]

Teorema 2.2 [Teorema Dasar Aritmatika] Setiap bilangan bulat n > 1 dapat difaktorkan secara tunggal ke dalam faktor-faktor yang semuanya prima, tanpa memperhatikan urutan.

[Niven, 1991]

Definisi 2.5 [Fungsi Euler Phi]

Fungsi Euler Phi dari n dengan n = 1, 2, 3, ... dinotasikan dengan φ(n) adalah banyaknya bilangan bulat pada interval [1,n] yang prima relatif dengan n.

[Menezes, 1997]

Teorema 2.3 [Sifat-sifat Fungsi Euler Phi] 1. Jika p prima maka φ(p) = p – 1.

2. Jika (m,n) = 1, maka φ(mn) = φ(m).φ(n). 3. Jika 1 2 3

1e 2e 3e

...

ek

k

n= p p p p dengan pi

bilangan prima, maka

1 2 1 1 1 ( ) 1 1 ... 1 k n n p p p φ = − − − [Menezes, 1997] 2.2 Kongruensi Definisi 2.6

Misalkan a, b dan m bilangan bulat, dengan 0

m . Bilangan a dikatakan kongruen terhadap b modulo m, dinotasikan dengan

(mod )

a b m , jika m pembagi (a b).

Bilangan bulat m disebut modulus dari kongruensi.

[Menezes, 1997]

Teorema 2.4

Jika a, b, c, d, dan m adalah bilangan bulat, dengan m 0maka :

1. Ketiga pernyataan berikut adalah ekuivalen :

i. a b(mod )m , ii. b a(mod )m , dan iii. a b 0(mod )m .

2. Jika a b(mod )m dan b c(mod )m

maka a c(mod )m .

3. Jika a b(mod )m dan c d(mod )m

maka a c(mod )m b d(mod )m . 4. Jika a b(mod )m dan c d(mod )m

maka ac bd(mod )m .

5. Jika a b(mod )m dan d m| , dengan

0

d maka a b(mod )d .

6. Jikaa b(mod )m makaac bc(mod )m

untuk setiap c positif.

[Niven, 1991]

Definisi 2.7 [Himpunan Bilangan Bulat Modulo n]

Himpunan bilangan bulat modulo n, dinotasikan n, merupakan suatu himpunan dari bilangan-bilangan bulat {0,1,2,3,…, n – 1}.

[Menezes, 1997] Operasi penjumlahan, pengurangan, dan perkalian bilangan bulat modulo n bersifat tertutup dalam n.

Definisi 2.8 [Invers Perkalian]

Misalkan an. Jika ( , )a n =1 maka invers perkalian dari a

(

modn

)

adalah bilangan bulat xn sedemikian sehingga

( )

1 mod

axn . Invers dari a dinotasikan a1. [Niven, 1991]

Teorema 2.5 [Teorema Euler]

Jika

(

a m,

)

=1,maka aφ( )m ≡1 mod

(

m

)

. [Niven, 1991]

Teorema 2.6 [Teorema Fermat]

1. Jika

(

a p,

)

=1maka ap1≡1 mod

(

p

)

. 2. apa

(

modp

)

untuk setiap a∈ .

[Niven, 1991]

Definisi 2.9 [Grup Perkalian dari n] Grup perkalian n adalah

( )

{ }

* , 1 n = an a n = . [Menezes, 1997] Jika n prima, maka *

{ }

1 1

n = aan− .

Jika a*n dan b*n maka a b. ∈ *n. *

n bersifat tertutup terhadap perkalian.

Definisi 2.10 [Order]

Misalkan a*n. Order dari a dinotasikan ord(a) adalah bilangan bulat positif terkecil t

sedemikian sehingga at ≡1 mod

(

n

)

. [Menezes, 1997]

Definisi 2.11 [Generator]

Bilangan g*n dinamakan generator dari *

n jika ord g

( )

( )

n . Grup perkalian *

n yang mempunyai generator dinamakan grup siklik.

[Menezes, 1997]

Teorema 2.7

Jika g adalah generator dari *n, maka

( )

{ }

* imod 0 1 n = g n ≤ ≤i φ n − . [Menezes, 1997] Teorema 2.8

Jika p prima maka *pmempunyai generator. [Niven, 1991]

Definisi 2.12 [Residu Kuadratik] Bilangan *

n

c∈ dinamakan residu kuadratik modulo n atau kuadrat modulo n jika ada

* n

m∈ Ζ dengan 2

( )

mod

mc n . Himpunan semua residu kuadrat modulo n dinotasikan

Qn. [Menezes, 1997] Lemma 2.9

( )

2 1 mod

xp dengan p prima jika dan hanya jika x≡ ±1 mod

(

p

)

.

[Niven, 1991]

Teorema 2.10

Misalkan p adalah bilangan prima, maka

( )

2

1 mod

x ≡ − p mempunyai solusi jika dan hanya jika p=2atau p≡1(mod 4).

[Niven, 1991]

Teorema 2.11

Misal a b m, , ∈ dengan m>0, dan

(

,

)

g= a m . Kongruensi axb

(

modm

)

mempunyai solusi jika dan hanya jika g b. Jika kondisi tersebut dipenuhi, solusinya membentuk barisan aritmatika dengan beda

m

g dan memberikan sebanyak g solusi

[Niven, 1991]

Teorema 2.12 [Teorema Sisa Cina]

Jika m m1, 2,....,mr adalah bilangan bulat positif dimana mi relatif prima dengan mj

untuk ij, dan a a1, 2,....,ar adalah bilangan bulat sembarang, maka sistem kongruensi

( )

( )

( )

1 1 2 2 mod mod mod r r x a m x a m x a m ≡ ≡ ≡ mempunyai solusi.

Jika x0 adalah solusi dari sistem tersebut, maka x=x0+km dengan k∈ dan

1. 2. 3... r

m=m m m m juga solusi dari sistem tersebut.

[Niven, 1991]

Lemma 2.13

Misal a*n

.

Jika ord(a) = h, dan

( )

1 mod k an maka h k. [Niven, 1991] Akibat 2.14

Jika

(

a m,

)

=1, maka order dari a

(

modm

)

pembagi φ

( )

m .

[Niven, 1991] (mod ).m

Lemma 2.15

Jika a memiliki order h

(

modm

)

, maka ak

memiliki order

(

,

)(

mod

)

h

m

h k .

[Niven, 1991]

III. PEMBAHASAN Pada bagian pendahuluan telah

disebutkan bahwa tujuan dari penulisan ini adalah mempelajari teorema-teorema yang terkait solusi residu kuadratik dan mengkonstruksi algoritma untuk mencari solusinya, merekonstruksi Algoritma RESSOL beserta analisisnya, mengkonstruksi algoritma untuk mencari solusi

( )

2 mod xa pq dan 2

( )

mod j xa p serta membandingkan waktu eksekusi algoritma yang terkait bilangan besar.

3.1 Teorema – Teorema yang Terkait Solusi Residu Kuadratik.

Definisi 3.1 [Akar kuadrat] Misalkan aQn. Jika

( )

* 2 mod n x x a n ∃ ∈ Ζ ∋ ≡

,

maka x dinamakan akar kuadrat dari a

modulo n.

[Menezes, 1997]

Mencari solusi dari 2

( )

mod

xa n

tidaklah mudah, apalagi jika n adalah bilangan komposit yang tidak diketahui faktor primanya. Jika n adalah bilangan prima, maka ada beberapa teorema yang dapat digunakan untuk mencari solusinya.

Teorema 3.1

Jika p prima, (a,p) = 1 dan

( 1 /) (, 1)

( )

1 mod p n p a p , maka kongruensi n

(

mod

)

xa p …(i) mempunyai (n, p–1) solusi. Jika ( 1 /) (, 1)

( )

1 mod p n p a ≡/ p maka

(

mod

)

n

xa p tidak mempunyai solusi. [Niven, 1991]

Bukti :

Karena p prima maka berdasarkan Teorema 2.8, *

p mempunyai generator. Misal g

adalah generator (mod p) maka berdasarkan Teorema 2.7 ada i dimana 0≤ ≤i p−2

sedemikian sehingga gia(mod )p …(ii)

Jika ada x0 yang merupakan solusi dari

(

mod

)

n

xa p maka

(

x0,p

)

=1, sehingga ada u dimana 0≤up−2 sedemikian sehingga 0 u(mod )

xg p …(iii) Dari (i) , (ii) dan (iii) diperoleh

(

mod

) ( )

(mod ) n n u i xa pgg pgungi(mod )puni(modp−1) Misalkan k = (n, p -1).

Berdasarkan Teorema 2.11, uni(modp−1)

mempunyai k solusi jika k i| dan tidak mempunyai solusi jika k |/i.

Jika k i| maka i p( 1) 0(modp 1)

k

≡ −

(karena i

k adalah bilangan bulat) sehingga

( )

( ) ( )

1 ( 1) 1 1 mod p i p i p k k k a g g p ≡ ≡ ≡

Jika k |/i maka i p( 1) 0(modp 1)

k − ≡/ − dan berakibat ( )

( )

1 ( 1) 1 mod p i p k k a g p ≡ ≡/ .

Dari Teorema 3.1 dapat kita ambil kasus khusus untuk n = 2

(

2

( ))

mod

xa p .

Akibat 3.2 [Kriteria Euler]

Jika p adalah bilangan prima ganjil,

(

a p,

)

=1

dan ( 1 / 2)

( )

1 mod p a p maka 2

( )

mod xa p

mempunyai 2 buah solusi. Jika ( 1 / 2)

( )

1 mod p a ≡ − p maka

( )

2 mod

xa p tidak mempunyai solusi. [Niven, 1991] Bukti :

Berdasarkan Teorema 3.1 2

( )

mod

xa p

mempunyai (2,p−1)=2 buah solusi jika

( 1 / 2)

( )

1 mod p a p

.

Misal (p1) / 2 b=a , maka 2 (p1) b =a . Berdasarkan Teorema Fermat dan Lemma 2.8,

Lemma 2.15

Jika a memiliki order h

(

modm

)

, maka ak

memiliki order

(

,

)(

mod

)

h

m

h k .

[Niven, 1991]

III. PEMBAHASAN Pada bagian pendahuluan telah

disebutkan bahwa tujuan dari penulisan ini adalah mempelajari teorema-teorema yang terkait solusi residu kuadratik dan mengkonstruksi algoritma untuk mencari solusinya, merekonstruksi Algoritma RESSOL beserta analisisnya, mengkonstruksi algoritma untuk mencari solusi

( )

2 mod xa pq dan 2

( )

mod j xa p serta membandingkan waktu eksekusi algoritma yang terkait bilangan besar.

3.1 Teorema – Teorema yang Terkait Solusi Residu Kuadratik.

Definisi 3.1 [Akar kuadrat] Misalkan aQn. Jika

( )

* 2 mod n x x a n ∃ ∈ Ζ ∋ ≡

,

maka x dinamakan akar kuadrat dari a

modulo n.

[Menezes, 1997]

Mencari solusi dari 2

( )

mod

xa n

tidaklah mudah, apalagi jika n adalah bilangan komposit yang tidak diketahui faktor primanya. Jika n adalah bilangan prima, maka ada beberapa teorema yang dapat digunakan untuk mencari solusinya.

Teorema 3.1

Jika p prima, (a,p) = 1 dan

( 1 /) (, 1)

( )

1 mod p n p a p , maka kongruensi n

(

mod

)

xa p …(i) mempunyai (n, p–1) solusi. Jika ( 1 /) (, 1)

( )

1 mod p n p a ≡/ p maka

(

mod

)

n

xa p tidak mempunyai solusi. [Niven, 1991]

Bukti :

Karena p prima maka berdasarkan Teorema 2.8, *

p mempunyai generator. Misal g

adalah generator (mod p) maka berdasarkan Teorema 2.7 ada i dimana 0≤ ≤i p−2

sedemikian sehingga gia(mod )p …(ii)

Jika ada x0 yang merupakan solusi dari

(

mod

)

n

xa p maka

(

x0,p

)

=1, sehingga ada u dimana 0≤up−2 sedemikian sehingga 0 u(mod )

xg p …(iii) Dari (i) , (ii) dan (iii) diperoleh

(

mod

) ( )

(mod ) n n u i xa pgg pgungi(mod )puni(modp−1) Misalkan k = (n, p -1).

Berdasarkan Teorema 2.11, uni(modp−1)

mempunyai k solusi jika k i| dan tidak mempunyai solusi jika k |/i.

Jika k i| maka i p( 1) 0(modp 1)

k

≡ −

(karena i

k adalah bilangan bulat) sehingga

( )

( ) ( )

1 ( 1) 1 1 mod p i p i p k k k a g g p ≡ ≡ ≡

Jika k |/i maka i p( 1) 0(modp 1)

k − ≡/ − dan berakibat ( )

( )

1 ( 1) 1 mod p i p k k a g p ≡ ≡/ .

Dari Teorema 3.1 dapat kita ambil kasus khusus untuk n = 2

(

2

( ))

mod

xa p .

Akibat 3.2 [Kriteria Euler]

Jika p adalah bilangan prima ganjil,

(

a p,

)

=1

dan ( 1 / 2)

( )

1 mod p a p maka 2

( )

mod xa p

mempunyai 2 buah solusi. Jika ( 1 / 2)

( )

1 mod p a ≡ − p maka

( )

2 mod

xa p tidak mempunyai solusi. [Niven, 1991] Bukti :

Berdasarkan Teorema 3.1 2

( )

mod

xa p

mempunyai (2,p−1)=2 buah solusi jika

( 1 / 2)

( )

1 mod p a p

.

Misal (p1) / 2 b=a , maka 2 (p1) b =a . Berdasarkan Teorema Fermat dan Lemma 2.8,

2 ( 1) 1(mod ) p b =a p sehingga 1(mod ) b≡ ± p . Jika b=a(p1) / 2 ≡ −1(mod )p maka 2

( )

mod

xa p

tidak mempunyai solusi

berdasarkan Teorema 3.1.

Dalam mencari solusi dari

( )

2

mod

xa p dengan p prima ganjil ada beberapa hal yang perlu diperhatikan. Jika

0(mod )

ap maka solusinya adalah 0(mod )

xp . Jika a≡/0(mod )p maka

( )

2

mod

xa p mungkin tidak mempunyai solusi tergantung kriteria Euler.

Jika 2

( )

mod

xa p mempunyai solusi maka solusinya ada 2. Misal x0 adalah salah satu solusinya maka −x0 adalah solusi lainnya, karena 2 2

( )

0 0

(−x ) =xa modp . Karena p ganjil maka x0 ≡ −/ x0(mod )p

sehingga 2

( )

mod

xa p akan mempunyai 2 solusi yang berbeda.

Dalam hal 2

( )

mod

xa p mempunyai solusi, dari bukti Teorema 3.1 kita dapat menemukan solusinya apabila generator dari

*

p diketahui.

Dalam bukti tersebut terlihat bahwa solusi dari 2

( )

mod

xa p adalah (mod )

u

xg p dengan g adalah generator dari *p, dan u adalah solusi dari

2ui(modp−1) 2 1 (mod 1) 2

p

u

i

⇔ ≡

dengan i adalah bilangan genap sedemikian sehingga i (mod )

ga p .

Dari uraian di atas dapat dibuat sebuah algoritma untuk mencari solusi dari

( )

2 mod xa p . Algoritma 1 : Mencari solusi 2

( )

mod xa p dengan terlebih dahulu mencari generator dari *p. INPUT : Bilangan prima ganjil p dan

bilangan bulat a, 1 ≤ ap-1. OUTPUT : Dua akar kuadrat a modulo p.

1. Hitung a(p1 2) dengan Kriteria Euleur. Jika ( 1 2)

( )

1 mod

p

a p

≡ − maka a tidak

mempunyai akar kuadrat modulo p dan proses berhenti . Jika ( 1 2)

( )

1 mod p a p lanjut ke langkah 2.

2. Cari generator dari *p, misalkan generator tersebut adalah g.

3. Cari i sedemikian sehingga (mod )

i

ga p dengan 4. Cari u sedemikian sehingga

1 1

2 (mod ) 2

p

ui

5. Solusinya adalah xgu(mod )p

Langkah-langkah dalam algoritma tersebut dapat dilihat melalui bagan berikut ini.

Bagan 1. Algoritma mencari solusi

Tidak Ya Hitung ( 1 2) (mod ) p a p Mulai

Bilangan prima panjil p

dan a

[

1,p−1

]

Apakah ( 1 2)

( )

1 mod p a p

( )

2 mod xa p

tak punya solusi

Cari g = generator * p

( )

2 mod xa p punya solusi Hitung (mod ) i g p dengan 0, 2, 4, ..., 1 i= p− Apakah (mod ) i ga p Tidak Ya Hitung 1 1 2 (mod ) 2 p u i Solusi adalah (mod ) u xg p Selesai

( )

2 mod xa p 0, 2, 4, ..., 1 i= p

Contoh 1:

Tentukan solusi dari 2

( )

15 mod17

x

.

Jawab :

(17 1 2) 8

15 ≡15 (mod 17) ≡1 (mod 17) Karena 15(17 1 2) ≡ 1 (mod 17) maka berdasarkan kriteria Euler 2

( )

15 mod 17

x ≡ mempunyai solusi.

Generator dari *

17 adalah g = 3.

Mencari nilai i sehingga 3i ≡15(mod17)

i 0 2 4 6

3 (mod17)i 1 9 13 15 Dari tabel diperoleh nilai i adalah 6.

6 17 1

(mod )

2 2

u ≡3(mod 8)

Solusinya adalah x≡33≡10(mod17). Solusi satunya adalah − ≡ −x 10≡7(mod17). Jadi solusi dari 2

( )

15 mod17

x ≡ adalah 7 dan 10 .

Algoritma di atas tidak efisien untuk nilai

p yang besar ( p > 1.000.000 ), karena untuk mencari g yaitu generator dari *p untuk nilai

p > 1.000.000 tidaklah mudah, kemudian mencari nilai i sedemikian sehingga

(mod ) i

ga p juga memerlukan waktu yang lama untuk nilai p > 1.000.000.

Oleh karena itu, di bagian berikutnya akan dibahas sebuah algoritma yang lebih efisien untuk mencari solusi dari

( )

2

mod

xa p yaitu Algoritma RESSOL.

Mencari solusi dari 2

( )

mod

xa p

memang tidak mudah, tetapi ada beberapa kasus untuk nilai p tertentu yang solusinya sudah dengan ditentukan. Misal untuk

3(mod 4)

p≡ maka solusi dari

( )

2 mod xa p adalah ( 1 / 4)

( )

mod p x≡ ±a + p karena

(

(p 1) / 4

)

2 (p 1 / 2) a + a + ± = =a(p1 / 2) .aa

(

modp

)

. Berdasarkan Teorema 2.9,

( )

2 1 mod

x ≡ − p mempunyai solusi jika dan hanya jika p=2 atau p≡1(mod 4). Untuk

1(mod 4)

p≡ misalkan x= ±z(p1) / 4(mod )p

dengan z adalah suatu bilangan non residu

kuadratik yang ambil secara acak dalam *p. Berdasarkan Kriteria Euler diperoleh

( )

2

( )

2 ( 1) / 4 ( 1) / 2 1 mod p p x±z z ≡ − p . Teorema 3.4

Jika a dan b relatif prima terhadap bilangan prima p, dan jika a dan b memiliki order

( )

2j mod

p dengan j>0, maka ab memiliki order '

( )

2j mod p untuk beberapa 'j < j. [Niven, 1991] Bukti : 2

ord( )a ≡2 (mod )j pa j ≡1(mod )p …(1), berdasarkan Teorema Fermat,

1

1(mod ) p

a p …(2) Dari persamaan (1) dan (2) diperoleh

2 | (j p−1) dan p > 2. Ambil 1 2j x a

= , karena ord( )a ≡2 (mod )j p maka 1 2 1(mod ) j x a p = ≡/ tetapi 2 2 1(mod ) j x =ap sehingga berdasarkan Lemma 2.9 maka 1 2 1(mod ) j x a p = ≡ − .

Dengan cara yang sama diperoleh

1 2 1(mod ) j b p ≡ − , dan mengakibatkan

( )

2 1 2 1 2 1 ( 1)( 1) 1(mod ) j j j ab a b p = ≡ − − ≡ .

Berdasarka Lemma 2.13 maka order dari ab

membagi 2j−1

sehingga order dari ab adalah '

2j untuk suatu 'j < j.

Teorema-teorema di atas menjadi landasan Algoritma RESSOL untuk mencari solusi dari 2

( )

mod

xa p dengan aQpdan

p prima ganjil.

3.2 Konstruksi Algoritma RESSOL beserta Analisisnya.

Untuk mencari solusi 2

( )

mod

xa p

dengan p prima ganjil, ada sebuah algoritma yang dapat digunakan untuk mencarinya yaitu Algoritma RESSOL (Residue Solver).

Dalam bagian ini penulis akan mencoba merekonstruksi Algoritma RESSOL dan menganalisisnya. Berikut ini akan dijelaskan langlah-langkah penurunan Algoritma RESSOL.

Langkah pertama menghitung

( 1 2)

(mod )

p

a p dengan Kriteria Euleur. Jika

( )

( )

1 2 1 mod p a ≡ − p maka 2

( )

mod xa p

tidak mempunyai solusi.

Jika ( 1 2)

( )

1 mod

p

a p maka untuk menentukan solusi dari 2

( )

mod

xa p

adalah mencari nilai k dan m dengan k > 0 dan

m ganjil sedemikian sehingga 1 2k

p− = m. Kemudian didefinisikan :

( 1 / 2)

( )

mod m ra + p

…(1)

Jika kedua ruas persamaan (1) dikuadratkan, maka diperoleh :

2 ( 1)

( )

mod m ra + p

2

( )

. mod m ra a p

.

Misalkan m

(

mod

)

na p , sehingga dapat ditulis : 2

( )

mod rna p

…(2)

Jika n≡1 mod

(

p

), maka solusinya adalah

x≡ ±r

(

modp

).

Jika n≡1 mod

(

p

)

, maka untuk menentukan solusinya diperlukan langkah penyelesaian sebagai berikut.

Ambil secara acak suatu bilangan nonresidu kuadratik di dalam *

p. Misal bilangan tersebut adalah z. Definisikan

m

(

mod

)

cz p …(3) Jika kedua ruas persamaan (3) dipangkatkan dengan 2k, maka diperoleh :

2k 2km

c =z =zp1≡1 mod

(

p

) …(4)

Berdasarkan Lemma 2.13, order dari c

membagi 2k

. Sementara itu, karena z adalah nonresidu kuadratik maka

2k1 2k1m c =z ( 1 / 2)

( )

1 mod p z p = ≡ −

…(5)

Jadi order dari c adalah tepat 2k

. Hal ini dapat ditulis ord( ) 2k

c ≡ atau

( )

2k 1 mod

cp

.

Dengan cara yang sama diperoleh

n2k =a2km=ap1≡1 mod

(

p

) …(6)

Dengan demikian order dari n membagi 2k

.

Dengan pengulangan kuadrat dapat ditentukan order dari n adalah 2k'.

Sementara itu n2k1=a2k1m=a(p1 / 2) , karena

a adalah kuadratik residu mod p maka n2k1 =a(p1 / 2) ≡1 mod

(

p

)

…(7)

sehingga k'<k

.

Algoritma ini dimulai dengan proses pengulangan. Didefinisikan 2 ' 1

( )

mod k k b c p − − ≡ …(8)

( )

' mod rbr p …(9) 2

( )

' mod cb p …(10) n'≡c n'

(

modp

)

…(11) Dengan melakukan perkalian pada kedua ruas persamaan (2) oleh 2 b diperoleh :

( )

2 2 2 mod b rb na p

dengan menggunakan persamaan (9), (10) dan (11) diperoleh :

( )

2

' ' mod

ran p …(12) Dari persamaan (8) dan (10) diperoleh

( )

2 ' mod cb p ' 1

( )

2 2k k mod c − − p2 '

(

mod

)

k k c p ≡ …(13) Jika kedua ruas persamaan (13) dipangkatkan dengan ' 2k , maka diperoleh :

( ) ( )

' ' ' 2 2 2 ' mod k k k k c c p 2

( ) ( )

mod 1 mod k c p p ≡ ≡ . Sementara itu

( ) ( )

' 1 ' ' 1 2 2 2 ' mod k k k k c c p 2 1

(

mod

)

1 mod

( )

k c p p ≡ ≡ −

Dengan demikian c ' memiliki order tepat

'

2k

.

Karena ord( )n ≡2k' dan ord( ')c ≡2k'

,

maka berdasarkan Teorema 3.4, order dari

' ' (mod )

nc n p adalah 2k'' dengan k''<k'. Jika ''k =0, maka n'≡1 mod

(

p

)

, dan dengan menggunakan persamaan (12), maka solusi dari 2

( )

mod xa p adalah

( )

' mod x≡ ±r p .

Jika n'≡1 mod

(

p

)

maka ''k >1, dan kondisi ini serupa dengan ketika pengulangan dimulai, sehingga pengulangan dilakukan kembali sampai solusi diperoleh.

Langkah penyelesaian untuk menentukan solusi dari kongruensi 2

( )

mod

xa p

Algoritma 2 (Algoritma RESSOL) : Mencari akar kuadrat modulo p prima ganjil.

INPUT : Bilangan prima ganjil p dan bilangan bulat a, 1 ≤ ap – 1. OUTPUT : Dua akar kuadrat a modulo p.

1. Hitung a(p1 2) dengan Kriteria Euleur. Jika ( 1 2)

( )

1 mod

p

a ≡ − p maka a tidak mempunyai akar kuadrat modulo p dan proses berhenti . Jika ( 1 2)

( )

1 mod p a p lanjut ke langkah 2.

2. Cari k dan m, dengan m ganjil sehingga 1 2k p− = m. 3. Hitung ( 1 / 2)

( )

mod m ra + p

dan

(

mod

)

m na p

.

4. Definisikan

2

( )

mod ran p

…(

i ) Jika n≡1 mod

(

p

),

maka solusinya adalah x≡ ±r

(

modp

).

Jika n≡1 mod

(

p

)

, lanjut langkah 5. 5. Ambil z*p secara acak yang

nonresidu kuadratik, dan tetapkan

(

mod

)

m

cz p

. Sehingga ord(

c) = 2k

.

6. Dengan pengulangan kuadrat diperoleh

ord(n) = ' 2k

.

7. Tetapkan 2 ' 1

(

mod

)

k k b c p − − ≡ ,

( )

' mod rbr p , 2

( )

' mod cb p dan

( )

' ' mod nc n p dengan k'<k

8. Kalikan kedua ruas (i) dengan c'. Dengan demikian diperoleh 2

( )

' ' mod

ran p …(ii) 9. Jika n'≡1 mod

(

p

), maka solusinya

adalah x≡ ±r' mod

(

p

).

Jika n'≡1 mod

(

p

)

, lakukan

pengulangan langkah (6) – (8), sampai diperoleh n'≡1 mod

(

p

).

10. Solusinya adalah x≡ ±r' mod

(

p

).

Algoritma RESSOL adalah algoritma acak (randomized algorithm) karena langkah ke-5 mensyaratkan untuk memilih bilangan nonresidu kuadratik secara acak dalam *p.

Dalam *p, setengah dari anggotanya adalah non residu kuadratik sehingga pengambilan bilangan nonresidu kuadratik

mempunyai peluang 1

2 dengan rata-rata pengambilan adalah 2 kali percobaan.

Algoritma RESSOL bukanlah algoritma

deterministic, tetapi prosedur perhitungannya lebih praktis dan cepat.

Algoritma RESSOL mempunyai waktu eksekusi (running time) O((lg ) )p 4 bit operasi.

[Menezes, 1997]

Contoh 2.

Tentukan solusi dari 2

( )

13 mod 23

x

.

Jawab:

(23 1 2) 11

13 ≡13 (mod 23) ≡ 1 (mod 23). Karena 13(23 1 2) ≡ 1 (mod 23) maka

( )

2 13 mod 23 x ≡ mempunyai solusi. 23 – 1 = 22 = 2 .11 1 pilih k = 1 dan m = 11 (11 1 / 2) 13 (mod 23) r+ ≡13 (mod 23)6 ≡6 (mod 23) Karena 2 12 13 (mod 23) r ≡ ≡13 .13 (mod 23)11

dengan n≡1311 (mod 23)≡1 (mod 23) maka solusi dari 2

( )

13 mod 23 x

adalah

6 (mod 23) x≡ dan 6 (mod 23) 17 (mod 23) x≡ − ≡

Jadi solusi dari 2

( )

13 mod 23

x ≡ adalah 6 dan 17.

Langkah-langkah dalam Algoritma RESSOL dapat dilihat melalui bagan berikut ini.

Algoritma RESSOL hanya dapat digunakan untuk mencari solusi dari

( )

2

mod

xa p dengan p prima ganjil. Tetapi Algoritma RESSOL ini dapat dijadikan landasan untuk mencari solusi dari

( )

2

mod ,

xa pq dengan p dan q prima ganjil, dan x2a(modpj), dengan p prima ganjil dan bilangan bulat j≥2.

Hitung ( 1 / 2)

( )

mod m ra + p dan m

(

mod

)

na p Tidak Tetapkan 2 ' 1

(

mod

)

k k b c p − − ≡ ,

( )

' mod rbr p , 2

( )

' mod cb p ,

( )

' ' mod nc n p dengan k'<k Ya Selesai Tidak Ya Hitung ( 1 2) (mod ) p a p Mulai

Bilangan prima ganjil p

dan a

[

1,p−1

]

Apakah

Dalam dokumen Aspek Komputasi Solusi Residu Kuadratik (Halaman 23-57)

Dokumen terkait