• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Elliptic Curve Method di Lenstra
 

Elliptic Curve Method di Lenstra

on

  • 3,519 views

Slide presentata per l'esame di Crittografia

Slide presentata per l'esame di Crittografia

Statistics

Views

Total Views
3,519
Views on SlideShare
3,483
Embed Views
36

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 36

http://www.giuseppespecchio.it 34
http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Elliptic Curve Method di Lenstra Elliptic Curve Method di Lenstra Presentation Transcript

    • Elliptic Curve Method Giuseppe Specchio
    • Cosa è ECM
      • L'Elliptich Curve Method (o Metodo delle Curve Ellittiche) è un algoritmo di fattorizzazione di ordine subesponenziale ideato nel 1985 by H. W. Lenstra, il quale fa uso appunto di Curve Ellittiche.
      • La particolarità di tale algoritmo è dovuto dal fatto che la sua complessità di calcolo dipende fortemente dalle dimensioni del suo fattore primo più piccolo e non tanto dalla lunghezza del numero n da fattorizzare.
      • ECM è il terzo algoritmo di fattorizzazione in termini di velocità. Questi segue in ordine di efficienza il Quadratic Sieve (QS, c.d. Crivello Quadratico) ed il Number Field Sieve (NFS c.d. Crivello dei Campi dei Numeri).
      • ECM risulta essere il migliore algoritmo di fattorizzazione di numeri che hanno divisori d i 20 - 25 cifre (ovvero da 64 a 83 bits).
    • Perchè le Curve Ellittiche? [1/2]
      • La maggior parte dei prodotti e degli standard che utilizzano la crittografia a chiave pubblica per la crittografia e le firme digitali utilizza l'algoritmo RSA.
      • La lunghezza delle chiavi per l'utilizzo sicuro di RSA è aumentata nel corso degli ultimi anni e questo ha sottoposto alle applicazioni che utilizzano RSA ad un maggiore carico elaborativo.
      • Questo tipo di carico ha delle implicazioni, specialmente per siti di e -commerce e sistemi di strong authentication basati su Smart Card.
      • Il principale interesse di sistemi crittografici basati su Curve Ellittiche rispetto a RSA consiste nel fatto che queste sembrano offrire la stessa sicurezza con chiavi di minori dimensioni riducendo pertanto il carico di elaborazione.
    • Perchè le Curve Ellittiche? [2/2]
      • L'utilizzo delle Curve Ellittiche in crittografia è già stato sottoposto a vari tentativi di standardizzazione, fra cui lo standard IEEE (Institute of Electrical and Electronics Engineers) P1363 per la crittografia asimettrica.
      • L'efficienza computazionale dovuta all'utilizzo di tali strumeti è stata premiata anche da NSA ( National Security Agency ), la quale invita nell'adozione delle Curve Ellittiche nei sistemi di autenticazione in rete.
    • Prima Fase (1/2)
      • La metodologia originaria proposta da Lenstra strutturava l'algoritmo su una sola fase.
      • Sia n il numero da fattorizzare e p un suo fattore primo da trovare.
      • Una curva ellittica (in forma di Montgomery) è
      • Dove è il piano proiettivo su
      • L'elemento neutro è detto anche punto all'infinito.
      • L'idea chiave dell'algoritmo consiste nel proiettare in i calcoli svolti in , per ogni primo p divisore di n , tenendo particolare attenzione per le quantità che sono zero in ma non .
    • Prima Fase (2/2)
      • Scegliamo casualmente una curva E ed un suo punto P .
      • Calcoliamo il punto
      • ove B 1 è un bound prefissato.
      • Sia p il primo divisore di n allora :
        • se #E(Z/Z p ) | k allora Q sarà un punto all'infinito per E(Z/Z p )
        • La coordinata z del punto Q sarà
        • Il fattore incognito p potrà essere recuperato tramite
    • Seconda fase (1/2)
      • La prima fase termina con successo se tutti i fattori primi di g = #E(Z/Z p ) sono minori di B 1 , tale che dal Teorema di Hasse
      • La seconda fase permette di trovare un fattore primo g 1 di g , tale che è un valore minore di un secondo bound B 2 .
      • L'idea consiste nel considerare due famiglie di punti (a i Q) e (b j Q ) della curva E , e verificare se tali punti sono uguali in E(Z/Z p ) .
      • Se (a i Q)=(x i : y i : z i ) e (b j Q )= (x' j : y' j : z' j ) , allora gcd(x i z' j -x' j z i ,n) sarà un fattore non banale quando g 1 divide un fattore non banale a i - b j
    • Seconda fase (2/2)
      • Esistono due varianti della seconda fase:
      • Continuazione paradosso del compleanno : si scelgono casualmente gli scalari dei punti (a i Q) e (b j Q ), con la speranza che la differenza a i - b j possa ricoprire la maggior parte dei primi minori del bound B 2 .
      • Continuazione standard : si scelgono gli scalari dei punti (a i Q) e (b j Q ), in modo tale che ogni primo minore del bound B 2 divide almeno una differenza a i - b j
      • Entrambe le continuazioni trovano un beneficio in termini computazionali se gestite tramite le estensioni della FFT.
    • La Complessità Computazionale
      • Si congettura che la complessità attesa per la fattorizzazione del numero n tramite l'ECM è
      • dove:
      • p è il più piccolo divisore primo di n.
      • L(p) è
      • M(log n) rappresenta la complessità aritmetica modulo n
      • O(1) è un valore aggiunto per p che tende all'infinito.
      • La seconda fase decrementa il tempo di attesa di un fattore log p .
    • Operazioni su Curve Ellittiche (1/3)
      • L'operazione di moltiplicazione di uno scalare k per un punto P appartenente alla curva E è definita come la somma [k]P = P+...+P (k volte ).
      • Un metodo efficiente per l'esecuzione di tale operazione è stato proposto da Montgomery nel 1987, conosciuto appunto come “Montgomery ladder algorithm”.
      • Tale algoritmo ha la peculiarità di poter essere applicato su diverse tipologie di curve, ed è indipendente dalla tipologia dei punti, infatti può utilizzare sia le coordinate affine che proiettive.
      • Come precedentemente anticipato, in seguito utilizzeremo solo coordinate proiettive, e mostreremo come tramite l'algoritmo di Montgomery sia possibile svincolarsi dalla coordinata y .
    • Operazioni su Curve Ellittiche (2/3)
      • Sia P = (x P ::z P ) il punto iniziale sulla curva E con x P diverso da zero.
      • Sia k uno scalare espresso in base binaria di lunghezza s .
      • Siano R = (x R ::z R ) e Q = (x Q ::z Q ) i punti intermediari utilizzati durante il calcolo dell'operazione kP = (x kP ::z kP )
      • doubleh(P) : effettua la somma di due punti uguali, ovvero 2P;
      • addh(R,Q,P) : effettua la somma di due punti diversi t.c.
    • Operazioni su Curve Ellittiche (3/3)
      • Il termine a è il coefficiente della curva E scelta per il tentativo di fattorizzazione.
      • addh(Q,R,P) richiede 6 moltiplicazioni
      • double(Q) richiede 5 moltiplicazioni
    • Parametrizzazione di una Curva Ellittica (1/2)
      • Sia E una curva ellittica nella forma di Montgomery e sia q un primo tale che non divide 2b(a 2 -4) .
      • Suyama osservò che l'ordine di una curva ellittica in forma di Montgomery è divisibile per 4, o valori superiori come 8,12 o addirittura 16.
      • Tale caratteristica diede spunto per la definizione della seguente curva ellittica :
        • Sia σ un valore casuale nell'intervallo [6,n-1]
        • u = σ 2 -5 (mod n) e v = 4 σ (mod n)
        • e
      • Ed il rispettivo punto di appartenenza P σ =(x σ :y σ :z σ ) tale che
    • Parametrizzazione di una Curva Ellittica (2/2)
      • I vantaggi dovuti alla parametrizzazione realizzata da Suyama sono i seguenti:
        • g = #E(Z/Z q ) è divisibile per 12 . Ciò comporta un leggero vantaggio nella speranza di trovare un primo q tale che divida l'ordine g .
        • La determinazione della curva E σ ed il punto di inizializzazione P σ sono del tutto dipendenti dal parametro casuale σ . Pertanto possiamo scegliere simultaneamente differenti σ per da cui generare altrettante curve E σ . Tale caratteristica comporta un parallelismo nella definizione delle curve, realizzabile tramite appositi thread.
        • La coordinata y è irrilevante nei calcoli sulla curva.
    • Seconda fase nella continuazione standard (1/x)
      • Ipotizziamo che
      • quindi |E(Z/Z p )| non è B1 -smooth (friabile).
      • Ma potrebbe accadere che
      • ove q è un primo maggiore del bound B 1 .
    • Seconda fase nella continuazione standard (3/x)
      • Ogni primo B 1 < p ≤ B 2 può essere espresso nella forma p=mD ± j tale che:
        • 0 < D < B 2
      • la condizione per cui p è primo implica che gcd(j,D)=1
      • La condizione [p]Q=O implica che [ mD ± j]Q=O e che quindi [mD]Q=[ ± j]Q in E(Z/Z q ). Tale condizione è soddisfatta se e solo se
    • Seconda fase nella continuazione standard (4/x)
      • L'esistenza della coppia m e j implica che possiamo identificare un fattore di n calcolando
      • E' possibile ridurre ulteriormente il livello computazionale osservando che
      • x [j]Q , z [j]Q e x [j]Q z [j]Q sono valori precalcolati appartenenti alla lista breve S={[j]Q :1 ≤j≤(D/2) } , quindi per ogni [mD]Q appartenente alla sequenza T={[mD]Q : M min ≤ m ≤M max }, effettuiamo solo 2 moltiplicazioni (mod n )
      • Se il termine q è non banale abbiamo identificato il fattore primo del numero n , altrimenti scegliamo una nuova curva e ripartiamo dalla prima fase.
    • Somiglianza col metodo (p-1 ) di Pollard
      • Si noti la somiglianza di questo metodo con quello di (p-1) di Pollard, sebbene, mentre in quest'ultimo si utilizza il gruppo Z p * , qui invece utiliziamo E(mod p) .
      • Nell'algoritmo p-1 abbiamo successo se, ovvero quando cioè p-1 è B-Smooth , ovvero # Z p * è B-friabile .
      • In modo identico il metodo di Lenstra ha successo quando # E(Z/Z p ) è B-friabile .
      • Differentemente dal metodo di Pollard, in cui il gruppo utilizzabile era soltanto uno, con il metodo di Lenstra, se la curva E non va bene, possiamo cambiare la curva ellittica E ed il punto il suo rispettivo punto P .
      • Quante curve dovremmo provare per avere successo?
      • Quanti sono i numeri B-smooth (friabili) ?
    • Scelta dei bound B 1 , B 2 e D (1/2)
      • L'appartenenza alla classe di complessità sub-esponenziale dell'ECM è legata dalla scelta del bound friabile
      • Per quantificare i numeri B-friabili , utilizziamo la funzione di Dickman-de Brujin Ψ (x,B) = #{n<=x | n è B-friabile} , da cui ricaviamo la probabilità che un numero intero casuale sia X (1/u) -friabile.
      • Come detto l'algoritmo ECM ha successo se #E(Z/Z p ) è B-friabile, quindi nel caso peggiore bisogna provare in media u u curve t.c. u = log(q)/log(B))
      • Il secondo bound B 2 , viene generalmente scelto tra 50B 1 e 100B 1 .
    • Scelta dei bound B 1 , B 2 e D (2/2)
      • Nella seconda fase bisogna gestire al massimo D punti per le operazioni svolte sull'insieme dei punti S.
      • Bisogna svolgere al massimo B 2 /D per le operazioni svolte sull'insieme dei punti T .
      • La complessità totale delle operazioni è O(D+B 2 /D)
      • Scegliendo D ≈√ B 2 si minimizza la complessità O(D+B 2 /D)=O( √ B 2 )
    • Dati Sperimentali
      • Su 100 test effettuati di numeri n composti da un fattore primo di 15-20 cifre ed un secondo di 60-80 cifre, circa il 70% dei fattori (più piccoli) sono stati trovati durante la seconda fase, mentre il restante 30% nella prima fase.
      • I test sono stati realizzati tramite un applicativo scritto in linguaggio di programmazione Java il quale fa uso dei thread, in modo tale da poter gestire più curve espresse nella forma parametrizzata.
    • Esempio di Fattorizzazione
      • L'Elliptich Curve Method risulta essere un ottimo strumento per quanto riguarda la fattorizzazione dei numeri di Fermat
      • Fermat(10)=179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137217
      • Bits: 1025, Digits: 309 - Bound: 150000
      • Fase 1 Precomputazione.. - Fase 2 Precomputazione..
      • Curve 1: 2937450992 -> Curve 2: 726875123 -> Curve 3: 3915612953 -> Curve 4: 2175638314
      • Fattorizzazione avvenuta nella Fase 2
      • 295760497253281793 *
      • 607820568181834328745927047401406785398975700821911559763928675076909152806525747797078707978021962487854849079350770968904705424125269800765765006449689562590686195386366153585734177565092347016126765195631310982002631912943551551593959032889971392442015624176361633631364310142874363629569
      • Tempo di Esecuzione: 00:04:27.331 (hh:mm:ss:ms)
    • Bibliografia
      • The Elliptic Curve Method di Paul Zimmermann.
      • Factorization of the tenth Fermat Number , di R. Brent
      • Implementing the Elliptic Curve Method of Factoring in Reconfigurable Hardware, di Kris Gaj + altri.
      • Appunti lezioni di Crittografia del prof. R. Schoof .