Professional Documents
Culture Documents
Κρυπτογραφία Κώστας Λιμνιώτης ΤΕΙ Στερεάς Ελλάδας
Κρυπτογραφία Κώστας Λιμνιώτης ΤΕΙ Στερεάς Ελλάδας
Κώστας Λιμνιώτης
Γενική επισκόπηση
Ανασκόπηση ύλης
Στόχοι της κρυπτογραφίας – Ιστορικό –
Γενικά χαρακτηριστικά
Κλασσική κρυπτογραφία
{ Συμμετρικού κλειδιού (block ciphers – stream
ciphers)
{ Δημοσίου κλειδιού (στηριγμένη στη θεωρία
υπολογισμού)
Τεχνικές πιστοποίησης μηνύματος και
πιστοποίησης ταυτότητας αποστολέα
Εγκαθίδρυση και διαχείριση κλειδιού
Κώστας Λιμνιώτης Κρυπτογραφία - 1 (Γενική Επισκόπηση) 2
Βιβλιογραφία
“Handbook of Applied Cryptography”, A. J.
Menezes, P. C. Van Oorschot και S. A. Vanstone,
CRC Press, 1996
(διαθέσιμο από το διαδίκτυο:
http://www.cacr.math.uwaterloo.ca/hac/)
“Τεχνικές κρυπτογραφίας και κρυπτανάλυσης», Β.Α.
Κάτος και Γ.Χ. Στεφανίδης
Κρυπτογραφική Ορολογία
Εμπιστευτικότητα ή μυστικότητα (privacy): η διατήρηση της
πληροφορίας κρυφής από όλους, εκτός από εκείνους που
είναι εξουσιοδοτημένοι να τη δουν
Ακεραιότητα των δεδομένων (data integrity): διασφάλιση του
ότι η πληροφορία δεν έχει παραποιηθεί από μη
εξουσιοδοτημένο μέσο
Πιστοποίηση ταυτότητας (entity authentication ή identification):
επιβεβαίωση της ταυτότητας ενός χρήστη
Πιστοποίηση μηνύματος (message authentication):
Επιβεβαίωση της πηγής της πληροφορίας
Υπογραφή (signature): ένα μέσο προσάρτησης πληροφορίας
ενός χρήστη στα μεταδιδόμενα δεδομένα, με στόχο την
πιστοποίηση ταυτότητας
Περιοριστικοί αλγόριθμοι
(restricted algorithms)
Αποκρυπτογράφηση
Αφαίρεσε το κλειδί και διαίρεσε το κρυπτόγραμμα διά 2
plaintext = SECRET = 19 5 3 18 5 20
Key = 3
Ciphertext = 41 13 9 39 13 43
Μαθηματικός φορμαλισμός
EK1(m) = c
DK2(c) = m
όπου m και c υποδηλώνουν το αρχικό και το κρυπτογραφημένο μήνυμα
αντίστοιχα.
Οι δείκτες Ki υποδηλώνουν την εξάρτηση των συναρτήσεων από το κλειδί.
Οι συναρτήσεις έχουν την ιδιότητα: DK2(EK1(m)) = m
Σε αλγόριθμους συμμετρικού κλειδιού, ισχύει K1 = K2
{ Known-plaintext attack
ο επιτιθέμενος γνωρίζει το κρυπτόγραμμα και το αντίστοιχο μήνυμα –
στόχος του η εύρεση του κλειδιού
{ Chosen-plaintext attack
Ο επιτιθέμενος είναι σε θέση να επιλέξει συγκεκριμένα ζεύγη «αρχικό
μήνυμα – κρυπτόγραμμα» που θα γνωρίζει. Στόχος του η εύρεση του
κλειδιού.
Κώστας Λιμνιώτης Κρυπτογραφία - 1 (Γενική Επισκόπηση) 12
Ασφαλή συστήματα
κρυπτογράφησης
Απεριόριστα ασφαλές (Unconditionally secure)
{ Ένα σύστημα κρυπτογράφησης χαρακτηρίζεται
απεριόριστα ασφαλές αν, ανεξάρτητα του πόσο μεγάλου
τμήματος του κρυπτογράμματος είναι γνωστό, δεν υπάρχει
αρκετή πληροφορία για την ανάκτηση του αρχικού
μηνύματος κατά μοναδικό τρόπο, όση υπολογιστική ισχύ κι
αν διαθέτει ο επιτιθέμενος (δεν μπορεί να υπάρξει).
Υπολογιστικά ασφαλές (Computationally secure)
{ Ένα σύστημα κρυπτογράφησης χαρακτηρίζεται
υπολογιστικά ασφαλές αν είναι υπολογιστικά αδύνατο να
«σπάσει».
Συμμετρικά κρυπτοσυστήματα
Κ Κ
Αποστολέας P C P
Encryption Decryption Παραλήπτης
Προτάθηκαν το 1976
Κάθε συμμετέχων στο σύστημα κατέχει ένα ζευγάρι κλειδιών e και d, που το
ένα αντιστρέφει το άλλο: Dd(Ee(m))=m
Το κλειδί e σε κάθε χρήστη είναι ευρέως γνωστό σε όλους, ενώ το d κρατείται
μυστικό και το ξέρει μόνο ο κάτοχός του. Απαραίτητη προϋπόθεση για την
ασφάλεια του συστήματος είναι το εξής: η γνώση του δημοσίου κλειδιού δεν
πρέπει να επιτρέπει τον προσδιορισμό του ιδιωτικού κλειδιού.
Σύγκριση με τους αλγορίθμους συμμετρικού κλειδιού: Η ανταλλαγή κλειδιών
μεταξύ αποστολέα και παραλήπτη αντικαθίσταται από την ύπαρξη ενός
διαφανούς καταλόγου, στον οποίο όλοι έχουν πρόσβαση, και περιέχει τα
δημόσια κλειδιά e όλων των συμμετοχόντων.
Τρόπος λειτουργίας
συστημάτων δημοσίου κλειδιού
Έστω eA, dA και eB,dB τα δημόσια και ιδιωτικά κλειδιά των A, B
αντίστοιχα.
Όταν ο A θέλει να στείλει ένα μήνυμα m στον B, το δημόσιο κλειδί
κρυπτογράφησης του παραλήπτη B χρησιμοποιείται για τη
δημιουργία του κρυπτογράμματος EeB (m). Αφού το eB είναι πλήρως
διαθέσιμο σε κάποιον δημόσιο κατάλογο στον οποίο έχουν όλοι
πρόσβαση, ο οποιοσδήποτε μπορεί να κρυπτογραφήσει ένα μήνυμα
με προορισμό τον B. Ωστόσο, μόνο ο B, ο οποίος έχει πρόσβαση στο
ιδιωτικό του κλειδί αποκρυπτογράφησης dB μπορεί να
ανακατασκευάσει το αρχικό μήνυμα, εφαρμόζοντας τον αντίστροφο
μετασχηματισμό:
D dB (EeB (m)).
Σχηματική αναπαράσταση
υποκλοπής σε σύστημα Δημοσίου
Κλειδιού
• Ο επιτιθέμενος ξεγελά τον A ότι
είναι ο B, στέλνοντάς του το δικό
του δημόσιο κλειδί e’. Έτσι, ο A
στέλνει τα μηνύματα
κρυπτογραφημένα ως προς το
e’. Συνεπώς, ο επιτιθέμενος
μπορεί και «διαβάζει» όλα τα
μηνύματα που στέλνει ο A στον
B
•O Β δεν μπορεί να αντιληφθεί
την παρουσία του επιτιθέμενου,
μια που αυτός του στέλνει
κανονικά το μήνυμα. Ο B,
λαμβάνοντας ένα μήνυμα, δεν
μπορεί να ξέρει με σιγουριά
ποιος του το έστειλε.
Αποκρυπτογράφηση:
Αποκρυπτογράφηση:
EeA(s) = EeA(DdB(c)) =
= EeA(DdB(EeB(s))) =
= EeA(DdB(EeB(DdA(m)))) =
= EeA(DdA(m)) = m
Κατηγοριοποίηση
κρυπτογραφικών συστημάτων
Block ciphers (αλγόριθμοι τμήματος/μπλοκ)
{ Το αρχικό μήνυμα χωρίζεται blocks, όπου το καθένα
κρυπτογραφείται ξεχωριστά.
Πλεονεκτήματα:
{ υψηλή διάχυση
{ Ο επιτιθέμενος δεν μπορεί να προσθέσει bits (λόγω του
σταθερού μήκους μπλοκ που έχουν αυτοί οι αλγόριθμοι)
Stream ciphers (αλγόριθμοι ροής)
{ Το μήνυμα κρυπτογραφείται bit προς bit (ή byte προς
byte)
Πλεονεκτήματα:
{ Πολύ υψηλή ταχύτητα (εφαρμογή σε τηλεδιασκέψεις κτλ)
{ Δεν υπάρχει διάδοση σφάλματος (αφού το κάθε bit μηνύματος
επηρεάζει μόνο ένα bit του κρυπτογράμματος).
Γενικά χαρακτηριστικά
Keystream
Generator
Ki
Pi Ci
Δουλεύουν πάνω σε ένα ρεύμα από bits (ή bytes)
Απαιτούν μία γεννήτρια ψευδοτυχαίας ακολουθίας bits (keystream generator) –
αυτή η ακολουθία που παράγεται λέγεται κλειδοροή (keystream)
Τα bits του κλειδιού γίνονται XOR με τα bits του μηνύματος για να προκύψει έτσι
το κρυπτόγραμμα, και αντίστροφα
Η περίοδος της ακολουθίας του κλειδιού πρέπει αν είναι όσο γίνεται πιο μεγάλη
Άλλες επιλογές
{ Τα bits του κλειδιού μπορούν να εξαρτώνται από προηγούμενα bits
του κρυπτογράμματος (ασύγχρονο σύστημα)
Κώστας Λιμνιώτης Κρυπτογραφία - 2 (Αλγόριθμοι ροής - Stream 2
Ciphers)
Σύγχρονοι stream ciphers
Κρυπτογράφηση Αποκρυπτογράφηση
Αποστολέας και παραλήπτης πρέπει να είναι συγχρονισμένοι. Αν κάποιο τμήμα του κρυπτογράμματος
χαθεί κατά τη μετάδοσή του, ο συγχρονισμός χάνεται και απαιτούνται πρόσθετες τεχνικές
επανασυγχρονισμού.
Η παραποίηση (αλλοίωση) ενός ψηφίου του κρυπτογράμματος κατά τη μετάδοση δεν έχει ως
αποτέλεσμα περαιτέρω λανθασμένη αποκρυπτογράφηση επόμενων ψηφίων (no error propagation)
“Ενεργές επιθέσεις” προκαλούν σοβαρά προβλήματα (π.χ. έλλειψη συγχρονισμού), για αυτό
απαιτούνται τεχνικές για πιστοποίηση της γνησιότητας και της ακεραιότητας του μηνύματος
0 1 1 1 0 0 1 0 1 1 0
pad
⊕ (κλειδί)
1 1 0 0 0 1 1 1 0 1 0 plaintext
1 0 1 1 0 1 0 1 1 0 0 CIPHERTEXT
Θεωρία Shannon
Η υπό συνθήκη πιθανότητα να εστάλη κρυπτόγραμμα c, δοθέντος του
αρχικού μηνύματος m, ισούται με:
p (c | m ) = ∑ pk
k :E k ( m ) = c
p(c) = ∑p k
{k ,m:Ek ( m ) = c}
p(m)
p(m) p(c | m)
p(m / c) =
p(c)
Αν M συμβολίζει την τυχαία μεταβλητή που αντιστοιχεί στα πιθανά μηνύματα,
τότε η υπό συνθήκη εντροπία του M δοθέντος συγκεκριμένου
κρυπτογράμματος c (p(c) > 0) ισούται με:
Η ( Μ | c ) = − ∑ p( m | c ) log2 p ( m | c )
m
(είναι γενίκευση του κλασικού ορισμού της εντροπίας, για υπό συνθήκη
πιθανότητες)
H ( M | C ) = ∑ p(c) H ( M | c)
c
Η διαφορά H(M) – H(M|C) εκφράζει την ελάττωση της αβεβαιότητας του
μηνύματος, που προέρχεται από γνώση του κρυπτογράμματος. Ονομάζεται
και αμοιβαία πληροφορία (mutual information) και συμβολίζεται με I(M|C)
Ένα σύστημα χαρακτηρίζεται ως απολύτως ασφαλές αν
γνώση του κρυπτογράμματος δεν προσφέρει καμία
πληροφορία για το αρχικό μήνυμα. Αυτό σημαίνει p(m|c) =
p(m) για όλα τα m και c. Με άλλα λόγια, οι μεταβλητές M, C
είναι ανεξάρτητες, που σημαίνει I(M|C)=0.
p(m) p(c | m) p( m ) pk
p(m | c) = = = p(m)
p(c) ∑ p(m) pk
m ,k
Παράδειγμα ψευδοτυχαίας
ακολουθίας
Έστω η ακολουθία 110100111101000 που επαναλαμβάνεται
περιοδικά.
Έχει περίοδο 15=24-1.
Σε μία περίοδο έχει 8 άσους και 7 μηδενικά, άρα είναι
ισομοιρασμένα.
Έχει 8 διαδρομές: Οι μισές (τέσσερις) έχουν μήκος 1 (το τρίτο,
τέταρτο, ενδέκατο και δωδέκατο bit). To ένα τέταρτο (δύο) των
διαδρομών έχουν μήκος 2 (τα ζευγάρια bits 1-2 και 5-6). Το
ένα όγδοο των διαδρομών (μία) έχει μήκος 3 (τα τρία τελευταία
bits). Για διαδρομή μήκους 4 δεν εξετάζουμε, μια που 8 < 24.
Για τ=0, η συνάρτηση αυτοσυσχέτισης ισούται με 15, ενώ για
οποιοδήποτε άλλο τ ισούται με -1.
Shift register
⊕ Cipher stream
⊕ Key stream
Έξοδος
⊕
Αν η αρχική κατάσταση είναι 001, τότε η έξοδος είναι 1 (η δεξιότερη βαθμίδα).
Την επόμενη χρονική στιγμή, η κατάσταση θα είναι 100 και η έξοδος 0. Το 100
προκύπτει ως εξής: το «1» είναι το XOR που είχαν αρχικά η δεύτερη και η τρίτη
βαθμίδα (που ήταν 0 και 1 αντίστοιχα), ενώ το «00» είναι απλά ολισθημένες οι τιμές
που είχαν αρχικά η πρώτη με τη δεύτερη βαθμίδα.
•Ο κάθε LFSR έχει μήκος LI, i=1,2,3, πρώτα μεταξύ τους, και μέγιστη περίοδο
2Li-1
•Έξοδος z(t)=x1x2 ⊕ x2x3 ⊕ x3
•Η ακολουθία εξόδου z έχει μεγάλη περίοδο: (2 L − 1)( 2 L − 1)( 2 L − 1)1 2 3
Αλγόριθμοι τμήματος
encrypt decrypt
Αποστολέας Μέθοδος
Ciphertext “11011101” αποκρυπτο- Plaintext
Η κρυπτογράφηση λαμβάνει γράφησης “Hello”
χώρα σε τμήματα του και κλειδί
μηνύματος και όχι bit προς bit
Παραλήπτης
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 3
ciphers)
...
(permutation box ή p-box)
•Αυτό επαναλαμβάνεται πολλές
φορές S S .... S
S
S
P
S
S
Li+1 Ri+1
Τρόποι λειτουργίας
Block Ciphers (ΙΙ)
Κρυπταλγόριθμος αλυσιδωτού τμήματος
(Cipher block chaining (CBC) mode): το
αρχικό μήνυμα υποβάλλεται XOR με το
προηγούμενο κρυπτόγραμμα, πριν την
κρυπτογράφηση. Συνεπώς, το κάθε
κρυπτόγραμμα εξαρτάται από όλα τα
προηγούμενα μηνύματα (άρα, δύο ίδια
μοτίβα δεν οδηγούν σε ίδια
κρυπτογράμματα). Λάθος κατά τη
μετάδοση σε ένα απλό bit του
κρυπτογράμματος (που μπορεί να
οφείλεται είτε σε σφάλμα μετάδοσης είτε
σε παρεμβολή ενός «επιτιθέμενου»)
προκαλεί λάθος σε δύο block του
αποκρυπτογραφημένου κειμένου.
•IV: διάνυσμα αρχικοποίησης
•Κρυπτογράφηση για 1 ≤ j ≤ t: cj=EK(xj ⊕ Cj-1), C0=IV
•Αποκρυπτογράφηση για 1 ≤ j ≤ t: xj= EK-1(cj) ⊕ cj-1
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 10
ciphers)
Κρυπταλγόριθμος αλυσιδωτού
τμήματος (συνέχεια)
Είναι κρίσιμο το να ξέρουν και ο πομπός και ο δέκτης το διάνυσμα αρχικοποίησης.
Αφενός μεταδίδεται από τον έναν στον άλλον κρυπτογραφημένο με ECB,
αφετέρου εφαρμόζεται και συνάρτηση κατακερματισμού για έλεγχο της
ακεραιότητάς του. Αν κάποιος εχθρός το μεταβάλλει κατά τη μετάδοσή του, ο
παραλήπτης θα ανιχνεύσει τη μεταβολή αυτή.
Είδαμε ήδη ότι αν συμβεί σφάλμα στη μετάδοση του κρυπτογράμματος, το
σύστημα τελικά μετά από δύο λανθασμένες αποκρυπτογραφήσεις θα επανέλθει.
Αυτό λέγεται ιδιότητα της αυτοεπούλωσης (self healing). Όμως, αν ο επιτιθέμενος
παρεμβάλλει bits, τότε χάνεται ο συγχρονισμός και το σύστημα δεν μπορεί να τον
επανακτήσει.
CBC κρυπτογράφηση εφαρμόζεται επίσης για λόγους πιστοποίησης
ταυτότητας και εξασφάλισης της ακεραιότητας δεδομένων.
δεδομένων. Ο αποστολέας
κρυπτογραφεί το μήνυμα και επισυνάπτει το τελευταίο μπλοκ του
κρυπτογράμματος (που εξαρτάται από όλα τα προηγούμενα μπλοκ
κρυπτογράμματος και, και, κατ’
κατ’ επέκταση,
επέκταση, από ολόκληρο το μήνυμα)
μήνυμα) στο αρχικό
μήνυμα.
μήνυμα. Ο παραλήπτης κρυπτογραφεί το μήνυμα με τον ίδιο αλγόριθμο σε
CBC και ελέγχει αν το τελευταίο μπλοκ του κρυπτογράμματος που βρίσκει
ταυτίζεται με το αντίστοιχο που του έστειλε ο αποστολέας.
αποστολέας.
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 11
ciphers)
Τρόποι λειτουργίας
Block Ciphers (III)
Κρυπταλγόριθμος ανάδρασης (Cipher
Feedback (CFB) mode): Τα δεδομένα
κρυπτογραφούνται r bits τη φορά. Υπάρχει
ένας καταχωρητής ολίσθησης, μεγέθους
όσο το μέγεθος του μπλοκ. Κάθε χρονική
στιγμή, τα περιεχόμενα του καταχωρητή
ολίσθησης κρυπτογραφούνται: από το
αποτέλεσμα που προκύπτει, τα r
αριστερότερα bits γίνονται xor με τα r bits
του μηνύματος και προκύπτουν r bits
κρυπτογράμματος. Αυτά για την επόμενη
χρονική στιγμή πηγαίνουν στον
καταχωρητή ολίσθησης, ο οποίος για να
μπορεί να τα «χωρέσει» αποβάλλει τα r
αριστερότερά του bits.
Κρυπτογράφηση: I1=IV,
Οj = EK(Ij), 1 ≤ j ≤ u, tj: τα r πιο αριστερά bits του Οj ,
cj = xj ⊕ tj , Ij+1 = 2r Ij + cj mod 2n
Αποκρυπτογράφηση: Ι1 =IV, xj = cj ⊕ tj
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 12
ciphers)
Κρυπταλγόριθμος ανάδρασης
(συνέχεια)
Πέφτει η απόδοση (throughput) του συστήματος σε σχέση
με το CBC κατά έναν παράγοντα n/r (όπου n το πλήθος
bits του block).
Λάθος σε ένα bit κρυπτογράμματος επηρεάζει το πολύ τις
επόμενες [n/r] αποκρυπτογραφήσεις (το πολύ για [n/r]
χρονικές στιγμές θα παραμείνει στον καταχωρητή το
λανθασμένο bit, άρα τόσες αποκρυπτογραφήσεις θα είναι
λανθασμένες).
Τρόποι λειτουργίας
Block Ciphers (IV)
Ανάδραση εξόδου (Output Feedback
(OFB) mode): σχεδόν ίδιο με το CFB,
αλλά με έναν μηχανισμό για την μείωση
των λαθών. Η έξοδος της συνάρτησης
κρυπτογράφησης F (και όχι το
κρυπτόγραμμα) χρησιμοποιείται στην
ανάδραση. Έτσι ένα σφάλμα στο
κρυπτόγραμμα επηρεάζει μόνο μία
αποκρυπτογράφηση. Κατάλληλο για
εφαρμογές με μεγάλο αριθμό
σφαλμάτων λόγω υψηλού βαθμού
θορύβου (π.χ. δορυφορικές
επικοινωνίες).
Μοιάζει πολύ σαν δομή με
κρυπταλγόριθμο ροής
“Λεύκανση” (whitening)
Είναι η τεχνική κατά την οποία πριν
από έναν γύρο ενός block cipher, τόσο
ένα τμήμα της εισόδου όσο κι ένα
τμήμα της εξόδου γίνεται XOR με το
κλειδί. Αυτό καθιστά το σύστημα πιο
ασφαλές ως προς επιθέσεις γνωστού
αρχικού μηνύματος (known plaintext
attack).
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 16
ciphers)
Χαρακτηριστικά σχεδίασης
block ciphers
Στόχοι
{ Μεγάλη ταχύτητα
{ Χαμηλή κατανάλωση ισχύος
{ Εύκολη hardware υλοποίηση (απλές πράξεις)
{ Αποδοτική χρήση μνήμης
Να μπορεί να εφαρμοστεί σε smart card
{ Να μη χρειάζεται μεγάλη ποσότητα μυστικών
πληροφοριών για να είναι ασφαλής
{ Μεγάλου μήκους κλειδί
DES
Κρυπτογράφηση
64-Bit Block
Κρυπτογράμματος
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 20
ciphers)
Data Encryption Standard
(DES)
{ 64-bit blocks
{ 56-bit κλειδί
{ 16 γύροι
{ Στην αρχή και στο
τέλος πραγματοποιείται
αλληλομετάθεση των
bits)
{ To κλειδί ολισθαίνει
κυκλικά σε κάθε γύρο,
και 48 bits από αυτά
χρησιμοποιούνται
DES (συνέχεια)
Ένα αρχικό μπλοκ T υποβάλλεται πρώτα σε
μία μετάθεση IP, έχοντας ως αποτέλεσμα
T0=IP(T).
{ Παράδειγμα: t1t2…t64Ît58t50…t7
Στη συνέχεια το T0 περνάει μέσα από 16
επαναλήψεις μίας συνάρτησης f.
Τέλος, υποβάλλεται στην αντίστροφη
μετάθεση IP-1 δίνοντας το τελικό
κρυπτόγραμμα.
Το 58ο bit πηγαίνει στην πρώτη θέση, το 50ο στη δεύτερη κ.ο.κ.
Το IP-1 είναι ακριβώς το αντίστροφο του IP
Παράδειγμα αρχικής
μετάθεσης στον DES
Πίνακας
Επέκτασης E
48 bit εξόδου:
{ 010000000101010011111011111010100111110101011001
To πρώτο και το έκτο bit από τις εισόδους ενός S-box συνιστούν ένα
δυαδικό αριθμό που καθορίζει μία από τις 4 γραμμές
{ 00 για την πρώτη γραμμή, 01 για τη δεύτερη γραμμή, 10 για την
τρίτη γραμμή, και 11 για την τέταρτη γραμμή
Τα μεσαία 4 bits συνιστούν ένα δυαδικό αριθμό που καθορίζει μία από
τις 16 στήλες
{ 0000 για την πρώτη στήλη, 0001 για τη δεύτερη στήλη, . . ., και
1111 για την δέκατη έκτη στήλη
DES – Tα 8 S-boxes
32-bit έξοδος:
{ 10110101001111111100010011101010
Πίνακας Μετάθεσης P
10001101110101100101011001011111
{ Αριστερό μισό του block εισόδου (32 bits)
11100010101110100011100011001101
Tα 32 bit αποτελέσματος :
{ 01101111011011000110111010010010
key
PC-1
C0 D0
LSH LSH
PC-2 K1
C1 D1
LSH LSH
PC-2 K16
Αποκρυπτογράφηση
{ Ο ίδιος αλγόριθμος χρησιμοποιείται,
εκτός του ότι αντιστρέφεται η σειρά
χρησιμοποίησης των κλειδιών κάθε
γύρου. Έτσι, το K16 χρησιμοποιείται στην
πρώτη επανάληψη, το K15 στη δεύτερη
κ.ο.κ.
Τρόποι λειτουργίας: ECB, CBC
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 45
ciphers)
DES-CBC
(DES-Cipher Block Chaining)
Πρώτο DES κλειδί
64-Bit Block
αρχικού μηνύματος
DES κλειδί
Δεύτερο
Διάνυσμα DES κρυπτογράφηση
Αρχικοποίησης (IV) 64-Bit Block
αρχικού μηνύματος
Πρώτο
64-Bit Block DES κρυπτογράφηση
κρυπτογράμματος
Δεύτερο
64-Bit Block
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block κρυπτογράμματος 46
ciphers)
Χαρακτηριστικά του DES
που προάγουν ασφάλεια
Ανεπιθύμητα χαρακτηριστικά
του DES
♦ 4 μη ασφαλή κλειδιά
(π.χ. 00….011…1)
♦ Συμπληρωματική ιδιότητα
– DESk(m) = c ⇒ DESk´(m´) = c´
Διαφορική Κρυπτανάλυση
Εξετάζει ζεύγη κρυπτογραμμάτων, των οποίων τα αρχικά
μηνύματα διαφέρουν σε συγκεκριμένες θέσεις (chosen-
plaintext attack)
Προσομοιώνοντας τον αλγόριθμο, κάποια κλειδιά είναι πιο
πιθανά από κάποια άλλα, με δεδομένη την παραπάνω
συνθήκη
Όσο πιο πολλά κρυπτογράμματα αναλύονται, τόσο πιο πολλά
κλειδιά «απορρίπτονται» ως λιγότερο πιθανά
Οι λεπτομέρειες της μεθόδου πολύ σύνθετες
Οι 8 γύροι του DES «σπάνε» με γνωστά 214 επιλεγμένα
αρχικά μηνύματα (chosen plaintexts). Όλοι οι 16 γύροι του
DES όμως χρειάζονται 247 επιλεγμένα αρχικά μηνύματα
Αναφορά: «Differential Cryptanalysis of DES-like cryptosystems», Ε.
Biham, A. Shamir, Crypto 1990
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 50
ciphers)
Γραμμική Κρυπτανάλυση
Αναζητείται γραμμικότητα στο σύστημα
Έστω ότι γίνονται XOR τα bits ενός αρχικού μηνύματος, XOR
τα bits του αντίστοιχου κρυπτογράμματος και XOR τα δύο
αποτελέσματα. Ιδανικά, η πιθανότητα αυτού του bit
αποτελέσματος να είναι 1 ή 0 θα έπρεπε να είναι ½. Όταν δεν
ισχύει, μπορεί να εξαχθεί κάποια πληροφορία για το κλειδί
Η παραπάνω πιθανότητα εξαρτάται κύρια από τη
γραμμικότητα των S-boxes
Οι λεπτομέρειες της μεθόδου είναι επίσης σύνθετες
Καλά αποτελέσματα για λίγους γύρους του DES, όχι όμως για
το σύνολό του (όπου χρειάζονται 243 επιλεγμένα γνωστά
αρχικά μηνύματα)
Σε αντίθεση με τη διαφορική, για τη γραμμική κρυπτανάλυση
ειπώθηκε ότι δεν είχε ληφθεί υπ’ όψιν στη σχεδίαση του DES
Αναφορά: «Linear Cryptanalysis Method for DES Cipher», Matsui M.,
Advances in Cryptology -- EUROCRYPT '93. 386-397.
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 51
ciphers)
{ C=Ek3(Dk2(Ek1(P)))
{ P=Dk1(Ek2(Dk3(C)))
Σημείωση: αν K1=K2, τότε 3DES=DES
Το μεσαίο στάδιο επιτελεί αποκρυπτογράφηση και
όχι κρυπτογράφηση, προκειμένου να μπορεί ο
3DES να αποκρυπτογραφεί μηνύματα που έχουν
κρυπτογραφηθεί με τον απλό DES (πώς??)
General Security 3 2 2 3 3
Implementation of Security 1 1 3 3 2
Software Performance 2 2 3 1 1
Smart Card Performance 1 1 3 3 2
Hardware Performance 1 2 3 3 2
Design Features 2 1 2 1 3
Αλγόριθμος Rijndael
Μήκη κλειδιού 128, 192, 256 bits
Μήκη blocks δεδομένων 128, 192, 256 bits
Εύκολη υλοποίηση hardware
10-15 γύροι, ανάλογα με το μήκος του κλειδιού
Κάθε γύρος έχει 4 βήματα:
{ Αντικατάσταση byte (Byte substitution) – χρήση s-boxes με
καλά χαρακτηριστικά
{ Ολίσθηση (Shift row)
Nb = 4 Nb = 6 Nb = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14
ROUND ADD_ROUND
ADD_ROUND
Last_ROUND
Last_ROUND
KEY ROUND KEY
Nr Nr KEY KEY
Nr
Ο πρώτος γύρος (Round 0) είναι απλά πράξη
XOR με το κλειδί Έξοδος
Κρυπτόγραμμα
Κώστας Λιμνιώτης Κρυπτογραφία - 3 (Αλγόριθμοι τμήματος - block 59
ciphers)
S-Box (Sub_bytes)
Ανακάτωμα στηλών
(MixColumn)
Συγκριτικό στοιχείο
Processing
Moderate High Modest
Requirements
E D
Προτάθηκαν το 1976
Κάθε συμμετέχων στο σύστημα κατέχει ένα ζευγάρι
κλειδιών e και d, που το ένα αντιστρέφει το άλλο:
d(e(m))=m
Ένα από τα δύο κλειδιά είναι γνωστό σε όλους (το e) και
λέγεται Δημόσιο Κλειδί. Το άλλο κλειδί το γνωρίζει
μόνο ο κάτοχός του και ονομάζεται ιδιωτικό.
Απαραίτητη προϋπόθεση είναι ότι η γνώση του e δεν
οδηγεί σε προσδιορισμό του μυστικού κλειδιού d.
Κώστας Λιμνιώτης Κρυπτογραφία - 4 (Αλγόριθμοι Δημοσίου 2
Κλειδιού)
Τρόπος λειτουργίας
συστημάτων δημοσίου κλειδιού
Σχηματική αναπαράσταση
Κρυπτογραφημένο
Κρυπτογράφηση με το Αποκρυπτογράφηση με το
μήνυμα
δημόσιο κλειδί του B ιδιωτικό κλειδί του B
Χρήστης A Χρήστης B
Αποκρυπτογράφηση με το Κρυπτογράφηση με το
ιδιωτικό κλειδί του A Κρυπτογραφημένο
δημόσιο κλειδί του A
μήνυμα
Παραδείγματα συστημάτων
Δημοσίου Κλειδιού
RSA (αναπτύσσεται στο εργαστηριακό
μάθημα)
El Gamal (αναπτύσσεται στο εργαστηριακό
μάθημα)
Κρυπτοσύστημα Rabin (θα αναπτυχθεί
παρακάτω)
McEliece κρυπτοσύστημα
Knapsak αλγόριθμοι
Elliptic Curve κρυπτοσύστημα (ελλειπτικών
καμπυλών)
Και άλλοι….
Κώστας Λιμνιώτης Κρυπτογραφία - 4 (Αλγόριθμοι Δημοσίου 8
Κλειδιού)
Χρήσιμα Μαθηματικά Εργαλεία –
Θεώρημα Κινεζικού Υπολοίπου
(Chinese Remainder Theorem (CRT))
Αλγόριθμος Rabin
Ένας χρήστης A επιλέγει δύο τυχαίους πολύ μεγάλους πρώτους αριθμούς
p, q και υπολογίζει το γινόμενό τους N
Το δημόσιο κλειδί του A είναι το N, και το ιδιωτικό τα p, q.
Για την κρυπτογράφηση του μηνύματος m που θέλει να στείλει κάποιος
χρήστης στον A, απλά το υψώνει στο τετράγωνο mod Ν:
c ≡ m2 (mod N)
Αποκρυπτογράφηση Rabin
(συνέχεια)
Από την προηγούμενη ανάλυση έπεται ότι ο αριθμός:
± y ( p +1) / 4 mod p
είναι μια τετραγωνική ρίζα του y modulo p.
Μια παρόμοια ανάλυση μπορεί να γίνει και για τον άλλον
πρώτο αριθμό q.
Βρίσκουμε λοιπόν τα τετραγωνικά υπόλοιπα modulo p και
modulo q. Έτσι, μπορούμε να βρούμε το ζητούμενο
τετραγωνικό υπόλοιπο modulo N με το θεώρημα του
Κινεζικού υπολοίπου
Κώστας Λιμνιώτης Κρυπτογραφία - 4 (Αλγόριθμοι Δημοσίου 14
Κλειδιού)
Παράδειγμα κρυπτογράφησης
Rabin
Έστω p=7 και q=11 (παρατηρήστε ότι p,q≡3 mod 4.)
Τότε N = 77.
Έστω ότι ο χρήστης λαμβάνει ως κρυπτόγραμμα τον αριθμό
23. Τότε εργάζεται ως εξής:
Παράδειγμα κρυπτογράφησης
Rabin (συνέχεια)
Εφαρμογή του Θεωρήματος του Κινεζικού Υπολοίπου:
1) x ≡ 4 mod 7
x ≡ 1 mod 11
Έχουμε M1=11, M2=7.
Για τον αντίστροφο y1 του M1 δοκιμάζουμε να λύσουμε τη σχέση
11y1 ≡ 1 mod 7 όπου με δοκιμές βρίσκουμε y1=2.
3) x ≡ 4 mod 7
x ≡ -1 mod 11
H λύση του παραπάνω συστήματος είναι (4·11· 2 - 1 · 7 · 8) mod 77 ≡
≡ (88-56) mod 77 ≡ 32 mod 77
4) x ≡ -4 mod 7
x ≡ -1 mod 11
H λύση του παραπάνω συστήματος είναι (-4·11· 2 - 1 · 7 · 8) mod 77 ≡
≡ (-88-56) mod 77 ≡ -144 mod 77 ≡ 10 mod 77
Συνεπώς τα 4 πιθανά μηνύματα (ένα εκ των οποίων εστάλη) είναι τα ± 10 mod 77, ±32 mod 77
Κώστας Λιμνιώτης Κρυπτογραφία - 4 (Αλγόριθμοι Δημοσίου 17
Κλειδιού)
Συνδυασμός συστημάτων
Δημοσίου και Συμμετρικού Κλειδιού
Όχι ανταγωνιστικά – χρησιμοποιούνται μαζί
A B
Public Key Authentication
Συνδυασμός Συμμετρικού –
Δημοσίου Κλειδιού (II)
Στη συνέχεια, ο καθένας παράγει ένα συμμετρικό κλειδί
Κρυπτογραφεί το συμμετρικό του κλειδί με το δημόσιο κλειδί
του άλλου και του το στέλνει
{ Έτσι, και οι δύο έχουν το συμμετρικό κλειδί για την
επικοινωνία με τον άλλο
Πιστοποίηση μηνύματος
(Message authentication) -
Πιστοποίηση ταυτότητας
αποστολέα (Entity authentication)
Επιπρόσθετες απαιτήσεις
στην κρυπτογραφία
Ακεραιότητα δεδομένων (data
integrity):Επιβεβαίωση ότι το μήνυμα που
αποκρυπτογραφείται είναι το αυθεντικό και
δεν έχει παραποιηθεί κατά τη μετάδοσή του
Πιστοποίηση ταυτότητας ή αυθεντικοποίηση
(identification ή entity authentication) :
Επιβεβαίωση ότι ο αποστολέας είναι
πράγματι αυτός που ισχυρίζεται
Συναρτήσεις κατακερματισμού
(hash functions)
Δέχονται είσοδο οσουδήποτε μήκους και παράγουν έξοδο
σταθερού μήκους (ίσου ή μικρότερου του μεγέθους της εισόδου)
– (συμπίεση)
Η τιμή της συνάρτησης για οποιαδήποτε είσοδό της υπολογίζεται
εύκολα. Το αντίστροφο όμως δεν ισχύει: για οποιοδήποτε y, δεν
μπορεί να βρεθεί x ώστε h(x)=y. (preimage resistance). Είναι
λοιπόν συναρτήσεις μιας κατεύθυνσης.
Για οποιοδήποτε δοθέν Μ, είναι υπολογιστικά δύσκολη η εύρεση
M' με την ιδιότητα h(M) = h(M') (2nd-preimage resistance)
Δεν μπορούν να υπολογιστούν δύο διαφορετικές είσοδοι M, M’
που να δίνουν την ίδια έξοδο, δηλαδή h(M)=h(M’) (collision
resistance)
Χωρίζονται σε δύο κατηγορίες – σε αυτές που υπεισέρχεται και
κάποιο κλειδί στον υπολογισμό τους (keyed hash functions) και
σε αυτές που όχι (unkeyed hash functions)
Αν M το μήνυμα και H η συνάρτηση κατακερματισμού, τότε το
H(M) αποκαλείται αποτύπωμα (fingerprint) ή σύνοψη του
μηνύματος (Message Digest – MD)
Κώστας Λιμνιώτης Κρυπτογραφία 5 - Τεχνικές πιστοποίησης 3
μηνύματος και αποστολέα
Μία απλή συνάρτηση
κατακερματισμού
Bitwise-XOR (ένα μπλοκ bits μήκους nm γίνεται ένα
μικρότερο μπλοκ μήκους n, με χρήση XOR όπως
φαίνεται παρακάτω).
Κατασκευή Συναρτήσεων
Κατακερματισμού μίας κατεύθυνσης
Συνήθως κατασκευάζονται από συναρτήσεις των οποίων το πλήθος
εξόδων είναι μικρότερο από το πλήθος εισόδων (για να επιτευχθεί η
συμπίεση)
Η δομή αυτή είναι ανάλογη με ένα αλυσιδωτό block cipher (Chained
Block Cipher - CBC)
{ Παράγει μία τιμή κατακερματισμού για κάθε μπλοκ σταθερού
μήκους, με βάση το περιεχόμενό του αλλά και την τιμή
κατακερματιμού του προηγούμενου μπλοκ
M1 M2 Mn
h1 h2 h
IV f f … n-1 f h
μετάδοση
Σύγκριση
Παραλήπτης
Το ζευγάρι μήνυμα/MAC μεταδίδεται
κρυπτογραφημένο με κάποιον
αλγόριθμο. Ο παραλήπτης θα
Αποστολέας αποκρυπτογραφήσει πρώτα και μετά θα
ελέγξει την ακεραιότητα
Κώστας Λιμνιώτης Κρυπτογραφία 5 - Τεχνικές πιστοποίησης 8
μηνύματος και αποστολέα
Ιδιότητες MAC
MD5
SHA-1 RIPEMD-160
(MD4+)
Μήκος εξόδου 160 bits 128 bits 160 bits
160 (5
80 (4 γύροι 64 (4 γύροι ζευγάρια
Πλήθος βημάτων
των 20) των 16) γύρων των
16)
Μέγιστο μέγεθος
264-1 bits απεριόριστο απεριόριστο
μηνύματος
365 !
pn = 1 −
( 365 − n )!365 n
Πρόκληση
2.
Claimant O V στέλνει την πρόκληση Verifier
(C) (V)
3.
Ο C παράγει το μήνυμα-απάντηση Password Challenge
με τον εξής τρόπο:
(a) Επισυνάπτει το password Κατακερματισμός
στο μήνυμα-πρόκληση (χωρίς
(b) Κατακερματίζει το αποτέλεσμα κρυπτογράφηση)
(χωρίς κρυπτογράφηση)
Response
(c) Το κατακερματισμένο μήνυμα
είναι η απάντηση (Response
Message)
4.
Ο C στέλνει την απάντηση, χωρίς να την κρυπτογραφήσει
Claimant
(C) Verifier
(V)
Password Challenge 5.
Ο V επισυνάπτει το password στο
Κατακερματισμός μήνυμα που έστειλε και
κατακερματίζει το αποτέλεσμα. Αυτό
που προκύπτει είναι η αναμενόμενη
Αναμενόμενη απάντηση
απάντηση από τον C
6.
Αν η ληφθείσα απάντηση ταυτίζεται με την αναμενόμενη, τότε
Ο V συμπεραίνει ότι o C ξέρει το σωστό password.
Ψηφιακή υπογραφή
(Digital Signature)
Υπογραφή (signature) s=SI(m) για ένα μήνυμα
m ενός χρήστη I
{ o I υπογράφει, δηλαδή υπολογίζει το s, συνάρτηση
τόσο του m όσο και του ίδιου του χρήστη I
{ Για δοθέντα s,I, και m, ο οποιοσδήποτε μπορεί να
ελέγξει ότι s=SI(m)
{ H συνάρτηση υπολογισμού του s πρέπει να είναι
κατάλληλη ώστε να μη μπορεί κάποιος άλλος να
δημιουργήσει το ίδιο s με τον I
Αλγόριθμος ψηφιακής
υπογραφής El Gamal
Αλγόριθμος ψηφιακής
υπογραφής El Gamal (3)
Αλγόριθμος DSA
(Digital Signature Algorithm)*
* Όσες διαφάνειες από αυτές που ακολουθούν έχουν αστερίσκο *, είναι εκτός ύλης
Κώστας Λιμνιώτης Κρυπτογραφία 5 - Τεχνικές πιστοποίησης 35
μηνύματος και αποστολέα
Περιγραφή DSA *
Παράμετροι συστήματος
{ Επιλογή ενός πρώτου q των 160-bit
{ Επιλογή ενός πρώτου p των 1024-bit, έτσι ώστε:
q | p-1
{ Επιλογή g ∈ Zp* και υπολογισμός
a = g(p-1)/q mod p
{ Αν a=1, η διαδικασία επαναλαμβάνεται με διαφορετικό g
Κλειδιά
{ Επιλογή τυχαίου μυστικού κλειδιού x (1≤ x≤ q-1)
{ Υπολογισμός Δημοσίου Κλειδιού y = ax mod p
(όλα τα υπόλοιπα νούμερα είναι επίσης δημόσια)
Κώστας Λιμνιώτης Κρυπτογραφία 5 - Τεχνικές πιστοποίησης 36
μηνύματος και αποστολέα
Έγκειται στα:
{ Υπολογισμός λογαρίθμων στο GF(p)
{ Υπολογισμός λογαρίθμων σε κυκλική υπο-
ομάδα τάξης q
Αλγόριθμοι για αυτό χρειάζονται χρόνο
ανάλογο του q1/2 (κεφάλαιο 3 – Handbook of
Applied Cryptography)
Στην πράξη επιλέγεται q ≈ 2160 και p ≈ 21024
Συνδυασμός Μεθοδολογιών -
Κρυπτογράφηση
Εξασφάλιση εμπιστευτικότητας - ακεραιότητας - αυθεντικότητας
χρήστης Α
αρχικό
κατακερματισμός κείμενο
κωδικ.
ψηφιακό ψηφιακή κρυπτογράφηση μήνυμα
αποτύπωμα κρυπτογράφηση υπογραφή
συμμετρικό κλειδί Κ
ιδιωτικό κλειδί dΑ ψηφιακό
πιστ. eΑ αποστολή
μέσω
διαδικτύου
συμμετρικό
κλειδί Κ
ψηφιακός
κρυπτογράφηση φάκελος
ψηφιακό
πιστ. eΒ
δημόσιο κλειδί eΒ
ψηφιακό αρχικό
αποτύπωμα κατακερματισμός κείμενο
σύγκριση
Κρυπτογρ.
ψηφιακό ψηφιακή αποκρυπτογράφησηι μήνυμα
αποτύπωμα αποκρυπτογράφηση υπογραφή
συμμετρικό κλειδί Κ
δημόσιο κλειδί eΑ ψηφιακό
πιστ. eΑ
συμμετρικό
κλειδί Κ
ψηφιακός
αποκρυπτογράφηση φάκελος
ψηφιακό
πιστ. eΒ
ιδιωτικό κλειδί dΒ
Χαρακτηριστικά συστήματα με
την προηγούμενη δομή
Βασικοί όροι
Με τον όρο κρυπτογραφία εννοούμε τη μελέτη
μαθηματικών τεχνικών που στοχεύουν στην
εξασφάλιση θεμάτων που άπτονται της ασφάλειας
μετάδοσης της πληροφορίας, όπως
εμπιστευτικότητα, πιστοποίηση ταυτότητας του
αποστολέα και διασφάλιση του αδιάβλητου της
πληροφορίας.
Ορολογία:
{ Plaintext : Το αρχικό κομμάτι πληροφορίας
{ Κρυπτόγραμμα (ciphertext): Το κρυπτογραφημένο μήνυμα
{ Encryption: Η διαδικασία της κρυπτογράφησης ενός
μηνύματος
{ Decryption: η διαδικασία αποκρυπτογράφησής του
Αλγόριθμοι βασισμένοι σε
κλειδιά
Οι αλγόριθμοι κρυπτογράφησης χρησιμοποιούν ένα
ή περισσότερα κλειδιά (keys).
Αποκρυπτογράφηση
Αφαίρεσε το κλειδί και διαίρεσε το κρυπτόγραμμα διά 2
plaintext = SECRET = 19 5 3 18 5 20
Key = 3
Ciphertext = 41 13 9 39 13 43
Κώστας Λιμνιώτης Εργαστηριακό μάθημα 1 5
Κατηγορίες αλγορίθμων
ως προς το είδος του κλειδιού
Αλγόριθμοι συμμετρικού (ή κρυφού) κλειδιού
(symmetric key algorithms)
{ Χρησιμοποιείται το ίδιο κλειδί τόσο για την
κρυπτογράφηση όσο και για την
αποκρυπτογράφηση
Αλγόριθμοι ασύμμετρου (ή δημοσίου) κλειδιού
(Asymmetric (or public key) algorithms)
{ Χρησιμοποιούνται διαφορετικά κλειδιά για την
κρυπτογράφηση και την αποκρυπτογράφηση
{ Το κλειδί κρυπτογράφησης δεν μπορεί να εξαχθεί
από το κλειδί αποκρυπτογράφησης
Κώστας Λιμνιώτης Εργαστηριακό μάθημα 1 6
Μαθηματικός φορμαλισμός
EK1(m) = c
DK2(c) = m
όπου M και C υποδηλώνουν το αρχικό και το κρυπτογραφημένο μήνυμα
αντίστοιχα.
Οι δείκτες Ki υποδηλώνουν την εξάρτηση των συναρτήσεων από το κλειδί.
Οι συναρτήσεις έχουν την ιδιότητα: DK2(EK1(m)) = m
Σε αλγόριθμους συμμετρικού κλειδιού, ισχύει K1 = K2
Αποστολέας P C P
Encryption Decryption Παραλήπτης
{ Ciphertext: DEFABC
Παράδειγμα 2
{ Plaintext: This is not secure
Μονοαλφαβητικοί αλγόριθμοι
αντικατάστασης
Κάθε σύμβολο του μηνύματος αντιστοιχίζεται σε ένα
συγκεκριμένο σύμβολο του αλφαβήτου του
κρυπτογράμματος, με μία «1-1» και επί
συνάρτηση.
Παράδειγμα: Α -> Λ, Β -> Ω, Γ -> Δ κ.ο.κ.
Το πλήθος των κλειδιών είναι πολύ μεγάλο!! (ίσο με
το πλήθος των δυνατών αντιστοιχίσεων που
μπορούν να υπάρξουν)
{ Για το ελληνικό αλφάβητο που έχει 24 γράμματα, οι
πιθανές αντιστοιχίσεις είναι 23!
Ένας μονοαλφαβητικός αλγόριθμος
αντικατάστασης είναι εύκολο να σπάσει, με
ελέγχους της συχνότητας εμφάνισης των
γραμμάτων
Κώστας Λιμνιώτης Εργαστηριακό μάθημα 1 12
Συχνότητες εμφάνισης γραμμάτων της
ελληνικής γλώσσας
Συχνότητα Εμφάνισης Συχνότητα Εμφάνισης
Γράμμα Γράμμα
(%) (%)
Α 12 Λ 3,3
Ο 9,8 Η 2,9
Τ 9,1 Γ 2
Ε 8 Δ 1,7
Ν 7,9 Ω 1,6
Ι 7,8 Χ 1,4
Π 5,024 Θ 1,3
Ρ 5,009 Φ 1,2
Σ 4,9 Β 0,8
Μ 4,4 Ξ 0,6
Υ 4,3 Ζ 0,5
Κ 4,2 Ψ 0,2
Ευρύτερη περίπτωση:
Πολυαλφαβητικοί αλγόριθμοι
αντικατάστασης
Παράδειγμα
Κλειδί: lucky
Αρχικό μήνυμα: simple message
Κλειδί μετά την επανάληψη: luckyl uckyluc
Πλήθος θέσεων ολίσθησης: 11 (l), 20(u), 2(c), 10(k), 24 (y),
11(l), 20(u), 2(c), 10(k), 24(y), 11(l), 20(u), 2(c). Αυτό το
πλήθος θέσεων ολίσθησης εξαρτάται από τη θέση του
αντίστοιχου γράμματος του κλειδιού στο αγγλικό αλφάβητο.
Για παράδειγμα, το l είναι το 12ο γράμμα, άρα η μετατόπιση
του αντίστοιχου γράμματος του αρχικού μηνύματος είναι
κατά 11 θέσεις δεξιά κ.ο.κ.
Ολίσθηση των χαρακτήρων: sÆd, iÆc, mÆo, pÆz, lÆj, …
Κρυπτόγραμμα: dcozjpggcqlag
Αλγόριθμοι μετάθεσης
I R I T N E R
N O M T O E H I U S O I R
F A N C Q F P
IRITNERNOMTOEHIUSOIRFANCQFP
Επίσης όχι ασφαλείς.
ΠIΝΑIΑΛΟTΟΜΟΑTΟΜΟΟTΑΝΜΟΥΜΙΕΑ
όπου αρχίζει και διαφαίνεται το μήνυμα. Μπορούμε να δούμε, αλλάζοντας τις αναθέσεις
στα Ω,Β,Ο,Γ σε Ε,Π,Λ,Υ αντίστοιχα ότι το μήνυμα είναι
Πολυαλφαβητικοί αλγόριθμοι
αντικατάστασης –
Αλγόριθμος Vigenere
Έστω η φράση «TO BE OR NOT TO BE THAT
IS THE QUESTION» και σαν κλειδί έχουμε τη
φράση RELATIONS. Τότε, έχουμε το εξής
κρυπτόγραμμα:
R E L A T I O N S R E L A T I O NSR E L A T I O N SRE L
T O B E O R N O T T O B E T H A T I S T H E Q U E S T I O N
K S M E H Z B B L K S M E M PO GAJ X S E J C S F L ZS Y
Το R (πρώτο γράμμα της λέξης RELATIONS) είναι το 18ο γράμμα του αλφαβήτου, άρα
όπου συμπίπτει με κάποιο γράμμα του μηνύματος αυτό ολισθαίνει κατά 17 θέσεις
κ.ο.κ.
Παράδειγμα κρυπτογράφησης
με τον γραμμικό αλγόριθμο
Έστω a=5, b=1 και η λέξη ANTIO (ελληνικό αλφάβητο, άρα n=24).
Για το Α (1ο γράμμα της αλφαβήτου):
c= 5 · 0 + 1 mod 24 = 1
{ Άρα A -> Β (το 2ο γράμμα της αλφαβήτου)
Για το Ν (13ο γράμμα):
c=5 · 12 + 1 mod 24 = 61 mod 24 = 13
{ Άρα Ν - > Ξ (το 14ο γράμμα)
Συνεχίζοντας αντίστοιχα, θα έχουμε:
Για το T: c=5 · 18 + 1 mod 24 = 91 mod 24 = 19
Για το I: c= 5 · 8 + 1 mod 24 = 41 mod 24 = 17
Για το O: c= 5 · 14 + 1 mod 24 = 71 mod 24 = 23
Πολυαλφαβητικοί αλγόριθμοι
αντικατάστασης (συνέχεια)
C1 9 18 10 p1
C2 = 16 21 1 p2 (mod 26)
C3 5 12 23 p3
Κώστας Λιμνιώτης Εργαστηριακό μάθημα Κρυπτογραφίας (2-3-4) 12
I can’t do it
8 2 0 13 19 3 14 8 19
4 9 18 10 8
14 = 16 21 1 2 (mod 26)
12 5 12 23 0
18 9 18 10 14
21 = 16 21 1 8 (mod 26)
9 5 12 23 19
23 9 18 10 1
bcd Æ XJR
9 = 16 21 1 2 (mod 26)
hfa Æ XJR
17 5 12 22 3
23 9 18 10 7
9 = 16 21 1 5 (mod 26)
17 5 12 22 0
Κώστας Λιμνιώτης Εργαστηριακό μάθημα Κρυπτογραφίας (2-3-4) 15
Κρυπτανάλυση αλγορίθμου Hill
⎛ 19 11 ⎞ ⎛ 9 18 ⎞
K ⎜⎜ ⎟⎟ ≡ ⎜⎜ ⎟⎟ mod 26
⎝ 4 11 ⎠ ⎝ 16 13 ⎠
⎛19 11⎞
Έχουμε det ⎜⎜ ⎟⎟ ≡ (19 ⋅11 − 4 ⋅11) mod 26 ≡ 165 ≡ 9 mod 26
⎝ 4 11⎠
Παράδειγμα κρυπτανάλυσης
σε Hill (2)
Επειδή gcd(9,26)=1, υπάρχει ο αντίστροφος του K.
Έχουμε 9-1=3(mod 26), συνεπώς:
−1
⎛ 19 11 ⎞ ⎛ 11 − 11 ⎞
⎜⎜ ⎟ ≡ 3 ⎜⎜ ⎟⎟ mod 26 ≡
⎝ 4 11 ⎟⎠ ⎝ − 4 19 ⎠
⎛ 33 − 33 ⎞ ⎛ 7 19 ⎞
≡ ⎜⎜ ⎟⎟ mod 26 ≡ ⎜⎜ ⎟⎟ mod 26
⎝ − 12 57 ⎠ ⎝ 14 5 ⎠
⎛9 18 ⎞ ⎛ 7 19 ⎞ ⎛ 315 261 ⎞ ⎛ 3 1⎞
K ≡ ⎜⎜ ⎟⎜ ⎟≡⎜ ⎟≡⎜ ⎟ mod 26
13 ⎟⎠ ⎜⎝ 14 5 ⎟⎠ ⎜⎝ 294 369 ⎟⎠ ⎜⎝ 8 5 ⎟⎠
Συνεπώς:
⎝ 16
Κώστας Λιμνιώτης Εργαστηριακό μάθημα Κρυπτογραφίας (2-3-4) 19
Παράδειγμα κρυπτανάλυσης
σε Hill (3)
Για την αποκρυπτογράφηση, χρειαζόμαστε τον αντίστροφο του K.
−1 ⎛ 5 − 1⎞ ⎛ 23 11 ⎞
K ≡ 7 − 1 ⎜⎜ ⎟⎟ mod 26 ≡ ⎜⎜ ⎟⎟ mod 26
⎝−8 3 ⎠ ⎝ 10 19 ⎠
(το 7-1mod 26 ισούται με 15)
Για την αποκρυπτογράφηση λοιπόν έχουμε τα ακόλουθα γινόμενα:
⎛ 23 11 ⎞ ⎛ 9 ⎞ ⎛ 23 11 ⎞ ⎛ 18 ⎞ ⎛ 23 11 ⎞ ⎛ 14 ⎞ ⎛ 23 11 ⎞⎛ 7 ⎞
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ , ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ , ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ , ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎝ 10 19 ⎠ ⎝ 16 ⎠ ⎝ 10 19 ⎠ ⎝ 13 ⎠ ⎝ 10 19 ⎠ ⎝ 12 ⎠ ⎝ 10 19 ⎠⎝ 7 ⎠
⎛ 23 11 ⎞⎛ 3 ⎞ ⎛ 23 11 ⎞ ⎛ 13 ⎞ ⎛ 23 11 ⎞⎛ 3 ⎞ ⎛ 23 11 ⎞ ⎛ 19 ⎞
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ , ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ , ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ , ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟
⎝ 10 19 ⎠ ⎝ 13 ⎠ ⎝ 10 19 ⎠⎝ 1 ⎠ ⎝ 10 19 ⎠ ⎝ 18 ⎠ ⎝ 10 19 ⎠⎝ 4 ⎠
Παράδειγμα κρυπτανάλυσης
σε Hill (4)
Τα αποτελέσματα των γινομένων είναι:
Q U E R Y
T V W X Z
Έχοντας ως κλειδί P L A Y F
τη φράση «Playfair
example”, I R E X M
προκύπτει ο
πίνακας (όπου B C D G H
απουσιάζει το Q)
J K N O S
T U V W Z
T U V W Z
κρυπτογραφείται σε ND
Το ζευγάρι TH σχηματίζει ορθογώνιο,
P L A Y F
κρυπτογραφείται σε ZB
Το ζευγάρι EG σχηματίζει ορθογώνιο,
κρυπτογραφείται σε XD
Το ζευγάρι OL σχηματίζει ορθογώνιο,
κρυπτογραφείται σε KY I R E X M
Το ζευγάρι DI σχηματίζει ορθογώνιο, κρυπτογραφείται
σε BE
Το ζευγάρι NT σχηματίζει ορθογώνιο,
κρυπτογραφείται σε JV
Το ζευγάρι HE σχηματίζει ορθογώνιο, B C D G H
κρυπτογραφείται σε DM
Το ζευγάρι TR σχηματίζει ορθογώνιο,
κρυπτογραφείται σε UI
Το ζευγάρι EX βρίσκεται στην ίδια γραμμή,
κρυπτογραφείται σε XM J K N O S
Το ζευγάρι ES σχηματίζει ορθογώνιο,
κρυπτογραφείται σε MN
Το ζευγάρι TU βρίσκεται στην ίδια γραμμή,
κρυπτογραφείται σε UV
Το ζευγάρι MP σχηματίζει ορθογώνιο, T U V W Z
κρυπτογραφείται σε IF
Συνεπώς, το κρυπτόγραμμα είναι:
BMNDZBXDKYBEJVDMUIXMMNUVIF
Κώστας Λιμνιώτης Εργαστηριακό μάθημα Κρυπτογραφίας (2-3-4) 28
Σειριακός Playfair
(Seriated Playfair) (II)
Κάθε ζευγάρι γραμμάτων που L O G A R
εμφανίζεται σε κάθε στήλη
κρυπτογραφείται με τον
κλασικό αλγόριθμο Playfair. I/J T H M B
Έτσι, αν έχουμε ως κλειδί τη
φράση LOGARITHM, ο
πίνακας που προκύπτει C D E F K
φαίνεται δίπλα:
(όπου χρησιμοποιούμε την N P Q S U
εκδοχή όπου τα I,J υπάρχουν
στο ίδιο τετράγωνο)
Άρα, το κρυπτόγραμμα V W X Y Z
προκύπτει ως εξής:
Εργαστηριακό μάθημα 5
Stream ciphers –
Κρυπτανάλυση με τον αλγόριθμο
Berlekamp-Massey
Γενικά χαρακτηριστικά των
stream ciphers
Keystream
Generator
Ki
Pi Ci
Δουλεύουν πάνω σε ένα ρεύμα από bits (ή bytes)
Απαιτούν μία γεννήτρια ψευδοτυχαίας ακολουθίας bits (keystream generator) –
αυτή η ακολουθία που παράγεται λέγεται κλειδοροή (keystream)
Τα bits του κλειδιού γίνονται XOR με τα bits του μηνύματος για να προκύψει έτσι
το κρυπτόγραμμα, δηλαδή c i = pi ⊕ ki
Η αποκρυπτογράφηση γίνεται με τον ίδιο τρόπο (ο παραλήπτης έχει την ίδια
γεννήτρια κλειδοροής, και κάνει XOR το κάθε bit κρυπτογράμματος με το
αντίστοιχο bit της κλειδοροής) p i = ci ⊕ ki
Η περίοδος της κλειδοροής πρέπει να είναι όσο γίνεται πιο μεγάλη
0 1 1 1 0 0 1 0 1 1 0 Κλειδοροή
⊕
1 1 0 0 0 1 1 1 0 1 0 plaintext
1 0 1 1 0 1 0 1 1 0 0 CIPHERTEXT
Shift register
⊕ Cipher stream
⊕ Key stream
Έξοδος
⊕
Αν η αρχική κατάσταση είναι 001, τότε η έξοδος είναι 1 (η δεξιότερη βαθμίδα).
Την επόμενη χρονική στιγμή, η κατάσταση θα είναι 100 και η έξοδος 0. Το 100
προκύπτει ως εξής: το «1» είναι το XOR που είχαν αρχικά η δεύτερη και η τρίτη
βαθμίδα (που ήταν 0 και 1 αντίστοιχα), ενώ το «00» είναι απλά ολισθημένες οι τιμές
που είχαν αρχικά η πρώτη με τη δεύτερη βαθμίδα.
DELETING
DELETING
Κώστας Λιμνιώτης DELETING
Κρυπτανάλυση στους stream ciphers 10
DELETING
Πηγή:
Πηγή: http://www1.cs.columbia.edu/~tal/4995/ DELETING
Κώστας Λιμνιώτης DELETING
Κρυπτανάλυση στους stream ciphers 11
Εργαστηριακό μάθημα 6
(Αλγόριθμοι Δημοσίου Κλειδιού -
RSA)
E D
Σχηματική αναπαράσταση
Κρυπτογραφημένο
Κρυπτογράφηση με το Αποκρυπτογράφηση με το
μήνυμα
δημόσιο κλειδί του B ιδιωτικό κλειδί του B
Χρήστης A Χρήστης B
Αποκρυπτογράφηση με το Κρυπτογράφηση με το
ιδιωτικό κλειδί του A Κρυπτογραφημένο
δημόσιο κλειδί του A
μήνυμα
Παράδειγμα επεκταμένου
αλγόριθμου του Ευκλείδη
Έστω ότι a=1925, b=693
Έχουμε:
{ 1925 = 2 · 693 + 539 (1)
{ 693 = 1 · 539 + 154 (2)
{ 539 = 3 · 154 + 77 (3)
{ 154 = 2 · 77 (4)
Άρα, ο μέγιστος κοινός διαιρέτης είναι το 77 (το τελευταίο μη
μηδενικό υπόλοιπο που πήραμε). «Διαβάζοντας» τις σχέσεις
ανάποδα, έχουμε:
Ξεκινώντας από την (3) (και χρησιμοποιώντας τις (2), (1) διαδοχικά):
77 = 539 − 3 ⋅ 154 = 539 − 3 ⋅ ( 693 − 1 ⋅ 539 ) =
= 4 ⋅ 539 - 3 ⋅ 693 = 4 ⋅ (1925 - 2 ⋅ 693) - 3 ⋅ 693 =
= 4 ⋅ 1925 - 11 ⋅ 693
Δηλαδή, x=4 και y=-11.
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 6 8
Αλγόριθμος RSA
(κρυπτογράφηση)
Αλγόριθμος RSA
(αποκρυπτογράφηση)
Ο A αποκρυπτογραφεί το κρυπτόγραμμα c
υπολογίζοντας το m = cd mod N. Η σχέση
μεταξύ του d και του e εξασφαλίζει τη
σωστή ανάκτηση του m.
Αν υψώσουμε και τα δύο μέλη της ισοδυναμίας εις την k και στη συνέχεια
πολλαπλασιάσουμε και τα δύο μέλη με m, θα προκύψει η ακόλουθη σχέση:
mkφ(N)+1 mod N =m mod N (1)
•H Alice διαλέγει τυχαία έναν αριθμό e μικρότερο του (p-1)(q-1) = 36·72 = 2592, που
να μην έχει κοινούς διαιρέτες ούτε με το 36 ούτε με το 72. Έστω για παράδειγμα
e=77.
•Το ιδιωτικό κλειδί της Alice είναι το d=101. Είναι η μόνη που το γνωρίζει
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 6 13
Yλοποίηση σε Matlab
El Gamal Αλγόριθμος
Παράμετροι συστήματος: Ακέραιοι g,p
Ο p είναι ένας πολύ μεγάλος πρώτος και ο g ένα
πρωταρχικό στοιχείο (στοιχείο – γεννήτορας) του Zp*.
(δηλαδή: gκ ≠ 1 (mod p) για όλα τα k μικρότερα του p-1)
(με Zp* συμβολίζουμε το σύνολο όλων των ακεραίων
1,2,…,p-1. Ονομάζεται πεπερασμένη ομάδα – όλες οι
πράξεις σε μία ομάδα γίνονται modulo p).
Τα p,g επιλέγονται τυχαία από έναν χρήστη Α.
O A επιλέγει ιδιωτικό κλειδί a: 1 < a < p – 1
Υπολογισμός του y = ga mod p.
To Δημόσιο Κλειδί του A είναι η τριπλέτα (p, g, y). To
ιδιωτικό του κλειδί είναι το a.
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 7 2
Ένα σημαντικό σχόλιο για
τους γεννήτορες
Κρυπτογράφηση El Gamal
Χαρακτηριστικά του
αλγορίθμου El Gamal
Το κρυπτόγραμμα είναι δύο φορές πιο
μεγάλο από το μήνυμα (βασικό του
μειονέκτημα έναντι του RSA)
Η ασφάλειά του στηρίζεται στη δυσκολία
επίλυσης των προβλημάτων DLP
(Discrete Logarithm Problem) - Για δοθέν
h=ga mod p, υπολογισμός του a είναι
αδύνατος ακόμα κι αν ξέρουμε τα g,p,h
όταν αυτά είναι τεράστιοι αριθμοί
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 7 6
Παράδειγμα κρυπτογράφησης
El Gamal
Παράμετροι δημοσίου κλειδιού:
p = 11
g = 6 (μπορούμε να επιβεβαιώσουμε με δοκιμές ότι πράγματι
το g είναι γεννήτορας του Z11*. )
(προσέξτε ότι ο αριθμός 4 δεν είναι γεννήτορας του Ζ11*!! Μπορείτε να
δείτε γιατί?)
Παράδειγμα κρυπτογράφησης
El Gamal (συνέχεια)
Έστω ότι στον προηγούμενο χρήστη θέλουμε να στείλουμε το μήνυμα m=9.
1. Επιλογή τυχαίου αριθμού k (έστω k = 2)
2. Υπολογισμός των
1. γ≡ gk mod p ≡ 36 = 3 mod 11
2. δ = yk m mod p ≡ 9 · 9 = 81 mod 11 = 4 mod 11
3. Κρυπτόγραμμα είναι το ζευγάρι (γ,δ)=(3,4)
ΑΠΟΚΡΥΠΤΟΓΡΑΦΗΣΗ
Το μήνυμα m ανακτάται από τη σχέση: δ/γa mod 11 ≡ 4/32 mod 11
Έχουμε 32 ≡ 9 mod 11
Άρα το μήνυμα m είναι το 4 · 9-1 mod 11
O αντίστροφος του 9 mod 11 είναι προφανώς ο 5 (μπορεί να υπολογιστεί με
δοκιμές)
Συνεπώς το αποκρυπτογραφημένο μήνυμα είναι 4 · 5 mod 11 ≡ 20 ≡ 9 mod 11
Κρυπτογράφηση El Gamal –
Παράδειγμα 2 (συνέχεια)
Αλγόριθμος El Gamal
http://islab.oregonstate.edu/koc/ece575/02Project/Sin+Cha/
Εκτελείται ως εξής:
1. Πρώτα εκτελούμε την pub_key_gen, η οποία παράγει τα δημόσια
κλειδιά p, Alpha, Betaa (και υπολογίζει και το ιδιωτικό κλειδί που το
κρατάει μυστικό). Η μεταβλητή Alpha αντιστοιχεί στον γεννήτορα g,
ενώ η Betaa στο y.
2. Μετά, τρέχουμε τη συνάρτηση encrypt, όπου μας ζητά να δώσουμε
ένα κείμενο (με μικρά γράμματα, χωρίς κενά και χωρίς σημεία
στίξης). Η συνάρτηση αυτή υπολογίζει τα δ,γ που τα αντιστοιχεί στις
μεταβλητές y1, y2 αντίστοιχα.
3. Τέλος τρέχουμε τη συνάρτηση decrypt με ορίσματα τα y1,y2
(δηλαδή γράφουμε decrypt(y1,y2)). Λογικά, θα πάρουμε το αρχικό
μήνυμα
Κρυπτογράφηση με συμμετρικό ή
με Δημόσιο κλειδί?
Οι σύγχρονοι αλγόριθμοι συμμετρικού κλειδιού (block
ciphers/stream ciphers) είναι πιο γρήγοροι από τους
αλγορίθμους Δημοσίου κλειδιού και χρησιμοποιούνται
περισσότερο.
{ Μειονέκτημα: πρέπει οι δύο συνομιλούντες να ανταλλάξουν το
κοινό κλειδί κρυπτογράφησης πριν ξεκινήσει η επικοινωνία (π.χ.
στον Vigenere αλγόριθμο για να μπορεί ο παραλήπτης να
αποκρυπτογραφήσει πρέπει να ξέρει τη φράση-κλειδί). Πώς
μπορεί να γίνει αυτό, τη στιγμή που δεν υπάρχει ασφαλές κανάλι
επικοινωνίας?
Η ανταλλαγή του συμμετρικού κλειδιού κρυπτογράφησης
γίνεται με κάποιον αλγόριθμο Δημοσίου κλειδιού. (όπου
πραγματικά, σε αλγορίθμους Δημοσίου Κλειδιού, δεν
απαιτείται καμία εκ των προτέρων ανταλλαγή πληροφορίας
των δύο συνδιαλεγομένων).
Συνεπώς, οι δύο μέθοδοι κρυπτογράφησης δεν είναι
ανταγωνιστικές μεταξύ τους – χρειάζονται και
χρησιμοποιούνται και οι δύο.
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 7 12
Διανομή του συμμετρικού κλειδιού
κρυπτογράφηση με χρήση
αλγορίθμου Δημοσίου κλειδιού
1. Δημιουργία
συμμετρικού κλειδιού
Αποστολέας A Παραλήπτης B
Diffie-Hellman αλγόριθμος
Οι εμπνευστές της ιδέας της
κρυπτογράφησης Δημοσίου Κλειδιού (Diffie,
Hellman - 1976) πρότειναν μία τεχνική που
να επιτρέπει την ασφαλή ανταλλαγή ενός
αριθμού (μιας πληροφορίας γενικότερα)
μεταξύ δύο συνδιαλεγομένων, με απώτερο
στόχο ο αριθμός αυτός να χρησιμοποιηθεί
μετέπειτα ως κλειδί σε κάποιον αλγόριθμο
συμμετρικού κλειδιού (αλγόριθμος Diffie-
Hellman).
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 7 14
Παράδειγμα –
Diffie-Hellman μέθοδος
1. Συμφωνία για το Diffie-Hellman ζευγάρι
p (πρώτος αριθμός) και g (γεννήτορας mod p)
Α Β
2. 2.
Δημιουργία Δημιουργία
τυχαίου τυχαίου
αριθμού x αριθμού y
A B
3. 3.
Υπολογισμός Υπολογισμός
x’=gx mod p 4.
Ανταλλαγή x’, y’ y’=gy mod p
χωρίς ασφάλεια
B
A
5. 5.
Υπολογισμός κλειδιού= Υπολογισμός κλειδιού=
y’x mod p x’y mod p
=gxy mod p =gxy mod p
6. Κρυπτογράφηση με το παραπάνω
συμμετρικό κλειδί που υπολογίστηκε
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 7 17
Πρώτοι αριθμοί
Κατανομή
{ Έστω π(x) το πλήθος των πρώτων
αριθμών στο διάστημα [2,x]. Τότε,
x
{ π(x) ~
ln x
{ Άρα: δεν είναι δύσκολο να βρούμε
πρώτους αριθμούς (έχουν μία αρκετά
ομοιόμορφη κατανομή):
Probabilistic primality tests
Fermat’s test
{ Γιατί είναι Probabilistic test?
{ Αν αποφανθούμε ότι ο n δεν είναι
πρώτος, τότε αυτό ισχύει εγγυημένα.
Όμως, είναι πιθανό ο n να μην είναι
πρώτος και μέσω του Fermat’s test να
αποφανθούμε ότι είναι (υπάρχει
πιθανότητα λανθασμένης απόφασης)
{ Τέτοια τεστ ονομάζονται «yes-biased
Monte Carlo»
Miller-Rabin
{ Για n πρώτο αριθμό, έστω n-1 = 2sr (όπου ο r
είναι περιττός αριθμός). Έστω a οποιοσδήποτε
ακέραιος τέτοιος ώστε gcd(a,n)=1. Τότε είτε
a ≡1 (mod n) είτε a
r 2jr
≡ n − 1 mod n για
κάποιο j, 0 ≤ j ≤ s-1.
Παράδειγμα
Έστω ο σύνθετος αριθμός n=91 (7 x 13).
Έχουμε 91-1=90=2 x 45, δηλαδή s=1, r=45.
Ισχύει 9r = 945≡ 1 mod 91, οπότε ο 91 είναι
ισχυρός ψευδοπρώτος ως προς τον 9. Όλα
τα ισχυρά μη-πειστήρια για τον 91 (πλην του
9 που ήδη είδαμε) είναι:
{1, 9, 10, 12, 16, 17, 22, 29, 38, 53, 62, 69,
74, 75, 79, 81, 82, 90). Το πλήθος τους είναι
18=φ(91)/4.
Probabilistic primality tests
Miller-Rabin test
{ Find s,r st. n-1 = 2sr
For i = 1 to t
choose random a, 2 ≤ a ≤ n-2
y = ar mod n
if y≠1 and y≠n-1
j=1
while j≤s-1 and y≠n-1
y=y2 mod n
if y=1 return composite
j=j++
if y≠n-1 return composite
return prime
Σχηματική αναπαράσταση
Common Common
Inputs Τυχαία τιμή Inputs
C Ερώτηση-πρόκληση V
Claimer Verifier
Απάντηση
Repeats t
number
of rounds
Ερώτηση (e) = 0
1
r Λαμβάνει το
y=rsemod Ν. Εξετάζει αν
r×s modN y2=xυe mod Ν
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 8 7
Παράδειγμα
Ν=17 x 19 = 323
s=25
υ=s2 mod N =302
Γέννηση τυχαίου αριθμού r=12 και αποστολή του
x=r2 mod N = 144
O V στέλνει τον αριθμό e=1
O C απαντάει με τον y=rsemod Ν =
12 x 25 mod 323 = 300
O V υπολογίζει τον αριθμό y2 mod N = 206 και
εξετάζει αν ισούται με τον xυe (mod N)=144 x 302
mod 323 = 206 (άρα, αποδεκτή η απάντηση y=300
του C).
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 8 8
Σχόλια πάνω στον Fiat –
Shamir
VideoCrypt (κρυπτογράφηση
αναλογικού τηλεοπτικού σήματος –
π.χ. Filmnet).
Σε εφαρμογές e-voting
Κρυπτογράφηση –
Αποκρυπτογράφηση RSA
Αν m το μήνυμα που θέλουμε να στείλουμε, τότε το
κρυπτογραφούμε με την πράξη c = me mod Ν.
Σύνοψη κρυπτογραφικών
αλγορίθμων
Σύνοψη κρυπτογραφικών
αλγορίθμων
Γραμμικός αλγόριθμος (αποκρυπτογράφηση):
Κάθε ένα κρυπτογραφημένο γράμμα c αποκρυπτογραφείται
με την πράξη
a-1(c-b)mod Ν
Ας δούμε πως θα αποκρυπτογραφούσαμε το WNIIR.
Καταρχήν πρέπει να βρούμε το 3-1 mod 26. Είτε με αλγόριθμο
του Ευκλείδη είτε με δοκιμές μπορούμε να βρούμε ότι ισούται
με 9. Συνεπώς:
{ Για το W (23ο γράμμα) έχουμε: 9(22-1) ≡ 189 mod 26 ≡ 7
Άρα, το W αποκρυπτογραφείται στο 8ο γράμμα του αλφαβήτου,
δηλαδή το H
{ Για το N (14ο γράμμα) έχουμε 9(13-1) ≡ 108 mod 26 ≡ 4.
Άρα, το N αποκρυπτογραφείται στο 5ο γράμμα του αλφαβήτου,
δηλαδή στο E.
{ Ομοίως συνεχίζουμε και για τα υπόλοιπα…..
Σύνοψη κρυπτογραφικών
αλγορίθμων
Αλγόριθμος Hill (συνέχεια)
⎛2 3 ⎞
Έστω ότι εξετάζουμε τον πίνακα Κ = ⎜⎜ ⎟⎟
⎝1 7 ⎠
Η ορίζουσα αυτού είναι 11 – άρα, πράγματι είναι ένας πίνακας
που μπορεί να χρησιμοποιηθεί για την κρυπτογράφηση Hill.
Tο ζευγάρι γραμμάτων HE κρυπτογραφείται με βάση το
γινόμενο
⎛2 3 ⎞⎛ 7 ⎞ ⎛ 26 ⎞ ⎛0⎞
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ mod 26
⎝1 7 ⎠⎝ 4 ⎠ ⎝ 35 ⎠ ⎝9⎠
Άρα, το ζευγάρι HE γίνεται AJ
⎛2 3 ⎞ ⎛ 11 ⎞ ⎛ 55 ⎞ ⎛ 3 ⎞
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ mod 26
⎝1 7 ⎠ ⎝ 11 ⎠ ⎝ 88 ⎠ ⎝ 10 ⎠
Άρα, το ζευγάρι LL γίνεται DK
Σύνοψη κρυπτογραφικών
αλγορίθμων
Tέλος, το O επειδή μένει μόνο του συμπληρώνεται αυθαίρετα
με ένα άλλο γράμμα, κατάλληλο ώστε να μην μπερδεύει τον
παραλήπτη – να καταλάβει ότι είναι απλά πλεονάζον γράμμα.
Συνηθέστερα επιλέγεται το πλεονάζον γράμμα να είναι το Q
(χωρίς βέβαια να αποκλείονται και άλλα γράμματα). Έτσι, το
ζευγάρι γραμμάτων OQ κρυπτογραφείται με βάση το γινόμενο
⎛2 3 ⎞ ⎛ 14 ⎞ ⎛ 76 ⎞ ⎛ 24 ⎞
⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ mod 26
⎝1 7 ⎠ ⎝ 16 ⎠ ⎝ 126 ⎠ ⎝ 22 ⎠
Άρα, το ζευγάρι LQ γίνεται ΥW
Σύνοψη κρυπτογραφικών
αλγορίθμων
Αποκρυπτογράφηση Hill
(συνέχεια)
26 = 2 ⋅ 11 + 4
11 = 2 ⋅ 4 + 3
4 = 1⋅3 + 1
3 = 3 ⋅1 + 0
Συνεπώς:
1 = 4 − 1 ⋅ 3 = 4 − 1 ⋅ (11 − 2 ⋅ 4) = −1 ⋅11 + 3 ⋅ 4 =
= −1 ⋅11 + 3 ⋅ (26 − 2 ⋅11) = 3 ⋅ 26 − 7 ⋅11
Άρα 11-1mod 26 = -7 mod 26 = 19
(το 19 προέκυψε από την πράξη -7 + 26)
⎛ 7 − 3⎞ ⎛ 133 − 57 ⎞ ⎛ 3 21⎞
19⎜⎜ ⎟⎟ mod 26 ≡ ⎜⎜ ⎟⎟ mod 26 ≡ ⎜⎜ ⎟⎟
⎝ −1 2 ⎠ ⎝ − 19 38 ⎠ ⎝ 7 12 ⎠
Σύνοψη κρυπτογραφικών
αλγορίθμων
Αποκρυπτογράφηση Hill (συνέχεια)
κλειδί τη λέξη
CRYPTOGRAPHY. O G A H B
{ Αρχικά,
κατασκευάζουμε τον
D E F I J
αντίστοιχο πίνακα:
(επιλέξαμε την
περίπτωση όπου K L M N S
παραλείπουμε το Q
από τον πίνακα, που
είναι η συνηθέστερη U V W X Z
περίπτωση)
Σύνοψη κρυπτογραφικών
αλγορίθμων
Playfair (συνέχεια)
{ Στη συνέχεια, «σπάμε» το
C R Y P T
μήνυμα HELLO σε δυάδες,
δηλαδή HE, LX, LO (προσέξτε
πως δεν πρέπει ένα ζεύγος να
αποτελείται από δύο ίδια
γράμματα, συνεπώς επειδή θα O G A H B
σχηματιζόταν το ζεύγος LL
παρεμβάλλαμε ένα Χ ανάμεσα)
ΠΡΟΣΟΧΗ!! Δεν παρεμβάλλουμε
το X ανάμεσα σε οποιοδήποτε
ζευγάρι διαδοχικών ίδιων D E F I J
γραμμάτων, παρά μόνο αν το
ζευγάρι σχηματίζεται κατά την
παραπάνω κατάτμηση της λέξης.
Για παράδειγμα, για τη λέξη K L M N S
GOOD, θα είχαμε τα ζευγάρια GO
και OD χωρίς κανένα πρόβλημα
U V W X Z
ως εξής:
Τα H,E σχηματίζουν
ορθογώνιο στον πίνακα, O G A H B
Σύνοψη κρυπτογραφικών
αλγορίθμων
Playfair (Αποκρυπτογράφηση)
Η αποκρυπτογράφηση γίνεται με ακριβώς
την αντίστροφη διαδικασία. Έστω ότι C R Y P T
λαμβάνουμε το κρυπτογραφημένο μήνυμα
GLGMMRAGDK.
Tα G,L βρίσκονται στην ίδια στήλη, άρα το
καθένα αποκρυπτογραφείται στο γράμμα O G A H B
που βρίσκεται από πάνω του – συνεπώς
GL->RE
Τα G,M σχηματίζουν ορθογώνιο, άρα
αποκρυπτογραφούνται σε AL
D E F I J
Τα M,R σχηματίζουν ορθογώνιο, άρα
αποκρυπτογραφούνται σε L,Y.
Tα A,G είναι στην ίδια γραμμή, άρα το
καθένα αποκρυπτογραφείται στο αμέσως
προηγούμενό του, συνεπώς AG->GO. K L M N S
Tέλος, τα D,K είναι στην ίδια στήλη οπότε το
καθένα αποκρυπτογραφείται στο γράμμα
που βρίσκεται από πάνω του – με άλλα
λόγια, DK -> OD.
U V W X Z
Εργαστηριακό μάθημα 11
(Επαναληπτικές ασκήσεις)
Σύνοψη κρυπτογραφικών
αλγορίθμων – Αλγόριθμος Hill
Έστω ότι το κλειδί είναι ένας πίνακας 2 x 2.
Αυτό σημαίνει ότι:
{ Σπάμε το μήνυμα σε ζευγάρια γραμμάτων
{ Κάθε γράμμα το αντιστοιχούμε σε έναν αριθμό
(π.χ. το Α αντιστοιχεί στον αριθμό 0, το B στον
αριθμό 1 κ.ο.κ.)
{ Κάνουμε τους αντίστοιχους πολλαπλασιασμούς.
(βλέπε συνέχεια)
Σύνοψη κρυπτογραφικών
αλγορίθμων – Αλγόριθμος Hill
Έστω ότι θέλουμε να κρυπτογραφήσουμε τη λέξη ΓΕΙΑ. Σαν
κλειδί έχουμε τον πίνακα
⎛1 3 ⎞
K = ⎜⎜ ⎟⎟
⎝ 2 13⎠
Σπάμε το μήνυμα σε ζευγάρια. Το πρώτο ζευγάρι είναι το ΓΕ
και το δεύτερο το ΙΑ.
Το Γ είναι το 3ο γράμμα της αλφαβήτου, άρα αντιστοιχεί στον
αριθμό 2. Το Ε είναι το 5 γράμμα, άρα αντιστοιχεί στον αριθμό
4. Συνεπώς, για την κρυπτογράφηση του ΓΕ θα έχουμε τον
πολλαπλασιασμό:
Σύνοψη κρυπτογραφικών
αλγορίθμων – Αλγόριθμος Hill
Σύνοψη κρυπτογραφικών
αλγορίθμων – Αλγόριθμος Hill
24 = 3 · 7 + 3
7=2 ·3+1
Σύνοψη κρυπτογραφικών
αλγορίθμων – Αλγόριθμος Hill
⎛ 3 8 ⎞ ⎛ 1 2 ⎞ ⎛ 5 2 ⎞
⎜⎜ ⎟⎟ , ⎜⎜ ⎟⎟ , ⎜⎜ ⎟⎟
⎝ 1 6 ⎠ ⎝ 4 9 ⎠ ⎝ 10 4 ⎠
Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 10 10
Σύνοψη κρυπτογραφικών
αλγορίθμων - RSA
Δημιουργία δημόσιου-ιδιωτικού κλειδιού από
έναν χρήστη:
{ Επιλογή δύο πρώτων αριθμών p,q. Έστω p=11,
q=19.
{ Υπολογισμός N=pq=209
{ Υπολογισμός φ(Ν)=(p-1)(q-1)=180
{ Επιλογή e τέτοιυ ώστε gcd(e,φ(Ν))=1.
π.χ. μεταξύ των 39,56,29, μόνο το 29 μπορεί να
επιλεγεί ως e.
{ Εύρεση του αντίστροφου του e mod φ(Ν).
Σύνοψη κρυπτογραφικών
αλγορίθμων - RSA
Σύνοψη κρυπτογραφικών
αλγορίθμων – El Gamal