alcuni metodi noti di fattorizzaz.veloce

annuncio pubblicitario
Alcuni metodi noti di fattorizzazione veloce
(crivello quadratico, radici quadrate di 1 mod N,
algoritmo di fattorizzazione di Fermat, di Pollard,
congettura debole e forte e ipotesi percentuale per i
numeri RSA con un attendibile rapporto q/p ≈ 2)
Francesco Di Noto, Michele Nardelli
Abstract
In this paper we will to compare some algorithm about speedy
factorization (quadratic sieve, Fermat, our RSA Number conjecture, our
percent conjecture, and so on)
Riassunto
In questo lavoro riportiamo mettendo a confronto, ove possibile, alcuni
noti metodi di fattorizzazione veloce (crivello quadratico, Fermat, radici
quadrate modulo 1), evidenziando eventuali similitudini, e accennando alle
nostre congetture debole e forte sui numeri RSA e alla congettura
percentuale (anche se ancora da dimostrare e perfezionare ulteriormente il
metodo che ne discende), e con qualche esempio di previsione sulla
possibile grandezza di p’ ≈ p reale di un numero RSA = N=p*q a basso
rapporto q/p.
°°°
1
Cominciamo col metodo del :
Crivello quadratico
Dalla omonima voce di Wikipedia:
Il crivello quadratico è un algoritmo di fattorizzazione creato da Carl Pomerance. Questo
algoritmo è particolarmente famoso perché nel 1994 ha fattorizzato il numero RSA-129, composto
da 129 cifre in base dieci.
Algoritmo[modifica]
L'algoritmo consta di 8 passi:
1)Viene dato in input il numero naturale dispari n
2)Si sceglie un naturale k
> 1.
> 0.
3)Si esaminano tutti i primi
e si eliminano tutti i primi dispari tali che
, dove con
si intende il simbolo di legendre, e si ottiene così la base di fattori
4)Facendo assumere ad r valori interi successivi a
che abbiano tutti i loro fattori primi in B.
, si trovano almeno t
.
+ 1 valori y = r2 − n
5)Per ognuno dei valori
si calcola il vettore in
dove ei è la riduzione modulo 2 dell'esponente di pi nella fattorizzazione di yi.
6)Con il metodo di eliminazione di Gauss si determinano alcuni dei vettori v2(yi) che danno
somma uguale al vettore nullo.
7)Si pone x uguale al prodotto degli ri corrispondenti agli yi trovati nel passo 6) e si pone y uguale
al prodotto delle potenze di
con esponenti uguali alla semisomma degli esponenti
della fattorizzazione degli stessi yi.
8)Si calcola d = mcd(x − y,n) e se 1 < d < n allora d è divisore non banale di n, altrimenti si
torna al passo 2) con una scelta di k più grande.
Simbolo di Legendre
Da Wikipedia, l'enciclopedia libera.
2
Il simbolo di Legendre è utilizzato in matematica nell'ambito della teoria dei numeri, e in
particolare nei campi della fattorizzazione e dei residui quadratici. Esso prende il nome dal
matematico francese Adrien-Marie Legendre….“
Ricordiamo che il simbolo di Legendre è :
Definizione[modifica]
Il simbolo di Legendre è definito come segue:
Se p è un numero primo e a è un intero, allora il simbolo di Legendre
•
•
•
è uguale a:
0 se p divide a
1 se a è un quadrato modulo p -- ossia esiste un intero k tale che k2 ≡ a (mod p), o a è un
residuo quadratico modulo p
−1 se a non è un quadrato modulo p, cioè a è un non-residuo quadratico modulo p
con
La generalizzazione del simbolo di Legendre a
è il simbolo di Jacobi.
Proprietà del simbolo di Legendre[modifica]
Il simbolo di Legendre possiede un certo numero di proprietà che consentono di velocizzare i
calcoli. Le più importanti sono:
1.
(cioè è una funzione completamente moltiplicativa nel suo
argomento superiore)
2. Se a ≡ b (mod p), allora
3.
4.
5.
6.
, cioè 1 se p ≡ 1 (mod 4) e −1 se p ≡ 3 (mod 4)
, cioè 1 se p ≡ 1 o 7 (mod 8) e −1 se p ≡ 3 o 5 (mod 8)
= 1 per tutti gli a dispari e 0 per a pari
7. Se q è un primo dispari, allora
3
L'ultima proprietà prende il nome di legge di reciprocità quadratica.
Il simbolo di Legendre è inoltre collegato al criterio di Eulero, dimostrato da Leonardo Eulero:
Infine, il simbolo di Legendre è un carattere di Dirichlet, detto anche il carattere quadratico
modulo p.
Funzioni correlate[modifica]
Il simbolo di Jacobi è una generalizzazione del simbolo di Legendre che ammette come argomento
un numero composto al posto del primo p…. “
Radici quadrate di 1 mod N
4 Confronto con il metodo di Michele Cipolla
Nel 1907, sulla prestigiosa rivista Mathematische Annalen, (Vol. 63), Michele Cipolla
pubblicò un articolo dal titolo "Sulla risoluzione apiristica delle congruenze binomie
secondo un modulo primo". E' interessante osservare che l'articolo è in italiano! Un
secolo fa era ancora possibile pubblicare su riviste internazionali in italiano, francese,
tedesco, spagnolo, inglese ..., ora è rimasto soltanto l'inglese!
Vediamo allora il risultato principale di Cipolla:
Soluzione della congruenza quadratica modulo p secondo Michele Cipolla
2r−1−1
√a = ±22−r a[(p+2r−1)/(2r+1)]
∑ (z
(2i+1)m
− 1)−1 ami
(19)
i=0
Nella 19 z è un non-quadrato modulo p e m = [(p−1)/(2r)], dove 2r è la massima potenza
di 2 che divide p − 1.
Il problema del metodo di Cipolla sta nel fatto che deve eseguire (nella sommatoria)
2r−1−1 prodotti, e questo può essere molto pesante se r è grande. Però la probabilità che,
dato p a caso, r sia grande è, ovviamente, bassa.
Ho fatto alcuni confronti tra i due algoritmi 18 e 19, sullo stesso computer e con il
medesimo linguaggio di programmazione. Entrambi utilizzano un non-quadrato, che ho
fatto calcolare nello stesso modo. Ho preso dei blocchi di 500 primi congrui a 1 modulo
8, e ho calcolato la radice quadrata di −1
Fino a 50 cifre non ci sono differenze di rilievo nei tempi di calcolo, a volte fa più in
fretta 18, a volte 19. Se sale il numero delle cifre 18 va in vantaggio. Per 500 primi
4
casuali (ma tutti congrui a 1 modulo 8) di 200 cifre ognuno, 18 ha impigato 47 secondi a
trovare la radice quadrata di -1 contro gli 81 di 19.
In ogni modo l'algoritmo 18 è efficace (secondo la definizione data sopra) in tutti i casi,
mentre 19, seppure di rado, non lo è. Faccio un esempio:
Il numero p = 2224 − 296 + 1 =
26959946667150639794667015087019630673557916260026308143510066298881 è
un numero primo (con 68 cifre).
L' algoritmo 18 impiega 0.03 secondi per calcolare la radice quadrata di -1 (che è
3338362603553219996874421406887633712040719456283732096017030791656).
L'algortmo 19 dovrebbe fare più di 296 moltiplicazioni, e bisognerebbe attendere miliardi
di anni!
Ritornando al metodo di Cipolla, per la determinazione delle soluzioni minime positive
(radici) della congruenza binomia, conviene assumere per m il minimo valore possibile,
cioè il prodotto delle potenze dei fattori primi di n, con quell’esponente con il quale
entrano in p – 1. La formula è:
m
−1
n
n µ

a (M 0 + 1) − 1 ∑ A sU s ,
m 
 s =0
m
n
dalla quale si otterranno le soluzioni minime positive con facile calcolo. Per applicare il
metodo ad un esempio, determiniamo una soluzione apiaristica della congruenza
x3 ≡ a (mod. 73).
Possiamo assumere m = 9, µ = 3, ν = 1. Un non residuo cubico di 73 è 2. Infatti si ha
23 ≡ 8, 26 ≡ - 9, 29 ≡ - 72 ≡ 1, 212 ≡ 8, 224 ≡ - 9 (mod. 73).
Possiamo quindi porre
γ ≡ 28 ≡ 37 (mod. 73)
Intanto si ha
N ≡ 224 ≡ - 9, M0 ≡ γν – 1 ≡ 28 – 1 ≡ 36, M1 ≡ - 9 · 37 – 1 ≡ - 42,
M2 ≡ 9 · 41 – 1 ≡ 3 (mod. 73).
Il minimo comune multiplo dei numeri 36, 42, 3 è M = 252 e il suo associato è congruo
a 31 (mod. 73). Per cui si ha
U0 ≡ M / M0 M ≡ 7 · 31 ≡ - 2, U1 ≡ M / M1 M ≡ - 6 · 31 ≡ 33,
U2 ≡ M / M2 M ≡ -24 (mod. 73).
Quindi una soluzione apiristica della congruenza data è
5
21a3(– 2 + 33a8 – 24 a16).
Notiamo come in tale soluzione sia presente il numero 24, che corrisponde ai modi di
vibrazione fisica inerenti le stringhe bosoniche e che sono dati dalla seguente equazione
modulare di Ramanujan:
∞ cos πtxw'


− πx 2 w '
e
dx 
∫0 cosh πx

142
4 anti log
⋅ 2
πt 2
−
w'

 t w'
4
(
)
e
φ
itw
'
w
'

24 = 
.
  10 + 11 2 
 10 + 7 2  
+ 

log  



4
4
 




5 La fattorizzazione di N e le radici quadrate di 1 modulo N
Abbiamo visto che esistono algoritmi efficaci che permettono di calcolare velocemente
le radici quadrate modulo p, quando esistono, anche se p ha migliaia di cifre.
Per esempio se poniamo p = M24 = 219937 − 1 (il 24° primo di Mersenne), l'algoritmo 18
trova la radice quadrata di 2 in 5,2 secondi. M24 ha 6002 cifre.
Quando invece il modulo N è composto, non si conoscono algoritmi efficaci per la
determinazione delle radici quadrate, a meno che non sia nota la fattorizzazione di N.
Limitiamoci ad un caso particolare assai interessante, quello in cui l'intero a della 4 è 1.
Se N = p è primo, l'equazione x2 ≡ 1 (mod N) ha esattamente due soluzioni: ±1. Diciamo
±1 soluzioni banali. Se N (dispari) non è primo esistono sempre soluzioni non banali. Se
N è il prodotto di due primi dispari, esistono 4 soluzioni, che sono facili da trovare se i
due primi sono noti.
Esempio
Sia N = 17389 x 37813 = 657530257. Le quattro soluzioni di x2 ≡ 1 (mod N) sono ±1
(quelle banali) e ±195417583.
Ancora oggi è irrisolto il seguente importantissimo problema:
Problema 2
Trovare un algoritmo efficace che calcoli una radice quadrata non banale di 1 modulo N.
(20)
Perché è così importante risolvere il Problema 2? Perché vale il seguente teorema:
Teorema
Se conosciamo una radice quadrata non banale di 1 modulo N, sappiamo trovare subito un fattore proprio di N.
Dimostrazione
Sia v una radice quadrata di 1 modulo N non banale.
Allora si ha v2 ≡ 1 (mod N), ovvero N divide v2 − 1 = (v − 1)(v + 1).
Però N non divide (v-1) perché v ≠ 1 modulo n.
6
Allo stesso modo N non divide (v+1) perché v ≠ −1 modulo n.
Dunque i due interi MCD(N, v − 1) e MCD(N, v + 1) sono fattori propri di N.
(Con MCD abbiamo denotato il Massimo Comun Divisore, che è computabile in modo
efficace, con un metodo che viene da Euclide).
Nell' esempio appena visto, se non siamo in grado di fattorizzare N = 657530257 (cosa
molto probabile, senza un computer e un apposito programma) e ci rivelano che v =
195417583 è una radice quadrata di 1, possiamo calcolare:
MCD(N, v - 1) = MCD(657530257, 195417582) = 17389
MCD(N, v + 1) = MCD(657530257, 195417584) = 37813
e trovare così velocemente la fattorizzazione di N.
In effetti il problema della fattorizzazione di un intero N e quello di trovare radici
quadrate non banali di 1 modulo N sono perfettamente equivalenti!
Io penso che questo problema: trovare radici quadrate non banali di 1 modulo N, sia
particolarmente interessante per coloro che vogliono avere un riconoscimento dalla
comunità matematica. Se qualcuno (specialmente se non è un professionista della
matematica) dice di avere risolto la congettura di Goldbach, o di avere dimostrato che
esistono infiniti primi gemelli, si mette in una situazione difficile, piena di controlli e a
volte di diffidenza e incredulità, o addirittura indifferenza. Questo è dovuto al fatto che
da secoli i matematici più brillanti lavorano su questi problemi, cercando una risposta
che non hanno ancora trovato. E al fatto che le dimostrazioni complesse presentano
molto spesso lacune ed errori quasi invisibili (specialmente a chi le ha ideate). Ora, se vi
dicono che la dimostrazione è sbagliata, potete non crederci, ma al tempo stesso, non
potete convincere gli altri. E' frustrante. Se invece dite: i numeri si fattorizzano così e
così, e non vi credono, avete una risposta definitiva: "datemi N e io ve lo fattorizzo!".
Se sapete trovare un numero maggiore di 1 il cui quadrato dia 1 modulo questo intero di
appena 212 cifre:
74037563479561712828046796097429573142593188889231289084936232638972765
03402826627689199641962511784399589433050212758537011896809828673317327
3108930900552505116877063299072396380786710086096962537934650563796359
avete intanto guadagnato 30.000 dollari, perché siete in grado di trovare i due fattori
primi di RSA-704. Se poi avete un metodo per farlo, potete continuare e fattorizzare tutti
i numeri della famosa RSA Challenge!
A questo punto non solo avete guadagnato più di mezzo milione di dollari, ma tutti
saranno certi che voi avete qualcosa di grande in mano (e soprattutto nella testa) e vi
imploreranno di spiegare loro come fate!
7
Possibile che sia poi tanto difficile estrarre una radice quadrata? E di 1 poi!
Ringrazio l'ing. Cristiano Teodoro per avere sottoposto, in una sua gentile lettera, la
formula di Cipolla alla mia attenzione.”
Parte di Cipolla da Articolo originale
(Abbiamo evidenziato in rosso le relazioni matematiche che somigliano in
qualche modo all’algoritmo di Fermat, dove sono coinvolte la semisomma
s = ( p + q)/2 (e quindi, indirettamente, la congettura di Goldbach, che
avrebbe altre relazioni con la fattorizzazione veloce) e la semidifferenza
d = (q - p)/2 , da cui poi le relazioni
s - d = p,
s+d =q
molto simili a quelle evidenziate in rosso nella citazione precedente; sulla
quale vogliamo aggiungere che il numero RSA è gia stato fattorizzato
(vedi seguito) e che i premi per la fattorizzazione dei numeri RSA più
grandi sono già stati ritirati (vedi Nota 1 finale), per cui nessuno se ne
occupa più di tanto per questo scopo, e solo alcuni, per esempio noi, per
motivi di ricerca e di previsione sulla probabile grandezza di p e q) . Infatti:
Algoritmo rho di Pollard
Da Wikipedia, l'enciclopedia libera.
L'algoritmo rho di Pollard è un algoritmo di fattorizzazione di numeri interi, basato sull'aritmetica
modulare. Ideato da John Pollard nel 1975, è adatto in particolare alla ricerca di fattori piccoli; è
stato usato nel 1981 per fattorizzare l'ottavo numero di Fermat. È un algoritmo probabilistico, nel
senso che non garantisce di produrre un risultato.
Algoritmo[modifica]
L'algoritmo si basa sulla generazione di una sequenza pseudo-casuale di numeri modulo n (che è il
numero che si cerca di fattorizzare): una sequenza ampiamente usata è
8
dove xk è il k-esimo numero della sequenza. Se la successione è "sufficientemente casuale", allora si
dovrebbe osservare un ciclo dopo circa
iterazione; se però p è un fattore di n, allora la
sequenza si ripeterà anche modulo p, ma dopo circa
passi.
Poiché tuttavia p non è conosciuto, bisogna ricorrere ad un altro metodo per verificare le eventuali
ripetizioni, e cioè calcolare il massimo comun divisore tra n e la differenza xi-xj, per ogni coppia
(i,j). Nella pratica, tuttavia, calcolare il massimo comun divisore per ogni coppia di indici
renderebbe il test molto lento, quasi quanto il metodo delle divisioni per tentativi: si può dimostrare
però che è sufficiente considerare le differenze x2i-xi, velocizzando notevolmente l'esecuzione
dell'algoritmo.
È possibile tuttavia che il massimo comun divisore sia n: in tal caso l'algoritmo ha fallito, ed è
necessario riprovare con un'altra sequenza, oppure con un diverso punto di partenza. Se n' è primo,
il metodo fallisce per ogni successione e ogni punto di partenza.
1/2
La complessità computazionale dell'algoritmo è, nella notazione O-grande, O(p ln
1/4 2
è il fattore di n; volendolo esprimere in funzione di quest'ultimo, è O(n ln (n))
2
(n)) dove p
Pseudocodice[modifica]
1. x=2, y=2, d=1;
2. Se d=1
1. x=f(x);
2. y=f(f(x));
3. d=MCD(x,y);
3. Se d=n l'algoritmo fallisce; altrimenti d divide n “
Circa il numero RSA -129, è stato già fattorizzato:
(da “I numeri RSA” di Wikipedia):
“ RSA-129[modifica]
RSA-129 non faceva propriamente parte del RSA Factoring challenge, ed è legato all'articolo di
Martin Gardner sullo Scientific American dell'agosto 1977.[7] È stato fattorizzato nell'aprile 1994 da
un team diretto da Derek Atkins, Michael Gradd, Arjen K. Lenstra e Paul Lyland, usando
approssimativamente 1600 computer[8] con la collaborazione di circa 600 volontari connessi tramite
Internet;[9] un premio di $100 USD è stato assegnato dalla RSA Security per la sua fattorizzazione,
il quale è stato donato alla Free Software Foundation.
La fattorizzazione di RSA-129 è la seguente:
9
RSA-129 = 11438162575788886766923577997614661201021829672124236256256184293
5706935245733897830597123563958705058989075147599290026879543541
RSA-129 = 3490529510847650949147849619903898133417764638493387843990820577
× 32769132993266709549961988190834461413177642967992942539798288533
La fattorizzazione è stata calcolata usando l'algoritmo del crivello quadratico.
La sfida per la fattorizzazione includeva un messaggio da decriptare con RSA-129. Una volta
decriptato usando la fattorizzazione il messaggio trovato fu "The Magic Words are Squeamish
Ossifrage" (in italiano, Le parole magiche sono avvoltoio schizzinoso).
L’evidenza in blu delle prime cifre è nostra
In base alla nostra congettura sui numeri RSA (Rif 1), secondo la quale p
dovrebbe trovarsi tra n/2 e q tra n e 4n, con n =√N (essendo r =q/p = 4 il
rapporto massimo previsto per i numeri RSA; e p minimo circa n/√r),
abbiamo p compreso tra n =√ 1143… = 33,80 ed n/2 = 33,80/2 = 16,90 ,
senza disturbare tutti i numeri primi fino a 16…seguito da (129 +1)/2 - 2
= 65 - 2 = 63 cifre (la radice quadrata possiede c/2 cifre, con c pari e (c +
1)/2 cifre se N è composto da c cifre, con c dispari, in questo caso 129 è
dispari e quindi (129+1)/2 = 65, e 65 -2 ( le due cifre di 16). La nostra
previsione è confermata poiché p = 32… è compreso in questo valore.
Avremmo risparmiato il tempo di calcolo per tutti i numeri primi inferiori
a 16…seguito da 63 cifre, e non è poco. Abbiamo usato le prime quattro
cifre di N-129, come eccezione, poichè si dovrebbero usare poche cifre, in
numero pari o dispari a seconda del numero pari o dispari, delle cifre di N.
In questo caso, pur essendo 129 dispari, la previsione giusta si basa sulle
quattro (numero pari) prime cifre di RSA -129, e cioè 1143 (si tratta
probabilmente di una rara eccezione alla regola generale).
Circa la congettura forte , per la quale si presuppone un rapporto massimo
r = q/p di 2,25, con √r = 1,50, abbaiamo p compreso tra n =33,80/ 1,50 ed
n; quindi compreso tra 33,80/1,50 = 22, 53 ( 22 seguito da 63 cifre per i
motivi di cui sopra) e 3380…, questa volta escludendo dal calcolo tutti i
numeri primi fino a 22 seguito da 63 cifre (o 63 zeri, se si parte per
prudenza da 220000…, cioè da 22 *10^63); quindi, con maggiore
risparmio sul tempo di calcolo: invece di partire dal numero primo 3, si
parte da 22*10^63, per arrivare a 32 seguito da 63 cifre.
Poiché 22/0,32 = 68,75% di p abbiamo risparmiato circa il 68% dei tempi
di calcolo solo per i numeri primi di 65 cifre, per non parlare dei numeri
primi minori (cioè con meno di 65 cifre).
10
Congettura debole e forte, quindi, come nostra proposta di fattorizzazione
veloce, sfruttando il rapporto massimo r = q/p = 2,25, che abbiamo ripreso
con la nostra “ Ipotesi su p < n come possibile percentuale di n = √N
per una fattorizzazione più veloce”, Rif.2, con 0,d ( parlando delle due
prime cifre decimali di n,d come possibile percentuale di p su n (funziona
discretamente per i numeri gemelli o con piccole differenze; una futura e
più rigorosa dimostrazione delle nostra suddetta ipotesi (con una certa
connessione tra parte decimale di n e il rapporto r, specie per r molto
bassi) eliminerebbe le attuali irregolarità osservate, e avvierebbe a
soluzione il difficile problema della fattorizzazione veloce, cercando
intorno a p’ stimato il valore reale di p . Ce ne occuperemo nei prossimi
anni.
Passiamo ora all’algoritmo di fattorizzazione di Fermat
Algoritmo di Fermat
Da Wikipedia :
Metodo di fattorizzazione di Fermat
Da Wikipedia, l'enciclopedia libera.
Il metodo di fattorizzazione di Fermat è un algoritmo ideato da Pierre de Fermat per fattorizzare
dei numeri interi nei suoi fattori primi. Si basa sulla rappresentazione di un numero come differenza
tra due quadrati, ed è più efficace quando esistono due fattori del numero vicini tra loro.
Algoritmo[modifica]
1. Sia n un intero dispari.
2. a = n (dove   indica la funzione parte intera superiore).
3. Ripeti
2
1. b2 = a − n
2. se b2 non è un quadrato perfetto allora a = a + 1
4. finché b2 non è un quadrato perfetto.
5. b = b2
 
6.
n = (a − b)(a + b)
11
Spiegazione[modifica]
Supponiamo che n sia un intero dispari, e che esistano due interi a e b tali che n=ab (con a>b).
Allora
Quindi n è la differenza di due quadrati. Essendo n un intero dispari, anche a e b lo devono essere a
loro volta: dunque i numeri d=a+b e c=a-b sono pari e la loro semisomma è un intero.
2
2
L'espressione d − c può quindi essere vista come (d − c)(d + c), e, se
, si è
ottenuta una fattorizzazione non banale di n.
L'algoritmo consiste quindi nel calcolare i numeri a
in tal caso
2
− n finché non si trova un quadrato perfetto;
Il calcolo dei quadrati successivi è inoltre facilitato dal fatto che le differenze tra quadrati
2
2
consecutivi formato una progressione aritmetica di ragione 2: (a + i) − (a + i − 1) = 2a + 2i
+ 1. Il riconoscimento dei quadrati può essere effettuato o attraverso metodi di aritmetica modulare
(che elimina molte possibilità per i quadrati: ad esempio l'ultima cifra decimale non può essere solo
2, 3, 7 o 8) oppure attraverso apposite tavole dei quadrati.
Generalizzazioni[modifica]
Nel Novecento sono stati proposti diversi algoritmi di fattorizzazione che si basavano su quello di
Fermat. Maurice Kraitchik suggerì negli anni Venti che, invece di considerare interi x e y tali che n
= x2 − y2, si potevano invece cercare questi in modo che n dividesse la differenza tra i quadrati,
ovvero cercare soluzioni della congruenza
o equivalentemente
In questo contesto, le soluzioni "interessanti" della congruenza sono quelle in cui x non è congruo
né a y né a -y modulo n e in cui entrambi x e y sono coprimi con n. Se n è dispari e divisibile per
almeno due primi, si è dimostrato che almeno metà delle soluzioni sono interessanti. In questo caso,
n e x-y è compreso strettamente tra n ed 1, e quindi è un fattore non banale di n.
Su questa idea si basano sia l'algoritmo delle frazioni continue che il crivello quadratico….”
Vedi anche su MathWorld:
12
Fermat's Factorization Method
Given a number , Fermat's factorization methods look for integers and such that
. Then
(1)
and is factored. A modified form of this observation leads to Dixon's factorization method and the quadratic sieve.
Every positive odd integer can be represented in the form
by writing
(with
) and noting that this
gives
(2)
(3)
“
Il crivello quadrato lo abbiamo già visto all’inizio
Sull’algoritmo di Fermat abbiamo elaborato una nostra elaborazione, più
semplice della suddetta , in Rif. 3), che riportiamo:
“L’algoritmo di Fermat e il nostro algoritmo
“N^2 + d^2 = s^2 , da cui esso deriva: s = (N + i),
con i ≈ √d” .
Circa il nostro algoritmo
N2+ d 2= s 2
(1)
13
da cui p = s - d e q = s + d, esposto nel nostro ultimo lavoro
“Fattorizzazione veloce e problema P = NP” recentemente pubblicato
sul nostro sito, abbiamo saputo solo ora, dalle “Osservazioni sull’articolo
Fattorizzazione veloce e problema P =NP” dell’ing. Cristiano Teodoro.
Carolla (vedi Lavori dell’Ing. Teodoro), dell’algoritmo di Fermat, al quale
anche noi eravamo recentemente arrivati e indipendentemente dallo stesso
Fermat, pur non conoscendolo. Esso è descritto nella voce di
Wikipedia “Metodo della fattorizzazione di Fermat” alla quale rimandiamo.
La nostra versione, pur non essendo stata accennata nel nostro lavoro (per
essere oggetto di eventuali lavori successivi), consiste nella
formula accennata nel titolo:
s2= (N + i)2
(2)
dove i non è però la nota unità immaginaria dei numeri quanto più piccola
è la differenza q – p. Se q - p = 0, anche i = 0. Tale algoritmo è comunque
molto più veloce della (1), come ha mostrato l’ing. Teodoro nelle sue
“Osservazioni…” sopra accennate.
Abbiamo scoperto che se il rapporto q/p è circa 2, i ≈ √p/2 , e
proporzionalmente minore se il rapporto q/p è inferiore a 2. Il che significa
che la difficoltà computazionale, per numeri p e q di questo tipo, passa dal
numero di cifre di p al numero di cifre di i ≈ √p/2, con quindi circa metà
delle cifre che compongono p. Facciamo un solo esempio:
N = p x q = 127 x 229 =29083 , con q/p = 229/127 =1,80 ≈ 2,
e con semidifferenza:
(q-p)/2 = (229-127)/2 =102/2 = 51
(due sole cifre invece delle tre di p = 127).
Con la (1) occorrono 51 tentativi per trovare s , poiché N + 512 = 29083 +
2601 = 31684 = 1782 da cui poi p = 178 - 51 = 127 e q = 178 + 51 = 229;
ora, con la (2) ne occorrono i = 8 ≈ √51 tentativi, poiché, essendo √29083
= 170,53 e 170 intero otteniamo, dopo soli 8 tentativi, il quadrato perfetto
1782 = 31684; infatti s2 = √(170 + 8)2= 1782 =31684, con 8 ≈ √51= 7,14
Nell’esempio dell’ing. Teodoro, invece:
14
p = 97, q = 127 con differenza 127 - 97 = 30 ( e rapporto = q/p = 127/97 =
1,30, inferiore a 2 e a 1,80 dell’esempio precedente) e d = 30/2 = 15, con
√15 = 3,8. Applicando ora la (1), abbiamo N = 97 x 127 = 12319, √12319
=110,99, intero 110; s = √(110+2)2 = √12544 = 112,
da cui d = √(12544 – 12319) = √225 = 15, con p = 112-15 = 97 e q = 112 +
15 =127; in questo esempio i = 2, con 2 < 3,8 = √d = √15.
2 soli tentativi invece che con i 15 tentativi che con la (1), molto efficiente
solo se d è molto piccola, per esempio con i numeri gemelli (d = 1) o
molto vicini (d = 2, 3, 4, ecc.).
(Notiamo che 112 è divisibile per 8 (112/8 = 14), numero che è connesso
con i modi corrispondenti alle vibrazioni fisiche delle superstringhe
attraverso la seguente equazione modulare di Ramanujan:
∞ cos πtxw'


− πx 2 w '
∫0 cosh πx e dx  142

4 anti log
⋅ 2
πt 2
t w'
−
w'

e 4 φw' (itw') 
1 
8=
).
3
  10 + 11 2 
 10 + 7 2  

+ 
log  



4
4
 




Per differenze un po’ più grandi è molto meglio la (2), cioè l’algoritmo di
Fermat, come nei due esempi sopra riportati. Poiché i numeri RSA hanno
un rapporto generalmente minore di 2, la (2) potrebbe essere molto
efficace, e tanto più quanto tale rapporto tende a 1, e quindi d tende a 0.
Ma per questo tipo di numeri è ancora meglio il “Crivello quadratico”
(vedi Wikipedia) con il quale nel 1994 è stato fattorizzato il numero RSA 129, composto da 129 cifre in base dieci.
Rispetto all’algoritmo di Fermat, la nostra sola novità ora è che i ≈ √d, per
numeri primi p e q con basso rapporto. Se si potesse calcolare in qualche
modo, anche approssimativamente, la differenza D tra q e p partendo solo
da N = p * q, e quindi anche la semidifferenza d = D/2, si potrebbe avere
facilmente i ≈ √d, diminuendo ancora il numero dei tentativi permessi
dall’algoritmo di Fermat, e ottenere così una fattorizzazione ancora più
efficace e veloce, magari al livello ottenibile con il crivello quadratico di
Carl Pomerance.
Gruppo ERATOSTENE
Riferimenti
1. “Fattorizzazione veloce e problema P = NP” (Gruppo Eratostene)
2a. “Osservazioni sull’articolo Fattorizzazione veloce e problema P =
NP”,(Gruppo Eratostene)
15
2b. “Osservazioni sull’articolo Fattorizzazione veloce e problema N =NP)”
(Ing. Cristiano Teodoro)
3. Wikipedia, “Metodo di fattorizzazione di Fermat”
4. Wikipedia, “Crivello quadratico”
Come si vede, la nostra esposizione , corredata da esempi, è più semplice
delle voci di Wikipedia e di MathWorld.
Vediamo ora l’ultimo metodo qui considerato , la congettura percentuale,
in breve, per la quale si rimanda al Rif.2, col titolo “Ipotesi su p < n
come possibile percentuale di n = √N per una fattorizzazione più
veloce” , più brevemente chiamata: ipotesi percentuale
che qui tratteremo brevemente (solo alcuni esempi), non essendo ancora
dimostrata (ce ne occuperemo entro i prossimi anni, dopo aver raccolto
altri indizi e nuovi elementi a favore della sua verità, per esempio qualche
più utile connessione tra parte decimale e rapporto r = q/p, anche
approssimativo, e quindi r ≈ q/p):
“…Facciamo qualche semplice esempio pratico:
poniamo N = 29 083
Faremo finta di non sapere che 29 083 = 127*229, poiché 29083 è un
numero piccolo e facilmente fattorizzabile; l’utilità della congettura vale
ovviamente per N molto grandi, ma appartenenti alla stessa casistica, cioè
con rapporto q/p ≈ 2, in questo caso 229/127=1,803.
Avremo che:
n = √N = 170,53 = √29 083; d = 0,53;
0,53*100 = 53 = 53% di n ; 170/100 = 1,7 = 1% di n =1% di 170
p’ = 1,7*53 = 90,1 ≈ 90, o più semplicemente170*0,53 = 90,1≈90
quindi, p’ ≈ p reale ; cercando vicino a 90, e si trova 90 + 37 =127 = p
reale, con 37/1,7 ≈ 21,76 % di n esplorato, eliminando tutti i numeri primi
inferiori a 90 (≈53% di n, e 170 - 127 = 43 ≈ 25,29 ≈ 25% di n da 127 a
170, e quindi 53+25 = 78% di non esplorato). Non è ancora molto, ma
nemmeno poco.
16
Altro esempio particolare (molto frequente) per N = (53*101) = 5 353
n = √5 353 = 73,16 dove d = 0,16; ora però la percentuale
approssimativa è 100 - 16 = 84, infatti p’ = 73*0,84 = 61,32 ≈ 53, in
questo caso p’ superiore a p reale anziché inferiore come nel caso
precedente.
Quindi la percentuale approssimativa utile è p’ = 100* 0,d oppure, come in
altri casi simili, p’’ = 100*(1 – 0,d)
Ma, a volte è anche una media aritmetica tra p’ e p’’, oppure una media
aritmetica tra n,d e p’.
Infine, per p circa la metà di n, la parte decimale 0,d si aggira su 0,50, il
che significa che p’≈ p’’≈ p reale, con tutti e tre i numeri nella parte
centrale di n,d = √N.
Queste sono le pochissime regolarità emerse dal caos apparente se si
considera 100* 0,d come vera percentuale di n in cui si possa trovare p .
Dimostrando la congettura e poi sfruttando le suddette regolarità (valide
per il momento solo per i prodotti di numeri gemelli o molto vicini tra
loro) , si può arrivare ad uno spettroscopio più completo e attendibile…”
Conclusioni
Abbiamo parlato qui solo dei principali e noti metodi di fattorizzazione
più o meno veloce, e di nostre congetture che potrebbero portare in futuro
a metodi di fattorizzazione possibilmente ancora più veloci, basati sui
metodi gia noti (Fermat ecc.) o su nuove idee, e possibilmente in grado di
mettere in pericolo la crittografia RSA (ma non è questo il nostro scopo).
Ora accenneremo brevemente all’algoritmo di Shor , per il quale occorre
però un computer quantistico, ancora in fase di ideazione e progettazione
iniziale. Ma è possibile che esso arrivi prima di nuove idee veramente
efficaci, e quindi per il sistema RSA prima o poi non ci sarà scampo: o
computer quantistico o nuove idee, nostre o altrui che siano…
Algoritmo di Shor, parzialmente da Wikipedia:
17
“Algoritmo di fattorizzazione di Shor
Da Wikipedia, l'enciclopedia libera.
L'algoritmo di fattorizzazione di Shor è un algoritmo ideato da Peter Shor nel 1994 per risolvere
il problema della fattorizzazione dei numeri interi in numeri primi.
Su un computer quantistico questo algoritmo ha una complessità computazionale polinomiale o, più
correttamente, BQP (Bounded error Quantum Polynomial time): i fattori sono trovati con margine
d'errore arbitrariamente piccolo in tempo polinomiale nella lunghezza dell'intero di input.
Riduzione del problema[modifica]
Sia n il numero da fattorizzare. Il problema di fattorizzarlo in fattori primi si può ridurre a massimo
log(n) problemi di fattorizzazione binaria in numeri non per forza primi.
Viene scelto un numero a
< n tale che a sia coprimo con n: l'MCD tra i due vale dunque 1.
Si definisce una successione sugli interi positivi k:
f(k) = ak(mod n)
vale che uno dei termini della successione è pari ad uno, e i seguenti si ripetono in modo periodico,
ossia
f(k + t) = f(t) per gli interi k > r e per un dato periodo t.
r è il più piccolo intero per cui f(r) = ar(mod n) = 1, e si dice ordine moltiplicativo di a modulo
n. È anche pari al periodo della successione.
Se r è pari, almeno un fattore di n si trova tra i due numeri
•
•
MCD((ar / 2 + 1),n)
MCD((ar / 2 − 1),n)
infatti
ar = 1(mod n)
(ar / 2)2 − 1 = 0(mod n)
(ar / 2 + 1) * (ar / 2 − 1) = 0(mod n)
Ad esempio con n=143, e scegliendo a=21, l'ordine è 4 (f(4)
Vale
I MCD tra i due termini ed n sono i candidati fattori primi:
18
= 214(mod 143) = 1).
.
MCD(440,143) = 11
MCD(442,143) = 13
che sono effettivamente i fattori di n, 11 e 13.
Calcolo dell'ordine[modifica]
Individuare l'ordine è un problema di cui non si conosce una soluzione deterministica efficiente con
un computer classico. L'introduzione di Peter Shor è quella di un algoritmo quantistico in grado di
fornire l'ordine r in tempo polinomiale nella dimensione di n. L'algoritmo utilizza la codifica e
l'estrazione di informazioni (tramite la trasformata di Fourier quantistica) dalle fasi relative tra gli
stati quantistici (qubit), proprietà che non ha un equivalente classico.
Esistono diverse versioni dell'algoritmo. Quella presentata da Shor nel 1994 è la seguente:
1. Si considerino due registri, di q ed m qubit. Il primo sia inizializzato alla rappresentazione
binaria di
, ossia
. Il secondo a , rappresentato su m cifre come
.
2. Sul primo registro si opera una porta di Hadamard a q qubit. Il primo registro si trova così in
uno stato
(si omettono le normalizzazioni). Si può osservare che questo stato
q
è la sovrapposizione uniforme di tutti gli stati che codificano per numeri x < 2 .
3. Il primo registro controlla l'azione di
sul secondo. L'operatore si definisce come
.
L'operatore Ua è una radice r-esima dell'identità, dove r è l'ordine moltiplicativo di a
modulo n, ha quindi autovalori del tipo
per
. Si può mostrare che la
sovrapposizione omogenea degli autostati è esattamente lo stato
. Far controllare l'azione
q
di
allo stato del primo registro, in sovrapposizione di tutti gli x < 2 fa in modo che le
fasi
compaiano nello stato finale.
4. La trasformata di Fourier quantistica estrae queste fasi e le rende misurabili in base
computazionale sul primo registro.
Diverse ripetizioni dell'algoritmo forniscono varie stime di , da cui si può riconoscere r. Il k
misurato ad ogni esecuzione è casuale, tra tutti quelli minori di r: da solo può risultare fuorviante
(ad esempio se divide r).
Efficienza[modifica]
L'algoritmo presentato ha complessità di ordine
. La
restante parte della fattorizzazione, espressa sopra, è comune agli algoritmi classici ed è già
efficiente: l'accelerazione che l'algoritmo di Shor dà al problema del calcolo dell'ordine, quindi,
rende efficiente l'intero algoritmo di fattorizzazione.
19
L'algoritmo, tuttavia, non è deterministico, ed ha una probabilità di successo minore di 1: si può
comunque ripeterne l'iterazione per abbassare la soglia d'errore.
Implementazione[modifica]
Non esiste una macchina quantistica scalabile che implementi la versione descritta dell'algoritmo di
Shor. Versioni compilate, ossia ridotte per casi specifici, sono invece già state eseguite: ad esempio
su sistemi ottici lineari, dove i qubit sono codificati nella polarizzazione dei fotoni.
Bibliografia[modifica]
•
•
(EN) Shor, P. W. (1994). "Algorithms for quantum computation: Discrete log and factoring".
In "Proceedings of the 35th Annual Symposium on the Foundations of Computer Science",
pagine 124-134. IEEE Computer Society Press.
(EN) Phillip Kaye; Raymond Laflamme, Michele Mosca, Finding-Orders in An introduction
to quantum computing, Oxford, Oxford University Press.
Riferimenti
1) – “Congettura sui numeri RSA” – Gruppo Eratostene
“ sul sito www.gruppoeratostene.com, sezione “Articoli” sottosezione
“Articoli sulla Fattorizzazione”
2)” Ipotesi su p < n come possibile percentuale di n = √N
per una fattorizzazione più veloce
Francesco Di Noto, Michele Nardelli
(Gruppo “B.Riemann”)
3)” “L’algoritmo di Fermat e il nostro algoritmo N^2 + d^2 = s^2 , da
cui esso deriva: s = (√N + i), con i ≈ √d” , sul sito
www.gruppoeratostene.com, sezione “Articoli” sottosezione “Articoli
sulla Fattorizzazione”
Altri riferimenti utili
4) Appunti sulla futura fattorizzazione del numero RSA-190 e di altri
numeri RSA (previsioni sulla probabile grandezza di p in base alla
congettura sui numeri RSA)”Gruppo Eratostene, idem
20
5)”LA FATTORIZZAZIONE VELOCE E IL PROBLEMA P = NP
(con accenno alla RSA e al logaritmo discreto)”Gruppo Eratostene,
idem
6)”LA FATTORIZZAZIONE VELOCE E IL PROBLEMA P = NP
(con accenno alla RSA e al logaritmo discreto)”Gruppo Eratostene, i
7) “ - Numero RSA - 2048: una previsione sulla stima
approssimativa dei suoi fattori p e q – “
Francesco Di Noto, Michele Nardelli
8) “Un algoritmo per fattorizzare numeri RSA”
Di Cristiano Armellini , sul sito armellini.pbworks.com/f/rsa.pdf
9) Universit`a degli Studi di Padova
Corso di Laurea Magistrale in Ingegneria Informatica
“Quadratic Sieve e
Metodo di Lanczos a Blocchi nella Fattorizzazione di Numeri Interi”
Relatore: Prof. Alberto Tonolo
Studente: Nicola Zago
Matricola: 601487
Anno Accademico: 2009/2010
In questa tesi di laurea l’Autore scrive (pag. 7), per quanto riguarda
qualche pericolo per la crittografia RSA, che:
“…Le statistiche dell’ultimo record di fattorizzazione sono impressionanti. RSA-768 in particolare ha
richiesto la raccolta di oltre 64 miliardi di relazioni e la soluzione di una matrice 192.796.550 ×
192.795.550. Per avere un’idea del raffinamento algoritmico si pensi che questa matrice può essere
memorizzata in un centinaio di Gb negli algoritmi moderni, mentre avrebbe richiesto mezzo milione di
Gb con l’algoritmo di Gauss. RSA - 768 ha richiesto 10.000 volte più risorse di calcolo di RSA-512,
mentre la differenza tra RSA-1024 e RSA-768 è un quarto della precedente. Si stima che entro i
prossimi 10 (Un anno-MIPS è il numero di operazioni eseguite in un anno facendone un milione al secondo 21012 floating
point operation) anni anche le chiavi di 1024 bit diventeranno non sicure usando gli algoritmi attuali e
sfruttando solo le innovazioni tecnologiche. Anche se nulla vieta che si trovino metodi più efficenti che
riducano questa stima. Intanto i laboratori RSA si preparano a ritirare le chiavi da 1024 bit, passando
a lunghezza minima di 2048 bit per il 2014.
In realtà numeri di oltre 1000 bit sono già stati fattorizzati tramite lo Special Number Field Sieve, in
particolare nel 2007 è stato fattorizzato M1039 (il numero di Mersenne 21039 − 1). Ciononostante le
chiavi di 1024 bit di RSA sono ancora sicure in quanto lo SNFS non è general purpose, ma può
fattorizzare solo numeri di una particolare forma.
Questo algoritmo comunque da una buona idea di quali sono i numeri attaccabili in un
futuro prossimo con lo GNFS.
Come sviluppi futuri, sono già noti algoritmi per computer quantistici, che dovrebbero
far finalmente diventare polinomiale la fattorizzazione. Purtroppo la costruzione
21
di tali macchine è ancora un problema aperto e forse ancora per molto tempo la ricerca proseguir`a
sui tradizionali computer binari. Comunque è molto interessante vedere come l’evoluzione tecnologica
ed algoritmica riescano a risolvere problemi prima ritenuti largamente inattaccabili. In particolare
questo problema mostra anche come gli algoritmi sono ’figli’ del tempo in cui sono nati: gli attuali
algoritmi di fattorizzazione sono nati in modo da essere facilmente distribuibili su più macchine, usare
operazioni su interi che sono più performanti sulle attuali macchine e così via.”…
L’evidenza in rosso è nostra, per evidenziare il rischio per la
crittografia RSA, e il rimedio messo in atto (passaggio a chiavi di
2048 bits per il 2014.
Nota 1 sul ritiro dei premi per la fattorizzazione di Numeri RSA, forse
anche per scoraggiare ricerche in questo campo e quindi potenzialmente
rischiose per la crittografia RSA
“RSA Factoring Challenge
Da Wikipedia, l'enciclopedia libera.
Lo RSA Factoring Challenge fu una sfida proposta da RSA Laboratories dal 18 marzo 1991 per
incoraggiare la ricerca nel campo della teoria dei numeri computazionale, in particolare nella
fattorizzazione di grandi numeri naturali. Fu pubblicata una lista di semiprimi (numeri che hanno
esattamente due fattori primi) conosciuti come numeri RSA, con un premio in denaro per chi fosse
riuscito a fattorizzarli. Il più piccolo di questi, un numero con 100 cifre decimali chiamato RSA-100,
fu fattorizzato in pochi giorni, ma molti dei numeri più grossi non sono stati ancora fattorizzati, e ci
si aspetta che rimarranno tali ancora per un tempo relativamente lungo.
Il concorso finì nel 2007.[1] Secondo la RSA "Ora che l'industria ha una comprensione molto più
avanzata della forza crittanalitica dei comuni algoritmi a chiave simmetrica e a chiave pubblica,
queste sfide non saranno più attive."[2]
Questa sfida ha lo scopo di sondare lo "stato dell'arte" nella fattorizzazione di interi. Una primaria
applicazione è la scelta della lunghezza della chiave per l'algoritmo RSA di crittografia a chiave
pubblica; infatti, i risultati sulla fattorizzazione di questi numeri aiutano a capire quali dimensioni
delle chiavi sono ancora sicure e per quanto tempo. Dato che RSA Laboratories produce prodotti
basati sull'algoritmo RSA, questa sfida fu lanciata per spingere la comunità scientifica ad affrontare
il problema della fattorizzazione di semiprimi grandi, con l'obiettivo di provare la sicurezza di tale
algoritmo.
I primi numeri RSA generati, dal RSA-100 al RSA-500, furono chiamati in accordo con il numero
di cifre decimali; tuttavia, in seguito, dal numero RSA-576, si contò il numero di cifre binarie.
Un'eccezione è per il numero RSA-617, che fu creato prima del cambiamento nel sistema di
numerazione…..
22
Matematica[modifica]
Sia n un numero RSA. Esistono e sono unici due numeri primi p e q tali che
n = pq.
Il problema è trovare questi due numeri primi, conoscendo solo n.
Premi e annotazioni[modifica]
La seguente tabella fornisce una visione dei numeri RSA. Il concorso è terminato nel 2007.[3]
Il numero con cui sono catalogati i numeri RSA su sfondo rosa è espresso in base 10,
mentre su sfondo giallo è espresso in base 2.
Numero
RSA
Cifre
decimali
Cifre
binarie
Premio
offerto
Data
fattorizzazione
Fattorizzato da
RSA-100
100
330
Aprile 1991
Arjen K. Lenstra
RSA-110
110
364
Aprile 1992
Arjen K. Lenstra e M.S.
Manasse
RSA-120
120
397
Giugno 1993
T. Denny et al.
RSA-129
129
426
RSA-130
130
430
10 aprile 1996
Arjen K. Lenstra et al.
RSA-140
140
463
2 febbraio 1999
Herman J. J. te Riele et al.
RSA150[4]
150
496
16 aprile 2004
Kazumaro Aoki et al.
RSA-155
155
512
22 agosto 1999
Herman J. J. te Riele et al.
RSA-160
160
530
1º aprile 2003
Jens Franke et al., Università di
Bonn
$100 USD Aprile 1994
23
Arjen K. Lenstra et al.
RSA-170
170
563
29 dicembre 2009 D. Bonenberger and M. Krone
RSA-576
174
576
RSA-180
180
596
RSA-190
190
629
RSA-640
193
640
RSA-200
200
663
RSA-210
210
696
RSA-704
212
704
RSA-220
220
729
non ancora fattorizzato
RSA-230
230
762
non ancora fattorizzato
RSA-232
232
768
non ancora fattorizzato
RSA-768
232
768
RSA-240
240
795
non ancora fattorizzato
RSA-250
250
829
non ancora fattorizzato
$10,000
USD
3 dicembre, 2003
Jens Franke et al., Università di
Bonn
8 maggio 2010
S. A. Danilov and I. A.
Popovyan, Università statale di
Mosca
non ancora fattorizzato
$20,000
USD
Novembre, 2005
Jens Franke et al., Università di
Bonn
9 maggio 2005
Jens Franke et al., Università di
Bonn
non ancora fattorizzato
$30,000
USD
$50,000
USD[5]
non ancora fattorizzato, premio ritirato
12 dicembre 2009 Thorsten Kleinjung et al.
24
RSA-260
260
862
non ancora fattorizzato
RSA-270
270
895
non ancora fattorizzato
RSA-896
270
896
RSA-280
280
928
non ancora fattorizzato
RSA-290
290
962
non ancora fattorizzato
RSA-300
300
995
non ancora fattorizzato
RSA-309
309
1024
non ancora fattorizzato
RSA-1024 309
1024
RSA-310
310
1028
non ancora fattorizzato
RSA-320
320
1061
non ancora fattorizzato
RSA-330
330
1094
non ancora fattorizzato
RSA-340
340
1128
non ancora fattorizzato
RSA-350
350
1161
non ancora fattorizzato
RSA-360
360
1194
non ancora fattorizzato
RSA-370
370
1227
non ancora fattorizzato
$75,000
USD
non ancora fattorizzato, premio ritirato
$100,000
USD
non ancora fattorizzato, premio ritirato
25
RSA-380
380
1261
non ancora fattorizzato
RSA-390
390
1294
non ancora fattorizzato
RSA-400
400
1327
non ancora fattorizzato
RSA-410
410
1360
non ancora fattorizzato
RSA-420
420
1393
non ancora fattorizzato
RSA-430
430
1427
non ancora fattorizzato
RSA-440
440
1460
non ancora fattorizzato
RSA-450
450
1493
non ancora fattorizzato
RSA-460
460
1536
non ancora fattorizzato
RSA-1536 463
1536
RSA-470
470
1559
non ancora fattorizzato
RSA-480
480
1593
non ancora fattorizzato
RSA-490
490
1626
non ancora fattorizzato
RSA-500
500
1659
non ancora fattorizzato
RSA-617
617
2048
non ancora fattorizzato
RSA-2048 617
2048
$150,000
USD
non ancora fattorizzato, premio ritirato
non ancora fattorizzato, premio ritirato
$200,000
26
USD
“
Sul numero RSA – 2048 abbiamo già elaborato una nostra previsione
sulla probabile entità di p, vedi Rif. 7; e sul numero RSA - 190 , già
fattorizzato, abbiamo ottenuto una buona previsione, Rif.4 (anche se
nella lista di cui sopra risulta ancora non fattorizzato, si invece alla
voce RSA Numbers di Wikipedia:
“RSA-190
RSA-190 has 190 decimal digits (629 bits), and was factored by I. A. Popovyan from Moscow
State University, Russia and A. Timofeev from CWI, Netherlands.[22]
RSA-190 =
1907556405060696491061450432646028861081179759533184460647975622318915025587
1841757540549761551215932934922604641526300932385092466032074171247261215808
58185985938946945490481721756401423481
RSA-190 =
31711952576901527094851712897404759298051473160294503277847619278327936427981256
542415724309619
×
60152600204445616415876416855266761832435433594718110725997638280836157040460481
625355619404899 “
L’evidenza in rosso è nostra: per p avevamo previsto le due cifre iniziali
comprese tra 21 e 32, in realtà si sono trovate le due cifre 31…
Con la nostra successiva congettura forte,, p ≈ 2n/3 avremmo potuto ora
portare la previsione per le prime due cifre a 29 …,(numero minimo)
molto più vicine a 31…, essendo n = √1907… = 43…e quindi 43*2/3 =
29,11 = 29… seguite da altre 93 cifre. Si sarebbero evitati tutti i tentativi di
trovare p prima di 29… , e quindi almeno il 67% dei tempi di calcolo.
31 è infatti il 72% di n = 43…
Per RSA -2048 prevediamo, allo stesso modo , un numero p reale non
inferiore a quello stimato , come minimo, a 105… seguito da 306 cifre
(617+1)/2= 309, meno le tre di 105 ).
FINE
27
Scarica