I Numeri Primi e la Sicurezza Informatica Siamo Sicuri? Alessandro Gencarelli [email protected] Bologna, 13 Febbraio 2007 1 Il gioco a premi Conduttore: La domanda da 1.000.000 di euro. Quanti sono i numeri primi in un dado da gioco a 6 facce? Concorrente: 4! Conduttore: Mi dispiace, non è la risposta corretta! Concorrente: Come no, il numero 1 è solo divisibile per sé stesso e per 1, il 2, il 3 e il 5 per sé stessi e per 1 Notaio: La risposta corretta è 3! 2 Perché il numero 1 non è primo? Fino al 1800-1850 (il periodo di Gauss) la definizione di un numero primo comprendeva anche l’unità. La nuova definizione prendeva corpo sulla base del concetto che i numeri primi erano e sono i mattoni principali per la costruzione di tutti i numeri interi. Il numero 1, l’unicità, non racchiude nella sua essenza nessuna informazione utile per la costruzione di altri numeri. 15 = 5 x 3 15 = 5 x 3 x 1 3 Perché i numeri primi sono importanti? Sono gli atomi dell’aritmetica e le fondamenta della teoria dei numeri ¾L'insieme dei numeri primi è un sottoinsieme dei numeri naturali. ¾Un numero primo è un numero naturale divisibile unicamente per sé stesso e per l'unità e diverso, per convenzione, dall'unità. Detto in altro modo, deve avere esattamente due divisori distinti. 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47; 53; 59; 61; 67; 71; 73; 79; 83; 89; 97; 101; 103; 107; 109; 113; 127; 131; 137; 139; 149; 151; 157; 163; 167; 173; 179; 181; 191; 193; 197; 199; 211; 223; 227; 229; 233; 239; 241; 251; 257; 263; 269; 271; 277; 281; 283; 293; 307; 311; 313; 317; 331; 337; 347; 349; 353; 359; 367; 373; 379; 383; 389; 397; 401; 409; 419; 421; 431; 433; 439; 443; 449; 457; 461; 463; 467; 479; 487; 491; 499 4 Decomposizione in fattori primi Qualsiasi numero può essere scomposto in fattori primi, e tale scomposizione è unica. L'importanza dei numeri primi in matematica è enorme e deriva essenzialmente dal teorema fondamentale dell'aritmetica, Ad esempio, ogni altra fattorizzazione di 23244 in numeri primi è ottenuta da questa permutando i fattori. Questa è tra l'altro la ragione per cui convenzionalmente si esclude 1 dall'insieme dei numeri primi: l'unicità della scomposizione in fattori viene considerata sufficientemente importante da prevalere sulla definizione "ingenua". 5 La magia dei numeri primi in Natura La Magicicada Septedecim è una cicala periodica il cui “numero magico” è il 17 o il 13 > Le specie della Magicicada sono 7, 3 hanno il ciclo vitale basato sul 17, le altre 4 lo hanno basato sul 13. Perché? > I predatori naturali hanno cicli di 2,3,4,6 anni, per cui rifugiarsi in un numero primo rende la probabilità che le due specie si “incontrino” molto bassa 6 Il primo grande Teorema: Euclide I numeri primi sono infiniti! Euclide (Ευκλείδης), nato ad Alessandria d'Egitto intorno al 365 a.C. e morto intorno al 275 a.C., fu un matematico greco. un qualunque insieme di numeri primi p1,p2,...,pn, e costruisce un numero primo diverso da tutti i pi. q = p1. p2 . … . pn + 1 che potrà essere o non essere primo. Se q è primo, la dimostrazione è terminata; altrimenti esso dovrà avere un divisore d. Per costruzione, però, d non può essere nessuno dei pi; infatti la divisione d / pi dà sempre 1 come resto. Pertanto, d è l'ulteriore numero primo cercato. 7 Le domande 1. Dato un numero p scelto a caso come faccio a sapere se è primo oppure no? 2. Quanti sono i numeri primi inferiori a un numero N? 3. Qual è la legge che governa la distribuzione dei numeri primi? 4. Esiste un metodo di fattorizzazione in numeri primi computazionalmente veloce? 8 Test di Primalità: il crivello di Eratostene Il più antico è sicuramente il crivello di Eratostene, noto già in epoca classica, ma computazionalmente molto costoso. Si scrivono tutti i naturali a partire da 2 fino n in un elenco detto setaccio. Poi si cancellano (setacciano) tutti i multipli del primo numero del setaccio (escluso lui stesso). Si prosegue così fino ad arrivare in fondo. I numeri che restano sono i numeri primi minori o uguali a n. 9 Test di Primalità: il modello probabilistico Più rapido è verificare se un numero è primo o no, anche se i test di primalità più efficienti utilizzati (test con curve ellittiche ECPP) sono statistici e non danno una certezza assoluta: tuttavia l'errore dei test può essere reso piccolo a piacere. Nel 1992 Adleman e Huang, modificando l'algoritmo di Goldwasser Kilian, mostrarono come la verifica di primalità (solitamente detta PRIMES, in inglese) appartenga alla classe NP. Nel 2002 Agrawal, Kayal e Saxena fornirono un algoritmo deterministico polinomiale per PRIMES, noto come algoritmo AKS, di complessità O(log(N)12), che si riduce a O(log(N)6) se vale la congettura di Sophie Germaine. 10 Gauss: la nuova prospettiva «Quando le cose iniziano a complicarsi è forse venuto il momento di fermarsi e chiedersi: mi sono fatto la domanda giusta?» (Enrico Bombieri) Gauss è nato nel 1777 da una famiglia piccolo borghese a Brunswick. Già nel 1792 a 15 anni iniziò ad avere la passione per i numeri primi e i logaritmi. ¾ Contare i numeri primi: Gauss cambiò la domanda. Invece di chiedersi: “Qual è il numero primo successivo?” si domandò: “Quanti sono i numeri primi minori inferiori a numero N?” 11 Gauss: contare i numeri primi La tabella esprime il numero di primi inferiori ad N. Nella prima colonna sono espressi gli intervalli. Nella seconda il numero di primi Nella terza la probabilità che scelto a caso un numero nell’intervallo, questo sia primo. N Numero di primi da 1 a N Pprobabilità tra 1 e N 10 4 2.5 100 25 4.0 1,000 168 6.0 10,000 1,229 8.1 100,000 9,592 10.4 1,000,000 78,498 12.7 10,000,000 664,579 15.0 100,000,000 5,761,455 17.4 1,000,000,000 50,847,534 19.7 10,000,000,000 455,052,511 22.0 12 Gauss: la scala dei primi Si può disegnare la distribuzione dei numeri primi tra 1 e 100. L’altezza sopra ogni numero nell’asse orizzontale esprime il numero di primi nell’intervallo. ¾ La funzione di Gauss: Gauss si chiese se fosse possibile trovare una funzione che potesse esprimere la distribuzione dei numeri primi. “Qual è l’elemento che regola la distribuzione dei numeri primi?” “Esiste una relazione nella probabilità di ‘incontrare’ un numero primo in un certo intervallo?” 13 Gauss: la probabilità dei numeri primi N Numero di primi nell’intervallo tra 1eN Probabilità 10 4 2.5 100 25 4.0 1,000 168 6.0 Ogni volta che si moltiplica N per 10 la probabilità cresce di circa 2,3. 10,000 1,229 8.1 100,000 9,592 10.4 1,000,000 78,498 12.7 = 10.4+2.3 Superato l’intervallo N=100.000 tale misura si attesta su il numero 2,3. 10,000,000 664,579 15.0 = 12.7+2.3 100,000,000 5,761,455 17.4 = 15.0+2.3 1,000,000,000 50,847,534 19.7 = 17.4+2.3 10,000,000,000 455,052,511 22.0 = 19.7+2.3 Gauss intuì che la Natura sceglieva i numeri primi in maniera probabilistica (3 colonna). 14 Gauss: il teorema dei numeri primi Gauss si accorse che utilizzando il logaritmo naturale di 10 otteneva il numero tanto cercato. Il passaggio fu lampante, il numero di primi minori o uguali a x, è governato dalla funzione: 15 Gauss: stima dell’errore Quanto la funzione di Gauss è andata vicino alla distribuzione dei numeri primi? Nella 3 colonna è espresso il discostamento. Nella 4 colonna la percentuale dell’errore che diminuisce all’aumentare di N. N Numero di primi 100 (N) N/ln(N)- (N) Percentuale errore 25 5 20 1,000 168 10 5.95 10,000 1,229 17 1.38 100,000 9,592 38 0.396 1,000,000 78,498 130 0.166 107 664,579 339 0.051 108 5,761,455 754 0.0131 109 50,847,534 1,701 0.00335 1010 455,052,511 3,104 0.000682 1011 4,118,054,813 11,588 0.000281 1012 37,607,912,018 38,263 0.000102 1013 346,065,536,839 108,971 0.0000299 1014 3,204,941,750,802 314,890 0.00000983 1015 29,844,570,422,669 1,052,619 0.00000353 1016 279,238,341,033,925 3,214,632 0.00000115 16 Gauss: la funzione Quanto la funzione di Gauss è andata vicino alla distribuzione dei numeri primi? Nel primo grafico la funzione con N=100 Nel secondo grafico la funzione con N=500 La funzione di Gauss stima la distribuzione dei numeri primi. 17 Pitagora: tra musica e matematica Pitagora scoprì la relazione tra musica e matematica. Individuò la serie armonica: Ogni nota ha una relazione armonica con tutte le altre note. Il nostro organismo sembra riconoscere la bellezza delle armoniche rappresentate dalle frazioni 1, 1/2, 1/3…. Grazie alle armoniche esiste una differenza tra il suono di un violino e quello di un clarinetto 18 Fourier: il suono visibile Fourier Scoprì che tutti suoni di qualsiasi strumento possono essere ricreati dalle onde sinusoidali create dai diapason 19 Riemann: la congettura Riemann è stato uno studente di Gauss. Ha vissuto a Gottingen, una piccola città universitaria tedesca. Si è reso famoso per l’omonima congettura sui numeri primi: la congettura di Reimann che rimane ad oggi un problema irrisolto Nella generalizzazione della serie armonica, definita funzione zeta: Trova il legame magico tra musica e numeri primi, tra le onde sinusoidali e la legge di distribuzione dei numeri primi. 20 Riemann: il paesaggio zeta Applicando la funzione zeta anche nel campo dei numeri complessi riesce a definire un paesaggio quadridimensionale La grande intuzione è che: L'andamento della funzione zeta (ed in particolare la distribuzione dei suoi zeri) risulta quindi legato alla distribuzione dei numeri primi immersi nell'insieme dei numeri naturali. 21 Riemann: la stima insufficiente La stima di Riemann migliorava di molto la stima effettuata da Gauss, ma ancora l’errore persisteva. Riemann era convinto che tale errore poteva essere eliminato…. Aveva ragione! N Numero di primi (N) Sovrastima funzione di Gauss Sovrastima funzione di Reimann 100 25 5 1 1,000 168 10 0 10,000 1,229 17 -2 100,000 9,592 38 -5 1,000,000 78,498 130 29 107 664,579 339 88 108 5,761,455 754 97 109 50,847,534 1,701 -79 1010 455,052,511 3,104 -1.828 1011 4,118,054,813 11,588 -2.318 1012 37,607,912,018 38,263 -1.476 1013 346,065,536,839 108,971 -5.773 1014 3,204,941,750,802 314,890 -19.200 1015 29,844,570,422,669 1,052,619 73.218 1016 279,238,341,033,925 3,214,632 327.052 22 Riemann: la musica dei numeri primi Riemann trovò il modo di eliminare gli errori aggiungendo le armoniche definite dalla funzione zeta nei punti al livello del mare (negli zeri). Ogni onda sinusoidale aggiunta riesce a “smussare” la funzione di Gauss e avvicinarla alla distribuzione reale dei numeri primi. 23 La musica dei numeri primi ¾ La musica dei primi 785 numeri primi: Definito in 4 ottave, tra tutti i primi gemelli sono stati inserite delle pause. Tutte le note sono determinate da p mod (29), dove p è un numero primo. La melodia è in Do maggiore 24 Rompere i numeri = rompere i codici? L'algoritmo RSA è stato descritto nel 1977 da Ron Rivest, Adi Shamir e Len Adleman al MIT. ¾ Nel 1983 l'algoritmo fu brevettato negli Stati Uniti dal MIT (brevetto 4.405.829). Il brevetto è scaduto il 21 settembre 2000. RSA è basato sul problema complesso della fattorizzazione in numeri primi. Il suo funzionamento base è il seguente: 1. si scelgono due numeri primi, e abbastanza grandi da garantire sicurezza 2. si calcola il loro prodotto , chiamato modulo (dato che tutta l'aritmetica seguente è modulo n) 3. si sceglie poi un numero (chiamato esponente pubblico), più piccolo e coprimo di 4. si calcola il numero (chiamato esponente privato) tale che 25 Rompere i numeri = rompere i codici? Per rompere RSA occorre riuscire a trovare un metodo computazionalmente veloce per risolvere le seguenti fattorizzazioni 15 = p x q 126619= p x q 31074182404900437213507500358885679300373460228427 27545720161948823206440518081504556346829671723286 78243791627283803341547107310850191954852900733772 4822783525742386454014691736602477652346609= p x q Se riuscite a fattorizzare l’ultima vincete 20.000 dollari! 26 Come rompere i numeri? Quali sono i modi possibili per fattorizzare un numero in fattori primi: (1) Dividere i numeri uno dietro l’altro finché non si trovano i fattori primi. È un po’ lento! (2) Il metodo di fattorizzazione di Fermat. Se i numeri primi sono vicini il metodo è molto veloce. (3) Il metodo di Sieve: È molto complesso ma non ancora abbastanza veloce. (4) La dimostrazione della congettura di Riemann will produrrà un metodo veloce per la fattorizzazione. (5) L’invenzione dei computer quantistici permetterà di fattorizzare numeri grandi in pochi secondi. Un computer quantistico può effettuare simultaneamente tutte le operazioni del metodo (1). 27 La Sicurezza Assoluta «È veramente da mettere in dubbio che l'intelligenza umana possa creare un cifrario che poi l'ingegno umano non riesca a decifrare con l'applicazione necessaria» (Edgar Allan Poe) ¾ Cifrario di Vernam: è un sistema crittografico dove la chiave è lunga quanto il testo e non riutilizzabile ("One Time Pad“). Il cifrario di Vernam è l'unico sistema crittografico la cui sicurezza è comprovata da una dimostrazione matematica. Testo in chiaro: C I A O Chiave: AJRF -------------------------------Testo cifrato: C R R T 28