Η **επίθεση του Βίνερ**, όπως ονομάστηκε από τον κρυπτολόγο Μάικλ Τζ. Βίνερ, είναι ένα είδος κρυπτογραφικής επίθεσης εναντίον του κρυπτοσυστήματος RSA. Η επίθεση χρησιμοποιεί την μέθοδο των συνεχών κλασμάτων για τον εντοπισμό του ιδιωτικού κλειδιού *d*, όταν αυτό είναι μικρό.

Μια ματιά στον αλγόριθμο του RSA
--------------------------------

Προτού γίνει αναφορά στον τρόπο που λειτουργεί η επίθεση του Βίνερ, θα παρουσιαστεί σύντομα ο τρόπος λειτουργίας του κρυπτοσυστήματος RSA. Για περισσότερες λεπτομέρειες, υπάρχει και το κύριο λήμμα RSA.

Γίνεται η υπόθεση ότι η Άλις και ο Μπομπ είναι δύο άτομα που θέλουν να επικοινωνήσουν με ασφάλεια. Πιο συγκεκριμένα, η Άλις θέλει να στείλει ένα μήνυμα στον Μπομπ, το οποίο μόνον ο Μπομπ θα μπορεί να διαβάσει. Αρχικά, ο Μπομπ επιλέγει δύο πρώτους αριθμούς *p* και *q* και υπολογίζει τον αριθμό *N* = *pq*. Αυτός ο αριθμός γίνεται γνωστός (δημόσιος) μαζί με τον δείκτη κρυπτογράφησης *e*, ενώ τα *N* και *e* διαμορφώνουν το δημόσιο κλειδί *(e,N)*. Με αυτόν τον τρόπο, οποιοσδήποτε μπορεί να κρυπτογραφήσει κάποιο μήνυμα για τον Μπομπ. Ο δείκτης αποκρυπτογράφησης *d* ικανοποιεί τη συνθήκη {\displaystyle ed=1{\bmod {\varphi }}(N)}, ὀπου {\displaystyle \varphi (N)=(p-1)(q-1)}, είναι η συνάρτηση {\displaystyle \varphi (N)} του Όιλερ. (σημείωση: αυτή είναι η τάξη της πολλαπλασιαστικής ομάδας {\displaystyle \mathbb {Z} \_{N}^{\*}}). Ο δείκτης κρυπτογράφησης *e* και η τιμή του {\displaystyle \varphi (N)} πρέπει επίσης να είναι σχετικά πρώτοι (πρώτοι μεταξύ τους) ώστε να υπάρχει αντίστροφη επεκτασιμότητα. 

Η παραγοντοποίηση του *N* και το ιδιωτικό κλειδί *d* παραμένουν κρυφά, ώστε μόνον ο Μπομπ να μπορεί να αποκρυπτογραφήσει το μήνυμα. Το ιδιωτικό κλειδί ορίζεται ως *(d,N)*. Η κρυπτογράφηση του μηνύματος *M* δίνεται από τον τύπο {\displaystyle C\equiv M^{e}{\bmod {N}}} και η αποκρυπτογράφηση του κρυπτογραφημένου μηνύματος C δίνεται από τον τύπο {\displaystyle C^{d}\equiv (M^{e})^{d}\equiv M^{(ed)}\equiv M{\bmod {N}}} (με χρήση του μικρού θεωρήματος του Φερμά).

Με χρήση του Ευκλείδιου αλγορίθμου, μπορεί να γίνει αποτελεσματική ανάκτηση του κρυφού κλειδιού *d*, αν είναι γνωστή η παραγοντοποίηση του *N*. Αν κάποιος έχει στην κατοχή του το κρυφό κλειδί *d*, μπορεί να παραγοντοποιήσει τον ακέραιο *Ν*.

Χρήση Μικρού Ιδιωτικού Κλειδιού
-------------------------------

Στο κρυπτοσύστημα του RSA, ο Μπομπ μπορεί να προτιμήσει να κάνει χρήση μιας μικρής τιμής του *d*, παρά μιας μεγαλύτερης τυχαίας, με σκοπό να βελτιώσει την απόδοση της αποκρυπτογράφησης του RSA. Ωστόσο, η επίθεση του Βίνερ αναδεικνύει το γεγονός ότι η χρήση μιας μικρής τιμής *d* έχει ως αποτέλεσμα ένα μη ασφαλές σύστημα, στο οποίο ο επιτιθέμενος μπορεί να ανακτήσει όλες τις κρυφές πληροφορίες και να "σπάσει" το σύστημα RSA. Αυτό είναι κάτι που βασίζεται στο Θεώρημα του Βίνερ, το οποίο ισχύει για μικρές τιμές του *d*. Ο Βίνερ έχει αποδείξει ότι ο επιτιθέμενος μπορεί να βρει (σε πολυωνυμικό χρόνο) το *d* όταν ισχύει d<{\frac {1}{3}}N^{{{\frac {1}{4}}}}.

Στη δημοσίευση του Βίνερ παρουσιάζονται, επίσης, μερικά μέτρα προστασίας από την επίθεσή του, τα οποία επιτρέπουν γρήγορη αποκρυπτογράφηση. 
Δύο τεχνικές περιγράφονται παρακάτω.

**Επιλογή μεγάλου δημοσίου κλειδιού**: Αντικαθιστώντας {\displaystyle e} με {\displaystyle e'}, όπου {\displaystyle e'=e+k.\varphi (N)} για κάποια μεγάλη τιμή του {\displaystyle k}. Όταν η τιμή του {\displaystyle e'} είναι αρκετά μεγάλη, για παράδειγμα {\displaystyle e'>N^{\frac {3}{2}}}, τότε η επίθεση του Βίνερ δεν μπορεί να εφαρμοστεί, ανεξαρτήτως με το πόσο μικρή είναι η τιμή του {\displaystyle d}.

**Χρήση του Κινέζικου Θεωρήματος Υπολοίπου**: Γίνεται η υπόθεση ότι κάποιος επιλέγει *d* ώστε αμφότερα τα {\displaystyle d\_{p}=d{\bmod {\ }}(p-1)} και {\displaystyle d\_{q}=d{\bmod {\ }}(q-1)} να έχουν μικρές τιμές χωρίς όμως να είναι μικρή και η τιμή του d. Με βάση αυτό, μια γρήγορη αποκρυπτογράφηση του {\displaystyle C} μπορεί να γίνει ακολούθως:

1. Αρχικά υπολογίζονται τα {\displaystyle M\_{p}\equiv C^{d\_{p}}{\bmod {\ }}p} και {\displaystyle M\_{q}\equiv C^{d\_{q}}{\bmod {\ }}q}.
2. Με χρήση του Κινέζικου Θεωρήματος Υπολοίπου υπλογίζεται η μοναδική τιμή του {\displaystyle M\in \mathbb {Z\_{N}} } που ικανοποιεί τις σχέσεις {\displaystyle M\equiv M\_{p}{\bmod {\ }}p} και {\displaystyle M\equiv M\_{q}{\bmod {\ }}q}. Το αποτέλεσμα του {\displaystyle M} ικανοποιεί τη σχέση {\displaystyle M\equiv C^{d}{\bmod {\ }}N} όπως θα έπρεπε. Το αξιοσημείωτο είναι ότι η επίθεση του Βίνερ δεν εφαρμόζεται εδώ, διότι η τιμή του {\displaystyle d{\bmod {\ }}\varphi (N)} μπορεί να είναι μεγάλη.

Τρόπος λειτουργίας της επίθεσης του Βίνερ
-----------------------------------------

Δεδομένου ότι:

{\displaystyle ed=1({\bmod {\ }}\operatorname {lcm} (p-1,q-1))},
υπάρχει ένας ακέραιος *K* ώστε:

{\displaystyle ed=K\times \operatorname {lcm} (p-1,q-1)+1}
Θέτοντας {\displaystyle G=\gcd(p-1,q-1)} και αντικαθιστώντας τη σχέση αυτή στην παραπάνω εξίσωση προκύπτει:

{\displaystyle ed={\frac {K}{G}}(p-1)(q-1)+1}
Θέτοντας {\displaystyle k={\frac {K}{\gcd(K,G)}}} και {\displaystyle g={\frac {G}{\gcd(K,G)}}}, αντικαθιστώντας παραπάνω:

{\displaystyle ed={\frac {k}{g}}(p-1)(q-1)+1}.
Διαιρώντας με {\displaystyle dpq}:   

{\displaystyle {\frac {e}{pq}}={\frac {k}{dg}}(1-\delta )}, όπου {\displaystyle \delta ={\frac {p+q-1-{\frac {g}{k}}}{pq}}}.
Έτσι, η τιμή του {\displaystyle {\frac {e}{pq}}} είναι λίγο μικρότερη από αυτή του {\displaystyle {\frac {k}{dg}}}, όπου η τελευταία τιμή αποτελείται εξ ολοκλήρου από δημόσια πληροφορία. Ωστόσο, είναι αναγκαία μία μέθοδος ελέγχου της πρόβλεψης. Υποθέτοντας ότι {\displaystyle ed>pq} (μία λογική υπόθεση, εκτός αν η τιμή του {\displaystyle G} είναι μεγάλη) η τελευταία εξίσωση παραπάνω μπορεί να γραφεί ως :   

{\displaystyle edg=k.(p-1)(q-1)+g}
Με χρήση απλών αλγεβρικών μεθόδων και ταυτοτήτων, μια πρόβλεψη μπορεί να χρησιμοποιηθεί για την ακρίβεια του αποτελέσματος.

Το θεώρημα του Βίνερ
--------------------

Ισχύει {\displaystyle \ N=pq} με {\displaystyle \ q<p<2q}. Ισχύει {\displaystyle d<{\frac {1}{3}}N^{\frac {1}{4}}}.   

Δεδομένου {\displaystyle \left\langle N,e\right\rangle } με {\displaystyle ed=1({\bmod {\ }}\varphi (N))}, ο επιτιθέμενος μπορεί να ανακτήσει αποτελεσματικά d.

Παράδειγμα
----------

Έστω το δημόσιο κλειδί {\displaystyle \left\langle N,e\right\rangle =\left\langle 90581,17993\right\rangle }.  

Ο επιτιθέμενος πρέπει να αποφασίσει για την τιμή του {\displaystyle d}.   

Με χρήση του Θεωρήματος του Βίνερ και των συνεχών κλασμάτων για την προσέγγιση του d, πρώτα γίνεται προσπάθεια εύρεσης του συνεχούς κλάσματος {\displaystyle {\frac {e}{N}}}.

Σημειώνεται ότι αυτός ο αλγόριθμος βρίσκει το συνεχές κλάσμα στους χαμηλότερους όρους.
Είναι γνωστό ότι:

{\displaystyle {\frac {e}{N}}={\frac {17993}{90581}}={\cfrac {1}{5+{\cfrac {1}{29+\dots +{\cfrac {1}{3}}}}}}=\left[0,5,29,4,1,3,2,4,3\right]}
Βάση των αποτελεσμάτων από τη χρήση μεθόδου των συνεχών κλασμάτων {\displaystyle {\frac {e}{N}}}, όλες οι συγκλίνουσες τιμές του {\displaystyle {\frac {k}{d}}} είναι:

{\displaystyle {\frac {k}{d}}=0,{\frac {1}{5}},{\frac {29}{146}},{\frac {117}{589}},{\frac {146}{735}},{\frac {555}{2794}},{\frac {1256}{6323}},{\frac {5579}{28086}},{\frac {17993}{90581}}}
Γίνεται επιβεβαίωση πως η πρώτη συγκλίνουσα τιμή δεν παράγει μια παραγοντοποίηση του N. Ωστόσο, η σύγκλιση του {\displaystyle {\frac {1}{5}}} παράγει

{\displaystyle \varphi (N)={\frac {e.d-1}{k}}={\frac {17993\times 5-1}{1}}=89964}
Τώρα, επιλύοντας την εξίσωση

{\displaystyle x^{2}-\left(\left(N-\varphi (N)\right)+1\right)x+N=0}
{\displaystyle x^{2}-\left(\left(90581-89964\right)+1\right)x+90581=0}
{\displaystyle x^{2}-\left(618\right)x+90581=0}
προκύπτουν οι ρίζες οι οποίες είναι {\displaystyle x=379;239}. Άρα, η παραγοντοποίηση είναι πλέον γνωστή.

{\displaystyle N=90581=379\times 239=p\times q}.
Επισημαίνεται ότι για το ακέραιο υπόλοιπο του {\displaystyle N=90581}, το Θεώρημα του Βίνερ θα είναι αποτελεσματικό εάν   

{\displaystyle d<{\frac {N^{\frac {1}{4}}}{3}}\approx 5.7828}.
### Απόδειξη του Θεωρήματος του Βίνερ

Η απόδειξη βασίζεται σε προσεγγίσεις με χρήση συνεχών κλασμάτων.

Δεδομένου ότι {\displaystyle ed=1{\bmod {\varphi }}(N)}, υπάρχει μία τιμή {\displaystyle {\mathit {k}}} ούτως ώστε {\displaystyle ed-k\varphi (N)=1}. Επομένως

{\displaystyle \left|{\frac {e}{\varphi (N)}}-{\frac {k}{d}}\right\vert ={\frac {1}{d\varphi (N)}}}.
Ως εκ τούτου, {\displaystyle {\frac {k}{d}}} αποτελεί μια προσέγγιση του {\displaystyle {\frac {e}{\varphi (N)}}}. Παρόλο που ο επιτιθέμενος δεν γνωρίζει την τιμή του {\displaystyle \varphi (N)}, μπορεί να χρησιμοποιήσει το {\displaystyle N} για να βρει μια προσέγγισή του. Πράγματι, δεδομένου ότι

{\displaystyle \varphi (N)=N-p-q+1} και {\displaystyle p+q-1<3{\sqrt {N}}}, προκύπτει:

{\displaystyle \left\vert p+q-1\right\vert <3{\sqrt {N}}}
{\displaystyle \left\vert N+1-\varphi (N)-1\right\vert <3{\sqrt {N}}}
Χρησιμοποιώντας N στην θέση του {\displaystyle \varphi (N)}, η σχέση γίνεται:

{\displaystyle \left\vert {\frac {e}{N}}-{\frac {k}{d}}\right\vert =\left\vert {\frac {ed-kN}{Nd}}\right\vert }
{\displaystyle \qquad =\left\vert {\frac {ed-k\varphi (N)-kN+k\varphi (N)}{Nd}}\right\vert }
{\displaystyle =\left\vert {\frac {1-k(N-\varphi (N))}{Nd}}\right\vert }
{\displaystyle \leq \left\vert {\frac {3k{\sqrt {N}}}{Nd}}\right\vert ={\frac {3k{\sqrt {N}}}{{\sqrt {N}}{\sqrt {N}}d}}={\frac {3k}{d{\sqrt {N}}}}}
Τώρα ισχύει, {\displaystyle k\varphi (N)=ed-1<ed}, ώστε {\displaystyle k\varphi (N)<ed}. Δεδομένου ότι {\displaystyle e<\varphi (N)}, ώστε {\displaystyle k\varphi (N)<ed<\varphi (N)d}, η σχέση γίνεται:   

{\displaystyle k\varphi (N)<\varphi (N)d}
{\displaystyle k<d}
Δεδομένου {\displaystyle k<d} και {\displaystyle d<{\frac {1}{3}}N^{\frac {1}{4}}}.
Ως εκ τούτου η σχέση γίνεται:

(1) {\displaystyle \left\vert {\frac {e}{N}}-{\frac {k}{d}}\right\vert \leq {\frac {1}{dN^{\frac {1}{4}}}}}
Δεδομένου ότι {\displaystyle d<{\frac {1}{3}}N^{\frac {1}{4}},2d<3d,} τότε {\displaystyle 2d<3d<N^{\frac {1}{4}}}, προκύπτει:

{\displaystyle 2d<N^{\frac {1}{4}},}, ώστε (2) {\displaystyle {\frac {1}{2d}}>{\frac {1}{N^{\frac {1}{4}}}}}
Από τις σχέσεις (1) και (2), συμπεραίνεται ότι:

{\displaystyle \left\vert {\frac {e}{N}}-{\frac {k}{d}}\right\vert \leq {\frac {3k}{d{\sqrt {N}}}}<{\frac {1}{d\cdot 2d}}={\frac {1}{2d^{2}}}}
Επομένως από το θεώρημα του Λεζάντρ, το k/d είναι ένα συγκλίνων κλάσμα του e/n.

Εξωτερικοί Σύνδεσμοι
--------------------

* Coppersmith, Don (1996). Low-Exponent RSA with Related Messages. Springer-Verlag Berlin Heidelberg.
* Jose, Justin (2010). Study of RSA and Proposed Variant Against Wiener's Attack. International Journal of Computer Applications.
* Dujella, Andrej (2004). Continued Fractions and RSA with Small Secret Exponent.
* Cui, Xiao-lei (2005). Attack On the RSA Cryptosystem.