slide1
Download
Skip this Video
Download Presentation
Aspetti algoritmici connessi alla sicurezza nei sistemi informatici distribuiti

Loading in 2 Seconds...

play fullscreen
1 / 47

Aspetti algoritmici connessi alla sicurezza nei sistemi informatici distribuiti - PowerPoint PPT Presentation


  • 121 Views
  • Uploaded on

Aspetti algoritmici connessi alla sicurezza nei sistemi informatici distribuiti. Testo consigliato. Crittografia , P. Ferragina e F. Luccio, Ed. Bollati Boringhieri, € 16. Sommario. Introduzione computer security vs network security attacchi, meccanismi di sicurezza

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Aspetti algoritmici connessi alla sicurezza nei sistemi informatici distribuiti' - finn-potts


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
testo consigliato
Testo consigliato
  • Crittografia, P. Ferragina e F. Luccio, Ed. Bollati Boringhieri, € 16.
sommario
Sommario
  • Introduzione
    • computer security vs network security
    • attacchi, meccanismi di sicurezza
  • Cenni di crittografia
    • Crittografia a chiave privata
    • Crittografia a chiave pubblica
  • Applicazioni di network security (??)
    • servizi di autenticazione (firma digitale)
computer security vs network security
Computer security vsnetwork security
  • Computer security: misure per proteggere le informazioni di un calcolatore
  • Network security: misure per proteggere lo scambio di informazioni durante la loro trasmissione
network security
Network security
  • L’era di Internet…
    • Informazioni distribuite
    • Posta elettronica
    • Commercio elettronico
    • Transazioni finanziarie
  • …e le nuove problematiche di sicurezza
    • sicurezza delle reti locali
      • da attacchi esterni
      • da impiegati infedeli
    • sicurezza delle applicazioni (e-mail, http, ftp,…)
problemi base
Problemi base
  • Le reti sono insicure perché molte delle comunicazioni avvengono in chiaro
  • Spesso non c’è autenticazione dei server, ma solo (e non sempre) degli utenti
  • Le connessioni non avvengono tramite linee punto-punto ma
    • attraverso linee condivise
    • tramite router di terzi
sicurezza dei dati paradigmi
Sicurezza dei dati: paradigmi
  • Segretezza: evitare che i dati inviati da un soggetto A a un soggetto B vengano compresi da un terzo soggetto C.
  • Autenticazione: verificare l’identità di chi manda o riceve i dati.
  • Integrità: essere sicuri che i dati ricevuti siano uguali a quelli inviati.
  • Non ripudio: evitare che chi manda dei dati possa in futuro negare di averli mandati (firma digitale).
meccanismi di sicurezza
Meccanismi di sicurezza
  • Esiste una grande varietà di meccanismi atti a garantire la sicurezza dei dati, quasi tutti basati su tecniche crittografiche
  • La crittografia (dal greco kryptos, nascosto, e graphein, scrivere) è la disciplina che si occupa dello studio delle scritture “segrete”.
cenni storici
Cenni storici
  • La crittografiaè una scienza antichissima utilizzata nell’antichità per nascondere il contenuto di messaggi scritti.
  • La crittografia conobbe un enorme sviluppo durante la Seconda Guerra Mondiale, quando il matematico inglese Alan Turing formalizzò la teoria necessaria per decrittare il crittosistema tedesco Enigma.
  • Nel 1949 Shannon pubblicò un articolo che diede l’inizio a quella che oggi viene chiamata la Teoria dell’Informazione, che assieme alla Teoria della Probabilità, la Teoria della Complessità e la Teoria dei Numerigettò le basi della Crittografia Moderna.
crittosistema
Crittosistema

Def.: Un crittosistema (o cifrario)è una quintupla (M,C,K,Cod,Dec), dove,

  • M: insieme finito dei testi in chiaro
  • C: insieme finito dei testi cifrati
  • K: insieme delle possibili chiavi
  • Cod: MK→C funzione di cifratura (iniettiva e invertibile)
  • Dec: CK→M funzione di decifratura

Se Cod e Dec utilizzano la stessa chiave per cifrare e decifrare un dato testo, allora si parla di crittosistema simmetrico, altrimenti di crittosistema asimmetrico.

garantire la segretezza
Garantire la segretezza

Principio di Kerckhoffs: “La sicurezza di un sistema crittografico deve essere basata esclusivamente sulla inespugnabilità della chiave (gli algoritmi di cifratura e decifratura devono essere considerati noti, e il testo cifrato in transito deve essere considerato pienamente leggibile).”

algoritmi a chiave simmetrica
Algoritmi a chiave simmetrica
  • Chiave simmetrica: i due soggetti (A e B) usano la stessa chiave K per codificare e decodificare i dati.
  • Gli algoritmi di crittografia sono pubblici  la chiave simmetrica deve essere segreta  il principale problema è lo scambio della chiave!
il problema della trasmissione della chiave
Il problema della trasmissione della chiave
  • Volendo utilizzare un cifrario simmetrico per proteggere le informazioni tra due interlocutori come posso scambiare la chiave segreta?
  • Devo utilizzare una canale sicuro di comunicazione (oppure A e B devono essersi preventivamente accordati)
un primo esempio di cifrario a chiave simmetrica il cifrario di cesare
Un primo esempio di cifrario a chiave simmetrica: il cifrario di Cesare
  • Consideriamo l’alfabeto italiano, e costruiamo un cifrario che sostituisce ad ogni lettera di questo alfabeto la lettera che si trova 3 posizioni in avanti.
  • Ad esempio il testo in chiaro “algoritmi distribuiti” viene cifrato nel crittogramma “dolrunzpn gnvzuneanzn”.
  • Anche se la chiave rimane segreta, è facilmente attaccabile tramite approcci statistici.
la crittoanalisi statistica
La crittoanalisi statistica
  • Tramite l’utilizzo di tecniche statistiche sulla frequenze dei caratteri o sottostringhe del testo cifrato si ottengono informazioni utili sul testo in chiaro.
crittoanalisi del cifrario di cesare
Crittoanalisi del cifrario di Cesare
  • Il cifrario di Cesare, come la maggior parte dei cifrari storici basati tu trasposizioni e traslazioni, può essere facilmente violato utilizzando tecniche statistiche (crittoanalisi statistica).
    • Si analizzano le frequenze relative dei caratteri nel testo cifrato e le si confrontano con quelle di una lingua conosciuta, ad esempio l\'italiano.
    • Con queste informazioni si ottiene un’ottima approssimazione del testo in chiaro

NOTA: Il cifrario di Cesare può essere facilmente violato anche con un approccio esaustivo: basta testare le 21 possibili traslazioni (i.e., chiavi) fino ad ottenere un testo comprensibile!

cifrari perfetti
Cifrari perfetti
  • Un crittosistema si dice perfetto se il testo in chiaro e quello cifrato sono statisticamente indipendenti.
  • Formalmente, definiamo un cifrario perfetto come segue: la comunicazione tra A e B è vista come un processo stocastico (cioè variabile in modo aleatorio nel tempo) in cui:
    • P(m): probabilità che il messaggio spedito sia m;
    • P(m|c): probabilità che il messaggio spedito sia m avendo visto transitare il messaggio cifrato c;

Def.: Un cifrario è perfetto se per ogni mM e per ogni cC vale la relazione:

P(m|c) = P(m).

due cifrari molto imperfetti
Due cifrari molto imperfetti
  • Supponiamo che P(m)=p, 0<p<1, e che P(m|c)=0≠p; allora, un crittoanalista che vede transitare c, è in grado di dedurre che il messaggio spedito non può essere m!
  • Supponiamo adesso che P(m)=p, 0<p<1, e che P(m|c)=1≠p; allora, un crittoanalista che vede transitare c, è in grado di dedurre che il messaggio spedito corrisponde ad m!
  • In tutti i casi intermedi in cui P(m|c)≠p, il crittoanalista può fare delle deduzioni osservando i messaggi cifrati in transito!
impraticabilit dei cifrari perfetti
Impraticabilità dei cifrari perfetti

Teorema (Shannon): condizione necessaria affinché un crittosistema sia perfetto è che |K|≥|M|.

Dim.: Osserviamo che |M|≤|C|. Se per assurdo fosse |K|<|M|, allora |K|<|C|. Sia m un messaggio arbitrario t.c. P(m)=p≠0. Allora, da esso possono essere generati al più |K| messaggi cifrati (uno per ogni chiave). Ne consegue che esiste almeno un messaggio cifrato c* che non è immagine di m, ovvero:

P(m|c*)=0≠p=P(m)

contro l’ipotesi di perfezione. □

un cifrario simmetrico perfetto
Un cifrario (simmetrico) perfetto
  • One-time pad (G. Verman, AT&T, 1917):
    • Si costruisce una grande chiave casualek nota ad A e B (e non pseudocasuale…questo impedisce l’uso di generatori algoritmici, e impone lo scambio della chiave!), ad esempio utilizzando un rivelatore di raggi cosmici
    • Il testo cifrato è costruito tramite uno XOR bit a bit (ricorda: 10=01=0; 11=00=1) fra il messaggio in chiaro m e la chiave casuale k c=mk
    • B ricostruisce m=ck (infatti xyy=x)
    • La chiave non deve mai essere riutilizzata (one-time pad).
one time pad perfetto
One-time pad è perfetto!

Dobbiamo mostrare che P(m|c)=P(m). Siano m e c di n bit; dal Teorema di Bayes si ha:

P(m|c)=P(m∩c)/P(c)

dove P(m∩c) è la probabilità che A abbia generato il messaggio m e lo abbia cifrato come c; allora

P(m∩c)=P(m∩c=mk)=P(m)P(c=mk)=P(m)2-n

mentre:

P(c)=∑m P(m∩c)= ∑m P(m)2-n=2-n ∑m P(m)=2-n

P(m|c)=P(m)2-n/2-n=P(m). □

indipendenza statistica di m e c

one time pad solo teoricamente perfetto
One-time pad è solo teoricamente perfetto…
  • In pratica, come fanno A e B a scambiarsi la chiave k?
  • La soluzione è accordarsi preventivamente su una supersequenza di bit casuali, da consumare a mano a mano che ci si scambiano messaggi…bisognerà solo specificare la porzione della supersequenza da usare di volta in volta.
  • La supersequenza va trasferita a priori con metodi tradizionali (messaggero…)
  • La linea rossa Cremlino-Casa Bianca è secretata (si dice…) con il metodo one-time pad!
dalla perfezione alla realt
Dalla perfezione alla realtà…
  • A fronte dei cifrari perfetti (ovvero dimostrabilmente sicuri ma praticamente inutilizzabili) esistono anche cifrari:
    • Computazionalmente sicuri – Il problema crittoanalitico (ovvero di decrittazione di un testo cifrato senza conoscere la chiave) è computazionalmente intrattabile.
    • Probabilisticamente sicuri – Sono cifrari di cui è stata dimostrata l’inattaccabilità, a patto che non si verifichino alcuni eventi improbabili.
  • Tutti i cifrari moderni realmente utilizzati appartengono alla classe dei computazionalmente sicuri.
lo stato dell arte dei cifrari simmetrici imperfetti rijndael
Lo stato dell’arte dei cifrari simmetrici imperfetti: Rijndael
  • Sviluppato da Joan Daemen e Vincent Rijmen, ha vinto la selezione per l’Advanced Encryption Standard (AES) nel 2000. Ufficialmente il Rijndael è diventato lo standard per la cifratura del XXI secolo a chiavi simmetriche.
  • Il cifrario utilizza chiavi di lunghezza variabile a 128, 192, 256 bit (generate da un gestore esterno), ed una rete di “confusione del messaggio”, in cui si eseguono molteplici operazioni (circa 10) di trasposizione, xoring e sostituzione di blocchi di messaggio di lunghezza pari a quella della chiave.
i limiti dei metodi a chiave simmetrica
I limiti dei metodi a chiave simmetrica
  • Un canale sicuro di comunicazione per scambiarsi la chiave segreta esiste veramente nella realtà? E se esistesse, perché ricorrere alla crittografia???
  • Inoltre, per una comunicazione sicura tra n utenti, si dovranno scambiare in tutto (n-1)*n/2 chiavi, ad esempio con 100 utenti occorreranno 4950 chiavi!
algoritmi a chiave asimmetrica
Algoritmi a chiave asimmetrica
  • Chiave Pubblica/Privata: Ogni soggetto Sha
    • una propria chiave pubblica Kpub(S), nota a tutti;
    • una propria chiave privata Kpriv(S)nota solo a lui.
  • I requisiti che un algoritmo a chiave pubblica deve soddisfare sono:
    • i dati codificati con una delle chiavi possono essere decodificati solo con l’altra;
    • la chiave privata non deve mai essere trasmessa in rete;
    • deve essere molto difficile ricavare una chiave dall’altra (in particolare la chiave privata da quella pubblica).
i vari scenari a chiave pubblica
I vari scenari a chiave pubblica

Primo scenario: A codifica con la chiave pubblica associata a B, il quale decodifica con la propria chiave privata: garantisce segretezza e integrità (non l’autenticità, perché tutti possono codificare, non solo A)

i vari scenari a chiave pubblica1
I vari scenari a chiave pubblica

Secondo scenario: A codifica con la propria chiave privata il messaggio da inviare a B, il quale decodifica con la chiave pubblica associata ad A: garantisce autenticità e non ripudiabilità (non la segretezza, perché tutti possono decodificare)

i vari scenari a chiave pubblica2
I vari scenari a chiave pubblica

Terzo scenario: A codifica con la chiave pubblica associata a B ed autentica (i.e., firma) con la propria chiave privata: garantisce segretezza, integrità, autenticità e non ripudiabilità!

la nascita dei sistemi pki
La nascita dei sistemi PKI
  • Dove trovo le chiavi pubbliche dei miei destinatari?
  • Creazione di “archivi di chiavi pubbliche”, i public key server.
  • Ma chi mi garantisce la corrispondenza delle chiavi pubbliche con i legittimi proprietari?
  • Nascita delle certification authority (CA) (ad esempio, in Italia per la PEC, le Poste Italiane)
  • A questo punto chi garantisce la validità delle certification authority?
  • Atto di fede!
la matematica dei sistemi a chiave pubblica
La matematica dei sistemi a chiave pubblica

Venne introdotta da Diffie e Hellman nel 1976:

  • Definizione: Una funzione f si dice one-way se per ogni x il calcolo computazionale di y=f(x) è semplice (è in P), mentre il calcolo di x=f-1(y) è computazionalmente difficile (è NP-hard).
  • Definizione: Una funzione one-way è detta trapdoor (letteralmente, cassetta delle lettere) se il calcolo x=f-1(y) può essere reso facile qualora si conoscano informazioni aggiuntive (private).

… ma purtroppo per loro, essi non furono in grado di costruire una funzione one-way trapdoor!

il cifrario rsa
Il cifrario RSA
  • Progettato nel 1977 da Ron Rivest, Adi Shamir e Leonard Adlemann, il cifrario è stato brevettato, ed è diventato di dominio pubblico solo nel 2000.
  • Idea base: Dati due numeri primi p e q (molto grandi) è facile calcolare il prodotto n=p∙q, mentre è molto difficile calcolare la fattorizzazione di n (anche se tale problema non è noto essere NP-hard).
  • I migliori algoritmi di fattorizzazione attualmente disponibili (Quadratic Sieve, Elliptic Curve Method, Euristica ρ di Pollard, ecc.) hanno tutti una complessità esponenziale dell’ordine di:
il cifrario rsa1
Il cifrario RSA
  • Per garantire la sicurezza, occorre che p e q siano almeno di 200 cifre decimali. Infatti, se p e q sono di 200 cifre decimali ciascuno, allora n è di 400 cifre, cioè dell’ordine di 10400, da cui:

≈e79≈1034

da cui l’intrattabilità computazionale.

 le chiavi sono lunghe in genere

10200 = 2200*log10  1024 bitS.

  • RSA è molto più lento degli algoritmi a chiave simmetrica, e spesso viene applicato a piccole quantità di dati, ad esempio per la trasmissione della chiave privata in un sistema simmetrico
funzionamento di rsa generazione delle chiavi
Funzionamento di RSA: generazione delle chiavi

Ricorda: xy mod z il resto della divisione intera tra x e z e tra y e z è lo stesso, ovvero x mod z = y mod z (o equivalentemente, se esiste un intero k t.c. x=y+kz)

1. Scegli due primi molto grandi p e q e calcola n =p∙q.

2. Calcola la funzione toziente di Eulero rispetto ad n, ovvero la cardinalità dell’insieme dei numeri minori di n e primi con esso:

ϕ(n)=ϕ(pq)=pq-[(q-1)+(p-1)]-1=pq-(p+q)+1=

=(p-1)(q-1)=ϕ(p)ϕ(q)

(poiché esistono q-1 multipli di p minori di n e p-1 multipli di q minori di n)

3. Scegli un numero 0<e<ϕ(n) t.c. MCD(e,ϕ(n))=1.

4. Calcola d tale che e·d1 mod ϕ(n).

5. Definisci la chiave pubblica come (e,n).

6. Definisci la chiave privata come (d,n).

funzionamento di rsa
Funzionamento di RSA

Secretazione di un messaggio

  • La funzione di cifratura di A è Cod(x)=xe mod n (con x<n), ove (e,n) è la chiave pubblica del destinatario B.
  • La funzione di decifratura di B è:

Dec(x)=Cod(x)d mod n = (xe mod n)d mod n

ove (d,n) è la chiave privata di B.

Autenticazione di un messaggio

  • La funzione di cifratura di A è Cod(x)=xd mod n (con x<n), ove (d,n) è la chiave privata di A.
  • La funzione di decifratura di B è:

Dec(x)=Cod(x) e mod n = (xd mod n) e mod n

ove (e,n) è la chiave pubblica di A.

correttezza di rsa alcuni teoremi di algebra modulare
Correttezza di RSA: alcuni teoremi di algebra modulare
  • Teorema (equazioni modulari): L’equazione axb mod n ammette soluzione se e solo se MCD(a,n) divide b. In questo caso si hanno esattamente MCD(a,n) soluzioni distinte.
    • Corollario (esistenza dell’inverso): Se a e n sono primi tra loro, allora ax1 mod n ammette esattamente una soluzione positiva minore di n, detta l’inverso di a modulo n.
  • Teorema di Eulero: Per ogni n>1, e per ogni a primo con n, si ha che aϕ(n)1 mod n.
correttezza di rsa
Correttezza di RSA
  • Si noti innanzitutto che ee ϕ(n) sono primi tra loro, e quindi dal corollario sull’esistenza dell’inverso, esiste un unico d minore di ϕ(n) tale che e∙d1 mod ϕ(n).
  • Qui sta la forza di RSA: per ricavare d da e bisogna conosce-re ϕ(n), cioè p e q, e quindi bisogna saper fattorizzare!
  • Secretazione: occorre provare che  x<n, Dec(Cod(x))=x. Ma

Dec(Cod(x))=(xemod n)dmodn=xedmod n,

quindi dobbiamo mostrare che x=xedmod n. Dimostratelo!

Distinguiamo due casi:

    • p e q non dividono x (e quindi MCD(p,x)=MCD(q,x)=1, poiché essi sono primi);
    • p (oppure q) divide x, ma q (oppure p) non divide x.

(si noti che p e q non possono entrambi dividere x, perché altrimenti si avrebbe x≥n contro le ipotesi)

slide40

Correttezza di RSA (2)

Caso 1: Abbiamo MCD(x,n)=1, quindi per il th di Eulero, risulta xϕ(n)1 mod n; poiché ed1 mod ϕ(n), si ha che ed=1+kϕ(n), per un k opportuno. Quindi, poiché x<n, si ha:

xedmod n = x1+kϕ(n)mod n = x·(xϕ(n))kmod n = x·1kmod n = x.

Caso 2: Poiché p divide x, per qualunque intero positivo k abbiamo xxk0 modp, ovvero (xk-x)0 modp. Poiché invece q non divide x, analogamente al Caso 1, abbiamo anche xedx modq, e quindi (xed-x)0 modq. Ne consegue che (xed-x) è divisibile sia perp che per q, e quindi per il loro prodotto n, da cui deriva

(xed-x)0 mod n xedx mod n xedmod n = xmod n = x.

Autenticazione: si noti che RSA gode della notevole proprietà:

Dec(Cod(x))=Cod(Dec(x)).

esempio di funzionamento di rsa
Esempio di funzionamento di RSA
  • B sceglie ad esempio p=3 e q=11.
  • Quindi n=33 e ϕ(n)=20.
  • Si può prendere e=3, poiché 3 non ha divisori comuni con 20  (3,33) è la chiave pubblica di B
  • Cerco d t.c. 3d1 mod 20. Con l’equazione 3d= 1+k·20, ponendo k=1 si trova d=7  (7,33) è la chiave privata di B
  • Per cifrare un blocco P (P<33) da inviare a B, A calcola

C:=Cod(P)=P3 mod 33

  • Per decifrare C, B calcola P=C7mod 33
  • Poiché n=33, si cifrano al più 5 bit alla volta (25<33)
  • Nella pratica, n è dell’ordine di 21024, e quindi si possono cifrare blocchi di 1024 bit, cioè blocchi di 128 caratteri ASCII (di 8 bit ciascuno).
esempio di funzionamento di rsa1
Esempio di funzionamento di RSA

Per visualizzare l’esempio precedente, supponiamo per semplicità che le 26 lettere dell’alfabeto inglese possano essere codificate con 5 bit, e quindi poiché n=33, posso cifrare un carattere alla volta

complessit computazionale di rsa
Complessità computazionale di RSA
  • Si può dimostrare che le chiavi (e quindi p,q,e,d) possono essere generate in tempo polinomiale (ovvero logaritmico nel loro valore).
  • In particolare, e viene in genere scelto prendendo un numero primo abbastanza piccolo (ad esempio, e=3).
  • Invece, d viene ricavato mediante un’estensione (polinomiale) dell’algoritmo di Euclide per il calcolo del MCD (basato sul fatto che MCD(a,b)=MCD(b,a mod b)).
  • Tuttavia, per trovare numeri primi molto grandi (cioè p e q), i test di primalità utilizzati sono tutti di tipo probabilistico, in quanto quelli deterministici sono troppo lenti (sebbene polinomiali, ma dell’ordine di O(log10n)).
  • Infine, si noti che i processi di cifratura e decifrazione possono essere eseguiti efficientemente tramite successive esponenziazioni (potenza modulare).
alla ricerca di p e q
Alla ricerca di p e q
  • Definizione (Algoritmo Monte Carlo): Un algoritmo Monte Carlo “no-biased” è un algoritmo randomizzato per la risoluzione di un dato problema di decisione, in cui la risposta “no” è sempre corretta, mentre la risposta “sì” può essere inesatta con probabilità fissata ε. Analogamente sono definiti gli algoritmi Monte Carlo “yes-biased”.
  • L’algoritmo di Miller e Rabin è un algoritmo Monte Carlo “no-biased” per testare la primalità di un numero. Esso ha una complessità di O(log3 n), e una probabilità di inesattezza ε≈1/4 (cioè se risponde SÌ, è corretto con probabilità ≈3/4).
algoritmo di miller rabin
Algoritmo di Miller-Rabin
  • E’ basato sulla seguente proprietà: per un intero n dispari, e per un qualche 2≤y≤n, poniamo y-1=2wz, con z dispari (quindi w è il max esponente consentito per 2), e definiamo i 2 predicati:

(P1): MCD(n,y)=1;

(P2): (yz mod n = 1) OR (esiste 0≤i≤w-1 t.c.y2iz mod n=-1).

Teorema:Se n è primo soddisfa entrambi i predicati, mentre se n è composto il numero di interi compresi tra 1 e n-1 che soddisfano entrambi i predicati è minore di n/4.

 Eseguiamo MR(n) un certo numero k di volte, testando ogni volta i due predicati su un intero a caso minore di n. Se l’algoritmo risponde “no” anche una sola volta il numero è sicuramente composto, mentre se risponde sempre “sì”, la probabilità che il numero sia composto è 4-k, e quindi la probabilità che il numero sia primo è:

P(primo)=1-P(composto)=1-4-k

(ad es., se k=100, si ha P≈1-10-60 ≈ 1)

algoritmo di miller rabin1
Algoritmo di Miller-Rabin

Miller-Rabin(n)

  • Set n-1=2sr con r dispari
  • For i=1 to k do

2.1 scegli a caso un intero t t.c. 2≤t≤n-2

2.2 calcola y=tr mod n

2.3 if y≠1 esegui

2.3.1 j=1

2.3.2 while ((j≤s-1) and (y≠n-1))

y:=t2jr mod n

j++

2.3.3 if y≠n-1 ritorna composto

  • Ritorna primo(w.h.p. 1-4-k)
e facile trovare numeri primi
E’ facile trovare numeri primi?
  • Nonostante l’efficienza nel testare se un numero sia primo o meno resta l’incognita se i numeri primi siano “pochi” e quindi difficili da scovare.
  • Teorema di Gauss (dei numeri primi): Sia π(n) la funzione di distribuzione dei numeri primi, cioè il numero di numeri primi che precedono n. Allora essa soddisfa il seguente:
  • Quindi se si cerca un numero primo di 100 cifre occorre verificare “solo” ln (10100) ≈ 230 numeri consecutivi.
ad