Κρυπτογραφία ηµόσιου Κλειδιού Η µέθοδος RSA Τον Απρίλιο του 977 οι Ρόναλντ Ρίβεστ, Άντι Σαµίρ και Λέοναρντ Άντλεµαν, ερευνητές στο Ινστιτούτο Τεχνολογίας της Μασσαχουσέτης (ΜΙΤ) µετά από ένα χρόνο προσπαθειών και στηριζόµενοι στις επαναστατικές ιδέες των Ουίτφιλντ Ντίφι, Μάρτιν Χέλµαν και Ράλφ Μέρκλε περί ασύµµετρης κρυπτογραφίας κατάφεραν να δώσουν µια αποτελεσµατική µέθοδο κρυπτογράφησης βασιζόµενη στο σύστηµα Κοινόχρηστου Κλειδιού. Η µέθοδός τους ονοµάστηκε RSA από τα αρχικά των ονοµάτων τους. ( Rivest R.L, Shamir A, Adleman L.). Στο άρθρο αυτό θα παρουσιάσουµε τη µέθοδο RSA και τα απαραίτητα Μαθηµατικά που χρειάζονται για την εφαρµογή της. Υποθέτουµε πως δυο άτοµα ο Α και ο Β θέλουν να ανταλλάξουν µεταξύ τους κάποιο µήνυµα Μ, το οποίο θέλουν να κρυπτογραφήσουν για λόγους ασφαλείας µε τη µέθοδο RSA. Σε πρώτη φάση επιλέγει ο καθένας τους δυο πρώτους αριθµούς p και q. (Όσο µεγαλύτεροι είναι αυτοί οι πρώτοι αριθµοί, τόσο ποιο ασφαλής είναι η κρυπτογράφηση ενός µηνύµατος. Έτσι στην πράξη επιλέγονται πρώτοι που να έχουν πάνω από ψηφία στο δεκαδικό τους ανάπτυγµα). Στην συνέχεια υπολογίζουν το γινόµενο p q=n καθώς και το γινόµενο (p-) (q-)=φ(n). Επιλέγουν επίσης έναν θετικό ακέραιο e πρώτο προς τον φ(n) δηλ. ΜΚ (e,φ(n))=. Το κοινόχρηστο (δηµόσιο) κλειδί είναι το ζεύγος (n,e) το οποίο και δηµοσιεύουν σε κάποιον κατάλογο (public directory). Το ιδιωτικό κλειδί είναι ο πρώτος αριθµός p (ή q). Αυτό το κρατάει µυστικό ο καθένας. Κάποιος µπορεί να σκεφτεί ότι από τη στιγµή που ξέρουµε τον αριθµό n (δηµόσιο κλειδί), µπορούµε να βρούµε παραγοντοποιώντας τον n τους πρώτους αριθµούς p,q. Όµως, αν και πολύ εύκολα υπολογίζουµε το γινόµενο δυο αριθµών, η παραγοντοποίηση πολύ µεγάλων αριθµών δεν µπορεί να γίνει το ίδιο εύκολα. Χρειάζεται τροµερά µεγάλο υπολογιστικό έργο για να αναλυθεί ένας µεγάλος φυσικός αριθµός n σε γινόµενο παραγόντων. Αυτό ακριβώς το γεγονός είναι που εγγυάται την ασφάλεια της µεθόδου RSA. Ας δούµε τώρα µε ένα παράδειγµα πώς ο Α θα στείλει ένα κρυπτογραφηµένο µήνυµα στον Β, καθώς και πώς ο Β µπορεί να το
αποκρυπτογραφήσει. Στο παράδειγµά µας για προφανείς διδακτικούς λόγους θα κάνουµε χρήση µικρών αριθµών. Υποθέτουµε λοιπόν ότι ο Α επέλεξε p A =,q A = οπότε n= =, φ(n)= = και µπορεί να διαλέξει e A = αφού ΜΚ (,)=. Το κοινόχρηστο κλειδί του Α είναι K A =(n A,e A )=(,) ενώ το ιδιωτικό του κλειδί είναι το Ι Α = Ας πούµε ότι ο Β έχει επιλέξει p B =7,q B = οπότε n=7 =9, φ(n)=6 =7 και e B = άρα για τον Β θα έχουµε K B =(9,),I B =7. Έστω ότι ο Α θέλει να στείλει το µήνυµα «ΦΩΤΑ» στον Β. Μετατρέπει το µήνυµα σε αριθµητική µορφή µέσω για παράδειγµα της αντιστοιχίας: Α Β Γ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω 6 7 8 9 6 7 8 9 Έτσι το αρχικό µήνυµα «ΦΩΤΑ» µετατρέπεται στην ακολουθία αριθµών Μ: 9 Βρίσκει το δηµόσιο κλειδί του Β, K B =(9,) και κωδικοποιεί κάθε όρο της παραπάνω ακολουθίας µε βάση τον τύπο C i =M i e modn Στο παράδειγµά µας λοιπόν θα είναι: Μ =, Μ =, Μ =9, Μ = C = mod9=8mod9= C = mod9= C =9 mod9=8 C = mod9= To µήνυµα που θα στείλει ο Α στον Β θα είναι η ακολουθία αριθµών: C: 8 (Στην πράξη πολλές φορές δεν κρυπτογραφούνται ένα ένα τα γράµµατα των λέξεων, αλλά η ακολουθία των αριθµών χωρίζεται σε ισοµήκεις οµάδες ψηφίων (blocks) και κρυπτογραφείται αυτή η ακολουθία των blocks που προκύπτει. Στο παράδειγµά µας λόγου χάρη αν χωρίσουµε οµάδες των τριών ψηφίων θα έχουµε την ακολουθία 9 ). Ο Β έλαβε λοιπόν το κρυπτογραφηµένο µήνυµα C: 8 Αρχίζει την διαδικασία αποκρυπτογράφησης. (RSA decryption). Η διαδικασία της αποκρυπτογράφησης για τον Β είναι εύκολη επειδή αυτός γνωρίζει τους πρώτους παράγοντες του n. α β modn n/α-β. Ισχύει α β modn αν και µόνο αν οι α και β διαιρούµενοι µε τον n δίνουν το ίδιο υπόλοιπο. Έτσι µπορούµε να πούµε ότι το x modn είναι το υπόλοιπο της Ευκλείδειας διαίρεσης του χ µε τον n.
Αφού ΜΚ (e,φ(n))= θα υπάρχουν ακέραιοι χ,ψ τέτοιοι ώστε e x+φ(n) ψ= οπότε η ισοδυναµία e x modφ(n) έχει λύσεις. Ας είναι d η ελάχιστη θετική λύση της. Έτσι e d modφ(n) και άρα υπάρχει ακέραιος κ : e d=+kφ(n) Τότε ο Β αποκρυπτογραφεί το µήνυµα από την M i =C i d modn πράγµατι: Αν υποθέσουµε ότι (M,n)= τότε από το θεώρηµα Euler-Fermat προκύπτει Μ φ(n) modn οπότε (M e ) d =M e d =M +kφ(n) =M (M φ(n) ) k M modn Έστω ότι (Μ,n)> τότε αφού n=p q θα έχουµε ή µόνο p/m ή µόνο q/m ή p/m και q/m. Ας ξεκινήσουµε µε την πρώτη περίπτωση p/m. Τότε (Μ,q)= οπότε από το θεώρηµα Fermat θα έχουµε M q- modq. Θα έχουµε λοιπόν (Μ e ) d =M ed =M M kφ(n) = M (M (q-) ) k(p-) M modq. Επειδή όµως επίσης M ed - M modp και οι αριθµοί p,q είναι πρώτοι µεταξύ τους θα είναι επίσης M ed - M mod(p q) και τελικά M ed M modn. Η περίπτωση όπου µόνο q/m αντιµετωπίζεται παρόµοια, ενώ η περίπτωση p/m και q/m είναι τετριµµένη. Σε κάθε περίπτωση λοιπόν (M e ) d M modn και συνεπώς ο Β µπορεί µε τον τρόπο αυτό να αποκρυπτογραφήσει το µήνυµα Μ. Για την περίπτωσή µας θα έχουµε: φ(n)= 7 Λύνουµε την εξίσωση χ mod7 Η ελάχιστη θετική λύση της είναι d=9 Θα έχουµε λοιπόν 9 mod9=(() ) () mod9== M 9 mod9==m 8 9 mod9=9=m 9 mod9==m και παρατηρούµε ότι βρήκαµε το αρχικό µήνυµα Μ που µεταφράζεται ως «ΦΩΤΑ». Αν (α,β)=δ τότε υπάρχουν χ,ψ Z ώστε αχ+βψ=δ. Οι αριθµοί α,β µπορούν να υπολογιστούν µε διαδοχική εφαρµογή του Ευκλείδειου αλγορίθµου της διαίρεσης. Αν (α,ν)= τότε α φ(ν) modν (Εuler) Όταν p πρώτος τότε φ(p)=p-ι και α p- modp (Fermat) Αν (α,β)= και α/ν και β/ν τότε επίσης αβ/ν
Γιατί θα έπρεπε να εµπιστευόµαστε τον αλγόριθµο RSA; Όπως είδαµε παραπάνω η αποκρυπτογράφηση του µηνύµατος έχει να κάνει µε τον υπολογισµό του d που είναι η ελάχιστη θετική λύση της ισοδυναµίας e x modφ(n) µε φ(n)=(p-)(q-). Έτσι ενώ ο Β γνωρίζει τους πρώτους παράγοντες p,q άρα και την τιµή της φ(n), οποιοσδήποτε άλλος θα πρέπει να µπορεί να βρει τους p,q παραγοντοποιώντας τον n, πράγµα που είναι εξαιρετικά δύσκολο όπως έχουµε επισηµάνει, όταν οι πρώτοι p,q είναι µεγάλοι αριθµοί. (µε περισσότερα από ψηφία). Έτσι η µέθοδος θα είναι ασφαλής όσο δεν θα έχουν βρεθεί κάποιοι αποτελεσµατικοί και γρήγοροι αλγόριθµοι παραγοντοποίησης. Στο σηµείο αυτό πρέπει να επισηµάνουµε άλλο ένα βασικό πρόβληµα που µπορούµε να αντιµετωπίσουµε µε τον αλγόριθµο RSA. Ο Β έλαβε κάποιο κρυπτογραφηµένο µήνυµα. Πώς µπορεί όµως να είναι σίγουρος ότι το µήνυµα προέρχεται όντως από τον Α κι όχι από κάποιον τρίτο; Πώς µπορεί να πιστοποιηθεί η αυθεντικότητα του µηνύµατος; Ας θυµηθούµε τι έχουµε δει µέχρι τώρα. Ο Α και ο Β έχουν δηµιουργήσει τα δηµόσια και τα ιδιωτικά κλειδιά τους Κ Α, Κ Β και Ι Α, Ι Β αντίστοιχα. Η αποστολή του µηνύµατος Μ από τον Α προς τον Β µέσω του αλγορίθµου RSA, λειτουργεί σαν µια συνάρτηση που στο Μ αντιστοιχεί ένα άλλο µήνυµα Κ Β (Μ). Το ιδιωτικό Ι Β κλειδί λειτουργεί σαν την αντίστροφη συνάρτηση της Κ Β, αφού Ι Β Κ Β (Μ)=Μ. Επίσης ισχύει Κ Β Ι Β (Μ)=Μ. Αυτή η τελευταία ισότητα µπορεί να χρησιµοποιηθεί ακριβώς για την αυθεντικοποίηση του µηνύµατος Μ αν ο Α δράσει ως εξής: Πρώτα κρυπτογραφεί το Μ µε το ιδιωτικό του κλειδί παράγοντας το Ι Α (Μ) Στη συνέχεια κρυπτογραφεί το κρυπτογραφηµένο αυτό µήνυµα µε το δηµόσιο κλειδί του Β κι έτσι στέλνει το µήνυµα K B I A (M). O B αποκρυπτογραφεί το µήνυµα που έχει λάβει πρώτα µε το ιδιωτικό του κλειδί Ι Β, λαµβάνοντας έτσι το Ι Β Κ Β Ι Α (Μ)=Ι Α (Μ) Τέλος αποκρυπτογραφεί το τελευταίο µήνυµα µε το δηµόσιο κλειδί του Α κι έτσι παίρνει το K A I A (M)=M. εδοµένου ότι το ιδιωτικό κλειδί του Α το γνωρίζει µόνο ο Α, η τελευταία αποκρυπτογράφηση δείχνει ότι όντως ο Α είναι ο αποστολέας του Μ! Στην πιστοποίηση της αυθεντικότητας βασίζονται οι λεγόµενες ψηφιακές υπογραφές στο ιαδίκτυο. Ένα πολύ γνωστό πρόγραµµα παραγωγής ψηφιακών υπογραφών είναι το PGP.
Βιβλιογραφία. Ιωάννης Ρασσιάς : Θεωρία Αριθµών- Εκδόσεις Συµµετρία. Neal Koblitz : A Course in Number Theory and Cryprografy- Springer Verlag. SIMON SINGH: ΚΩ ΙΚΕΣ ΚΑΙ ΜΥΣΤΙΚΑ. JOAN GOMEZ: Μαθηµατικοί, κατάσκοποι και πειρατές της πληροφορικής. Κωδικοποίηση και κρυπτογραφία.