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