algoritam faktorizacije gnfs -...

21
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ALGORITAM FAKTORIZACIJE GNFS Ivan Fratrić Seminar iz predmeta Sigurnost računalnih sustava ZAGREB, 2010

Upload: others

Post on 25-Sep-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

ALGORITAM FAKTORIZACIJE GNFS

Ivan Fratrić

Seminar iz predmeta Sigurnost računalnih sustava

ZAGREB, 2010

Page 2: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

2

Sažetak Faktorizacija brojeva jedan je od značajnijih problema u teoriji brojeva, ali i u kriptoanalizi jer se sigurnost popularnog RSA kriptografskog algoritama zasniva na nemogućnosti napadača da faktorizira velike brojeve u prihvatljivom vremenu. GNFS (engl. General Number Field Sieve) je trenutno najučinkovitiji algoritam za faktorizaciju velikih brojeva i do sada je bio uspješno korišten za faktorizaciju 640-bitnoga broja. U sklopu ovoga rada biti će opisani postupci faktorizacije brojeva razlikom kvadrata, biti će opisani osnovni pojmovi i objašnjeni postupci na kojima se zasniva GNFS algoritam te će biti opisan i sam GNFS algoritam. Također će na jednostavnom primjeru fakotorizacije relativno maloga broja biti pokazani postupci u GNFS algoritmu.

Page 3: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

3

Sadržaj Sadržaj ........................................................................................................................................ 3 1. Uvod ................................................................................................................................... 4 2. Kriptografski algoritam RSA ............................................................................................. 5 3. Faktorizacija razlikom kvadrata ......................................................................................... 6

3.1. Dixonov algoritam...................................................................................................... 6 3.2. Algoritam kvadratnog sita .......................................................................................... 7

4. GNFS algoritam ................................................................................................................. 8 4.1. Prsten Z[θ] ....................................................................................................................... 8 4.2. Glatkost u Z[θ] ................................................................................................................ 9 4.3. Nalaženje kvadrata umnoškom glatkih brojeva ............................................................ 10

5. Sažetak GNFS algoritma.................................................................................................. 13 6. Primjer faktorizacije GNFS algoritmom.......................................................................... 14 7. Zaključak.......................................................................................................................... 18 Literatura .................................................................................................................................. 19 Prilog A. Rječnik matematičkih pojmova ................................................................................ 20

Page 4: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

4

1. Uvod Faktorizacija velikih brojeva jedan je od problema iz područja teorije brojeva za koji još uvijek ne postoji učinkovit algoritam koji bi se mogao izvršavati na klasičnom računalu. Shorov algoritam za faktorizaciju brojeva [1] nalazi rješenje u polinomijalnom vremenu, no za izvršavanje tog algoritma potrebno je kvantno računalo sa dovoljnim brojem qubita za pohranu broja koji će se faktorizirati. Osim u teoriji brojeva, problem faktorizacije velikih brojeva od iznimne je važnosti u području informacijske sigurnosti jer se sigurnost nekih kriptografskih algoritama, od kojih je najpoznatiji RSA, temelji upravo na nemogućnosti napadača da faktorizira velike brojeve. GNFS (engl. General Number Field Sieve) je trenutno najučinkovitiji algoritam faktorizacije koji se može izvršiti na klasičnom računalu. Korištenjem ovog algoritma 2005. godine uspješno je faktoriziran 640-bitni broj [2] koji je firma RSA zadala kao izazov uz nagradu od 20.000 USD. Cilj ovoga rada je dati uvod u osnovne koncepte potrebne za razumijevanje rada ovog algoritma te opisati sam GNFS algoritam. U poglavlju 2 ukratko će biti opisan RSA kriptografski algoritam i značaj faktorizacije za njegovo razbijanje. U poglavlju 3 biti će opisan algoritam kvadratne faktorizacije (Quadratic sieve), na čiju se osnovnu ideju naslanja i GNFS algoritam. U poglavlju 4 biti će opisani osnovni pojmovi i postupci potrebni za razumijevanje rada GNFS algoritma. U poglavlju 5 sažeto će biti prikazan GNFS algoritam. U poglavlju 6 biti će prikazan primjer rada algoritma za faktorizaciju maloga broja. Prilogu A sadrži riječnik matematičkih pojmova koji će biti korišteni u ostatku rada.

Page 5: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

5

2. Kriptografski algoritam RSA RSA, nazvan prema prvim slovima prezimena svojih autora (Ron Rivest, Adi Shamir i Leonard Adleman), jedan je od najpoznatijih algoritama za kriptografiju javnog ključa. Algoritam stvara par ključeva, javni ključ i tajni ključ. Javni ključ, kako mu i samo ime sugerira, može biti javno obznanjen, a poruke kriptirane javnim ključem trebala bi moći dekriptirati samo osoba koja posjeduje odgovarajući tajni ključ. Postupci generiranja ključeva, kriptiranja i dekriptiranja biti će objašnjeni u nastavku. Ključevi u RSA algoritmu generiraju se slijedećim postupkom:

Odaberu se dva velika prosta broja, p i q Izračuna se njihov umnožak, n = p·q. Operacije kriptiranja i dekriptiranja obavljati će

se u modulo n aritmetici. Izračuna se Eulerova funkcija od n. Budući da je n umnožak dva prosta broje, φ(n) =

(p - 1) ·(q - 1). Odabere se broj e, 1 < e < φ(n), takav da je relativno prost sa φ(n) Izračuna se d tako da vrijedi de ≡ 1 (mod φ(n)).

Javni ključ tada čini par (e, n), a tajni ključ par (d, n). Kriptiranje podatka m javnim ključem obavlja se tako da se izračuna c = me (mod n). Kriptirani podatak c dekriptira se javnim ključem tako da se izračuna cd = m (mod n). Ova jednakost temelji se na Eulerovom teoremu: Teorem 1: Eulerov teorem: Za pozitivan cijeli broj n i pozitivan cijeli broj a relativno prost s n vrijedi

aφ(n) ≡ 1 (mod n) (1) Primijenimo li Teorem 1 na RSA dekriptiranje, dobivamo

)(mod1)( )(1)( nmmmmmmmc knknkedded (2) Premda općenito Eulerov teorem vrijedi samo kada su m i n relativno prosti, može se pokazati da se u ovom slučaju isti krajnji rezultat dobiva i kada to nije slučaj. Ukoliko bi napadač mogao faktorizirati n, tada bi na temelju javnoga ključa (e, n) mogao izračunati tajni ključ (d, n) i dekriptirati poruke kriptirane javnim ključem.

Page 6: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

6

3. Faktorizacija razlikom kvadrata Osnovna ideja faktorizacije razlikom kvadrata potječe od Fermata i temelji se na zapažanju da ako postoje dva cijela broja x i y takva da x ≠ y (mod n) i

)(mod22 nyx (3) tada postoji velika vjerojatnost da su gcd(x – y, n) i gcd(x + y, n) netrivijalni faktori od n. Ovo je vidljivo iz slijedećeg razmatranja. Pretpostavimo da je n = pq, gdje su p i q prosti brojevi. Iz jednadžbe 3 slijedi da x2 – y2 dijeli n, iz čega, preko razlike kvadrata, slijedi da (x - y)(x + y) dijeli n. Iz faktorizacije n slijedi da (x - y)(x + y) dijeli p i (x - y)(x + y) dijeli q. Koristeći rezultat iz teorije brojeva da, ako ab dijeli c i gcd(b, c) = 1 tada a dijeli c, dolazimo do slijedećih zaključaka

I) x + y dijeli p ili x – y dijeli p II) x + y dijeli q ili x – y dijeli q

Sve moguće kombinacije ovih slučajeva raspisane su u tablici 1.

p|x+y p|x-y q|x+y q|x-y gcd(n,x+y) gcd(n,x-y) Uspješna faktorizacija

NE DA NE DA 0 n NE NE DA DA NE q p DA NE DA DA DA q n DA DA NE NE DA p q DA DA NE DA NE n 0 NE DA NE DA DA n q DA DA DA NE DA p n DA DA DA DA NE n p DA DA DA DA DA n n NE

Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko pretpostavimo da su svi događaji jednako vjerojatni, tada ukoliko nađemo brojeve x i y tako da vrijedi x2 ≡ y2 (mod n) postoji vjerojatnost od 2/3 da smo faktorizirali n.

3.1. Dixonov algoritam Dixonov algoritam [3] je jedan od postupaka za nalaženje brojeva x i y koji zadovoljavaju jednadžbu 3. Za objašnjenje ovog algoritma potrebno je uvesti pojmove faktorske baze i glatkih brojeva, koji će također biti potrebni za objašnjenje GNFS algoritma. Faktorska baza F je neprazan skup prostih brojeva. Broj k je gladak u faktorskoj bazi F ako su, u njegovoj jedinstvenoj faktorizaciji, svi faktori iz F. Na primjer, skup brojeva {2, 3, 5} čine faktorsku bazu. Broj 45 je gladak po toj bazi jer je njegova jedinstvena faktorizacija 32·5. Broj 42 nije gladak po toj bazi jer je njegova jedinstvena faktorizacija 2·3·7, a broj 7 nije u faktorskoj bazi. Dixonov algoritam fiksira faktorsku bazu F = {p1, p2, p3, …, pm} i zatim slučajnim odabirom traži brojeve ri za koje vrijedi da je f(ri) = ri

2 (mod n) gladak u bazi F. Kada nađemo dovoljno ovakvih brojeva (više od m), možemo naći njihov podskup U takav da je umnožak brojeva iz U kvadrat nekog broja, tj vrijedi

Page 7: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

7

2321

223

22

21 )...(...)( 321321 m

i

m em

eee

Ur

em

eeei pppppppprf

(4)

gdje su potencije ei ≥ 0. Uzimajući

Ur

i

i

rx i mem

eee ppppy ...321321 (5)

dobivamo željeni rezultat jer vrijedi

)(mod)( 222 nyrfrxUr

iUr

i

ii

(6)

3.2. Algoritam kvadratnog sita Algoritam kvadratnog sita [3] proširenje je Dixonovog algoritma i dugo vremena bio je najefikasniji algoritam faktorizacije. Još uvijek je to najčešće korišten algoritam za brojeve sa između 50 i 100 znamenaka [4]. Razlika između Dixonovog algoritma i algoritma kvadratnog sita je u korištenju f(ri) = ri

2 – n umjesto f(ri) = ri

2(mod n). Lako je provjeriti da izrazi 4, 5 i 6 vrijede za ovakav f(ri) u identičnom obliku. Ubrzanje u odnosu na Dixonov algoritam postiže se zbog jednostavnijeg ispitivanja je li neki broj gladak. Ispitivanje glatkosti u Dixonovom algoritmu postiže se pokušajima dijeljenja ispitivanog broja sa svim brojevima iz faktoske baze, što je dugotrajan proces. S druge strane, f(ri) = ri

2 – n ima svojstvo da, ukoliko neki prost broj p iz faktorske baze dijeli f(ri), tada on dijeli i f(ri + kp) gdje je k neki cijeli broj. Ovo se može pokazati kao

)(mod0)(2)( 222 pnrnkpkprrkprf iiii (7)

Ovo svojstvo možemo iskoristiti za nalaženje glatkih brojeva u nekom rasponu α ≤ ri ≤ β na slijedeći način. Izaberemo α i β tako da u intervalu [α, β] očekujemo više od m glatkih brojeva. Alociramo polje veličine β - α + 1 i u svaki element polja upišemo odgovarajuću vrijednost f(ri). Tada za svaki prost broj p iz faktorske baze riješimo jednadžbu ri

2 ≡ n (mod p). Za sve cijele brojeve k za koje je ri + pk u intervalu [α, β] podijelimo odgovarajuću vrijednost u polju s p. Na taj način djelimo s p samo one elemente polja za koje smo sigurni da su zaista djeljivi s p i time izbjegavamo nepotrebna dijeljenja. Nakon što smo ovo učinili za sve proste brojeve iz faktorske baze, jednostavno pogledamo za koje vrijednosti ri je odgovarajući element u polju 1. Za takve ri vrijedi da je f(ri) gladak u bazi F. U praksi se u polje spremaju logaritmi odgovarajućih vrijednosti kako bi se uštedjelo na prostoru potrebnom za pohranu polja. U tom slučaju umjesto dijeljenja vrijednosti u polju s prostim brojem p, oduzimamo od vrijednosti u polju logaritam od p.

Složenost algoritma kvadratnog sita je )( logloglog nneO .

Page 8: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

8

4. GNFS algoritam Prsten je algebarska struktura koja se sastoji od skupa i dvaju binarnih operacija, koje se obično nazivaju zbrajanje i množenje. Ove operacije imaju svojstvo da dva elementa iz skupa preslikavaju u treći element iz toga skupa. Potpuni popis uvjeta koje ove operacije moraju zadovoljavati naveden je u prilogu A. Algoritam kvadratnog sita traži glatke brojeve u prstenu Z (prsten cijelih brojeva), a Dixonov algoritam u prstenu Z/nZ (prsten brojeva u modulo n aritmetici, vidi prilog A). Osnovna ideja GNFS algoritma [4, 5] je ta da možda postoje drugi prsteni osim Z i Z/nZ u kojima bismo našli više glatkih brojeva nego u Z i Z/nZ. Ukoliko postoji neki takav prsten R, i postoj homomorfizam Φ: R → Z/nZ između toga prstena i prstena Z/nZ pomoću kojega možemo preslikati kvadrat elementa iz R u kvadrat elementa iz Z/nZ, tada je moguće iskoristiti ovo preslikavanje da bi smo pronašli razliku kvadrata na slijedeći način:

)(mod)()( 2222 nyx (8) GNFS algoritam koristi prsten Z[θ]. Ovaj prsten biti će objašnjen u slijedećem poglavlju.

4.1. Prsten Z[θ] Pretpostavimo da smo odabrali polinom f stupnja d s cjelobrojnim koeficijentima. Neka je θ korijen polinoma f (θ može biti kompleksan broj). Skup svih brojeva oblika

012

21

1 ... aaaa dd

dd

(9)

gdje su koeficijenti aj cijeli brojevi, s operacijama zbrajanja i množenja koje su definirane kao zbrajanje i množenje polinoma, čini prsten Z[θ].

Na primjer, neka je f(x) = x2 – 5. Jedan korijen ovog polinoma je 5 . Tada broj 357 pripada prstenu Z[θ]. Na prvi pogled, može se činiti da ovako definiran skup ne čini prsten jer množenje dvaju polinoma stupnja manjeg d može dati polinom većeg stupnja, no pogledajmo slijedeće razmatranje: Neka su a(x) i b(x) dva polinoma s cjelobrojnim koeficijentima stupnja manjeg od d i vrijedi a(θ) = A i b(θ) = B. Očito su A i B elementi Z[θ]. Prema algoritmu dijeljenja poligona a(x)b(x) = e(x)f(x) + c(x), gdje je stupanj polinoma c manji od d. Ako je c(θ) = C vrijedi

CCeCfexcxfxexbxaABxxx

0)()()()()()()()(

(10)

Budući da je stupanj c manji od d, C je također element Z[θ]. Ovaj rezultat sugerira da se množenje poligona u prstenu Z[θ] obavlja po modulu f(x):

xxx

xfxbxaxbxa ))((mod)()()()( (11)

Da bismo mogli proizvesti razliku kvadrata kao u jednadžbi 8 potreban nam je još homomorfizam koji preslikava iz Z[θ] u Z/nZ.

Page 9: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

9

Uzmimo cijeli broj m za koji vrijedi f(m) = 0 (mod n). Može se pokazati da je preslikavanje Φ: Z[θ] → Z/nZ koje preslikava θ u m i za koje vrijedi Φ(1) = 1 homomorfizam među prstenovima. Sada, ako nađemo skup U parova cijelih brojeva (a, b) za koje vrijedi

UbaUba

ybmaiba),(

2

),(

2 )()( (12)

i uvrstimo ovo u jednadžbu 8 dobivamo razliku kvadrata i s vjerojatnosti 2/3 možemo faktorizirati broj n.

4.2. Glatkost u Z[θ] Da bismo mogli naći kvadrate u Z[θ] strategijom koja je korištena u algoritmu kvadratnog sita, potrebno je proširiti koncept faktorske baze i glatkih brojeva na prsten Z[θ]. Ekvivalent faktorske baze u prstenu Z[θ] je algebarska faktorska baza. Algebarska faktorska baza je skup brojeva oblika a + bθ Z[θ], gdje su a i b cijeli brojevi, za koje vrijedi da se ne mogu rastaviti kao umnožak neka druga dva elementa iz Z[θ], tj ne postoje c, d Z[θ] tako da c·d = a + bθ. Broj a + bθ Z[θ] koji zadovoljava ovo svojstvo naziva se prosti ideal, što je ekvivalent prostog broja u prstenovima koji nisu Z i Z/nZ. Sada se može definirati gladak broj na sličan način kao u Z: Element l iz Z[θ] je gladak u algebarskoj faktorskoj bazi A ako postoji podskup od A, W A tako da (c,d)W (c + dθ) = l. Brojeve iz Z[θ] je teško predstaviti na računalu. Međutim, slijedeći teorem omogućuje nam da umjesto s brojevima iz Z[θ] radimo s parovima cijelih brojeva: Teorem 2: Neka je f(x) polinom s cjelobrojnim koeficijentima i θ C korijen od f(x). Tada je skup parova cijelih brojeca {(r, p)} gdje je p prost broj, a r Z/nZ, f(r) ≡ 0 (mod p) u bijektivnom odnosu sa skupom brojeva a + bθ Z[θ] koji zadovoljavaju uvjete da budu algebarska faktorska baza. Ovaj teorem nam omogućuje da svaki broj iz algebarske faktorske baze zapišemo kao par (r, p). Slijedeća tri teorema omogućuju nam, uz ovakav zapis algebarske faktorske baze, nanlaženje glatkih brojeva u Z[θ] “prosijavanjem” tj. na sličan način kao u algoritmu kvadratnog sita. Teorem 3: Neka je c + dθ broj u algebarskoj faktorskoj bazi predstavljen parom (r, p). c + dθ dijeli a + bθ Z[θ] ako i samo ako a ≡ -br (mod p). Teorem 4: Konačan skup U parova (r, p) predstavlja potpunu faktorizaciju a + bθ Z[θ] ako i samo ako vrijedi

Upr

di

ii

bafbp),(

)/()( (13)

gdje je d stupanj polinoma f koji definira psten Z[θ]. Teorem 5: Prost broj q dijeli a + bm ako i samo ako je a ≡ -bm (mod q)

Page 10: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

10

Ova tri teorema omogućuju nalaženje brojeva a + bθ koji su glatki u algebarskoj faktorskoj bazi A i brojeva a + bm koji su glatki u faktorskoj bazi R slijedećim algoritmom. Fiksirati ćemo b na neku vrijednost, a a ćemo varirati od –N do N. Kreirati ćemo dva polja, jedno će sadržavati sve vrijednosti a + bθ u ovom rasponu, a drugo sve vrijednosti a + bm u ovom rasponu:

bmN

bmN

bmN

bmN

bN

bN

bN

bN

)1(

)1(

)1(

)1(

(14)

I) Za svaki qi iz R: qi dijeli sve a + bm za koje a ≡ -bm (mod qi). Potrebno je naći sve vrijednosti a u intervalu –N do N za koje postoji neki k tako da a = −bm + kqi i zabilježiti ih u drugom polju. II) Za svaki (ri, pi) iz A: (ri, pi) dijeli sve a + bθ za koje a ≡ -bri (mod pi). Potrebno je naći sve vrijednosti a u intervalu –N do N za koje postoji neki k tako da a = −bri + kpi i zabilježiti ih u prvom polju. Nakon što prođemo kroz sve faktore iz obje faktorske baze, možemo odrediti koji su elementi polja u potpunosti faktorizirani. Za polje brojeva oblika a + bm to možemo lako učiniti budući da smo za svaki element polja zapisali članiove faktorske baze koji taj element dijele: te članove faktorske baze samo je potrebno pomnožiti i vidjeti dobiva li se odgovarajući član polja. Da bismo provjerili je li neki broj oblika a + bθ u potpunosti faktoriziran iskoristiti ćemo pravilo iz teorema 4. Na kraju samo trebamo izvući parove (a, b) takve da su a + bm i a + bθ istovremeno glatki tj. da je su i a + bm i a + bθ u potpunosti faktorizirani.

4.3. Nalaženje kvadrata umnoškom glatkih brojeva U Dixonovom algoritmu i algoritmu kvadratnog sita, bilo je potrebno je umnoškom glatkih brojeva doći do broja koji je kvadrat. Ovo je također potrebno u GNFS algoritmu. Prvo će ovaj postupak biti pokazan za cijele brojeve (prsten Z), a zatim za prsten Z[θ]. U skupu cijelih brojeva, neki broj je kvadrat ako i samo ako, u njegovoj jedinstvenoj faktorizaciji, svi faktori imaju potencije koje su djeljive s dva ili jednake nuli. Dakle, imamo li faktorku bazu {p1, p2, p3, …, pm}, za neki broj gladak u toj zabi vrijediti će da je kvadrat ako je njegova faktorizacija me

meee pppp ...321321 gdje za svaki ei vrijedi ei 0 (mod 2).

Nama je na raspolaganju skup glatkih brojeva, g1, ..., gn, od kojih se svaki može prikazati kao

gj = jmjjj em

eee pppp ,,3,2,1 ...321 . Na primjer, imamo li faktorsku bazu {2, 3, 5} i u njoj glatke brojeve 6

i 15, oni se mogu prikazati kao 6 = 213150 i 15 = 203151. Ukoliko pomnožimo dva glatka broja, gi i gj, njihovu faktorizaciju dobivamo tako da zbrojimo odgovarajuće potencije faktora,

gi·gj = jmimjiji eem

eeee ppp ,,,2,2,1,1 ...21 . Nama je cilj naći takav podskup U skupa glatkih brojeva, {

g1, ..., gn } da je njihov produkt kvadrat, što je ekvivalentno rješavanju slijedeće jednadžbe u modulo 2 aritmetici:

Page 11: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

11

)2(mod

0

0

0

2

1

,2,1,

,22,21,2

,12,11,1

nnmmm

n

n

a

a

a

eee

eee

eee

(15)

Ova jednadžba je rješiva ukoliko je na raspolaganju barem toliko glatkih brojeva koliko je članova u faktorskoj bazi. Jednom kada nađemo njeno rješenje (vektor a) podskup glatkih brojeva čiji umnožak je kvadrat tvorimo tako da uzmemo samo one glatke brojeve gj za koje vrijedi da je aj = 1. U prstenu Z[θ] koristi se isti princip, no uvjet da je neki broj kvadrat je složeniji od onoga u prstenu Z. Slijedeća dva teorema omogućuju provjeru je li neki broj kvadrat u Z[θ]: Teorem 6: Neka l Z[θ] ima faktorizaciju 21 )()( 2211

ee babal gdje za svaki j

jj ba zadovoljava uvjet da bude član algebarske faktorske baze. Ako je l kvadrat u Z[θ]

tada za svaki i vrijedi ei 0 (mod 2). Ovaj teorem daje nužan uvjet koji svaki kvadrat u Z[θ] mora zadovoljavati, no svi brojevi koji zadovoljavaju taj uvjet nisu nužno kvadrati (obrat teorema ne vrijedi). Slijedeći teorem daje dodatan uvjet. Prije nego bude dan teorem, prvo je potrebno definirati Legendreov simbol.

Legendreov simbol

p

a za a Z i p prost broj je definiran kao

adijelipako

rješenjenemapaxako

rješenjeimapaxako

p

a

0

)(mod1

)(mod12

2

(16)

Teorem 7: Neka je U skup parova (a, b) tako da je

Uba

ba),(

)( kvadrat u Z[θ]. Tada za bilo

koji par (s, q) gdje je q prost broj, a (s, q) predstavlja neki broj koji zadovoljava uvjet da bude u algebrskoj faktorskoj bazi (vidi teorem 2) i da (s, q) ne dijeli niti jedan (a, b) U, mora vrijediti

1),(

Uba q

bsa (17)

Teorem 7 implicira da a -bs (mod q) što znači da q ne dijeli a + bs jer bi, u protivnom, odgovarajući Legendreov simbol bio 0. Teoremi 6 i 7 omogućuje ispitivanje je li neki broj kvadrat u Z[θ] sa određenom vjerojatnošću. Još uvijek nije moguće sa sigurnošću utvrditi je li neki broj kvadrat ili ne, no ispitivanje prvo uvjeta iz teorema 6, a zatim uvjeta iz teorema 7 sa velikim skupom Q parova

Page 12: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

12

(s, q) omogućuje da sa ovo utvrdimo s dovoljno velikom vjerojatnošću za primjenu u GNFS algoritmu. U GNFS algoritmu potrebno je, za nađeni skup glatkih brojeva, pronaći njegov podskup V, tako da vrijedi da je

Vba

bma),(

kvadrat u Z, a

Vba

ba),(

kvadrat u Z[θ]. Ovo se obavlja

po istom principu kao u jednadžbi 15, no ovu jednadžbu je potrebno prošitriti da bi se obuhvatili dodatni uvjeti da broj bude kvadrat u Z[θ] i obuhvatio slučaj kada su neki a + bm negativni. Pretpostavimo da faktorska baza R ima k članova, algebarska faktorska baza A ima l članova, te da smo odabrali skup Q parova (s, q) za ispitivanje kvadrata po teoremu 7 i da taj skup ima u članova. Svaki par (a, b) za koji vrijedi da je a + bm gladak u Z, a a + bθ gladak u Z[θ] predstaviti ćemo kao vektor stupac sa dimenzijom 1 + k + l + u. Prvi član ovoga vektora biti će 0 ako je a + bm pozitivan i 1 inače. Vrijednosti slijedećih k članova vektora će biti 1 ako ako odgovarajući element faktorske baze dijeli a + bm, 0 inače. Vrijednosti slijedećih l članova vektora će biti 1 ako ako odgovarajući element algebarske faktorske baze dijeli a + bθ, 0 inače. Posljednjih u elemenata ovog vektora imati će vrijednost 0 ako za odgovarajući

par (s, q) vrijedi 1

q

bsa, 1 inače.

Neka je faktorska baza R = {t1, t2, ... tk}, a algebarska faktorska baza A = {(r1, p1), (r2, p2), (rl, pl), }. Broj a + bm je gladak u bazi R i ima faktorizaciju ke

keee tttt ...321321 Broj a + bθ je gladak u

algebarskoj faktorskoj bazi A i ima faktorizaciju lfll

ff prprpr ),...(),(),( 212211 . Vektor stupac x

koji predstavlja par (a, b) biti će

T

m

m

l

k

inaceq

bsa

inaceq

bsa

inaceq

bsa

fff

eee

inace

bma

,1

1,0

,1

1,0

,1

1,0

)2(mod)2(mod)2(mod

)2(mod)2(mod)2(mod

,1

0,0

2

2

1

1

21

21

x

(18)

Pretpostvimo da je prosijavanjem nađeno y parova (a, b) takvih da je a + bm gladak u Z, a a + bθ gladak u Z[θ]. Tada će nalaženje njihovog podskupa V takvog da je

Vba

bma),(

kvadrat

u Z, a

Vba

ba),(

kvadrat u Z[θ] ekvivalentno rješavanju slijedeće jednadžbe

)2(mod

0

0

0

2

1

21

y

y

a

a

a

xxx (19)

Ova jednadžba ima rješenje za y ≥ 1 + k + l + u.

Page 13: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

13

5. Sažetak GNFS algoritma

1) Odabrati m Z i polinom f za koji vrijedi da je f(m) ≡ 0 (mod n). Ovo je najlakše učiniti rastavljanjem n po bazi m.

2) Definirati faktorsku bazu R koja se sastoji od k prostih brojeva. 3) Definirati algebarsku faktorsku bazu A koja se sastoji od l parova (r, p), takvih da je p

prost i vrijedi f(r) ≡ 0 (mod p). 4) Definirati skup Q koji se sastoji od u parova (s, q) takvih da je q prost i vrijedi f(s) ≡ 0

(mod q). Provjeriti da niti jedan element iz Q ne dijeli niti jedan element iz algebarske faktorske baze A.

5) Fiksirati vrijednost b i stvoriti polja brojeva a + bm i a + bθ varirajući a od -N do N, kako je opisano u poglavlju 4.2. Naći brojeve u poljima koji su istovremeno glatki u Z i Z[θ] postupkom opisanim u poglavlju 4.2. i za svaki gladak broj zabilježiti njegove faktore iz faktorske baze i algebarske faktorske baze. Neka je broj nađenih glatkih brojeva y. Ponavljati postupak dok nije nađeno više od 1 + k + l + u glatkih brojeva.

6) Svaki gladak broj zapisati u obliku vektora x kako je opisano u poglavlju 4.3. 7) Riješiti jednadžbu

)2(mod

0

0

0

2

1

21

y

y

a

a

a

xxx (20)

Neka skup V čine oni parovi (a, b) za koje je odgovarajući aj = 1. Vrijedi da je

Vba

bma),(

kvadrat u Z, a

Vba

ba),(

kvadrat u Z[θ].

8) Vrijedi

VbaVba

nbmaba),(),(

)(mod (21)

Koristeći jednadžbu 8 moguće je producirati jednakost x2 ≡ y2 (mod n) uvrštavajući

Vba

bax),(

i

Vba

bmay),(

(22)

i sa vjerojatnosti 2/3 faktorizirati n (vidi tablicu 1). Ukoliko faktorizacija nije uspjela vratiti se na korak 2.

Složenost GNFS algoritma je )(3/23/1 )log(log)(log nneO

Page 14: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

14

6. Primjer faktorizacije GNFS algoritmom

U ovome primjeru biti će pokazana faktorizacija GNFS algoritmom za broj n = 37 x 61 = 2257. U kontekstu faktorizacije brojeva, ovaj broj je vrlo mali i u praksi bi ga bilo bolje faktorizirati nekom jednostavnijom metodom zbog složenosti svih pripremnih radnji u GNFS algoritmu, no na ovakvom broju moguće je na jednostavan način pokazati postupke iz GNFS algoritma. Korak 1. Prvo je potrebno odabrati broj m i naći polinom f(x) tako da je f(m) ≡ 0 (mod n). Odaberimo m = 47. Rastavljanjem broja n po bazi m dobivamo

14714712257 2 što znači da kao polinom f(x) možemo uzeti

1)( 2 xxxf Izbor broja m nije definiran samim algoritmom. Metode odabira broja m koje bi vodile velikom broju glatkih brojeva u koraku 5 još uvijek su predmet istraživanja [4]. Odabirom prevelikog m stupanj polinoma f(x) postaje premali (stupanj polinoma f(x) mora biti najmanje 2 kako bi brojevi oblika a + bθ bili elementi Z[θ]). S druge strane, odabirom premalog m, stupanj polinoma postaje prevelik što umanjuje vjerojatnost nalaženja glatkih brojeva kasnije u algoritmu. U praksi se pokazalo da je optimalan stupanj polinoma 3 za brojeve s između 50 i 80 znamenaka, 4 za brojeve s između 80 i 110 znamenaka i 5 za brojeve s više od 110 znamenaka [4], a kao broj m dobro je uzeti broj približno jednak n1/d, gdje je d stupanj polinoma. Budući da u ovom primjeru broj n ima mnogo manje od 50 znamenaka, optimalan stupanj polinoma je 2, a optimalna vrijednost m približno je jednaka 22571/2 47.

Korak 2. Faktorsku bazu F načiniti ćemo tako da uzmemo 5 najmanjih prostih brojeva

11,7,5,3,2F Broj elemenata faktorske baze također nije unaprijed određen i obično se bira se na temelju iskustva. Manji broj elemenata faktorske baze smanjuje vjerojatnost nalaženja brojeva glatkih u toj faktorskoj bazi. S druge strane, povećanje broja elemenata faktorske baze povećava vjerojatnost nalaženja glatkih brojeva u toj bazi, ali veći broj elemenata faktorske baze također povećava i broj glatkih brojeva koje je potrebno naći kako bi jednadžba 19 imala rješenje. Korak 3. Algebarsku faktorsku bazu A načiniti ćemo uzimajući proste brojeve p od manjih prema većima i za svaki p tražiti r tako da je f(r) ≡ 0 (mod p). Ovim postupkom naći ćemo 5 parova (r, p) Dobivamo

)13,9(),13,3(),7,4(),7,2(),3,1(A Za veličinu algebarske faktorske baze A vrijede ista razmatranja kao i za veličinu cjelobrojne faktorske baze F.

Page 15: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

15

Korak 4. Potrebno je još naći skup Q parova (s, q) za ispitivanje je li neki broj kvadrat u Z[θ]. Ove parove naći ćemo identično kao algebarsku faktorsku bazu, s time da ćemo preskočiti proste brojeve koji se već nalaze u algebarskoj faktorskoj bazi. Naći ćemo 3 para (s, q). Dobivamo

)31,5(),19,11(),19,7(Q Povećanjem broja elemenata skupa Q povećava se broj glatkih brojeva koje je potrebno naći u koraku 5. Smanjenjem broja elemenata skupa Q povećava se vjerojatnost pogreške prilikom provjere je li neki broj kvadrat u Z[θ]. Korak 5. Na temelju dimanzionalnosti faktorske baze, algebarske faktorske baze i skupa Q dobivamo 5 + 5 + 3 + 1 = 14, što znači da će biti potrebno naći barem 14 parova (a, b) tako da vrijedi da je a + bm gladak u Z i istovremeno a + bθ gladak u Z[θ]. Postupak ćemo provesti tako da ćemo b varirati u rasponu [1, 100], za svaku vrijednost b stvoriti ćemo polje brojeva a + bm i polje brojeva a + bθ varirajući b u rasponu [-400, 400], te konačno naći istovremeno glatke brojeve postupcima opisanima u poglavlju 4.2. Ovim postupkom dobivamo slijedeći skup parova (a, b) koji predstavljaju glatke brojeve

)35,49(),28,7(),21,7(),17,1(

),7,14(),7,7(),7,21(),5,7(),4,1(),3,1(

),1,17(),1,3(),1,2(),1,1(),1,2(),1,3(

Ovaj skup sastoji se od 16 parova, što znači da bismo trebali imati dovoljno parova da nađemo razliku kvadrata i faktoriziramo broj n. Lako se može provjeriti da je svaki od brojeva koje predstavljaju gornji parovi gladak. Na primjer, za par (-3, 1) vrijedi a + bm = 44 = 22 11. Za broj -3 + 1θ. vrijedi da ga dijeli element algebarske faktorske baze (3, 13). Prema teoremu 3, da bi (r, p) dijelio (a, b), mora vrijediti a ≡ -br (mod p), što je ovdje slučaj jer -3 ≡ -1·3 (mod 13). Prema teoremu 4, par (3, 13) ujedno predstavlja potpunu faktorizaciju broja -3 + 1θ jer vrijedi 13 = (-1)2f(3) = 32 + 3 + 1 = 13.

Page 16: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

16

Korak 6. Svaki gladak broj potrebno je zapisati u obliku vektora kao u jednadžbi 18. Kada se ovi vektori urede u matricu, za glatke brojeve iz ovoga primjera dobiva se slijedeći prikaz

0 0 0 1 0 1 1 1 0 1 0 0 1 0

1 0 1 0 1 1 1 0 0 0 0 1 0 0

0 1 0 1 0 1 1 0 0 0 1 0 0 0

1 0 0 0 1 0 1 1 0 0 0 0 1 0

0 1 0 0 0 1 1 1 0 1 0 0 0 0

1 1 1 0 0 1 1 0 0 1 0 1 0 0

0 1 0 0 1 1 1 0 1 1 0 0 0 0

0 0 0 1 0 0 0 1 0 0 0 0 1 0

1 0 1 0 1 0 0 0 0 1 0 1 0 0

0 1 0 1 0 0 0 0 0 1 1 0 0 0

1 0 0 1 0 1 0 1 0 0 0 0 0 0

0 1 1 0 0 1 0 0 0 0 0 0 1 0

0 1 0 0 0 0 0 1 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0 0 1 0 0

1 0 0 0 0 0 1 0 0 0 1 0 0 0

0 1 0 0 1 0 0 0 1 0 0 0 0 0

TX

gdje svaki redak matrice XT odgovara jednom glatkom broju. Na primjer, prvi redak matrice odgovara paru (-3, 1). Korak 7. Da bi se dobila razlika kvadrata potrebno je riješiti jednadžbu

)2(mod0

AX Ova jednadžba se u praksi rješava Wiedemannovim ili Lanczosovim algoritmom (ne može se upotrijebiti “klasična” metoda Gaussove eliminacije zbog toga što je rezultat nul-vektor i jer se računanje obavlja u konačnom polju Z/2Z). Budući da matrica X ima više stupaca nego redaka, postoji više rješenja jednadžbe. Jedno od rješenja je

T0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0A

Ovaj vektor ima jedinice na pozicijama koji odgovaraju slijedećim parovima (a, b)

)7,14(),3,1(),1,17(),1,2( V

Page 17: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

17

Korak 8. Umnožak brojeva predstavljenih gornjim parovima mora biti ujedno kvadrat u Z i kvadrat u Z[θ]. Dobivamo

Vba

bma),(

211760138297600

Također je lako pokazati da, u skladu s množenjem brojeva u Z[θ] vrijedi

35143415)17)(2( 2

3514143521)714)(31( 2 iz čega se vidi da

2

),(

)3514(

Vba

ba

Brojeve x i y za koje vrijedi )(mod22 nyx dobivamo kao

6233514),(

Vba

bax

11760),(

Vba

bmay

Računamo

61)2257,62311760gcd( 37)2257,62311760gcd(

Brojevi 61 i 37 su upravo faktori broja 2257, što znači da je faktorizacija izvedena uspješno.

Page 18: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

18

7. Zaključak GNFS algoritam je trenutno najučinkovitiji algoritam za faktorizaciju velikih brojeva. Algoritam se temelji na od prije poznatim principima faktorizacije razlikom kvadrata, no odnos prstenova Z/nZ i Z[θ] omogućuje ovom algoritmu da, umjesto da sve operacije obavlja u skupu cijelih brojevaa, dio operacija radi s brojevima u Z[θ], što u konačnici omogućuje učinkovitije dobivanje razlike kvadrata. Ovaj algoritam je u praksi uspješno korišten za faktorizaciju velikih brojeva, kao što je 640-bitni broj kojega je tvrtka RSA postavila kao izazov za faktorizaciju.

Page 19: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

19

Literatura [1] Matthew Hayward, Quantum Computing and Shor's Algorithm,

http://alumni.imsa.edu/~matth/quant/299/paper/ [2] http://www.crypto-world.com/announcements/rsa640.txt [3] Eric Landquist: The Quadratic Sieve Factoring Algorithm, 2001. [4] Matthew E. Briggs: An Introduction to the General Number Field Sieve, Master thesis,

Virginia Polytechnic Institute and State University, 1998. [5] Michael Case: A Beginner’s Guide to the General Number Field Sieve, Oregon State

University, 2003. [6] Peter Stevenhagen: The arithmetic of number rings, Algorithmic Number Theory,

Volume 44, 2008. [7] Gareth A. Jones, Josephine M. Jones: Elementary Number Theory, Springer, 1998.

Page 20: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

20

Prilog A. Rječnik matematičkih pojmova Abelova grupa skup A zajedno s binarnom operacijom · koji zadovoljavaju slijedeća

svojstva - za a i b iz A, a·b je također iz A - za a, b i c iz A, vrijedi a·(b·c)=(a·b)·c - postoji element identiteta e tako da vrijedi a·e = e·a = a - za svaki a iz A postoji b iz A tako da vrijedi a·b = b·a = e - za svaki a i b iz A vrijedi a·b = b·a

Algebarska faktorska baza - skup brojeva oblika a + bθ Z[θ], gdje su a i b cijeli brojevi, sa

svojstvom da ne postoje c, d Z[θ] tako da c·d = a + bθ. Eulerova funkcija Funkcija koja, za neki broj n, daje broj brojeva manjih od n koji su

relativno prosti sa n. Faktorska baza neprazan skup prostih brojeva Gladak broj Broj k je gladak u faktorskoj bazi F ako su, u njegovoj jedinstvenoj

faktorizaciji, svi faktori iz F. Homomorfizam preslikavanje između dvije algebarske strukture koje čuva njihovu

strukturu. Vidi “homomorfizam među prstenovima”. Homomorfizam među prstenovima – funkcija među prstenovima R i S, f: R → S koja

zadovoljava svojstva - f(a + b) = f(a) + f(b) za a, b iz R - f(a · b) = f(a)·f(b) za a, b iz R - f(1) = 1

Legendreov simbol

p

a za a Z i p prost broj je definiran kao

adijelipako

rješenjenemapaxako

rješenjeimapaxako

p

a

0

)(mod1

)(mod12

2

Monoidna grupa skup S zajedno s binarnom operacijom · koji zadovoljavaju slijedeća

svojstva - za a i b iz S, a·b je također iz S - za a, b i c iz S, vrijedi a·(b·c)=(a·b)·c - postoji element e u S tako da vrijedi a·e = e·a = a

Prost broj broj koji je djeljiv samo s 1 i sa samim sobom, npr 2, 3, 5, 7, 11 itd. Prost ideal ekvivalent prostom broju u prstenovima koji nisu Z i Z/nZ.

Page 21: ALGORITAM FAKTORIZACIJE GNFS - sigurnost.zemris.fer.hrsigurnost.zemris.fer.hr/algoritmi/asimetricni/2010_fratric/GNFS.pdf · Tablica 1: Mogući slučajevi za x2 ≡ y2 (mod n) Ukoliko

21

Prsten algebarska struktura koja se sastoji od skupa R i dvaju binarnih operacija, operacije zbrajanja + : R × R → R i operacije množenja · : R × R → R. Da bi se smatrao prstenom, (R, +, · ) mora zadovoljavati slijedeća svojsva - (R, +) je Abelova grupa - (R, · ) je monoidna grupa - Vrijedi zakon distribucije:

za a, b i c iz R vrijedi a·(b+c) = (a·b) + (a·c) za a, b i c iz R vrijedi (a+b)·c = (a·b) + (a·c) prsten Z/nZ prsten brojeva u modulo n aritmetici. Na primjer, prsten Z/3Z čine

brojevi 0, 1, 2. U ovom prstenu je 2 + 2 = 1 jer je 2 + 2 ≡ 1(mod 3) Relativno prosti brojevi - dva broja su relativno prosta ako im je najveći zajednički djelitelj 1.