Sei sulla pagina 1di 76

Universit degli studi di Roma La Sapienza

Facolt di Scienze Statistiche

Corso di laurea in Statistica Informatica e Tecnologie Decisionali

Tesina di secondo livello:

LE CURVE ELLITTICHE IN CRITTOGRAFIA

Studente: Pietro Mercuri Matricola: 1041355

Relatore: Prof. Ludovico Piccinato

Anno Accademico 2008/2009 Seduta del 22-23/10/2009

SOMMARIO
1. INTRODUZIONE..........................................................................................................................3 1.1 PREMESSA..............................................................................................................................3 1.2 LA CRITTOGRAFIA..............................................................................................................3 1.3 LORIGINE E LEVOLUZIONE DELLA CRITTOGRAFIA...........................................4 2. CRITTOGRAFIA A CHIAVE PUBBLICA................................................................................7 2.1 INTRODUZIONE....................................................................................................................7 2.2 FIRME DIGITALI E FUNZIONI HASH..............................................................................8 2.3 LRSA........................................................................................................................................8 2.4 CRITTOSISTEMI BASATI SUL LOGARITMO DISCRETO........................................10 2.4.1 Algoritmo di Diffie-Hellman ..........................................................................................10 2.4.2 Algoritmi di El Gamal ....................................................................................................11 2.4.3 Algoritmo DSA ................................................................................................................12 3. CURVE ELLITTICHE ...............................................................................................................14 3.1 DESCRIZIONE DELLE CURVE ELLITTICHE..............................................................14 3.2 STRUTTURA DI GRUPPO..................................................................................................21 3.3 CURVE ELLITTICHE SU CAMPI FINITI .......................................................................32 3.3.1 Ordine di una curva ellittica ..........................................................................................32 3.3.2 Curve supersingolari.......................................................................................................35 3.3.3 Campi finiti primi e binari .............................................................................................36 3.3.4 Curve anomale.................................................................................................................39 4. LA CRITTOGRAFIA E LE CURVE ELLITTICHE ..............................................................40 4.1 CRITTOSISTEMI BASATI SU CURVE ELLITTICHE..................................................40 4.1.1 Diffie-Hellman su curva ellittica....................................................................................40 4.1.2 El Gamal su curva ellittica .............................................................................................41 4.1.3 Firma digitale su curva ellittica .....................................................................................43 4.1.4 Standard per la firma digitale su curva ellittica ..........................................................44 4.1.5 Curve ellittiche raccomandate dal NIST ......................................................................45 4.2 PANORAMICA SUGLI ATTACCHI A CRITTOSISTEMI ............................................53 4.2.1 Attacchi allRSA..............................................................................................................54 4.2.2 Attacco man-in-the-middle allo scambio delle chiavi di Diffie-Hellman ....................55 4.3 ATTACCHI A CRITTOSISTEMI BASATI SU CURVE ELLITTICHE .......................55 4.3.1 Attacco Pohlig-Hellman..................................................................................................56 4.3.2 Attacco Baby-step Giant-step ..........................................................................................57 4.3.3 Attacco di Pollard.......................................................................................................57 4.3.4 Attacchi a particolari curve ...........................................................................................58 4.4 ATTACCHI BASATI SU METODI STATISTICI ............................................................58 4.5 SOFTWARE PER LA CRITTOGRAFIA...........................................................................60 A. APPENDICE MATEMATICA..................................................................................................61 A.1 STRUTTUTRE ALGEBRICHE .........................................................................................61 A.2 ARITMETICA MODULARE..............................................................................................63 A.3 ALGORITMO DI EUCLIDE ..............................................................................................65 A.4 NUMERI PRIMI...................................................................................................................67 A.5 COMPLESSIT COMPUTAZIONALE...........................................................................70 BIBLIOGRAFIA..............................................................................................................................73 ABBREVIAZIONI...........................................................................................................................76

1. INTRODUZIONE

1.1 PREMESSA
Questa tesi si propone di introdurre la crittografia a chiave pubblica, focalizzando lattenzione sui metodi basati su curve ellittiche. Essa inizia con unintroduzione, in cui viene presentata la crittografia e una breve esposizione della sua evoluzione nella storia. Successivamente viene illustrata la crittografia a chiave pubblica con particolare riferimento allRSA e ai metodi legati al problema del logaritmo discreto. Vengono, poi, introdotte le curve ellittiche dal punto di vista strettamente matematico, le loro propriet generali e in particolare le curve ellittiche su campi finiti. Si passa, dunque, ai crittosistemi basati su curve ellittiche e agli standard che ne garantiscono la sicurezza, per concludere con unanalisi degli attacchi possibili ad essi, con particolare attenzione ad attacchi con metodi statistici. Infine si posta unappendice che richiama alcuni risultati dellalgebra, della teoria dei numeri e della teoria della complessit utilizzati in questo lavoro.

1.2 LA CRITTOGRAFIA
La crittografia una disciplina che nasce nellantichit con la necessit di proteggere il contenuto di taluni messaggi dagli occhi indiscreti di eventuali intercettatori che non siano gli effettivi destinatari del contenuto del messaggio in questione. I principali, e quasi esclusivi fino allavvento dellera informatica, campi dapplicazione della crittografia sono stati lambito militare e diplomatico. Linvio di un messaggio criptato si compone di un mittente, colui che ha un messaggio da inviare (spesso in letteratura indicato come Bob), del processo di cifratura, che consiste nel rendere questo messaggio non comprensibile ad eventuali estranei, dellinvio del messaggio cifrato tramite un mezzo, che pu essere la posta o letere, la decifratura del messaggio da parte del ricevente (Alice) e la lettura del messaggio originario. Il processo di decifratura avviene tramite una chiave che il destinatario gi possiede. La riuscita di un eventuale intruso (Eva) nel decrittare il messaggio dipende dalla sicurezza del sistema di cifratura, dalla bravura di Eva, da informazioni esterne eventualmente possedute e da diversi altri fattori. In opposizione alla crittografia c la crittoanalisi, che consiste nello studio dei metodi che si potrebbero utilizzare per rompere un sistema di cifratura. Un sistema di cifratura si considera rotto quando noto un algoritmo sufficientemente veloce per decrittarlo. Queste due discipline formano la crittologia. Tuttavia il termine crittografia viene comunemente usato, anche nella letteratura specializzata sullargomento, per indicare la crittologia in generale, questo giustificato dalla considerazione che non ha senso studiare un sistema di cifratura senza analizzare i possibili attacchi effettuabili su di esso da eventuali avversari interessati ad intercettare il messaggio. La crittografia su pu suddividere in due grandi categorie: la crittografia a chiave simmetrica e la crittografia a chiave asimmetrica. Nella prima la chiave di cifratura e decifratura del messaggio la stessa, quindi deve essere nota al mittente per criptare il testo e a tutti i destinatari per decifrarlo. Un noto problema di questi metodi lo scambio delle chiavi: c un canale sicuro per lo scambio delle chiavi? E se c perch non si usa per scambiarsi direttamente il messaggio? La risposta a questi interrogativi solitamente che esiste un metodo sicuro per lo scambio delle chiavi, ma lento e 3

costoso e viene, quindi, utilizzato solo per scambi di messaggi tra pochi utenti che necessitano di un livello di sicurezza molto elevato (come invio di informazioni di sicurezza nazionale). Per le esigenze delle masse nasce in alcuni settori, soprattutto informatico-commerciali, la crittografia a chiave asimmetrica, nella quale la chiave di cifratura diversa da quella di decifratura. Di questo secondo insieme di metodi fa parte la crittografia a chiave pubblica, che verr approfondita in seguito. Unaltra disciplina che si occupa di proteggere i contenuti dei messaggi tra due individui la steganografia. La crittografia molto diversa dalla steganografia: mentre la prima consiste nel codificare un messaggio in modo da renderlo incomprensibile ad un eventuale intercettatore, la seconda cerca di proteggere il messaggio nascondendolo o rendendolo non riconoscibile come tale. Ad esempio si potrebbe fingere di inviare una lettera ad un amico e scrivere sul retro il vero contenuto del messaggio con linchiostro simpatico, oppure si potrebbe far s che il vero messaggio si legga prendendo solo le lettere del testo della lettera che sono state indicate in qualche modo, ad esempio con piccoli fori che si rendono visibili mettendo la lettera davanti una fonte di luce. Una differenza importante, tra i due metodi, si ha poich mentre con la crittografia un eventuale intercettatore sa che il mittente e il ricevente hanno qualcosa da dirsi in segreto, con la steganografia questo non necessariamente evidente. Inoltre, ancora pi importante, se usando la steganografia viene scoperto il metodo di occultamento del messaggio, quel metodo non pi sicuro, mentre usando la crittografia, anche se viene scoperto il metodo di cifratura del messaggio, non detto che si sia in grado di decifrare un successivo eventuale messaggio intercettato. Ovviamente si pu effettuare prima una cifratura del messaggio e successivamente utilizzare una tecnica steganografica per aumentarne la protezione. Al giorno doggi i metodi steganografici pi usati consistono nel disperdere un file (il messaggio) in alcuni particolari pixel di unimmagine senza che limmagine subisca una sensibile riduzione della sua qualit.

1.3 LORIGINE E LEVOLUZIONE DELLA CRITTOGRAFIA


Fin dallantichit si rendeva necessario inviare e ricevere messaggi con contenuti riservati (ordini, informazioni, ecc.) con i vari reparti dellesercito, con i diplomatici e con le spie, dislocate talvolta in territori ostili, senza che, se intercettati dal nemico, fossero comprensibili ad esso. I primi metodi di cifratura (cio di codifica del messaggio) erano piuttosto semplici rispetto a quelli usati oggigiorno e non facevano uso di strumenti matematici, tuttavia, allora, erano sufficientemente sicuri. Uno dei pi noti metodi di cifratura il Cifrario di Cesare che consisteva nel sostituire ogni lettera dellalfabeto con quella che la seguiva di tre posti. Il Cifrario di Cesare un caso particolare del metodo di sostituzione che consiste, come suggerisce il nome, nel sostituire ogni lettera con unaltra dellalfabeto in questione secondo una corrispondenza prestabilita. Esempio: se si vuole criptare con il Cifrario di Cesare la parola MATEMATICA si ottiene la parola cifrata PDWHPDWLFD. Metodi successivi alla sostituzione monoalfabetica sono quelli a sostituzione polialfabetica. In essi prima si sovrappone una chiave (di solito una parola o una frase ripetuta) al messaggio, poi si prende la coppia di lettere costituita dalla lettera del messaggio e dalla sovrastante lettera della parola chiave e tramite esse si estrae da una tabella precostituita la lettera da sostituire a quella del messaggio da cifrare. Una delle pi note tabelle di sostituzione polialfabetica la tavola di Vignre

(figura 1), nella quale lintestazione delle colonne corrisponde alle lettere in chiaro e quella delle righe alle lettere della chiave. Per decifrare si ragiona in maniera inversa.

Figura 1: Tavola di Vignre.

Esempio: se si vuole criptare con la tavola di Vignre la parola CRITTOGRAFIA con la chiave GATTO, prima si sovrappone: CR I TTOGRAF I A GATTOGATTOGA e poi utilizzando la tavola si ottiene la parola IRBMHUGKTTOA. Per decifrare si sovrappone nuovamente GATTO alla parola cifrata e si utilizza la tabella in maniera inversa. Altri metodi di cifratura classici, su cui non mi soffermer, sono la trasposizione semplice e la trasposizione doppia. In essi le lettere non vengono sostituite con altri simboli ma vengono scambiate di posto in modo che non sia possibile riordinarle correttamente senza la chiave. Uno dei primi metodi crittografici che utilizza strumenti matematici il Cifrario di Hill presentato intorno al 1930, in cui il messaggio un vettore e la chiave una matrice, la decifrazione consiste nel moltiplicare la matrice inversa al vettore corrispondente al messaggio cifrato. Questo metodo, quasi certamente, non mai stato usato poich prima dellavvento dei computer in quanto se la matrice aveva dimensioni piccole era facile da decrittare e se le aveva troppo grandi era praticamente impossibile calcolarne linversa anche conoscendo la chiave; dopo la nascita dei calcolatori elettronici, invece, non risultava pi sufficientemente sicuro. A partire dal periodo della seconda guerra mondiale, in crittografia, furono protagoniste le macchine cifranti, macchinari il cui unico scopo era cifrare e decifrare i messaggi secondo diverse combinazioni di leve, rotori, pannelli e altri meccanismi. La pi nota la macchina Enigma usata dai nazisti durante la guerra, contrastata e decifrata con successo dagli inglesi grazie al noto matematico Alan Turing e al suo gruppo di lavoro. Ancora oggi vengono utilizzate macchine

cifranti, ovviamente in versioni pi evolute e complesse tanto che, in realt, sono computer dedicati esclusivamente alla crittografia ed adeguatamente schermati. Successivi ai metodi classici finora indicati sono il sistema a sopracifratura One-Time Pad e lalgoritmo DES (Data Encryption Standard). Il primo lunico metodo completamente inviolabile, in quanto consiste nel sopracifrare un messaggio con una chiave (in passato detta verme) completamente casuale, lunga quanto il messaggio stesso e utilizzata una sola volta (per questo One-Time). Si usa per criptare messaggi di testo o numerici e si dice che un cifrario perfetto perch la conoscenza del chiaro non fornisce alcuna informazione su quale sar il cifrato. Il secondo resta tuttoggi (anche se in versioni pi complesse ed elaborate come il 3DES e lAES) uno dei metodi di crittografia a chiave simmetrica pi utilizzati nel mondo ed costruito per la protezione di file. Lalgoritmo consiste, senza entrare nei dettagli, in una serie di operazioni di sostituzione, trasposizione e somma, effettuate ricorsivamente su blocchi di codice binario, che rappresentano una parte o la totalit dei file da criptare. Per maggiori approfondimenti sui precedenti metodi di cifratura si consultino [30], [35] e [36].

2. CRITTOGRAFIA A CHIAVE PUBBLICA

2.1 INTRODUZIONE
La crittografia a chiave pubblica nasce dallesigenza di risolvere diversi problemi sorti con il passare del tempo e con levolversi della tecnologia e della ricerca nel campo della crittografia. Uno dei pi significativi impulsi, probabilmente il principale, a questo ramo della disciplina fu dato dallo sviluppo dei computer e, in particolare, dalla nascita di internet. Con il diffondersi della rete e, tramite essa, del commercio elettronico, la crittografia simmetrica non era pi soddisfacente in quanto cera il grosso problema dello scambio delle chiavi che dovevano restare segrete per mantenere la sicurezza del metodo crittografico. Esse non potevano essere scambiate sul web o al telefono in quanto non erano canali sicuri e lalternativa sarebbe stata scambiarle con altri mezzi, come la posta ordinaria, ma essi risultavano lenti e costosi ed impraticabili per le-commerce che mette in comunicazione milioni di persone di tutto il mondo che non si conoscono. Anche lidea di un centro che distribuisse chiavi non fu accettata in quanto si obiettava che questo centro era comunque violabile (vedi [13]). A tutto questo si aggiungeva la necessit di firmare i messaggi, ossia di doverne garantire la provenienza da parte del mittente tramite una firma digitale, che avrebbe rappresentato lanalogo delle firme sui documenti cartacei. I primi ad introdurre pubblicamente la crittografia a chiave pubblica furono Diffie e Hellman in un articolo del 1976 (vedi [15]). La crittografia a chiave pubblica si avvale dellidea, gi introdotta precedentemente da Kerckhoffs (vedi [21]), che la sicurezza di un metodo di cifratura non deve basarsi sulla segretezza del metodo impiegato. Nei crittosistemi a chiave pubblica si sceglie una funzione crittografica dipendente da alcuni parametri e si rendono noti, tra essi, solo quelli necessari a cifrare leventuale messaggio da ricevere; si tengono invece segreti quei parametri necessari alla decifrazione del messaggio ricevuto. Ovviamente la funzione f scelta deve essere tale che sia facilmente calcolabile f ( x ) data la conoscenza dei parametri resi pubblici, ma sia un problema intrattabile il calcolo di f 1 (x ) senza la conoscenza dei parametri mantenuti segreti. In letteratura spesso si considera la seguente classificazione delle funzioni in termini di complessit di calcolo di immagine e controimmagine: Definizione: una funzione biiettiva f : A B detta funzione unidirezionale se il calcolo di f (a ) ha complessit al pi polinomiale per ogni a A , mentre il calcolo di f 1 (b ) ha complessit pi che polinomiale per quasi tutti i b B . Fino ad ora non si conoscono funzioni di cui esiste una dimostrazione della loro unidirezionalit nel senso appena definito, ma ce ne sono diverse che si congettura esserlo. In crittografia in particolare sono importanti le cosiddette funzioni trappola unidirezionali (one-way trapdoor functions) per le quali f k1 (b ) intrattabile, ma diventa trattabile conoscendo il vettore di parametri k. La loro importanza dovuta al fatto che esse possono essere usate nella crittografia a chiave pubblica poich il vettore di parametri k assumerebbe il ruolo di chiave privata che renderebbe possibile la decifrazione del messaggio. Al giorno doggi lutilizzo della crittografia a chiave pubblica limitato alle firme digitali e allo scambio delle chiavi, in quanto per la protezione dei messaggi tuttora preferita la crittografia simmetrica che usa algoritmi pi veloci ed ha, quindi, tempi di cifratura/decifratura dei messaggi minori. Tuttavia lo sviluppo di metodi crittografici basati su curve ellittiche sta diffondendo 7

lutilizzo della crittografia a chiave pubblica per la protezione di piccoli apparecchi elettronici quali cellulari, palmari, dispositivi wireless, ecc., in quanto le chiavi utilizzate da questi metodi, a parit di livello di sicurezza, sono di gran lunga inferiori a quelle degli altri metodi a chiave pubblica (vedi [9]).

2.2 FIRME DIGITALI E FUNZIONI HASH


La firma digitale un codice che si aggiunge al messaggio inviato che funge da firma vera e propria. Essa deve permettere di garantire lautenticit del messaggio inviato (solitamente una sequenza di bit) e la sua integrit, inoltre non deve permettere di disconoscere qualcosa che stato firmato e non deve essere computazionalmente falsificabile. Questi requisiti sono necessari per evitare il verificarsi di determinate situazioni potenzialmente spiacevoli per il mittente e/o per il destinatario. Solitamente le firme digitali si avvalgono dellutilizzo di alcune funzioni h = H (m) dove m rappresenta un messaggio di lunghezza variabile, dette funzioni hash. Il loro scopo quello di produrre una sorta di impronta digitale del messaggio in modo da facilitare lautenticazione del messaggio stesso. Una funzione hash deve poter essere applicata ad un messaggio (o blocco di dati) di qualsiasi lunghezza mantenendo un output di lunghezza fissa, deve essere unidirezionale e deve essere resistente alle collisioni, cio deve essere computazionalmente impossibile trovare una coppia di input x, y; x y tale che H ( x ) = H ( y ) . Questultima propriet serva a difendersi da attacchi probabilistici basati sul paradosso del compleanno, cio basati sul fatto che scegliendo casualmente con ripetizione tra n elementi sufficiente sceglierne O n per avere una probabilit 1 di circa di averne scelto almeno due volte uno uguale. Generalmente ci si accontenta che la 2 probabilit di ottenere collisioni sia minore di un certo positivo sufficientemente piccolo (di solito = 10 50 ). Un semplice esempio di funzione hash una funzione che, dato un blocco di bit in input, fornisce in output la somma modulo 2 del valore dei bit. Nel tempo sono state proposte numerosissimi schemi per le firme digitali, che tuttavia si possono suddividere in due grandi categorie: le firme digitali dirette e le firme digitali arbitrate. Le prime coinvolgono solamente le parti che si stanno scambiando il messaggio; le seconde, invece, stabiliscono la presenza di un ente certificatore che testa, data e firma ulteriormente con la propria firma digitale, il messaggio e la firma digitale del mittente, prima di recapitarla al destinatario. La sicurezza delle firme digitali dirette dipende dalla chiave privata del mittente, la sicurezza delle firme digitali arbitrate dipende, invece, dal corretto funzionamento del meccanismo di arbitraggio. Gli algoritmi per le firme digitali illustrati successivamente nel testo rientrano tutti nella categoria delle firme digitali dirette. Per maggiori dettagli su questi argomenti vedere [36].

( )

2.3 LRSA
Nel 1978 Rivest, Shamir e Adleman, sulla scia delle idee di Diffie e Hellman, pubblicarono un articolo (vedi [29]) presentando un nuovo crittosistema: lRSA (dai nomi degli autori). Esso si basa 8

su alcuni risultati della teoria dei numeri, in particolare il teorema di Eulero e il problema di fattorizzazione di un intero (IFP: Integer Factorizing Problem). LRSA ora il crittosistema a chiave pubblica pi diffuso nel mondo. La sicurezza dellRSA si basa sulla difficolt del noto IFP, che consiste, dato un numero intero n, nellindividuare la sua scomposizione in fattori primi, di cui nota lesistenza e lunicit grazie al teorema fondamentale dellaritmetica (per ulteriori dettagli vedere appendice A.4). Invece lefficienza di tale metodo dipende dalloperazione di esponenziazione modulare. Algoritmo di generazione delle chiavi con lRSA: Passo 1) si scelgono due numeri primi p e q, diversi e abbastanza grandi; Passo 2) si calcola n = pq ; Passo 3) si calcola (n ) = ( p 1)(q 1) ; Passo 4) si sceglie un numero intero e tale che 1 < e < (n ) e mcd(e, (n )) = 1 ; Passo 5) si calcola lintero d tale che 1 < d < (n ) e ed 1 mod (n ) ; Passo 6) si tengono segreti ( p, q, d ) che costituiscono la chiave privata; Passo 7) si rendono noti (n, e ) che costituiscono la chiave pubblica. Si tenga presente che con p e q, diversi e abbastanza grandi si intende che p e q devono rispettare alcuni requisiti di sicurezza che qui non riportiamo (per il lettore interessato si rimanda al paragrafo 4.2.1 oppure al [36]). Inoltre d linverso moltiplicativo di e mod (n ) , cio d e 1 mod (n ) e si pu calcolare facilmente con lalgoritmo di Euclide esteso. Algoritmo di cifratura/decifratura con lRSA: Cifratura: Passo 1) Bob ottiene la chiave pubblica di Alice (n, e ) ; Passo 2) Bob rappresenta il messaggio da inviare con un intero m Z n ; Passo 3) Bob calcola c m e mod n che rappresenta il messaggio cifrato e lo invia ad Alice. Decifratura: Passo 1) Alice usa la chiave privata per calcolare m c d mod n . Lalgoritmo funziona perch c d mod n = m e mod n = m ed mod n = m . In realt il messaggio da inviare viene trasformato in cifre (di solito in binario) e diviso in blocchi di numeri che vengono poi ad assumere il ruolo di m. Esempio: scambio messaggi con RSA con due primi non sufficientemente grandi: Generazione chiave: Passo 1) Alice sceglie due numeri primi 7 e 23; Passo 2) Alice calcola n = 161; Passo 3) Alice calcola (161) = 132 ; Passo 4) Alice sceglie 5; Passo 5) Alice calcola lintero d = 53 ; Passo 6) Alice tiene segreti (7,23,53) che costituiscono la chiave privata; Passo 7) Alice rende noti (161,5) che costituiscono la chiave pubblica.

( )

Cifratura: Passo 1) Bob ottiene la chiave pubblica di Alice (161,5) ; Passo 2) Bob rappresenta il messaggio da inviare con un intero 16; Passo 3) Bob calcola c = 144 16 5 mod 161 che rappresenta il messaggio cifrato e lo invia ad Alice. Decifratura: Passo 1) Alice usa la chiave privata per calcolare m = 16 144 53 mod 161 . Oltre allinvio di messaggi, lRSA permette anche di effettuare la firma digitale. Algoritmo di firma digitale con lRSA: Firma: Passo 1) Alice calcola h = H (m ) ; Passo 2) Alice calcola la firma s h d mod n del messaggio m; Passo 3) Alice invia (m, s ) a Bob. Verifica: Passo 1) Bob calcola h = H (m ) ; Passo 2) Bob calcola h' s e mod n ; Passo 3) se h = h' allora la firma accettata, altrimenti la firma rifiutata; dove

h = H (m )

h' mod n = s e mod n = h

( )

unopportuna

funzione

hash.

Lalgoritmo

funziona

perch

d e

mod n = h ed mod n = h mod n .

2.4 CRITTOSISTEMI BASATI SUL LOGARITMO DISCRETO


Il logaritmo discreto definito in maniera simile al logaritmo tradizionale. Definizione: si abbia a x b mod n , con n intero positivo e a, b Z n , allora x si dice logaritmo discreto in base a di b modulo n, con x Z n . Mentre loperazione di esponenziazione modulare relativamente facile da calcolare, il logaritmo discreto non lo . Il problema del logaritmo discreto (DLP: Discrete Logarithm Problem), ossia trovare il pi piccolo intero positivo x che soddisfi a x b mod n , alla base di molti metodi di cifratura, in quanto finora considerato essere computazionalmente intrattabile.

2.4.1 Algoritmo di Diffie-Hellman


Il primo algoritmo a chiave pubblica, presentato da Diffie ed Hellman nel 1976 (vedi [14]), si basa sul DLP, esso noto con il nome di scambio delle chiavi di Diffie-Hellman. Questo algoritmo rende sicuro lo scambio di chiavi per permettere un eventuale successivo scambio di messaggi. 10

Algoritmo di scambio delle chiavi di Diffie-Hellman: Passo 0) Alice e Bob scelgono di comune accordo un primo p ed un generatore g Z * ; p Passo 1) Alice sceglie un intero casuale a tale che 1 a p 2 ; Passo 2) Alice calcola x g a mod p ; Passo 3) Alice invia x a Bob; Passo 4) Bob sceglie un intero casuale b tale che 1 b p 2 ; Passo 5) Bob calcola y g b mod p ; Passo 6) Bob invia y ad Alice;

Passo 7) Alice calcola k = y a mod p = g b

a Passo 8) Bob calcola k = x b Passo 9) Alice e Bob condividono la chiave k.

( ) mod p = g mod p ; mod p = (g ) mod p = g mod p ;


a ab b ab

Per violare il sistema necessario risolvere il problema di Diffie-Hellman (DHP: Diffie-Hellman Problem), cio dato un primo p, un generatore g Z * e i valori g a mod p e g b mod p , si calcoli p g ab mod p . possibile dimostrare che il DHP riconducibile in tempo polinomiale al DLP, quindi sapendo risolvere il DLP si sa risolvere anche il DHP, ma allo stato attuale non nota una dimostrazione del viceversa. In linea teorica quindi possibile risolvere il DHP senza saper risolvere il DLP, anche se alcuni ultimi risultati fanno congetturare lequivalenza dei due problemi (vedi [7]).

2.4.2 Algoritmi di El Gamal


Il primo crittosistema basato sul DLP quello presentato da El Gamal nel 1985 (vedi [17]). Algoritmo di generazione delle chiavi di El Gamal: Passo 1) si sceglie un primo p abbastanza grande e un generatore g Z * ; p Passo 2) si sceglie un intero casuale a tale che 1 a p 2 ; Passo 3) si calcola k g a mod p ; Passo 4) si tiene segreto a che costituisce la chiave privata; Passo 5) si rendono noti ( p, g , k ) che costituiscono la chiave pubblica. Algoritmo di cifratura/decifratura di El Gamal: Cifratura: Passo 1) Bob ottiene la chiave pubblica di Alice ( p, g , k ) ; Passo 2) Bob rappresenta il messaggio da inviare con un intero m Z p ; Passo 3) Bob seleziona un intero casuale b tale che 1 b p 2 ; Passo 4) Bob calcola u g b mod p ; Passo 5) Bob calcola v mk b mod p ; Passo 6) Bob invia c = (u, v ) ad Alice.

11

Decifratura: Passo 1) Alice usa la chiave privata per calcolare u a mod p ; Passo 2) Alice calcola m vu a mod p . Lalgoritmo funziona perch vu a mod p = mk b g b mod p = mg ab g ab mod p = m mod p . Una caratteristica di questo crittosistema che ha la propriet di essere non deterministico, infatti la cifratura dipende, oltre che dal testo m, anche da un valore casuale b che potrebbe far s che uno stesso messaggio venga cifrato in due modi differenti. Algoritmo di firma digitale di El Gamal: Firma: Passo 1) Alice seleziona un intero casuale j tale che 1 j p 2 tale che mcd( j, p 1) = 1 ; Passo 2) Alice calcola r g j mod p ; Passo 3) Alice calcola s j 1 [H (m ) ar ]mod( p 1) ; Passo 4) Alice invia (m, r , s ) a Bob dove la coppia (r, s ) la firma del messaggio m. Verifica: Passo 1) Bob verifica che 1 r p 1 altrimenti rifiuta la firma; Passo 2) Bob calcola v k r r s mod p ; Passo 4) Bob calcola v' g H (m ) mod p ; Passo 3) se v = v' allora la firma accettata, altrimenti la firma rifiutata; dove h = H (m) unopportuna funzione hash. Anche lalgoritmo di firma digitale di El Gamal non deterministico in quanto dipende da un valore casuale j. Lalgoritmo funziona perch s j 1 [H (m ) ar ]mod( p 1) js [H (m ) ar ]mod( p 1) H (m ) ( js + ar ) mod( p 1) , quindi v' mod p = g H (m ) mod p = g js + ar mod p = g j

( )

( ) (g )
s

a r

mod p = r s k r mod p = v mod p .

2.4.3 Algoritmo DSA


Lultimo algoritmo illustrato il DSA (Digital Signature Algorithm) pubblicato dal NIST (National Institute of Standards and Technology) nel 1991. Esso riprende lo schema di El Gamal opportunamente modificato. Algoritmo di generazione delle chiavi DSA: Passo 1) si sceglie un primo q la cui espansione binaria abbia lunghezza di 160 bit; Passo 2) si sceglie un primo p la cui espansione binaria abbia lunghezza tra 512 e 1024 bit tale che q | ( p 1) ; Passo 3) si sceglie un elemento g Z * di ordine q; p Passo 4) si sceglie un intero casuale x tale che 1 x q 1 ; 12

Passo 5) si calcola y g x mod p ; Passo 4) si tiene segreto x che costituisce la chiave privata; Passo 5) si rendono noti ( p, q, g , y ) che costituiscono la chiave pubblica. Algoritmo di firma digitale DSA: Firma: Passo 1) Alice seleziona un intero casuale j tale che 1 j q 1 ; Passo 2) Alice calcola r g j mod p mod q ; Passo 3) Alice calcola j 1 mod q ; Passo 4) Alice calcola s j 1 [H (m ) + xr ]mod q ; Passo 5) Alice invia (m, r , s ) a Bob dove la coppia (r, s ) la firma del messaggio m.

Verifica: Passo 1) Bob verifica che 1 r q 1 altrimenti rifiuta la firma; Passo 2) Bob calcola s 1 mod q ;

Passo 3) Bob calcola u s 1 H (m ) mod q ; Passo 4) Bob calcola v rs 1 mod q ; Passo 5) Bob calcola r ' g u y v mod p mod q ; Passo 6) se r = r ' allora la firma accettata, altrimenti la firma rifiutata;

dove h = H (m) unopportuna funzione hash. Lalgoritmo funziona perch s j 1 [H (m ) + xr ]mod q js [H (m ) + xr ]mod q H (m) + xr js mod q , moltiplicando per s 1 si ha s 1 H (m ) + s 1 xr jss 1 mod q s 1 H (m ) + rs 1 x j mod q u + vx j mod q , quindi r ' mod q = g u y v mod p mod q = g u g xv mod p mod q = g u + xv mod p mod q = g j mod p mod q = r mod q .

13

3. CURVE ELLITTICHE

3.1 DESCRIZIONE DELLE CURVE ELLITTICHE


Le curve ellittiche sono curve algebriche descritte da equazioni cubiche che derivano dalle equazioni usate per il calcolo della circonferenza delle ellissi. Linteresse per lo studio di queste curve risale a met dell800, anche se la crittografia su curve ellittiche (ECC: Elliptic Curve Cryptography) nasce appena una ventina danni fa. Una curva algebrica piana definita su un campo F solitamente viene rappresentata con una scrittura del tipo f ( x, y ) = 0; x, y F . Definizione: il genere g di una curva algebrica la differenza tra il massimo numero di punti doppi che la curva potrebbe avere e il numero di punti doppi che effettivamente possiede. Se g = 0 la curva detta razionale. Se g = 1 la curva detta ellittica. Se g 2 la curva detta iperellittica. Il genere di una curva un invariante birazionale (cio non varia se si effettuano trasformazioni razionali con inversa razionale). possibile dimostrare che ogni curva algebrica di genere uno si pu trasformare mediante unopportuna trasformazione birazionale in una cubica ellittica, di conseguenza i termini curva ellittica e cubica ellittica possono essere considerati sinonimi (vedi [33]). Lequazione pi generale di una curva ellittica definita su un campo F y 2 + axy + by = x 3 + cx 2 + dx + e , detta equazione di Weierstrass generalizzata, dove a, b, c, d , e F e x e y variano in F. Il campo F pu essere linsieme dei reali, dei complessi, ma anche un qualsiasi altro campo, ad esempio in crittografia si usano solitamente campi finiti. La curva deve essere liscia o non singolare, cio il gradiente deve essere diverso da zero per ogni coppia di valori ( x, y ) F F . In tal caso il sistema

ay = 3 x 2 + 2cx + d , 2 y + ax + b = 0
non deve ammettere soluzioni. possibile dimostrare (vedi [33]) che il sistema precedente non ha soluzioni se e solo se il discriminante diverso da zero, dove definito come: = a 2 + 4c

) (a e + 4ce abd + b c d ) 8(2d + ab)


2 2 2 2

27 b 2 + 4e + 9 a 2 + 4c (2d + ab ) b 2 + 4e
2

Nella definizione di curva ellittica presente anche un singolo elemento indicato con O e chiamato punto allinfinito (il nome deriva dalla geometria proiettiva) che ha fondamentale importanza. Una curva ellittica su un campo F quindi definita come: E (F ) = ( x, y ) F F | y 2 + axy + by = x 3 + cx 2 + dx + e {O} . 14

Se char(F ) = 2 per avere una curva liscia non si pu avere a = b = 0 , quindi distinguiamo due casi: 1) a 0 in questo caso lequazione generalizzata di Weierstrass si riduce a y 2 + xy = x 3 + ax 2 + b , con a, b F e con discriminante = b , tale curva detta non supersingolare. 2) a = 0, b 0 in questo caso lequazione generalizzata di Weierstrass si riduce a y 2 + cy = x 3 + ax + b , con a, b, c F , c 0 e con discriminante = c 4 , tale curva detta supersingolare. Se char(F ) = 3 si pu porre a = b = 0 senza perdere in generalit, ottenendo y 2 = x 3 + ax 2 + bx + c , con a, b, c F . Se char(F ) 2,3 lequazione che definisce una curva ellittica, tramite opportune trasformazioni, si riduce allequazione di Weierstrass y 2 = x 3 + ax + b , con a, b F tali che = 16 4a 3 + 27b 2 0 affinch la curva sia liscia. Nella classificazione dei punti doppi delle curve ellittiche occorre considerare anche unaltra grandezza , definita, nel caso dellequazione di Weierstrass generalizzata, come

= (a 2 + 4c ) 24(2d + ab ) ,
2

che nel caso dellequazione di Weierstrass si riduce a

= 48a .
Essa rende operativo il seguente risultato: Teorema: le curve descritte dallequazione di Weierstrass generalizzata possono essere classificate come: 1) non singolari se e solo se 0 , 2) presentano un nodo se e solo se = 0 e 0 , 3) presentano una cuspide se e solo se = = 0 . Per la dimostrazione vedere [33]. Seguono alcuni grafici di curve ellittiche sul campo reale per diversi valori dei parametri a e b. 15

Figura 2: curva di equazione y = x + x + 1 e discriminante


2 3

= 496 0 .

16

Figura 3: curva di equazione y = x 7 x + 8 e discriminante


2 3

= 5696 0 .

17

Figura 4: curva di equazione y = x 6 x + 3 e discriminante


2 3

= 9936 0 .

18

Figura 5: curva di equazione y = x e discriminante = = 0 .


2 3

19

Figura 6: curva di equazione y = x 3 x + 2 e discriminante


2 3

= 0 e = 144 0 .

20

Unaltra grandezza importante nello studio delle curve ellittiche il j-invariante, esso definito come j=

Il nome del j-invariante dovuto al seguente teorema: Teorema: due curve ellittiche sono isomorfe (su F ) se e solo se hanno lo stesso j-invariante. Inoltre sia j 0 F allora esiste una curva ellittica (definita su F) con j-invariante uguale a j0 . Per la dimostrazione vedere [33]. Si tenga presente che se il campo non algebricamente chiuso due curve ellittiche possono avere lo stesso j-invariante senza che sia possibile trasformare una nellaltra. Talvolta conveniente usare unaltra forma dellequazione di Weierstrass, essa la seguente: Definizione: unequazione di Weierstrass in forma di Legendre se essa scritta come y 2 = x( x 1)( x ) . Vale inoltre il seguente: Teorema: sia char(F ) 2 . Ogni curva ellittica isomorfa (su F ) ad una curva ellittica in forma di Legendre per qualche F , 0,1 e il j-invariante si calcola come:

j=

2 8 2 + 1

2 ( 1)2

Per la dimostrazione vedere [33].

3.2 STRUTTURA DI GRUPPO


La caratteristica che rende le curve ellittiche utilizzabili nelle applicazioni crittografiche la possibilit di definire una struttura algebrica sullinsieme dei punti della curva E (F ) . In particolare si pu definire unoperazione di addizione in modo da ottenere un gruppo abeliano (E (F ),+ ) . Questoperazione di addizione viene anche detta regola tangente-corda per la sua interpretazione geometrica (vedi figure seguenti).

21

Figura 7: y = x 7 x .
2 3

Figura 8: y = x 6 x + 6 .
2 3

22

Figura 9: y = x 3 x + 5 .
2 3

Figura 10: y = x + 5 x 7 .
2 3

23

Loperazione di addizione cos definita ha le seguenti propriet: 1) il punto allinfinito O lelemento neutro del gruppo, cio O = O e P E (F ) si ha che P + O = O + P = P ; 2) se P O allora P lunico altro punto della curva con ascissa uguale a P; 3) esiste ed unico R E (F ) tale che P + Q = R , P, Q E (F ) con Q P , R si determina graficamente con la regola della corda; 4) se Q = P si ha che P + Q = 2 P = R che si determina con la regola della tangente; 5) se Q = P si ha che P + Q = P + ( P ) = O . Supponiamo char(F ) = 2 e consideriamo la curva supersingolare E (F ) di equazione y 2 + cy = x 3 + ax + b . Consideriamo i punti P, Q E (F ) con P Q , di coordinate rispettivamente (x1 , y1 ) e (x 2 , y 2 ) . Si dimostra che 1) P ha coordinate ( x1 , y1 + c ) ; 2) R = P + Q ha coordinate (x3 , y 3 ) con
2 y1 + y 2 x3 = x + x + x1 + x 2 2 1 ; y1 + y 2 y 3 = x + x ( x1 + x3 ) + y1 + c 2 1

3) R = 2 P ha coordinate (x3 , y 3 ) con

x4 + a2 x3 = 1 2 c . 2 y = x1 + a ( x + x ) + y + c 3 1 3 c 1 Dim: 1) Si vogliono trovare le coordinate di P O che per definizione ha la stessa ascissa di P. Poniamo che P ha coordinate (x1 , y 0 ) , sostituendo nellequazione della curva si ottiene
2 y 0 + cy 0 = x13 + ax1 + b

y12 + cy1 = x13 + ax1 + b ,


da cui uguagliando i primi membri
2 y 0 + cy 0 = y12 + cy1 ,

24

che rispetto a y 0 ha, al pi, due soluzioni poich char(F ) = 2 e 2 primo. Una soluzione si ha per y 0 = y1 e laltra per y 0 = y1 + c , infatti
2 y 0 + cy0 = ( y1 + c ) + c( y1 + c ) = y12 + c 2 + cy1 + c 2 = y12 + cy1 . 2

2) La retta passante per P e per Q ha equazione y = mx + q con y y1 y 2 + y1 m= 2 = x 2 x1 x 2 + x1 q = y1 mx1 = y1 + mx1 . Sostituiamo ora y = mx + q nellequazione della curva ottenendo

(mx + q )2 + c(mx + q ) = x 3 + ax + b x 3 + m 2 x 2 + (a + cm )x + b + q 2 + cq = 0 .
Poich la somma degli zeri di un polinomio di grado n uguale al coefficiente del termine di grado n 1 , quindi si ricava lascissa del terzo punto dintersezione con
y + y2 x3 = m x1 x 2 = m + x1 + x 2 = 1 x +x 2 1
2 2

+ x1 + x 2 ,

e lordinata con

y + y2 y 3 = mx3 + q + c = mx3 + y1 + mx1 + c = 1 x + x ( x1 + x3 ) + y1 + c . 2 1


3) La retta tangente in P ha equazione y = mx + q con E 3 x 2 + a x12 + a m= x = 1 = E y 2 y1 + c c

q = y1 mx1 = y1 + mx1 .
Analogamente al caso precedente otteniamo

(mx + q )2 + c(mx + q ) = x 3 + ax + b x 3 + m 2 x 2 + (a + cm )x + b + q 2 + cq = 0 ,
da cui
x2 + a x4 + a2 = 1 2 , x3 = m 2 x1 = m = 1 c c
2 2 2

25

x12 + a y 3 = mx3 + q + c = mx3 + y1 + mx1 + c = c (x1 + x3 ) + y1 + c .


c.v.d. Supponiamo ancora char(F ) = 2 ma consideriamo la curva non supersingolare E (F ) di equazione

y 2 + xy = x 3 + ax 2 + b .
Consideriamo i punti P, Q E (F ) con P Q , di coordinate rispettivamente (x1 , y1 ) e (x 2 , y 2 ) . Si dimostra che 1) P ha coordinate ( x1 , y1 + x1 ) ; 2) R = P + Q ha coordinate (x3 , y 3 ) con
2 y1 + y 2 y1 + y 2 x3 = x + x + x + x + x1 + x 2 + a 2 1 2 1 ; y1 + y 2 y 3 = x + x ( x1 + x3 ) + x3 + y1 2 1

3) R = 2 P ha coordinate (x3 , y 3 ) con


b 2 x3 = x1 + x 2 1 . y = x 2 + x + y1 x + x 1 3 1 3 3 x1

Dim: 1) Si vogliono trovare le coordinate di P O che per definizione ha la stessa ascissa di P. Poniamo che P ha coordinate (x1 , y 0 ) , sostituendo nellequazione della curva si ottiene
2 y 0 + x1 y 0 = x13 + ax12 + b

y12 + x1 y1 = x13 + ax12 + b ,


da cui uguagliando i primi membri
2 y 0 + x1 y 0 = y12 + x1 y1 ,

che rispetto a y 0 ha, al pi, due soluzioni poich char(F ) = 2 e 2 primo. Una soluzione si ha per y 0 = y1 e laltra per y 0 = y1 + x1 , infatti
2 y 0 + x1 y 0 = ( y1 + x1 ) + x1 ( y1 + x1 ) = y12 + x12 + x1 y1 + x12 = y12 + x1 y1 . 2

26

2) La retta passante per P e per Q ha equazione y = mx + q con y y1 y 2 + y1 m= 2 = x 2 x1 x 2 + x1 q = y1 mx1 = y1 + mx1 . Sostituiamo ora y = mx + q nellequazione della curva ottenendo

(mx + q )2 + x(mx + q ) = x 3 + ax 2 + b

x 3 + (m 2 + m + a )x 2 + qx + b + q 2 = 0 .

Poich la somma degli zeri di un polinomio di grado n uguale al coefficiente del termine di grado n 1 , quindi si ricava lascissa del terzo punto dintersezione con
y + y2 x3 = m + m + a x1 x 2 = m + m + a + x1 + x 2 = 1 x +x 2 1
2 2

y + y2 + 1 + x1 + x 2 + a , x1 + x 2

e lordinata con

y + y2 y 3 = mx3 + q + x3 = mx3 + y1 + mx1 + x3 = 1 x + x ( x1 + x3 ) + x3 + y1 . 2 1


3) La retta tangente in P ha equazione y = mx + q con E 3 x 2 + y1 x12 + y1 y = = x1 + 1 m= x = 1 E y 2 y1 + x1 x1 x1

y q = y1 mx1 = y1 + mx1 = y1 + x1 + 1 x1 = x12 . x1


Analogamente al caso precedente otteniamo

(mx + q )2 + x(mx + q ) = x 3 + ax 2 + b
da cui

x 3 + (m 2 + m + a )x 2 + qx + b + q 2 = 0 ,

y y y 2 + x13 + x1 y1 + ax12 b x3 = m + m + a 2 x1 = m + m + a = x1 + 1 + x1 + 1 + a = x12 + 1 = x12 + 2 , 2 x1 x1 x1 x1 y y y 3 = mx3 + q + x3 = mx3 + y1 + mx1 + x3 = x1 + 1 ( x1 + x3 ) + y1 + x3 = x12 + x1 + 1 x3 + x3 . x1 x1 c.v.d.


2 2

Supponiamo ora char(F ) = 3 e consideriamo la curva E (F ) di equazione 27

y 2 = x 3 + ax 2 + bx + c .
Consideriamo i punti P, Q E (F ) con P Q , di coordinate rispettivamente (x1 , y1 ) e (x 2 , y 2 ) . Si dimostra che 1) P ha coordinate (x1 , y1 ) ; 2) R = P + Q ha coordinate (x3 , y 3 ) con
2 y 2 y1 x3 = x x x1 x 2 a 1 2 ; y 2 y1 y 3 = x x ( x1 x3 ) y1 1 2

3) R = 2 P ha coordinate (x3 , y 3 ) con


2 2ax1 + b x3 = 2 y 2 x1 a 1 . 2ax1 + b y 3 = 2 y ( x1 x3 ) y1 1

Dim: 1) Si vogliono trovare le coordinate di P O che per definizione ha la stessa ascissa di P. Poniamo che P ha coordinate (x1 , y 0 ) , sostituendo nellequazione della curva si ottiene
2 y 0 = x13 + ax12 + bx1 + c

y12 = x13 + ax12 + bx1 + c , da cui uguagliando i primi membri


2 y 0 = y12 ,

che rispetto a y 0 ha, al pi, due soluzioni poich char(F ) = 3 e 3 primo. Le due soluzioni si hanno per y 0 = y1 . 2) La retta passante per P e per Q ha equazione y = mx + q con y y1 m= 2 x 2 x1 q = y1 mx1 . Sostituiamo ora y = mx + q nellequazione della curva ottenendo

(mx + q )2

= x 3 + ax 2 + bx + c

28

x 3 + (a m 2 )x 2 + (b 2mq )x + c q 2 = 0 . Poich la somma degli zeri di un polinomio di grado n uguale al coefficiente del termine di grado n 1 , quindi si ricava lascissa del terzo punto dintersezione con
y y1 x3 = m a x1 x 2 = 2 x x a x1 x 2 , 1 2
2 2

e lordinata con

y y1 y 3 = (mx3 + q ) = mx3 y1 + mx1 = 2 x x (x1 x3 ) y1 . 1 2


3) La retta tangente in P ha equazione y = mx + q con E x 3 x12 + 2ax1 + b 2ax1 + b m= = = Ey 2 y1 2 y1

q = y1 mx1 .
Analogamente al caso precedente otteniamo

(mx + q )2
da cui

x 3 + (a m 2 )x 2 + (b 2mq )x + c q 2 = 0 ,

= x 3 + ax 2 + bx + c

2ax1 + b x3 = m a 2 x1 = 2 y 2 x1 a , 1 2ax1 + b y 3 = (mx3 + q ) = mx3 y1 + mx1 = 2 y ( x1 x3 ) y1 . 1


2

c.v.d. Supponiamo infine char(F ) 2,3 e consideriamo la curva E (F ) di equazione y 2 = x 3 + ax + b . Consideriamo i punti P, Q E (F ) con P Q , di coordinate rispettivamente (x1 , y1 ) e (x 2 , y 2 ) . Si dimostra che 1) P ha coordinate (x1 , y1 ) ; 2) R = P + Q ha coordinate ( x3 , y 3 ) con

29

2 y 2 y1 x3 = x x x1 x 2 1 2 ; y 2 y1 y 3 = x x ( x1 x3 ) y1 1 2

3) R = 2 P ha coordinate ( x3 , y 3 ) con
2 3x1 + a x3 = 2 y 2 x1 1 . 3 x1 + a y 3 = 2 y ( x1 x3 ) y1 1

Dim: 1) Si vogliono trovare le coordinate di P O che per definizione ha la stessa ascissa di P. Poniamo che P ha coordinate (x1 , y 0 ) , sostituendo nellequazione della curva si ottiene
2 y 0 = x13 + ax1 + b

y12 = x13 + ax1 + b , da cui uguagliando i primi membri


2 y 0 = y12 ,

che rispetto a y 0 ha, al pi, due soluzioni. Le due soluzioni si hanno per y 0 = y1 . 2) La retta passante per P e per Q ha equazione y = mx + q con y y1 m= 2 x 2 x1 q = y1 mx1 . Sostituiamo ora y = mx + q nellequazione della curva ottenendo

(mx + q )2

x 3 m 2 x 2 + (a 2mq )x + b q 2 = 0 .

= x 3 + ax + b

Poich la somma degli zeri di un polinomio di grado n uguale al coefficiente del termine di grado n 1 , quindi si ricava lascissa del terzo punto dintersezione con
y y1 x3 = m x1 x 2 = 2 x x x1 x 2 , 1 2
2 2

e lordinata con 30

y y1 y 3 = (mx3 + q ) = mx3 y1 + mx1 = 2 x x (x1 x3 ) y1 . 1 2


3) La retta tangente in P ha equazione y = mx + q con E 3x 2 + a m= x = 1 Ey 2 y1

q = y1 mx1 .
Analogamente al caso precedente otteniamo

(mx + q )2
da cui

x 3 m 2 x 2 + (a 2mq )x + b q 2 = 0 ,

= x 3 + ax + b

3 x12 + a x3 = m 2 x1 = 2 y 2 x1 , 1
2

3x 2 + a y 3 = (mx3 + q ) = mx3 y1 + mx1 = 1 2 y (x1 x3 ) y1 . 1


c.v.d. Nel gruppo (E (F ),+ ) definita anche la moltiplicazione per uno scalare intero k, in quanto essa pu essere considerata come la somma di un punto P della curva sommato k volte, cio Q = kP = 1+ 4+ ... +3 , se k > 0 ; P 4 244 P P
Q = kP = O , se k = 0 ; Q = kP = ( P ) + ( P ) + ... + ( P ) se k < 0 ; 1444 24444 4 3
k
k

con Q E (F ) .
Definizione: data una curva ellittica E (F ) e un punto P E (F ) , si dice che P ha ordine n se n il pi piccolo intero tale che nP = O .

Per calcolare Q = kP , se k grande in valore assoluto, di solito si usa il metodo per raddoppiamenti successivi per diminuire la quantit di calcoli.
Algoritmo dei raddoppiamenti successivi:

Passo 0) a = k , B = O, C = P ; Passo 1) se a pari allora poni a =


a , B = B, C = 2C ; 2 Passo 2) se a dispari allora poni a = a 1, B = B + C , C = C ; Passo 3) se a = 0 allora kP = B , altrimenti vai al passo 1).

31

3.3 CURVE ELLITTICHE SU CAMPI FINITI


Prima di passare ad analizzare le propriet delle curve ellittiche sui campi finiti ritengo opportuno citare rapidamente due dei principali risultati dellaritmetica delle curve ellittiche definite su campi arbitrari su cui non ci soffermeremo: il teorema di Mordell-Weil e il teorema di Siegel. Il primo afferma che il gruppo di punti a coordinate razionali di una curva ellittica finitamente generato, mentre il secondo afferma che linsieme dei punti a coordinate intere di una curva ellittica finito. Per maggiori dettagli si veda [33].

3.3.1 Ordine di una curva ellittica


Linteresse per lo studio di curve ellittiche su campi finiti nasce dalle loro applicazioni nellambito della crittografia. I campi solitamente utilizzati in questo settore sono del tipo Fq , dove q = p r con p primo. In questo caso la curva E (Fq ) composta da un numero finito di punti (vedi figura 11).

Figura 11: E (F23 ) : y = x + x


2 3

Un parametro molto importante in crittografia , appunto, il numero di punti della curva, detto anche ordine della curva, esso si indica con # E (Fq ) . Per individuare i punti della curva si sostituisce a x un elemento di Fq , si calcola x 3 + ax + b e si estrae, se esiste, la radice quadrata in
Fq . Quando q molto grande questo procedimento non applicabile, per cui ci si limita a calcolare

il numero di punti della curva senza individuare le coordinate di ciascun punto. Se ogni elemento di q ammettesse due radici quadrate in Fq , si avrebbero 2q + 1 punti (2q per le radici quadrate dei q 32

elementi pi il punto allinfinito), che il massimo valore per # E (Fq ) . Il seguente noto teorema fornisce una stima pi precisa dellordine di una curva.
Teorema (di Hasse): data la curva ellittica E (Fq ) si ha che il suo ordine verifica la disuguaglianza:

q + 1 2 q # E (F q ) q + 1 + 2 q , dove lintervallo q + 1 2 q ; q + 1 + 2 q

detto intervallo di Hasse.

Per la dimostrazione rimandiamo al [33]. Si noti la forte somiglianza con gli intervalli di confidenza per la stima della media di una popolazione distribuita normalmente con media q + 1 e varianza q. In alcuni casi il teorema formulato come segue:
# E (F q ) = q + 1 t ,

con t 2 q , dove t detta traccia della curva. Il precedente teorema, tuttavia, non solo fornisce un intervallo di valori possibili, mentre in crittografia necessario conoscere il numero esatto di punti della curva per poterla scegliere in maniera adeguata, ma lintervallo anche molto ampio. Nella tabella seguente vengono riportati gli estremi dellintervallo e il numero di possibili punti di una curva ellittica E (Fq ) al variare di q. Valore di q 2 3 22 11 24 101 1009 2 4999 2100
10

Intervallo di Hasse [0.1716 ; 5.8284]

Numero di valori possibili 5 7 9 13 17 41 127 129 283 4503599627370497

[0.5358 ; 7.4642] [1;9] [5.3668 ; 18.633] [9 ; 25] [81.9 ; 122.1] [946.47 ;1073.5] [961 ; 1089] [4858.6 ; 5141.4 ]

Non riportato per mancanza di spazio


Tabella 1: esempi per lintervallo di Hasse.

Richiamando il simbolo di Legendre:

1 se a non un quadrato modulo q a = 0 se q | a , q 1 se a un quadrato modulo q si pu introdurre il seguente teorema:

33

Teorema: data la curva ellittica E (Fq ) : y 2 = x 3 + ax + b si ha che il suo ordine verifica

# E (F q ) = q + 1 +

x 3 + ax + b q . xFq

Dim: ogni x Fq dar nessuno, uno o due punti della curva a seconda se f ( x ) non un quadrato, zero o un quadrato diverso da zero rispettivamente. Quindi, aggiungendo il punto allinfinito, si ha
# E (F q ) = 1 +
x 3 + ax + b x 3 + ax + b . + 1 = q + 1 + q q xFq xFq

c.v.d.
Corollario: data la curva ellittica E (Fq ) : y 2 = x 3 + ax + b , con si ha:

x 3 + ax + b q 2 q . xFq Dim: deriva immediatamente dai due precedenti teoremi. c.v.d. Il precedente teorema stima esattamente il numero dei punti della curva, inoltre sono noti i due seguenti teoremi:
Teorema: sia q = p n e sia N = q + 1 t . Esiste una curva ellittica E (Fq ) con # E (F q ) = N se e

solo se t 2 q e t soddisfa una delle seguenti condizioni: 1) mcd(t , p ) = 1 , 2) n 0 mod 2 e t = 2 q , 3) n 0 mod 2 , p 1 mod 3 e t = q , / 4) n 0 mod 2 , p 1 mod 4 e t = 0 , / 5) n 1 mod 2 , p = 2,3 e t = p 6) n 1 mod 2 e t = 0 .
n +1 2

Teorema: dato un primo p 3 , si consideri la famiglia di curve ellittiche definita su Fq di

equazione y 2 = x 3 kx , con k 0 mod p e k Fq* , e sia N il numero di punti della curva. Allora: / 1) se p 3 mod 4 allora N = p + 1 , 2) se p 1 mod 4 , si pu scrivere p = m 2 + n 2 , con m e n interi tali che n pari e m + n 1 mod 4 , allora:

34

p + 1 2m N = p + 1 + 2m p + 1 2n

se k una quarta potenza se k un quadrato ma non una quarta potenza . se k non un quadrato

I precedenti risultati, per, hanno unutilit principalmente teorica, per le applicazioni concrete si fa riferimento ad algoritmi che permettono il calcolo del numero dei punti di un curva ellittica in tempi trattabili, tra i pi noti citiamo lalgoritmo di Schoof-Elkies-Atkin (SEA) e lalgoritmo SatohSkiernaa-Taguchi (SST). Per il primo si rimanda al [39] e per il secondo a [3].

3.3.2 Curve supersingolari


Si vuole ora introdurre una particolare famiglia di curve le cosiddette curve supersingolari il cui interesse crittografico verr esposto in seguito. Da notare che le nozioni di supersingolarit e di singolarit di una curva ellittica sono completamente distinte, le curve supersingolari sono particolari curve ellittiche, cio sono particolari cubiche non singolari.
Definizione: data una curva ellittica E (Fq ) con char (Fq ) = p la curva si dice supersingolare se non esistono punti di ordine p, altrimenti essa detta ordinaria.

Riportiamo ora alcune caratterizzazione delle curve supersingolari che non dimostreremo.
Teorema: data una curva ellittica E (Fq ) con q = p n e sia # E (F q ) = q + 1 t , allora le seguenti affermazioni sono equivalenti:

1) E (Fq ) supersingolare, 2) t 0 mod p , 3) # E (F q ) 1 mod p .


Corollario: data una curva ellittica E (Fq ) con q = p n ; p 5 e sia # E (F q ) = q + 1 t , allora le seguenti affermazioni sono equivalenti:

1) E (Fq ) supersingolare, 2) t = 0 , 3) # E (F q ) = p + 1 .
Teorema: dato un primo p 3 e un campo Fq con char (Fq ) = p , allora la curva ellittica di

equazione y 2 = x 3 + ax + b definita su Fq supersingolare se e solo se il coefficiente di x p 1 in

(x

+ ax + b

p 1 2

zero.

Teorema: si definisca il polinomio

m H p (t ) = t i , i =0 i
m

35

con

p 1 . Sia F , 0,1 , allora la curva ellittica in forma di Legendre 2 y 2 = x( x 1)( x ) supersingolare se e solo se H p ( ) = 0 . m=

I teoremi di seguito esposti si riferiscono, invece, a particolari famiglie di curve ellittiche supersingolari, di conseguenza possono tornare utili nel caso si abbia a che fare con le specifiche famiglie di curve considerate.
Teorema: sia q un dispari tale che q 2 mod 3 e sia b Fq* , allora la curva ellittica di equazione

y 2 = x 3 + b definita su Fq supersingolare.
Teorema: dato un primo p 5 , allora la curva ellittica di equazione y 2 = x 3 + 1 definita su F p

supersingolare se e solo se p 2 mod 3 .


Teorema: dato un primo p 5 , allora la curva ellittica di equazione y 2 = x 3 + x definita su F p

supersingolare se e solo se p 3 mod 4 .

3.3.3 Campi finiti primi e binari


Soffermiamo ora la nostra attenzione su alcuni particolari campi finiti. I campi abitualmente usati nelle applicazioni crittografiche sono del tipo F p o F2 m , i primi sono detti campi primi e i secondi campi binari. Talvolta i precedenti campi vengono indicati come GF ( p ) e GF (2 m ) rispettivamente, dove GF sta per Galois Field. I campi primi F p contengono un numero primo p di elementi ed possibile operare in essi tramite moltiplicazione e inversione di un elemento sono quelle definite in Z p .
Esempio: se si considera F11 , che quindi isomorfo a Z11 , si ha che gli elementi sono {0,1,2,3,4,5,6,7,8,9,10} , inoltre si ha

laritmetica modulare in quanto sono isomorfi a Z p . Di conseguenza le operazioni di addizione,

7 + 9 5 mod11 , 3 6 7 mod11, 2 1 6 mod 11 .


I campi binari F2 m contengono 2 m elementi (m detto grado del campo) ed possibile operare in essi mediante laritmetica polinomiale modulare. Infatti ogni elemento pu essere considerato un vettore di dimensione m in F2 .
Definizione: siano 0 , 1 ,..., m 1 in F2 m m elementi tali che ogni elemento F2 m pu essere

scritto univocamente nella forma

= a 0 0 + a1 1 + ... + a m 1 m 1 ,

36

con ai F2 , i = 0,..., m 1 , allora linsieme di elementi { 0 , 1 ,..., m 1 } chiamato base di F2 m su F2 . Si pu dimostrare che una base esiste sempre ma non univoca e le operazioni in F2 m dipendono dal tipo di base scelta per la rappresentazione. Presenteremo brevemente solo le rappresentazioni a base polinomiale e a base normale, in quanto esse sono quelle ammesse dagli standard internazionali (vedi capitolo seguente).
Rappresentazione in base polinomiale. Sia p ( x ) = a 0 + a1 x + ... + a m 1 x m 1 + x m , con ai F2 , i = 0,..., m 1 , un polinomio irriducibile in F2

(cio non pu essere scritto come prodotto di due polinomi non costanti di grado inferiore in F2 ). Allora il campo finito F2 m ha come elementi tutti i possibili polinomi di F2 di grado minore di m, cio

F2m = a0 + a1 x + ... + a m1 x m1 ; ai F2 .
Le operazioni in F2 m con la rappresentazione in base polinomiale coincidono con le classiche operazioni tra polinomi tranne per il fatto che le operazioni tra coefficienti sono modulo 2 e che se il risultato di unoperazione un polinomio di grado m si considera come risultato finale delloperazione il polinomio resto ottenuto dividendo il polinomio ottenuto per il polinomio irriducibile scelto per la rappresentazione, cio si tratta di unoperazione modulo un polinomio (questo permette anche il calcolo dellinverso). Il seguente esempio chiarir quanto detto.
Esempio: si consideri il campo F2 4 e il polinomio irriducibile x 4 + x + 1 . I 16 elementi del campo sono: 0 1 x x + 1 x 2 x 2 + x 2 x + 1 x 2 + x + 1 F24 = 3 x x 3 + x 2 3 x + x 3 2 x + x + x x 3 + 1 3 x + x 2 + 1 3 x + x + 1 , x 3 + x 2 + x + 1

37

e si ha anche:

(x (x (x

+ x ) + (x 3 + x 2 + x ) = x 2 , 2 + 1)(x 3 + 1) = x 5 + x 3 + x 2 + 1 x 3 + x + 1 mod(x 4 + x + 1) , + x 2 + 1) x 2 mod(x 4 + x + 1) .


1

Rappresentazione in base normale. 2 m 1 Una base normale di F2 m su F2 una base del tipo , 2 , 2 ,..., 2

} dove

F2 e un
m

generico elemento di F2 m pu essere scritto come a = a 0 + a1 2 + a 2 2 + ... + a m 1 2


2 m 1

con ai F2 , i = 0,..., m 1 . Poich in un campo con rappresentazione a base normale loperazione di moltiplicazione pu essere computazionalmente molto costosa, nelle applicazioni pratiche vengono solitamente usate le GNB (Gaussian Normal Basis) che sono particolari basi normali in cui viene calcolato un parametro intero positivo T, detto tipo della GNB, che misura la complessit della moltiplicazione rispetto a quella specifica GNB. Tanto pi T piccolo tanto pi veloce loperazione di moltiplicazione, se T 1 o 2 la base viene detta base normale ottimale. Un campo F2 m pu avere pi di una GNB di tipo T e ne ha almeno una solo se 8 / m . Inoltre sia m un intero | positivo non divisibile per 8, un tipo T di una GNB esiste se e solo se p = Tm + 1 primo. Laddizione in GNB definita come nella rappresentazione in base polinomiale, mentre molto differente la moltiplicazione. Unosservazione utile che il quadrato di un elemento unoperazione lineare in GNB infatti:

a 2 = a0 + a1 2 + a 2 2 + ... + a m1 2
2

m 1

= a0 2 + a1 2 + a 2 2 + ... + a m 1 2
2 3

e poich per il teorema di Fermat 2 = ; F2 m , si ha


m

a 0 2 + a1 2 + a 2 2 + ... + a m 1 2 = a m 1 + a 0 2 + a1 2 + ... + a m 2 2 .
2 3 m 2

m 1

Si noti che il risultato ottenuto semplicemente traslando i coefficienti della base. Per definire la moltiplicazione si prenda p = Tm + 1 , u F p e si definisca la sequenza J (1), J (2),..., J ( p 1) tale che:

J 2 i u j mod p = i; i = 0,..., m 1; j = 0,..., T 1 .


Allora si ha:

(a + a
0 1

+ ... + a m 1 2

m 1

)(b + b
0 1

+ ... + bm 1 2

m 1

) = (c + c
0 1

+ ... + c m 1 2

m 1

),
38

dove ci = a J (k +1)bJ ( p k ) ; i = 1,.., m 1 e lelemento identit il polinomio con ai = 1; i = 1,.., m 1


k =1

p2

cio + 2 + 2 + ... + 2 . Per quanto riguarda linversione di un elemento, definito con la precedente operazione di moltiplicazione, esistono algoritmi che ne permettono il calcolo. Per maggiori dettagli sulle GNB consultare [38] e [11].
2

m 1

3.3.4 Curve anomale


In crittografia esistono alcune famiglie di curve particolarmente vulnerabili dal punto di vista crittografico, cio su cui i calcoli vengono svolti pi rapidamente che sulle altre curve e di conseguenza sono solitamente considerate poco sicure poich facilmente attaccabili. La prima famiglia con queste caratteristica che citeremo quella delle curve supersingolari gi illustrata in precedenza con opportune caratterizzazioni. Esse sono in generale sconsigliate ma unopportuna scelta delle curve permette di costruire crittosistemi molto efficienti (vedi [39]). Vediamo ora altre due famiglie di curve anomale specifiche dei campi appena considerati.
Definizione: una curva ellittica E definita su un campo primo F p si dice curva anomala (su un

campo primo) se # E (F p ) = p , cio se t = 1 .

Le precedenti curve sono particolarmente vulnerabili, quindi fortemente sconsigliate per qualsiasi utilizzo crittografico.
Definizione: una curva ellittica E definita su un campo binario F2 m si dice curva di Koblitz o curva

binaria anomala se lequazione ha coefficienti in F2 = {0,1} .

Esistono due curve di Koblitz: y 2 + xy = x 3 + 1 y 2 + xy = x 3 + x 2 + 1 . Su tali curve la moltiplicazione scalare non richiede i raddoppi di punto, ma gli algoritmi di risoluzione del logaritmo discreto su curva ellittica, di cui si parler nel capitolo seguente, non si riducono di fattori significativi, mantenendo cos invariata la sicurezza di queste curve.

39

4. LA CRITTOGRAFIA E LE CURVE ELLITTICHE

4.1 CRITTOSISTEMI BASATI SU CURVE ELLITTICHE


stato precedentemente illustrato il DLP su Z n , in realt il DLP definibile su un qualsiasi gruppo ciclico, quindi si pu avere sul gruppo di punti di una curva ellittica definita su un campo finito. In questo caso il problema del logaritmo discreto su curva ellittica (ECDLP: Elliptic Curve Discrete Logarithm Problem) definito nel seguente modo:
Definizione: data una curva ellittica E (Fq ) e due punti P, Q E (Fq ), con P di ordine n e Q P ,

dove P il gruppo ciclico generato da P. Si dice problema del logaritmo discreto su curva ellittica il calcolo del pi piccolo intero positivo 0 k n 1 tale che Q = kP , dove k chiamato logaritmo discreto di Q in base P e si indica con k = log P Q . I primi a proporre algoritmi di cifratura basati su curve ellittiche furono, in modo indipendente, Miller nel 1985 e Koblitz nel 1986. Essi non proposero di fatto nuovi algoritmi, ma applicarono quelli esistenti sul gruppo additivo formato dai punti di una curva ellittica su un campo finito. Il primo propose un analogo dellalgoritmo di Diffie-Hellman, mentre il secondo un analogo di El Gamal.

4.1.1 Diffie-Hellman su curva ellittica


Lalgoritmo di Diffie-Hellman su curva ellittica (ECDH: Elliptic Curve Diffie-Hellman) costruito, come la sua controparte tradizionale, per lo scambio delle chiavi.
Algoritmo di scambio delle chiavi ECDH:

Passo 0) Alice e Bob scelgono di comune accordo una curva ellittica E (Fq ) e un punto P E (Fq ) di ordine n sufficientemente grande; Passo 1) Alice sceglie un intero casuale a tale che 1 a n 1 ; Passo 2) Alice calcola X = aP ; Passo 3) Alice invia X a Bob; Passo 4) Bob sceglie un intero casuale b tale che 1 b n 1 ; Passo 5) Bob calcola Y = bP ; Passo 6) Bob invia Y ad Alice; Passo 7) Alice calcola K = aY = abP ; Passo 8) Bob calcola K = bX = abP ; Passo 9) Alice e Bob condividono la chiave K. Per utilizzare il punto K come chiave segreta potrebbe essere necessario convertirlo in un intero, questo pu essere fatto in diversi modi tra cui utilizzare unopportuna funzione hash, considerare le ultime cifre dellascissa del punto, ecc.

40

Esempio: scambio delle chiavi ECDH su una curva non sufficientemente sicura: Passo 0) Alice e Bob scelgono di comune accordo la curva ellittica y 2 = x 3 + 14 x + 13 che ha ordine 31 su F23 e il punto P = (4,8) di ordine 16; Passo 1) Alice sceglie 5; Passo 2) Alice calcola X = 5P = (0,6) ; Passo 3) Alice invia X a Bob; Passo 4) Bob sceglie 2; Passo 5) Bob calcola Y = 2 P = (16,3) ; Passo 6) Bob invia Y ad Alice; Passo 7) Alice calcola K = 5Y = 10P = (2,7 ) ; Passo 8) Bob calcola K = 2 X = 10P = (2,7 ) ; Passo 9) Alice e Bob condividono la chiave K = (2,7 ) .

Per violare il sistema, analogamente allalgoritmo di Diffie-Hellman tradizionale, si deve risolvere il problema di Diffie-Hellman su curva ellittica (ECDHP: Elliptic Curve Diffie-Hellman Problem) che consiste nellindividuare il punto K = abP conoscendo i punti P, X = aP e Y = bP . Anche in questo caso si dimostra che riuscendo a risolvere il ECDLP si sa risolvere il ECDHP, ma non noto se sia vero il viceversa. Unalternativa allECDH lalgoritmo ECMQV (Elliptic Curve Menezes Qu Vanstone) la cui differenza principale che si usano le chiavi pubbliche di Alice e Bob invece che le cosiddette chiavi effimere X e Y, questo per renderlo pi sicuro ad un attacco del tipo man-in-the-middle di cui si parler successivamente.

4.1.2 El Gamal su curva ellittica


Nel caso di algoritmi di cifratura si pone il problema di dover rappresentare il messaggio in maniera compatibile con lalgoritmo di cifratura adottato. Nella crittografia a chiave pubblica classica si era soliti rappresentare il messaggio mediante un numero intero, nella crittografia su curve ellittiche, invece, il messaggio si rappresenta il messaggio tramite un punto della curva. Un metodo per fare questo stato proposto da Koblitz.
Algoritmo di trasformazione di un intero in un punto di una curva ellittica:

Passo 1) si sceglie una curva ellittica E (F p ) : y 2 = x 3 + ax + b ; Passo 2) si rappresenta il messaggio di testo tramite un intero m tale che 0 m Passo 3) si calcola x j = 100 m + j; 0 j 99 ; Passo 4) si calcola s 2 = x 3 + ax j + b ; j j
p 1 2 j

p ; 100

1 mod p allora s j un quadrato in F p , altrimenti si torni al passo 3 e si tenti Passo 5) se s con un nuovo valore di j; Passo 6) si calcola y j = s j e si ottiene il punto P = (x j , y j ) E (F p ) .

41

xj Per ottenere il messaggio dal punto P basta calcolare m = . Inoltre poich s j un elemento 100 p 1 1 quadrati, la probabilit che s j sia un quadrato e, quindi, la casuale di F p* , che contiene 2 2 1 probabilit che s j sia un quadrato dopo h tentativi h . Per un campo di tipo Fq si procede in 2 maniera analoga. Ora che abbiamo la possibilit di trasformare un messaggio di testo prima in un intero e successivamente in un punto della curva ellittica di nostro interesse, possiamo introdurre lanalogo su curva ellittica del crittosistema di El Gamal.
Algoritmo di generazione delle chiavi di El Gamal su curva ellittica:

Passo 1) si sceglie una curva ellittica E (Fq ) e un punto P E (Fq ) di ordine n sufficientemente grande; Passo 2) si sceglie un intero casuale a tale che 1 a n 1 ; Passo 3) si calcola A = aP ; Passo 4) si tiene segreto a che costituisce la chiave privata; Passo 5) si rendono noti (E (Fq ), P, A) che costituiscono la chiave pubblica.
Algoritmo di cifratura/decifratura di El Gamal:

Passo 2) Bob rappresenta il messaggio da inviare con un punto M E (Fq ) ; Passo 3) Bob seleziona un intero casuale b tale che 1 b n 1 ; Passo 4) Bob calcola U = bP ; Passo 5) Bob calcola V = M + bA ; Passo 6) Bob invia c = (U ,V ) ad Alice. Decifratura: Passo 1) Alice usa la chiave privata per calcolare aU ; Passo 2) Alice calcola M = V aU . Lalgoritmo funziona perch V aU = M + bA abP = M + abP abP = M .
Esempio: scambio messaggi con EL Gamal su una curva non sufficientemente sicura: Generazione chiave: Passo 1) Alice sceglie la curva ellittica y 2 = x 3 + 14 x + 13 che ha ordine 31 su F23 e il punto

Cifratura: Passo 1) Bob ottiene la chiave pubblica di Alice (E (Fq ), P, A) ;

P = (4,8) di ordine 16; Passo 2) Alice sceglie 7; Passo 3) Alice calcola A = 7 P = (10,16) ; Passo 4) Alice tiene segreto 7 che costituisce la chiave privata; Passo 5) Alice rende noti ( y 2 = x 3 + 14 x + 13 su F23 , (4,8), (10,16 )) che costituiscono la chiave pubblica.

42

Passo 2) Bob rappresenta il messaggio da inviare con un punto M = (20,6) ; Passo 3) Bob seleziona 2; Passo 4) Bob calcola U = 2 P = (16,3) ; Passo 5) Bob calcola V = M + 2 A = (5,22) ; Passo 6) Bob invia c = ((16,3), (5,22)) ad Alice. Decifratura: Passo 1) Alice usa la chiave privata per calcolare 7U = (16,20) ; Passo 2) Alice calcola M = V 7U = (20,6) .

Cifratura: Passo 1) Bob ottiene la chiave pubblica di Alice ( y 2 = x 3 + 14 x + 13 su F23 , (4,8), (10,16 )) ;

Anche questo crittosistema basato sullidea di El Gamal ha la propriet di essere non deterministico, infatti la cifratura dipende, oltre che dal testo M, anche da un valore casuale b che potrebbe far s che uno stesso messaggio venga cifrato in due modi differenti. Questo crittosistema non viene usato nelle applicazione in quanto gli viene preferito lalgoritmo ECIES (Elliptic Curve Integrated Encryption System) proposto da Bellare e Rogaway che una sua variante (vedi [32]).

4.1.3 Firma digitale su curva ellittica


Per quanto riguarda le firme digitali esiste lanalogo del DSA che lalgoritmo ECDSA (Elliptic Curve Digital Signature Algorithm), esso approvato da diversi standard internazionali quali il NIST e lISO.
Algoritmo di firma digitale ECDSA:

Firma: Passo 1) Alice seleziona un intero casuale j tale che 1 j n 1 ; Passo 2) Alice calcola jP = (x1 , y1 ) ; Passo 3) Alice calcola r x1 mod n ; Passo 4) se r = 0 vai al passo 1); Passo 5) Alice calcola s j 1 [H (m ) + ar ]mod n ; Passo 6) se s = 0 vai al passo 1); Passo 7) Alice invia (m, r , s ) a Bob dove la coppia (r, s ) la firma del messaggio m. Verifica: Passo 1) Bob verifica che 1 r n 1 e 1 s n 1 altrimenti rifiuta la firma; Passo 2) Bob calcola s 1 mod n ; Passo 3) Bob calcola u s 1 H (m ) mod n ; Passo 4) Bob calcola v rs 1 mod n ; Passo 5) Bob calcola X = uP + vA = (x 2 , y 2 ) ; Passo 6) se X = O rifiuta la firma; Passo 7) Bob calcola r ' x 2 mod n ; Passo 8) se r = r ' allora la firma accettata, altrimenti la firma rifiutata;

43

dove h = H (m ) unopportuna funzione hash, a e (E (Fq ), P, A) sono rispettivamente la chiave privata e pubblica di Alice. Lalgoritmo funziona perch s j 1 [H (m ) + ar ]mod n , j s 1 [H (m ) + ar ] s 1 H (m ) + s 1 ar (u + va ) mod n , quindi

(x2 , y 2 ) = X

= uP + vA = uP + vaP = (u + va )P = jP = ( x1 , y1 ) ,

da cui x1 = x2 e quindi r = r ' .

4.1.4 Standard per la firma digitale su curva ellittica


Come accennato precedentemente lalgoritmo ECDSA approvato da diversi standard tra cui listituto americano NIST. Nel 2000 il NIST ha pubblicato FIPS PUB 186-2 (Federal Information Processing Standards Publication, vedi sito NIST) che il punto di riferimento per la commercializzazione dellECDSA. Verranno di seguito riportati gli standard approvati dal NIST per la scelta dei parametri dellECDSA.
Scelta della funzione hash La funzione hash h = H (m ) da utilizzare, secondo lo standard, lalgoritmo SHA-1 pubblicato nel FIPS 180-1 dal NIST nel 1995 (per maggiori dettagli sullalgoritmo si veda [36]). Scelta della lunghezza della chiave Sia lintero q il numero di punti della curva e il primo r lordine del punto base, si definisce cofattore lintero k tale che q = kr . Per ragioni di efficienza preferibile avere cofattori piccoli. Tutte le curve seguenti hanno cofattori uguali a 1, 2 o 4. Da questo deriva che la chiave pubblica e la chiave privata sono approssimativamente della stessa lunghezza, ogni lunghezza scelta in corrispondenza della lunghezza della crittovariabile (cio variabile di interesse crittografico) di un comune sistema simmetrico. La lunghezza della chiave privata circa il doppio della lunghezza della rispettiva crittovariabile simmetrica. Scelta del campo Per ogni crittovariabile ci sono due tipi di campi possibili tra cui scegliere: i campi primi F p ed i

campi binari F2 m . La seguente tabella fornisce i valori di ||p|| (che indica la lunghezza dellespansione binaria del primo p) e di m in corrispondenza della lunghezza della crittovariabile simmetrica che determina la lunghezza della chiave privata e della chiave pubblica.
Lunghezza Crittovariabile Simmetrica 80 112 128 192 256 Algoritmo di Esempio SKIPJACK Triple-DES AES Small AES Medium AES Large Campo Primo ||p|| = 192 ||p|| = 224 ||p|| = 256 ||p|| = 384 ||p|| = 521 Campo Binario m = 163 m = 233 m = 283 m = 409 m = 571

Tabella 2: dimensioni delle crittovariabili.

44

Scelta della base Nel caso di utilizzo del campo binario occorre effettuare una scelta della base. Le basi pi comuni utilizzate sono la base polinomiale e la base normale. Nel caso di base polinomiale si sceglie un trinomio irriducibile t m + t k + 1 su F2 m tale che k sia il

minimo tra tutti i trinomi irriducibili di grado m. Se non esiste un trinomio irriducibile si sceglie un pentanomio irriducibile t m + t a + t b + t c + 1 su F2 m tale che a sia il minimo tra tutti i pentanomi irriducibili di grado m, b sia il minimo tra tutti i pentanomi irriducibili della forma precedente con m e a fissati e c sia il minimo tra tutti i pentanomi irriducibili della forma precedente con m, a e b fissati. Nel caso di una base normale si sceglie la base normale di tipo T con il pi piccolo T.
Scelta della curva Le curve possono essere pseudo-casuali, nelle quali i coefficienti vengono scelti pseudocasualmente, oppure speciali (soprattutto su F2 m ) dove i coefficienti sono scelti in modo da

ottimizzare lefficienza delle operazioni sulla curva, come la curva di Koblitz o curva anomala binaria.
Scelta del punto base Qualsiasi punto base P di ordine r della curva pu essere scelto come punto base.

4.1.5 Curve ellittiche raccomandate dal NIST


Curve pseudo-casuali di equazione y 2 = x 3 3x + b su un campo primo F p . Per queste curve il cofattore sempre 1. Vengono forniti i seguenti parametri: il numero primo p; lordine r; linput s di 160 bit per lalgoritmo SHA-1; loutput c dellalgoritmo SHA-1; il coefficiente b, che soddisfa b 2 c + 27 0 mod p ; lascissa Px del punto base P; lordinata Py del punto base P. I parametri p ed r sono dati in forma decimale, gli altri in forma esadecimale.

45

Curva ||p|| = 192

p = 6277101735386680763835789423207666416083908700390324961279 r = 6277101735386680763835789423176059013767194773182842284081 s = 3045ae6f c8422f64 ed579528 d38120ea e12196d5 c = 3099d2bb bfcb2538 542dcd5f b078b6ef 5f3d6fe2 c745de65 b = 64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1 Px = 188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012
Py = 07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811

Curva ||p|| = 224

p = 26959946667150639794667015087019630673557916260026308143510066298881 r = 26959946667150639794667015087019625940457807714424391721682722368061 s = bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc5 c = 5b056c7e 11dd68f4 0469ee7f 3c7a7d74 f7d12111 6506d031 218291fb b = b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4 Px = b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21
Py = bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34

Curva ||p|| = 256

p = 115792089210356248762697446949407573530086143415290314195533631308867097853951 r = 115792089210356248762697446949407573529996955224135760342422259061068512044369 s = c49d3608 86e70493 6a6678e1 139d26b7 819f7e90 c = 7efba166 2985be94 03cb055c 75d4f7e0 ce8d84a9 c5114abc af317768 0104fa0d b = 5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b Px = 6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296 46

Py = 4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5

Curva ||p|| = 384

p = 3940200619639447921227904010014361380507973927046544666794829340424572 1771496870329047266088258938001861606973112319 r = 39402006196394479212279040100143613805079739270465446667946905279627659 399113263569398956308152294913554433653942643 s = a335926a a319a27a 1d00896a 6773a482 7acdac73 c = 79d1e655 f868f02f ff48dcde e14151dd b80643c1 406d0ca1 0dfe6fc5 2009540a 495e8042 ea5f744f 6e184667 cc722483 b = b3312fa7 e23ee7e4988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef Px = aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7
Py = 3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0

0a60b1ce 1d7e819d 7a431d7c 90ea0e5f

Curva ||p|| = 521

p = 6864797660130609714981900799081393217269435300143305409394463459185543 18339765605212255964066145455497729631139148085803712198799971664381257402829111 5057151 r = 68647976601306097149819007990813932172694353001433054093944634591855431 83397655394245057746333217197532963996371363321113864768612440380340372808892707 005449 s = d09e8800 291cb853 96cc6717 393284aa a0da64ba c = 0b4 8bfa5f42 0a349495 39d2bdfc 264eeeeb 077688e4 4fbf0ad8 f6d0edb3 7bd6b533 28100051 8e19f1b9 ffbe0fe9 ed8a3c22 00b8f875 e523868c 70c1e5bf 55bad637 b = 051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00 Px = c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66
Py = 118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c

97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650 47

Curve pseudo-casuali di equazione y 2 + xy = x 3 + x 2 + b su un campo binario F2 m e curve di Koblitz di equazione y 2 + xy = x 3 + ax 2 + 1 dove a F2 . Per le prime curve il cofattore sempre 2 per le curve di Koblitz 2 se a = 1 ed 4 se a = 0 . I parametri vengono dati per entrambi i tipi di curve, sia in base polinomiale che in base normale. Vengono forniti i seguenti parametri: Rappresentazione del campo il tipo della base normale T; il polinomio irriducibile (trinomio o pentanomio); Curva di Koblitz il coefficiente a; lordine del punto base r; lascissa Px del punto base P; lordinata Py del punto base P; Curva psuedo-casuale lordine del punto base r; Curva psuedo-casuale (rappresentazione in base polinomiale) il coefficiente b; lascissa Px del punto base P; lordinata Py del punto base P; Curva psuedo-casuale (rappresentazione in base normale) linput s di 160 bit per lalgoritmo SHA-1; il coefficiente b (loutput dellalgoritmo SHA-1); lascissa Px del punto base P; lordinata Py del punto base P; I parametri T, m ed r sono dati in forma decimale, gli altri in forma esadecimale.

Curva m = 163

T=4 p(t ) = t 163 + t 7 + t 6 + t 3 + 1


Curva K-163

a=1 r = 5846006549323611672814741753598448348329118574063 Base polinomiale: Px = 2 fe13c053 7bbc11ac aa07d793 de4e6d5e 5c94eee8 Py = 2 89070fb0 5d38ff58 321f2e80 0536d538 ccdaa3d9 Base normale: Px = 0 5679b353 caa46825 fea2d371 3ba450da 0c2a4541 Py = 2 35b7c671 00506899 06bac3d9 dec76a83 5591edb2 48

Curva B-163

r = 5846006549323611672814742442876390689256843201587 Base polinomiale: b = 2 0a601907 b8c953ca 1481eb10 512f7874 4a3205fd Px = 3 f0eba162 86a2d57e a0991168 d4994637 e8343e36 Py = 0 d51fbc6c 71a0094f a2cdd545 b11c5c0c 797324f1 Base normale: s = 85e25bfe 5c86226c db12016f 7553f9d0 e693a268 b = 6 645f3cac f1638e13 9c6cd13e f61734fb c9e3d9fb Px = 0 311103c1 7167564a ce77ccb0 9c681f88 6ba54ee8 Py = 3 33ac13c6 447f2e67 613bf700 9daf98c8 7bb50c7f

Curva m = 233

T=2 p(t ) = t 233 + t 74 + 1


Curva K-233

a=0 r =3450873173395281893717377931138512760570940988862252126328087024741343 Base polinomiale: Px = 172 32ba853a 7e731af1 29f22ff4 149563a4 19c26bf5 0a4c9d6e efad6126 Py = 1db 537dece8 19b7f70f 555a67c4 27a8cd9b f18aeb9b 56e0c110 56fae6a3 Base normale: Px = 0fd e76d9dcd 26e643ac 26f1aa90 1aa12978 4b71fc07 22b2d056 14d650b3 Py = 064 3e317633 155c9e04 47ba8020 a3c43177 450ee036 d6335014 34cac978
Curva B-233

r = 6901746346790563787434755862277025555839812737345013555379383634485463 Base polinomiale: b = 066 647ede6c 332c7f8c 0923bb58 213b333b 20e9ce42 81fe115f 7d8f90ad Px = 0fa c9dfcbac 8313bb21 39f1bb75 5fef65bc 391f8b36 f8f8eb73 71fd558b Py = 100 6a08a419 03350678 e58528be bf8a0bef f867a7ca 36716f7e 01f81052 Base normale: s = 74d59ff0 7f6b413d 0ea14b34 4b20a2db 049b50c3 b = 1a0 03e0962d 4f9a8e40 7c904a95 38163adb 82521260 0c7752ad 52233279 Px = 18b 863524b3 cdfefb94 f2784e0b 116faac5 4404bc91 62a363ba b84a14c5 Py = 049 25df77bd 8b8ff1a5 ff519417 822bfedf 2bbd7526 44292c98 c7af6e02

49

Curva m = 283

T=6 p(t ) = t 283 + t 12 + t 7 + t 5 + 1


Curva K-283

a=0 r = 3885337784451458141838923813647037813284811733793061324295874997529815 829704422603873 Base polinomiale: Px = 503213f 78ca4488 3f1a3b81 62f188e5 53cd265f 23c1567a 16876913 b0c2ac24 58492836 Py = 1ccda38 0f1c9e31 8d90f95d 07e5426f e87e45c0 e8184698 e4596236 4e341161 77dd2259 Base normale: Px = 3ab9593 f8db09fc 188f1d7c 4ac9fcc3 e57fcd3b db15024b 212c7022 9de5fcd9 2eb0ea60 Py = 2118c47 55e7345c d8f603ef 93b98b10 6fe8854f feb9a3b3 04634cc8 3a0e759f 0c2686b1
Curva B-283

r = 77706755689029162836778476272940756265696259243769048891091965267700442 77787378692871 Base polinomiale: b = 27b680a c8b8596d a5a4af8a 19a0303f ca97fd76 45309fa2 a581485a f6263e31 3b79a2f5 Px = 5f93925 8db7dd90 e1934f8c 70b0dfec 2eed25b8 557eac9c 80e2e198 f8cdbecd 86b12053 Py = 3676854 fe24141c b98fe6d4 b20d02b4 516ff702 350eddb0 826779c8 13f0df45 be8112f4 Base normale: s = 77e2b073 70eb0f83 2a6dd5b6 2dfc88cd 06bb84be b = 157261b 894739fb 5a13503f 55f0b3f1 0c560116 66331022 01138cc1 80c0206b dafbc951 Px = 749468e 464ee468 634b21f7 f61cb700 701817e6 bc36a236 4cb8906e 940948ea a463c35d Py = 62968bd 3b489ac5 c9b859da 68475c31 5bafcdc4 ccd0dc90 5b70f624 46f49c05 2f49c08c

Curva m = 409

T=4 p(t ) = t 409 + t 87 + 1 50

Curva K-409

a=0 r = 330527984395124299475957654016385519914202341482140609642324395022880 711289249191050673258457777458014096366590617731358671 Base polinomiale: Px = 060f05f 658f49c1 ad3ab189 0f718421 0efd0987 e307c84c 27accfb8 f9f67cc2 c460189e b5aaaa62 ee222eb1 b35540cf e9023746 Py = 1e36905 0b7c4e42 acba1dac bf04299c 3460782f 918ea427 e6325165 e9ea10e3 da5f6c42 e9c55215 aa9ca27a 5863ec48 d8e0286b Base normale: Px = 1b559c7 cba2422e 3affe133 43e808b5 5e012d72 6ca0b7e6 a63aeafb c1e3a98e 10ca0fcf 98350c3b 7f89a975 4a8e1dc0 713cec4a Py = 16d8c42 052f07e7 713e7490 eff318ba 1abd6fef 8a5433c8 94b24f5c 817aeb79 852496fb ee803a47 bc8a2038 78ebf1c4 99afd7d6
Curva B-409

r = 66105596879024859895191530803277103982840468296428121928464879830415777 4827374805208143723762179110965979867288366567526771 Base polinomiale: b = 021a5c2 c8ee9feb 5c4b9a75 3b7b476b 7fd6422e f1f3dd67 4761fa99 d6ac27c8 a9a197b2 72822f6c d57a55aa 4f50ae31 7b13545f Px = 15d4860 d088ddb3 496b0c60 64756260 441cde4a f1771d4d b01ffe5b 34e59703 dc255a86 8a118051 5603aeab 60794e54 bb7996a7 Py = 061b1cf ab6be5f3 2bbfa783 24ed106a 7636b9c5 a7bd198d 0158aa4f 5488d08f 38514f1f df4b4f40 d2181b36 81c364ba 0273c706 Base normale: s = 4099b5a4 57f9d69f 79213d09 4c4bcd4d 4262210b b = 124d065 1c3d3772 f7f5a1fe 6e715559 e2129bdf a04d52f7 b6ac7c53 2cf0ed06 f610072d 88ad2fdc c50c6fde 72843670 f8b3742a Px = 0ceacbc 9f475767 d8e69f3b 5dfab398 13685262 bcacf22b 84c7b6dd 981899e7 318c96f0 761f77c6 02c016ce d7c548de 830d708f Py = 199d64b a8f089c6 db0e0b61 e80bb959 34afd0ca f2e8be76 d1c5e9af fc7476df 49142691 ad303902 88aa09bc c59c1573 aa3c009a

Curva m = 571

T = 10 p(t ) = t 571 + t 10 + t 5 + t 2 + 1
Curva K-571

a=0

51

r = 19322687615086291723476759454659936721494636648532174993286176257257595 71144780212268133978522706711834706712800825351461273674974066617311929682421617 092503555733685276673 Base polinomiale: Px = 26eb7a8 59923fbc 82189631 f8103fe4 ac9ca297 0012d5d4 60248048 01841ca4 43709584 93b205e6 47da304d b4ceb08c bbd1ba39 494776fb 988b4717 4dca88c7 e2945283 a01c8972 Py = 349dc80 7f4fbf37 4f4aeade 3bca9531 4dd58cec 9f307a54 ffc61efc 006d8a2c 9d4979c0 ac44aea7 4fbebbb9 f772aedc b620b01a 7ba7af1b 320430c8 591984f6 01cd4c14 3ef1c7a3 Base normale: Px = 04bb2db a418d0db 107adae0 03427e5d 7cc139ac b465e593 4f0bea2a b2f3622b c29b3d5b 9aa7a1fd fd5d8be6 6057c100 8e71e484 bcd98f22 bf847642 37673674 29ef2ec5 bc3ebcf7 Py = 44cbb57 de20788d 2c952d7b 56cf39bd 3e89b189 84bd124e 751ceff4 369dd8da c6a59e6e 745df44d 8220ce22 aa2c852c fcbbef49 ebaa98bd 2483e331 80e04286 feaa2530 50caff60
Curva B-571

r = 38645375230172583446953518909319873442989273297064349986572352514515191 42289560424536143999389415773083133881121926944486246872462816813070234528288303 332411393191105285703 Base polinomiale: b = 2f40e7e 2221f295 de297117 b7f3d62f 5c6a97ff cb8ceff1 cd6ba8ce 4a9a18ad 84ffabbd 8efa5933 2be7ad67 56a66e29 4afd185a 78ff12aa 520e4de7 39baca0c 7ffeff7f 2955727a Px = 303001d 34b85629 6c16c0d4 0d3cd775 0a93d1d2 955fa80a a5f40fc8 db7b2abd bde53950 f4c0d293 cdd711a3 5b67fb14 99ae6003 8614f139 4abfa3b4 c850d927 e1e7769c 8eec2d19 Py = 37bf273 42da639b 6dccfffe b73d69d7 8c6c27a6 009cbbca 1980f853 3921e8a6 84423e43 bab08a57 6291af8f 461bb2a8 b3531d2f 0485c19b 16e2f151 6e23dd3c 1a4827af 1b8ac15b Base normale: s = 2aa058f7 3a0e33ab 486b0f61 0410c53a 7f132310 b = 3762d0d 47116006 179da356 88eeaccf 591a5cde a7500011 8d9608c5 9132d434 26101a1d fb377411 5f586623 f75f0000 1ce61198 3c1275fa 31f5bc9f 4be1a0f4 67f01ca8 85c74777 Px = 0735e03 5def5925 cc33173e b2a8ce77 67522b46 6d278b65 0a291612 7dfea9d2 d361089f 0a7a0247 a184e1c7 0d417866 e0fe0feb 0ff8f2f3 f9176418 f97d117e 624e2015 df1662a8 Py = 04a3642 0572616c df7e606f ccadaecf c3b76dab 0eb1248d d03fbdfc 9cd3242c 4726be57 9855e812 de7ec5c5 00b4576a 24628048 b6a72d88 0062eed0 dd34b109 6d3acbb6 b01a4a97

52

4.2 PANORAMICA SUGLI ATTACCHI A CRITTOSISTEMI


Per attaccare un sistema crittografico esistono un numero elevatissimo di modi diversi, dipendenti, ovviamente, dal metodo che si intende decrittare, una parte di essi sussistono solo a livello teorico. Nella restante parte di questo capitolo si illustreranno quelli che si sono ritenuti pi significativi dal punto di vista teorico o pratico, con particolare attenzione a quelli specifici per lattacco dei crittosistemi basati su curve ellittiche e agli attacchi basati su metodi statistici. Lattacco pi classico ad un qualsiasi crittosistema lattacco detto a forza bruta, che consiste nel calcolare tutte le possibili chiavi fino ad individuare quella che decifra il messaggio e lo rende di senso compiuto. Il principale problema di questo tipo di attacco che, nonostante lenorme supporto che un computer moderno pu dare, esso spesso computazionalmente intrattabile, cio, in parole povere, anche un computer molto potente, o molteplici computer che lavorano in parallelo, ci metterebbero centinaia, se non migliaia o milioni, di anni a risolvere il problema rendendo vano il calcolo. Supponiamo, per esempio, di voler effettuare un attacco a forza bruta al metodo crittografico classico di sostituzione semplice con un alfabeto di 21 lettere (come per lalfabeto italiano). Le combinazioni possibili di tutte le possibili sostituzioni semplici sono 21! 0.5109 10 20 , cio un numero di 20 cifre e supponendo un computer in grado di eseguire 10 9 operazioni al secondo, il calcolo avrebbe una durata di circa 1620 anni. Per questo gli attacchi a forza bruta non sono mai applicati. Un altro tipo di attacco spesso considerato, soprattutto per la crittografia moderna, lattacco matematico, cio un attacco che tenta di individuare, tramite risultati matematici dimostrati, un algoritmo che risolva il problema in questione con una complessit di calcolo temporalmente accettabile (solitamente una complessit di calcolo polinomiale). Il tipo di algoritmo di attacco dipende da quali aspetti matematici vengono impiegati nel crittosistema. Solitamente questi tipi di attacchi sono puramente teorici e servono semplicemente a testare la sicurezza matematica del metodo di cifratura e, nel caso si ritenga sufficientemente sicuro, ad individuare le precauzioni necessarie (come dimensioni e propriet delle crittovariabili scelte) per renderlo difficilmente attaccabile mediante algoritmi noti. La classe di attacchi pi importante nellutilizzo pratico , per, quella degli attacchi basati su metodi statistici su cui ci soffermeremo in seguito. Talvolta possibile che un crittosistema venga rotto, ci accade quando viene individuato un algoritmo che traduce in chiaro il testo cifrato in un tempo accettabile. La rottura di un sistema crittografico comporta perdita della sicurezza totale della riservatezza di un eventuale messaggio cifrato con esso. Questo non vuol dire per che tutti siano in grado di leggere tale messaggio, infatti lalgoritmo che permette la rottura del crittosistema potrebbe impiegare molto tempo per la decrittazione senza i mezzi adeguati e tali mezzi potrebbero non essere alla portata di tutti. Lalgoritmo in questione potrebbe, ad esempio, decrittare un messaggio in poche ore su un computer usato dalla CIA, mentre potrebbe metterci diversi giorni su un comune personal computer. Un esempio di un crittosistema che stato rotto il sistema delle somme parziali, di cui non esporremo i dettagli tecnici (per maggiori dettagli vedi [30]). Esso stato proposto da Merkle e Hellman nel 1978 ed stato rotto da Shamir et al. nel 1988. Esistono versioni successive e pi sofisticate rispetto a quella del 78 ma sono state rotte anchesse. Il metodo delle somme parziali non mai stato utilizzato, o almeno non su larga scala, di conseguenza la sua rottura comporta risvolti esclusivamente a livello teorico. Tuttavia esistono diversi motivi per ritenere che sia stato rotto un altro crittosistema, di ben maggior diffusione rispetto al precedente, ossia il DES (vedi [35]). Non ufficialmente noto se il DES sia stato rotto o meno, perch anche se lalgoritmo di rottura esistesse, finora esso sarebbe conosciuto esclusivamente dallagenzia per la sicurezza nazionale statunitense (NSA: National Security Agency), o da organizzazioni analoghe, sulle cui 53

scoperte scientifiche vige il segreto di stato. Comunque, come gi spiegato precedentemente, anche se lalgoritmo di decrittazione fosse noto al pubblico, ci non vorrebbe dire che i messaggi cifrati col DES sarebbero decrittabili da chiunque sia interessato a farlo. La rottura di un crittosistema di largo impiego non qualcosa che accade spesso, ma quando si verifica comporta diverse conseguenze sia da un punto di vista puramente teorico di ricerca scientifica, sia da un punto di vista totalmente pratico di applicazioni concrete per la protezione del contenuto di messaggi riservati.

4.2.1 Attacchi allRSA


Consideriamo adesso alcuni attacchi un po pi specifici utilizzabili contro il crittosistema RSA. Un primo attacco possibile allRSA risolvere lIFP e fattorizzare n nei suoi due fattori primi. Questo permette quindi di calcolare (n ) = ( p 1)(q 1) e, con questo, d e 1 mod (n ) . Unalternativa sarebbe individuare (n ) senza aver prima trovato p e q, ma questo si dimostra (vedi [28]) essere equivalente a fattorizzare n. Oppure si potrebbe cercare di determinare direttamente d dalla chiave pubblica (n, e ) , ma anche ci sembra avere la stessa difficolt computazionale. Tuttavia esistono alcuni algoritmi che riescono a fattorizzare n con una complessit computazionale accettabile in alcuni casi particolari. Per evitare questi casi si suggerisce di imporre su p e q i seguenti vincoli ulteriori: 1) la lunghezza di p e q deve differire di poche cifre; 2) sia p 1 che q 1 devono contenere fattori primi grandi; 3) mcd( p 1, q 1) deve essere piccolo. stato dimostrato che generare primi pseudo-casuali con le precedenti caratteristiche non computazionalmente pi oneroso che generare primi pseudo-casuali di uguale grandezza (vedi [34]). Un secondo tipo di attacco allRSA, ma anche a qualsiasi sistema a chiave pubblica con tempo di calcolo non prefissato, lattacco a tempo. Esso consiste nellinviare un numero sufficientemente grande di messaggi casuali e di calcolare il tempo che ci vuole per decifrarli, da esso si ricavano informazioni sui bit di d. Per evitare questo tipo di attacchi conviene introdurre un ritardo casuale del tempo di decifrazione dei messaggi ricevuti (per maggiori informazioni consultare [24], [25] e [36]). Un terzo tipo di attacco effettuabile allRSA un attacco del tipo testo cifrato scelto. La premessa per effettuare questo tipo di attacco che lavversario abbia la possibilit di scegliere alcuni testi cifrati ed ottenere in chiaro i corrispondenti messaggi. Supponiamo si voglia decrittare il messaggio m cifrato come c m e mod n inviato ad Alice che ha chiave pubblica (n, e ) e chiave privata ( p, q, d ) . Quello che si pu fare scegliere un intero casuale k e chiedere ad Alice la decodifica del testo cifrato scelto c1 ck e mod n da cui si ottiene m1 c1d mod n . A questo punto possiamo
d

calcolare m1 k 1 c1d k 1 (ck e ) k 1 c d k ed k 1 c d m mod n ed ottenere quindi il messaggio. Per difendersi da questo tipo di attacco si consiglia di aggiungere alcuni bit casuali nel messaggio da inviare, la procedura in realt pi complessa e per maggiori dettagli si rimanda al [36]. Per approfondimenti sugli attacchi allRSA consultare [4] e [25].

54

4.2.2 Attacco man-in-the-middle allo scambio delle chiavi di Diffie-Hellman


Un attacco efficace contro lalgoritmo di scambio delle chiavi di Diffie-Hellman lattacco noto come man-in-the-middle. In esso, lintruso (Eva), si pone, come dice il nome stesso dellattacco, in mezzo alla trasmissione di Alice e Bob, intercettando i rispettivi messaggi diretti da uno verso laltro. In questo modo Eva riesce a condividere con Alice e Bob due chiavi facendogli credere di aver condiviso una chiave tra loro. Eva ora sar quindi in grado di leggere qualsiasi messaggio inviato da Alice a Bob e viceversa senza che essi se ne rendano conto. Questattacco si pu schematizzare col seguente algoritmo:
Attacco man-in-the-middle:

Passo 0) Eva si prepara allattacco generando casualmente due chiavi private e1 e e2 ; Passo 1) Eva calcola le chiavi pubbliche d1 e d 2 ; Passo 2) Alice invia x a Bob; Passo 3) Eva intercetta x e invia d1 a Bob; Passo 4) Eva calcola k 2 x e2 mod p ;
b Passo 5) Bob riceve d1 e calcola k1 d 1 mod p ; Passo 6) Bob invia y ad Alice; Passo 7) Eva intercetta y e invia d 2 ad Alice; Passo 8) Eva calcola k1 y e1 mod p ; a Passo 9) Alice riceve d 2 e calcola k 2 d 2 mod p ; Passo 10) Alice e Bob credono di condividono la chiave k invece Bob ed Eva condividono la chiave k1 ed Alice ed Eva condividono la chiave k 2 .

Questo attacco pu essere evitato utilizzando le firme digitali, in quanto esse permetterebbero di avere la certezza che la chiave sia condivisa con la persona giusta.

4.3 ATTACCHI ELLITTICHE

CRITTOSISTEMI

BASATI

SU

CURVE

In questa sezione verranno analizzati gli attacchi che si basano sulla risoluzione dellECDLP, cio quelli che si propongono di trovare un algoritmo efficiente che calcoli il logaritmo discreto su curva ellittica. Si tenga presente che lECDLP fino ad ora considerato intrattabile, anche se ancora non nota una dimostrazione matematica di ci, di conseguenza per difendersi dagli attacchi di seguito considerati bastano in realt piccoli accorgimenti che verranno di volta in volta illustrati. Il primo, nonch il pi intuitivo, il metodo a forza bruta, cio il calcolo di kP; k = 0,..., n 1 finch non si ottiene Q. Ma questo metodo per valori di n sufficientemente grandi non applicabile poich la complessit computazionale O(n ) , lovvia difesa da questattacco una scelta di n grande (per esempio n 2 80 ).

55

4.3.1 Attacco Pohlig-Hellman


Questattacco riconduce la risoluzione dellECDLP al calcolo del logaritmo discreto nei sottogruppi a di P di ordine uguale ai fattori primi di n, dove n lordine di P. Quindi se n = p1a1 p 2 2 ... p rar si vuole calcolare
k1 k mod p1a1
a k 2 k mod p 2 2

... k r k mod p rar

e successivamente risolvere il sistema di congruenze k k1 mod p1a1 a k k 2 mod p 2 2 , ... k k mod p ar r r che ammette ununica soluzione k mod n per il teorema cinese del resto. Vediamo come calcolare k i k mod p iai riconducendosi ad ai logaritmi discreti. Scriviamo k in base p i :

k = b0 + b1 pi + b2 pi2 + ... + bai 1 piai 1 + bai piai + ... ,


con b j {0,1,..., p i 1}; j = 0,1,... . Quindi si ha che

k b0 + b1 pi + b2 pi2 + ... + bai 1 piai 1 k i mod piai .


Definiamo P0 =
n n P e Q0 = Q , dove P0 ha ordine p i , da cui si ha pi pi

Q0 =

n n n (b0 + b1 pi + ...)P = n b0 P + (b1 + ...)nP = Q= kP = pi pi pi pi n n b0 P + O = = b0 P = b0 P0 . pi pi


n (Q b0 P ) , da cui si pi2

Quindi b0 si ottiene risolvendo lECDLP in P0 . Ora si calcola Q1 = ottiene


Q1 =

n (kP b0 P ) = (k b0 ) n2 P = b1 pi + b2 pi2 + ... n2 P = (b1 + b2 pi + ...) n P = 2 pi pi pi pi n n n P + (b2 + ...)nP = b1 P + O = b1 = b1 P = b1 P0 . pi pi pi

56

Quindi anche b1 si ottiene risolvendo lECDLP in


Qt =

P0 . Si procede analogamente calcolando

n Q b0 P b1 p i P ... bt 1 pit 1 P e risolvendo Qt = bt P0 . pit +1 Per difendersi da questattacco dunque necessario che i fattori di n siano grandi, quindi solitamente si sceglie n primo.

4.3.2 Attacco Baby-step Giant-step


Questattacco stato proposto da Shanks nel 1973 ed ha complessit computazionale di calcolo e di memoria pari a O n , dove n lordine di P.

( )

Algoritmo Baby-step Giant-step:

Passo 1) si scelga un intero m n ; Passo 2) si calcoli mP ; Passo 3) si memorizza un vettore di m componenti iP; i = 0,..., m 1 ; Passo 4) si calcolino i punti Q jmP; j = 0,..., m 1 finch iP = Q jmP per qualche i e j; Passo 5) si ha che Q = kP con k i + jm mod n . Il precedente algoritmo funziona perch 0 k < n m 2 quindi si pu scrivere k = k 0 + mk1 , con k k0 tali che k 0 e k1 siano interi minori di m. Quando al passo 4) si ottiene k 0 k mod m e k1 = m i = k 0 e j = k1 si ha che Q k1 mP = kP k1 mP = (k mk1 )P = k 0 P . Il punto iP si calcola come iP = (i 1)P + P (baby-step), mentre il punto Q jmP viene calcolato come Q jmP = Q ( j 1)P mP (giant-step). Il difetto di questattacco lenorme occupazione di memoria richiesta per n sufficientemente grande, quindi la contromisura, gi considerata peraltro per lattacco a forza bruta, scegliere un n grande.

4.3.3 Attacco di Pollard


Questo algoritmo fu proposto da Pollard nel 1978, ha complessit computazionale di calcolo O n , come il Baby-step Giant-step, ma richiede poca memoria in quanto un algoritmo aleatorio e non deterministico e si basa sul paradosso del compleanno.

( )

Algoritmo di Pollard:

Passo 1) si partizioni P in L sottoinsiemi disgiunti di dimensione confrontabile {S1 , S 2 ,..., S L } (nelle applicazioni solitamente si ha L uguale a 16 o 32); Passo 2) si scelgano 2 L interi casuali 0 a s n 1 e 0 bs n 1 con s = 1,..., L ; 57

Passo 3) si scelga un punto iniziale casuale P1 = a1 P + b1Q ; Passo 4) si calcoli Pt +1 = Pt + a s P + bs Q se Pt S s , finch Pi = Pj ; i < j per qualche i e j; Passo 5) si considerino a i , bi , a j , b j tali che Pi = ai P + bi Q e Pj = a j P + b j Q ; Passo 6) si calcoli k (ai a j )(bi b j ) mod n .
1

Lalgoritmo funziona perch:


Pi = Pj

(a

a i P + bi Q = a j P + b j Q
i

a j )P = (bi b j )Q = (bi b j ) kP ,

da cui (ai a j ) (bi b j )k mod n . Il nome deriva dalla rappresentazione grafica dellalgoritmo che assomiglia ad una . Lalgoritmo non richiede molta memoria in quanto usa alcuni accorgimenti nella memorizzazione della successione che non saranno illustrati (per maggiori dettagli vedi [32]). Attualmente questo considerato il pi veloce algoritmo di risoluzione dellECDLP. Per difendersi da questattacco necessario aumentare ulteriormente il valore di n perch si deve ottenere che risulti alto n . Si consiglia n 2160 .

4.3.4 Attacchi a particolari curve


Esistono alcuni attacchi che sono particolarmente efficaci contro particolari famiglie di curve, ma non sono utili in generale. bene conoscere questi attacchi per evitare lutilizzo crittografico di tali famiglie vulnerabili di curve. Tra i pi noti c lattacco MOV (Menezes-Okamoto-Vanstone) che riesce a ricondurre lECDLP su E (Fq ) al DLP su Fq m dove esistono metodi pi rapidi di risoluzione finch m piccolo. possibile dimostrare che per le curve supersingolari si ottiene un m molto piccolo, di conseguenza esse sono fortemente vulnerabili allattacco MOV e questo il motivo per cui se ne sconsiglia il loro utilizzo. Se, invece, si utilizzano curve anomale E (F p ) esistono risultati indipendenti di Smart e di Araki e Satoh che permettono di risolvere lECDLP in tempo polinomiale su tali curve riconducendo lECDLP su E (F p ) al DLP su F p . Questi attacchi non funzionano su altre famiglie di curve, da qui il motivo per sconsigliare lutilizzo di curve anomale in crittografia. Per maggiori dettagli vedere [32].

4.4 ATTACCHI BASATI SU METODI STATISTICI


Gli attacchi basati su metodi statistici sono, in sostanza, i soli attacchi concreti che un intercettatore pu effettuare nel tentativo di decrittazione di un messaggio. Una parte di essi cerca di decrittare il messaggio avvalendosi della conoscenza delle frequenze dei caratteri (numeri o lettere) da individuare. Nel caso di attacchi statistici a crittosistemi utilizzati per cifrare messaggi di testo interviene, in maniera sostanziale, la statistica linguistica che si occupa, tra le altre cose, di analizzare le frequenze delle singole lettere (monogrammi), delle coppie di lettere (digrammi), delle terne di lettere (trigrammi) e delle parole allinterno di una lingua. Un altro attacco di tipo statistico 58

che ottiene spesso forti successi il metodo della parola probabile in cui si suppone di conoscere perlomeno lambito dellargomento del messaggio di testo inviato, a questo punto si cerca di individuare la cifratura di una parola (o gruppo di cifre) che molto probabilmente sar contenuta nel messaggio e, individuata quella, si passa a decrittare il resto del messaggio (vedi bibliografia [30]). In tutta la storia della crittografia gli attacchi di tipo statistico sono sempre stati i pi importanti ed efficienti. Praticamente tutte le volte che si riusc a decrittare dei messaggi il successo fu dovuto ad attacchi con il metodo della parola probabile e ad errori da parte dei cifratori. Ad esempio, nel noto caso della rottura delle cifrature della macchina Enigma, Turing si avvalse principalmente di due cose, la prima un team di circa mille persone tra matematici, statistici, logici, enigmisti, ecc, che effettuavano varie prove di diverse parole probabili nei testi cifrati intercettati e la seconda la disattenzione dei tedeschi che spesso non utilizzavano tutte le precauzioni che avrebbero dovuto, come non ripetere i messaggi, non usare due volte la stessa chiave, ecc. Nella crittografia moderna che sfrutta in maniera sostanziale la matematica, in particolare lalgebra astratta, e linformatica, gli attacchi di tipo statistico cos come erano stati utilizzati nei precedenti periodi storici hanno perso di efficacia. Il problema sostanziale che la statistica linguistica o la parola probabile non possono pi esserci daiuto in quanto i contenuti dei messaggi sono, nel migliore dei casi, numeri interi che codificano il testo del messaggio. Molto pi spesso per i messaggi non sono numeri naturali ma numeri in base 2 o punti di una curva ellittica, il che complica ulteriormente la corrispondenza tra messaggio e contenuto testuale. Inoltre ancora pi spesso, oggi, i messaggi inviati tramite la crittografia a chiave pubblica non sono nemmeno messaggi con contenuto testuale ma piuttosto codici numerici, cifre o file. Di conseguenza anche gli attacchi basati su metodi statistici devono modificarsi ed evolversi con levoluzione delle nuove tecnologie e dei nuovi crittosistemi. Un attacco, gi illustrato precedentemente in riferimento allRSA, che pu essere considerato un moderno attacco di tipo statistico lattacco a tempo. In questo tipo di attacco sono note, o comunque calcolabili, le statistiche riguardanti i tempi di calcolo di varie operazioni computazionali sia matematiche, come lesponenziazione, la modulazione o le somme tra punti di una curva ellittica, che pi strettamente informatiche come la decomposizione di un file in blocchi di codice binario o la conversione di un file da un protocollo ad un altro. Noti questi tempi possibile ricavare informazioni sul messaggio o sulla chiave inviando opportuni stimoli e calcolando i tempi di reazione del sistema attaccato. Un altro tipo di attacco potrebbe essere impostato calcolando le frequenze teoriche di alcuni blocchi o stringhe di bit in diversi specifici momenti di trasmissione dei dati e sfruttare questa conoscenza in maniera analoga alla conoscenza delle frequenze delle lettere in una lingua. Ovviamente, come nella statistica linguistica aiuta conoscere la lingua del messaggio, qui aiuta conoscere la struttura dello scambio dati che si intende attaccare. Tutto questo potrebbe raccogliersi in unopportuna branca del sapere che potrebbe denominarsi statistica informatica, dove con questo termine si vuole indicare quel settore che si occupa dello studio dei tempi di calcolo delle diverse operazioni informatiche e del calcolo delle frequenze dei blocchi di codice binario trasmessi nei diversi scambi di dati. Uno sviluppo di questi studi potrebbe portare serie minacce alla crittografia odierna, come la statistica linguistica lo ha fatto per molti cifrari classici, tuttavia al momento ci sono solo sporadiche tendenze di ricerca in questa direzione. Anche oggi, come in passato, il non rispettare alcune accortezze precauzionali potrebbe facilitare enormemente il compito dei decrittatori. Esempi possono essere: lasciare in un file non protetto chiavi o messaggi, utilizzare gli stessi valori dei parametri casuali per cifrare diversi messaggi o blocchi di bit, non rispettare le condizioni di sicurezza indicate precedentemente per difendersi dai diversi tipi di attacchi matematici noti, ecc. Ovviamente il livello di sicurezza del metodo di cifratura utilizzato deve essere calibrato allesigenza dellutente. Risulta evidente che la protezione delle mail scambiate tra due amici non sar la stessa dei messaggi scambiati tra la CIA e i suoi agenti, questo perch il contenuto dei messaggi avr un valore ben diverso nei due casi e

59

ovviamente gli intercettatori, nel secondo caso, saranno molti di pi e avranno mezzi molto pi potenti per tentare la decrittazione. In definitiva gli unici attacchi che realmente hanno effetto contro i pi disparati metodi di cifratura sono quelli di tipo statistico a condizione che vengano commessi errori o disattenzioni da parte di coloro che vogliono tenere segreto il messaggio, poich se vengono prese le adeguate precauzioni nessun metodo, statistico, matematico o informatico che sia, potrebbe mai decrittare i messaggi cifrati intercettati.

4.5 SOFTWARE PER LA CRITTOGRAFIA


Per concludere si far un accenno alle possibilit concrete che ci sono per tutti noi se fossimo desiderosi di proteggere i nostri file personali. La crittografia al giorno doggi non unesclusiva di soli governanti, diplomatici e servizi segreti, chiunque, se vuole ha la possibilit di proteggere i propri file. Ovviamente il livello di sicurezza disponibile al grande pubblico non lo stesso di governanti, diplomatici e servizi segreti, sia per motivi legati alle disponibilit dei necessari supporti (computer sufficientemente potenti) per il comune utente, sia per motivi di sicurezza nazionale. Su questultimo punto tuttora in aperto, soprattutto negli Stati Uniti (vedi [35]), un acceso dibattito non dissimile da quello sulle intercettazioni telefoniche attualmente in corso in Italia. Levento che ha causato questo dibattito stato il lancio su internet nel 1991 del software per la crittografia PGP (Pretty Good Privacy) da parte del crittografo Zimmermann. Il PGP oggi il software per la crittografia probabilmente pi usato nel mondo. Un corretto uso di esso garantisce livelli di sicurezza estremamente elevati per i comuni utenti ed tuttavia molto pratico da usare anche da chi sa poco o niente sulla crittografia. ipotesi diffusa che nemmeno la NSA sia in grado di decrittare un messaggio correttamente cifrato con il PGP. Esso non progettato per proteggere solo i dati trasmessi, ma anche quelli salvati su disco o in backup. Esiste anche un analogo open source del PGP sviluppato pi di recente in Germania (nel 1999), ed il GPG (GNU Privacy Guard) che fornisce funzioni del tutto analoghe. Un altro software molto diffuso, e molto simile al PGP nel funzionamento, il S/MIME (Secure/Multipurpose Internet Mail Extensions), la differenza sostanziale dal precedente che il S/MIME sfrutta un sistema con autorit certificativa mentre il PGP no. Oltre ai tre software appena citati, esistono un numero elevatissimo di implementazioni informatiche dei pi disparati crittosistemi. Effettuando ricerche sul web possibile trovare librerie di C++ e Java che implementano nei rispettivi linguaggi crittosistemi come RSA e la crittografia su curve ellittiche, programmi molto semplici che cifrano messaggi di testo tramite il cifrario di Cesare o la tavola di Vignre, programmi che proteggono le mail o la messaggistica istantanea (come quella di ICQ o MSN Messenger) o i dati su disco e via dicendo. Alcuni esempi di software crittografici open source oltre e GPG sono: CrypTool (per scopi didattici), FreeOTFE e TrueCrypt (per la protezione dei dati su disco), SimpLite (per la protezione della messaggistica istantanea). Tutto ci permette a chiunque lo desideri di ottenere un sufficiente livello di sicurezza garantendo quella privacy di cui ognuno sente la necessit.

60

A. APPENDICE MATEMATICA

Questa appendice si propone, per chi non ne fosse a conoscenza, di illustrare gli strumenti matematici di base utilizzati nel testo.

A.1 STRUTTUTRE ALGEBRICHE


In matematica per struttura algebrica si intende un insieme di elementi a cui vengono associate una o pi operazioni che soddisfano determinate propriet. Le strutture algebriche pi comunemente studiate sono i gruppi, gli anelli e i campi. Nel seguito le operazioni che considereremo associate agli insiemi saranno sempre binarie, cio operanti su due soli elementi dellinsieme. Inoltre, talvolta, ci si riferir alle operazioni con i termini di somma e prodotto senza che effettivamente esse risultino essere le operazioni cos denominate utilizzate nellaritmetica classica, i termini somma e prodotto ed eventuali altre notazioni riprese dallaritmetica vanno intese in senso pi generale.
Definizione: un insieme G a cui associata loperazione , si dice gruppo, indicato anche con (G ,) , se valgono:

1) 2) 3) 4)

a b G ; a , b G a (b c ) = (a b ) c; a, b, c G e G : a e = e a = a ; a G a G a G : a ( a ) = a a = e

(chiusura), (associativit), (elemento neutro), (elemento inverso).

Se vale anche la propriet: 5) a b = b a; a, b G (commutativit),

si dice che il gruppo abeliano o commutativo. Se il numero di elementi dellinsieme G finito allora il gruppo si dice finito e il numero di elementi del gruppo si dice ordine del gruppo, altrimenti il gruppo si dice infinito. In algebra astratta la potenza n-esima dellelemento a definita come la ripetizione di a a ... a per n volte. Inoltre si pone a 0 = e (lelemento neutro) e a n = (a 1 ) dellelemento inverso).
n

(potenza n-esima

Definizione: dato un gruppo G e un elemento a G , si dice ordine di un elemento il pi piccolo intero positivo n tale che a n = 1 . Se n non esiste lordine di a . Definizione: un gruppo G si dice ciclico se ogni elemento di G una potenza a k , con k intero, di almeno un elemento a G . Si dice che lelemento a genera il gruppo G o che a un generatore di G.

61

Un gruppo ciclico sempre abeliano e pu essere finito o infinito. Il gruppo ciclico generato da un elemento a spesso si indica con a .
Definizione: un insieme R a cui sono associate le operazioni e o , si dice anello, indicato anche con (R,,o) , se (R,) un gruppo abeliano (cio un gruppo abeliano rispetto alla somma) e inoltre valgono:

6) a o b R; a, b R 7) a o (b o c ) = (a o b ) o c; a, b, c R 8) a o (b c ) = a o b a o c; a, b, c R Se vale anche la propriet: 9) u F : a o u = u o a = a; a F

(chiusura rispetto al prodotto), (associativit del prodotto), (distributivit del prodotto rispetto alla somma).

(elemento neutro del prodotto),

si dice che lanello unitario. Se vale anche la propriet: 10) a o b = b o a; a, b R si dice che lanello commutativo.
Definizione: un insieme F a cui sono associate le operazioni e o , si dice campo, indicato anche con (F ,,o ) , se (F ,,o ) un anello commutativo unitario e inoltre valgono:

(commutativit del prodotto),

11) a F \ {e} a 1 G : a o a 1 = a 1 o a = u 12) se a o b = e a = e b = e; a, b F

(elemento inverso del prodotto), (annullamento del prodotto).

Definizione: si dice che un campo F ha caratteristica n, e si indica con char(F ) = n , se n il pi

piccolo numero intero tale che 1 +4+ ... + 1 = 1 = n 1 = 0 . Se tale numero non esiste, cio 1 1 24 3
n i =1

1
i =1

non mai uguale a zero, allora la caratteristica del campo zero.


Definizione: si dice che un campo F algebricamente chiuso se ogni polinomio di grado almeno uno, a coefficienti in F, ha tutte le radici in F. La chiusura algebrica del campo F, che si indica con F , un campo ottenuto dal precedente aggiungendo tutte le radici di tutti i polinomi a coefficienti in F.

anche possibile considerare e studiare funzioni tra insiemi dotati di struttura algebrica.
Definizione: dati due insiemi A e B dotati di analoga struttura algebrica e data una funzione f : A B , si dice che f un omomorfismo se conserva la struttura, cio supponendo che sia unoperazione di A e o sia la corrispondente operazione di B si deve avere che

f (m * n ) = f (m ) o f (n ); m, n A .
Quindi possibile costruire omomorfismi tra gruppi, tra anelli e tra campi. Nel caso la struttura abbia pi di una operazione, lomomorfismo deve preservarle tutte. Se lomomorfismo biiettivo 62

allora si dice isomorfismo. Se tra due insiemi dotati di struttura algebrica possibile costruire un isomorfismo, allora essi sono in realt lo stesso insieme in cui lunica cosa che cambia sono i nomi degli elementi poich ad ogni elemento del primo insieme associato uno e un solo elemento del secondo insieme e viceversa. Inoltre sempre possibile passare da un insieme allaltro se questo pu essere utile per facilitare eventuali calcoli.

A.2 ARITMETICA MODULARE


Laritmetica modulare studia come operare in alcuni particolari tipi di insiemi, ma prima di essa necessario introdurre alcuni concetti preliminari.
Definizione: si dice che un intero b 0 divide un intero a, e si indica con b | a , se la divisione di a per b d resto zero, cio se esiste un m intero tale che a = mb . Se b | a si dice che b un divisore di a. Teorema (di divisione): dato un intero a e un intero n 0 esistono e sono unici un intero q detto quoziente e un intero r detto resto tali che

a = qn + r ,
a con 0 r < n e q = , dove con x si indica il massimo intero minore o uguale a x. n Per la dimostrazione vedere [6] o [19].

Definizione: dato un intero a e un intero positivo n si definisce a mod n come il resto della divisione di a per n. Definizione: due interi a e b si dicono congrui modulo n se (a mod n ) = (b mod n ) e si indica con a b mod n .

Le congruenze godono delle seguenti propriet: 1) n | (a b ) a b mod n , 2) a b mod n b a mod n , 3) se a b mod n e b c mod n a c mod n .

(simmetria) (transitivit)

Laritmetica modulare segue grosso modo le stesse regole dellaritmetica tradizionale, con la differenza che gli insiemi in cui si svolgono le operazioni sono modulo n, cio insiemi di interi minori di n non negativi Z n = {0,1,..., n 1}. Questi insiemi vengono chiamati classi resto modulo n. In realt ogni intero di Z n rappresenta una classe dei resti, cio per ogni k Z n ed ogni a intero si ha [k ] = {a : a k mod n}. Ogni classe viene rappresentata dal pi piccolo intero k non negativo. Nellaritmetica modulare sono valide le seguenti propriet: 1) [(a mod n ) (b mod n )]mod n = (a b ) mod n , 63

2) [(a mod n ) (b mod n )]mod n = (a b ) mod n , 3) se (a + b ) (a + c ) mod n b c mod n , 4) se (ab) (ac ) mod n e a e n non hanno divisori comuni b c mod n . Si dimostra che, per ogni n, gli insiemi (Z n ,+ ) sono un gruppo abeliano e gli insiemi (Z n ,+,) sono

* ha Z n = { ,2,..., n 1} . 1 Definite le operazioni di aritmetica modulare nasce spontaneamente lidea di risolvere equazioni congruenziali e sistemi di equazioni congruenziali. Non approfondiremo la questione poich non rientra nel nostro interesse, tuttavia citeremo un importante risultato noto come teorema cinese del resto:

* un anello commutativo unitario. Gli insiemi (Z n ,+,) sono un campo se e solo se n primo. Con Z n si indica linsieme di elementi di Z n che ammettono inverso moltiplicativo, quindi se n primo si

Teorema (cinese del resto): ogni sistema del tipo

x k1 mod n1 x k mod n 2 2 , ... x k r mod nr


ammette soluzione, e in tal caso essa unica mod n1 n2 ...nr , se gli n1 , n2 ,..., nr presi a due a due non hanno divisori comuni. Un problema complesso nellambito dellaritmetica modulare il calcolo delle radici quadrate. Mentre tra gli interi un quadrato ha esattamente due radici (escluso 0), nellaritmetica modulare non necessariamente. Si riportano di seguito alcuni risultati di cui omessa la dimostrazione (vedi [26]).
Teorema: se a 0 mod n , allora a un quadrato modulo n e la sua unica radice quadrata modulo n 0. Teorema: dati un primo dispari p e un intero a che non ha divisori comuni con p, se a un quadrato modulo p allora a ha esattamente due radici quadrate distinte modulo p. Definizione: dati un primo p e un intero a che non ha divisori comuni con p, si dice che a un residuo quadratico modulo p se esiste un intero b tale che a b 2 mod p . Altrimenti a non un residuo quadratico modulo p.

Si noti che, per il teorema precedente, un residuo quadratico a 0 modulo p ha esattamente due radici.
Teorema: dati un intero dispari n > 2 e un intero a che non ha divisori comuni con n, se a un quadrato modulo n allora a ha almeno due radici quadrate distinte modulo n.

64

A.3 ALGORITMO DI EUCLIDE


Lalgoritmo di Euclide un semplice algoritmo che permette di trovare facilmente il massimo comun divisore tra due numeri.
Definizione: dati due interi a e b si dice massimo comun divisore di a e b, e si indica con mcd(a, b ) , lintero positivo c, tale che c divida sia a che b e che qualsiasi divisore di a e b sia divisore anche di c, o analogamente

mcd(a, b ) = max{k : k | a k | b},


con k N . O analogamente essendo d = mcd(a, b ) intero: 1) d 1 , 2) d | a e d | b , 3) d ' | a e d ' | b d ' | d . Dati due interi, almeno uno diverso da zero, possibile dimostrare (vedi [6]) che il massimo comun divisore esiste ed unico.
Definizione: due interi a e b si dicono coprimi o primi tra di loro o primi relativi, se non hanno nessun divisore comune eccetto 1 , o analogamente se mcd(a, b ) = 1 . Teorema: per ogni intero a non negativo e per ogni intero b positivo si ha

mcd(a, b ) = mcd(b, a mod b ) . ~ Dim: siano d, d , q e r tali che d = mcd(a, b ) , ~ d = mcd (b, r ) , a = bq + r .
Dalla relazione di divisibilit si ha che se n | a e n | b n | a bq = r se n | r e n | b n | bq + r = a . Quindi d tale che

d 1 d |a e d |b d '| a e d '| b d '| d ,


65

~ e d tale che ~ d 1 ~ ~ d |r e d |b
~ d '| r e d '| b d '| d ,

~ da cui segue, per lunicit del massimo comun divisore, che d = d .


c.v.d. Lalgoritmo di Euclide si basa sul precedente teorema:
Algoritmo di Euclide:

Passo 0) A = a, B = b ; Passo 1) se B = 0 allora mcd(a, b ) = A , altrimenti vai al passo 2); Passo 2) R = A mod B ; Passo 3) A = B, B = R e vai al passo 1). Unapplicazione dellalgoritmo di Euclide si ha nella ricerca delle soluzioni dellequazione diofantea lineare (per diofantea si intende che si ricercano solamente le soluzioni intere)
ax + by = d ; a, b, d Z .

Per lesistenza di tali soluzioni vale il seguente risultato:


Identit di Bzout: per ogni a e b interi non nulli, tali che mcd(a, b ) = d , allora esistono x, y Z tali che
ax + by = d .

I numeri x e y possono essere individuati tramite un procedimento noto come algoritmo di Euclide esteso in quanto si applica in maniera leggermente diversa lalgoritmo di Euclide. Essi, per, non sono determinati univocamente, infatti data una coppia di soluzioni (x0 , y 0 ) , si ha che
b a x0 k , y 0 k ; k Z , d d

una coppia di soluzioni.


Algoritmo di Euclide esteso:

sia mcd(a, b ) = d Passo 1) si calcoli a = bq1 + r1 da cui si ottiene r1 = a bq1 ; Passo 2) si calcoli b = r1 q 2 + r2 da cui si ottiene r2 = b r1q 2 ; Passo 3) si calcoli r1 = r2 q3 + r3 da cui si ottiene r3 = r1 r2 q3 ; 66

Passo n) si calcoli rn 2 = rn 1 q n + rn da cui si ottiene rn = rn 2 rn 1 q n = d ; Passo n + 1 ) si riscrive, sostituendo a ritroso, rn come combinazione lineare di a e b i cui coefficienti sono proprio gli x e y cercati.

A.4 NUMERI PRIMI


I numeri primi hanno affascinato i matematici fin dallantichit e sono tuttora un elemento fondamentale della teoria dei numeri. Il loro studio ancora oggi oggetto di molte ricerche, in particolare la loro distribuzione rispetto ai numeri interi e la distinzione, dato un numero, tra primo e non primo. Per maggiori informazioni sui numeri primi si vedano [10] e [28].
Definizione: un numero intero p > 1 si dice primo se e solo se i suoi unici divisori sono 1 e p , in caso contrario p si dice composto.

Di conseguenza si ha che se p primo allora p | ab p | a p | b , da cui discende per induzione che p | a1 a 2 ...a s i : p | ai .
Teorema (fondamentale dellaritmetica): ogni intero n > 1 pu essere scomposto in fattori nel seguente modo:
a n = p1a1 p 2 2 ... p rar ,

dove p1 < ... < p r sono primi, ogni ai un intero positivo e tale fattorizzazione unica.

Dim: consideriamo la formulazione equivalente n = p1 p 2 ... p s con p1 , p 2 ,..., p s primi non necessariamente distinti e s r . Dimostriamo lesistenza per induzione. Il caso n = 1 (cio s = 0 ) ovvio. Ipotesi induttiva: il teorema vale per tutti i naturali n 1. Se n primo n = n (cio s = 1). Se n non primo n = ab con 1 < a < n; 1 < b < n allora per ipotesi induttiva a = 1 2 ... m e b = 1 2 ... k da cui, ponendo

67

p1 = 1 p2 = 2 ... pm = m p m +1 = 1 pm+2 = 2 ... pm+k = k m+k = s

si ha

ab = 1 2 ... m 1 2 ... k = p1 p 2 ... p s = n .


Dimostriamo lunicit per assurdo. Si abbia n = p1 p 2 ... p s = q1 q 2 ...q h p1 | n = q1 q 2 ...q h i : p1 | qi ma poich anche qi primo si ha p1 = qi , quindi p 2 ... p s = q1 q 2 ...qi 1 qi +1 ...q h e proseguendo con ragionamento analogo fino allesaurimento dei fattori si ottiene la tesi. c.v.d. Il precedente teorema vale anche per n < 0 poich n = n , ma non necessariamente vero in ogni struttura algebrica, in taluni casi pu capitare che la scomposizione non sia unica.
Teorema (di Euclide): i numeri primi sono infiniti.

Dim: sia P = {p1 ,..., p n } linsieme di tutti i numeri primi. Si consideri il numero a = p1 p 2 ... p n + 1 , esso non divisibile per nessuno dei primi in P in quanto avrebbe sempre resto 1, quindi o primo, o esiste un primo p j P che lo divide. In entrambi i casi P non linsieme di tutti i numeri primi. c.v.d.
Teorema (di Fermat): se p primo e a un intero positivo coprimo con p, allora:

a p 1 1 mod p

1 Dim: sia C = { ,..., p 1} linsieme di tutti i numeri interi positivi minori di p. Si moltiplichi ogni elemento dellinsieme C per a mod p , ottenendo linsieme X = {a mod p, 2a mod p,..., ( p 1) a mod p} .
Nessun elemento di X uguale a zero dato che p non divide a. Inoltre, in X, non esistono due elementi uguali tra loro, infatti si supponga
ja ka mod p

68

con 1 j < k p 1 . Poich a e p sono coprimi, si ottiene


j k mod p ,

ma essa impossibile dato che j e k sono interi positivi diversi tra loro e minori di p. Di conseguenza si pu affermare che X formato dagli stessi elementi di P. Moltiplicando gli elementi dei due insiemi modulo p, si ottiene

a 2a ... ( p 1) a 1 2 ... ( p 1) mod p , a p 1 ( p 1)! ( p 1)! mod p ,


poich ( p 1)! e p sono coprimi si ha

a p 1 1 mod p .
c.v.d. Del teorema precedente non vale il viceversa, cio se vale a p 1 1 mod p non detto che p sia primo. Una funzione molto importante in teoria dei numeri la funzione toziente di Eulero. Essa definita come il numero di interi positivi minori di n e coprimi con n. Cio:

( n ) = n 1
pP p| n

1 . p

dove P linsieme dei numeri primi. Si pone, per convenzione

(1) = 1 .
Inoltre se p e q sono primi con p q e n = pq si ha

( p) = p 1 , (n) = ( pq) = ( p) (q) = ( p 1)(q 1) .


Teorema (di Eulero): per ogni a e n coprimi si ha:
a ( n ) 1 mod n

dove (n) la funzione toziente.

Dim: sia X = {x1 ,..., x (n ) } linsieme di tutti i numeri interi positivi minori di n e coprimi con n. Si
moltiplichi ogni elemento dellinsieme X per a mod n , ottenendo linsieme
S = {ax1 mod n, ax 2 mod n,..., ax (n ) mod n}.

69

Poich sia a che xi S sono coprimi con n, anche axi coprimo con n. Quindi tutti gli elementi di S sono interi minori di n e coprimi con esso. Inoltre, in S, non esistono due elementi uguali tra loro, infatti si supponga
ax i ax j mod n

con 1 xi < x j x (n ) . Poich a e n sono coprimi, si ottiene


xi x j mod n ,

ma essa impossibile dato che xi e x j sono interi positivi diversi tra loro e minori di n. Di conseguenza si pu affermare che S formato dagli stessi elementi di X. Moltiplicando gli elementi dei due insiemi modulo n, si ottiene

(axi mod n ) = xi ,

(n )
i =1

(n )
i =1

ax x
i i =1

(n )

(n )
i =1

mod n ,

a (n ) xi xi mod n
i =1 i =1

(n )

(n )

poich

x
i =1

(n )

e n sono coprimi si ha

a ( n ) 1 mod n .

c.v.d.

A.5 COMPLESSIT COMPUTAZIONALE


Quando si ha che fare con algoritmi una cosa molto importante da considerare la cosiddetta complessit computazionale. La notazione utilizzata nota come notazione asintotica ed la seguente:
Definizione: data una funzione f (n ) si definiscono gli spazi funzionali:

O( f (n )) = {g (n ) : c > 0, n0 0 tali che g (n ) cf (n )n n0 } , ( f (n )) = {g (n ) : c > 0, n0 0 tali che g (n ) cf (n )n n0 }, ( f (n )) = {g (n ) : c1 , c 2 > 0, n0 0 tali che c1 f (n ) g (n ) c 2 f (n )n n0 },


dove n solitamente la dimensione dellinput dellalgoritmo. Valgono inoltre le seguenti propriet:

70

1) g (n ) O( f (n )) f (n ) ( g (n )) , 2) g (n ) ( f (n )) f (n ) ( g (n )) , g (n ) O( f (n )) 3) g (n ) ( f (n )) . g (n ) ( f (n )) La notazione asintotica permette di ignorare sia le costanti moltiplicative che i termini di ordine inferiore.
Esempio: si consideri la funzione g (n ) = 3n 2 + 10n , si ha che:

g (n ) O(n 2 ) , infatti se c = 4 e n0 = 10 si ha 3n 2 + 10n 4n 2 per n 10 , g (n ) (n 2 ) , per la propriet 3) precedente. g (n ) (n 2 ) , infatti se c = 1 e n0 = 0 si ha 3n 2 + 10n n 2 per n 0 ,

Inoltre si pu facilmente mostrare che g (n ) O(n 3 ) ma g (n ) (n 3 ) . Dalla precedente definizione seguono:


Definizione: Un algoritmo A ha costo di esecuzione O( f (n )) su input di dimensione n rispetto ad una data risorsa di calcolo, se la quantit r di risorsa sufficiente per eseguire A su un qualunque input di dimensione n verifica la relazione r (n ) O( f (n )) . Definizione: Un problema P ha complessit O( f (n )) rispetto ad una data risorsa di calcolo, se esiste un algoritmo che risolve P il cui costo di esecuzione rispetto a quella risorsa O( f (n )) . Definizione: Un algoritmo A ha costo di esecuzione ( f (n )) su input di dimensione n rispetto ad una data risorsa di calcolo, se la massima quantit r di risorsa necessaria per eseguire A su un qualunque input di dimensione n verifica la relazione r (n ) ( f (n )) . Definizione: Un problema P ha complessit ( f (n )) rispetto ad una data risorsa di calcolo, se ogni algoritmo che risolve P ha costo di esecuzione rispetto a quella risorsa ( f (n )) .

Le precedenti forniscono una delimitazione superiore ed inferiore rispettivamente, della complessit di un determinato problema rispetto ad una data risorsa di calcolo. Le risorse solitamente considerate sono lo spazio di memoria e la velocit di esecuzione, poich esse sono quelle che, al livello attuale della tecnologia, maggiormente limitano le nostre possibilit di calcolo. Se si considera lo spazio di memoria allora si intende stimare la quantit di memoria di un computer necessaria per lesecuzione di un determinato algoritmo, mentre se si considera la velocit di esecuzione si cerca di stimare il tempo necessario per ottenere loutput dellalgoritmo considerato. Le classi di complessit solitamente considerate sono la complessit logaritmica O(log n ) , la complessit polinomiale O(n k ); k > 1 e la complessit esponenziale O(k n ); k > 1 . Riportiamo nella tabella seguente il tempo approssimato che un computer impiegherebbe a portare a termine un algoritmo al variare della complessit e della dimensione dellinput, supponendo che il computer effettui 10 9 operazioni al secondo.

71

n 2 10 100 1000 10000

log 2 n
10 9 sec 0.3322 10 8 sec 0.6644 10 8 sec 0.9966 10 8 sec 0.13288 10 7 sec

n log 2 n
0.2 10 8 sec 0.3322 10 7 sec 0.6644 10 7 sec 0.9966 10 7 sec 0.13288 10 6 sec

n2 0.4 10 8 sec 10 7 sec 10 5 sec 10 3 sec 10 1 sec

n3 0.8 10 8 sec 10 6 sec 10 3 sec 1 sec 15 min

2n 0.4 10 8 sec 0.1024 10 5 sec 0.402 1014 anni 0.3398 10 285 anni 0.6326 10 2994 anni

Tabella 3: tempi di calcolo.

Osservando i risultati della precedente tabella risulta quasi spontanea la seguente classificazione:
Definizione: un problema si dice intrattabile, rispetto ad una risorsa di calcolo, se non esiste un algoritmo di complessit al pi polinomiale, rispetto a quella risorsa, che lo risolve.

Ovviamente per avere la possibilit di calcolare concretamente la soluzione il problema non deve essere intrattabile rispetto a nessuna risorsa di calcolo.

72

BIBLIOGRAFIA
[1] Agrawal M., Kayal N., Saxena N. (2002), Primes is in P, disponibile sul sito http://www.cse.iitk.ac.in/users/manindra/algebra/primality_v6.pdf. [2] Blake I., Seroussi G., Smart N. P. (1999), Elliptic Curve in Cryptography, Cambridge: University Press. [3] Blake I., Seroussi G., Smart N. P. (2005), Advances in Elliptic Curve Cryptography, Cambridge: University Press. [4] Boneh D. (1999), Twenty Years of Attacks on the RSA Cryptosystem, Notices of the American Mathematical Society. [5] Brown M., Hankerson D., Lopez J., Menezes A., Software Implementation of the NIST Elliptic Curves Over Prime Fields, disponibile sul sito http://www.eng.auburn.edu/users/hamilton/security/pubs/Software_Implementation_of_the_NIST _Elliptic.pdf. [6] Campanella G. (2005), Appunti di algebra, Roma: Nuova Cultura. [7] Canetti R., Friedlander J., Konyagin S., Larsen M., Lieman D., Shparlinski I. (2000), On the statistical properties of Diffie-Hellman distributions, Israel Journal of Mathematics, 120, pag. 2346. [8] Canetti R., Friedlander J., Shparlinski I. (1999), On certain exponential sums and the distribution of the Diffie-Hellman triples, J. London Math. Soc., 59, pag. 799-812. [9] Chou W., Elliptic Curve Cryptography and Its Applications to Mobile Devices, disponibile sul sito http://www.cs.umd.edu/Honors/reports/ECCpaper.pdf. [10] Crandall R., Pomerance C. (2001), Prime Numbers: A Computational Perspective, New York: Springer-Verlag. [11] De Santis A. (2001), Crittosistemi basati su Curve Ellittiche, disponibile sul sito http://www.dia.unisa.it/~ads/corso-security/www/CORSO-0001/ECC/index.htm. [12] Demetrescu C., Finocchi I., Italiano G. F. (2004), Algoritmi e strutture dati, Milano: McGrawHill. [13] Diffie W. (1988), The First Ten Years of Public-Key Cryptography, Proceedings of the IEEE. [14] Diffie W., Hellman M. E. (1976), Multiuser Cryptographic Techniques, IEEE Transaction on Information Theory, n. 43. [15] Diffie W., Hellman M. E. (1976), New Directions in Cryptography, IEEE Transaction on Information Theory, n. 43. [16] Du Sautoy M. (2003), LEnigma dei Numeri Primi, Milano: RCS Libri S.p.a. 73

[17] El Gamal T. (1985), A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms, IEEE Transaction on Information Theory. [18] Hankerson D., Menezes A., Vanstone S. (2004), Guide to Elliptic Curve Cryptography, New York: Sprinter. [19] Howlett R., An Undergraduate Course in Abstract Algebra, disponibile sul sito http://www.maths.usyd.edu.au/u/bobh/UoS/rfwhole.pdf. [20] Johnson D., Menezes A. (1999), The Elliptic Curve Digital Algorithm, disponibile sul sito http://www.dia.unisa.it/~ads/corso-security/www/CORSO-0001/ECC/allegati/ecc.pdf. [21] Kerckhoffs A. (1883), La cryptographie militaire, Journal des sciences militaries, 9. [22] Koblitz N. (1987), A course in number theory and cryptography, Springer-Verlag. [23] Koblitz N., Menezes A. (2004), A Survey of Public-key Cryptosystems, disponibile sul sito http://www.cacr.math.uwaterloo.ca/~ajmeneze/publications. [24] Kocher P. (1996), Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS and Other Systems, Proceedings Crypto 96. [25] Languasco A., Zaccagnini A. (2004), Introduzione alla Crittografia, Milano: Hoepli Editore. [26] Leonesi S., Toffalori C. (2006), Numeri e crittografia, Milano: Springer-Verlag. [27] Morra A. (2004), Curve ellittiche su campi finiti: alcune applicazioni alla crittografia, Padova: universit degli Studi di Padova. [28] Ribenboim P. (1996), The New Book of Prime Number Records, New York: Springer-Verlag. [29] Rivest R., Shamir A., Adleman L. (1978), A Method for Obtaining Digital Signatures and Public Key Cryptosystems, Communications of the ACM, pag. 120-126. [30] Rizzi A. (2008), Crittografia: Dai cifrari classici alla sicurezza web, Roma: CISU. [31] Rosing M. (1999), Implementing Elliptic Curve Cryptography, Greenwich: CT Manning Publications. [32] Salvalaggio G. (2005), Crittografia basata su curve ellittiche, Venezia: universit Ca Foscari. [33] Silverman J. H. (1986), The Arithmetic of Elliptic Curves, Springer-Verlag. [34] Silverman R. (1997), Fast generation of random, strong RSA primes, Crypto-Bytes, a RSA Labs technical newsletter. [35] Singh S. (1999), Codici e Segreti, Milano: Rizzoli. [36] Stallings W. (2004), Crittografia e Sicurezza delle Reti, Milano: McGraw-Hill. [37] Stinson D. (2002), Cryptography: Theory and Practice, Boca Ranton FL: CRC Press. 74

[38] Trujillo-Olaya V., Velasco-Medina J., Lopez-Hernandez J. C. (2006), Design of gaussian normal and polynomial basis multipliers over GF(2163), Cali, Colombia, disponibile sul sito http://www.iberchip.org/iberchip2006/ponencias/80.pdf. [39] Washington L. C. (2003), Elliptic Curves, Number Theory and Cryptography, Chapman and Hall/CRC Press.

Sitografia:

Sito Certicom: http://www.certicom.com/index.php/ecc. Sito CrypTool: http://www.cryptool.org/. Sito FreeOTFE: http://www.freeotfe.org/. Sito GPG: http://www.gnupg.org/index.html. Sito NIST: http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf. Sito PGP: http://www.pgp.com/. Sito SimpLite: http://www.secway.fr/us/index.php. Sito TrueCrypt: http://www.truecrypt.org/.

75

ABBREVIAZIONI
AES: Advanced Encryption Standard. DES: Data Encryption Standard. DHP: Diffie-Hellman Problem. DLP: Discrete Logarithm Problem. DSA: Digital Signature Algorithm. DSS: Digital Signature Standard. ECC: Elliptic Curve Cryptography. ECDH: Elliptic Curve Diffie-Hellman. ECDHP: Elliptic Curve Diffie-Hellman Problem. ECDLP: Elliptic Curve Discrete Logarithm Problem. ECDSA: Elliptic Curve Digital Signature Algorithm. ECIES: Elliptic Curve Integrated Encryption System. ECMQV: Elliptic Curve Menezes-Qu-Vanstone. FIPS PUB: Federal Information Processing Standards Publication. GF: Galois Field. GNB: Gaussian Normal Basis. GPG: GNU Privacy Guard. IFP: Integer Factorizing Problem. MOV: Menezes-Okamoto-Vanstone. NIST: National Institute of Standard and Technology. NSA: National Security Agency. PGP: Pretty Good Privacy. RSA: Rivest-Shamir-Adleman. S/MIME: Secure/Multipurpose Internet Mail Extensions. SEA: Schoof-Elkies-Atkin. SHA: Secure Hash Algorithm. SST: Satoh-Skiernaa-Taguchi.

76

Potrebbero piacerti anche