Test di primalità basato sulle curve ellittiche (ECPP)
Sia n un numero naturale dispari maggiore di 3.
(1) Si scelgono dei numeri naturali a,b, u , v tali che
(4a3+27b2,n)=1 e [v]n2=[u]n3+[a]n[u]n+[b]n
(2) Si pone E={(σ,τ) є Zn2 | τ2=σ3+[a]nσ+[b]n}U{Ω}, dove Ω è un ente non appartenente a Zn2
Si tenga a questo punto presente che se n è primo, allora l’insieme E e’ una curva ellittica, e quindi tutti gli algoritmi applicabili ad una curva ellittica, se applicati all’insieme E, devono giungere a termine e dare risultati compatibili con la teoria delle curve ellittiche.
(3) Si applica all’insieme E un algoritmo che permette di calcolare l’ordine di una curva ellittica.
(4) Se l’algoritmo di cui al punto (3) non giunge a termine, n non è primo
Se l’algoritmo di cui al punto (3) dà come risultato un numero m che non verifica la condizione
, n non è primo
Se l’algoritmo di cui al punto (3) dà come risultato un numero m che verifica la condizione , si procede con il
punto (5)
(5) Si applicano le formule che permettono di calcolare i multipli dei punti di una curva ellittica per calcolare m([u]n,[v]n)
(6) Se il calcolo di cui al punto (5) non giunge a termine, n non è primo
Se il calcolo di cui al punto (5) dà come risultato un elemento di E diverso da Ω, n non è primo
Se il calcolo di cui al punto (5) dà come risultato Ω, si procede con il punto (7)
(7) Per andare avanti, bisogna trovare un numero “probabilmente primo” che divide m ed è maggiore di
(8) Si supponga di aver trovato un numero q “probabilmente primo” che divide m ed è maggiore di . Allora si applicano le
formule che permettono di calcolare i multipli dei punti di una curva ellittica per calcolare
(9) Se il calcolo di cui al punto (8) non giunge a termine, n non è primo
Se il calcolo di cui al punto (8) dà come risultato Ω, bisogna cercare un altro valore di q
Se il calcolo di cui al punto (8) dà come risultato un elemento di E diverso da Ω, si procede con il punto (10)
(10) Per il Teorema 18.4 la risposta è: SE q E’ PRIMO, ALLORA ANCHE n E’ PRIMO
(11) Si applica a q lo stesso algoritmo applicato ad n (cioè i passi da (1) a (10)): si tenga presente che si sta operando su un numero
q che ha le seguenti caratteristiche:
, mentre
Conclusioni
(12) Applicando ripetutamente i passi da (1) a (11), se l’algoritmo giunge a conclusione, si riescono a determinare dei numeri q1=q ,…, qt tali che per ciascun qi esistono numeri naturali ai ,bi ,mi ,ui ,vi tali che:
(a) ai ,bi ,mi ,qi+1, ui ,vi verificano le condizioni (1)-(3) del Teorema 18.4
(b) |mi-(qi+1)|≤2
(c) qt è sufficientemente piccolo da poter verificare che qt è certamente primo
(13) Dalla condizione (a) segue che per ciascun i, se qi+1 è primo, allora è primo anche qi ;
dalla condizione (c) segue quindi che n è primo;
(14) si può dimostrare che t=O(log n).
(15) i numeri ai , bi , mi , qi , ui , vi costituiscono un certificato di primalità per n.
Questo test di primalità è basato sull’applicazione del Teorema 13.6.
AKS sono le iniziali dei cognomi di Manindra Agrawal, Neeraj Kayal, Nitin Saxena, i tre studiosi indiani che nell’estate del 2002
pubblicarono l’algoritmo che stiamo per descrivere.
Sia n un numero naturale dispari maggiore di 3.
(1) Si calcola (e ciò richiede un tempo polinomiale) per ogni h≤log2n ,
(2) Se per qualche h≤log2n , è un numero intero, allora n non è primo
se per ogni h≤log2n , non è un numero intero, allora n non è una “potenza perfetta”, e si procede con il punto (3)
(3) Si trova un numero r=O((log2n)5), tale che r è il minimo intero positivo per il quale il periodo di [n]r in Zr* è maggiore di (log2n)2.
Qui non si descrive il procedimento attraverso il quale si realizza lo step (3), ma è opportuno menzionare il fatto che esso richiede
un tempo polinomiale.
(4) Per ogni numero naturale ≤r si controlla che sia coprimo con n (altrimenti n non è primo).
(5) Per ogni intero positivo si opera nel seguente modo: si considerano i polinomi f(x) e k(x) tali che f(x) = xj + a, dove j è il resto della divisione euclidea di n per r, e k(x) è il polinomio di grado minore di r che si ottiene come rappresentante del laterale ((x + a) + I)n appartenente all’anello quoziente Z[x]/I, dove I è l’ideale generato dal polinomio xr − 1 (si tenga presente che ((x + a) + I)n si calcola con il metodo dei quadrati ripetuti).
Si verifica se esistono polinomi h(x), g(x) ∈ Z[x] tali che k(x) − f(x) = (xr − 1)h(x) + ng(x); se
ciò accade, la stessa condizione è verificata dalla differenza (x + a)n − (xn + a), e quindi n è primo per il Teorema 13.10.
La divulgazione dell’algoritmo AKS suscitò subito grande interesse; negli anni successivi sono stati realizzate, allo scopo di
migliorarne l’efficienza, diverse variazioni, alcune delle quali ad opera degli stessi Agrawal, Kayal e Saxena.
Per un approfondimento su questo punto, si veda l’algoritmo di Agrawal-Kayal-Saxena.
Le curve ellittiche possono essere utilizzate anche per cercare di fattorizzare un numero che si sa non essere primo.
Sia n un numero composto dispari, del quale si sta cercando un divisore non banale d.
Si supponga che n non sia divisibile né per 2 né per 3.
Si calcola (e ciò richiede un tempo polinomiale) per ogni h≤log2n ,
Se per qualche h≤log2n , è un numero intero, allora si è individuato un divisore non banale di n.
Si supponga allora che per ogni h≤log2n , non è un numero intero, cioè che n non sia una “potenza perfetta”.
Si scelgano ora due numeri interi a e b.
Si supponga allora che sia (4a3+27b2 ,n)=1,
ne segue che per ogni divisore primo p di n, l’equazione
y2=x3+[a]px+[b]p
definisce una curva ellittica su Zp , che indicheremo con Ep .
Si tenga inoltre presente che l’equazione
y2=x3+ax+b
definisce una curva ellittica sul campo razionale, che indicheremo con E.
Si sceglie ora una coppia Q=(u,v) di numeri razionali che verifichino le seguenti condizioni:
(1) Q appartiene ad E (sicchè Qp =([u]p ,[v]p) è un punto di Ep)
(2) i denominatori di u e v sono coprimi con n.
Si sceglie poi un numero k che sia prodotto di “potenze piccole” di “primi piccoli” e si calcola il multiplo kQ di Q in E.
Per ogni divisore h di k, dopo aver calcolato il multiplo hQ, si applica l’algoritmo delle divisioni successive per calcolare il massimo
comun divisore tra n e ciascuno dei denominatori delle coordinate di hQ.
La speranza è che esista un primo p divisore di n tale che k sia multiplo del periodo m di Qp ; se ciò accade, il multiplo mQp di Ep è
l’elemento neutro di Ep , e quindi calcolando il massimo comun divisore tra n e ciascuno dei denominatori delle coordinate di mQ, si
troverà un divisore non banale di n.
Cerchiamo, ad esempio di fattorizzare con questo metodo il numero 39.
Proviamo con a=1 e b=-1.
Si ha (4a3+27b2 ,n)=(31,39)=1
Si userà la curva ellittica E sul campo razionale di equazione y2=x3+x-1.
Si sceglierà il punto Q=(1,1).
Si proverà a fattorizzarlo con k=4.
2Q=2∙(1,1)=(2,-3)
4Q=2(2Q)=2∙(2,-3)=(25/36 , 37/216)
Si calcola il massimo comun divisore tra 39 e 36, che è 3: si è dunque trovato un divisore non banale di 39.
Il risultato ottenuto dipende dal fatto che nella curva ellittica E3, il punto ([2]3 , [-3]3 )=([2]3 , [0]3 ) ha periodo 2.
1. Espansione di un numero naturale in base b e complessità computazionale delle operazioni elementari
2. Complessità dell'algoritmo delle divisioni successive
3. Struttura dell'anello degli interi modulo m, funzione di Eulero
4. Equazioni congruenziali lineari e Teorema Cinese del Resto
5. Teorema di Fermat-Eulero e Piccolo teorema di Fermat. Alcune proprietà dei gruppi ciclici finiti
6. Cifrario di Cesare. Cifrario di Vigenere. Metodo di Hill
7. Richiami sui campi finiti. Generalità sulle curve ellittiche
10. RSA. Sistema di di Massey-Omura. Sistema di El Gamal
11. Immersione dei testi in chiaro e sistemi crittografici in una curva ellittica
12. Resti quadratici e simbolo di Legendre
13. Condizioni necessarie e condizioni sufficienti per la primalità; forme di pseudoprimalità
15. Test di Solovay-Strassen e Test di Miller-Rabin
16. Test di primalità basato sulle curve ellittiche e test AKS