Εισαγωγή στην Κρυπτογραφία Εργαστηριακό σεμινάριο Άνοιξη 2007
Ορισμοί Κρυπτογραφία: Μελετά τρόπους με τους οποίους μπορούμε να μετασχηματίσουμε ένα κείμενο σε φαινομενικά ακατανόητη μορφή. Κρυπτογράφηση: Η διαδικασία της μετατροπής ενός μηνύματος, μεταξύ του αποστολέα και του παραλήπτη, σε μορφή που να μην είναι αναγνώσιμη από τρίτους
Τρόποι κρυπτογράφησης: Μονοαλφαβητική Υποκατάσταση Πολύαλφαβητική Υποκατάσταση RSA
Μονοαλφαβητική Υποκατάσταση Μονοσήμαντη αντικατάσταση ενός γράμματος του αλφαβήτου με κάποιο άλλο. Γνωστότερο (και απλούστερο) παράδειγμα το Κρυπτόγραμμα του Καίσαρα: μετακίνηση όλων των γραμμάτων κατά 3 γράμματα δεξιά.
Παράδειγμα Κανονικό αλφάβητο: α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Κρυπρογραφημένο αλφάβητο: ΓΦ ΔΕ ΞΚΛΟΑ ΧΥ ΖΨΩΜΒ ΝΗ ΣΘΠ Ι Ρ Τ Παράδειγμα: Αποστολέας: Κανονικό κείμενο: ε π ί θ ε σ η τ η ν αυ γή Κρυπτογραφημένο κείμενο: Ξ Β Α Ο ΞΗ Λ Σ ΛΨ ΓΘΔΛ Παραλήπτης: Κρυπτογραφημένο κείμενο: ΖΓΟΛΖΓΣΑΧΓ Κανονικό κείμενο: μαθη ματ ι κα
ΞΟΖ ΒΣΟΧΛΠ, Α ΞΣΦΘΧΚΧΟ ΣΝΦΣ ΦΧΘΝΞΣΝ ΞΟΖΓ ΙΧΞΝΤΝΧ ΞΧΦΘΝΛΝΧΘ ΟΘΣΝΞ ΛΝΖΠΞ. ΟΑ ΦΝΤΝΖΞΟΑ ΗΘΩΟΑ ΓΠΦΟΧ, ΒΖΤΝΞ ΟΣΤΣΝΩΞΣ ΟΑΓ ΝΞΟΖΘΝΧ ΟΖΠ ΒΧΧΘΖΠΡ, ΞΑΥΩΜΑΥΣ ΥΧΝ ΡΝΤΑΞΣ ΟΖ ΗΧΟΩΒΧ ΒΗΘΖΞΟΧ ΟΖΠ ΤΣΛΖΓΟΧΞ: «ΒΣΛΧΤΣ ΙΧΞΝΤΝΧ, ΛΝΧ ΦΝΤΝΣΞ ΥΧΝ ΒΝΧ ΓΠΦΟΣΞ ΞΖΠ ΕΝΑΛΑΜΑΥΧ ΟΖΠΞ ΒΠΜΖΠΞ ΟΩΓ ΗΣΘΧΞΒΣΓΩΓ ΣΗΖΦΩΓ ΥΧΝ ΟΖΠΞ ΜΘΠΤΖΠΞ ΟΩΓ ΧΘΦΧΝΩΓ ΙΧΞΝΤΣΩΓ. ΒΗΖΘΩ ΓΧ ΟΖΤΒΑΞΩ ΓΧ ΚΑΟΑΞΩ ΒΝΧ ΦΧΘΑ ΧΗΖ ΟΑ ΒΣΛΧΤΣΝΖΟΑΟΧ ΞΖΠ;»
Αποκρυπτογράφηση Παίρνουμε ένα απλό κείμενο ίσης περίπου έκτασης με το κρυπτογραφημένο μήνυμα. Μετράμε πόσες φορές εμφανίζεται κάθε χαρακτήρας. Κάνουμε το ίδιο και για το κρυπτογραφημένο μας μήνυμα. Το γράμμα που εμφανίζεται συχνότερα στο κανονικό κείμενο είναι πιθανότατα το γράμμα που εμφανίζεται συχνότερα στο κρυπτογραφημένο μήνυμα κ.ο.κ.
Παράδειγμα ΞΟΖ ΒΣΟΧΛΠ, Α ΞΣΦΘΧΚΧΟ ΣΝΦΣ ΦΧΘΝΞΣΝ ΞΟΖΓ ΙΧΞΝΤΝΧ ΞΧΦΘΝΛΝΧΘ ΟΘΣΝΞ ΛΝΖΠΞ. ΟΑ ΦΝΤΝΖΞΟΑ ΗΘΩΟΑ ΓΠΦΟΧ, ΒΖΤΝΞ ΟΣΤΣΝΩΞΣ ΟΑΓ ΝΞΟΖΘΝΧ ΟΖΠ ΒΧΧΘΖΠΡ, ΞΑΥΩΜΑΥΣ ΥΧΝ ΡΝΤΑΞΣ ΟΖ ΗΧΟΩΒΧ ΒΗΘΖΞΟΧ ΟΖΠ ΤΣΛΖΓΟΧΞ: «ΒΣΛΧΤΣ ΙΧΞΝΤΝΧ, ΛΝΧ ΦΝΤΝΣΞ ΥΧΝ ΒΝΧ ΓΠΦΟΣΞ ΞΖΠ ΕΝΑΛΑΜΑΥΧ ΟΖΠΞ ΒΠΜΖΠΞ ΟΩΓ ΗΣΘΧΞΒΣΓΩΓ ΣΗΖΦΩΓ ΥΧΝ ΟΖΠΞ ΜΘΠΤΖΠΞ ΟΩΓ ΧΘΦΧΝΩΓ ΙΧΞΝΤΣΩΓ. ΒΗΖΘΩ ΓΧ ΟΖΤΒΑΞΩ ΓΧ ΚΑΟΑΞΩ ΒΝΧ ΦΧΘΑ ΧΗΖ ΟΑ ΒΣΛΧΤΣΝΖΟΑΟΧ ΞΖΠ;»
Συχνότητα γραμμάτων στο κρυπτογραφημένο κείμενο Γράμμα ΣυχνότηταΕμφάνισης(%) Γράμμα ΣυχνότηταΕμφάνισης(%) ΑΒΓΔΕΖΗΘΙΚΛΜΑΒΓΔΕΖΗΘΙΚΛΜ ,7 4,3 4,7 0,3 7,7 2,3 4,7 1 0,7 2,3 1,3 ΝΞΟΠΡΣΤΥΦΧΨΩΝΞΟΠΡΣΤΥΦΧΨΩ ,7 6,3 9,3 5 0,7 7,3 4,3 2 3, ,3
Συχνότητα γραμμάτων σε κανονικό κείμενο Γράμμα Σ. Εμφάνισης(%) Γράμμα Σ. Εμφάνισης(%) αβγδεζηθικλμαβγδεζηθικλμ 12 0,8 2 1,7 8 0,5 2,9 1,3 7,8 4,2 3,3 4,4 νξοπρστυφχψωνξοπρστυφχψω 7,9 0,6 9,8 5,024 5,009 4,9 9,1 4,3 1,2 1,4 0,2 1,6
Συμπεράσματα από το κρυπτογραφημένο κείμενο: Είναι ασφαλές να υποθέσουμε ότι το Χ αντιπροσωπεύει το α. Το Α εμφανίζεται δυο φορές μόνο του άρα είναι ή ο ή η. Υπάρχουν δυο ΟΑ που θα είναι ή Οο ή Οη. Άρα το Ο είναι το τ. Θα κοιτάξουμε επίσης: καταλήξεις (τα πιο συνηθισμένα γράμματα είναι σ,ν,α,ι,ο,ω,η), λέξεις δύο γραμμάτων (το,τη,θα,να,σε,ως κτλ) και τριών γραμμάτων (και,από,τον,την,των,δεν,σαν κτλ)
Πολυαλφαβητική υποκατάσταση Γνωστότερος Αλγόριθμος είναι το Κρυπτόγραμμα του Vizenere. Για κάθε γράμμα του αλφαβήτου αντιστοιχούμε περισσότερα από ένα γράμματα. Δεν λειτουργεί η ανάλυση συχνοτήτων.
Κρυπτόγραμμα του Vizenere Αποστολέας και παραλήπτης συνεννοούνται για ένα κλειδί. Το κλειδί είναι μια λέξη. Όσο μεγαλύτερη σε μήκος τόσο το καλύτερο. Η κρυπτογράφηση γίνεται σύμφωνα με το τετράγωνο του Vizenere.
Τετράγωνο Vizenere
Π.χ: Λέξη κλειδί: ΝΕΡΟ Αποστολέας Κανονικό κείμενο: δεν μιλώ δεν ακούω δεν βλέπω Κρυπτογρ. κείμενο: ΠΙΕ ΒΦΟΠ ΣΡΡ ΡΩΓΩΠ ΣΡΡ ΥΑΡΥΑΠ Παραλήπτης Κρυπτογρ. κείμενο: ΖΙΔΨΑΕΙΨΓ ΞΙ ΚΔΨΗΡΕΕΝΨΝΧ Κανονικό κείμενο: σεμι νάριο κρυπτ ογραφ ί ας
Παρατηρούμε επανάληψη του μοτίβου ΣΡΡ. Αυτό συμβαίνει γιατί τα δυο δεν κρυπτογραφούνται με το ίδιο αλφάβητο. Άρα η μεταξύ τους απόσταση είναι πολλαπλάσιο του μήκους του κλειδιού.
Αποκρυπτογράφηση Ψάχνουμε για επαναλαμβανόμενα μοτίβα. Μετράμε τις αποστάσεις τους και βρίσκουμε το ε.κ.π. ( έστω x) το οποίο είναι πιθανότατα το μήκος του κλειδιού. Παίρνουμε το 1 ο, το (x+1) o,(2x+1) o …γράμμα και έχουμε ένα κείμενο με μονοαλφαβητική υποκατάσταση. Το ίδιο και για το κείμενο με το 2 o,(x+2) o, (2x+2) o …γράμμα, κ.τ.λ.
Παράδειγμα
Επαναλβανόμενα Μοτίβα
Αποστάσεις μεταξύ των μοτίβων Τ-Ψ-Ν: 15 Ζ-Ψ-Ξ-Δ-Ξ-Β: 10 Ε-Τ-Ν-Δ-Ξ-Ν: 30 μ.κ.δ(10,15,30)=5 Άρα πιθανό μήκος κλειδιού: 5 Χωρίζουμε το κείμενο σε 5 μέρη και έχουμε 5 αλφάβητα μοναλφαβητικής υποκατάστασης.
Όλοι οι τρόποι κρυπτογράφησης απαιτούν ανταλλαγή του κλειδιού μεταξύ του αποστολέα και του παραλήπτη, κάτι που δεν είναι καθόλου ασφαλές!!! Όλοι οι τρόποι κρυπτογράφησης απαιτούν ανταλλαγή του κλειδιού μεταξύ του αποστολέα και του παραλήπτη, κάτι που δεν είναι καθόλου ασφαλές!!! Έτσι προκύπτει η πρόκληση να βρεθεί κάποιος τρόπος κρυπτογράφησης που να μην απαιτεί ανταλλαγή κλειδιού. Έτσι προκύπτει η πρόκληση να βρεθεί κάποιος τρόπος κρυπτογράφησης που να μην απαιτεί ανταλλαγή κλειδιού. Πρώτο ερώτημα είναι εάν υπάρχει τέτοιος τρόπος! Πρώτο ερώτημα είναι εάν υπάρχει τέτοιος τρόπος!
Έστω ότι η Μαρία στέλνει μια βαλίτσα στον Ανδρέα. Την κλειδώνει με μια κλειδαριά. Υπάρχει τρόπος ο Ανδρέας να αποκτήσει πρόσβαση στο περιεχόμενο της βαλίτσας χωρίς να χρειαστεί η Μαρία να του δώσει, με οποιοδήποτε τρόπο, το κλειδί; Έστω ότι η Μαρία στέλνει μια βαλίτσα στον Ανδρέα. Την κλειδώνει με μια κλειδαριά. Υπάρχει τρόπος ο Ανδρέας να αποκτήσει πρόσβαση στο περιεχόμενο της βαλίτσας χωρίς να χρειαστεί η Μαρία να του δώσει, με οποιοδήποτε τρόπο, το κλειδί; Η λύση αυτού του γρίφου έδωσε ελπίδες ως προς την ύπαρξη τρόπου κρυπτογράφησης που δεν απαιτεί ανταλλαγή κλειδιού. Η λύση αυτού του γρίφου έδωσε ελπίδες ως προς την ύπαρξη τρόπου κρυπτογράφησης που δεν απαιτεί ανταλλαγή κλειδιού.
RSA Εφευρέθηκε από τους Rivest, Shamir και Adleman το 1978 Δεν απαιτεί ανταλλαγή κλειδιού Στηρίζεται στην πρακτική αδυναμία ανθρώπων και υπολογιστών να αναλύσουν τεράστιους αριθμούς (της τάξης του ) σε γινόμενο πρώτων αριθμών.
Τα μαθηματικά του RSA Επιλέγουμε δύο τεράστιους πρώτους p, q (της τάξης του ). n=p∙q m=φ(n)=(p-1) ∙(q-1) Επιλέγουμε e ώστε (e,φ(n))=1 ne Δημοσιεύουμε τα n και e. (Δημόσιο Κλειδί) pq Κρατάμε μυστικό τα p, q. (Ιδιωτικό κλειδί)
Κρυπτογράφηση Αντιστοιχούμε με μονοσήμαντο τρόπο το αλφάβητο σε αριθμούς (π.χ: Α=01,Β=02, …, Ω=24) Μετατρέπουμε το κείμενό μας σε μια σειρά από αριθμούς σύμφωνα με την παραπάνω αντιστοιχία. Χωρίζουμε τους αριθμούς σε τετράδες. Για κάθε τετράδα Χ κάνουμε την εξής πράξη: Υ(Χ)=Χ e (modn) Στέλνουμε τα Υ(Χ) στον παραλήπτη, χωρίς να ανησυχούμε για την ασφάλεια της αποστολής.
Παράδειγμα (από το βιβλίο της Βασικής Άλγεβρας σελ:67) Δημόσιο Κλειδί παραλήπτη (n=2537, e=13) Κείμενο: Κείμενο: τα μαθηματικά είναι χρήσιμα Μετατροπή σε ψηφία κατά τετράδες: Υπολογισμός των Υ(Χ)=Χ 13 (mod2537)
Αποκρυπτογράφηση Επειδή (e,φ(n))=1 η [e] στο Ζ φ(n) είναι αντιστρέψιμη, δηλαδή: Υπάρχει d ώστε: d ∙e=1(mod φ(n)) Τότε Υ(Χ) d =X ed =X κφ(n)+1 =(X φ(n) ) κ ∙ X=X (mod n) Άρα το μόνο που μένει στον αποστολέα να κάνει είναι να υπολογίσει το d.
Ο Υποκλοπέας δεν μπορεί να υπολογίσει το d γιατί δεν ξέρει τα p, q οπότε δεν μπορεί να υπολογίσει το φ(n). Σ’ αυτό έγκειται και η ασφάλεια του κρυπτογράμματος. Εάν βρεθεί τρόπος να αναλύουμε γρήγορα ένα αριθμό σε γινόμενο πρώτων παραγόντων το RSA δεν θα έχει πλέον καμία ασφάλεια.
Μήπως έχει ήδη βρεθεί τέτοιος τρόπος;;; Μήπως έχει ήδη βρεθεί τέτοιος τρόπος;;;
Math109: Εργαστήριο Υπολογιστών, Εργαστηριακά Σεμινάρια