Υπολογιστική Υλοποίηση Πρωτοκόλλου DES µε εφαρµογές στην Κρυπτογράφηση Κειµένων

Save this PDF as:
 WORD  PNG  TXT  JPG

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Υπολογιστική Υλοποίηση Πρωτοκόλλου DES µε εφαρµογές στην Κρυπτογράφηση Κειµένων"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Υπολογιστική Υλοποίηση Πρωτοκόλλου DES µε εφαρµογές στην Κρυπτογράφηση Κειµένων ιπλωµατική Εργασία του ηµόπουλου ηµητρίου ΑΕΜ : 4423 Επιβλέπων : Σταύρος Π. οκουζγιάννης, Επίκουρος Καθηγητής Α.Π.Θ. Θεσσαλονίκη, Μάρτιος 2008

2 ii

3 Πρόλογος Η παρούσα διπλωµατική εργασία έχει στο επίκεντρό της το Κρυπτογραφικό πρωτόκολλο DES, που για χρόνια (από το 1977) αποτελούσε το επίσηµο µέσο για την κρυπτογράφηση επικοινωνιών βασισµένων σε δακτυλογραφηµένο κείµενο. Το DES επιλέχθηκε µέσα από ένα σύνολο 120 περίπου υπαρκτών αλγορίθµων κρυπτογράφησης και εµφανίστηκε φερέγγυο για δύο περίπου δεκαετίες. Έπαψε να χρησιµοποιείται επίσηµα, σε επίπεδο κρατικών η διεθνών επικοινωνιών το 2002 οπότε και αντικαταστάθηκε από το πρωτόκολλο AES, διότι η ισχύς των υπολογιστών έκανε δυνατή την επίθεση στον κώδικα (αποκρυπτογράφηση) µέσα σε ένα 24-ωρο. Σήµερα, στην εποχή των κατανεµηµένων στρωµατοποιηµένων δικτύων υπολογιστών (clusters), όπου είναι δυνατή η χρήση χιλιάδων κατανεµηµένων υπολογιστών ανά τον κόσµο, η επίθεση στον κώδικα DES δεν θα απαιτούσε πάνω από τριάντα λεπτά της ώρας. Ωστόσο, για εφαρµογές µικρού οικονοµικού βάρους όπου η εµπλοκή ισχυρών υπολογιστικών µέσων δεν είναι εφικτή, όπως κατά τις εµπορικές συναλλαγές µεταξύ µικρών επιχειρήσεων, η χρήση του DES εµφανίζεται απόλυτα ικανοποιητική. Με ένα πρόγραµµα εγγεγραµένο σε µια Flash-EPROM ή σε κάρτα µε ενσωµατωµένο κύκλωµα FPGA, η εφαρµογή του DES είναι πρακτικά εφαρµόσιµη για χρήση σε κοινόχρηστους χώρους όπως τα δίκτυα Wi-Fi των Internet Café, αεροδροµίων, ξενοδοχείων κλπ. Στην παρούσα εργασία ακολουθείται το παρακάτω σκεπτικό. Το πρωτόκολλο DES υλοποιείται σε γλώσσα προγραµµατισµού C++, τόσο για την κρυπτογράφηση, όσο και για την αποκρυπτογράφηση. ίνεται η απαραίτητη θεωρητική υποδοµή, η ιστορική αναδροµή και επί πλέον η επέκταση του µαθηµατικού υποβάθρου στις ελλειπτικές καµπύλες που θα αποτελέσουν στο άµεσο µέλλον τον πυρήνα των κρυπτογραφικών κωδίκων. Στο σηµείο αυτό θα ήθελα να ευχαριστήσω τον επιβλέποντα της διπλωµατικής εργασίας, τον Επίκουρο Καθηγητή κ. Σταύρο Π. οκουζγιάννη για την εµπιστοσύνη που µου έδειξε, την αµέριστη συµπαράσταση, την συνεχή καθοδήγηση και την µε κάθε τρόπο βοήθεια που µου προσέφερε. ηµόπουλος ηµήτριος Θεσσαλονίκη, Α.Π.Θ. Μάρτιος 2008 iii

4 iv

5 Στους γονείς µου, Γιάννη και Κατερίνα, στην αδελφή µου Σταµατία και στη ήµητρα. v

6 vi

7 Περιεχόµενα Πρόλογος...iii Περιεχόµενα...vii Κεφάλαιο 1 Εισαγωγή 1.1 Ορισµοί Τυπικό σύστηµα κρυπτογράφησης Κρυπτογράφηση Αποκρυπτογράφηση Ιδιοτητες κλειδιών Ανάλυση ανθεκτικότητας Χρήσεις/χρήστες της κρυπτογραφίας και των κρυπτογραφικών συστηµάτων Τρόποι υλοποίησης κρυπτογραφικού συστήµατος...5 Κεφάλαιο 2 Αλγόριθµοι 2.1 Κρυπτογραφικοί αλγόριθµοι Κατηγορίες αλγορίθµων ιάκριση µε βάση τα κλειδιά ιάκριση µε βάση τον τρόπο κρυπτογράφησης των µηνυµάτων Αλγόριθµοι αντικατάστασης Αλγόριθµοι µετατόπισης...13 vii

8 Αλγόριθµοι δέσµης (Block Ciphers) Αλγόριθµοι ροής Προστασία Βασικά θέµατα προστασίας Κρυπτογραφία µυστικού κλειδιού Αλγόριθµος DES Αλγόριθµος Triple DES Αλγόριθµος IDEA Αλγόριθµοι RC2 και RC Αλγόριθµος AES Κρυπτογραφία δηµοσίου κλειδιού Κρυπτογραφικό σύστηµα RSA Εφαρµογές της κρυπτογραφίας δηµοσίου κλειδιού Σύγκριση συµµετρικής και ασύµµετρης κρυπτογραφίας...29 Κεφάλαιο 3 - Κρυπτογραφικό πρωτόκολλο DES 3.1 Γενικές πληροφορίες πάνω στον DES Προκαταρκτικά παραδείγµατα του DES Η ακριβής λειτουργία του DES ηµιουργία 16 υποκλειδιών Κρυπτογράφηση των δεσµών µήκους 64 bits Αποκρυπτογράφηση του DES Τρόποι λειτουργίας του DES Τα αδύναµα κλειδιά του DES...48 viii

9 Κεφάλαιο 4 - Μαθηµατική υποδοµή για τους κρυπτογραφικούς αλγόριθµους 4.1 Βασικοί Ορισµοί Πρώτοι Αριθµοί Οµάδες, ακτύλιοι και Σώµατα Πολυώνυµα Ισοδυναµίες και Ισοτιµίες Τετραγωνικά Υπόλοιπα Τετραγωνικές Μορφές Σώµατα Επέκτασης Βασικές Έννοιες Το Σώµα Fpm (σώµα Galois) Η Οµάδα Galois Αλγεβρικά Σώµατα Αριθµών Βασικοί Ορισµοί Τετραγωνικά Σώµατα ικτυώµατα Σώµα Κλάσεως Hilbert...67 Kεφάλαιο 5 - Ελλειπτικοί Αλγόριθµοι 5.1 Βασικοί Ορισµοί Ο Προσθετικός Νόµος στις Ελλειπτικές Καµπύλες Ελλειπτικές Καµπύλες στο Πρώτο, Πεπερασµένο Σώµα Fp Η Έννοια του Μιγαδικού Πολλαπλασιασµού Ορισµοί Ελλειπτικές Καµπύλες πάνω στους Μιγαδικούς Τα Κύρια Θεωρήµατα του Μιγαδικού Πολλαπλασιασµού...81 ix

10 5.5 Οι Ελλειπτικές Καµπύλες στην Κρυπτογραφία Κρυπτογραφία ηµόσιου Κλειδιού Βασικές Επιθέσεις σε Συστήµατα Ελλειπτικών Καµπυλών...86 Βιβλιογραφία Παράρτηµα Α : Ο DES ως standard του NBS...93 Παράρτηµα B : Ο κώδικας της υλοποίησης του DES στην C DES.cpp DES.h Main.cpp Παράρτηµα Γ : Αναφορές στον τρόπο λειτουργίας των µηχανών Lorentz & Enigma Παράρτηµα : Σχηµατική παρουσίαση του τρόπου λειτουργίας του DES x

11 Κεφάλαιο 1 Εισαγωγή 1.1 Ορισµοί Ο όρος κρυπτογραφια (cryptology) προέρχεται από τις λέξεις κρυπτός και γράφος. Κυριολεκτικά σηµαίνει τη µελέτη της µυστικογραφίας. Γενικότερα αφορά τον επιστηµονικό κλάδο που ασχολείται µε τη µελέτη, χρήση και αναπτυξη τεχνικών κρυπτογράφησης και αποκτυπτογράφησης για την απόκρυψη των περιεχοµένων των µηνυµάτων (ή των αποθηκευµένων δεδοµένων) και τη διευκόλυνση της ανίχνευσης κακόβουλων µετατροπών στα µηνύµατα. Κρυπτογράφηση (encryption / encipherment) είναι η διεργασία µετασχηµατισµού ενός µηνύµατος σε µια ακατανόητη µορφή µε τη χρήση ενός κρυπτογραφικού αλγόριθµου, έτσι ώστε αυτο να µην είναι αναγνώσιµο από τρίτα µέρη (εκός του νόµιµου παραλήπτη). Αποκρυπτογράφηση (decryption / decipherment) είναι η διεργασία ανάκτησης του αρχικού µηνύµατος (αναγνώσιµη µορφή) από µια ακατανόητη έκδοσή του που είχε παραχθεί µέσω µιας διεργασίας κρυπτογράφησης. Η αποκρυπτογράφηση εκτελείται από κάποιο εξουσιοδοτηµένο µέρος, σε αντίθεση µε την κρυπτανάλυση, που ορίζεται παρακάτω. Αρχικό κείµενο (plaintext) είναι το µήνυµα το οποίο αποτελεί είσοδο σε µια διαδικασί κρυπτογράφησης, δηλαδή κρυπτογραφείται. Κρυπτογραφηµένο κείµενο (cipher text) είναι το αποτέλεσµα της εφαρµογής ενός κρυπτογραφικού αλγορίθµου πάνω στο αρχικό κείµενο. Το κρυπτογραφηµένο κειµενο κρυπτογραφείται για να ανακτηθεί το αρχικό κείµενο. Η κρυπτογράφηση και αποκρυπτογράφηση ενός µηνύµατος γίνεται µε βάση τη βοήθεια ενός αλγορίθµου κρυπτογράφησης και ενός κλειδιού κρυπτογράφησης. Κρυπτογραφικός αλγόριθµος (cipher) είναι η µέθοδος (συνήθως µια µαθηµατική συνάρτηση) µετασχηµατισµού δεδοµένων σε µια µορή που να µην επιτρέπει σε µη εξουσιοδοτηµένα µέρη την αποκάλυψη του περιεχοµένου τους. Η δυνατότητα, όµως, της διατήρησης της µυστικότητας των πληροφοριών βασίζεται περισσότερο σε

12 έναν αριθµό που ονοµάζεται κλειδί (key) και χρησιµοποιείται µαζί µε τον αλγόριθµο κρυπτογράφησης / αποκρυπτογράφησης, παρά στον αλγόριθµο µόνο του. Εποµένως, η ανθεκτικότητα µιας κρυπτογράφησης εξαρτάται περισσότερο από το µέγεθος των κλειδιών που χρησιµοποιούνται παρά από τους αλγορίθµους. Το µέγεθος των κλειδιών σε bits. Οσο µεγαλύτερο έιναι το µήκος ενός κλειδιού τόσο ανθεκτικότερη είναι η κρυπτογράφηση. ιαφορετικοί αλγόριθµοι απαιτούν διαφορετικά µήκη κλειδιών για να πετύχουν το ίδιο επίπεδο ανθεκτικότητας κρυπτογράφησης. Για παράδειγµα, ένας αλγόριθµος συµµετρικής κρυπτογράφησης µε κλειδί µήκους 128 bits παρέχει ανθεκικότερη κρυπτογράφηση από τον αλγόριθµο κρυπτογράφησης δηµοσίου κλειδιού RSA µε το ίδιο µέγεθος κλειδιου. Γι αυτό πρέπει να χρησιµοποιέιται κλειδί µε µήκος τουλάχιστον 512 bits προκειµένου η κρυπτογράφηση RSA να θεωρείται ανθεκτική. Πρέπει να σηµειώσουµε ότι οι συµµετρικοί αλγοριθµοι επιτυγχάνουν το ίδιο επίπεδο ανθεκτικότητας µε κλειδί µήκους 64 bits. Όµως και αυτά τα επίπεδα ανθεκτικότητας έχουν αποδειχθεί ευπαθή σε επιθέσεις σήµερα. ιάφοροι τρόποι κρυπτογράφησης άρχισαν να αναπτύσσονται από παλιά και συνεχώς εξελίσσονται και αλλάζουν όσο τα υπολογιστικά συσήµατα γίνονται ισχυρότερα και ταχύτερα. Η προσπάθεια να σπάσει µια συγγεκριµένη κρυπτογραφική τεχνική ονοµάζεται κρυπτανάλυση (cryptanalysis). Κρυπτανάλυση είναι η διαδικασία αποκρυπτογράφησης ενός µηνύµατος από ένα µη εξουσιοδοτηµένο µέρος, το οποίο ονοµάζεται κρυπαναλυτής (cryptanalyst). Υποτίθεται ότι όλα τα κρυπτογραφηµένα µηνύµατα µπορούν να σπάσουν αν δοθεί χρόνος σε έναν ηλεκτρονικό υπολογιστή να δοκιµάσει όλα τα πιθανά κλειδιά. Αν όµως ο χρόνος αυτός είναι τόσο µεγάλος τότε το σπάσιµο του κρυπτογραφηµένου µηνύµατος θα έχει πιθανότατα αµελητέα ως και µηδενική σηµασία. Το συµπέρασµα που εξάγεται είναι ότι όσο τα υπολογιστικά συστήµατα γίνονται ταχύτερα και ισχυρότερα τόσο οι κρυπτογραφικοί αλγόριθµοι θα γίνονται πολυπλοκότεροι και τα κλειδιά µεγαλύτερα. Τέλος πρέπει να αναφέρουµε ότι το αντικέιµενο της κρυπτολογίας (cryptology) καλύπτει και την κρυπτογραφία και την κρυπτανάλυση. 1.2 Τυπικό σύστηµα κρυπτογράφησης Η κρυπτογραφία είναι µια διαδικασία που µπορεί να προστατέψει τις συναλλαγές σε ένα ανοικτό δίκτυο όπως είναι το Internet. Σε ένα τυπικό σύστηµα κρυτπογράφησης τα δεδοµένα κρυπτογραφούνται και το παραγόµενο µήνυµα αποστέλλεται στον παραλήπτη και αποκρυπτογραφείται για να παραχθεί το αρχικό κείµενο. Αυτοί οι µετασχηµατισµοί αναπαρίστανται ως εξής : 2

13 1.2.1 Κρυπτογράφηση Κρυπτογράφηση Κρυπτογράφηση Αρχικό Κείµενο Κλειδί Κρυπτογραφηµένο Κείµενο Αποκρυπτογράφηση Αποκρυπτογράφηση Αποκρυπτογράφηση Κρυπτογραφηµένο Κείµενο Κλειδί Αρχικό Κείµενο Το κρυπτογραφηµένο κείµενο αποτελεί το σηµείο επέµβασης των πιθανών εισβολέων του συστήµατος µε σκοπό την αποκάλυψη κάποιου από τα συστατικά του συστήµατος κρυπτογράφησης, συνήθως του κλειδιού, µε σκοπό είτε την υποκλοπή του µηνύµατος (αποκάλυψη του αρχικού κειµένου) είτε την αλλοίωσή του (παραγωγή νέου κρυπτογραφηµένου µηνύµατος που κατά την αποκρυπτογράφηση του από τον εξουσιοδοτηµένο παραλήπτη θα προκύψει διαφορετικό µήνυµα από το αρχικό) Ιδιοτητες κλειδιών Για να αποφεύγονται οι αποκαλούµενες επιθέσεις εκτενών αναζητήσεων πρέπει το πλήθος των πιθανών διαφορετικών συνδυασµών κλειδιών για έναν κρυπτογραφικό αλγόριθµο να είναι µεγάλο, καθώς σε περίπτωση που ο κρυπταναλυτής αποκτήσει ένα αντίστοιχο ζεύγος αρχικού και κρυπτογραφηµένου κειµένου µπορεί προσπαθώντας µε όλα τα πιθανά κλειδία να δει ποιό ταιριάζει και να το χρησιµοποιήσει κατόπιν για να αποκρυπτογραφεί κι άλλα κρυπτογαφηµένα κείµενα που έχουν κρυπτογραφηθεί µε το ίδιο κλειδί. ιαφορετικά, σε περίπτωση που απλά κατάφερε να υποκλέψει ένα κρυπτογραφηµένο κείµενο, µπορεί να το αποκρυπτογραφήσει µε διαφορετικούς συνδυασµούς 3

14 κλειδιών µέρι να βρει ένα αρχικό κείµενο που έχει λογική σηµασία, οπότε τότε αποκτά, ουσιαστικά, και το σωστό κλειδί που στη συνέχεια µπορεί να το χρησιµοποιήσει για την αποκρυπογράφηση και άλλων κρυπτογραφηµένων κειµένων. Τυπικά, τα κλειδιά είναι σειρές από bits και ως εκ τούτου η απαίτηση για µεγάλο πλήθος κλειδιών έχει την έννοια της χρήσης ολοένα και περισσότερων bits. Η χρήση 64 bits αποτελεί ένα τυπικό µήκος κλειδιού το οποίο παρέχει 2 10 διαφορετικά κλειδιά, που σηµαίνει ότι αν είχαµε τη δυνατότητα να δοκιµάζουµε ένα κλειδί ανά nanosecond, δηλαδή κλειδιά ανά δευτερόλεπτο, θα χρειαζόµασταν περίπου 300 χρόνια για να δοκιµάσουµε όλους τους δυνατους συνδυασµούς κλειδιών Ανάλυση ανθεκτικότητας Γενικά, όταν αναλύουµε την ανθεκτικότητα ενός κρυπτογραφικού αλγορίθµου, είναι σηµαντικό να υποθέτουµε ότι ο κρυπταναλυτής έχει αποκτήσει µε διάφορους τρόπους ένα αξιόλογο ποσό πληροφοριών στο οποίο βασίζει την επίθεσή του. Αυτό σηµαίνει ότι όταν αναλύουµε την ασφάλεια ενός συστήµατος είναι βασικό να κάνουµε υποθέσεις για την χειρότερη περίπτωση (worst case). Πιο συγγεκριµένα αποτελεί κοινή πρακτική ότι ο κρυπτααλυτής διαθέτει : Πλήρη γνώση του κρυπτογραφικού αλγορίθµου, Μερικά κρυπτογραφηµένα µηνύµατα που όλα έχουν προκύψει µε τη χρήση του ίδιου µυστικού κλειδιού, Μερικά γνωστά µηνύµατα, π.χ. µέρος ή το σύνολο από αρχικά µηνύµατα που αντιστοιχούν σε γνωστά κρυπτογραφηµένα µηνύµατα. Μια επιπρόσθετη πιθανή υπόθεση είναι ότι κρυπταναλυτής διαθέτει το κρυπτογραφηµένο κείµενο που αντιστοιχεί σε ένα επιλεγµένο από τον ίδιο αρχικό κείµενο. Αυτου του είδους η επίθεση λέγεται επίθεση επιλεγµένου αρχικού κειµένου (chosen plaintext attack). Στην πράξη, αυτό θα απαιτούσε από τον κρυπταναλυτή το να µπορεί να εισάγει στο σύστηµα µηνύµατα της επιλογής του, κάτι που είναι αρκετά δύσκολο να γίνει. Με βάση τις υποθέσεις για την χειρότερη περίπτωση, πρέπει να ακολουθούν δοκιµές µε σκοπό να βρεθούν τρόποι κρυπτανάλυσης του κρυπτογραφικού αλγορίθµου, δηλαδή της εύρεσης του µυστικού κλειδιού. Σε αυτή την περίπτωση, ο σχεδιαστής του κρυπτογραφικού αλγορίθµου ή ο χρήστης που προκειται να χρησιµοποιήσει ένα προιόν κρυτπογράφησης πρέπει να παίξει το ρόλο του κρυπταναλυτή και να δοκιµάσει να σπάσει τον αλγόριθµο. Με αυτόν τον τρόπο µόνο µπορεί κανείς να διαπιστώσει την ανθεκτικότητα εωός κρυπτογραφικού αλγορίθµου. Στις περισσότερες περιπτώσεις οι κρυπτογραφικοί αλγόριθµοι θεωρείται ότι είναι ισχυροί εφόσον οι προσπάθειες των εξειδικευµένων κρυπταναλυτών δεν µπορούν να βρουν τρόπους να τους σπάσουν µε συµβατικά µέσα και σε λογικούς χρόνους. Κατά τ άλλα, δεν υπάρχουν φορµαλιστικές µέθοδοι που να αποδεικνύουν την ασφάλεια που παρέχουν οι περισσότεροι κρυπτογραφικοί αλγόριθµοι που χρησιµοποιούνται στην πράξη. 4

15 Οµως η κρυπτογραφία αποτελεί µια ραγδαία αναπτυσσόµενη περιοχή έρευνας και νέοι κρυπτογραφικοί αλγόριθµοι σχεδιάζονται και σπάνε, αν και µερικοί αντέχουν καλά στις παρατεταµένες προσπάθειες κρυπτανάλυσης που γίνονται Χρήσεις/χρήστες της κρυπτογραφίας και των κρυπτογραφικών συστηµάτων Τα κρυπτογραφικά συστήµατα χρησιµοποιούνται για να παρέχουν : Μυστικότητα (secrecy), Ακεραιότητα δεδοµένων (data integrity), Αυθεντικοποίηση χρηστών (user authentication), Αδυναµία απάρνησης (non repudiation). Στους βασικούς χρήστες της κρυπτογραφίας συµπεριλαµβάνονται κυβερνήσεις, στρατός, οικονοµικοί οργανισµοί, µεγάλες επιχειρήσεις κ.ά. 1.3 Τρόποι υλοποίησης κρυπτογραφικού συστήµατος Η ενσωµάτωση των µεθόδων της κρυπτογραφίας σε hardware επιταχύνει σε µεγάλο βαθµό την διεκπεραίωση της. Επίσης, οι χρήστες δεν γνωρίζουν, ούτε καν αντιλαµβάνονται την παρουσία της και πραγµατοποιούν ανενόχλητοι τις εργασίες τους. Το γεγονός ότι ο χρήστης δεν ανακατεύεται καθόλου στις διαδικασίες της κρυπτογραφίας, αυξάνει την αποτελεσµατικότητα του εργαλείου στην παρεχόµενη ασφάλεια. Παρ' όλα αυτά, δεν έχει καθιερωθεί η κρυπτογραφία σε hardware λόγω του υψηλού κόστους της, που απαγορεύει την αγορά και διατήρηση των ειδικών µηχανηµάτων που χρειάζονται για την εφαρµογή της. Τα ειδικά αυτά µηχανήµατα βρίσκονται τοποθετηµένα σε στρατηγικά σηµεία κάθε δικτύου. 5

16 Παραπάνω παρατέθηκαν δύο φωτογραφίες της µηχανής Copacobana (cost-optimized parallel code breaker), µιας µηχανής που σχεδιάστηκε και κατασκευάστηκε απο τα πανεπιστήµια του Bochum και του Kiel στη Γερµανία το 2006 µε κόστος περίπου $ και µπορεί πλέον να σπάσει ένα κρυπτογραφηµένο µήνυµα σε DES σε περίπου 6.4 ηµέρες. Η Copacobana αποτελείται από 120 FPGA s του τύπου XILINX Spartan τα οποία είναι φορτωµένα ανά εξάδες σε είκοσι modules και δουλεύουν παράλληλα. Η λογισµική κρυπτογραφία είναι φτηνότερη, πράγµα που την κάνει ευρέως αποδεκτή και εύκολα πραγµατοποιήσιµη. Βέβαια, δεν είναι το ίδιο γρήγορη µε την εκτέλεση της σε hardware, αλλά η ολοένα αυξανόµενη ανάγκη για διασφάλιση των επικοινωνιών εδραίωσε την χρήση της. Ο ρόλος της κρυπτογρφίας ήταν σηµαντικότατος και στους σύγχρονους πολέµους. Πιο συγκεκριµένα θα αναφερθούµε σε δύο µηχανές κρυπτογράφησης ως παραδείγµατα hardware υλοποίησης ενός κρυπτογραφικού συστήµατος, που χρησιµοποιήθηκαν από τους Γερµανούς και έπαιξαν ρόλο στην έκβαση του 2 ου παγκοσµίου πολέµου. Η πρώτη και λιγότερο γνωστή, είναι η Lorenz SZ 40 και SZ 42. Η µηχανή αυτή χρησιµοποιούνταν ως προσάρτηµα στους τηλέτυπους που χρησιµοποιούνταν για τις επικοινωνίες των υψηλότερων επιπέδων διοίκησης. Η χρήση της σταµάτησε το 1942 όταν Άγγλοι κρυπταναλυτές, τον Ιανουάριο του 42, έσπασαν τον κώδικά της έπειτα από έναν λανθασµένο χειρισµό κάποιου γερµανού στρατιώτη. Η δεύτερη µηχανή είναι η πασίγνωστη µηχανή Enigma. H Enigma χρησιµοποιούνταν από τις µονάδες του στρατού (σε χαµηλότερα επίπεδα, δηλαδή, σε σχέση µε την Lorenz). Μέχρι να ξεκινήσει ο 2 ος παγκόσµιος πόλεµος η Enigma µετρούσε ήδη περίπου 20 χρόνια ζωής. Η εµπορική της χρήση της πατέντας της είχε ξεκινήσει από το 1920 περίπου και χρησιµοποιήθηκε από πολλά κράτη ανά τον κόσµο. Πιο συγκεκριµένα η πατέντα κατατέθηκε στις 23 6

17 Φεβρουαρίου του 1918 από τον εφευρέτη της, τον γερµανό µηχανικό Arthur Scherbius. Οι γερµανοί έφτιαξαν µια παραλλαγή αυτής, την Wehrmacht Enigma. Η αποκρυπτογράφηση αυτής της µηχανής έγινε το 1932 στην Πολωνία από τους πολωνούς κρυπταναλυτές Marian Rejewski, Jerzy Różycki και Henryk Zygalski. Η τεχνογνωσία της κρυπτανάλυσης της Enigma µεταφέρθηκε το 1939 στη Βρεττανία και τη Γαλλία και έτσι οι συµµαχικές δυνάµεις απέκτησαν ένα σηµαντικό πλεονέκτηµα ως προς τις δυνάµεις του άξονα. Πληροφοριακά, να αναφέρουµε ότι υπολογίζεται ότι ο 2 ος παγκόσµιος πόλεµος τελείωσε τουλάχιστον δυο χρόνια νωρίτερα λόγω του ότι είχαν σπάσει οι κώδικες της Lorenz και της Enigma. Ο τρόπος λειτουργίας των δύο αυτών µηχανών ήταν παρόµοιος. Λειτουργούσαν µε ηλεκτροµηχανικούς ρότορες στους οποίους ο χειριστής έδινε µια αρχική τιµή (κλειδί) διαφορετική για κάθε µήνυµα, οι οποίοι άλλαζαν θέση µετά από την πληκτρολόγηση κάθε χαρακτήρα του προς κρυπτογράφηση κειµένου. Παραάτω φαίνονται φωτογραφίες από µηχανές Lorentz και Enigma που έχουν διασωθεί µέχρι σήµερα. Επίσης υπάρχουν κάποια σχήµατα και διαγράµµατα που επεξηγούν και κάνουν πιο κατανοητή τη λειτουργία αυτών των µηχανών στο τελευταίο παράρτηµα της εργασίας. Μηχανή Lorentz 7

18 Μηχανή Enigma 8

19 Κεφάλαιο 2 Αλγόριθµοι 2.1 Κρυπτογραφικοί αλγόριθµοι Όπως ορίστηκε πραπάνω, οι κρυπτογραφικοί αλγόριθµοι αποτελούν το µέσο για το µετασχηµατισµό µηνυµάτων σε κρυπτογραφηµένα κείµενα. Στην πράξη υπάρχει πάντα ένα τρίτο στοιχείο το οποίο συµµετέχει σε αυτήν την διαδκασία, το οποίο δεν είναι άλλο από το µυστικό κλειδί (secret key). Το µυστικό κλειδί είναι αυτό που επηρρεάζει τον τρόπο λειουργίας των διεργασιών κρυπτογράφησης και αποκρυπτογράφησης. Μια διαδικασία κρυπτογράφησης στο εξής θα συµβολίζεται ως : c = ek (m), όπου m είναι το αρχικό κείµενο, e είναι ο αλγόριθµος κρυπτογράφησης, k είναι το µυστικό κλειδί και c είναι το κρυπτογραφηµένο κείµενο. Αντίστοιχα, η διαδικασία της αποκρυπτογράφησης θα συµβολίζεται ως : m = d (c). k Συνήθως ο κρυπτογραφικός αλγόριθµος e είναι δηµόσια γνωστός και η µυστικότητα του αρχικού κειµένου m εξαρτάται αποκλειστικά από τη µυστικότητα του µυστικού κλειδιού k, αφού το κρυπτογραφηµένο κείµενο θεωρείται ότι είναι γνωστό. 2.2 Κατηγορίες αλγορίθµων Υπάρχουν διάφορες µέθοδοι κρυπτογραφίας. Όµως γενικά ταξινοµούνται σε κατηγορίες ανάλογα µε τα κλειδιά και τον τρόπο κρυπτογράφησης των µηνυµάτων. 9

20 2.2.1 ιάκριση µε βάση τα κλειδιά Μυστικού ή Συµµετρικού Κλειδιού (Symmetric Key), χρησιµοποιούν το ίδιο µυστικό κλειδί για κρυπτογράφηση και αποκρυπτογράφηση. ηµοσίου ή Ασύµµετρου Κλειδιού (Public or Asymmetric Key), χρησιµοποιούν διαφορετικό κλειδί για κρυπτογράφηση (δηµόσιο κλειδί παραλήπτη) και διαφορετικό για αποκρυπτογράφηση (προσωπικό κλειδί παραλήπτη) ιάκριση µε βάση τον τρόπο κρυπτογράφησης των µηνυµάτων Αλγόριθµοι αντικατάστασης Αλγόριθµος του Καίσαρα Ο αλγόριθµος του Καίσαρα αποτελεί µια ειδική κατηγορία ων κρυπτογραφικών αλγορίθµων απλής αντκατάστασης (simple substitution ciphers). Σε αυτόν τον κρυπτογραφικό αλγόριθµο, το κλειδί αποτελεί µια µετάθεση των γραµµάτων της αλφαβήτου. Η κρυπτογραφηση περιλαµβάνει αντικατάσταση κάθε γράµµατος µε το αντίστοιχο γράµµα που προκύπτει από τη µετάθεση. Αντίστοιχα, η αποκρυπτογράφηση γίνεται µε χρήση της ανάστροφης µετάθεσης. Στον κρυπτογραφικό αλγόριθµο του Καίσαρα (Caesar cipher) το µήνυµα (αρχικό κείµενο) πρέπει να είναι µια ακολουθία από γράµµατα. Κάθε γράµµα ανιστοιχίζεται µε έναν αριθµό. Το κλειδί k είναι ένας αριθµός από το 1 ως το 25. Κατά την κρυπτογράφηση το κλειδί k προστίθεται στον αριθµό κάθε γράµµατος του µηνύµατος και υπολογίζεται το υπόλοιπο της διαίρεσης του αθροίσµατος µε µε το πλήθος των γραµµάτων της αλφαβήτου (γαι το λατινικό αλφάβητο έχουµε modulo 26 αφού το πλήθος των γραµµάτων είναι 26). Έτσι, για παράδειγµα, εάν το κλειδί k είναι το 3, τότε το µήνυµα SECURE κρυπτογραφείται σε VHFXUH. Πιο συγκεκριµένα για το γράµµα S προκύπτει το V γιατί το S έχει αντίστοιχο αριθµό το 18 και κρυπτογραφείται µε τον υπολογισµό = 21 οπότε 21 mod 26 = 21, που αντιστοιχεί στο γράµµα V. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Πίνακας αντιστοίχησης γραµµάτων και αριθµών. 10

21 Ο κρυπτογραφικός αλγόριθµος του Καίσαρα είναι ουσιαστικά ένας συνηθισµένος τύπος κρυπτογραφικού αλγορίθµου ροής. Η µοναδικήδιαφοροποίηση του έγκειται στο ότι λειτουργει µε υπολογισµό του modulo 26 και όχι του modulo 2. Είναι φανερό οτι είναι πολύ µικρή για να παρέχει ασφάλεια, καθώς αν ξαναδούµε τις απαιτήσεις της γεννήτριας παραγωγής κλειδιών ενός κρυπτογραφικού αλγορίθµου ροής θα δούµε οτι θέτοντας την ακολουθία κλειδοροής ίση µε µια σταθερή τιµή παραβιάζονται όλα τα κριτήρια. Η περίοδος της ακολουθίας κλειδοροής είναι µόνο 1, η ακολουθία δεν είναι σίγουρα ψευδοτυχαία µε οποιονδήποτε τρόπο µέτρησης και η γραµµική ισοδυναµία είναι επίσης 1, καθώς για την ακολουθία κλειδοροής s i ισχύει οτι s i +1 = si. Ο κρυπτογραφικός αλγόριθµος του Καίσαρα είναι πολύ εύκολο να σπάσει (κρυπταναλυθεί). Η µέθοδος ης εκτεταµένης αναζήτησης θα δώσει αποτέλεσµα γιατί υπάρχουν µόνο 25 διαφορετικά κλειδιά, καθλως το σύνολο των κλειδιών είναι ίσο µε το σύνολο των όλων των δυνατών µεταθέσεων των γραµµάτων, ίσο δηλαδή µε το πλήθος των γραµµάτων του λατινικού αλφαβήτου. Γενικότερα, παρά τον µεγάλο αριθµό κλειδιών, πράγµα που αποκλείει µια απλά επίθεση εξαντλητικής αναζήτησης (exhaustive search attack), ένας κρυπτογραφικός αλγόριθµος απλής αντικατάστασης είναι εύκολο να σπάσει. Ένας λόγος είναι ότι σε κάθε φυσική γλώσσα τα γράµµατα της αλφαβήτου παρουσιάζουν πολύ διαφορετικές συχνότητες εµφάνισης στις διάφορες προτάσεις π.χ. στα Ελληνικά το γράµµα Α είναι πολύ πιο συχνά επαναλαµβανόµενο σε σχέση µε γράµµατα όπως Ζ και το Ψ. Αυτή η πληροφορία συνδυαζόµενη µε συχνότητες εµφάνισης συνδυασµών δύο ή τριών γραµµάτων µπορεί να χρησιµοποιηθεί για να εξαχθούν αντιστοιχίες µεταξύ του αρχικού και του κρυπτγραφηµένου κειµένου, από τις οποίες είναι δυνατόν στη συνέχεια να προκύψει η τιµή του κλειδιού. Παραθέτουµε τον πίνακα µε τη συχνότηα εµφάνισης κάθε γράµµατος του λατινικού αλφαβήτου. A B C D E F G H I J K L M 8% 1.5% 3% 4% 13% 2% 1.5% 6% 6.5% 0.5% 0.5% 3.5% 3% N O P Q R S T U V W X Y Z 7% 8% 2% 0.2% 6.5% 6% 9% 3% 1% 1.5% 0.5% 2% 0.2% 11

22 Αλγόριθµος Vigenere Ένας άλλος παρόµοιος κρυπτογραφικός αλγόριθµος είναι ο αλγόριθµος Vigenere. Σε αυτόν τα γράµµατα αντιστοιχίζονται πάλι µε τους αριθµούς αποό το 0 ως το 25, όπως ακριβώς και µε τον κρυπτογραφικό αλγόριθµο του Καίσαρα. Όµως το µυστικό κλειδί, τώρα, δεν είναι ένας αριθµός αλά µια µικρή ακολουθία γραµµάτων, όπως γα παράδειγµα µια λέξη. Κατά την κρυπτογράφηση προστίθεται το αριθµητικό ισοδύναµο κάθε γράµµατος του αρχικού κειµένου µε το αριθµητικό ισοδύναµο ενός γράµµατοςς του κλειδιού. Επειδή συνήθως το µληκος του αρχικού κειµένου είναι µεγαλύτερο από το µήκος του κλειδιού, τα γράµµατα του κλειδιού ανακυκλώνονται και επαναλαµβάνεται η χρήση τους όσο χρειάζεται. Αξίζει να σηµειώσουµε οτι ο κρυπτογραφικός αλγόριθµος του Καίσαρα είναι µια ειδική περίπτωση του κρυπτογραφικού αλγορίθµου Vigenere για την περίπτωση που το µήκος της λέξης του κλειδιού είνει ίσο µε 1. Έτσι για παράδειγµα, αν το κλειδί είναι η λέξη SOS, η κρυπτογράφηση λειτουργεί ως εξής : Αρχικό κείµενο P L A I N T E X T Κλειδοροή S O S S O S S O S Κρυπτογραφηµένο H Z S A B L W L L κείµενο Όπως είναι φανερό, χρησιµοποιείται η ίδια αντιστοίχηση γραµµάτων αριθµών µε τον κρυπτογραφικό αλγόριθµο του Καίσαρα. Αυτός ο αλγόριθµο ανήκει στην κατηγορία των αποκαλούµενων Κρυπτογραφικών Αλγορίθµων Πολυαλφαβητκής Αντικατάστασης (polyalphabetic substitution ciphers). Ο κρυπτογραφικός αλγόριθµος Vigenere είναι και αυτός µια ειδική µορφή κρυπτογραφικού αλγορίθµου ροής. Ακριβώς όπως µε ον κρυπτογραφικό αλγόριθµο του Καίσαρα, χρησιµοποιεί πρόσθεση µε υπολογισµό του modulo 26 αντί για πρόσθεση µε υπολογισµό του modulo 2 για α συνδυάσει το αρχικό κείµενο µε την κλειδοροή. Η κλειδοροή είναι απλά η λέξη-κλειδί, η οποία επαναλαµβάνεται όσο χρειάζεται. Όµως πάλι παραβαίνει τους κανόνες των γεννητριών κλειδοροής. Η περίοδος της ακολουθίας κλειδοροής είναι φτωχές. Έτσι προκύπτει ότι φυσιολογικά ο κρυπτογραφικός αλγόριθµος Vigenere σπάζει εύκολα. 12

23 Αλγόριθµος σηµειωµαταρίου µιας χρήσης Ο κρυπτογραφικός αλγόριθµος του σηµειωµαταρίου µιας χρήσης (The one-time pad cipher) ή αλγόριθµος του Vernam είναι µια είδική παραλλαγή κρυπτογραφικού αλγορίθµου ροής. Η ψευδοτυχαία κλειδοροή αντικαθίσταται από µια τυχαία (µη επαναλαµβανόµενη) ακολουθία δυαδικών ψηφίων (bits) η οποία χρησιµοποιείται µόνο µια φορά (από αυτό προκύπτει και ο χαρακτηρισµός «µιας χρήσης»). Αν χρησιµοποιηθεί σωστά, ο αλγόριθµος αυτός αποδεδειγµένα δεν είναι δυνατόν να σπάσει (unbreakable). Το µοναδικό πρόβληµα αφόρα τη διαχείρηση των κλειδιών. Πριν να καταστεί δυνατή η κρυπτογραφηµένη επικοινωνία, τα δυο µέρη (αποστολέας και παραλήπτης) πρέπει να συµφωνήσουν σε τόσο υλικό τυχαίων κλειδιών όσα και τα δεδοµένα που θα µεταδοθούν. Αλγόριθµος ROT13 Ο κρυπτογραφικός αγόριθµος ROT 13 περιλαµβάνεται σε συστήµατα UNIX. Κατά την κρυπτογράφηση αντικαθίσταται κάθε γράµµα µε την µετάθεσή του 13 θέσεις δεξιά στο αλφάβητο, ενώ κατά την αποκρυπτογράφηση γίνεται η αντίθετη ή η ίδια µετάθεση Αλγόριθµοι µετατόπισης Μέθοδος της σκυτάλης Είναι µια µέθοδος κρυπτογραφίας που χρησιµοποιούνταν από τους αρχαίους Έλληνες. Η µέθοδος κρυπτογραφίας αυτή αποτελείται από µια σκυτάλη η οποία έχει τυλιγµένη γύρω της µια λωρίδα δέρµατος. Το κλειδί στην µυστικότητα του µηνύµατος είναι η διάµετρος του κυλίνδρου (σκυτάλης). Παράδειγµα: Έστω ότι θέλουµε να κρυπτογραφήσουµε το µήνυµα: Help me I am under attack. Αφου τυλίξουµε µια λωρίδα δέρµατος γύρω από τη σκυτάλη, γράφουµε το µήνυµά µας. H E L P M E I A M U N D E R A T T A C K Ξετυλίγοντας το δέρµα, θα πάρουµε το εξής κρυπτογραφηµένο µήνυµα: "HENTEIDTLAEAPMRCMUAK". 13

24 Η αποκρυπτογράφηση γίνεται µε τον ίδιο τρόπο. Ο παραλήπτης του µηνύµατος αφού τυλίξει τη λωρίδα δέρµατος γύρω από µια σκυτάλη ιδίας διαµέτρου µε αυτή του αποστολέα θα µπορέσει να διαβάσει το αρχικό κείµενο: Help me I am under attack Αλγόριθµοι δέσµης (Block Ciphers) Οι κρυπτογραφικοί αλγόριθµοι δέσµης (Block ciphers) λειτουργούν ως εξής : Τα δεδοµένα που πρόκειται να κρυπτογραφηθούν πρέπει να έχουν τη µορφή µιας σειράς απο m δέσµες δυαδικών ψηφίων (bits). Το µήκος µιας δέσµης συνήθως συµβολίζεται µε n. Τυπικές τιµές για το n είναι 64 ή 128 bits. Το αρχικό κείµενο κατόπιν κρυπτογραφείται µε εφαρµογή της κρυπτογραφικής συνάρτησης e και του µυστικού κλειδιού k. Το αποτέλεσµα είναι µια δέσµη κρυπτογραφηµένου κειµένου c, που συνήθως έχει το ίδιο µήκος µε την αντίστοιχη δέσµη του αρχικού κειµένου. Σε έναν κρυπτογραφιό αλγόριθµο δέσµης µπορούµε να αναπαραστήσουµε τη λειτουργία κρυπτογράφησης µε τη σχέση : c = e (m), k 14

25 όπου m είναι η δέσµη αρχικού κειµένου, k είναι το µυστικό κλειδί και c είναι η δέσµη κρυτπογραφηµένου κειµένου. Επιπρόσθετα, µπορούµε να αναπαραστήσουµε τη λειτουργία της αποκρυπτογράφησης d µε τη σχέση : m = d (c). k Το µέγεθος δέσµης n πρέπει να είναι αρκέτα µεγάλο, για παράδειγµα n 64 για να προλαµβάνονται επιθέσεις λεξικού (dictionary attacks). ιαφορετικά, εάν το µέγεθος n είναι µικρό, ένας κρυπαναλυτής εφοδιασµένος µε ένα ζευγάρι αρχικού και κρυπτογραφηµένου κειµένου µπορεί να κατασκευάσει ένα λεξικό στο οποίο να αντιστοιχίζονται δέσµες αρχικού και κρυπτογραφηµένου κειµένου για ένα συγκεκριµένο κλειδί, οπότε κάθε κρυπτογραφηµένο κείµενο που παράγεται στη συνέχεια µε το ίδιο κλειδί µπορεί να αποκρυπτογραφηθεί αναζητώντας την αντίστοιχη δέσµη αρχικού κειµένου στο λεξικό. Μοντέρνοι κρυπτογραφικοί αλγόριθµοι δέσµης Σήµερα χρησιµοποιουνται διάφοροι κρυπτογραφικοί αλγόριθµοι δέσµης, από τους οποίους σίγουρα περισσότερο γνωστός είναι ο DES (Data Encryption Standard). Η κυβέρνηση των ΗΠΑ αποδέχτηκε ένα κρυπτογράφηµα γινοµένου που αναπτύχθηκε απο την IBM ως το επίσηµο πρότυπο της για τις αδιαβάθµητες πληροφορίες και τον επέλεξε σαν οµοσπονδιακό πρότυπο επεξεργασίας πληροφοριών (Federal Information Processing Standard - FIPS). Αυτή η αποδοχή, µε τη σειρά της, παρακίνησε ένα αριθµό κατασκευαστών να υλοποιήσουν τον αλγόριθµο κρυπτογράφησης, γνωστό ως Πρότυπο Κρυπτογράφησης εδοµένων (DES = Data Encryption Standard) (Εθνική υπηρεσία προτύπων 1977), στο υλικό, κάνοντας τον γρήγορο. Η διάθεση γρήγορου και φτηνού υλικού παρακίνησε πολλούς άλλους χρήστες να αποδεχτούν το DES. Πολλοί επιστήµονες όµως το αµφισβήτησαν απο τον καιρό της επινόησης του. Ο κρυτπογραφικός αλγόριθµος δέσµης DES αποτελεί σήµερα ένα de facto διεθνές πρότυπο για την ασφάλεια των ηλεκτρονικών συναλλαγών. Ο αλγόριθµος DES και αρκετοί άλλοι κρυπτογραφικοί αλγόριθµοι δέσµης είναι παραλλαγές των αλγορίθµων Feistel, που αποτελούν µια ειδική κατηγορία των Επαναληπτικών (Iterated) αλγορίθµων δέσµης. Επαναληπτικοί κρυπτογραφικοί αλγόριθµοι δέσµης Οι Επαναληπτικοί κρυπτογραφικοί αλγόριθµοι δέσµης (Iterated block ciphers) εφαρµόζουν επαναληπτικά µια κυκλική λειτουργία (round function), η οποία αντιστοιχίζει µια δέσµη µήκους n bit σε µια άλλη δέσµη µήκους πάλι n bit. Κάθε εφαρµογή της της κυκλικής λειτουργίας ονοµάζεται ανακύκλωση (round) και ο αριθµός των ανακυκλώσεων συµβολίζεται µε r. Σε κάθε εφαρµογή της κυκλικής λειτουργίας χρησµοποιείται ένα µέρος κλειδιού (sub key) k i ( 1 i r), το οποίο εξάγεται από το κλειδί k. Γι αυτό το λόγο πρέπει να υπάρχει µια προκαθορισµένη µέθοδος που να υπολογίζει ένα σύνολο από µέρη ενός κλειδιού. 15

26 Για να γίνει δυνατή η αποκρυπτογράφηση, για κάθε µέρος κλειδιού η κυκλική συνάρτηση πρέπει να είναι αντιστρέψιµη (invertible), δηλαδή να παρέχει µια αντίστροφη λειτουργία. Οπότε, κατά την αποκρυπτογράφηση εφαρµόζονται οι κυκλικές λειουργίες µε ανάστροφη σειρά. Κρυπτοραφικός αλγόριθµος Feistel O κρυπτογραφικός αλγόριθµος Feistel αποτελεί έναν ειδικό τύπο επαναλητπικού κρυπτογραφικού αλγορίθµου δέσµης. Η δέσµη m του αρχικού κειµένου που πρόκειται να κρυπτογραφηθεί διαιρείται αρχικά σε δυο υποδέσµες L 0 και R 0 του ιδίου µήκους (για παράδειγµα αν το µήκος της δέσµης είναι n, τότε οι υποδέσµες L 0 και R 0 θα έχουν η κάθε µια µήκος n/2). Το κλειδί k πρέπει να χρησµοποιείται για τον υπολογισµό ενός συνόλου από r µέρη κλειδιού k 1, k 2,..., k r (ένα για κάθε ανακύκλωση). Η κυκλική λειτουργία κατόπιν γίνεται ως εξής : L, i = R i 1 R L f ( R 1), i = i 1 ki i όπου f είναι η κυκλική συνάρτηση. Μια σηµαντική ιδιότητα του κρυπτογραφικού αλγορίθµου Feistel είναι οτι η κυκλική συνάρτηση είναι πάντοτε αντιστρέψιµη ανεξαρτήτως της επιλογής της συνάρτησης f. Αυτό συµβαίνει γιατί L i = R i 1 και R i = Li f ki ( Ri 1), οπότε έχουµε R i 1 = Li και Li 1 = Ri f ki ( Li ) 1. 16

27 έσµη αρχικού µηνύµατος L 0 R 0 Επανάληψη r φορές L i 1 R i 1 f Μυστικό κλειδί k i L i R i L r R r Αλγόριθµοι ροής Ένας κρυπτογραφικός αλγόριθµος ροής λειτουργει ως εξής : Τα δεδοµένα που πρόκειται να κρυπτογραφηθούν παριστάνονται ως µια ακολουθία αποό δυαδικά ψηφία (bits). Κατόπιν, ελέγχεται µια γεννήτρια κλειδοροής (key stream generator) που 17

28 δέχεται ως είσοδο ένα µυστικό κλειδί k και παράγει στην έξοδο µια ψευδοτυχαία ακολουθία από bits που ονοµάζεται κλειδοροή (key stream). Η γενήτρια κλειδοροής είναι ένας ειδικός τύπος γεννήτριας ψευδοτυχαίων αριθµών. Στη συνέχεια, το αρχικό κείµενο κρυπτογραφείται µε modulo 2 (XOR), δηλαδή προσθέτοντας ην κλειδοροή στο αρχικό κείµενο. Η ακολουθία από bits που παράγεται µε αυτόν τον τρόπο αποτελεί το κρυπτογραφηµένο κείµενο (cipher text). Εποµένως ένας συµβολισµός του κρυπτογραφικού αλγόριθµου ροής θα µπορούσε να είναι : c i = m s, για i 0, i i Όπου m 0, m 1,... είναι τα bits του αρχικού κειµένου, s 0, s 1,... είναι τα bits της κλειδοροής και c 0, c 1,..είναι τα bits του κρυπτογραφηµένου κειµένου. Το σύµβολο συµβολίζει την πράξη της αποκλειστικής διάζευξης (exclusive or) µεταξύ των bits. Αντίστοιχα για την αποκρυπτογράφηση ισχύει : m i = c s, για i 0. i i ηλαδή, η αποκρυπτογράφηση γίνεται µε τον ίδιο τρόπο που γίνεται και η κρυπτογράφηση ροής. Αρχικό κείµενο Κρυπτογραφηµένο κείµενο Γεννήτρια κλειδοροής Κλειδοροή XOR Μυστικό κλειδί, k Οι κρυπτογραφικοί αλγόριθµοι ροής θερούνται σχετικά απλοί και εύκολα υλοποιήσιµοι. 18

29 Ιδιότητες της κλειδορροής Για να είναι ασφαλής ένας κρυπτογραφικός αλγόριθµος ροής πρέπει η γεννήτρια κλειδοροής να διαθέτει τις παρακάτω ιδιότητες : Η ακολουθία πρέπει να έχει µεγάλη περίοδο επανάληψης. Πράγµατι η ακολουθία είναι αναγκαστικά περιοδική, δηλαδή µετά από κάποιοναριθµό bits χρειάζεται να επαναλαµβάνεται ξεκινώντας από την αρχή, αφού παράγεται από κάποια συνάρτηση µε βάση ένα κλειδί. Αν η περίοδος επανάληψης είναι πολύ µικρή τότε είναι δύσκολο να υπολογιστεί το ακριβές µέγεθος της περιόδου επιτρέποντας κατόπιν την αποκρυπτογράφηση του κρυπτογραφηµένου κειµένου. Η ακολουθία πρέπει να είναι ψευδοτυχαία, δηλαδή να µοιάζει µε µια πραγµατικά τυχαία ακολουθία. Αυτό συνήθως επαληθεύεται µε εφαρµογή ελέγχων τυχαιότητας (random tests), οι οποίοι ελέγχουν κατά πόσο είναι περίπου ίδιο το πλήθος των ψηφίων µηδέν (0) και των ψηφίων (1), ή οτι κάθε µηδενικό ψηφίο (0) ακολουθείται από ψηφίο ένα (1) τόσο συχνά όσο και το αντίστροφο. Η ακολουθία πρέπει να έχει µεγάλη γραµµική ισοδυναµία (linear equivalence). Οποιαδήποτε περιοδική ακλουθία δυαδικών ψηφίων (όπως µια ακολουθία κλειδοροής) µπορεί να παραχθεί µε τη χρήση γραµµικών (linear) µεθόδων, για παράδειγµα µε υπολογισµό κάθε στοιχείου της ακολουθίας ως γραµµικό συνδυασµό των στοιχείων της ακολουθίας που προηγήθηκαν. Αν η ακολουθία µπορεί να παραχθεί από µια γραµµική ανακύκλωση (recurrence) χρησιµοποιώντας µόνο έναν µικρό αριθµό όρων, τότε λέµε ότι έχει µικρή γραµµική ισοδυναµία. Μια τέτοια ακολουθία έχει ως αποτέλεσµα έναν ανασφαλή κρυπτογραφικό αλγόριθµο. Αυτές οι συνθήκες, όµως, δεν είναι αρκετές για να εγγυηθούν ασφάλεια. Γενικότερα, ένας κρυπτογραφικός αλγόριθµος κλειδοροής µπορεί να προσφέρει ένα καλό επίπεδο ασφαλείας όταν είναι δυνατό να διασφαλιστεί ότι ακόµα κι αν κανείς αποκτήσει οποιαδήποτε πληροφορία για κάποιο κοµµάτι της ακολουθίας κλειδοροής είναι υπολογιστικά αδύνατο να συνάγει άλα κοµµάτια της ακολουθίας. Οι µοντέρνοι κρυπτογραφικοί αλγόριθµοι ροής χρησιµοποιούν γεννήτριες κλειδοροών που παράγουν ψευδοτυχαίες ακολουθίες µε πολύ µεγάλες περιόδους, για παράδειγµα 264 bits ή και περισσότερα. Υπάρχουν ακόµη και συσκευές (hardware) γεννητριών κλειδοροή που κατορθώνουν να τρέχουν σε πολύ µεγάλες ταχύτητες. Σήµερα οι υψηλές ταχύτητες µπορούν να επιτυγχάνονται ακόµη και µε λογισµικό (software) παραγωγής κλειδοροών. Η κρυπτογράφηση µε αλγορ θµους ροής µπορεί να γίνεται πολύ γρήγορα, καθώς από τη µια η λειτουργία της κρυπτογράφησης είναι πολύ απλά και από την άλλη είναι δυνατή η υλοποίηση ασφαλών γεννητριών κλειδοροής που λειτουργούν σε πολύ µεγάλες ταχύτητες. Μια ενδιαφέρουσα ιδιότητα των κρυπτογραφικών αλγορίθµων ροής είναι οτι µε αυτούς δεν πολλαπλασιάζονται τα λάθη µετάδοσης. Αυτό σηµαίνει ότι όταν υπάρχει ένα λάθος bit στο κρυπτογραφηµένο κείµενο, τότε µετά την αποκρυπτογράφηση µόνο ένα bit του αρχικού κειµένου θα είναι λάθος, Πέρα όµως από περιορισµό των λαθών µετάδοσης, οι κρυπτογραφικοί αλγόριθµοι ροής δεν παρέχουν από µόνοι τους κάποιου είδους προστασία ενάντια σε πιθανή µετατροπή του µηνύµατος που µεταδίδεται. Αυτό σηµαίνει οτι ο υποκλοπέας του µηνύµατος µπορεί να αλλάξει ένα bit στο 19

30 κρυπτογραφηµλενο κείµενο όντας σίγουρος ότι µε αυτόν τον τρόπο θα αλλάξει µόνο το αντίστοιχο bit στο κείµενο που θα προκύψει από την αποκρυπτογράφηση του µηνύµατος. Ένα ακόµη µειονέκτηµα είνα ότι αν το κλειδί χρησιµοποιηθεί δύο φορές θα δώσει την ίδια κλειδοροή. Αυτό αποτελεί κίνδυνο για την ασφάλεια και πρέπει να αποφεύγεται όσο γίνεται. Η συνηθισµένη λύση σε αυτό το πρόβληµα παρέχεται όταν αυτός που κάνει την κρυπτογράφηση (encryptor) : Παράγει ένα τυχαίο κλειδί µηνύµατος ή συνόδου πριν αρχίσει την κρυπτογράφηση, Με αυτό το κλειδί µετατρέπει το µυστικό κλειδί που εισάγεται στη γεννήτρια κλειδοροής, Στέλνει το κλειδί µηνύµατος ως πρόθεµα (prefix) του κρυπτογραφηµένου κειµένου. 2.3 Προστασία Η προπτική να χρησιµοποιηθεί το Internet ως µέσο για τις ηλεκτρονικές συναλλαγές και την γενικότερη ανθρώπινη επικοινωνία οδήγησε στην τεράστια ανάπτυξη του διαδικτύου που παρακολουθούµε τα τελευταία χρόνια. Όµως, δεν προβλέθφηκε από τους σχεδιαστές του ο ορισµός µηχανισµών ασφάλειας για την προστασία των πληροφοριών που διακινούνται, αφού το διαδίκτυο σχεδιάστηκε για ενδοπανεπιστηµιακή επικοινωνία και όχι γι αυτό που παρακολουθούµε και χρησιµοποιούµε σε παγκόσµια κλίµακα σήµερα. Για την προστασία των πληροφοριών που µεταδίδονται µέσω δικτύων ψηφιακών επικοινωνιών χρησιµοποιούνται σήµερα ευρέως συστήµατα κρυτπογραφίας δηµοσίου και µυστικού κλειδιού Βασικά θέµατα προστασίας Η διαδεδοµένη χρήση του διαδικτύου σε εφαρµογές που [εριλαµβάνουν επικοινωνίες ευαίσθητων δεδοµένων εισάγει την ανάγκη για λύσεις στα προβλήµατα ασφαλείας που υπάρχουν. Όλες οι επικοινωνίες µέσω Internet χρησιµοποιούν το πρωτόκολλο Transmission Control Protocol / Internet Protocol (TCP/IP). Το TCP/IP επιτρέπει να στέλνονται πληροφορίες από έναν Η/Υ σε έναν άλλο µέσω διαφόρων ενδιαµέσων Η/Υ και δικτύων. Αυτό σηµαίνει οτι τρίτα µέρη µπορούν να παρεµβληθούν στην επικοινωνία µε τους εξής τρόπους : o o o Υποκλέπτωντας (Eavesdropping) Παραποιώντας (Tampering) Παραπλανώντας (Impersonation) Σε επίπεδο προσώπου (Spoofing) Σε επίπεδο οργανισµού (Misrepresentation) Μια καλά σχεδιασµένη λύση σε αυά τα προβλήµατα αποτελεί η εκτεταµένη χρήση της κρυπτογραφίας που επιτρέπει για τις διακιούµενες πληροφορίες : 20

31 o o o o Κρυπτογράφηση (encryption) και αποκρυπτογράφηση (decryption). Ανίχνευση αλλοιώσεων (tamper detection). Αυθεντικοποίηση του αποστολέα (authentication). Αδυναµία απάρνησης του αποστολέα (nonrepudiation). Για την αντιµετώπιση αυτών των προβληµάτων αναπτύχθηκε η τεχνολογία των Υποδοµών ηµοσίου Κλειδιού Υ Κ (Public Key Infrastructure PKI). Μια Υ Κ αποτελεί µια υποδοµή ασφαλείας που ενσωµατώνει τεχνολογίες όπως η κρυπτογράφηση δηµοσίου κλειδιού, ψηφιακά πιστοποιητικά και ψηφιακές υπογραφές, ώστε να διασφαλίζεται η εµπιστευτικότητα και ακεραιότητα των διακινουµένων δεδοµένων, αλλά και η ταυτοποίηση και η ιδιότητα της µη απάρνησης για τα συναλλασσόµενα µέρη. Η ανάπτυξη µιας Υ Κ βασλιζεται κυρίως στην κρυπτογραφία δηµοσίου κλεδιού (Public Key Cryptography PKC) Κρυπτογραφία µυστικού κλειδιού Οι αλγόριθµοι συµµετρικής κρυπτογραφίας βασίζονται στη ύπαρξη ενός µόνο µυστικού κλειδιού που είναι γνωστό µόνο στα συναλλασόµενα µέρη. Αυτό το κλειδί χρησιµοποιείται τόσο για την κρυπτογράφηση όσο και για την αποκρυπτογράφηση του µηνύµατος. Η συµµετρική κρυπτογραφία εγγυάται την εµπιστευτικότητα (confidentiality) των δεδοµένων φού κρυπτογραφεί το µήνυµα µε το µυστικό κλειδί. Το µήνυµα που παράγεται αποκρυπτογραφείται από τον παραλήπτη µε τη βοήθεια του ίδιου κλειδιού, το οποίο πρέπει να µείνει µυστικό µεταξύ των δύο. Παρόλο που η συµµετρική κρυπτογράφηση εγγυάται την εµπιστευτικότητα, δεν µπορεί να εγγυηθεί για το πώς θα γίνει η ανταλλαγή του κλειδιού. Για να είναι ασφαλής η επικοινωνία θα πρέπει µε κάποιο ασφαλή τρόπο να γίνει η ανταλλαγή του µυστικού κλειδιού. Όταν ο αποστολέας και ο παραλήπτης δεν γνωρίζονται, όπως συµβαίνει στις περισσότερες ηλεκτρονικές συναλλαγές, θα πρέπει να υπάρχει ένα ασφαλές κανάλι επικοινωνίας για τη µεταφορά του κλειδιού. Συστήµατα που επιτρέπουν την ασφαλή ανταλλαγή κλειδιών µέσα από δηµόσια δίκτυα έχουν ήδη αναπτυχθεί και χρησιµοποιούνται σήµερα, µε πιο διαδεδοµένο το σύστηµα Kerberos που έχει αναπτυχθεί στο MIT. Ένα ακόµη σηµαντικό πρόβληµα αφορά την ταυτοποίηση µεταξύ του αποστολέα και του απαραλήπτη. Το πρόβληµα της ταυτοποίησης στο ότι πολλοί άνθρωποι µπορεί να έχουν πρόβληµα στο κοινό κλειδί. Όταν κάποιος από αυτούς λάβει ένα κρυπτογραφηµένο µήνυµα, ξέρει ότι ήρθε από κάποιον από αυτούς αλλά δεν µπορέι να αποδείξει ποιός πραγµατικά του έστειλε το µήνυµα. Άρα χρειάζεται ένας τρόπος ώστε να µπορεί µε µοναδικό τρόπο να ταυτοποιήσει τον αποστολέα. Αυτό το πρόβληµα µπορεί να το λύσει η κρυπτογραφία δηµοσίου κλειδιού. Το βασικό πλεονέκτηµα των συµµετρικών αλγορίθµων είναι ότι οι χρήστες δεν καταλαβαίνουν κάποια σηµαντική χρονική καθστέρηση λόγω της διαδικασίας κρυπτογράφησης / αποκρυπτογράφησης. Αρκεί να διατηρείται µυστικό το κλειδί της κρυπτογράφησης. Η ασφάλεια των συµµετρικών συστηµάτων 21

32 κρυπτογράφησης εξαρτάται από την προφύλαξη της µυστικότητας των κλειδιών k (e) και k (d). Εποµένως, υπάρχουν σηµαντικά προβλήµατα διαχείρησης των τκλειδιών και ιδιάτερα σε ότι αφορά την αρχική διανοµή τους. Μια άλλη σηµαντική επίθεση, δεδοµένου οτι ο κρυπτογραφικός αλγόριθµος είναι γνωστός, περιλαµβάνει τη δοκιµή όλων των δυνατών κλειδιών αποκρυπτογράφησης. Για αντιµετωπστούν αυτού του είδους οι επιθέσεις, χρησιµοποιούνται κλειδιά µε όσο το δυνατόν µεγαλύτερο πεδίο ορισµού, µε όσο το δυνατόν µεγαλύτερο µήκος δηλαδή. Οι πιο γνωστοί αλγόριθµοι συµµετρικής κρυπτογράφησης είναι οι : DES, Triple DES, IDEA, RC2, RC4 και AES Αλγόριθµος DES Ο αλγόριθµος DES (Data Encryption Standard) αναπτύχθηκε από την IBM το 1970 και υιοθετήθηκε από την κυβέρνηση των ΗΠΑ το Χρησιµοποιεί το ίδιο κλειδί τόσο για την κρυπτογράφηση όσο και για την αποκρυπτογράφηση. Χρησιµοποιείται κυρίως στις εµπορικές εφαρµογές. Ο κρυπτογραφικός αλγόριθµος DES είναι ένας αλγόριθµος τύπου Feistel µε δεκαέξι ανακυκλώσεις ( r = 16 ). Το µήκος δέσµης αρχικού και κρυπτογραφηµένου κειµένου είναι 64 και το µήκος του κλειδιού είναι 56 bits. Αξίζει να σηµειωθεί οτι συνήθως αναπαρίστανται σε σειρές των 64 bit, όπου 8 από τα bits παράγονται ως ψηφία ισοτιµίας των υπολοίπων 56. Ως αποτέλεσµα, µπορούν να υπαρξουν 56 µόνο 2 διαφορετικά κλειδιά για τον αλγόριθµο DES και γι αυτό πρέπει να θεωρείται οτι το µήκος του κλειδιού του αλγορίθµου DES είναι 56 bits. Για κάθε κελιδί των 56 bit του αλγορίθµου DES, παράγονται 16 µέρη κλειδιού k 1, k 2,..., k 16 που το καθένα έχει µήκος 48 bits. 22

33 Τρόποι λειτουργίας Αµέσως µετά την ανακύρηξη του DES ως Οµοσπονδιακού Προτύπου των ΗΠΑ, δηµιουργήθηκε ένα ακόµη πρότυπο που έδινε τέσσερις ενδεικνυόµενους τρόπους χρήσης της κρυπτογράφησης δεδµένων µε τον αλγόριθµο DES. Αυτοί οι τρόποι λειτουργίας (modes of operation) θιοθετήθηκαν κατόπιν ως διεθνές πρότυπο για την χρήση οποιουδήποτε αλγορίθµου δέσµης. Ένας κρυπτογραφικός αλγόριθµος δέσµης, όπως ο DES, µπορεί να χρησιµοποιηθεί µε τους ακόλουθους τέσσερις τρόπους : 1. Electronic Code Book (ECB) mode, 2. Cipher Block Chaining (CBC) mode, 3. Output Feed Back (OFB) mode, 4. Ciphertext Feed Back (CFB) mode. Κρυπτανάλυση του DES Σήµερα το µήκος κλειδιού των 56 bits θεωρείται ήδη ανεπαρκές για πολλές σύγχρονες εφαρµογές. Αυτό αποδεικνύεται από την ακόλουθη παρατήρηση : αν υποθέσουµε οτι µε δεδοµένο ένα ζευγάρι 9 αρχικού και κρυπτογραφηµένου κειµένου είναι εφικτό να γίνουν δοκιµές µε ρυθµό 10, δηλαδή 30 9 περίπου 2 διαφορετικά κλειδιά ανά δευτερόλεπτο, δηλαδή να εκτελεστούν 10 κρυτπογραφήσεις 5 και συγκρίσεις, τότε καθώς σε µια µέρα έχουµε περίπου 10 δευτερόλεπτα είναι δυνατόν να γίνουν 14 δοκιµές µε ρυθµό 10 διαφορετικά κλειδιά ανά ηµέρα. Αν ληθφεί υπόψη οτι το συνολικό πλήθος των κλειδιών είναι 2, δηλαδή περίπου 7,2 10, θα χρειαστούν περίπου 700 ηµέρες, περίπου δυο χρόνια δηλαδή, για να δοκιµαστούν όα τα δυνατά κλειδιά. Αν τώρα χρησιµοποιηθούν 1000 τέτοιες διατάξεις για δοκιµής κλειδιών που λειτουργούν παράλληλα, ο απαιτούµενος χρόνος για να βρεθεί ένα 6 κλειδί µειώνεται στο µισό µιας µέρας ή και λιγότερο. Για παράδειγµα, για την αναζήτηση µε 10 6 µηχανές δοκιµών, σε ρυθµό 10 δοκιµές ανά δευτερόλεπτο θα χρειαστούν περίπου 20 ώρες για την ολοκλήρωση των δοκιµών. Όµως, στατιστικά, µια επιτυχής δοκιµή αναµένεται µέσα στις 10 πρώτες ώρες. Ακόµη, αναζήτηση κλειδιού µπορεί να γίνει και µε αξιοποίηση του διαδικτύου. Σε µια τέτοια προσπάθεια χρησιµοποιήθηκαν συνδυασµένοι υπολογιστικοί πόροι υπολογιστών διασυνδεδεµένων µεταξύ τους µέσω του διαδικτύου και βρέθηκε το κλειδί του DES σε 140 µέρες µε 9 όριο δοκιµών 7 10 δοκιµές ανά δευτερόλεπτο. Τέλος, έχει κατασκευαστεί µηχανή κρυπτανάλυσης, που καταφέρνει να βρίσκει ένα κλειδί µέσα σε λίγες ώρες. Η µηχανή σπασίµατος του DES από τον οργανισµό EFF (Electronic Frontier Foundation) έχει την ονοµασία DES Breaker. Η σχεδίασή της κόστισε $80.000, ενώ η ανάπυξή της κόστισε άλλα $ Ένα δοκιµαστικό κλειδί βρέθηκε µέσα σε 56 ώρες, ενώ για την ολοκλήρωση του συνόλου 23

34 των αναζητήσεων χρειάστηκαν 20 ώρες µε ρυθµό δοκιµών 90 δισεκατοµµύρια κλειδιά ανά δευτερόλεπτο Αλγόριθµος Triple DES Ο κρυπτογραφικός αλγόριθµος Triple DES φτιάχτηκε για ανα δοθεί µια λύση στο πρόβληµα του σχετικά µικρού αριθµού κλειδιών του DES. Στον αλγόριθµο αυτό χρησιµοποιούνται ζεύγη κλειδιών DES ( k 1, k2). Η κρυπτογράφηση µιας δέσµης αρχικού κειµένου λειτουργεί ως εξής ( όπου µε e / d δηλώνεται η κρυτπογράφηση αποκρυπτογράφηση DES αντίστοιχα) : c = e d ( e ( ))), k1( k 2 k1 m δηλαδή, µι δέσµη m κρυπτογραφείται µε το πρώτο κλειδί, αποκρυπτογραφείται µε το δεύτερο κλειδί και επανακρυπτογραφείται µε το πρώτο κλεδί. Είναι προφανές οτι στην περίπτωση που όπου k 1 = k2, το ζεύγος, δηλαδή, των δύο κλειδιών DES είναι ταυτόσηµο, το αποτέλεσµα είναι το ίδιο µε µια απλή κρυπτογράφηση DES Αλγόριθµος IDEA Ο αλγόριθµος IDEA (International Data Encryption Algorithm) αναπτύχθηκα από το Swiss Federal Institute of Technology το Χρησιµοποιεί κλειδιά των 128 bit και άρα παρέχει ανθεκτικότερη κρυπτογράφηση από τον κρυπτογραφικό αλγόριθµο DES Αλγόριθµοι RC2 και RC4 Οι κρυπτογραφικοί αλγόριθµοι RC2 και RC4 αναπτύχθηκαν από τον Ron Rivest της εταιρίας RSA Security. Βασικό χαρακτηριστικό τους είναι οτι υποστηρίζουν κλειδιά µεταβλητού µεγέθους. Αν το µέγεθος του κλειδιού είναι µεγαλύτερο απο 56 bit είναι ανεκτικότεροι από τον κρυπτογραφικό αλγόριθµο DES Αλγόριθµος AES Ο κρυπτογραφικός αλγόριθµος AES (Advanced Encryption Standard), που έχει µήκος δέσµης και κλειδιού 128 bit, αναπτύχθηκε µε πρωτοβουλία των ΗΠΑ (από το NIST, National Institute of Standards and Technology ), µε σκοπό την αντικατάσταση του DES και αναµένεται να αποτελέσει το νέο πρότυπο κρυπτογραφικού αλγορίθµου δέσµης. 24

35 2.3.3 Κρυπτογραφία δηµοσίου κλειδιού Μέχρι τώρα, όλες οι κρυπτογραφήσεις αφορορούσαν τη χρήση διαµοιρασµένων (shared) µυστικών κλειδιών. ηλαδή, ο αποστολέας και ο παραλήπτης ενός µνύµατος διαµοιράζονται (χρησµοποιούν από κοινού) ένα µυστικό κλειδί που δεν το γνωρίζουν άλλοι. Στο τέλος της δεκετίας του 1970, οι Diffie και Hellman εφηύραν την Κρυπτογραφία ηµοσίου Κλειδιού (Public Key Cryptography), η οποία παρέχει ένα ελείως διαφορετικό µοντέλο διαχείρησης των κρυπτογραφικών κλειδιών. Η βασική ιδέα είναι οτι ο αποστολέας και ο παραλήπτης δεν διαµοιράζονται ένα µυστκό κλειδί αλλά αντιθέτως έχουν διαφορετικά κλειδιά για διαφορετικές λειτουργίες. Όπως αναφέρθηκε προηγουµένως, ενώ η συµµετρική κρυπτογραφία µπορεί να εξασφαλίσει την εµπιστευτικότητα των δεδοµένων, δε µπορεί να εγγυηθεί για την ταυτότητα του αποστολέα. Επιπλέον, παρόλο που τα δεδοµένα µπορούν να µεταδοθούν µε ασφάλεια µετά την κρυπτογράφηση, είναι δύσκολη η διανοµή του µυστικού κλειδιού µε ασφάλεια. Η ασσύµετρη κρυπτογραφία (ή δηµοσίου κλειδιού) αναλαµβάνει να λύσει πολά από τα προβλήµατα της συµµετρικής. Η ασύµµετρη κρυπτογραφία χρησιµοποιεί δύο διαφορετικά κλειδιά για την κρυπτογράφηση και αποκρυπτογράφηση. Κάθε χρήστης έχει στην κατοχή του ένα ζεύγος κλειδιών, το ένα καλείται δηµόσια κλείδα και το άλλο καλείται ιδιωτική κλείδα. Η δηµόσια κλείδα δηµοσιοποιείται, ενώ η ιδιωτική κλείδα κρατείται µυστική. Η ιδιωτική κλείδα δεν µεταδίδεται ποτέ στο δίκτυο και όλες οι επικοινωνίες βασίζονται στην δηµόσια κλείδα. Η ανάγκη ο αποστολέας και ο παραλήπτης να µοιράζονται το ίδιο κλειδί εξαφανίζεται και µαζί και πολλά προβλήµατα που θα δούµε παρακάτω. Η µόνη απαίτηση της ασύµµετρης κρυπτογραφίας είναι η εµπιστεύσιµη και επιβεβαιωµένη συσχέτιση των δηµόσιων κλείδων µε τους κατόχους τους ώστε να µην είναι δυνατή η σκόπιµη ή µη πλαστοπροσωπία. Η ασύµµετρη κρυπτογράφηση µπορεί να χρησιµοποιηθεί όχι µόνο για κρυπτογράφηση, αλλά και για παραγωγή ψηφιακών υπογραφών. Η ιδιωτική κλείδα είναι µαθηµατικά συνδεδεµένη µε την δηµόσια κλείδα. Τυπικά, λοιπόν, είναι δυνατόν να νικηθεί ένα τέτοιο κρυπτοσύστηµα ανακτώντας την ιδιωτική κλείδα από την δηµόσια. Η επίλυση αυτού του προβλήµατος είναι πολύ δύσκολη και συνήθως απαιτεί την παραγοντοποίηση ενός µεγάλου αριθµού. Η κρυπτογράφηση µε χρήση της ασύµµετρης κρυπτογραφίας γίνεται ως εξής: όταν ο χρήστης Α θέλει να στείλει ένα µυστικό µήνυµα στον χρήστη Β, χρησιµοποιεί την δηµόσια κλείδα του Β για να κρυπτογραφήσει το µήνυµα και έπειτα το στέλνει στον Β. Ο χρήστης Β, αφού παραλάβει το µήνυµα, κάνει χρήση της ιδιωτικής του κλείδας για να το αποκρυπτογραφήσει. Κανένας που "ακούει" την σύνδεση δεν µπορεί να αποκρυπτογραφήσει το µήνυµα. Οποιοσδήποτε έχει την δηµόσια κλείδα του Β µπορεί να του στείλει µήνυµα και µόνο αυτός µπορεί να το διαβάσει γιατί είναι ο µόνο που γνωρίζει την ιδιωτική κλείδα. Όταν ο Α θέλει να χρησιµοποιήσει την ασύµµετρη κρυπτογραφία για να υπογράψει ένα µήνυµα, τότε πραγµατοποιεί ένα υπολογισµό που απαιτεί την ιδιωτική του κλείδα και το ίδιο το µήνυµα. Το αποτέλεσµα του υπολογισµού καλείται ψηφιακή υπογραφή και µεταδίδεται µαζί µε το µήνυµα. Για να επαληθεύσει την υπογραφή ο Β πραγµατοποιεί ανάλογο υπολογισµό χρησιµοποιώντας την δηµόσια 25

36 κλείδα του Α, το µήνυµα και την υπογραφή. Εάν το αποτέλεσµα είναι θετικό, τότε η υπογραφή είναι αυθεντική. ιαφορετικά η υπογραφή είναι πλαστή ή το µήνυµα έχει τροποποιηθεί Κρυπτογραφικό σύστηµα RSA Το πρώτο πραγµατικά χρήσιµο σύστηα δηµοσίου κλειδιού αναπτύχθηκε από τους Rivest, Shamir και Adleman (RSA) στα τέλη της δεκαετίας του Η ασφάλεια του συστήµατος RSA βασίζεται στη δυσκολία εύρεσης κοινών παραγόντων (prime factors) πολύ µεγάλων αριθµών. Για την απόκτηση ζεύγους κλειδιών RSA, ο χρήστης Α διαλέγει πρώτα δύο πολύ µεγάλους αριθµούς p και q (µήκους τουλάχιστον 200 bits) και υπολογίζει τον προς δηµοσίευση συντελεστή (modulus) : n = p q. Ο χρήστης Α επιλέγει ακόµη ένα (ιδιωτικό) εκθέτη κρυπτογράφησης (encryption exponent) e, τέτοιο ώστε: ΜΚ ( e,( p 1) *( q 1)) = 1, όπου το ΜΚ σηµαίνει µέγιστος κοινός διαιρέτης, δηλαδή ότι το e δεν έχει κοινούς παράγοντες µε τα ( p 1) και ( q 1). Το δηµόσιοι κλειδί αποτελείται από το ζεύγος αριθµών n και e. Το ιδιωτικό κλειδί υπολογίζεται κατόπιν, ως εξής: d = e 1 (mod( p 1)( q 1)), όπου e d = 1 mod( p 1)( q 1). Ο χρήστης Α κοινοποιεί το ζεύγος ( e, n), καθώς αυτό είναι πλέον το δηµόσιο κλειδί του, αλλά κρατάει για δική του αποκλειστική χρήση τα d, p και q. Για την κρυπτογράφηση κάθε µηνύµατος m, ο χρήστης Β το αναπαριστά ως ένα αριθµό m (όπου το µήκος του m είναι µικρότερο από το µήκος του n ) και υπολογίζει τη σχέση: 26

37 e c = m (mod(n)). Αν το µήνυµα είναι πολύ µεγάλο, δηλαδή ο αριθµός των bits ξεπερνά τον αριθµό των bits του συντελεστή n, τότε το µήνυµα πρέπει να σπα σει σε δέσµες (blocks). Κάθε µια από αυτές τις δέσµες κρυπτογραφείται σε κρυπτογραφηµένες δέσµες c i µε το κλειδί κρυπτογράφησης (δηµόσιο) και την ακόλουθη συνάρτηση : e ci = mi (mod(n)). Για την αποκρυπτογράφηση ο χρήστης Α χρησιµοποιεί το (προσωπικό) κλειδί αποκρυπτογράφησης και ακολουθεί την συνάρτηση : d mi = ci (mod(n)). Μόνο ο χρήστης Α µπορεί να κάνει κάτι τέτοιο, αφού µόνο αυτός διαθέτει τον εκθέτη αποκρυπτογράφησης (decryption exponent) d Εφαρµογές της κρυπτογραφίας δηµοσίου κλειδιού ιανοµή συµµετρικού κλειδιού Είχαµε αναφέρει ότι το µεγαλύτερο πρόβληµα της κρυπτογραφίας µυστικού κλειδιού είναι το πως θα γίνει η µετάδοση του κοινού µυστικού κλειδιού µε το οποίο θα γίνει στη συνέχεια η ασφαλής επικοινωνία. Αν όµως ο παραλήπτης διαθέτει ένα ιδιωικό και ένα δηµόσιο κλειδί, τότε µπορεί να λάβει από τον αποστολέα το µυστικό κλειδί χωρίς να χρειάζεται ένα ασφαλές κανάλι επικοινωνίας για να γίνει η µετάδοση του ως εξής : 1. Ο αποστολέας κρυπτογραφεί το µήνυµα µε το µυστικό (συµµετρικό) κλειδί. 2. Στη συνέχεια κρυτπογραφεί µε το δηµόσιο κλειδί του παραλήπτη το µυστικό κλειδί και προκύπτει ο ψηφιακός φάκελος (digital envelope) που αποστέλλεται µαζί µε το κρυπτογραφηµένο µήνυµα. 3. Ο παραλήπτης χρησιµοποιεί το ιδιωτικό του κλειδί για να βγάλει το συµµετρικό κλειδί από τον ψηφιακό φάκελο και µε αυτό αποκρυπτογραφεί το µήνυµα. Ψηφιακές υπογραφές Η κρυπτογράφηση / αποκρυπτογράφηση αντιµετωπίζει το πρόβληµα της υποκλοπής, αλλά όχι και αυτά της προσποίησης και της παραποίησης. Για την αντιµετώπιση της παραποίησης χρησιµοποιείται µια µαθηµατική συνάρτηση που ονοµάζεται µονόδροµος τεµαχισµός (one way hash) ή σύνοψη µηνύµατος (message digest). Το αποτέλεσµα της εφαρµογής της µονοδρόµου τεµαχισµού σε ένα µήνυµα είναι ένας αριθµός σταθερού µήκους (ανεξάρτητα από το µήκος του µηνύµατος) µε τα ακόλουθα χαρακτηριστικά : 1. Ο αριθµός είναι µοναδικός για κάθε µήνυµα. Για κάθε µικρή παραλλαγή του µηνύµατος προκύπτει διαφορετικός αριθµός. 27

38 2. Το περιεχόµενο του µηνύµατος δε µπορεί να εξαχθεί από τον αριθµό του τεµαχισµού και γι αυτό ονοµάζεται και µονόδροµος. Η χρήση του προσωπικού κλειδιού του αποστολέα για κρυπτογράφηση και του δηµοσίου κλειδιού του για αποκρυπτογράφηση έχει την έννοια της εισαγωγής της ψφιακής υπογραφής του σε κάθε µήνυµα που στέλνει. Έτσι, δηµιουργείται ο µονόδροµος τεµαχισµός κάθε µηνύµατος, ο οποίος στη συνέχεια κρυπτογραφείται µε το προσωπικό κλειδί του αποστολέα. Ο κρυπτογραφηµένος τεµαχισµός και και η πληροφορία για τον αλγόριθµο τεµαχισµού αποτελούν αυτό που ονοµάζεται ψηφιακή υπογραφή (digital signature). Στη µεριά του παραλήπτη, αποκρυπτογραφείται η ψηφιακή υπογραφή µε το δηµόσιο κλειδί του αποστολέα. Με βάση τον γνωστό (και στα δύο µέρη) αλγόριθµο τεµαχισµού επαναυπολογίζεται ο τεµαχισµός του µηνύµατος. Κατόπιν, συγκρίννται οι δύο τεµαχισµοί (αυτός που παραλήφθηκε και αυτός που υπολογίστηκε)και αν δεν είναι ίδιοι τότε είτε έχει αλλαχθεί το µήνυµα είτε η ψηφιακή υπογραφή δεν αντιστοιχεί στο δηµόσιο κλειδί του αποστολέα. Αν είναι ίδιοι τότε ο παραλήπτης είναι βεβαιος ότι το δηµόσιο κλειδί που χρησιµοποιεί αντιστοιχεί (ανήκει στο ίδιο ζεύγος κλειδιών) µε το προσωπικό κλειδί που χρησιµοποιήθηκε για τη δηµιουργία της ψηφιακής υπογραφής. Η αποτελεσµατικότητα των ψηφιακών υπογραφών εξαρτάται από το µέγεθος της συνόψισης του µηνύµατος. Συνήθως αυτό είναι 128 ή 160 bits. Οι πιο γνωστοί αλγόριθµοι αυτού του τύπου είναι οι MD2, MD4 και MD5 που σχεδιάστηκαν από τον Rivest και δηµιουργούν συνόψιση µηνύµατος µεγέθους 128 bits. Το 1993 δηµοσιεύτηκε ο Secure Hash Algorithm (SHA) από το NIST που δηµιουργεί συνόψιση µηνύµατος των 160 bits. Η ψηφιακή υπογραφή συνήθως χρησιµοποιείται για την προσπέλαση, συµπλήρωση και υπογραφή κειµένων και φορµών on-line καταχώρησης στοιχείων, αδειών και συµφωνιών. Όµως αυτό δεν είναι αρκετό για να διασφαλιστεί η κυριότητα (δηλαδή ποιός είναι ο νόµιµος κάτοχος) εός δηµοσίου κλειδιού από ένα πρόσωπο ή οργανισµό. Για το σκοπό αυτό χρησιµοποιούνται τα ηλεκτρονικά πιστοποιητικά. ιαχείρηση των κλειδιών Με τη χρήση του ίδιου ζεύγους κλειδιών τόσο για κρυπτογράφηση όσο και για τη δηµιουργία ψηφιακών υπογραφών δηµιουργούνται προβλήµατα στη διαχείρηση των κλειδιών. Όταν το ζεύγος κλειδιών χρησµοποιείται για ψηφακές υπογραφές, το ιδιωτικό κλειδί µπορεί να κατασρέφεται χωρίς πρόβληµα. Αντίθετα, αν αν χρησιµοποιείται για την κρυπτογράφηση θα πρέπει να φυλάσσεται γιατί αλλιώς δε θα είναι δυνατή η αποκρυπτογράφηση πληροφοριών που κρυπτογραφήθηκαν µε το δηµόσιο κλειδί. Γι αυτό στην πράξη χρησιµοποιούνται συνήθως δυο ζεύγη κλειδιών : o o Ένα γα τη δηµιουργία υπογραφών και Ένα για την κρυπτογράφηση. 28

39 2.3.4 Σύγκριση συµµετρικής και ασύµµετρης κρυπτογραφίας Το µεγαλύτερο πρόβληµα της συµµετρικής κρυπτογραφίας, όπως αναφέραµε περιληπτικά προηγουµένως, είναι η συνεννόηση και ανταλλαγή του κλειδιού, χωρίς κάποιος τρίτος να µάθει για αυτό. Η µετάδοση µέσα από το ιαδίκτυο δεν είναι ασφαλής γιατί οποιοσδήποτε γνωρίζει για την συναλλαγή και έχει τα κατάλληλα µέσα µπορεί να καταγράψει όλη την επικοινωνία µεταξύ αποστολέα και παραλήπτη και να αποκτήσει το κλειδί. Έπειτα, µπορεί να διαβάσει, να τροποποιήσει και να πλαστογραφήσει όλα τα µηνύµατα που ανταλλάσσουν οι δύο ανυποψίαστοι χρήστες. Βέβαια, µπορούν να βασισθούν σε άλλο µέσο επικοινωνίας για την µετάδοση του κλειδιού (π.χ. τηλεφωνία), αλλά ακόµα και έτσι δεν µπορεί να εξασφαλιστεί ότι κανείς δεν παρεµβάλλεται µεταξύ της γραµµής επικοινωνίας των χρηστών. Η ασύµµετρη κρυπτογραφία δίνει λύση σε αυτό το πρόβληµα αφού σε καµία περίπτωση δεν "ταξιδεύουν" στο δίκτυο οι εν λόγω ευαίσθητες πληροφορίες. Άλλο ένα ακόµα πλεονέκτηµα των ασύµµετρων κρυπτοσυστηµάτων είναι ότι µπορούν να παρέχουν ψηφιακές υπογραφές που δεν µπορούν να αποκηρυχθούν από την πηγή τους. Η πιστοποίηση ταυτότητας µέσω συµµετρικής κρυπτογράφησης απαιτεί την κοινή χρήση του ίδιου κλειδιού και πολλές φορές τα κλειδιά αποθηκεύονται σε υπολογιστές που κινδυνεύουν από εξωτερικές επιθέσεις. Σαν αποτέλεσµα, ο αποστολέας µπορεί να αποκηρύξει ένα πρωτύτερα υπογεγραµµένο µήνυµα, υποστηρίζοντας ότι το µυστικό κλειδί είχε κατά κάποιον τρόπο αποκαλυφθεί. Στην ασύµµετρη κρυπτογραφία δεν επιτρέπεται κάτι τέτοιο αφού κάθε χρήστης έχει αποκλειστική γνώση της ιδιωτική του κλείδας και είναι δικιά του ευθύνη η φύλαξη του. Μειονέκτηµα της ασύµµετρης κρυπτογραφίας είναι η ταχύτητα. Κατά κανόνα, η διαδικασίες κρυπτογράφησης και πιστοποίησης ταυτότητας µε συµµετρικό κλειδί είναι σηµαντικά ταχύτερη από την κρυπτογράφηση και ψηφιακή υπογραφή µε ζεύγος ασύµµετρων κλειδιών. Γι αυτό το λόγο, όπως προτείνεται και από το πρωτόκολλο SSL, χρησιµοποιείται η κρυπτογράφηση δηµοσίου κλειδιού για την ανταλλαγή συµµετρικών κλειδιών και στη συνέχεια χρησιµοποιείται η συµµετρική κρυπτογράφηση για την ουσιασική επικοινωνία. Η ιδιότητα αυτή καλείται διασφάλιση της µη αποκήρυξης της πηγής (nonrepudiation). Επίσης, τεράστιο µειονέκτηµα της ασύµµετρης κρυπτογραφίας είναι η ανάγκη για πιστοποίηση και επαλήθευση των δηµόσιων κλείδων από οργανισµούς (Certificate Authority) ώστε να διασφαλίζεται η κατοχή τους νόµιµους χρήστες. Όταν κάποιος απατεώνας κατορθώσει και ξεγελάσει τον οργανισµό, µπορεί να συνδέσει το όνοµα του µε την δηµόσια κλείδα ενός νόµιµου χρήστη και να προσποιείται την ταυτότητα αυτού του νόµιµου χρήστη. Σε µερικές περιπτώσεις, η ασύµµετρη κρυπτογραφία δεν είναι απαραίτητη και η συµµετρική κρυπτογραφία από µόνη της είναι αρκετή. Τέτοιες περιπτώσεις είναι περιβάλλονται κλειστά, που δεν έχουν σύνδεση µε το ιαδίκτυο. Ένας υπολογιστής µπορεί να κρατά τα µυστικά κλειδιά των χρηστών που επιθυµούν να εξυπηρετηθούν από αυτόν, µια και δεν υπάρχει ο φόβος για κατάληψη της µηχανής από εξωτερικούς παράγοντες. Επίσης, στις περιπτώσεις που οι χρήστες µπορούν να συναντηθούν και να ανταλλάξουν τα κλειδιά ή όταν η κρυπτογράφηση χρησιµοποιείται για τοπική αποθήκευση κάποιων αρχείων, η ασύµµετρη κρυπτογραφία δεν είναι απαραίτητη. Τα δύο κρυπτοσυστήµατα µπορούν να εφαρµοστούν µαζί, συνδυάζοντας τα καλά τους χαρακτηριστικά και εξαλείφοντας τα µειονεκτήµατα τους. Ένα παράδειγµα τέτοιου συνδυασµού είναι οι ψηφιακοί φάκελοι. 29

40 Σ αυτό το σηµείο πρέπει να σηµειώσουµε οτι η ανθεκτικότητα της κρυπτογράφησης εξαρτάται περισσότερο απο το µέγεθος των κλειδιών παρά από τους αλγορίθµους. Το µέγεθος των κλειδιών µετρέται όπως αναφέραµε και παραπάνω σε bits. Γενικά, κλειδιά µεγάλου µεγέθους παρέχουν ανθεκτικότερη κρυπτογράφηση. Για παράδειγµα, η κρυπτογράφηση 128 bit RS4 είναι 3078 φορές ανθεκτικότερη από την 40 bit RS4. διαφορετικοί αλγόριθµοι απαιτούν διαφορετικά µήκη κλειδιών για να πετύχουν το ίδιο επίπεδο ανθεκτικότητας κρυπτογράφησης. Για παράδειγµα ένας αλγόριθµος συµµετρικής κρυπτογράφησης µε κλειδί µεγέθους 128 bits παρέχει ανθεκτικότερη κρυπτογράφηση από τον αλγόριθµo κρυπτογράφησης δηµοσίου κλειδιού RSA µε το ίδιο µέγεθος κλειδιού. Γι αυτό πρέπει να χρησιµοποιούµε κλειδί µεγέθους τουλάχιστον 512 bits προκειµένου η κρυπτογράφηση RSA να θεωρείται ανθεκτική, ενώ οι συµµετρικοί αλγόριθµοι πετυχαίνουν το ίιδο επίπεδο ανθεκτικότητας µε κλειδί µεγέθους 56 bits. Όµως ακόµη και αυτά τα επίπεδα ανθεκτικότητας αρχίζουν και αποδεικνύονται ευπαθή σε επιθέσεις. Ακολουθεί µια σύγκριση των γνωστότερων κρυπτογραφικών αλγορίθµων DES και RSA : Τρόπος κρυπτανάλυσης : o o DES: εκτεταµένη αναζήτηση κλειδιών. RSA: παραγοντοποίηση µεγάλων αριθµών. Κατάταξη αντοχής (αύξουσα) : o o o o RSA µε κλειδί µεγέθους 256 bits, DES µε κλειδί µεγέθους 56 bits, RSA µε κλειδί µεγέθους 512 bits, DES µε κλειδί µεγέθους 128 bits, κ.λ.π. 30

41 Κεφάλαιο 3 Κρυπτογραφικό πρωτόκολλο DES 3.1 Γενικές πληροφορίες πάνω στον DES Ο αλγόριθµος DES είναι ο πιο ευρέως διαδεδοµένος αλγόριθµος κρυπτογράφησης στον κόσµο. Για πολλά χρόνια και µεταξύ πολλών ανθρώπων η έννοια της δηµιουργίας «µυστικού κώδικα» και ο DES ήταν συνώνυµα. Παρά το γεγονός ότι η Electronic Frontier Foundation επένδυσε δολλάρια στο να κατασκευάσει ένα σύστηµα το οποίο σπάει µηνύµατα κρυπτογραφηµένα σε DES, ο DES θα παραµένει το κυρίαρχο πρότυπο κρυπτογράφησης στις κυβερνητικές επικοινωνίες και διατραπεζκές συναλλαγές για αρκετά χρόνια ακόµα µε µια νέα µορφή του, τον triple-des. Παρακάτω περιγράφεται ο τρόπος λειτουργίας του DES, παρουσιάζοντας σε κάθε βήµα της λειτουργίας του αλγορίθµου και ένα παράδειγµα. Πρέπει να σηµειωθεί ότι πολλοί άλλοι σύγχρονοι αλγόριθµοι κρυπτογράφησης βασίζονται πάνω στον DES και κατανοώντας κάποιος τον τρόπο λειτουργίας του DES δεν θα αντιµετωπίσει προβλήµατα στο να κατανοήσει και τους υπολοίπους. 3.2 Προκαταρκτικά παραδείγµατα του DES O DES δουλεύει µε bits. Κάθε τετράδα bits αποτελεί έναν δεκαεξαδικό αριθµό. Το δυαδικό 0001 αντιστοιχεί στο δεκαεξαδικό 1, το δυαδικό 1000 το δεκαεξαδικό 8 και το δυαδικό 1111 το δεκαεξαδικό F. Ο DES κρυπτογραφεί κοµµάτια του µηνύµατος αποτελούµενα από 64 bits τα οποία αντιστοιχούν σε 16 δεκαεξαδικούς αριθµούς. Για να κάνει την κρυπτογράφηση ο DES χρησιµοποιεί «κλειδιά» τα οποία φαινοµενικά αποτελούνται κι αυτά απο 64 δυαδικά bits ή 16 δεκαεξαδικά ψηφία. Φαινοµενικά, γιατί κάθε 8 ο bit του κλειδιού αγνοείται από τον αλγόριθµο ούτως ώστε το κανονικό µήκος του κλειδιού να 31

42 είναι 56 bits. Πάντως, σε κάθε περίπτωση τα 64 δυαδικά bits είναι ο στρογγυλός αριθµός στον οποίο ο DES είναι οργανωµένος. Για παράδειγµα, αν θεωρήσουµε το µη κρυπτογραφηµένο κείµενο και το κρυπτογραφήσουµε µε το κλειδί 0E329232EA6D0D73 θα λάβουµε το κρυπτογραφηµένο µήνυµα Αν αποκρυπτογραφήσουµε το κρυπτογραφηµένο αυτό µήνυµα µε το µυστικό κλειδί 0E329232EA6D0D73 το αποτέλεσµα που θα λάβουµε θα είναι το αρικό µη κρυπτογραφηµένο µήνυµα Αυτό το παράδειγµα είναι επιδέξια κατασκευασµένο και µεθοδικό γιατί το µη κρυπτογραφηµένο µήνυµα έχει µήκος ακριβώς 64 bits. Το ίδιο θα συνέβαινε και αν το αρχικό µήνυµα είχε µήκος πολλαπλάσιο των 64 bits, συνθήκη, όµως, που δεν ικανοποιείται από τα περισσότερα µηνύµατα που πρόκειται να κρυπτογραφηθούν. 3.3 Η ακριβής λειτουργία του DES Ο DES είναι κρυπτογραφικός αλγόριθµος δέσµης, που σηµαίνει, όπως έχουµε αναφέρει και παραπάνω, ότι σπάει το αρχικό κείµενο σε δέσµες σταθερού µήκους, ίσου µε 64 bits, το κρυπτογραφεί και επιστρέφει κρυπτογραφηµένο κειµενο επίσης µήκους 64 bits, κάθε ένα από τα οποία µπορεί να είναι είτε 0 είτε 1. Κάθε δέσµη των 64 bits χωρίζεται σε δύο δέσµες των 32 bits (το αριστερό µισό L και το δεξί µισό R). Για την καλύτερη κατανόηση του αλγορίθµου, παράλληλα µε τα βήµατα θα επιλύεται κι ένα παράδειγµα. Παράδειγµα : Ας υποθέσουµε ότι το αρχικό κείµενο M= ABCDEF σε δεκαεξαδική µορφή. Αν το µετατρέψουµε σε δυαδική µορφή έχουµε : M = L = R = Ο DES επεµβαίνει στις δέσµες του αρχικού κειµένου µήκους 64 bits χρησιµοποιώντας κλειδιά µήκους 56 bits όπως ανεφέραµε και πιο πάνω. Τα κλειδιά στην πραγµατικότητα αποθηκεύονται σαν να ήταν µήκους 64 bits µε τη διαφορά ότι κάθε όγδοο bit δεν χρησιµοποιείται (δηλαδή το 8 ο, το 16 ο, το 24 ο, το 32 ο, το 40 ο, το 48 ο, το 54 ο και το 64 ο bit). Παρ όλ αυτά στους επόµενους υπολογισµούς θα καταµετρώνται κανονικά τα bit των κλειδιών από το 1 ο ως το 64 ο αλλά όπως θα δούµε και στη συνέχεια τα bit σε θέση πολλαπλάσια του 8 θα απαλείφονται κατά τη δηµιουργία των υποκλειδιών. Παράδειγµα : Ας υποθέσουµε ότι έχουµε το κλειδί K= BBCDFF1 σε δεκαεξαδική µορφή. Αν το µετατρέψουµε σε δυαδική µορφή και απαλείψουµε κάθε όγδοο bit θα έχουµε ότι : 32

43 K = Ο αλγόριθµος DES χωρίζεται στα παρακάτω βήµατα : ηµιουργία 16 υποκλειδιών Τα bit του αρχικού κλειδιού αντιµετατίθενται συµφωνα µε τον παρακάτω πίνακα (πίνακας 1). Όπως φαίνεται από τον πίνακα, από τη στιγµή που η πρώτη τιµή του είναι το νούµερο 57, σηµαίνει ότι το 57 ο bit του αρχικού κλειδιού Κ µετατίθεται σε πρώτο bit για το κλειδί Κ +. Οµοίως το 49 ο bit του αρχικού κλειδιού µετατίθεται σε δεύτερο και το 4 ο του αρχικού σε τελευταίο για το Κ +. Πρέπει να παρατηρήσουµε ότι µόνο 56 από τα 64 bits του αρχικού κλειδιού εµφανίζονται στον πίνακα αντιµετάθεσης. Πίνακας 1 (αντιµεταθέσεων): Έτσι, από το µήκους 64 bits αρχικό κλειδί : K = Λαµβάνουµε το µήκους 56 bits αντιµετατεθηµένο κλειδί : Κ + = Έπειτα, χωρίζουµε αυτό το κλειδί σε δύο κοµµάτια C 0 και D 0 (αριστερό και δεξί αντίστοιχα) τα οποία έχουν µήκος 28 bits το καθένα. Έτσι : C 0 =

44 D 0 = Έχοντας προσδιορίσει το C 0 και το D 0, δηµιουργούµε δεκαέξι δέσµες C n και D n ( 1 n 16 ). Κάθε ζεύγος δεσµών C n και D n δηµιουργείται από το προηγούµενο ζεύγος C n-1 και D n-1, αντίστοιχα, για n = 1, 2,, 16, χρησιµοποιώντας τον παρακάτω πίνακα για αριστερές ολισθήσεις της προηγούµενης δέσµης. Για να πραγµατοποιηθεί µια ολίσθηση προς τα αριστερά µετακινείται κάθε bit µια θέση αριστερά µε εξαίρεση το πρώτο το οποίο πηγαίνει τελευταίο. Πίνακας 2 (ολισθήσεων): Αριθµός Επαναλήψεων Αριθµός Αριστερών Ολισθήσεων

45 Έτσι από το αρχικό ζεύγος C 0 και D 0 προκύπτουν τα ζεύγη : C 0 = D 0 = C 1 = D 1 = C 2 = D 2 = C 3 = D 3 = C 4 = D 4 = C 5 = D 5 = C 6 = D 6 = C 7 = D 7 =

46 C 8 = D 8 = C 9 = D 9 = C 10 = D 10 = C 11 = D 11 = C 12 = D 12 = C 13 = D 13 = C 14 = D 14 = C 15 = D 15 = C 16 = D 16 =

47 Στη συνέχεια σχηµατίζουµε τα κλειδιά Κ n, µε 1 n 16, χρησιµοποιώντας των παρακάτω πίνακα αντιµεταθέσεων (πίνακας 3) σε κάθε ζεύγος C n D n. Κάθε ζεύγος έχει 56 bits αλλά στον πίνακα αντιµεταθέσεων χρησιµοποιούνται µόνο τα 48. Πίνακας 3 (αντιµεταθέσεων): Έτσι λοιπόν το 1 ο bit του κλειδιού K n είναι το 14 ο του C n D n κτλ. Για το πρώτο κλειδί έχουµε : C 1 D 1 = Το οποίο µετα την αντιµετάθεση γίνεται : Κ 1 = Για τα υπόλοιπα κλειδιά έχουµε ότι : K 2 = K 3 = K 4 = K 5 = K 6 = K 7 = K 8 =

48 K 9 = K 10 = K 11 = K 12 = K 13 = K 14 = K 15 = K 16 = Με αυτόν τον τρόπο δηµιουργούνται τα 16 υποκλειδιά. Στη συνέχεια θα δούµε τι γίνεται µε το µήνυµα προς κρυπτογράφηση. Σχήµα 1 ο : Υπολογισµός υποκλειδιών 38

49 3.3.2 Κρυπτογράφηση των δεσµών µήκους 64 bits Υπάρχει µια αρχική αντιµετάθεση των στοιχείων κάθε δέσµης Μ µε βάση τον πίνακα 4, όπως και παραπάνω. Πίνακας 4 (αντιµετάθεσης της δέσµης µηνύµατος) Αν εφαρµόσουµε την αντιµετάθεση στη δέσµη Μ που αναφέραµε παραπάνω θα λάβουµε τη δέσµη ΙΡ: M = IP = Στη συνέχεια διαχωρίζουµε την αντιµεταθετηµένη δέσµη στο δεξί και το αριστερό µισό της : L 0 = R 0 = Σειρά έχουν οι δεκαέξι επαναλήψεις, για 1 n 16, χρησιµοποιώντας µια συνάρτηση f η οποία επεµβαίνει σε δύο δέσµες, µια δέσµη δεδοµένων µήκους 32 bits και ένα υποκλειδί Κ n µήκους 48 bits και παράγει µια νέα, µήκους 32 bits. Έτσι, θεωρώντας το συµβόλο + ότι αντιστοιχεί στην πράξη XOR (bit by bit modulo 2) και για 1 n 16 γίνονται οι παρακάτω υπολογισµοί : L n = R n-1 R n = L n-1 + f (R n-1,k n ) Με αυτόν τον τρόπο προκύπτει µια τελική δέσµη για n=16, η L 16 R

50 Παράδειγµα : Κ 1 = L 1 = R 0 = R 1 = L 0 + f (R 0,K 1 ) Σχήµα 2 ο : Υπολογισµός της f (R n-1,k n ) Παραµένει να εξηγήσουµε τον τρόπο µε τον οποίο λειτουργεί η συνάρτηση f. Για να υπολογίσουµε την f αρχικά επεκτείνουµε την δέσµη R n-1 από 32 σε 48 bits. Για να επιτευχθεί αυτό, χρησιµοποιείται ένας πίνακας µε βάση τον οποίο επιλέγοναι κάποια στοιχεία του πίνακα R n-1 και επαναλαµβάνονται. Ονοµάζουµε τη χρήση αυτού του πίνακα επιλογής Ε. Έτσι η λειτουργία Ε(R n-1 ) έχει είσοδο µια δέσµη 32 bits και έξοδο µια άλλη δέσµη µήκους 48 bits. Ο πίνακας Ε φαίνεται παρακάτω : Πίνακας 5 (επέκτασης) :

51 Έτσι µπορούµε να παραθέσουµε και ένα παράδειγµα χρήσης του πίνακα : Αν R 0 = E(R 0 ) = Έπειτα, χρησιµοποιούµε την πράξη XOR για το υποκλειδί Κ n και τη δέσµη E(R n-1 ) : K n + E(R n-1 ). Παράδειγµα : K 1 = E(R 0 ) = K 1 +E(R 0 ) = εν έχουµε ακόµη τελειώσει τον υπολογισµό της συνάρτησης f. Ως εδώ έχουµε µια δέσµη µήκους 48 bits τα οποία οµαδοποιούµε σε οκτώ οµάδες των έξι bits. Κάθε µια οµάδα από bits θα χρησιµοποιηθεί σαν διέυθυνση σε κάποιους πίνακες που ονοµάζονται S-Boxes. Κάθε οµάδα αποτελούµενη από έξι bits µας δίνει µια διεύθυνση σε κάθε πίνακα S. Σε κάθε διεύθυνση είναι αποθηκευµένος ένας αριθµός µήκους τεσσάρων bits ο οποίος και αντικαθιστά τα αρχικά έξι bits (µια διαδικασία παρόµοια µε τη χρήση των pointers στην C++). Έτσι η τελική δέσµη που προκύπτει από αυτή την διαδικασία είναι µήκους 32 bits. K n + E(R n-1 ) =B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 Όπου Β i είναι µια οµάδα από έξι bits. Έπειτα υπολογίζουµε τη νέα δέσµη : S 1 (B 1 )S 2 (B 2 )S 3 (B 3 )S 4 (B 4 )S 5 (B 5 )S 6 (B 6 )S 7 (B 7 )S 8 (B 8 ) Όπου η ποσότητα S i (B i ) αντιστοιχεί στο αποτέλεσµα που προκύπτει για την i-οστή εξάδα στον i-οστό πίνακα S. Πριν παραθέσουµε τους πίνακες S i ας εξηγήσουµε πως λειτουργούν. Για την εξήγηση αυτή θα χρησιµοποιήσουµε τον πίνακα S 1 : Παράδειγµα : S 1 Αριθµός στήλης Αριθµ. 41

52 Γραµ Αν θεωρήσουµε S 1 την συνάρτηση που περιγράφεται στον παραπάνω πίνακα και Β µια δέσµη από έξι bit η λειτουργία S 1 (B) περιγράφεται ακολούθως : Το πρώτο και το τελευταίο bit του Β παριστάνουν έναν δεκαδικό αριθµό από το 0 ως το 3 (ή έναν δυαδικό από το 00 ως το 11). Θέτουµε αυτόν τον αριθµό ίσο µε i. Τα υπόλοιπα, µεσαία, bit παριστάνουν έναν δεκαδικό αριθµό από το 0 ως το 15 (ή έναν δυαδικό από το 0000 ως το 1111) τον οποίο και θέτουµε ίσο µε j. Έπειτα αναζητούµε στον πίνακα S 1 τον αριθµό που βρίσκεται στην i -οστή γραµµή και στην j -οστή στήλη. Ο αριθµός που προκύπτει απ αυτή την αναζήτηση είναι ένας δεκαδικός αριθµός από το 0 ως το 15 ο οποίος αναπαρίσταται µοναδικά, όπως γνωρίζουµε, από τέσσερα δυαδικά ψηφία. Αυτός ο αριθµός είναι και το αποτέλεσµα που προκύπτει από την πράξη S 1 (B). Για παράδειγµα αν Β=011011, το πρωτο ψηφίο είναι 0 και το τελευταίο 1, άρα επιλέγουµε την 1 η γραµµή. Τα µεσσαία 4 ψηφία είναι 1010, το οποίο είναι το δυαδικό ισοδύναµο του δεκαδικού αριθµού 13, εποµένως η στήλη που επιλέγεται είναι η 13 η. Στην 1 η γραµµή και την 13 η στήλη εµφανίζεται ο αριθµός 5 (σε δυαδικό σύστηµα το 0101), το οποίο είναι και το αποτέλεσµα. Εποµένως έχουµε ότι S 1 (011011)=0101. Παρακάτω παρατίθενται οι πίνακες-συναρτήσεις S 1 ως S 8 : S S

53 S S S S

54 S S Παράδειγµα : Σύµφωνα µε τα παραπάνω, λοιπόν, αν K 1 +E(R 0 ) = Τότε : S 1 (B 1 )S 2 (B 2 )S 3 (B 3 )S 4 (B 4 )S 5 (B 5 )S 6 (B 6 )S 7 (B 7 )S 8 (B 8 ) = Το τελευταίο στάδιο του υπολογισµού της συνάρτησης f περιλαµβάνει µια αντιµετάθεση των στοιχείων της δέσµης που προκύπτει από τον υπολογισµό S 1 (B 1 )S 2 (B 2 )S 3 (B 3 )S 4 (B 4 )S 5 (B 5 )S 6 (B 6 )S 7 (B 7 )S 8 (B 8 ). Έτσι λοιπόν, υπολογίζεται η τιµή της f : f = P(S 1 (B 1 )S 2 (B 2 )...S 8 (B 8 )) Η πράξη της αντιµετάθεσης Ρ περιγράφεται από τον πίνακα που παρατίθεται παρακάτω : 44

55 Πίνακας 6 (αντιµετάθεσης) P Παρατηρούµε ότι σε αυτήν την πράξη δεν µεταβάλλεται το µήκος της δέσµης καθώς εµφανίζονται και τα 32 στοιχεία του πίνακα. Παράδειγµα : Αν, λοιπόν, λάβουµε ότι : S 1 (B 1 )S 2 (B 2 )S 3 (B 3 )S 4 (B 4 )S 5 (B 5 )S 6 (B 6 )S 7 (B 7 )S 8 (B 8 ) = Από το ότι f = P(S 1 (B 1 )S 2 (B 2 )...S 8 (B 8 )), προκύπτει ότι f = Εποµένως : R 1 = L 0 + f(r 0, K 1 ) = = Συνεχίζονται οι υπολογισµοί των τµηµάτων L n R n µε τον τρόπο που περιγράφτηκε παραπάνω µέχρι να υπολογιστούν και οι τελευταίες δέσµες L 16 R 16. Τότε αντιστρέφουµε τη σειρά των δύο τµηµάτων ώστε να προκύψει µια νέα δέσµη 64 bits ως εξής : R 16 L

56 Τέλος εφαρµόζουµε µια τελευταία αντιµετάθεση που περιγράφεται από τον παρακάτω πίνακα ΙΡ -1 : Πίνακας 7 (αντιµετάθεσης) Παράδειγµα : Αν συνεχίσουµε τους παραπάνω υπολογισµούς µε τον τρόπο που περιγράφτηκε παραπάνω, στη 16 η επανάληψη θα λάβουµε : L16 = R16 = Από την αντιστροφή προκύπτει η δέσµη : R16L16 = Και µε την τελική αντιµετάθεση ΙΡ -1 : IP-1 = Το οποίο σε δεκαεξαδική µορφή είναι το 85E813540F0AB405. Η δέσµη C = 85E813540F0AB405 είναι η τελική κρυπτογραφηµένη µορφή του αρχικού κειµένου M = ABCDEF. 46

57 Σχήµα 3 ο : Συνολική λειτουργία του αλγορίθµου κρυπτογράφησης DES Αποκρυπτογράφηση του DES Η διαδικασία της αποκρυπτογράφησης µε βάση τον αλγόριθµο DES είναι σχεδόν ίδια µε τη διαδικασία της κρυπτογράφησης. Η µόνη διαφορά που έχει η κρυπτογράφηση από την αποκρυπτογράφηση είναι ότι ενώ όπως παρατηρήσαµε παραπάνω κατά την δηµιουργία των κλειδιών στην κρυπτογράφηση οι ολισθήσεις γίνονται προς την αριστερή φορά, κατά την αποκρυπτογράφηση οι ολισθήσεις γίνονται προς τη δεξιά φορά. Όλη η υπόλοιπη διαδικασία, ακόµα και οι πίνακες, παραµένει ακριβώς η ίδια. 3.4 Τρόποι λειτουργίας του DES Ο αλγόριθµος DES κρυπτογραφεί µια δέσµη µηνύµατος Μ µήκους 64 bits σε µια δέσµη κρυπτογραφηµένου µηνύµατος C, επίσης µήκους 64 bits. Αν κάθε δέσµη κρυπτογραφείται ξεχωριστά, τότε ο τρόπος λειτουργίας του DES λέγεται Electronic Code Book (ECB). Υπάρχουν άλλοι δύο τρόποι λειτουργίας του DES ο Chain Block Coding (CBC) και ο Cipher Feedback (CFB). 47

58 Triple-DES Όπως αναφέραµε παραπάνω, µε τα χρόνια, λόγω της ραγδαίας ανάπτυξης του πεδίου των νέων τεχνολογιών και της πληροφορικής, έγινε απαραίτητο να βρεθεί ένας πιο αξιόπιστος αλγόριθµος κρυπτογράφησης από τον DES. Έτσι λοιπόν προέκυψε ο αλγόριθµος triple-des. Ο triple-des είναι απλά ο DES στον οποίο χρησιµοποιούνται δύο κλειδία µήκους 56 bits το καθένα. οθέντος ενός αρχικού µηνύµατος προς κρυπτογράφηση, το πρώτο κλειδί χρησιµοποιείται από τον DES για την κρυπτογράφηση του µηνύµατος. Το δεύτερο κλειδί χρησιµοποιείται για να αποκρυπτογραφήσει το κρυπτογραφηµένο µε το πρώτο κλειδί µήνυµα. Επειδή όµως το δεύτερο κλειδί δεν είναι το σωστό κλειδί για την αποκρυπτογράφηση του µηνύµατος, το µόνο που επιτυγχάνεται µε αυτή τη διαδικασία είναι να µπερδεύεται ακόµα περισσότερο το ήδη κρυπτογραφηµένο µήνυµα. Τελικά το µήνυµα ξανακρυπτογραφείται µε το πρώτο κλειδί και έτσι προκύπτει το τελικό κρυπτογραφηµένο µήνυµα. Αυτή λοιπόν η διαδικασία τριών βηµάτων αποκαλείται triple-des. Ο triple-des είναι απλά η εφαρµογή του DES τρεις φορές µε δύο κλειδία τα οποία χρησιµοποιούνται µε συγκεκριµένη σειρά. Ο triple-des µπορεί να εφαρµοστεί και µε τρία διαφορετικά κλειδιά αντί για δύο. Σε αυτή την περίπτωση, το συνολικό εύρος του κλειδιού είναι Τα αδύναµα κλειδιά του DES Ο αλγόριθµος DES έχει κάποια κλειδιά τα οποία ονοµάζονται ασθενή-αδύναµα (weak) κλειδιά και κάποια άλλα τα οποιά ονοµάζονται ηµι-ασθενή (semi-weak) κλειδιά. Η χρήση αυτών των κλειδιών έχει σαν αποτέλεσµα ο DES κατά τη διαδικάσία της κρυπτογράφησης να συµπεριφέρεται όπως ακριβώς συµπεριφέρεται στη διαδικασία της αποκρυπτογράφησης. Όπως ήδη γνωρίζουµε, το κλειδι των 56 bit σπάει σε 16 υποκλειδιά σύµφωνα µε τον αλγόριθµο. Το πρόβληµα που δηµιουργείται µε τα ασθενή κλειδιά είναι ότι τα 16 υποκλειδιά που προκύπτουν από το αρχικό κλειδί, είναι ίδια. Παραθέτουµε τώρα, τις περιπτώσεις κατά τις οποίες προκύπτει ασθενές κλειδί: 1. Όταν έχουµε εναλασσόµενoυς άσσους και µηδενικά ( ) 2. Όταν έχουµε εναλασσόµενα "F" και "E" (FEFEFEFEFEFEFEFE) 3. Το κλειδί : E0E0E0E0F1F1F1F1 4. Το κλειδί : 1E1E1E1E0F0F0F0F Χρησιµοποιώντας τα παραπάνω κλειδιά τα υποκλειδιά που προκύπτουν, ανάλογα µε την περίπτωση, είναι µηδενικα, άσσοι ή εναλλασσόµενα µηδενικά και άσσοι. Έτσι αν χρησιµοποιήσουµε τη διαδικασία της κρυπτογράφησης δύο φορές µε το ίδιο κλειδί, θα πάρουµε το αρχικό κείµενο 48

59 Με αντίστοιχο τρόπο λειτουργούν και τα ηµι-ασθενή κλειδιά µε τη διαφορά ότι τα ηµι-ασθενή κλειδιά δουλεύουν ως ζέυγη. Αν δηλαδή κρυπτογραφήσουµε δύο φορές ένα αρχικό κείµενο µε ένα ζεύγος ηµι-ασθενών κλειδιών θα πάρουµε το αρχικό κείµενο. Τα ζεύγη των ηµι-ασθενών κλειδιών είναι τα παρακάτω: F011F010E010E και 1F011F010E010E E001E001F101F1 και E001E001F101F FE01FE01FE01FE και FE01FE01FE01FE FE01FE00EF10EF1 και E01FE01FF10EF10E 5. 1FFE1FFE0EFE0EFE και FE1FFE1FFE0EFE0E 6. E0FEE0FEF1FEF1FE και FEE0FEE0FEF1FEF1 Σε αυτό το σηµείο πρέπει να τονίσουµε ότι το πλήθος των προβληµατικών κλειδιών του DES είναι πάρα πολύ µικρό και συνεπώς οι πιθανότητες να χρησιµοποιηθούν είναι ελάχιστες. Είναι πολύ βασικό για την ανθεκτικότητα του αλγορίθµου και κάθε αλγορίθµου, τα ασθενή κλειδιά να είναι γνωστα από την αρχή καθώς αν δεν τα γνωρίζουν ούτε οι σχεδιαστές του αλγορίθµου τότε υπάρχει σοβαρό κενό ασφαλείας στον αλγόριθµο. Αν οι σχεδιαστές γνωρίζουν τα ασθενή κλειδιά, µπορούν να ξεπεράσουν αυτό το εµπόδιο κατα την υλοποίηση του αλγορίθµου. 49

60 50

61 Κεφάλαιο 4 Μαθηµατική υποδοµή για τους κρυπτογραφικούς αλγόριθµους Σκοπός αυτού του κεφαλαίου είναι να παρουσιάσει µε συνοπτικό και απλό τρόπο, ορισµένες βασικές έννοιες της Θεωρίας Αριθµών που είναι απαραίτητες για την κατανόηση των βασικών αριθµητικών και µαθηµατικών αρχών στις οποίες στηρίζεται η κρυπτογραφία. ίνονται βασικοί ορισµοί όπως αυτοί της οµάδας, του δακτυλίου και του σώµατος, περιγράφονται συνοπτικά έννοιες όπως οι τετραγωνικές µορφές, τα σώµατα επέκτασης και τα φανταστικά τετραγωνικά σώµατα. Επίσης, δίνονται οι ορισµοί και ορισµένες από τις ιδιότητες των δικτυωµάτων και του σώµατος κλάσεως του Hilbert. Τα παραπάνω θα χρειαστούν για την πλήρη κατανόηση της Θεωρίας του Μιγαδικού Πολλαπλασιασµού στις ελλειπτικές καµπύλες, από την οποία τελικά προκύπτει µια πολύ αποδοτική µέθοδος για την γένεση κρυπτογραφικά ασφαλών ελλειπτικών καµπυλών, ένας τοµέας που αποτελεί το µεταίχµιο στα σύγχρονα κρυπτογραφικά συστήµατα. 4.1 Βασικοί Ορισµοί Πρώτοι Αριθµοί Ορισµός Ένας θετικός αριθµός p> 1 καλείται πρώτος (prime), αν οι µόνοι διαιρέτες του είναι οι ακέραιοι ±1 και ± p. Ένας θετικός ακέραιος n > 1 που δεν είναι πρώτος καλείται σύνθετος. Ένας πρώτος αριθµός που είναι διαιρέτης ενός ακεραίου m καλείται πρώτος διαιρέτης ή πρώτος παράγοντας του m. Προφανώς κάθε ακέραιος αριθµός έχει έναν τουλάχιστον πρώτο διαιρέτη. ύο ακέραιοι αριθµοί n, m ονοµάζονται πρώτοι µεταξύ τους (coprime) αν ο µέγιστος κοινός διαιρέτης τους είναι το 1 και θα συµβολίζουµε gcd(n, m) = 1. Σύµφωνα µε το θεµελιώδες 51

62 θεώρηµα της Αριθµητικής, κάθε φυσικός αριθµός α > 1 αναλύεται σε γινόµενο πρώτων παραγόντων κατά ένα και µόνο τρόπο, αν παραβλέψουµε την τάξη των παραγόντων στο γινόµενο. k1 k2 k n ηλαδή το α αναλύεται µοναδικά ως α = p 1 p2... pn όπου P i είναι πρώτοι αριθµοί και k i είναι η αντίστοιχη τάξη τους στο γινόµενο. Οι πρώτοι αριθµοί της µορφής 2 η 1 καλούνται πρώτοι αριθµοί του Mersenne. Για παράδειγµα, ο αριθµός 31 = είναι πρώτος αριθµός του Mersenne Οµάδες, ακτύλιοι και Σώµατα Έστω Ε ένα µη κενό σύνολο. Καλούµε πράξη επί του Ε µια απεικόνιση Ε x Ε Ε. Για παράδειγµα, η πρόσθεση και ο πολλαπλασιασµός είναι πράξεις επί του Ζ. Ορισµός Ένα ζεύγος (G, * ) όπου G είναι ένα µη κενό σύνολο και * µια πράξη * : G x G G, (x,y) > x * y καλείται οµάδα (group), αν η πράξη * έχει τις εξής ιδιότητες: 1. x * (y * z) = (x * y) * z για κάθε x, y, z G (προσεταιριστικός νόµος) 2. υπάρχει g G τέτοιο, ώστε για κάθε x G να ισχύει 3. για κάθε x G, υπάρχει x' G τέτοιο, ώστε x * g =x = g * x x * x' = g = x' * x To g είναι το µοναδικό στοιχείο που έχει την ιδιότητα (2), και καλείται ουδέτερο στοιχείο της οµάδας G. Για κάθε x G το στοιχείο x' είναι µοναδικό και καλείται συµµετρικό του x. Αν επιπλέον η πράξη * είναι αντιµεταθετική, δηλαδή έχει την ιδιότητα x * y = y * x, για κάθε x, y G, τότε η οµάδα G καλείται αντιµεταθετική ή αβελιανή (abelian). Συχνά συµβολίζουµε την πράξη * µιας οµάδας (G, * ) σαν πολλαπλασιασµό. Τότε η οµάδα καλείται πολλαπλασιαστική και γράφουµε xy αντί για x * y. Όταν η οµάδα G είναι αβελιανή, συχνά συµβολίζουµε την πράξη * και σαν πρόσθεση. Τότε η οµάδα καλείται προσθετική, οπότε γράφουµε x + y αντί για x * y. Ορισµός Ένας δακτύλιος (ring) είναι µια τριάδα (Α,+, ), που αποτελείται από ένα µη κενό σύνολο Α και από δύο πράξεις: µια πρόσθεση και έναν πολλαπλασιασµό έτσι ώστε να ισχύουν τα εξής: + : Α x Α A (x, y) x + y : A x Α A (x, y) xy 1. το ζεύγος (Α,+) είναι αβελιανή οµάδα 2. x(yz) = (xy)z για κάθε x, y, z Α 52

63 3. υπάρχει µονάδα, δηλαδή υπάρχει ένα στοιχείο 1 του Α τέτοιο, ώστε 1x = x = x1 x A 4. x(y + z) = xy + xz και (y + z)x = yx + zx, για κάθε x, y, z A. Το στοιχείο 1 είναι µοναδικό. Αν ισχύει xy = yx για κάθε x, y Α τότε ο δακτύλιος Α καλείται αντιµεταθετικός. Ένα στοιχείο α του δακτυλίου Α καλείται αντιστρέψιµο, αν υπάρχει α Α τέτοιο ώστε: αα = 1 = αα. To α είναι µονοσήµαντα ορισµένο, καλείται αντίστροφο του α, και συµβολίζεται µε α -1. Ορισµός Ένας αντιµεταθετικός δακτύλιος Α 0} καλείται σώµα (field) αν κάθε µη µηδενικό στοιχείο του είναι αντιστρέψιµο. Για παράδειγµα, ο δακτύλιος Q των ρητών αριθµών είναι σώµα, ενώ ο δακτύλιος Z δεν είναι. Αν υπάρχει ένας θετικός ακέραιος n για τον οποίο το αποτέλεσµα της πρόσθεσης του 1 στον εαυτό του n φορές να δίνει το 0 σε ένα σώµα F, τότε ο µικρότερος τέτοιος αριθµός n, καλείται χαρακτηριστική (characteristic) char(f) του σώµατος F. Οµοιοµορφισµός (homomorphism) είναι µια συνάρτηση φ : Α Β η οποία διατηρεί τις πράξεις της πρόσθεσης και του πολλαπλασιασµού, δηλαδή φ(α+b) = φ(α)+φ(αb) και φ(ab) = φ(α)φ(b). Ενδοµορφισµός (endomorphism) είναι ο οµοιοµορφισµός φ : Α Α και ισοµορφισµός (isomorphism) είναι ο αντιστρέψιµος οµοιοµορφισµός Πολυώνυµα Έστω f(x) = α n x n + α n - 1 x n α ο ένα πολυώνυµο. Ο βαθµός του πολυωνύµου είναι n και οι συντελεστές του είναι τα α i. Αν όλοι οι συντελεστές του πολυωνύµου ανήκουν σε ένα σώµα, δακτύλιο ή οµάδα Α τότε θα συµβολίζουµε f(x) A[x]. Για παράδειγµα, αν όλοι οι συντελεστές του πολυωνύµου είναι ακέραιοι, τότε f(x) Z [x]. Αν α n = 1 τότε το πολυώνυµο καλείται κανονικό (monic). Τα πολυώνυµα που µπορούν να γραφούν σαν γινόµενο δύο άλλων πολυωνύµων µε µικρότερο βαθµό ονοµάζονται αναγώγιµα (reducible). ιαφορετικά ονοµάζονται ανάγωγα (irreducible). Ένα ανάγωγο πολυώνυµο f(x) Α[x] προφανώς δεν έχει ρίζες στο Α. Απλή ρίζα ενός πολυωνύµου είναι αυτή που εµφανίζεται µία φορά µόνο. Με άλλα λόγια, δεν είναι κοινή ρίζα της παραγώγου του πολυωνύµου και του πολυωνύµου. Λέµε ότι ένα πολυώνυµο βαθµού n διασπάται πλήρως (splits completely) σε ένα σώµα Α αν έχει σε αυτό n απλές ρίζες. Ορισµός H διακρίνουσα (discriminant) (f(x)) ενός πολυωνύµου f(x) είναι ίση µε 53

64 n n(n 1) / 2 ( f ( x) ) = ( 1) ( x x ) j k j k όπου n είναι ο βαθµός του πολυωνύµου και x 1,..., x n είναι οι ρίζες του. 4.2 Ισοδυναµίες και Ισοτιµίες Έστω Σ ένα µη κενό σύνολο. Ένα υποσύνολο S του Σ x Σ καλείται σχέση ισοδυναµίας, αν έχει τις εξής ιδιότητες : 1. (x, x) S για κάθε x Σ (ανακλαστική) 2. αν (x, y) S (y, x) S (συµµετρική) 3. αν (x, y) S και (y,z) S (x,z) S (µεταβατική). ύο στοιχεία που συνδέονται µε την σχέση ισοδυναµίας S λέγονται ισοδύναµα ως προς την σχέση S. Καλείται κλάση ισοδυναµίας (equivalence class) ενός στοιχείου α Σ και συµβολίζεται µε [α], το σύνολο [α] = x Σ (x, α) S}. Σύνολο πηλίκο του Σ µε την S καλείται το σύνολο Σ που έχει για στοιχεία του τις κλάσεις ισοδυναµίας της S και συµβολίζεται ως. S Ορισµός Έστω n ένας θετικός ακέραιος. Ο ακέραιος α καλείται ισότιµος (congruent) µε τον ακέραιο b modulo n (ή κατά µετρό n), συµβολικά, α b (mod n), αν n α b, δηλαδή αν η ποσότητα α b διαιρείται µε το n ή διαφορετικά αν α = kn + b για κάποιο ακέραιο αριθµό k. Αν n α b, τότε ο α καλείται ανισότιµος µε τον b modulo n, συµβολικά, α b (mod n). Η σχέση ισοτιµίας είναι µία σχέση ισοδυναµίας στο, δηλαδή έχουµε 1. α α (mod n) για κάθε α Ζ 2. α b (mod n) b α (mod n) 3. αν α b (mod n) και b c (mod n) α c (mod n). Για κάθε α Ζ, η κλάση ισοδυναµίας του α συµβολίζεται µε α και καλείται κλάση ισοτιµίας ή κλάση υπολοίπων του α (mod n). ηλαδή α = x Ζ x α (mod n)}. Το σύνολο των κλάσεων ισοδυναµίας (mod n) συµβολίζεται µε Ζ n. To σύνολο Ζ n αποτελεί αντιµεταθετικό δακτύλιο, αν το εφοδιάσουµε µε τις πράξεις της πρόσθεσης και του πολλαπλασιασµού: α + b = α + b 54

65 α * b = α * b Ο δακτύλιος Ζ n είναι σώµα, αν και µόνον αν, ο φυσικός n είναι πρώτος. Το πλήθος των στοιχείων του Ζ n είναι n και οι αριθµοί 0,1,...,n 1 αποτελούν ένα πλήρες σύστηµα αντιπροσώπων των κλάσεων υπολοίπων modulo n, αφού κάθε ένας από αυτούς αντιστοιχεί σε µία διαφορετική κλάση ισοδυναµίας. Το πεπερασµένο σώµα που αποτελείται από τους αριθµούς 0,1,..., p 1, µε p πρώτο αριθµό, θα συµβολίζεται µε F p, και καλείται πρώτο πεπερασµένο σώµα. Αν n > 1 είναι ένας φυσικός αριθµός και α ένας ακέραιος τέτοιος ώστε gcd(α, n) = 1, τότε ο ελάχιστος θετικός ακέραιος r, µε την ιδιότητα καλείται τάξη (order) του α (mod n). α r 1 (mod n) Η πράξη modulo γενικεύεται και στην περίπτωση των πολυωνύµων. ηλαδή, ένα πολυώνυµο p(x) είναι ισότιµο µε το πολυώνυµο r(x) (mod m(x)), p(x) r(x) (mod m(x)), αν ισχύει p(x) = k(x)m(x) + r(x) για κάποιο πολυώνυµο k(x). Αν ο βαθµός του πολυωνύµου m(x) είναι n, τότε ο βαθµός του πολυωνύµου r(x) δεν µπορεί να είναι µεγαλύτερος από n Τετραγωνικά Υπόλοιπα Ορισµός Έστω η ισοτιµία x 2 α (mod n) όπου n φυσικός αριθµός και α ακέραιος αριθµός πρώτος προς τον n. Τότε ο α θα καλείται τετραγωνικό υπόλοιπο (quadratic residue) modulo n. Για κάθε περιττό πρώτο αριθµό p υπάρχουν ακριβώς ο αριθµός α είναι τετραγωνικό υπόλοιπο modulo p, τότε ισχύει p 1 τετραγωνικά υπόλοιπα modulo p. Αν 2 p 1 α 2 1 (mod p), ενώ αν ο α δεν είναι τετραγωνικό υπόλοιπο modulo p, τότε ισχύει p 1 α 2 1 (mod p), Οι ισοτιµίες αυτές µπορούν να χρησιµοποιηθούν για να ελεγχθεί εάν ένας αριθµός είναι τετραγωνικό υπόλοιπο ή όχι. 55

66 Το σύµβολο του Legendre α p ακέραιος αριθµός πρώτος προς τον p, ορίζεται ως εξής:, όπου p είναι ένας περιττός πρώτος αριθµός και α ένας α p α p 1 2 (mod p), και Το σύµβολο του Jacobi αποτελεί µια γενίκευση του συµβόλου του Legendre. Αν b είναι ένας περιττός ακέραιος αριθµός, α ένας ακέραιος αριθµός πρώτος προς τον b και b = p 1 p 2...p k η ανάλυση του b σε γινόµενο πρώτων αριθµών, τότε το σύµβολο του Jacobi εξής: α α α α = b... p1 p2 pk α b ορίζεται ως Το σύµβολο του Kronecker αποτελεί µια επέκταση του συµβόλου του Jacobi α b σε όλους τους ακεραίους. Θα συµβολίζεται επίσης ως α b. Ο ορισµός του συµβόλου είναι ίδιος µε αυτόν του συµβόλου του Jacobi, και επιπλέον ισχύουν οι εξής ορισµοί για b 1, 2}: α -1 1 = 1 για α < 0 για α > 0 και α 2 = 0 για α ζυγ ό 1 για α περιττ ό, α ± 1 (mod 1για α περιττ ό, α ± 3 (mod 8) 8) 56

67 4.4 Τετραγωνικές Μορφές Ορισµός Ένα πολυώνυµο της µορφής F m 1 cijx ix j i,j= 1 ( x,...,x m ) = όπου οι συντελεστές c ij είναι ακέραιοι, καλείται ακέραια τετραγωνική µορφή (quadratic form). Αν m = 2 τότε η τετραγωνική µορφή F καλείται δυαδική. Ένας ακέραιος n λέµε ότι µπορεί να αναπαρασταθεί από την ακέραια τετραγωνική µορφή F αν υπάρχουν ακέραιοι z 1,...,z m έτσι ώστε n = F(z 1,..., z m ). Εξισώσεις της µορφής f(x 1,..., x m ) = 0, όπου f(x 1,..., x m ) είναι ένα πολυώνυµο m µεταβλητών µε ακέραιους συντελεστές καλούνται ιοφαντικές εξισώσεις (Diophantine equations). Οι εξισώσεις αυτές πήραν το όνοµα τους από τον Έλληνα µαθηµατικό ιόφαντο, ο οποίος έζησε τον τρίτο αιώνα µ.χ. και ήταν ο πρώτος που µελέτησε συστηµατικά εξισώσεις τέτοιας µορφής. Έστω f(x, y) = αx 2 + bxy + cy 2 µια ακέραια δυαδική τετραγωνική µορφή. Η τριάδα (α, b, c) µπορεί εναλλακτικά να συµβολίσει αυτή την τετραγωνική µορφή και ο µέγιστος κοινός διαιρέτης των τριών αυτών αριθµών καλείται διαιρέτης της f(x,y). Αν gcd(α,b,c)=1, τότε η µορφή ονοµάζεται πρωτογενής (primitive). Η διακρίνουσα (discriminant) της µορφής f(x,y) είναι ο ακέραιος D = b 2 4αc. Εύκολα διαπιστώνεται ότι D 0 (mod 4), αν ο b είναι άρτιος, και D 1 (mod 4), αν ο b είναι περιττός. Για κάθε ακέραιο D, υπάρχει µια απλή τετραγωνική µορφή µε διακρίνουσα D που καλείται κύρια µορφή (principal form). Αυτή είναι ίση µε x Dy 2, αν D 0 (mod 4) και αντιστοιχεί στην τριάδα (mod 4) και αντιστοιχεί στην τριάδα D 1,0, 1 ενώ είναι ίση µε x y+ (1-D)y 2, ανd D 1,1, 4 Από την σχέση f(x,y) = αx 2 + bxy + cy 2 προκύπτει ότι 4αf(x,y) = (2αx + by) 2 Dy 2. Συνεπώς αν D < 0, τότε 4αf(x, y) 0. Αν α >0, τότε f(x, y) 0 για x, y Z και f(x, y) = 0 αν και µόνο αν, χ = y = 0. Σε αυτή την περίπτωση η µορφή f(x,y) καλείται θετικά ορισµένη. Αντίθετα, αν α < Ο ισχύει f(x,y) < 0 για x,y Z και η µορφή καλείται αρνητικά ορισµένη. Αν D > 0, τότε η µορφή f(x : y) µπορεί να πάρει και θετικές και αρνητικές τιµές, και καλείται αόριστη. 57

68 Έστω Α ένα µητρώο 2x2. Στο Α αντιστοιχίζεται ένας ακέραιος µετασχηµατισµός µ Α µ Α : Z x Z Z x Z µε µ A (x,y) = [x,y]a για (x,y) Z x Z όπου [x,y] Α είναι το γινόµενο του πίνακα γραµµή [x,y] επί τον Α. ύο τετραγωνικές µορφές f(x,y) = αx 2 + bxy + αy 2 και g(x, y) = α'x 2 + b'xy +c'y 2 είναι ισοδύναµες αν υπάρχει ένας ακέραιος µετασχηµατισµός µ Α, µε Α = ±1 ( A η ορίζουσα του Α), έτσι ώστε f(µ A (x,y))= g(x,y). Πιο συγκεκριµένα, η τετραγωνική µορφή f(x,y) είναι ισοδύναµη µε την g(x,y) αν και µόνο αν υπάρχει πίνακας Α µε Α = ±1, έτσι ώστε AUA T = V, α b/2 όπου Α T είναι ο ανάστροφος του A, U = b/2 c και V= α b /2 µορφές παριστάνουν τους ίδιους ακεραίους και έχουν την ίδια διακρίνουσα. Μια θετικά ορισµένη τετραγωνική µορφή f(x, y) = αx 2 + bxy+cy 2 b /2 c. ύο ισοδύναµες καλείται αναγµένη (reduced form) αν ισχύει 0 b α c. Μάλιστα κάθε θετικά ορισµένη ακέραια µορφή είναι ισοδύναµη ακριβώς µε µια αναγµένη µορφή. Πρόταση Το πλήθος των αναγµένων µορφών f(x, y) = αx 2 +bxy +cy 2 µε διακρίνουσα D < 0 είναι πεπερασµένο και ισχύει η ανισότητα - D α. 3 Απόδειξη. Έστω f(x, y) = αx 2 +bxy+cy 2 µια αναγµένη µορφή µε διακρίνουσα D = b 2 4αc <0. Ισχύει ότι D = 4αc b 2 4αc αc=3αc 3c απ όπου 0 b α c D.Συνεπώς υπάρχει 3 πεπερασµένο πλήθος αναγµένων µορφών µε διακρίνουσα D. Επίσης ισχύει D = 4αc b 2 4α 2 α 2 = 3α 2, οπότε: - D α. 3 Έστω f µία πρωτογενής τετραγωνική µορφή µε διακρίνουσα D. Τότε υπάρχει µια ισοδύναµη τετραγωνική µορφή (α, b, c) για την οποία ισχύουν οι ιδιότητες: 1. α N,b Z, c = b 2 D Ζ και gcd(α, b, c) = 1. 4α 2. b α c και b 0 αν είτε b = α ή α = c. Η τετραγωνική µορφή (α, b, c) καλείται αναγµένη αντιπρόσωπος της κλάσης ισοδυναµίας της µορφής f. 58

69 4.5 Σώµατα Επέκτασης Βασικές Έννοιες Ορισµός Ένα σώµα Κ θα λέγεται σώµα επέκτασης (extension field) ή απλά επέκταση ενός άλλου σώµατος F, αν F Κ. Στην περίπτωση αυτή το F λέγεται υπόσωµα (subfield) του Κ. Με F Κ ή K/F ή [Κ : F] θα δηλώνεται ότι το σώµα Κ είναι σώµα επέκτασης υπέρ το F. Για παράδειγµα, οι µιγαδικοί αριθµοί αποτελούν σώµα επέκτασης των πραγµατικών αριθµών, και οι πραγµατικοί αριθµοί αποτελούν σώµα επέκτασης των ρητών αριθµών. Επεκτάσεις Κ του σώµατος Q των ρητών αριθµών, µπορούν να κατασκευαστούν εύκολα αν προσθέσουµε σε αυτό έναν αλγεβρικό αριθµό θ. Αλγεβρικός καλείται ένας αριθµός αν είναι ρίζα ενός πολυωνύµου µε ρητούς συντελεστές. Η επέκταση θα συµβολίζεται ως Κ = Q(θ). Τα στοιχεία α της επέκτασης Κ έχουν τότε την µορφή: α =α ο +α 1 θ+ +α n-1 θ n-1 όπου α i Q για i =0,..., n 1 και n είναι ο βαθµός του ανάγωγου πολυωνύµου του θ. To n καλείται επίσης βαθµός της επέκτασης (extension degree) Κ. Τα [1,θ,..., θ n-1 ] αποτελούν µια βάση της επέκτασης Κ γιατί κάθε αριθµός που ανήκει στην επέκταση µπορεί να κατασκευαστεί από τους n αυτούς αριθµούς Το Σώµα F p m (σώµα Galois) To σώµα F m p σώµατα της µορφής F m p Κάθε στοιχείο s του F m p αποτελεί επέκταση του σώµατος F p και ο βαθµός της επέκτασης είναι m. Τα, µε p > 1 και m > 0, ονοµάζονται και σώµατα Galois (Galois fields). αναπαρίσταται ως εξής: s m 1 = α i= 0 i x i = α o + α x α 1 m-1 x m 1 όπου α i F p. Η πρόσθεση (αφαίρεση) δύο στοιχείων s και q του F p m πραγµατοποιείται µε την πρόσθεση (αφαίρεση) των συντελεστών των αντίστοιχων πολυωνύµων στο F p (δηλαδή modulo p). Πιο απλά s ± q = m 1 i= 0 α m 1 m 1 i i i x ± bix = i i x i= 0 i= 0 i ( α + b ) (mod p) όπου α i και b i είναι οι συντελεστές των πολυωνύµων s και q αντίστοιχα. Για τον υπολογισµό του πολλαπλασιασµού δύο στοιχείων του F p m χρειάζεται να οριστεί ένα πολυώνυµο αναγωγής (reduction polynomial) βαθµού m. Το πολυώνυµο αυτό πρέπει να είναι ανάγωγο στο F p. Έστω λοιπόν s, q F m p. Το γινόµενο τους u = sq υπολογίζεται σε δύο βήµατα: 59

70 1. Πολυωνυµικός πολλαπλασιασµός 2. Αναγωγή στο F m p m 1 m 1 2m 2 i i i u = sq = α = ix bix cix. i= 0 i= 0 i= 0. Το πολυώνυµο u' που προκύπτει στο πρώτο βήµα έχει βαθµό 2m 2. Το τελικό αποτέλεσµα όµως του πολλαπλασιασµού των στοιχείων s και q πρέπει να ανήκει στο F p m, δηλαδή να είναι ένα πολυώνυµο βαθµού m 1. Για αυτό το σκοπό χρειάζεται αναγωγή στο F p m µε χρήση του πολυωνύµου αναγωγής. Έστω ότι το πολυώνυµο αυτό είναι το ( ) = p x = m i 0 p i x i. Εποµένως: u = u' (mod p(x)) = 2m 2 m m 1 i i i c ix mod pix = cix. i= 0 i= 0 i= 0 Συνήθως ως πολυώνυµο αναγωγής χρησιµοποιείται κάποιο της µορφής p(x)= x m ω (όπου ω ένα τυχαίο στοιχείο του σώµατος F p ) γιατί έτσι η αναγωγή γίνεται πιο αποδοτικά. Η πράξη της αντιστροφής ενός στοιχείου στο F p m είναι πολύ πιο χρονοβόρα και πολύπλοκη από αυτή του πολλαπλασιασµού και θα πρέπει να αποφεύγεται όσο γίνεται όταν χρησιµοποιείται το σώµα επέκτασης F m p Η Οµάδα Galois Έστω Κ µια επέκταση ενός σώµατος F. Οι αυτοµορφισµοί (automorphisms) του Κ υπέρ του F είναι οι συναρτήσεις σ: Κ Κ που διατηρούν τις πράξεις της πρόσθεσης και του πολλαπλασιασµού: σ(α+b)= σ(α) + σ(b) και σ(αb) = σ(α)σ(b). Για παράδειγµα, η µιγαδική συζυγία είναι αυτοµορφισµός του σώµατος C των µιγαδικών αριθµών. Έστω α = α bi ο µιγαδικός συζυγής του α = α + bi, α, b R. Τότε: 0 = 0 1 = 1 α + b = α + b αb = αb 60

71 Το σύνολο των αυτοµορφισµών σ του Κ υπέρ το F, που επιπλέον ικανοποιούν την ταυτοτική απεικόνιση σ (z) = z για κάθε z στο F, ονοµάζεται οµάδα Galois (Galois group) της επέκτασης Κ και θα συµβολίζεται µε Gal(K/F). Με άλλα λόγια, κάθε στοιχείο της οµάδας Galois µιας επέκτασης είναι ένας αυτοµορφισµός που κρατάει σταθερό το κάτω σώµα. Για παράδειγµα, η οµάδα Galois της επέκτασης Q(i) πάνω στο Q είναι τάξης δύο και τα δύο της στοιχεία είναι η ταυτοτική απεικόνιση και η µιγαδική συζυγία. Αν το σώµα που αποτελείται από τα στοιχεία τα οποία µένουν σταθερά από την οµάδα Galois K/F είναι ακριβώς ίσο µε το F, τότε η επέκταση ονοµάζεται επέκταση Galois (Galois extension). 4.6 Αλγεβρικά Σώµατα Αριθµών Βασικοί Ορισµοί Όπως προαναφέρθηκε, ένας αριθµός καλείται αλγεβρικός (algebraic), αν είναι ρίζα ενός πολυωνύµου µε ρητούς συντελεστές. Το σύνολο των αλγεβρικών αριθµών εποµένως είναι µια επέκταση του σώµατος Q των ρητών αριθµών. Αν ένας αλγεβρικός αριθµός είναι ρίζα ενός κανονικού πολυωνύµου µε ακέραιους συντελεστές, θα καλείται ακέραιος αλγεβρικός. Κάθε αλγεβρικός αριθµός µπορεί να παρασταθεί σαν πηλίκο ενός ακέραιου αλγεβρικού αριθµού δια ενός φυσικού αριθµού. Έστω α. ένας αλγεβρικός αριθµός. Υπάρχει συνεπώς ένα πολυώνυµο f(x) 0 µε ρητούς συντελεστές, που έχει το α ως ρίζα. Αν το f(x) είναι κανονικό και ανάγωγο, τότε καλείται χαρακτηριστικό πολυώνυµο (characteristic polynomial) του α. Αν προστεθεί ένας αλγεβρικός αριθµός θ στο σώµα Q προκύπτει µια επέκταση Κ=Q(θ). Κάθε πεπερασµένη επέκταση Κ του σώµατος Q των ρητών αριθµών καλείται αλγεβρικό σώµα αριθµών (algebraic number field). To σύνολο των ακέραιων αλγεβρικών αριθµών µιας επέκτασης Κ αποτελεί δακτύλιο και συµβολίζεται µε Ο K. Ένας ακέραιος αλγεβρικός αριθµός ενός αλγεβρικού σώµατος αριθµών Κ καλείται πρώτος αν δεν είναι ίσος µε την µονάδα και κάθε ανάλυση αυτού σε γινόµενο δύο ακέραιων αλγεβρικών αριθµών του Κ ισχύει µόνο αν ένας από τους δύο παράγοντες είναι ίσος µε τη µονάδα. Ορισµός Ένα υποσύνολο Α του αλγεβρικού σώµατος Κ θα καλείται ιδεώδες (ideal) του Κ, αν πληρούνται οι εξής ιδιότητας: 1. α 1 Α, α 2 Α α 1 + α 2 Α 2. α Α, λ O K λα Α 3. υπάρχει δ 0 στο Κ τέτοιο ώστε να ισχύει δ A O K Το άθροισµα και το γινόµενο δύο ιδεωδών Α, Β του Κ ορίζονται ως εξής: a + b a A b B} A+ B =, και AB αb α Α,b B} = 61

72 Τα σύνολα A + Β και ΑΒ είναι επίσης ιδεώδη του Κ. Αν α είναι ένας αριθµός του αλγεβρικού σώµατος αριθµών Κ, τότε το σύνολο (α) = αο K λα λ Ο Κ } είναι ένα ιδεώδες του Κ και καλείται κύριο ιδεώδες (principal ideal) του Κ παραγόµενο από τον αλγεβρικό αριθµό ά. Αν ένα ιδεώδες περιέχεται στον δακτύλιο Ο Κ των ακέραιων αλγεβρικών του Κ, τότε καλείται ακέραιο ιδεώδες του Κ. ιαφορετικά καλείται κλασµατικό ιδεώδες του Κ. Ένα ιδεώδες Ρ του αλγεβρικού σώµατος Κ καλείται πρώτο (prime ideal), αν είναι ακέραιο, διάφορο του µοναδιαίου ιδεώδους (1) =Ο Κ και ισχύει αb Ρ, α Ο Κ α P, ή b P. Πρόταση Κάθε πρώτο ιδεώδες περιέχει ακριβώς έναν πρώτο αριθµό p και µπορεί να συµβολιστεί ως pο K ή (p). Ισχύει επίσης ότι κάθε ακέραιο ιδεώδες µπορεί να αναλυθεί µονοσήµαντα σε γινόµενο πρώτων ιδεωδών. Έστω τώρα Α ένα ακέραιο ιδεώδες του αλγεβρικού σώµατος αριθµών Κ. Το Α ορίζει στον δακτύλιο O K µια σχέση ισοδυναµίας ως εξής: α b (mod A) α b Α όπου α, b Α. Η σχέση αυτή χωρίζει τον δακτύλιο Ο Κ σε κλάσεις ισοδυναµίας, το σύνολο των οποίων συµβολίζεται µε τότε το K O K. Αν το Α είναι πρώτο ιδεώδες που περιέχει τον πρώτο αριθµό p, A O K O = K είναι ένα πεπερασµένο σώµα. A po ύο ιδεώδη I και J είναι ισοδύναµα αν υπάρχει α Κ* τέτοιο ώστε J = αi. Ορισµός Το σύνολο των κλάσεων ισοδυναµίας του αλγεβρικού σώµατος Κ ονοµάζεται οµάδα κλάσεως (class group) και συµβολίζεται µε Cl(K). Η οµάδα αυτή είναι πεπερασµένη και αβελιανή. Το πλήθος των στοιχείων της ονοµάζεται αριθµός κλάσεως (class number) και συµβολίζεται µε h[k] ή h Τετραγωνικά Σώµατα Τα τετραγωνικά σώµατα αριθµών αποτελούν µια ειδική κατηγορία των αλγεβρικών σωµάτων αριθµών, Ορισµός Ένα αλγεβρικό σώµα αριθµών Κ καλείται τετραγωνικό σώµα αριθµών (quadratic number field) αν ο βαθµός της επέκτασης K/Q είναι ίσος µε 2. Έστω θ ένας αλγεβρικός αριθµός του τετραγωνικού σώµατος αριθµών Κ τέτοιος ώστε Κ = Q (θ). Τότε το ανάγωγο πολυώνυµο του θ (που ορίζει την επέκταση) είναι της µορφής x 2 +αx+b. Χωρίς περιορισµό της γενικότητας, µπορούµε να υποθέσουµε ότι α = 0 και ότι ο b δεν διαιρείται µε το τετράγωνο ενός ρητού αριθµού. 62

73 Αν Κ είναι ένα τετραγωνικό σώµα αριθµών, τότε υπάρχει ένας ακέραιος αριθµός d 1, ο οποίος δεν διαιρείται µε το τετράγωνο ενός πρώτου αριθµού, τέτοιος ώστε να ισχύει Κ=Q ( d ). Στην περίπτωση αυτή το ανάγωγο πολυώνυµο είναι ίσο µε x 2 -d. Τα στοιχεία α του Κ=Q ( d ) έχουν την µορφή α = α+b d. Αν d > 0 τότε τα στοιχεία του Κ είναι πραγµατικοί αριθµοί. Αν d < 0 είναι µιγαδικοί και στην περίπτωση αυτή το Κ λέγεται φανταστικό τετραγωνικό σώµα αριθµών (imaginary quadratic field). Η επέκταση K/Q είναι επέκταση Galois. Η οµάδα Galois της επέκτασης αυτής είναι η G = 1,σ}, όπου το σ παριστάνει τον αυτοµορφισµό του Κ: α+b d α b d. Για κάθε αριθµό α+b d του Κ, ορίζονται δύο τιµές: το ίχνος (trace) S K (α) και η νόρµα (norm) Ν Κ (α). Το ίχνος είναι ίσο µε S K (α) = 2α και η νόρµα µε Ν Κ (α) = α 2 db 2. Αν για έναν αλγεβρικό αριθµό το ίχνος και η νόρµα είναι ακέραιοι αριθµοί, τότε ο αριθµός αυτός είναι ακέραιος αλγεβρικός του Κ = Q ( d ). Η διακρίνουσα (discriminant) D του Κ ορίζεται ως εξής: d D = 4d για d 1 (mod 4) για d 2,3 (mod 4) Ορισµός Ένας ακέραιος D καλείται θεµελιώδης διακρίνουσα (fundamental discriminant), αν D είναι η διακρίνονσα ενός τετραγωνικού σώµατος αριθµών. Με άλλα λόγια και σύµφωνα µε την παραπάνω εξίσωση, ο ακέραιος D καλείται θεµελιώδης διακρίνουσα αν D 1 και είτε D 1 (mod 4) και δεν διαιρείται µε το τετράγωνο ενός ακέραιου αριθµού ή D = 0 (mod 4), το D/4 δεν διαιρείται µε το τετράγωνο ενός ακέραιου αριθµού και D/4 = 2,3 (mod 4). Ο αριθµός ω = 1+ 2 d d για d 1(mode 4) για d 2,3(mode 4) του τετραγωνικού σώµατος αριθµών Κ= Q ( d ) είναι ακέραιος αλγεβρικός και µαζί µε την µονάδα αποτελούν µια βάση ακεραιότητας του Κ. ηλαδή, κάθε ακέραιος αλγεβρικός α του Κ, µπορεί να γραφτεί στη µορφή α = α α 2 ω µε α 1,α 2 Z. Ορισµός Η νόρµα ενός αριθµού α του Κ= Q ( d ) είναι ίση µε: N K ( α) x = αα = x d + xy + y 4 2 dy 2 για d 1 (mod 4) για d 2,3 (mod 4) 63

74 και το ίχνος του είναι: S K ( α) 2x + y = α + α = 2x για d 1 (mod 4) για d 2,3 (mod 4) 1+ d όπου α = x+y 2 αν d 1 (mod 4) και α= x+y d αν d 2,3 (mod 4). Ένας τυχαίος πρώτος αριθµός p αναλύεται σε γινόµενο δύο πρώτων ιδεωδών του Κ=Q ( d ) βαθµού 1 ή στο τετράγωνο ενός πρώτου ιδεώδους του Κ βαθµού 1 ή σε ένα πρώτο ιδεώδες. Πιο συγκεκριµένα ισχύει το ακόλουθο θεώρηµα: Θεώρηµα Έστω ένα φανταστικό τετραγωνικό σώµα αριθµών Q( d ) και ένας πρώτος αριθµός p 2. Τότε, ισχύουν τα εξής: d = p 1. αν 1 d p τότε (p) = P 1 P 2 2. αν = 1 τότε (p) = P d = p 3. αν 0 τότε (p) = P 2 όπου τα Ρ, Ρ 1,Ρ 2 είναι τρία πρώτα ιδεώδη του Κ. Μάλιστα, για την πρώτη περίπτωση του θεωρήµατος λέµε ότι το p διασπάται (splits) στο Κ. Η έννοια της νόρµας υπάρχει και στα ιδεώδη. Αν α Ο K, τότε Ν Κ (αο Κ ) = Ν Κ (α). Συγκεκριµένα, για d = p έναν πρώτο αριθµό p, ισχύει Ν K (pο Κ )= Ρ 2 Έτσι, αν 1 Θεώρηµα, προκύπτει ότι Ν K (p)= Ν Κ (Ρ 1 Ρ 2 )= Ν Κ (Ρ 1 )Ν Κ (Ρ 2 ) = p 2 και σύµφωνα µε το προηγούµενο οπότε Ν Κ (Ρ 1 ) = Ν Κ (Ρ 2 )=p. Επιπλέον αν το P 1 (ή το Ρ 2 ) είναι κύριο ιδεώδες, δηλαδή Ρ 1 = γο Κ για κάποιον ακέραιο αλγεβρικό αριθµό γ, τότε p = Ν Κ (γ). ηλαδή το p είναι ίσο µε τη νόρµα του ακέραιου αλγεβρικού αριθµού γ. Θεώρηµα Η εξίσωση p = Ν Κ (γ) έχει λύση στον δακτύλιο O K αν και µόνο αν το p d = p διασπάται σε δύο κύρια ιδεώδη στο Κ ή µε άλλα λόγια αν 1. 64

75 Πρόταση Ένας πρώτος αριθµός p είναι ίσος µε τη νόρµα ενός ακέραιου αλγεβρικού γ ντο σώµα Q( d ), δηλαδή p= Ν Κ (γ), αν και µόνο αν η εξίσωση 4p = u 2 Dυ 2, όπου D η διακρίνουσα του σώµατος Κ, έχει µια (τουλάχιστον) ακέραια λύση u, υ. Τότε ίσχυει επίσης S K (γ) = u. Τα στοιχεία της οµάδας κλάσεως Cl(R) ενός υποδακτυλίου R του δακτυλίου O K ενός αλγεβρικού σώµατος Κ=Q ( d ) έχουν τη µορφή αρ(ο Κ ), όπου α είναι ένα κλασµατικό ιδεώδες του O K και Ρ(Ο Κ ) είναι το σύνολο όλων των κύριων και κλασµατικών ιδεωδών του ΚQ ( d ). Κάθε ιδεώδες α είναι ισοδύναµο µε ένα ιδεώδες b της µορφής b + D b + D, = m + n : m,n Z 2α 2α 1. Ισχύει επίσης α Ν, b Z, c = b 2 d 2α Z, gcd(α,b,c)= 1, b α c και b 0 αν είτε b = α ή α = c. Γίνεται κατανοητό εποµένως ότι κάθε στοιχείο της οµάδας κλάσεως Cl(R) αντιστοιχεί σε ένα ιδεώδες, το οποίο µπορεί να περιγραφεί από µία αναγµένη µορφή (α, b, c) που ικανοποιεί τις παραπάνω συνθήκες. Ο αριθµός κλάσεως h µπορεί να υπολογιστεί µέσω των µορφών αυτών, και είναι ίσος µε το πλήθος τους. 4.7 ικτυώµατα Η έννοια των δικτυωµάτων (lattices) σχετίζεται άµεσα µε την θεωρία του µιγαδικού πολλαπλασιασµού και τις ελλειπτικές καµπύλες. Αυτό θα φανεί πολύ καθαρά στο επόµενο κεφάλαιο, όπου θα δειχθεί ότι οι ελλειπτικές καµπύλες που ορίζονται πάνω στους µιγαδικούς αριθµούς και τα δικτυώµατα, αποτελούν δύο όψεις του ίδιου νοµίσµατος. Ορισµός Ένα δικτύωµα L είναι το σύνολο [ω 1, ω 2 = αω 1 + βω 2 α,β Z} όπου ω 1,ω 2 C (δηλαδή είναι µιγαδικοί) και είναι γραµµικά ανεξάρτητοι στο σύνολο R των πραγµατικών αριθµών. ύο δικτυώµατα L και L' στο C είναι γραµµικά ισοδύναµα, αν υπάρχει ένας µη µηδενικός µιγαδικός αριθµός λ C τέτοιος ώστε λl = L'. Με λl συµβολίζεται ο πολλαπλασιασµός όλων των στοιχείων του δικτυώµατος L µε τον µιγαδικό αριθµό λ. ω ω 2 Πρόταση Έστω L = [ω 1,ω 2 ] ένα δικτύωµα στο C µε Ιm >

76 ηλαδή το φανταστικό µέρος του µιγαδικού αριθµού είναι θετικό. Τότε το L είναι γραµµικά ω2 ισοδύναµο µε ένα δικτύωµα L =[1,τ]στο C µε τ = H όπου H = µ C : Ιm(µ) > 0}. ω Έστω L ένα δικτύωµα στο C. Ορίζονται οι ποσότητες: g 2 ( L) = 60 1 ω L\ } 0 1 ω 4 και g 3 ( L) = 140 ω L\ } 0 1 ω 6 Η διακρίνουσα του δικτυώµατος ορίζεται ως (L)= g 3 2 (L) 27 2 g 3 (L) Μια σηµαντική ποσότητα είναι η j αναλλοίωτη (j-invariant) που ορίζεται ως ( L) j 12 3 g 2 ( L) ( L) 3 =. Αν L και L' είναι δύο γραµµικά ισοδύναµα δικτυώµατα, τότε j(l) = j(l'). Επίσης, αν L = [1,τ] τότε συµβολίζουµε µε j(τ) και (τ) τα j(l) και (L), αντίστοιχα. Η συνάρτηση j(τ), για τ H, υπολογίζεται αποδοτικά µέσω της η-συνάρτησης τον Dedekind ως εξής: () τ j ( 256θ( τ) + 1) θ( τ) 3 = (4.1) όπου θ τ) = ( 2τ) () τ (, (τ) = η(τ) 24 και 1 24 η( τ) = q 1+, (4.2) n 1 n n(3n 2 n(3n 2 ( 1) ( q 1) / + q 1) / ) όπου 2π q = e -1τ 66

77 Ένας άλλος ορισµός προκύπτει µέσω ενός q-αναπτύγµατος (q-expansion): 1 (τ) = + q n j c q n, (4.3) n= 1 όπου οι συντελεστές c n είναι ακέραιοι αριθµοί που µεγαλώνουν ταχύτατα όσο µεγαλώνει και το η. Πιο συγκεκριµένα, c n ~ e 4π 2n n 3 4 καθώς n. Για το λόγο αυτό, η µορφή αυτή δεν συνίσταται για τον υπολογισµό της j-αναλλοίωτης. Όπως θα φανεί και στο επόµενο κεφάλαιο, η σχέση των δικτυωµάτων και των ελλειπτικών καµπυλών που ορίζονται στους µιγαδικούς, οφείλεται στην p- συνάρτηση του Weierstraβ. Η συνάρτηση αυτή σχετίζεται µε ένα δικτύωµα L µε τον εξής τρόπο: ( L;z) p( z) 1 p = (4.4) z ω L\ } 0 ω 1 ( z - ω) Η πρώτη παράγωγος της συνάρτησης είναι ίση µε p () z = 2 3 : ω L\ }( 0 z - ω) 1 1 Ισχύει επίσης η εξίσωση: 2 3 p' ( z) = 4 p( z) g 2 ( L) p( z) g3( L) (4.5) Από την εξίσωση αυτή προκύπτει τελικά η άµεση σχέση των δικτυωµάτων µε τις ελλειπτικές καµπύλες. 4.8 Σώµα Κλάσεως Hilbert Πριν δοθεί ο ορισµός του σώµατος κλάσεως Hilbert (Hilbert class field), πρέπει να οριστούν δύο επιπλέον σηµαντικές έννοιες: της αβελιανής επέκτασης (abelian extension) και των διακλαδισµένων/αδιακλάδιστων ιδεωδών (ramified /unramified ideals). Η επέκταση Galois G του σώµατος Κ ονοµάζεται αβελιανή επέκταση αν η οµάδα Galois Gal(G/K) είναι αβελιανή. Αν τώρα Ρ είναι ένα πρώτο ιδεώδες του δακτυλίου ΟK, τότε το ΡΟ G είναι ένα e e 1 g ιδεώδες του O G, όπου G µια επέκταση του Κ. Επιπλέον ΡΟ G = β 1... βg όπου τα β i είναι πρώτα ιδεώδη του O G Αν κάποιο από τα e i είναι µεγαλύτερο του 1, τότε λέγεται ότι το Ρ διακλαδίζεται 67

78 (ramifies) στο σώµα G. ιαφορετικά, το Ρ είναι αδιακλάδιστο (unramified) στο σώµα G. Αν όλα τα e i είναι ίσα µε τη µονάδα και το g είναι ίσο µε το βαθµό της επέκτασης, τότε το Ρ διασπάται πλήρως (splits completely) στο G. Η επέκταση G/K καλείται αδιακλάδιστη αν όλα τα πρώτα ιδεώδη του δακτυλίου O K δεν διακλαδίζονται στο G. Ορισµός Η µεγαλύτερη, αδιακλάδιστη, αβελιανή επέκταση ενός σώµατος Κ, ονοµάζεται σώµα κλάσεως Hilbert (Hilbert class field) τον σώµατος Κ και θα συµβολίζεται µε Η ή Η (Κ). ηλαδή, αν G είναι αδιακλάδιστη, αβελιανή επέκταση του Κ, τότε θα ισχύει Κ G Η. Η οµάδα Galois Gal(H/K) είναι ισόµορφη µε την οµάδα κλάσεως του Εποµένως, ο βαθµός της επέκτασης [Η : Κ] είναι ίσος µε h, όπου h ο αριθµός κλάσεως του Ο Κ. Επίσης, τα πρώτα ιδεώδη του Κ που διασπώνται πλήρως στο Η είναι ακριβώς τα κύρια ιδεώδη του Κ. Αν Κ = Q ( d ), τότε Η = Κ (θ) όπου θ ένας πραγµατικός αριθµός. Επιπλέον, αν f(x) Z [x] είναι το ελάχιστο πολυώνυµο του θ (δηλαδή το πολυώνυµο µε τον µικρότερο δυνατό βαθµό που έχει ρίζα το θ) και ρ ένας πρώτος αριθµός που δεν διαιρεί τη διακρίνουσα του πολυωνύµου, τότε ισχύει το εξής θεώρηµα. Θεώρηµα Το p διασπάται πλήρως στο Η αν και µόνο αν (mod p) έχει µία τουλάχιστον ρίζα. d p =1 και η εξίσωση f(x) = 0 Από τα Θεωρήµατα παραπάνω προκύπτει εύκολα το εξής. Πρόταση Η εξίσωση 4p = u 2 Dυ 2 έχει ακέραιη λύσεις αν και µόνο αν η εξίσωση f(x) 0 (mod p) έχει µια τουλάχιστον ρίζα. Το παρακάτω θεώρηµα έχει πολύ µεγάλη σηµασία για τη θεωρία που θα αναπτυχθεί στο επόµενο κεφάλαιο. Θεώρηµα Έστω (p) ένα πρώτο ιδεώδες στο Κ και p το αντίστοιχο pο H ιδεώδες στο σώµα κλάσεως τον Hilbert Η. Αν το (p) διασπάται πλήρως στο Η, τότε O p H = O po H H F p, δηλαδή το σύνολο πηλίκο του δακτυλίου των ακέραιων αλγεβρικών του Η µε το ιδεώδες p είναι το πρώτο, πεπερασµένο σώµα F p. Ένα κανονικό πολυώνυµο Μ Z [x] καλείται πολυώνυµο κλάσεως (class polynomial) αν Η =Κ(α) για κάθε ρίζα α του Μ, και κάθε τέτοια ρίζα του πολυωνύµου Μ λέγεται αναλλοίωτη κλάσεως (class invariant). 68

79 Σκίτσο που διασώζεται του γάλλου µαθηµατικού Évariste Galois (25/10/ /5/1832) από συµαθητή του. 69

80 70

81 Kεφάλαιο 5 Ελλειπτικοί Αλγόριθµοι Θεωρία Ελλειπτικών Καµπυλών Στο κεφάλαιο αυτό δίνεται αρχικά ο ορισµός των ελλειπτικών καµπυλών πάνω στα πεπερασµένα σώµατα και εξηγούνται τα κυριότερα σηµεία της θεωρίας τους. Περιγράφεται αναλυτικά η πράξη της πρόσθεσης δύο σηµείων σε µια ελλειπτική καµπύλη και παρουσιάζεται ένας βασικός αλγόριθµος πολλαπλασιασµού ακέραιου αριθµού µε ένα σηµείο της ελλειπτικής καµπύλης. Στη συνέχεια, ορίζονται οι ελλειπτικές καµπύλες πάνω στους µιγαδικούς αριθµούς και περιγράφεται η άµεση σχέση που έχουν µε τα δικτυώµατα. Επίσης, ορίζεται η έννοια του µιγαδικού πολλαπλασιασµού στις ελλειπτικές καµπύλες και ορισµένα βασικά θεωρήµατα. Τέλος, παρουσιάζονται συνοπτικά οι κυριότερες επιθέσεις σε κρυπτογραφικά συστήµατα ελλειπτικών καµπυλών και εξηγούνται τα πλεονεκτήµατα που έχουν τα συγκεκριµένα συστήµατα σε σχέση µε τα παλαιότερα, συµβατικά συστήµατα. 5.1 Βασικοί Ορισµοί Μία καµπύλη ορίζεται σε ένα σώµα Κ από την παρακάτω εξίσωση, η οποία λέγεται ότι είναι σε µακρά, κανονική µορφή Weierstraβ (long, normal Weier-straβ form): y 2 +α 1 xy+α 3 xy = x 3 + α 2 x 2 + α 4 x + α 6 (5.1) όπου α 1, α 2, α 3, α 4, α 6 Κ. Η καµπύλη αποτελείται από το σύνολο των σηµείων (x,y), µε x,y Κ, τα οποία ικανοποιούν την παραπάνω εξίσωση µαζί µε ένα σηµείο Ο που ονοµάζεται σηµείο στο άπειρο (point at infinity). Ο όρος σηµείο στο άπειρο προέρχεται από τις αναπαραστάσεις των καµπυλών στο επίπεδο, όπου το σηµείο στο άπειρο σχετίζεται µε τις κάθετες εφαπτόµενες ή είναι το τρίτο σηµείο της τοµής κάθε κάθετης γραµµής µε την καµπύλη. Μπορεί να φανταστεί κανείς ότι το σηµείο αυτό βρίσκεται στο τέλος του άξονα y. Στην υλοποίηση που έχει γίνει στα πλαίσια της διδακτορικής διατριβής έχει τεθεί ίσο µε Ο =(0,0). 71

82 Η διακρίνουσα της καµπύλης είναι ίση µε - b + = (5.2) b8 8b 4 27b6 9b 2b 4b6 και η j-αναλλοίωτη (j-invariant) µε j 3 c4 = (5.3) b = α 4α όπου 1 2 b + 4 = 2α 4 α1α3 b = α3 4α 6 b = α1α 6 + 4α 2α 6 α 2α3 α 4 2 και c4 = b2 24b4 Ορισµός Μια ελλειπτική καµπύλη (elliptic curve) σε ένα σώµα Κ ορίζεται από µια εξίσωση της µορφής (5.1) µε 0 και συµβολίζεται µε Ε(Κ). Στα Σχήµατα 5.1 και 5.2 παρουσιάζονται δύο ελλειπτικές καµπύλες που ορίζονται από την ίδια εξίσωση y 2 = x 3 4x + 3, αλλά πάνω σε διαφορετικά σώµατα. Η πρώτη ελλειπτική καµπύλη ορίζεται στους ρητούς και άρα οι συντεταγµένες των σηµείων της (x,y) παίρνουν τιµές στο σύνολο αυτό. Η δεύτερη ελλειπτική καµπύλη ορίζεται στο πεπερασµένο σώµα F 23. ηλαδή, x,y 0,l,...,22}. Θεώρηµα Έστω Ε(Κ) µια ελλειπτική καµπύλη µε char(k) 2,3. Τότε, υπάρχει ένας µετασχηµατισµός φ : Ε Ε', από την Ε(Κ) στην Ε'(Κ) όπου η Ε'(Κ) έχει τη µορφή y 2 = x 3 + αx + b (5.4) µε α, b Κ. Στην περίπτωση αυτή λέµε ότι η ελλειπτική καµπύλη αναπαριστάται από µια βραχεία, κανονική µορφή Weierstraβ (short, normal Weierstraβ form). 72

83 Σχήµα 5.1: Η ελλειπτική καµπύλη y 2 = x 3 4x + 3 ορισµένη πάνω στους ρητούς. Η διακρίνουσα και η j-αναλλοίωτη µιας ελλειπτικής καµπύλης Ε που αναπαρίσταται από µια βραχεία, κανονική µορφή Weierstraβ, είναι ίσες αντίστοιχα µε (Ε) = -16(4α b 2 ) και 3 12 (E) = ( 4α) j. 3 Οι εξισώσεις αυτές προκύπτουν άµεσα από τις αντίστοιχες Εξισώσεις (5.2) και (5.3), θέτοντας α 1 = α 2 = α 3 = 0, α 4 = α και α 6 = b. Σηµειώνεται επίσης ότι αν σε µια ελλειπτική καµπύλη που αναπαρίσταται από µια βραχεία, κανονική µορφή Weierstraβ ανήκει το σηµείο (x, y), τότε σε αυτή την ελλειπτική καµπύλη ανήκει και το συµµετρικό του ως προς τον άξονα x, δηλαδή το σηµείο (x, -y). Στα πλαίσια της διδακτορικής διατριβής χρησιµοποιούνται ελλειπτικές καµπύλες που αναπαρίστανται από µια βραχεία, κανονική µορφή Weierstraβ και είναι ορισµένες πάνω σε πρώτα, πεπερασµένα σώµατα F p. 73

84 Θεώρηµα Έστω Ε(Κ) µια ελλειπτική καµπύλη στο σώµα Κ µε εξίσωση y 2 = x 3 + αx + b. Σχήµα 5.2: Η ελλειπτική καµπύλη y 2 = x 3 4x + 3 ορισµένη πάνω στο πεπερασµένο σώµα F 23. Τότε η αναγµένη (reduced) ελλειπτική καµπύλη E = Ε (mod ) p, όπου p ένα πρώτο ιδεώδες τον σώµατος Κ, δίνεται από την εξίσωση y 2 = x 3 + αx + b όπου α = α (mod ) p και b = b (mod ) p. To πλήθος των σηµείων µιας ελλειπτικής καµπύλης Ε (Κ) καλείται τάξη της ελλειπτικής καµπύλης και συµβολίζεται µε #Ε(Κ). Θεώρηµα Τα σηµεία κάθε ελλειπτικής καµπύλης σχηµατίζουν µια προσθετική, αβελιανή οµάδα. Στην επόµενη παράγραφο περιγράφεται ο προσθετικός νόµος αυτής της οµάδας. 74

85 5.2 Ο Προσθετικός Νόµος στις Ελλειπτικές Καµπύλες Έστω Ε(Κ) µια ελλειπτική καµπύλη που αναπαρίσταται από µια βραχεία, κανονική µορφή Weierstraβ και Ρ, Q Ε (Κ) δύο (όχι απαραίτητα διαφορετικά) σηµεία της. Η ευθεία γραµµή που περνάει από τα Ρ και Q τέµνει την ελλειπτική καµπύλη σε ένα τρίτο σηµείο R. To συµµετρικό του σηµείου R' ως προς τον άξονα x, είναι ένα σηµείο R που ορίζεται ως το αποτέλεσµα της πρόσθεσης των Ρ και Q, δηλαδή P + Q = R. (Αν Ρ = Q, τότε η ευθεία γραµµή είναι η εφαπτοµένη στο σηµείο Ρ). Σχήµα 5.3: Πρόσθεση δύο σηµείων Ρ και Q της ελλειπτικής καµπύλης y 2 = x 3 4x + 3. Το ταυτοτικό στοιχείο της αβελιανής οµάδας που αποτελείται από τα σηµεία της ελλειπτικής καµπύλης, είναι το σηµείο στο άπειρο Ο. ηλαδή Ρ+Ο = Ρ. Ισχύει επίσης ότι P + Q = Q + P και αν R' είναι το συµµετρικό του σηµείου R ως προς τον άξονα x, τότε R+R = O R' R. Στο Σχήµα 5.3 φαίνεται η πρόσθεση δύο σηµείων Ρ και Q στην ελλειπτική καµπύλη y 2 = x 3 4x + 3 ορισµένη πάνω στους ρητούς. Το αποτέλεσµα της πρόσθεσης είναι το σηµείο R. Ο λόγος για τον οποίο το αποτέλεσµα της πρόσθεσης των σηµείων Ρ και Q είναι το σηµείο R και όχι το R' είναι ο εξής: έστω ότι ίσχυε Ρ + Q = R'. Τότε θα ίσχυαν επίσης και οι εξισώσεις Ρ + R' = Q και Q + R' = Ρ. Αυτό όµως θα σήµαινε ότι Ρ = Q = R' = Ο. Εποµένως η πράξη της πρόσθεσης δεν θα ήταν καλώς ορισµένη µε τον τρόπο αυτό. 75

86 Θεώρηµα Έστω Ε (Κ) µια ελλειπτική καµπύλη y 2 = x 3 + αx + b στο σώµα Κ, σε βραχεία, κανονική µορφή Weierstraβ και έστω Ρ 1 = (x 1,y 1 ), P 2 = (x 2,y 2 ) δύο σηµεία στην ελλειπτική καµπύλη. Τότε: 1. P1 = (x 1, - y 1 ) 2. αν Ρ 1 = Ρ 2 P 1 + Ρ 2 = Ο 3. αν Ρ 1 Ρ 2 P 1 +P 2 =P 3 = (x 3,y 3 ), µε συντεταγµένες x 3 = λ 2 x 1 x 2, y 3 = λ(x 1 x 3 ) y 1, y όπου λ = x 1 1 y x 2 2 αν P 1 P 2 και λ 2 3x1 + α 2y = αν P 1 = Ρ 2. 1 Απόδειξη. Η ευθεία που ενώνει το P 1 = P 1 + Ο = (x 1,y 1 ) µε το Ο είναι η x = x 1. Άρα, το δεύτερο σηµείο που θα τέµνει η ευθεία αυτή την ελλειπτική καµπύλη είναι το (x 1, yi). Έτσι, τα δύο πρώτα σκέλη του θεωρήµατος απαντούνται. Στην περίπτωση που το P 1 Ρ 2 και Ρ 1 P 2, η κλίση της ευθείας που ενώνει τα δυο αυτά σηµεία είναι ίση µε λ = y x 1 1 y x 2 2 ηλαδή η εξίσωση της ευθείας που περνάει από τα P 1 και Ρ 2 είναι η y = λ(x x 1 ) + y 1. Η εξίσωση της ελλειπτικής καµπύλης είναι η y 2 = x 3 + αx + b. Η ευθεία µε την ελλειπτική καµπύλη έχουν τρία κοινά σηµεία: το P 1, το Ρ 2 και το P 3 = (x 3, y 3 ), που είναι το συµµετρικό ως προς τον οριζόντιο άξονα του σηµείου P 3 το οποίο είναι και το αποτέλεσµα της πρόσθεσης. Αντικαθιστώντας το y στην εξίσωση της ελλειπτικής καµπύλης µε την εξίσωση της ευθείας, προκύπτει µία τριτοβάθµια εξίσωση ως προς το x. Οι τρεις ρίζες της εξίσωσης είναι προφανώς τα x i των τριών σηµείων P 1, P 2 και P 3. Με τον τρόπο αυτό γίνεται ο υπολογισµός του x 3. Αφού βρεθεί το x 3 εύκολα υπολογίζεται και το y 3 µε αντικατάσταση στην εξίσωση της ευθείας. Εφαρµόζοντας ότι περιγράφηκε προηγούµενα, η εξίσωση της ελλειπτικής καµπύλης γίνεται: λ 2 (x x 1 ) 2 + 2λ(x x 1 )y 1 + y 2 1 = x3 + αx + b. Η εξίσωση απλοποιείται στην µορφή: x 3 λ 2 x 2 + Αx + Β = 0 όπου Α = α + 2λ 2 x 1 2λy 1 76

87 και Β = b y λx 1y 1 λ 2 x 2 1. Από θεώρηµα της άλγεβρας, ισχύει ότι το άθροισµα των ριζών µιας τριτοβάθµιας εξίσωσης της οποίας ο συντελεστής του x 3 είναι ίσος µε 1, είναι ίσο µε τον αντίθετο του συντελεστή του x 2, δηλαδή για την συγκεκριµένη περίπτωση ισχύει x 1 + x 2 + x 3 = λ 2 x 3 = λ 2 x 1 x 2. Αντικαθιστώντας στην εξίσωση της ευθείας και πολλαπλασιάζοντας µε το -1, έχουµε ότι y 3 = λ(x 1 x 3 ) y 1. Στην περίπτωση που P 1 = Ρ 2, η ευθεία που περνάει από τα σηµεία είναι η εφαπτοµένη στο P 1 (ή Ρ 2 ). Τα x 3,y 3 δίνονται από τις ίδιες σχέσεις που περιγράφηκαν παραπάνω. Το µόνο που αλλάζει είναι το λ, η κλίση της ευθείας. Η κλίση µιας ευθείας σε ένα σηµείο της ελλειπτικής καµπύλης είναι η τιµή της παραγώγου της καµπύλης σε αυτό το σηµείο. Παραγωγίζοντας ως προς x και τα δύο µέλη της εξίσωσης της ελλειπτικής καµπύλης προκύπτει ότι 2yy'= 3x 2 + α. ηλαδή 3x α y = 2y 2 +. Η κλίση εποµένως της εφαπτοµένης ευθείας στο σηµείο P 1 = (x 1,y 1 ) είναι ίση µε: λ = 2 3x1 + α 2y 1 Με την εξίσωση αυτή, ολοκληρώνεται η απόδειξη του θεωρήµατος. Έχοντας ορίσει την πράξη της πρόσθεσης στην οµάδα των σηµείων µιας ελλειπτικής καµπύλης, µπορεί να οριστεί µία ακόµα πράξη: αυτή του πολλαπλασιασµού ενός σηµείου µε έναν ακέραιο αριθµό. Έστω k ένας ακέραιος και Ρ ένα σηµείο σε µια ελλειπτική καµπύλη. Τότε, ο πολλαπλασιασµός του ακεραίου k µε το σηµείο Ρ ορίζεται ως εξής: kp = 0 k j 1 k j 1 P P αν k > 0 αν k = 0 αν k < 0 Το αποτέλεσµα δηλαδή του πολλαπλασιασµού είναι ένα άλλο σηµείο στην ελλειπτική καµπύλη. Αν υπάρχει ένας αριθµός n > 0 για τον οποίο nρ = O, τότε το η καλείται τάξη (order) του Ρ. Αν για κάποιο σηµείο Ρ δεν υπάρχει τέτοιος αριθµός, το σηµείο έχει άπειρη τάξη. Ο αριθµός n δεν µπορεί να είναι µεγαλύτερος από την τάξη m = #E(K) της ελλειπτικής καµπύλης και για όλα τα σηµεία της ισχύει ότι mρ = Ο. Το παρακάτω θεώρηµα του Langrange συνδέει την τάξη της ελλειπτικής καµπύλης µε την τάξη των σηµείων της. Θεώρηµα Έστω Ε (Κ) µια ελλειπτική καµπύλη µε τάξη m = #Ε(Κ) και Ρ ένα σηµείο της. Τότε η τάξη n του σηµείου Ρ διαιρεί την τάξη της ελλειπτικής καµπύλης m. 77

88 Ο πιο απλός αλγόριθµος υπολογισµού του πολλαπλασιασµού ενός σηµείου µε έναν ακέραιο k, βασίζεται στην δυαδική αναπαράσταση του k και έχει πολυπλοκότητα O(log 2 k). Μέθοδος υπολογισµού του πολλαπλασιασµού ενός σηµείου µε έναν ακέραιο Είσοδος: Ένα σηµείο Ρ και ένας θετικός ακέραιος k Έξοδος: Το σηµείο Q = kp Q = O while (k > 0) if (k (mod 2) = 1) Q = Q + Ρ P = P + P k = k/2 } Ο αριθµός των προσθέσεων της συγκεκριµένης µεθόδου πολλαπλασιασµού µπορεί να µειωθεί και άλλο µε την χρήση ενός τεχνάσµατος (Koblitz's trick). Υπάρχουν επίσης πολύ αποδοτικές µέθοδοι για τον υπολογισµό του πολλαπλασιασµού, όπως οι µέθοδοι παραθύρου ή µέθοδοι που βασίζονται σε διάφορες αναπαραστάσεις του ακεραίου k. 5.3 Ελλειπτικές Καµπύλες στο Πρώτο, Πεπερασµένο Σώµα F p Οι ελλειπτικές καµπύλες που ορίζονται στο σώµα F p, όπου p> 2 είναι πρώτος αριθµός, αναπαρίστανται πάντα από µια βραχεία, κανονική µορφή Weierstraβ. Η τάξη αυτών των ελλειπτικών καµπυλών είναι πεπερασµένη και ίση µε: #Ε(F p ) = p +1 t. Ο φυσικός αριθµός t ονοµάζεται ίχνος τον Frobenius και σύµφωνα µε το θεώρηµα του Hasse ισχύει: Θεώρηµα Για το ίχνος του Frobenius t ισχύει ο περιορισµός t 2 p. Αν το ίχνος του Frobenius είναι ίσο µε 1 για µια ελλειπτική καµπύλη, τότε αυτή καλείται µη οµαλή (anomalous). Yπεριδιάζουσα (supersingular) ελλειπτική καµπύλη είναι µια καµπύλη Ε(F p ) για την οποία ο πρώτος αριθµός p διαιρεί το ίχνος του Frobenius t. Ισοδύναµα, µια ελλειπτική καµπύλη είναι υπεριδιάζουσα αν και µόνο αν p 2,3} και j(e) = Ο, ή p 5 και t = 0. Οι 78

89 ελλειπτικές καµπύλες που εµπίπτουν σε αυτές τις δύο κατηγορίες αποφεύγονται σε κρυπτογραφικές εφαρµογές γιατί είναι πολύ ευάλωτες σε επιθέσεις. Έστω δύο ελλειπτικές καµπύλες στο p : y 2 =x 2 + αx+b y 2 = x + α x + b. Αυτές οι δύο ελλειπτικές καµπύλες είναι ισόµορφες αν υπάρχει ένας µετασχηµατισµός που οδηγεί από την µία στην άλλη. Συγκεκριµένα, ο µετασχηµατισµός έχει ως εξής: x=u 2 x, y = u 3 y, α = u 4 α και b = u 6 b για κάποιο u F * p. ύο ισόµορφες καµπύλες έχουν την ίδια j-αναλλοίωτη. Ορισµός Η καµπύλη συστροφής (twist) µιας ελλειπτικής καµπύλης της µορφής (5.4) είναι µια ελλειπτική καµπύλη y 2 = x 3 +α x +b όπου α = υ 2 α και b = υ 3 b για κάποιο αριθµό υ F p που δεν είναι τετραγωνικό υπόλοιπο (quadratic non-residue). Προφανώς η αρχική ελλειπτική καµπύλη και η καµπύλη συστροφής της είναι ισόµορφες και έχουν την ίδια j-αναλλοίωτη. Αν m είναι η τάξη της πρώτης καµπύλης και m η τάξη της δεύτερης τότε ισχύει: και m = p + 1 t m = p t. Εποµένως αν είναι γνωστή η τάξη της µίας καµπύλης, τότε µπορεί να βρεθεί και η τάξη της καµπύλης συστροφής της. Θεώρηµα οθείσης µίας j-αναλλοίωτης j o, µπορούν να κατασκευαστούν δύο ελλειπτικές καµπύλες στο σώµα F p. Η πρώτη θα έχει τη µορφή 5.4 και θα ισχύει: και όπου α = 3k mod p b = 2k mod p k jo = 1728 j o mod p ενώ η δεύτερη θα είναι η καµπύλη συστροφής της και µπορεί να κατασκευαστεί σύµφωνα µε τον Ορισµό

90 Για να οριστεί ένα κρυπτογραφικό σύστηµα που χρησιµοποιεί ελλειπτικές καµπύλες είναι απαραίτητος ο προσδιορισµός του µεγέθους σε bits της τάξης p του σώµατος p πάνω στο οποίο θα οριστεί η ελλειπτική καµπύλη, των παραµέτρων α και b της ελλειπτικής καµπύλης και της τάξης της #Ε(F p ). Ως γένεση της ελλειπτικής καµπύλης, θα εννοούµε τον καθορισµό όλων αυτών των παραµέτρων. 5.4 Η Έννοια του Μιγαδικού Πολλαπλασιασµού Ορισµοί Ο δακτύλιος ενδοµορφισµού (endomorphism ring) µιας ελλειπτικής καµπύλης Ε είναι το σύνολο όλων των απεικονίσεων φ : Ε Ε για τις οποίες φ(ο) = Ο και θα συµβολίζεται µε End(E). Για κάθε ελλειπτική καµπύλη, ο δακτύλιος ενδοµορφισµού της περιέχει έναν υποδακτύλιο που είναι ισόµορφος µε το σύνολο Z των ακεραίων. Ο υποδακτύλιος αυτός προκύπτει από τις απεικονίσεις φ : Ε Ε, µε φ(ρ) = nρ για κάποιο ακέραιο αριθµό η και Ρ ένα σηµείο της καµπύλης. ηλαδή, προκύπτει από τους πολλαπλασιασµούς σηµείων µε ακεραίους. Ο δακτύλιος ενδοµορφισµού End(E) µιας ελλειπτικής καµπύλης Ε είναι είτε ίσος µε αυτόν τον υποδακτύλιο, συµβολικά End(E] =, ή αυστηρά µεγαλύτερος. Στη δεύτερη περίπτωση θα λέµε ότι η ελλειπτική καµπύλη έχει µιγαδικό πολλαπλασιασµό (complex multiplication). Αν µάλιστα ο δακτύλιος ενδοµορφισµού είναι ισόµορφος µε έναν υποδακτύλιο του δακτυλίου O K των ακέραιων αλγεβρικών ενός φανταστικού τετραγωνικού σώµατος Κ, τότε η ελλειπτική καµπύλη έχει µιγαδικό πολλαπλασιασµό από το Κ. Για παράδειγµα, έστω ένας ακέραιος k και µια ελλειπτική καµπύλη y 2 =x 3 kx. Αυτή η ελλειπτική καµπύλη έχει µιγαδικό πολλαπλασιασµό από το φανταστικό τετραγωνικό σώµα αριθµών Q(i) = 1 γιατί εκτός από Z περιέχει ένα νέο στοιχείο: Q ( ) [i]:ε Ε µε [i](x,y) = (-x,iy). Με το παράδειγµα αυτό, γίνεται κατανοητό γιατί η ιδιότητα αυτή των ελλειπτικών καµπυλών ονοµάζεται µιγαδικός πολλαπλασιασµός: από το γεγονός ότι τα σηµεία της καµπύλης πολλαπλασιάζονται µε έναν µιγαδικό αριθµό (τον i στην περίπτωση του παραδείγµατος). Πιο συγκεκριµένα, όταν ο δακτύλιος ενδοµορφισµού είναι ισόµορφος µε έναν δακτύλιο R τέτοιο ώστε R Ο K, όπου O K ο δακτύλιος των ακέραιων αλγεβρικών του φανταστικού τετραγωνικού σώµατος Κ=Q(τ), θα χρησιµοποιείται ο συµβολισµός End(E] Ζ+Ζτ ή End(E) R. Τέλος, σηµειώνεται ότι όλες οι ελλειπτικές καµπύλες που είναι ορισµένες σε πεπερασµένα σώµατα έχουν µιγαδικό πολλαπλασιασµό. Μάλιστα µπορεί να δειχθεί ότι µια ελλειπτική καµπύλη Ε(F p ) µπορεί να περιγραφεί ως η αναγωγή modulo ρ µιας ελλειπτικής καµπύλης E(C) που έχει µιγαδικό πολλαπλασιασµό. 80

91 5.4.2 Ελλειπτικές Καµπύλες πάνω στους Μιγαδικούς Με την p-συνάρτηση του Weierstraβ ορίζεται ένας ισοµορφισµός µεταξύ των µιγαδικών αριθµών modulo ένα δικτύωµα, και µιας ελλειπτικής καµπύλης η οποία ορίζεται πάνω στους µιγαδικούς αριθµούς. Συγκεκριµένα ισχύει το εξής θεώρηµα: Θεώρηµα Έστω L ένα δικτύωµα στο Q. Η p-συνάρτηση του Weierstraβ που σχετίζεται µε το L, επιφέρει έναν ισοµορφισµό από το /L στην ελλειπτική καµπύλη που ορίζεται στο C, µέσω της συνάρτησης: ( L) 2 3 g 2 g3 E : y = x x 4 4 x (mod L) ( L) 1 p(z), p (z) 2 Ο παραπάνω ισοµορφισµός προκύπτει άµεσα από την Εξίσωση (4.5). Ο ισοµορφισµός ανάµεσα σε µια ελλειπτική καµπύλη Ε ορισµένη στους µιγαδικούς C και στο C/L, όπου L ένα δικτύωµα της µορφής L = [1,τ], οδηγεί στο συµπέρασµα ότι J(E)= j(τ). ηλαδή η j-αναλλοίωτη της ελλειπτικής καµπύλης είναι ίση µε τη j-αναλλοίωτη του δικτυώµατος. Θεώρηµα Έστω E(C) µια ελλειπτική καµπύλη που είναι ισόµορφη µε το δικτύωµα L = [Ι,τ], όπου τ Ε ΕΙ. Η ελλειπτική καµπύλη έχει µιγαδικό πολλαπλασιασµό αν και µόνο αν το τ ανήκει σε ένα φανταστικό, τετραγωνικό, αλγεβρικό σώµα. Τότε ο δακτύλιος End(E) είναι ίσος µε έναν υποδακτύλιο του δακτυλίου Ο Κ των ακέραιοιν αλγεβρικών του φανταστικού, τετραγωνικού σώµατος Κ = Q(τ). Στην περίπτωση αυτή, θα λέµε ότι το δικτύωµα L έχει µιγαδικό πολλαπλασιασµό από το σώµα Κ = Q(τ) Τα Κύρια Θεωρήµατα του Μιγαδικού Πολλαπλασιασµού Στην ενότητα αυτή παρουσιάζονται τα δύο πιο σηµαντικά θεωρήµατα της θεωρίας του µιγαδικού πολλαπλασιασµού, στα οποία βασίζεται κυρίως η µέθοδος που θα περιγράψουµε στο επόµενο κεφάλαιο για τη γένεση ασφαλών ελλειπτικών καµπυλών. Θεώρηµα (Το πρώτο, κύριο θεώρηµα του µιγαδικού πολλαπλασιασµού) Έστω R ένας υποδακτύλιος του δακτυλίου O K των ακεραίων αλγεβρικών του φανταστικού, τετραγωνικού σώµατος Κ=Q ( d ), µε οµάδα κλάσεως Cl(R) και E(C) µια ελλειπτική καµπύλη µε End(E) R. Τότε η j-αναλλοίωτη j(e) της ελλειπτικής καµπύλης είναι ένας αλγεβρικός ακέραιος µε ελάχιστο πολυώνυµο 81

92 H D ( x) = ( x j( a) ) a Cl ( R) όπου D είναι η διακρίνουσα του σώµατος Κ. Το σώµα Η = K(j(α)), για οποιοδήποτε α Cl(R), είναι το σώµα κλάσεως του Hilbert για τον υποδακτύλιο R στο αλγεβρικό σώµα Κ. Το πολυώνυµο H D (x) καλείται πολυώνυµο Hilbert (Hilbert polynomial). Όπως αναφέρθηκε στην Ενότητα 4.6.2, κάθε στοιχείο της οµάδας κλάσεως Cl(R) µπορεί να περιγραφεί από µία αναγµένη µορφή (α, b, c) που ικανοποιεί τις συνθήκες του Θεωρήµατος Πιο απλά, εποµένως, το πολυώνυµο Hubert κατασκευάζεται ως εξής: H D h ( x) = ( x j( τ Q i ) t = 1 όπου Q 1,,Q h είναι τετραγωνικές µορφές Q i = (α i b i,c i ) µε διακρίνουσα D, που ικανοποιούν τις συνθήκες του Θεωρήµατος και h είναι το πλήθος τους ή µε άλλα λόγια, ο αριθµός κλάσεως. Τα j(τq i ) = b i + j 2α i d είναι οι j-αναλλοίωτες των δικτυωµάτων L i = [1, τ ] που Q i έχουν µιγαδικό πολλαπλασιασµό από το Κ=Q ( d ) και υπολογίζονται µέσω της Εξίσωσης (4.1). Θεώρηµα Έστω p ένας πρώτος αριθµός που διασπάται πλήρως στο αλγεβρικό σώµα Κ = Q ( d ) και b ένα πρώτο ιδεώδες του σώµατος κλάσεως Hilbert Η. Το ιδεώδες b είναι τέτοιο ώστε να περιέχει το πρώτο ιδεώδες pοh. Έστω, επίσης, ε µια ελλειπτική καµπύλη ορισµένη στο Η µε End(ε) R (όπου R ένας υποδακτύλιος του αλγεβρικού σώµατος Κ) και Ε η αναγωγή της ε modulo b. Η ελλειπτική καµπύλη Ε είναι δηλαδή ορισµένη στο σώµα F p. Τότε υπάρχει ένα στοιχείο γ τέτοιο ώστε: γ γ = p και #Ε(F p ) = p + 1 (γ 82 γ ). Επιπλέον, ισχύει ότι End(E) R. Μάλιστα, κάθε ελλειπτική καµπύλη Ε που ορίζεται στο πρώτο σώµα F p, µε End(E) R, µπορεί να κατασκευαστεί µε τον τρόπο αυτό. Σύµφωνα µε το Θεώρηµα 4.8.2, ισχύει O H b Fp. Η j-αναλλοίωτη j(ε) της καµπύλης ε είναι ίση µε τη j-αναλλοίωτη του ισόµορφου της δικτυώµατος, η οποία µε τη σειρά της είναι ίση µε µία ρίζα του πολυωνύµου Hilbert. Αφού ενδιαφερόµαστε για την κατασκευή της καµπύλης αναγωγής Ε,

93 χρειάζεται να υπολογιστεί η j-αναλλοίωτη j(e). Ισχύει όµως ότι j(e) = j(ε) modulo b και έτσι προκύπτει άµεσα το παρακάτω πόρισµα. Πόρισµα Η j-αναλλοίωτη j(e) είναι ίση µε µία ρίζα του πολυωνύµου Hilbert στο σώµα F p. 5.5 Οι Ελλειπτικές Καµπύλες στην Κρυπτογραφία Κρυπτογραφία ηµόσιου Κλειδιού Η κρυπτογραφία είναι σαφέστατα ένας πολύ σηµαντικός κλάδος της επιστήµης των υπολογιστών. Όπως έχει προαναφερθεί στο πρώτο κεφάλαιο, κρυπτογράφηση είναι η διαδικασία µετατροπής ενός απλού µηνύµατος σε µια άλλη µορφή που δεν γίνεται κατανοητή σε άτοµα που δεν έχουν κάποια εξουσιοδότηση και αποκρυπτογράφηση είναι η αντίστροφη διαδικασία. Και οι δύο αυτές διαδικασίες, γίνονται µε τη χρήση κάποιων κλειδιών. Συγκεκριµένα, στην κρυπτογραφία δηµόσιου κλαδιού (public key cryptography) η κρυπτογράφηση γίνεται µε ένα δηµόσιο κλειδί που είναι γνωστό σε όλους τους χρήστες του κρυπτογραφικού συστήµατος, ενώ η αποκρυπτογράφηση µε ένα ιδιωτικό κλειδί. Εποµένως για να επιτεθεί κανείς επιτυχώς στο σύστηµα, θα πρέπει να βρει το ιδιωτικό κλειδί γνωρίζοντας µόνο το δηµόσιο κλειδί. Η ασφάλεια των κρυπτογραφικών συστηµάτων δηµόσιου κλειδιού βασίζεται στην δυσκολία επίλυσης κάποιου µαθηµατικού προβλήµατος που συσχετίζει το ιδιωτικό κλειδί µε το δηµόσιο, έτσι ώστε να είναι υπολογιστικά πολύ δύσκολο να προκύψει το ιδιωτικό από το δηµόσιο κλειδί. Ένα τέτοιο πρόβληµα είναι το πρόβληµα του διακριτού λογάριθµου (DLP, Discrete Logarithm Problem), που ορίζεται ως εξής: Ορισµός Έστω F p ένα πρώτο, πεπερασµένο σώµα και g, y και χ στοιχεία του για τα οποία ισχύει η εξίσωση: g x = y Το πρόβληµα του διακριτού λογάριθµου είναι η εύρεση της τιµής του x, γνωρίζοντας το g και το y. Στα κρυπτογραφικά συστήµατα δηµόσιου κλειδιού που βασίζονται στο πρόβληµα του διακριτού λογάριθµου, το δηµόσιο κλειδί είναι το y και το ιδιωτικό είναι το x. Το 1985, µια παραλλαγή του DLP προτάθηκε από τους Miller και Koblitz που όριζε το πρόβληµα στο σύνολο των σηµείων µιας ελλειπτικής καµπύλης. Το πρόβληµα ονοµάσθηκε ECDLP (Elliptic Curve Discrete Logarithm Problem), δηλαδή πρόβληµα διακριτού λογάριθµου σε ελλειπτικές καµπύλες. Ορισµός Έστω Ε(F p ) µια ελλειπτική καµπύλη που ορίζεται στο πρώτο, πεπερασµένο σώµα F p και Q, Ρ δύο σηµεία της τα οποία ικανοποιούν την εξίσωση: 83

94 Q= kp όπου k ένας ακέραιος αριθµός. Το πρόβληµα του διακριτού λογάριθµου στις ελλειπτικές καµπύλες είναι η εύρεση της τιµής του k, γνωρίζοντας τα σηµεία Q και Ρ. Στα κρυπτογραφικά συστήµατα ελλειπτικών καµπυλών (αντίστοιχα ακριβώς µε τα συστήµατα που βασίζονται στο πρόβληµα του διακριτού λογαρίθµου DLP), το δηµόσιο κλειδί είναι το Q και το ιδιωτικό ο ακέραιος k. Λόγω της άµεσης αντιστοιχίας που υπάρχει µεταξύ των προβληµάτων ECDLP και DLP, βασικά κρυπτογραφικά πρωτόκολλα που βασίζονται στο DLP (όπως το πρωτόκολλο ανταλλαγής κλειδιών Diffie - Hellman και η κρυπτογράφηση κατά ElGamal) µπορούν να εφαρµοστούν και σε συστήµατα ελλειπτικών καµπυλών. Η δυσκολία ωστόσο που υπάρχει στα συστήµατα ελλειπτικών καµπυλών είναι ότι πρέπει να γίνουν επιλογές ως προς τον τύπο της ελλειπτικής καµπύλης που θα χρησιµοποιηθεί, τον τύπο του πεπερασµένου σώµατος στο οποίο θα οριστεί, και τους αλγορίθµους που θα χρησιµοποιηθούν για τις βασικές πράξεις. Ένας διαφορετικός συνδυασµός αυτών των επιλογών θα δώσει και διαφορετική απόδοση στο σύστηµα. Το απλούστερο πρωτόκολλο κρυπτογράφησης που µπορεί να υλοποιηθεί µε χρήση ελλειπτικών καµπυλών είναι το ακόλουθο. Αρχικά, το πρωτόκολλο προϋποθέτει ότι οι δύο χρήστες που επιθυµούν να επικοινωνήσουν, διαµοιράζονται το ίδιο κλειδί. Αυτό µπορεί να γίνει για παράδειγµα µε χρήση του πρωτοκόλλου ανταλλαγής κλειδιού των Diffie - Hellman. Έστω ότι το κλειδί που µοιράζονται οι δύο χρήστες είναι το S. Στην περίπτωση των κρυπτογραφικών συστηµάτων ελλειπτικών καµπυλών, αυτό είναι ένα σηµείο στην ελλειπτική καµπύλη. Αυτό που χρειάζονται και οι δύο για την κρυπτογράφηση και την αποκρυπτογράφηση είναι η x συντεταγµένη του S. Η συντεταγµένη αυτή µπαίνει ως είσοδος σε µια συνάρτηση η οποία επιστρέφει µία µάσκα (mask) που έχει µέγεθος (σε bytes) όσο και το µήνυµα που θέλει ο κάθε χρήστης να κρυπτογραφήσει. Για να κρυπτογραφηθεί ένα µήνυµα, απλά εκτελείται η λειτουργία XOR µεταξύ του µηνύµατος και της µάσκας. Για την αποκρυπτογράφηση ακολουθείται ακριβώς η ίδια διαδικασία, αλλά τώρα γίνεται XOR του κρυπτογραφηµένου µηνύµατος µε την µάσκα. Για την δηµιουργία της µάσκας χρειάζεται µία συνάρτηση κερµατισµού. Ένα δεύτερο πρωτόκολλο κρυπτογράφησης που χρησιµοποιείται συχνά σε κρυπτογραφικά συστήµατα ελλειπτικών καµπυλών και βασίζεται στον αλγόριθµο κρυπτογράφησης κατά ElGamal, είναι το ECES (Elliptic Curve Encryption Scheme). Η κρυπτογράφηση γίνεται από µία µαθηµατική συνάρτηση. Για το λόγο αυτό, τα αρχικά µηνύµατα πρέπει να αναπαρασταθούν ως µαθηµατικά αντικείµενα. Μια εύκολη µέθοδος είναι να αναπαρασταθεί το κενό από το Ο και τα γράµµατα Α... Ζ µε Α 1, Β 2,...,Ζ 26. Η κρυπτογράφηση ενός µηνύµατος που επιθυµεί να στείλει ένας χρήστης Α σε έναν χρήστη Β γίνεται ως εξής: 1. Επιλέγεται ένας αριθµός 0 < k < n 1, όπου η είναι ο µεγαλύτερος πρώτος παράγοντας της τάξης πι της ελλειπτικής καµπύλης. 2. Υπολογίζεται το σηµείο R = kρ, όπου Ρ είναι το σηµείο βάσης µε το οποίο κατασκευάστηκε το δηµόσιο κλειδί του χρήστη Β. ηλαδή Q B =k B P, όπου Q B είναι το δηµόσιο κλειδί του Β και kp είναι το ιδιωτικό του κλειδί. 3. Υπολογίζεται το σηµείο Q = kq B. 84

95 4. Υπολογίζεται ο ακέραιος c = zx (mod p), όπου z είναι η αναπαράσταση του µηνύµατος που κρυπτογραφείται σε µορφή ακέραιου αριθµού µε βάση την µέθοδο που προτάθηκε παραπάνω, x είναι η x συντεταγµένη του σηµείου Q και p είναι η τάξη του πεπερασµένου σώµατος στο οποίο ορίζεται η ελλειπτική καµπύλη. Το ζευγάρι (R, c) αποτελεί την κρυπτογραφηµένη µορφή του αρχικού µηνύµατος. Τα βήµατα της αποκρυπτογράφησης του κρυπτογραφηµένου µηνύµατος (R, c) από τον χρήστη Β είναι: 1. Υπολογίζεται το σηµείο Q = k B R, όπου k B είναι το ιδιωτικό κλειδί του Β. c 2. Υπολογίζεται ο ακέραιος z = (mod p), όπου x είναι η x συντεταγµένη του σηµείου Q και p x είναι η τάξη του πεπερασµένου σώµατος στο οποίο ορίζεται η ελλειπτική καµπύλη. Ο ακέραιος z είναι η αναπαράσταση του αρχικού µηνύµατος σε µορφή ακέραιου αριθµού και ακολουθώντας την αντίστροφη διαδικασία µε την οποία τα µηνύµατα µετατρέπονται σε ακεραίους, προκύπτει το αρχικό µήνυµα που επιθυµούσε να στείλει ο Α στον Β. Ο γνωστότερος αλγόριθµος δηµιουργίας ψηφιακών υπογραφών σε κρυπτογραφικά συστήµατα ελλειπτικών καµπυλών είναι ο αλγόριθµος ECDSA. Τα σχήµατα ψηφιακών υπογραφών σχεδιάζονται για να παρέχουν ένα ψηφιακό ισοδύναµο των πραγµατικών υπογραφών. Μια ψηφιακή υπογραφή είναι ένας αριθµός που εξαρτάται από το µυστικό κλειδί του ατόµου που υπογράφει και επιπρόσθετα από το µήνυµα το οποίο υπογράφεται. Οι ψηφιακές υπογραφές πρέπει ακόµα να είναι επαληθεύσιµες. ηλαδή αν κάποια στιγµή υπάρξει αµφιβολία για την προέλευση της υπογραφής, να φαίνεται από ποιον πραγµατικά προήλθε. Για παράδειγµα µπορεί κάποιος να πλαστογραφήσει την υπογραφή ενός άλλου ή µπορεί να υπογράψει ένα µήνυµα και µετά να αρνηθεί ότι το έκανε. Με την επαλήθευση της υπογραφής τα προβλήµατα αυτά λύνονται. Τα βήµατα της δηµιουργίας µιας ψηφιακής υπογραφής µε τον αλγόριθµο ECDSA είναι τα εξής: 1. Επιλέγεται ένας τυχαίος k µε 1 k n 1, όπου n είναι ο µεγαλύτερος πρώτος παράγοντας της τάξης m της ελλειπτικής καµπύλης. 2. Υπολογίζεται το γινόµενο kg = (x 1,y 1 ) όπου G είναι το σηµείο βάσης της ελλειπτικής καµπύλης. Στη συνέχεια υπολογίζεται το r = x 1 (mod n). Αν r = 0 γίνεται επιστροφή στο πρώτο βήµα. 3. Υπολογίζεται η τιµή k -l (mod n). 4. Χρησιµοποιείται η συνάρτηση κατακερµατισµού RIPEMD-160 για να υπολογιστεί η ποσότητα e= RMD (message). ηλαδή στο βήµα αυτό υπολογίζεται η έξοδος της RIPEMD-160 έχοντας σαν είσοδο το µήνυµα που πρόκειται να υπογραφεί. 5. Υπολογίζεται το s = k -l (e + dr) (mod n), όπου d είναι το ιδιωτικό κλειδί του υπογράφοντα. Αν s= 0 γίνεται επιστροφή στο πρώτο βήµα. 6. Επιστρέφεται το ζευγάρι (r, s) που είναι η ψηφιακή υπογραφή. Τα βήµατα της επικύρωσης της υπογραφής (r, s) είναι τα εξής: 1. Υπολογίζεται το e = RMD (message) όπως έγινε και στο κοµµάτι της δηµιουργίας της υπογραφής. 85

96 2. Υπολογίζεται το w = s -1 (mod n). 3. Υπολογίζονται τα u 1 = ew (mod n) και u 2 = rw (mod n). 4. Υπολογίζεται το σηµείο Q = u 1 G + u 2 Q, όπου Q είναι το δηµόσιο κλειδί του υπογράφοντα. Αν το Q είναι ίσο µε το σηµείο στο άπειρο, τότε η υπογραφή απορρίπτεται. Αλλιώς υπολογίζεται το u=x 1 (mod n) όπου x 1 είναι η x συντεταγµένη του σηµείου Q. 5. Η υπογραφή επικυρώνεται αν και µόνο αν u = r Βασικές Επιθέσεις σε Συστήµατα Ελλειπτικών Καµπυλών Τα κρυπτογραφικά συστήµατα ελλειπτικών καµπυλών βασίζονται όπως προαναφέρθηκε στο πρόβληµα ECDLP. Για να µπορέσει εποµένως κάποιος να βρει το ιδιωτικό κλειδί που χρησιµοποιείται στο σύστηµα, θα πρέπει να επιλύσει ένα τέτοιο πρόβληµα. Οι σηµαντικότερες µέθοδοι για την επίλυση αυτού του προβλήµατος ή µε άλλα λόγια, οι σηµαντικότερες επιθέσεις (attacks) είναι: 1. Η επίδεση MOV (MOV attack). Αυτή βασίζεται σε µια αναγωγή του προβλήµατος ECDLP σε µια ελλειπτική καµπύλη Ε(F p ), στο πρόβληµα DLP στο σώµα F p l όπου l είναι ο µικρότερος ακέραιος για τον οποίο ισχύει η εξίσωση p l 1 (mod m) µε m = #Ε(F p ). Για να είναι αποδοτική η επίδεση θα πρέπει ο l να είναι ένας µικρός αριθµός. 2. Η επίθεση σε µη οµαλές καµπύλες (anomalous attack). Οι µη οµαλές καµπύλες είχαν προταθεί από την Miyaji γιατί είναι πολύ ανθεκτικές στην επίθεση MOV. Ωστόσο, οι συγκεκριµένες καµπύλες δεν πρέπει να χρησιµοποιούνται σε κρυπτογραφικά συστήµατα ελλειπτικών καµπυλών αφού έχουν βρεθεί µέθοδοι που επιλύουν το ECDLP σε γραµµικό χρόνο. 3. Η µέθοδος Ελάχιστου βήµατος - γιγάντιου βήµατος (Baby Step Giant Step) BSGS. Η µέθοδος αυτή απαιτεί χώρο και χρόνο της τάξης του Ο ( m ). 4. Με τη χρήση τυχαίων περιπάτων (random walks), ο χώρος που απαιτεί η παραπάνω µέθοδος µπορεί να µειωθεί σηµαντικά, ενώ ο χρόνος επίλυσης του προβλήµατος να µείνει στο Ο ( m ). Αυτό γίνεται µε τις δύο µεθόδους ρο και λάµδα (p-method, λ-method) του Pollard. 5. Η µέθοδος των Pohlig και Hellman ουσιαστικά δεν αποτελεί έναν αλγόριθµο επίλυσης του ECDLP, αλλά µια απλοποίηση που µπορεί να γίνει πάνω στο πρόβληµα. Οι Pohlig και Hellman παρατήρησαν ότι για την επίλυση του ECDLP σε µια ελλειπτική καµπύλη µε τάξη αρκεί να επιλυθούν πολλά ECDLP στις ελλειπτικές καµπύλες µε τάξεις mi, στις οποίες αν εφαρµοστεί για παράδειγµα η µέθοδος ρο του Pollard, θα είναι πιο γρήγορη. Τονίζεται ότι καµία από τις παραπάνω επιθέσεις δεν µπορεί να είναι αποτελεσµατική αν γίνει µια σωστή επιλογή της ελλειπτικής καµπύλης. Ο καλύτερος χρόνος επίλυσης του ECDLP είναι εκθετικός για τις µεθόδους 3 και 4, ενώ οι υπόλοιπες επιθέσεις µπορούν να αποφευχθούν µε την κατάλληλη επιλογή της τάξης της ελλειπτικής καµπύλης. Για να εξασφαλιστεί εποµένως η σθεναρότητα των κρυπτογραφικών συστηµάτων ελλειπτικών καµπυλών, θα πρέπει η τάξη πι κάθε ελλειπτικής καµπύλης Ε(F p ) που χρησιµοποιείται να ικανοποιεί τις συνθήκες του παρακάτω ορισµού. Ορισµός Η τάξη m µιας ελλειπτικής καµπύλης Ε(F p ) καλείται κατάλληλη (suitable), αν ικανοποιεί τις παρακάτω τρεις συνθήκες: 86

97 1. Η m έχει ως παράγοντα έναν αρκετά µεγάλο πρώτο αριθµό (συνήθως µεγαλύτερο από ). 2. Η m δεν είναι ίση µε τον πρώτο αριθµό p. 3. Για κάθε 1 k 20, ισχύει p k 1 (mod m). Με την πρώτη συνθήκη αποφεύγεται η αποδοτική χρήση του αλγορίθµου των Pohlig και Hellman, η δεύτερη συνθήκη κάνει αδύνατη την εφαρµογή των επιθέσεων πάνω σε µη οµαλές καµπύλες, ενώ η τρίτη χρειάζεται για την αποφυγή της επιθέσεως MOV. Σύµφωνα µε τις ήδη υπάρχουσες επιθέσεις και την ισχύ των σύγχρονων υπολογιστικών συστηµάτων, ένα κλειδί πρέπει να έχει µέγεθος τουλάχιστον 160 bits για να θεωρείται ασφαλές. Για αυτό το λόγο, υπάρχει ο περιορισµός στην πρώτη συνθήκη του Ορισµού

98 88

99 Βιβλιογραφία [ 1] Alfred J. Menezes Paul C. van Oorschot Scott A. Vanstone, Handbook of Applied Cryptography, CRC Press, [ 2] Γ. Πάγκαλος Ι. Μαυρίδης, Ασφάλεια Πληροφοριακών Συστηµάτων και ικτύων, Εκδόσεις Ανικούλα, [ 3] Β.Α. Κάτος Γ.Χ. Στεφανίδης, Τεχνικές Κρυπτογραφίας και Κρυπτανάλυσης, Εκδόσεις Ζυγός, [ 4] Joseph Rotman (Απόδωση στα Ελληνικά Νίκος Μαυρίδης), Θεωρία Galois, Εκδόσεις Leader Books, [ 5] Dorothy Elizabeth Robling Denning, Cryptography and Data Security, Addison-Wesley Publishing Company, [ 6] Albrecht Beutelspacher, Cryptology, The Mathematical Association of America, [ 7] V.V. Yaschenko, Cryptography: An Introduction, American Mathematical Society, [ 8] Σταύρος Κορτέσης, Σηµειώσεις Στη Γλώσσα Προγραµµατισµού C, Υπηρεσία δηµοσιευµάτων Αριστοτελείου Πανεπιστηµίου Θεσσαλονίκης. [ 9] Σταύρος Κορτέσης, Εργαστηριακές Σηµειώσεις Στον Αντικειµενοστρεφή Προγραµµατισµό Και τη Γλώσσα C++, Υπηρεσία δηµοσιευµάτων Αριστοτελείου Πανεπιστηµίου Θεσσαλονίκης, [10] Herbert Schildt, Μάθετε Τη C++ Από Το Μηδέν, Εκδόσεις Κλειδάριθµος, [11] Jesse Liberty (Απόδωση στα Ελληνικά Μαρία Γκλαβά), Μάθετε Τη C++ Σε 24 Ώρες, Εκδόσεις Γκιούρδας,

100 [12] Jarrod Hollingworth Bob Swart Mark Cashman Paul Gustavson (Απόδωση στα Ελληνικά Ε. Γκαγκάτσιου), Πλήρες Εγχειρίδιο Borland C++ Builder 6, Εκδόσεις Γκιούρδας, [13] Ελισάβετ Κωνσταντίνου, Θεωρία και εφαρµογές κρυπτογραφικών συστηµάτων δηµοσίου κλειδιού βασισµένων σε ελλειπτικές καµπύλες, ιδακτορική διατριβή, Πανεπιστήµιο Πατρών, [14] Παγκόσµιος Ιστός (

101 ΠΑΡΑΡΤΗΜΑΤΑ Παράρτηµα A : Ο DES ως standard του NBS Παράρτηµα B : Ο κώδικας της υλοποίησης του DES στην C++ 1. DES.cpp 2. DES.h 3. Main.cpp Παράρτηµα Γ : Αναφορές στον τρόπο λειτουργίας των µηχανών Lorentz & Enigma Παράρτηµα : Σχηµατική παρουσίαση του τρόπου λειτουργίας του DES 91

102 92

103 Παράρτηµα A Ο DES ως standard του NBS O DES όπως αναφέραµε και παραπάνω, προέκυψε ως µια λύση για την ολοένα αυξανόµενη απαίτηση για ασφάλεια των κυβερνητικών πληροφοριακών συστηµάτων των Ηνωµένων Πολιτειών. Η επικύρωση του αλγορίθµου έγινε από το NBS (National Bureau of Standards) το οποίο τώρα έχει µετονοµαστεί σε NIST (National Institute of Standards and Technology) µε το παρακάτω έγγραφο. FIPS PUB 46-2 Supersedes FIPS PUB January 22 Federal Information Processing Standards Publication December 30 Announcing the Standard for DATA ENCRYPTION STANDARD (DES) Federal Information Processing Standards Publications (FIPS PUBS) are issued by the National Bureau of Standards in accordance with section 111 (f) (2) of the Federal Property and Administrative Services Act of 1949, as amended, Public Law (79 Stat 1127), Executive Order (38 FR 12315, dated May 11, 1973), and Part 6 of Title 15 Code of Federal Regulations. 1. Name of Standard. Data Encryption Standard (DES). 2. Category of Standard. Computer Security. 93

104 3. Explanation. The Data Encryption Standard (DES) specifies a FIPS approved cryptographic algorithm as required by FIPS This publication provides a complete description of a mathematical algorithm for encrypting (enciphering) and decrypting (deciphering) binary coded information. Encrypting data converts it to an unintelligible form called cipher. Decrypting cipher converts the data back to its original form called plaintext. The algorithm described in this standard specifies both enciphering and deciphering operations which are based on a binary number called a key. A key consists of 64 binary digits ("O"s or "1"s) of which 56 bits are randomly generated and used directly by the algorithm. The other 8 bits, which are not used by the algorithm, are used for error detection. The 8 error detecting bits are set to make the parity of each 8-bit byte of the key odd, i.e., there is an odd number of "1"s in each 8-bit byte 1. Authorized users of encrypted computer data must have the key that was used to encipher the data in order to decrypt it. The encryption algorithm specified in this standard is commonly known among those using the standard. The unique key chosen for use in a particular application makes the results of encrypting data using the algorithm unique. Selection of a different key causes the cipher that is produced for any given set of inputs to be different. The cryptographic security of the data depends on the security provided for the key used to encipher and decipher the data. Data can be recovered from cipher only by using exactly the same key used to encipher it. Unauthorized recipients of the cipher who know the algorithm but do not have the correct key cannot derive the original data algorithmically. However, anyone who does have the key and the algorithm can easily decipher the cipher and obtain the original data. A standard algorithm based on a secure key thus provides a basis for exchanging encrypted computer data by issuing the key used to encipher it to those authorized to have the data. Data that is considered sensitive by the responsible authority, data that has a high value, or data that represents a high value should be cryptographically protected if it is vulnerable to unauthorized disclosure or undetected modification during transmission or while in storage. A risk analysis should be performed under the direction of a responsible authority to determine potential threats. The costs of providing cryptographic protection using this standard as well as alternative methods of providing this protection and their respective costs should be projected. A responsible authority then should make a decision, based on these analyses, whether or not to use cryptographic protection and this standard. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 Sometimes keys are generated in an encrypted form. A random 64-bite number is generated and defined to be the cipher formed by the encryption of a key using a key encrypting key. In this case the parity bits of the encrypted key cannot be set until after the key is decrypted. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4. Approving Authority. Secretary of Commerce. 94

105 5. Maintenance Agency. U.S. Department of Commerce, National Institute of Standards and Technology, Computer Systems Laboratory. 6. Applicability. This standard may be used by Federal departments and agencies when the following conditions apply: 1. An authorized official or manager responsible for data security or the security of any computer system decides that cryptographic protection is required; and The data is not classified according to the National Security Act of 1947, as amended, or the Atomic Energy Act of 1954, as amended. Federal agencies or departments which use cryptographic devices for protecting data classified according to either of these acts can use those devices for protecting unclassified data in lieu of the standard. Other FIPS approved cryptographic algorithms may be used in addition to, or in lieu of, this standard when implemented in accordance with FIPS In addition, this standard may be adopted and used by non-federal Government organizations. Such use is encouraged when it provides the desired security for commercial and private organizations. 7. Applications. Data encryption (cryptography) is utilized in various applications and environments. The specific utilization of encryption and the implementation of the DES will be based on many factors particular to the computer system and its associated components. In general, cryptography is used to protect data while it is being communicated between two points or while it is stored in a medium vulnerable to physical theft. Communication security provides protection to data by enciphering it at the transmitting point and deciphering it at the receiving point. File security provides protection to data by enciphering it when it is recorded on a storage medium and deciphering it when it is read back from the storage medium. In the first case, the key must be available at the transmitter and receiver simultaneously during communication. In the second case, the key must be maintained and accessible for the duration of the storage period. FIPS 171 provides approved methods for managing the keys used by the algorithm specified in this standard. 8. Implementations. Cryptographic modules which implement this standard shall conform to the requirements of FIPS The algorithm specified in this standard may be implemented in software, firmware, hardware, or any combination thereof. The specific implementation may depend on several factors such as the application, the environment, the technology used, etc. Implementations which may comply with this standard include electronic devices (e.g., VLSI chip packages), micro-processors using Read Only Memory (ROM), Programmable Read Only Memory (PROM), or Electronically Erasable Read Only Memory (EEROM), and mainframe computers using Random Access Memory (RAM). When the algorithm is implemented in software or firmware, the processor on which the algorithm runs must be specified as part of the validation process. Implementations of the algorithm which are tested and validated by NIST will be considered as complying with the standard. Note that FIPS places additional requirements on cryptographic modules for Government use. Information about devices that have been validated and procedures for testing and validating equipment for 95

106 conformance with this standard and FIPS are available from the National Institute of Standards and Technology, Computer Systems Laboratory, Gaithersburg, MD Export Control. Cryptographic devices and technical data regarding them are subject to Federal Government export controls as specified in Title 22, Code of Federal Regulations, Parts 120 through 128. Some exports of cryptographic modules implementing this standard and technical data regarding them must comply with these Federal regulations and be licensed by the U.S. Department of State. Other exports of cryptographic modules implementing this standard and technical data regarding them fall under the licensing authority of the Bureau of Export Administration of the U.S. Department of Commerce. The Department of Commerce is responsible for licensing cryptographic devices used for authentication, access control, proprietary software, automatic teller machines (ATMs), and certain devices used in other equipment and software. For advice concerning which agency has licensing authority for a particular cryptographic device, please contact the respective agencies. 10. Patents. Cryptographic devices implementing this standard may be covered by U.S. and foreign patents issued to the International Business Machines Corporation. However, IBM has granted nonexclusive, royalty-free licenses under the patents to make, use and sell apparatus which complies with the standard. The terms, conditions and scope of the licenses are set out in notices published in the May 13, 1975 and August 31, 1976 issues of the Official Gazette of the United States Patent and Trademark Office (934 O.G. 452 and 949 O.G. 1717). 11. Alternative Modes of Using the DES. FIPS PUB 81, DES Modes of Operation, describes four different modes for using the algorithm described in this standard. These four modes are called the Electronic Codebook (ECB) mode, the Cipher Block Chaining (CBC) mode, the Cipher Feedback (CFB) mode, and the Output Feedback (OFB) mode. ECB is a direct application of the DES algorithm to encrypt and decrypt data; CBC is an enhanced mode of ECB which chains together blocks of cipher text; CFB uses previously generated cipher text as input to the DES to generate pseudorandom outputs which are combined with the plaintext to produce cipher, thereby chaining together the resulting cipher; OFB is identical to CFB except that the previous output of the DES is used as input in OFB while the previous cipher is used as input in CFB. OFB does not chain the cipher. 12. Implementation of this standard. This standard became effective July It was reaffirmed in 1983, 1988, and It applies to all Federal agencies, contractors of Federal agencies, or other organizations that process information (using a computer or telecommunications system) on behalf of the Federal Government to accomplish a Federal function. Each Federal agency or department may issue internal directives for the use of this standard by their operating units based on their data security requirement determinations. FIPS 46-2 which revises the implementation of the Data Encryption Algorithm to include software, firmware, hardware, or any combination thereof, is effective June 30, This revised standard may be used in the interim period before the effective date. NIST provides technical assistance to Federal agencies in implementing data encryption through the issuance of guidelines and through individual reimbursable projects. The National Security Agency assists Federal departments and agencies in communications security for classified applications and in 96

107 determining specific security requirements. Instructions and regulations for procuring data processing equipment utilizing this standard are included in the Federal Information Resources Management Regulation (FIRMR) Subpart Specifications. Federal Information Processing Standard (FIPS) 46-2, Data Encryption Standard (DES) (affixed). 14. Cross Index. o o o o o o o o o o o o o a. Federal Information Resources Management Regulations (FIRMR) subpart , Standards, and subpart , Federal Standards. b. FIPS PUB 31, Guidelines to ADP Physical Security and Risk Management. c. FIPS PUB 41, Computer Security Guidelines for Implementing the Privacy Act of d. FIPS PUB 65, Guideline for Automatic Data Processing Risk Analysis. e. FIPS PUB 73, Guidelines for Security of Computer Applications. f. FIPS PUB 74, Guidelines for Implementing and Using the NBS Data Encryption Standard. g. FIPS PUB 81, DES Modes of Operation. h. FIPS PUB 87, Guidelines for ADP Contingency Planning. i. FIPS PUB 112, Password Usage. j. FIPS PUB 113, Computer Data Authentication. k. FIPS PUB 140-1, Security Requirements for Cryptographic Modules. l. FIPS PUB 171, Key Management Using ANSI X9.17. m. Other FIPS and Federal Standards are applicable to the implementation and use of this standard. In particular, the Code for Information Interchange, Its Representations, Subsets, and Extensions (FIPS PUB 1-2) and other related data storage media or data communications standards should be used in conjunction with this standard. A list of currently approved FIPS may be obtained from the National Institute of Standards and Technology, Computer Systems Laboratory, Gaithersburg, MD Qualifications. The cryptographic algorithm specified in this standard transforms a 64-bit binary value into a unique 64-bit binary value based on a 56-bit variable. If the complete 64-bit input is used (i.e., none of the input bits should be predetermined from block to block) and if the 56-bit variable is randomly chosen, no technique other than trying all possible keys using known input and output for the DES will guarantee finding the chosen key. As there are over 70,000,000,000,000,000 (seventy quadrillion) possible keys of 56 bits, the feasibility of deriving a particular key in this way is extremely unlikely in typical threat environments. Moreover, if the key is changed frequently, the risk of this 97

108 event is greatly diminished. However, users should be aware that it is theoretically possible to derive the key in fewer trials (with a correspondingly lower probability of success depending on the number of keys tried) and should be cautioned to change the key as often as practical. Users must change the key and provide it a high level of protection in order to minimize the potential risks of its unauthorized computation or acquisition. The feasibility of computing the correct key may change with advances in technology. A more complete description of the strength of this algorithm against various threats is contained in FIPS PUB 74, Guidelines for Implementing and Using the NBS Data Encryption Standard. When correctly implemented and properly used, this standard will provide a high level of cryptographic protection to computer data. NIST, supported by the technical assistance of Government agencies responsible for communication security, has determined that the algorithm specified in this standard will provide a high level of protection for a time period beyond the normal life cycle of its associated equipment. The protection provided by this algorithm against potential new threats will be reviewed within 5 years to assess its adequacy (See Special Information Section). In addition, both the standard and possible threats reducing the security provided through the use of this standard will undergo continual review by NIST and other cognizant Federal organizations. The new technology available at that time will be evaluated to determine its impact on the standard. In addition, the awareness of any breakthrough in technology or any mathematical weakness of the algorithm will cause NIST to reevaluate this standard and provide necessary revisions. At the next review (1998), the algorithm specified in this standard will be over twenty years old. NIST will consider alternatives which offer a higher level of security. One of these alternatives may be proposed as a replacement standard at the 1998 review. 16. Comments. Comments and suggestions regarding this standard and its use are welcomed and should be addressed to the National Institute of Standards and Technology, Attn: Director, Computer Systems Laboratory, Gaithersburg, MD Waiver Procedure. Under certain exceptional circumstances, the heads of Federal departments and agencies may approve waivers to Federal Information Processing Standards (FIPS). The head of such agency may redelegate such authority only to a senior official designated pursuant to section 3506(b) of Title 44, United States Code. Waiver shall be granted only when: a. Compliance with a standard would adversely affect the accomplishment of the mission of an operator of a Federal computer system; or b. Compliance with a standard would cause a major adverse financial impact on the operator which is not offset by Government-wide savings. Agency heads may act upon a written waiver request containing the information detailed above. Agency heads may also act without a written waiver request when they determine that conditions for meeting the standard cannot be met. Agency heads may approve waivers only by a written decision 98

109 which explains the basis on which the agency head made the required finding(s). A copy of each decision, with procurement sensitive or classified portions clearly identified, shall be sent to: National Institute of Standards and Technology; ATTN: FIPS Waiver Decisions, Technology Building, Room B-154, Gaithersburg, MD In addition, notice of each waiver granted and each delegation of authority to approve waivers shall be sent promptly to the Committee on Government Operations of the House of Representatives and the Committee on Government Affairs of the Senate and shall be published promptly in the Federal Register. When the determination on a waiver applies to the procurement of equipment and/or services, a notice of the waiver determination must be published in the Commerce Business Daily as a part of the notice of solicitation for offers of an acquisition or, if the waiver determination is made after that notice is published, by amendment to such notice. A copy of the waiver, any supporting documents, the document approving the waiver and any accompanying documents, with such deletions as the agency is authorized and decides to make under 5 United States Code Section 552(b), shall be part of the procurement documentation and retained by the agency. 18. Special Information. In accordance with the Qualifications Section of this standard, reviews of this standard have been conducted every 5 years since its adoption in The standard was reaffirmed during each of those reviews. This revision to the text of the standard contains changes which allow software implementations of the algorithm and which permit the use of other FIPS approved cryptographic algorithms. 19. Where to Obtain Copies of the Standard. Copies of this publication are for sale by the National Technical Information Service, U.S. Department of Commerce, Springfield, VA When ordering, refer to Federal Information Processing Standards Publication 46-2 (FIPS PUB 46-2), and identify the title. When microfiche is desired, this should be specified. Prices are published by NTIS in current catalogs and other issuances. Payment may be made by check, money order, deposit account or charged to a credit card accepted by NTIS. FIPS PUB 44-2 Supersedes FIPS PUB January 22 Federal Information Processing Standards Publication

110 1993 December 30 Specifications for DATA ENCRYPTION STANDARD The Data Encryption Standard (DES) shall consist of the following Data Encryption Algorithm to be implemented in special purpose electronic devices. These devices shall be designed in such a way that they may be used in a computer system or network to provide cryptographic protection to binary coded data. The method of implementation will depend on the application and environment. The devices shall be implemented in such a way that they may be tested and validated as accurately performing the transformations specified in the following algorithm. DATA ENCRYPTION ALGORITHM Introduction The algorithm is designed to encipher and decipher blocks of data consisting of 64 bits under control of a 64-bit key.** Deciphering must be accomplished by using the same key as for enciphering, but with the schedule of addressing the key bits altered so that the deciphering process is the reverse of the enciphering process. A block to be enciphered is subjected to an initial permutation IP, then to a complex key-dependent computation and finally to a permutation which is the inverse of the initial permutation IP -1. The key-dependent computation can be simply defined in terms of a function f, called the cipher function, and a function KS, called the key schedule. A description of the computation is given first, along with details as to how the algorithm is used for encipherment. Next, the use of the algorithm for decipherment is described. Finally, a definition of the cipher function f is given in terms of primitive functions which are called the selection functions S i and the permutation function P. S i, P and KS of the algorithm are contained in the Appendix. The following notation is convenient: Given two blocks L and R of bits, LR denotes the block consisting of the bits of L followed by the bits of R. Since concatenation is associative, B 1 B 2...B 8, for example, denotes the block consisting of the bits of B 1 followed by the bits of B 2...followed by the bits of B 8. ** Blocks are composed of bits numbered from left to right, i.e., the left most bit of a block is bit one. Figure 1. Enciphering computation. 100

111 Enciphering A sketch of the enciphering computation is given in Figure 1. The 64 bits of the input block to be enciphered are first subjected to the following permutation, called the initial permutation IP: IP That is the permuted input has bit 58 of the input as its first bit, bit 50 as its second bit, and so on with bit 7 as its last bit. The permuted input block is then the input to a complex key-dependent computation described below. The output of that computation, called the preoutput, is then subjected to the following permutation which is the inverse of the initial permutation: IP That is, the output of the algorithm has bit 40 of the preoutput block as its first bit, bit 8 as its second bit, and so on, until bit 25 of the preoutput block is the last bit of the output. The computation which uses the permuted input block as its input to produce the preoutput block consists, but for a final interchange of blocks, of 16 iterations of a calculation that is described below in terms of the cipher function f which operates on two blocks, one of 32 bits and one of 48 bits, and produces a block of 32 bits. Let the 64 bits of the input block to an iteration consist of a 32 bit block L followed by a 32 bit block R. Using the notation defined in the introduction, the input block is then LR. 101

112 Let K be a block of 48 bits chosen from the 64-bit key. Then the output L'R' of an iteration with input LR is defined by: (1) L' = R R' = L(+)f(R,K) where (+) denotes bit-by-bit addition modulo 2. As remarked before, the input of the first iteration of the calculation is the permuted input block. If L'R' is the output of the 16th iteration then R'L' is the preoutput block. At each iteration a different block K of key bits is chosen from the 64-bit key designated by KEY. With more notation we can describe the iterations of the computation in more detail. Let KS be a function which takes an integer n in the range from 1 to 16 and a 64-bit block KEY as input and yields as output a 48-bit block K n which is a permuted selection of bits from KEY. That is (2) K n = KS(n,KEY) with K n determined by the bits in 48 distinct bit positions of KEY. KS is called the key schedule because the block K used in the n'th iteration of (1) is the block K n determined by (2). As before, let the permuted input block be LR. Finally, let L () and R () be respectively L and R and let Ln and Rn be respectively L' and R' of (1) when L and R are respectively L n-1 and R n-1 and K is K n ; that is, when n is in the range from 1 to 16, (3) L n = R n-1 R n n = L n-1 (+)f(r n-1,k n ) The preoutput block is then R 16 L 16. The key schedule KS of the algorithm is described in detail in the Appendix. The key schedule produces the 16 K n which are required for the algorithm. Deciphering The permutation IP -1 applied to the preoutput block is the inverse of the initial permutation IP applied to the input. Further, from (1) it follows that: (4) R = L' L = R' (+) f(l',k) Consequently, to decipher it is only necessary to apply the very same algorithm to an enciphered message block, taking care that at each iteration of the computation the same block of key bits K is used during decipherment as was used during the encipherment of the block. Using the notation of the previous section, this can be expressed by the equations: 102

113 (5) R n-1 = L n L n-1 = R n (+) f(l n,k n ) where now R 16 L 16 is the permuted input block for the deciphering calculation and L () and R () is the preoutput block. That is, for the decipherment calculation with R 16 L 16 as the permuted input, K 16 is used in the first iteration, K 15 in the second, and so on, with K 1 used in the 16th iteration. The Cipher Function f A sketch of the calculation of f(r,k) is given in Figure 2. Figure 2. Calculation of f(r,k). Let E denote a function which takes a block of 32 bits as input and yields a block of 48 bits as output. Let E be such that the 48 bits of its output, written as 8 blocks of 6 bits each, are obtained by selecting the bits in its inputs in order according to the following table: E BIT-SELECTION TABLE Thus the first three bits of E(R) are the bits in positions 32, 1 and 2 of R while the last 2 bits of E(R) are the bits in positions 32 and 1. Each of the unique selection functions S 1,S 2,...,S 8, takes a 6-bit block as input and yields a 4-bit block as output and is illustrated by using a table containing the recommended S 1 : S 1 Column Number Row No

114 If S 1 is the function defined in this table and B is a block of 6 bits, then S 1 (B)is determined as follows: The first and last bits of B represent in base 2 a number in the range 0 to 3. Let that number be i. The middle 4 bits of B represent in base 2 a number in the range 0 to 15. Let that number be j. Look up in the table the number in the i'th row and j'th column. It is a number in the range 0 to 15 and is uniquely represented by a 4 bit block. That block is the output S 1 (B) of S 1 for the input B. For example, for input the row is 01, that is row 1, and the column is determined by 1101, that is column 13. In row 1 column 13 appears 5 so that the output is Selection functions S 1,S 2,...,S 8 of the algorithm appear in the Appendix. The permutation function P yields a 32-bit output from a 32-bit input by permuting the bits of the input block. Such a function is defined by the following table: P The output P(L) for the function P defined by this table is obtained from the input L by taking the 16th bit of L as the first bit of P(L), the 7th bit as the second bit of P(L), and so on until the 25th bit of L is taken as the 32nd bit of P(L). The permutation function P of the algorithm is repeated in the Appendix. Now let S 1,...,S 8 be eight distinct selection functions, let P be the permutation function and let E be the function defined above. To define f(r,k) we first define B 1,...,B 8 to be blocks of 6 bits each for which (6) B 1 B 2...B 8 = K(+)E(R) The block f(r,k) is then defined to be (7) P(S 1 (B 1 )S 2 (B 2 )...S 8(B 8 )) 104

115 Thus K(+)E(R) is first divided into the 8 blocks as indicated in (6). Then each B i is taken as an input to S i and the 8 blocks (S 1 (B 1 )S 2 (B 2 )...S8(B 8 ) of 4 bits each are consolidated into a single block of 32 bits which forms the input to P. The output (7) is then the output of the function f for the inputs R and K. APPENDIX PRIMITIVE FUNCTIONS FOR THE DATA ENCRYPTION ALGORITHM The choice of the primitive functions KS, S 1,...,S 8 and P is critical to the strength of an encipherment resulting from the algorithm. Specified below is the recommended set of functions, describing S 1,...,S 8 and P in the same way they are described in the algorithm. For the interpretation of the tables describing these functions, see the discussion in the body of the algorithm. The primitive functions S 1,...,S 8 are: S O O 6 13 S O S O S O O

116 S O O O S O O S S The primitive function P is:

117 Recall that K n, for 1<= n <= 16, is the block of 48 bits in (2) of the algorithm. Hence, to describe KS, it is sufficient to describe the calculation of K n from KEY for n = 1, 2,..., 16. That calculation is illustrated in Figure 3. To complete the definition of KS it is therefore sufficient to describe the two permuted choices, as well as the schedule of left shifts. One bit in each 8-bit byte of the KEY may be utilized for error detection in key generation, distribution and storage. Bits 8, 16,..., 64 are for use in assuring that each byte is of odd parity. Permuted choice 1 is determined by the following table: PC The table has been divided into two parts, with the first part determining how the bits of C () are chosen, and the second part determining how the bits of D () are chosen. The bits of KEY are numbered 1 through 64. The bits of C () are respectively bits 57, 49, 41,..., 44 and 36 of KEY, with the bits of D () being bits 63, 55, 47,..., 12 and 4 of KEY. With C () and D () defined, we now define how the blocks C n and D n are obtained from the blocks C n-1 and D n-1, respectively, for n = 1, 2,..., 16. That is accomplished by adhering to the following schedule of left shifts of the individual blocks: Figure 3. Key schedule calculation. Iteration Number Number of Left Shifts

118 For example, C 3 and D 3 are obtained from C 2 and D 2, respectively, by two left shifts, and C 16 and D 16 are obtained from C 15 and D 15, respectively, by one left shift. In all cases, by a single left shift is meant a rotation of the bits one place to the left, so that after one left shift the bits in the 28 positions are the bits that were previously in positions 2, 3,..., 28, 1. Permuted choice 2 is determined by the following table: PC Therefore, the first bit of K n is the 14th bit of C n D n, the second bit the 17th, and so on with the 47th bit the 29th, and the 48th bit the 32nd. The Foreword, Abstract, and Key Words follow: FIPS PUB 46-2 FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION 108

119 1993 December 30 U.S. DEPARTMENT OF COMMERCE/National Institute of Standards and Technology DATA ENCRYPTION STANDARD (DES) U.S. DEPARTMENT OF COMMERCE, Ronald H. Brown, Secretary Technology Administration, Mary L. Good, Undersecretary for Technlogy National Institute of Standards and Technology, Arati Prabhakar, Director Foreword The Federal Information Processing Standards Publication Series of the National Bureau of Standards (NBS) is the official publication relating to standards, guidelines, and documents adopted and promulgated under the provisions of Public Law (Brooks Act) and under Part 6 of Title 15, Code of Federal Regulations. These legislative and executive mandates have given the Secretary of Commerce important responsibilities for improving the utilization and management of computers and automatic data processing in the Federal Government. To carry out the Secretary's responsibilities, the NBS, through its Institute for Computer Sciences and Technology, provides leadership, technical guidance, and coordination of Government efforts in the development of standards, guide-lines and documents in these areas. Comments concerning Federal Information Processing Standards Publications are welcomed and should be addressed to the Director, Institute for Computer Sciences and Technology, National Bureau of Standards, Gaithersburg, MD James H. Burrows, Director Institute for Computer Sciences and Technology Abstract The selective application of technological and related procedual safeguards is an important responsibility of every Federal organization in providing adequate security to its electronic data systems. This publication specifies a cryptographic algorithm which may be used by Federal organizations to protect sensitive data. Protection of data during transmission or while in storage may be necessary to maintain the confidentiality and integrity of the information represented by the data. The algorithm uniquely defines the mathematical steps required to transform data into a cryptographic cipher and also to transform the cipher back to the original form. The Data Encryption Standard is being made available for use by Federal agencies within the context of a total security program consisting of physical security procedures, good information management practices, and computer system/network access controls. This revision supersedes FIPS 46-1 in its entirety. Key words: computer security; data encryption standard; encryption; Federal Information Processing Standard (FIPS); security. 109

120 110

121 Παράρτηµα B Ο κώδικας της υλοποίησης του DES στην C++ Εκτός από την µελέτη της κρυπτογραφίας γενικότερα αλλά και του κρυπτογραφικού αλγορίθµου DES ειδικότερα, στόχος αυτής της εργασίας ήταν και η υλοποίηση του αλγορίθµου DES µε λογισµίκο, σε γλώσσα C++, για κρυπτογράφηση κειµένων µε κωδικοπίηση ASCII. Παρακάτω παρουσιάζεται ο πηγαίος κώδικας σε γλώσσα C++ των τριών αρχείων που χρειάζονται για την υλοποίηση του αλγορίθµου. 1. DES.h // DES.h: interface for the CDES class. // ////////////////////////////////////////////////////////////////////// #if!defined(afx_des_h 73DFD70F_BB37_4FD4_942C_54906CE719A1 INCLUDED_) #define AFX_DES_H 73DFD70F_BB37_4FD4_942C_54906CE719A1 INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define DES #ifdef SDES #define KEY_TOTAL_LENGTH 10 #define KEY_USED_BITS

122 #define NO_OF_KEYS 2 #define KEY_P_LENGTH 8 #define DATA_LENGTH 8 #define SROWS 4 #define SCOLS 4 #define NO_OF_S 2 #else if defined DES #define KEY_TOTAL_LENGTH 64 #define KEY_USED_BITS 56 #define NO_OF_KEYS 16 #define KEY_P_LENGTH 48 #define DATA_LENGTH 64 #define SROWS 4 #define SCOLS 16 #define NO_OF_S 8 #endif class CDES public: char* Decrypt(); char* Encrypt(); CDES(char* data, char* key); virtual ~CDES(); private: void GenKeys(); char* PermuteSres_DES(char*); char* JoinSres_DES(char*,char*,char*,char*,char*,char*,char*,char*); void FillS7_DES(); void FillS6_DES(); void FillS5_DES(); void FillS4_DES(); void FillS3_DES(); void FillS2_DES(); void FillS1_DES(); void FillS0_DES(); void FillAllS(); char* IPInverse(char*); char* Switch(char*); char* FKFunction(char*,int); char* FKFinal(char*,char*); 112

123 char* XORLandP(char*,char*); void print(char*,int); void SampleKeys(); char* PermuteSres(char*); char* JoinSres(char*,char*); char* Bin2bit(int); char* Bin4bit(int); int Dec2bit(char,char); int Dec4bit(char,char,char,char); int GetValue(int,int,int); char* GetSValue(char*,int); void FillS1_SDES(); void FillS0_SDES(); char XOR(char,char); char* XORwithKey(char*,int); char* ExtendedPermutation(char*); char* DataIP(); char* DataIP_DES(); void keypermutationa(char*,int); char* JoinShifted(char*,char*); char* LeftShift(char*, char, int); char* keyipermutation(); char data[data_length]; char Compkey[KEY_TOTAL_LENGTH]; char key[no_of_keys][key_p_length]; }; int S[NO_OF_S][SROWS][SCOLS]; #endif //!defined(afx_des_h 73DFD70F_BB37_4FD4_942C_54906CE719A1 INCLUDED_) 2. DES.cpp // DES.cpp: implementation of the CDES class. // ////////////////////////////////////////////////////////////////////// #include <iostream.h> #include <string.h> #include <stdlib.h> #include "DES.h" 113

124 ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CDES::CDES(char* data, char* key) strcpy(this->data,data); this->data[strlen(this->data)] = '\0'; strcpy(this->compkey,key); this->compkey[strlen(this->compkey)] = '\0'; cout << endl << "DATA:"; print(this->data,data_length); cout << endl << "KEY:"; print(this->compkey,key_total_length); FillAllS(); // SampleKeys(); } CDES::~CDES() } char* CDES::Encrypt() // Calculate Keys GenKeys(); // Begin Encryption #ifdef SDES char *ip = DataIP(); // Initial Permutation on Input bits #else char *ip = DataIP_DES(); #endif cout << endl << "Initial Permutation"; print(ip,data_length); char *loopdata = ip; char *FKr; 114

125 for (int i = 1 ; i <= NO_OF_KEYS ; i++) FKr = FKFunction(loopData,i); cout << endl << "FK" << i << " Result"; print(fkr,data_length); if (i!= NO_OF_KEYS) loopdata = Switch(FKr); } } else } cout << endl << "Switch Result"; print(loopdata,data_length); loopdata = FKr; char *IPinv = IPInverse(loopData); cout << endl << "IP Inverse"; print(ipinv,data_length); } return IPinv; char* CDES::keyIPermutation() #ifdef SDES char *keyp = new char[key_total_length]; keyp[0] = Compkey[3-1]; keyp[1] = Compkey[5-1]; keyp[2] = Compkey[2-1]; keyp[3] = Compkey[7-1]; keyp[4] = Compkey[4-1]; keyp[5] = Compkey[10-1]; keyp[6] = Compkey[1-1]; keyp[7] = Compkey[9-1]; keyp[8] = Compkey[8-1]; keyp[9] = Compkey[6-1]; 115

126 #else char *keyp = new char[key_used_bits]; keyp[0] = Compkey[57-1]; keyp[1] = Compkey[49-1]; keyp[2] = Compkey[41-1]; keyp[3] = Compkey[33-1]; keyp[4] = Compkey[25-1]; keyp[5] = Compkey[17-1]; keyp[6] = Compkey[9-1]; keyp[7] = Compkey[1-1]; keyp[8] = Compkey[58-1]; keyp[9] = Compkey[50-1]; keyp[10] = Compkey[42-1]; keyp[11] = Compkey[34-1]; keyp[12] = Compkey[26-1]; keyp[13] = Compkey[18-1]; keyp[14] = Compkey[10-1]; keyp[15] = Compkey[2-1]; keyp[16] = Compkey[59-1]; keyp[17] = Compkey[51-1]; keyp[18] = Compkey[43-1]; keyp[19] = Compkey[35-1]; keyp[20] = Compkey[27-1]; keyp[21] = Compkey[19-1]; keyp[22] = Compkey[11-1]; keyp[23] = Compkey[3-1]; keyp[24] = Compkey[60-1]; keyp[25] = Compkey[52-1]; keyp[26] = Compkey[44-1]; keyp[27] = Compkey[63-1]; keyp[28] = Compkey[63-1]; keyp[29] = Compkey[55-1]; keyp[30] = Compkey[47-1]; keyp[31] = Compkey[39-1]; keyp[32] = Compkey[31-1]; keyp[33] = Compkey[23-1]; keyp[34] = Compkey[15-1]; keyp[35] = Compkey[7-1]; keyp[36] = Compkey[62-1]; keyp[37] = Compkey[54-1]; keyp[38] = Compkey[46-1]; keyp[39] = Compkey[38-1]; 116

127 keyp[40] = Compkey[30-1]; keyp[41] = Compkey[22-1]; keyp[42] = Compkey[14-1]; keyp[43] = Compkey[6-1]; keyp[44] = Compkey[61-1]; keyp[45] = Compkey[53-1]; keyp[46] = Compkey[45-1]; keyp[47] = Compkey[37-1]; keyp[48] = Compkey[29-1]; keyp[49] = Compkey[21-1]; keyp[50] = Compkey[13-1]; keyp[51] = Compkey[5-1]; keyp[52] = Compkey[28-1]; keyp[53] = Compkey[20-1]; keyp[54] = Compkey[12-1]; keyp[55] = Compkey[4-1]; #endif } return keyp; char* CDES::LeftShift(char *keypf, char LorR, int bits) char *sbits = new char[key_used_bits/2]; int i,k; if (LorR == 'L') // shift left bits for (i = 0,k = 0 ; i < (KEY_USED_BITS/2) ; i++,k++) sbits[i] = keypf[k]; } } else if (LorR == 'R') // shift right bits for (i = 0,k = (KEY_USED_BITS/2) ; i < (KEY_USED_BITS/2) ; i++,k++) sbits[i] = keypf[k]; } } char temb; 117

128 // Shift the Bits for (i = 1 ; i <= bits ; i++) temb = sbits[(key_used_bits/2)-1]; for (int k = 0 ; k < (KEY_USED_BITS/2) ; k++) if ((KEY_USED_BITS/2)-1 == k) sbits[(k+((key_used_bits/2)-1)) % (KEY_USED_BITS/2)] = temb; else sbits[(k+((key_used_bits/2)-1)) % (KEY_USED_BITS/2)] = sbits[k]; } } } return sbits; char* CDES::JoinShifted(char *Lbits, char *Rbits) char *key1 = new char[key_used_bits]; int i,j; for (i = 0 ; i < (KEY_USED_BITS/2) ; i++) key1[i] = Lbits[i]; } for (i = (KEY_USED_BITS/2),j = 0 ; j < (KEY_USED_BITS/2) ; i++,j++) key1[i] = Rbits[j]; } } return key1; void CDES::keyPermutationA(char *keyjoined,int k) #ifdef SDES key[k-1][0] = keyjoined[6-1]; key[k-1][1] = keyjoined[3-1]; key[k-1][2] = keyjoined[7-1]; 118

129 #else key[k-1][3] = keyjoined[4-1]; key[k-1][4] = keyjoined[8-1]; key[k-1][5] = keyjoined[5-1]; key[k-1][6] = keyjoined[10-1]; key[k-1][7] = keyjoined[9-1]; key[k-1][0] = keyjoined[14-1]; key[k-1][1] = keyjoined[17-1]; key[k-1][2] = keyjoined[11-1]; key[k-1][3] = keyjoined[24-1]; key[k-1][4] = keyjoined[1-1]; key[k-1][5] = keyjoined[5-1]; key[k-1][6] = keyjoined[3-1]; key[k-1][7] = keyjoined[28-1]; key[k-1][8] = keyjoined[15-1]; key[k-1][9] = keyjoined[6-1]; key[k-1][10] = keyjoined[21-1]; key[k-1][11] = keyjoined[10-1]; key[k-1][12] = keyjoined[23-1]; key[k-1][13] = keyjoined[19-1]; key[k-1][14] = keyjoined[12-1]; key[k-1][15] = keyjoined[4-1]; key[k-1][16] = keyjoined[26-1]; key[k-1][17] = keyjoined[8-1]; key[k-1][18] = keyjoined[16-1]; key[k-1][19] = keyjoined[7-1]; key[k-1][20] = keyjoined[27-1]; key[k-1][21] = keyjoined[20-1]; key[k-1][22] = keyjoined[13-1]; key[k-1][23] = keyjoined[2-1]; key[k-1][24] = keyjoined[41-1]; key[k-1][25] = keyjoined[52-1]; key[k-1][26] = keyjoined[31-1]; key[k-1][27] = keyjoined[37-1]; key[k-1][28] = keyjoined[47-1]; key[k-1][29] = keyjoined[55-1]; key[k-1][30] = keyjoined[30-1]; key[k-1][31] = keyjoined[40-1]; key[k-1][32] = keyjoined[51-1]; key[k-1][33] = keyjoined[45-1]; key[k-1][34] = keyjoined[33-1]; key[k-1][35] = keyjoined[48-1]; key[k-1][36] = keyjoined[44-1]; 119

130 key[k-1][37] = keyjoined[49-1]; key[k-1][38] = keyjoined[39-1]; key[k-1][39] = keyjoined[56-1]; key[k-1][40] = keyjoined[34-1]; key[k-1][41] = keyjoined[53-1]; key[k-1][42] = keyjoined[46-1]; key[k-1][43] = keyjoined[42-1]; key[k-1][44] = keyjoined[50-1]; key[k-1][45] = keyjoined[36-1]; key[k-1][46] = keyjoined[29-1]; key[k-1][47] = keyjoined[32-1]; #endif } char* CDES::DataIP() char *dataip = new char[data_length]; dataip[0] = data[2-1]; dataip[1] = data[6-1]; dataip[2] = data[3-1]; dataip[3] = data[1-1]; dataip[4] = data[4-1]; dataip[5] = data[8-1]; dataip[6] = data[5-1]; dataip[7] = data[7-1]; } return dataip; char* CDES::DataIP_DES() char *dataip = new char[data_length]; dataip[0] = data[58-1]; dataip[1] = data[50-1]; dataip[2] = data[42-1]; dataip[3] = data[34-1]; dataip[4] = data[26-1]; dataip[5] = data[18-1]; dataip[6] = data[10-1]; dataip[7] = data[2-1]; dataip[8] = data[60-1]; 120

131 dataip[9] = data[52-1]; dataip[10] = data[44-1]; dataip[11] = data[36-1]; dataip[12] = data[28-1]; dataip[13] = data[20-1]; dataip[14] = data[12-1]; dataip[15] = data[4-1]; dataip[16] = data[62-1]; dataip[17] = data[54-1]; dataip[18] = data[46-1]; dataip[19] = data[38-1]; dataip[20] = data[30-1]; dataip[21] = data[22-1]; dataip[22] = data[14-1]; dataip[23] = data[6-1]; dataip[24] = data[64-1]; dataip[25] = data[56-1]; dataip[26] = data[48-1]; dataip[27] = data[40-1]; dataip[28] = data[32-1]; dataip[29] = data[24-1]; dataip[30] = data[16-1]; dataip[31] = data[8-1]; dataip[32] = data[57-1]; dataip[33] = data[49-1]; dataip[34] = data[41-1]; dataip[35] = data[33-1]; dataip[36] = data[25-1]; dataip[37] = data[17-1]; dataip[38] = data[9-1]; dataip[39] = data[1-1]; dataip[40] = data[59-1]; dataip[41] = data[51-1]; dataip[42] = data[43-1]; dataip[43] = data[35-1]; dataip[44] = data[27-1]; dataip[45] = data[19-1]; dataip[46] = data[11-1]; dataip[47] = data[3-1]; dataip[48] = data[61-1]; dataip[49] = data[53-1]; dataip[50] = data[45-1]; dataip[51] = data[37-1]; 121

132 dataip[52] = data[29-1]; dataip[53] = data[21-1]; dataip[54] = data[13-1]; dataip[55] = data[5-1]; dataip[56] = data[63-1]; dataip[57] = data[55-1]; dataip[58] = data[47-1]; dataip[59] = data[39-1]; dataip[60] = data[31-1]; dataip[61] = data[23-1]; dataip[62] = data[15-1]; dataip[63] = data[7-1]; } return dataip; char* CDES::ExtendedPermutation(char *right) char* ep = new char[key_p_length]; int i = DATA_LENGTH/2; #ifdef SDES ep[0] = right[i+4-1]; ep[1] = right[i+1-1]; ep[2] = right[i+2-1]; ep[3] = right[i+3-1]; ep[4] = right[i+2-1]; ep[5] = right[i+3-1]; ep[6] = right[i+4-1]; ep[7] = right[i+1-1]; #else ep[0] = right[i+32-1]; ep[1] = right[i+1-1]; ep[2] = right[i+2-1]; ep[3] = right[i+3-1]; ep[4] = right[i+4-1]; ep[5] = right[i+5-1]; ep[6] = right[i+4-1]; ep[7] = right[i+5-1]; ep[8] = right[i+6-1]; ep[9] = right[i+7-1]; ep[10] = right[i+8-1]; 122

133 #endif ep[11] = right[i+9-1]; ep[12] = right[i+8-1]; ep[13] = right[i+9-1]; ep[14] = right[i+10-1]; ep[15] = right[i+11-1]; ep[16] = right[i+12-1]; ep[17] = right[i+13-1]; ep[18] = right[i+12-1]; ep[19] = right[i+13-1]; ep[20] = right[i+14-1]; ep[21] = right[i+15-1]; ep[22] = right[i+16-1]; ep[23] = right[i+17-1]; ep[24] = right[i+16-1]; ep[25] = right[i+17-1]; ep[26] = right[i+18-1]; ep[27] = right[i+19-1]; ep[28] = right[i+20-1]; ep[29] = right[i+21-1]; ep[30] = right[i+20-1]; ep[31] = right[i+21-1]; ep[32] = right[i+22-1]; ep[33] = right[i+23-1]; ep[34] = right[i+24-1]; ep[35] = right[i+25-1]; ep[36] = right[i+24-1]; ep[37] = right[i+25-1]; ep[38] = right[i+26-1]; ep[39] = right[i+27-1]; ep[40] = right[i+28-1]; ep[41] = right[i+29-1]; ep[42] = right[i+28-1]; ep[43] = right[i+29-1]; ep[44] = right[i+30-1]; ep[45] = right[i+31-1]; ep[46] = right[i+32-1]; ep[47] = right[i+1-1]; } return ep; 123

134 char* CDES::XORwithKey(char *b, int k) char *result = new char[data_length]; int i; for (i = 0 ; i < DATA_LENGTH ; i++) result[i] = XOR(b[i],key[k-1][i]); } } return result; char CDES::XOR(char a, char b) if (a == b) return '0'; else return '1'; } void CDES::FillS0_SDES() S[0][0][0] = 1; S[0][0][1] = 0; S[0][0][2] = 3; S[0][0][3] = 2; S[0][1][0] = 3; S[0][1][1] = 2; S[0][1][2] = 1; S[0][1][3] = 0; S[0][2][0] = 0; S[0][2][1] = 2; S[0][2][2] = 1; S[0][2][3] = 3; } S[0][3][0] = 3; S[0][3][1] = 1; S[0][3][2] = 3; S[0][3][3] = 2; 124

135 void CDES::FillS1_SDES() S[1][0][0] = 0; S[1][0][1] = 1; S[1][0][2] = 2; S[1][0][3] = 3; S[1][1][0] = 2; S[1][1][1] = 0; S[1][1][2] = 1; S[1][1][3] = 3; S[1][2][0] = 3; S[1][2][1] = 0; S[1][2][2] = 1; S[1][2][3] = 0; } S[1][3][0] = 2; S[1][3][1] = 1; S[1][3][2] = 0; S[1][3][3] = 3; char* CDES::GetSValue(char *b, int s) char ra,rb,ca,cb; char* svalue; #ifdef SDES if (s == 0) ra = b[1-1]; rb = b[4-1]; ca = b[2-1]; cb = b[3-1]; } else if (s == 1) ra = b[5-1]; rb = b[8-1]; // value from S0 // value from S1 125

136 } ca = b[6-1]; cb = b[7-1]; #else svalue = Bin2bit(GetValue(Dec2bit(ra,rb),Dec2bit(ca,cb),s)); char cc,cd; if (s == 0) ra = b[1-1]; rb = b[6-1]; ca = b[2-1]; cb = b[3-1]; cc = b[4-1]; cd = b[5-1]; } else if (s == 1) ra = b[7-1]; rb = b[12-1]; ca = b[8-1]; cb = b[9-1]; cc = b[10-1]; cd = b[11-1]; } else if (s == 2) ra = b[13-1]; rb = b[18-1]; ca = b[14-1]; cb = b[15-1]; cc = b[16-1]; cd = b[17-1]; } else if (s == 3) ra = b[19-1]; rb = b[24-1]; 126

137 ca = b[20-1]; cb = b[21-1]; cc = b[22-1]; cd = b[23-1]; } else if (s == 4) ra = b[25-1]; rb = b[30-1]; ca = b[26-1]; cb = b[27-1]; cc = b[28-1]; cd = b[29-1]; } else if (s == 5) ra = b[31-1]; rb = b[36-1]; ca = b[32-1]; cb = b[33-1]; cc = b[34-1]; cd = b[35-1]; } else if (s == 6) ra = b[37-1]; rb = b[42-1]; ca = b[38-1]; cb = b[39-1]; cc = b[40-1]; cd = b[41-1]; } else if (s == 7) ra = b[43-1]; rb = b[48-1]; ca = b[44-1]; cb = b[45-1]; cc = b[46-1]; 127

138 } cd = b[47-1]; svalue = Bin4bit(GetValue(Dec2bit(ra,rb),Dec4bit(ca,cb,cc,cd),s)); #endif return svalue; } int CDES::GetValue(int a, int b, int s) cout << endl << "Getting S" << s << " value of " << a << " " << b; } return S[s][a][b]; int CDES::Dec2bit(char a, char b) if (a == '0' && b == '0') return 0; else if (a == '0' && b == '1') return 1; else if (a == '1' && b == '0') return 2; else return 3; } int CDES::Dec4bit(char a, char b, char c, char d) if (a == '0' && b == '0' && c == '0' && d == '0') return 0; else if (a == '0' && b == '0' && c == '0' && d == '1') return 1; else if (a == '0' && b == '0' && c == '1' && d == '0') return 2; else if (a == '0' && b == '0' && c == '1' && d == '1') return 3; else if (a == '0' && b == '1' && c == '0' && d == '0') return 4; else if (a == '0' && b == '1' && c == '0' && d == '1') return 5; else if (a == '0' && b == '1' && c == '1' && d == '0') return 6; 128

139 } else if (a == '0' && b == '1' && c == '1' && d == '1') return 7; else if (a == '1' && b == '0' && c == '0' && d == '0') return 8; else if (a == '1' && b == '0' && c == '0' && d == '1') return 9; else if (a == '1' && b == '0' && c == '1' && d == '0') return 10; else if (a == '1' && b == '0' && c == '1' && d == '1') return 11; else if (a == '1' && b == '1' && c == '0' && d == '0') return 12; else if (a == '1' && b == '1' && c == '0' && d == '1') return 13; else if (a == '1' && b == '1' && c == '1' && d == '0') return 14; else return 15; char* CDES::Bin2bit(int a) if (a == 0) return "00"; else if (a == 1) return "01"; else if (a == 2) return "10"; else return "11"; } char* CDES::Bin4bit(int a) if (a == 0) return "0000"; else if (a == 1) return "0001"; else if (a == 2) return "0010"; else if (a == 3) return "0011"; else if (a == 4) 129

140 } return "0100"; else if (a == 5) return "0101"; else if (a == 6) return "0110"; else if (a == 7) return "0111"; else if (a == 8) return "1000"; else if (a == 9) return "1001"; else if (a == 10) return "1010"; else if (a == 11) return "1011"; else if (a == 12) return "1100"; else if (a == 13) return "1101"; else if (a == 14) return "1110"; else return "1111"; char* CDES::JoinSres(char *r1, char *r2) char *res = new char[data_length/2]; int i,j; for (i = 0 ; i < ((DATA_LENGTH/2)/2) ; i++) res[i] = r1[i]; } for (i = ((DATA_LENGTH/2)/2),j = 0 ; j < ((DATA_LENGTH/2)/2) ; i++,j++) res[i] = r2[j]; } } return res; 130

141 char* CDES::PermuteSres(char *sr) char *r = new char[(data_length/2)]; r[0] = sr[2-1]; r[1] = sr[4-1]; r[2] = sr[3-1]; r[3] = sr[1-1]; } return r; void CDES::SampleKeys() key[1-1][0] = '1'; key[1-1][1] = '0'; key[1-1][2] = '1'; key[1-1][3] = '0'; key[1-1][4] = '0'; key[1-1][5] = '1'; key[1-1][6] = '0'; key[1-1][7] = '0'; } key[2-1][0] = '0'; key[2-1][1] = '1'; key[2-1][2] = '0'; key[2-1][3] = '0'; key[2-1][4] = '0'; key[2-1][5] = '0'; key[2-1][6] = '1'; key[2-1][7] = '1'; void CDES::print(char *d, int length) int i; cout << endl; for (i = 0 ; i < length ; i++) cout << d[i]; } cout << endl; 131

142 } char* CDES::XORLandP(char *left, char *p4r) int i; char *res = new char[data_length/2]; for (i = 0 ; i < (DATA_LENGTH/2) ; i++) res[i] = XOR(left[i],p4r[i]); } } return res; char* CDES::FKFinal(char *xr, char *right) char* res = new char[data_length]; int i; for (i = 0 ; i < (DATA_LENGTH/2) ; i++) res[i] = xr[i]; } for (i = (DATA_LENGTH/2) ; i < DATA_LENGTH ; i++) res[i] = right[i]; } } return res; char* CDES::FKFunction(char *ip,int f) // begin the KF function char *ep = ExtendedPermutation(ip); cout << endl << "Extended Permutation"; print(ep,key_p_length); cout << endl << "The k" << f; print(key[f-1],key_p_length); 132

143 char *keyxor = XORwithKey(ep,f); cout << endl << "XOR with k" << f; print(keyxor,key_p_length); char *S0res = GetSValue(keyXor,0); cout << endl << "S0 Result"; #ifdef SDES print(s0res,data_length/4); #else print(s0res,4); #endif char *S1res = GetSValue(keyXor,1); cout << endl << "S1 Result"; #ifdef SDES print(s1res,data_length/4); #else print(s1res,4); #endif #ifdef DES char *S2res = GetSValue(keyXor,2); cout << endl << "S2 Result"; print(s2res,4); char *S3res = GetSValue(keyXor,3); cout << endl << "S3 Result"; print(s3res,4); char *S4res = GetSValue(keyXor,4); cout << endl << "S4 Result"; print(s4res,4); char *S5res = GetSValue(keyXor,5); cout << endl << "S5 Result"; print(s5res,4); char *S6res = GetSValue(keyXor,6); cout << endl << "S6 Result"; 133

144 print(s6res,4); char *S7res = GetSValue(keyXor,7); cout << endl << "S7 Result"; print(s7res,4); #endif #ifdef SDES char *Sresult = JoinSres(S0res,S1res); cout << endl << "Joined S0 and S1 Results"; #else char *Sresult = JoinSres_DES(S0res,S1res,S2res,S3res,S4res,S5res,S6res,S7res); cout << endl << "Joined Printed S Results"; #endif print(sresult,data_length/2); #ifdef SDES char *psres = PermuteSres(Sresult); cout << endl << "Permutation P4"; #else char *psres = PermuteSres_DES(Sresult); cout << endl << "Permutation P32"; #endif print(psres,data_length/2); char *XorLandPr = XORLandP(ip,pSres); #ifdef SDES cout << endl << "XOR L and P4 Result"; #else cout << endl << "XOR L and P32 Result"; #endif print(xorlandpr,data_length/2); char *FKFinalRes = FKFinal(XorLandPr,ip); } return FKFinalRes; char* CDES::Switch(char *p) 134

145 int i,j; char *res = new char[data_length]; for (i = 0,j = (DATA_LENGTH/2) ; i < (DATA_LENGTH/2) ; i++,j++) res[i] = p[j]; } for (i = (DATA_LENGTH/2),j = 0 ; i < DATA_LENGTH ; i++,j++) res[i] = p[j]; } } return res; char* CDES::IPInverse(char *r) char *res = new char[data_length]; #ifdef SDES res[0] = r[4-1]; res[1] = r[1-1]; res[2] = r[3-1]; res[3] = r[5-1]; res[4] = r[7-1]; res[5] = r[2-1]; res[6] = r[8-1]; res[7] = r[6-1]; #else res[0] = r[40-1]; res[1] = r[8-1]; res[2] = r[48-1]; res[3] = r[16-1]; res[4] = r[56-1]; res[5] = r[24-1]; res[6] = r[64-1]; res[7] = r[32-1]; res[8] = r[39-1]; res[9] = r[7-1]; res[10] = r[47-1]; res[11] = r[15-1]; 135

146 res[12] = r[55-1]; res[13] = r[23-1]; res[14] = r[63-1]; res[15] = r[31-1]; res[16] = r[38-1]; res[17] = r[6-1]; res[18] = r[46-1]; res[19] = r[14-1]; res[20] = r[54-1]; res[21] = r[22-1]; res[22] = r[62-1]; res[23] = r[30-1]; res[24] = r[37-1]; res[25] = r[5-1]; res[26] = r[45-1]; res[27] = r[13-1]; res[28] = r[53-1]; res[29] = r[21-1]; res[30] = r[61-1]; res[31] = r[29-1]; res[32] = r[36-1]; res[33] = r[4-1]; res[34] = r[44-1]; res[35] = r[12-1]; res[36] = r[52-1]; res[37] = r[20-1]; res[38] = r[60-1]; res[39] = r[28-1]; res[40] = r[35-1]; res[41] = r[3-1]; res[42] = r[43-1]; res[43] = r[11-1]; res[44] = r[51-1]; res[45] = r[19-1]; res[46] = r[59-1]; res[47] = r[27-1]; res[48] = r[34-1]; res[49] = r[2-1]; res[50] = r[42-1]; res[51] = r[10-1]; res[52] = r[50-1]; res[53] = r[18-1]; res[54] = r[58-1]; 136

147 res[55] = r[26-1]; res[56] = r[33-1]; res[57] = r[1-1]; res[58] = r[41-1]; res[59] = r[9-1]; res[60] = r[49-1]; res[61] = r[17-1]; res[62] = r[57-1]; res[63] = r[25-1]; #endif } return res; char* CDES::Decrypt() // Calculate Keys GenKeys(); // Begin Encryption #ifdef SDES char *ip = DataIP(); // Initial Permutation on Input bits #else char *ip = DataIP_DES(); #endif cout << endl << "Initial Permutation"; print(ip,data_length); char *loopdata = ip; char *FKr; for (int i = NO_OF_KEYS ; i >= 1 ; i--) FKr = FKFunction(loopData,i); cout << endl << "FK" << i << " Result"; print(fkr,data_length); if (i!= 1) loopdata = Switch(FKr); 137

148 } } else } cout << endl << "Switch Result"; print(loopdata,data_length); loopdata = FKr; char *IPinv = IPInverse(loopData); cout << endl << "IP Inverse"; print(ipinv,data_length); } return IPinv; void CDES::FillAllS() #ifdef SDES FillS0_SDES(); FillS1_SDES(); #else DES FillS0_DES(); FillS1_DES(); FillS2_DES(); FillS3_DES(); FillS4_DES(); FillS5_DES(); FillS6_DES(); FillS7_DES(); #endif } void CDES::FillS0_DES() S[0][0][0] = 14; S[0][0][1] = 4; S[0][0][2] = 13; S[0][0][3] = 1; S[0][0][4] = 2; S[0][0][5] = 15; S[0][0][6] = 11; S[0][0][7] = 8; S[0][0][8] = 3; S[0][0][9] = 10; S[0][0][10] = 6; S[0][0][11] = 12; S[0][0][12] = 5; S[0][0][13] = 9; S[0][0][14] = 0; S[0][0][15] = 7; S[0][1][0] = 0; S[0][1][1] = 15; S[0][1][2] = 7; S[0][1][3] = 4; S[0][1][4] = 14; S[0][1][5] = 2; S[0][1][6] = 13; S[0][1][7] = 1; S[0][1][8] = 10; S[0][1][9] = 6; S[0][1][10] = 12; S[0][1][11] = 11; 138

149 } S[0][1][12] = 9; S[0][1][13] = 5; S[0][1][14] = 3; S[0][1][15] = 8; S[0][2][0] = 4; S[0][2][1] = 1; S[0][2][2] = 14; S[0][2][3] = 8; S[0][2][4] = 13; S[0][2][5] = 6; S[0][2][6] = 2; S[0][2][7] = 11; S[0][2][8] = 15; S[0][2][9] = 12; S[0][2][10] = 9; S[0][2][11] = 7; S[0][2][12] = 3; S[0][2][13] = 10; S[0][2][14] = 5; S[0][2][15] = 0; S[0][3][0] = 15; S[0][3][1] = 12; S[0][3][2] = 8; S[0][3][3] = 2; S[0][3][4] = 4; S[0][3][5] = 9; S[0][3][6] = 1; S[0][3][7] = 7; S[0][3][8] = 5; S[0][3][9] = 11; S[0][3][10] = 3; S[0][3][11] = 14; S[0][3][12] = 10; S[0][3][13] = 0; S[0][3][14] = 6; S[0][3][15] = 13; void CDES::FillS1_DES() S[1][0][0] = 15; S[1][0][1] = 1; S[1][0][2] = 8; S[1][0][3] = 14; S[1][0][4] = 6; S[1][0][5] = 11; S[1][0][6] = 3; S[1][0][7] = 4; S[1][0][8] = 9; S[1][0][9] = 7; S[1][0][10] = 2; S[1][0][11] = 13; S[1][0][12] = 12; S[1][0][13] = 0; S[1][0][14] = 5; S[1][0][15] = 10; S[1][1][0] = 3; S[1][1][1] = 13; S[1][1][2] = 4; S[1][1][3] = 7; S[1][1][4] = 15; S[1][1][5] = 2; S[1][1][6] = 8; S[1][1][7] = 14; S[1][1][8] = 12; S[1][1][9] = 0; S[1][1][10] = 1; S[1][1][11] = 10; S[1][1][12] = 6; S[1][1][13] = 9; S[1][1][14] = 11; S[1][1][15] = 5; } S[1][2][0] = 0; S[1][2][1] = 14; S[1][2][2] = 7; S[1][2][3] = 11; S[1][2][4] = 10; S[1][2][5] = 4; S[1][2][6] = 13; S[1][2][7] = 1; S[1][2][8] = 5; S[1][2][9] = 8; S[1][2][10] = 12; S[1][2][11] = 6; S[1][2][12] = 9; S[1][2][13] = 3; S[1][2][14] = 2; S[1][2][15] = 15; S[1][3][0] = 13; S[1][3][1] = 8; S[1][3][2] = 10; S[1][3][3] = 1; S[1][3][4] = 3; S[1][3][5] = 15; S[1][3][6] = 4; S[1][3][7] = 2; S[1][3][8] = 11; S[1][3][9] = 6; S[1][3][10] = 7; S[1][3][11] = 12; S[1][3][12] = 0; S[1][3][13] = 5; S[1][3][14] = 14; S[1][3][15] = 9; void CDES::FillS2_DES() S[2][0][0] = 10; S[2][0][1] = 0; S[2][0][2] = 9; S[2][0][3] = 14; S[2][0][4] = 6; S[2][0][5] = 3; S[2][0][6] = 15; S[2][0][7] = 5; S[2][0][8] = 1; S[2][0][9] = 13; S[2][0][10] = 12; S[2][0][11] = 7; S[2][0][12] = 11; S[2][0][13] = 4; S[2][0][14] = 2; S[2][0][15] = 8; S[2][1][0] = 13; S[2][1][1] = 7; S[2][1][2] = 0; S[2][1][3] = 9; S[2][1][4] = 3; S[2][1][5] = 4; S[2][1][6] = 6; S[2][1][7] = 10; S[2][1][8] = 2; S[2][1][9] = 8; S[2][1][10] = 5; S[2][1][11] = 14; S[2][1][12] = 12; S[2][1][13] = 10; S[2][1][14] = 15; S[2][1][15] = 1; 139

150 } S[2][2][0] = 13; S[2][2][1] = 6; S[2][2][2] = 4; S[2][2][3] = 9; S[2][2][4] = 8; S[2][2][5] = 15; S[2][2][6] = 3; S[2][2][7] = 0; S[2][2][8] = 11; S[2][2][9] = 1; S[2][2][10] = 2; S[2][2][11] = 12; S[2][2][12] = 5; S[2][2][13] = 10; S[2][2][14] = 14; S[2][2][15] = 7; S[2][3][0] = 1; S[2][3][1] = 10; S[2][3][2] = 13; S[2][3][3] = 0; S[2][3][4] = 6; S[2][3][5] = 9; S[2][3][6] = 8; S[2][3][7] = 7; S[2][3][8] = 4; S[2][3][9] = 15; S[2][3][10] = 14; S[2][3][11] = 3; S[2][3][12] = 11; S[2][3][13] = 5; S[2][3][14] = 2; S[2][3][15] = 12; void CDES::FillS3_DES() S[3][0][0] = 7; S[3][0][1] = 13; S[3][0][2] = 14; S[3][0][3] = 3; S[3][0][4] = 0; S[3][0][5] = 6; S[3][0][6] = 9; S[3][0][7] = 10; S[3][0][8] = 1; S[3][0][9] = 2; S[3][0][10] = 8; S[3][0][11] = 5; S[3][0][12] = 11; S[3][0][13] = 12; S[3][0][14] = 4; S[3][0][15] = 15; } S[3][1][0] = 13; S[3][1][1] = 8; S[3][1][2] = 11; S[3][1][3] = 5; S[3][1][4] = 6; S[3][1][5] = 15; S[3][1][6] = 0; S[3][1][7] = 3; S[3][1][8] = 4; S[3][1][9] = 7; S[3][1][10] = 2; S[3][1][11] = 12; S[3][1][12] = 1; S[3][1][13] = 10; S[3][1][14] = 14; S[3][1][15] = 9; S[3][2][0] = 10; S[3][2][1] = 6; S[3][2][2] = 9; S[3][2][3] = 0; S[3][2][4] = 12; S[3][2][5] = 11; S[3][2][6] = 7; S[3][2][7] = 13; S[3][2][8] = 15; S[3][2][9] = 1; S[3][2][10] = 3; S[3][2][11] = 14; S[3][2][12] = 5; S[3][2][13] = 2; S[3][2][14] = 8; S[3][2][15] = 4; S[3][3][0] = 3; S[3][3][1] = 15; S[3][3][2] = 0; S[3][3][3] = 6; S[3][3][4] = 10; S[3][3][5] = 1; S[3][3][6] = 13; S[3][3][7] = 8; S[3][3][8] = 9; S[3][3][9] = 4; S[3][3][10] = 5; S[3][3][11] = 11; S[3][3][12] = 12; S[3][3][13] = 7; S[3][3][14] = 2; S[3][3][15] = 14; void CDES::FillS4_DES() S[4][0][0] = 2; S[4][0][1] = 12; S[4][0][2] = 4; S[4][0][3] = 1; S[4][0][4] = 7; S[4][0][5] = 10; S[4][0][6] = 11; S[4][0][7] = 6; S[4][0][8] = 8; S[4][0][9] = 5; S[4][0][10] = 3; S[4][0][11] = 15; S[4][0][12] = 13; S[4][0][13] = 0; S[4][0][14] = 14; S[4][0][15] = 9; S[4][1][0] = 14; S[4][1][1] = 11; S[4][1][2] = 2; S[4][1][3] = 12; S[4][1][4] = 4; S[4][1][5] = 7; S[4][1][6] = 13; S[4][1][7] = 1; S[4][1][8] = 5; S[4][1][9] = 0; S[4][1][10] = 15; S[4][1][11] = 10; S[4][1][12] = 3; S[4][1][13] = 9; S[4][1][14] = 8; S[4][1][15] = 6; 140

151 } S[4][2][0] = 4; S[4][2][1] = 2; S[4][2][2] = 1; S[4][2][3] = 11; S[4][2][4] = 10; S[4][2][5] = 13; S[4][2][6] = 7; S[4][2][7] = 8; S[4][2][8] = 15; S[4][2][9] = 9; S[4][2][10] = 12; S[4][2][11] = 5; S[4][2][12] = 6; S[4][2][13] = 3; S[4][2][14] = 0; S[4][2][15] = 14; S[4][3][0] = 11; S[4][3][1] = 8; S[4][3][2] = 12; S[4][3][3] = 7; S[4][3][4] = 1; S[4][3][5] = 14; S[4][3][6] = 2; S[4][3][7] = 13; S[4][3][8] = 6; S[4][3][9] = 15; S[4][3][10] = 0; S[4][3][11] = 9; S[4][3][12] = 10; S[4][3][13] = 4; S[4][3][14] = 5; S[4][3][15] = 3; void CDES::FillS5_DES() S[5][0][0] = 12; S[5][0][1] = 1; S[5][0][2] = 10; S[5][0][3] = 15; S[5][0][4] = 9; S[5][0][5] = 2; S[5][0][6] = 6; S[5][0][7] = 8; S[5][0][8] = 0; S[5][0][9] = 13; S[5][0][10] = 3; S[5][0][11] = 4; S[5][0][12] = 14; S[5][0][13] = 7; S[5][0][14] = 5; S[5][0][15] = 11; S[5][1][0] = 10; S[5][1][1] = 15; S[5][1][2] = 4; S[5][1][3] = 2; S[5][1][4] = 7; S[5][1][5] = 12; S[5][1][6] = 9; S[5][1][7] = 5; S[5][1][8] = 6; S[5][1][9] = 1; S[5][1][10] = 13; S[5][1][11] = 14; S[5][1][12] = 0; S[5][1][13] = 11; S[5][1][14] = 3; S[5][1][15] = 8; S[5][2][0] = 9; S[5][2][1] = 14; S[5][2][2] = 15; S[5][2][3] = 5; S[5][2][4] = 2; S[5][2][5] = 8; S[5][2][6] = 12; S[5][2][7] = 3; S[5][2][8] = 7; S[5][2][9] = 0; S[5][2][10] = 4; S[5][2][11] = 10; S[5][2][12] = 1; S[5][2][13] = 13; S[5][2][14] = 11; S[5][2][15] = 6; S[5][3][0] = 4; S[5][3][1] = 3; S[5][3][2] = 2; S[5][3][3] = 12; S[5][3][4] = 9; S[5][3][5] = 5; S[5][3][6] = 15; S[5][3][7] = 10; S[5][3][8] = 11; S[5][3][9] = 14; S[5][3][10] = 1; S[5][3][11] = 7; S[5][3][12] = 6; S[5][3][13] = 0; S[5][3][14] = 8; S[5][3][15] = 13; } void CDES::FillS6_DES() S[6][0][0] = 4; S[6][0][1] = 11; S[6][0][2] = 2; S[6][0][3] = 14; S[6][0][4] = 15; S[6][0][5] = 0; S[6][0][6] = 8; S[6][0][7] = 13; S[6][0][8] = 3; S[6][0][9] = 12; S[6][0][10] = 9; S[6][0][11] = 7; S[6][0][12] = 5; S[6][0][13] = 10; S[6][0][14] = 6; S[6][0][15] = 1; S[6][1][0] = 13; S[6][1][1] = 0; S[6][1][2] = 11; S[6][1][3] = 7; S[6][1][4] = 4; S[6][1][5] = 9; S[6][1][6] = 1; S[6][1][7] = 10; S[6][1][8] = 14; S[6][1][9] = 3; S[6][1][10] = 5; S[6][1][11] = 12; S[6][1][12] = 2; S[6][1][13] = 15; S[6][1][14] = 8; S[6][1][15] = 6; S[6][2][0] = 1; S[6][2][1] = 4; S[6][2][2] = 11; S[6][2][3] = 13; S[6][2][4] = 12; S[6][2][5] = 3; S[6][2][6] = 7; S[6][2][7] = 14; 141

152 } S[6][2][8] = 10; S[6][2][9] = 15; S[6][2][10] = 6; S[6][2][11] = 8; S[6][2][12] = 0; S[6][2][13] = 5; S[6][2][14] = 9; S[6][2][15] = 2; S[6][3][0] = 6; S[6][3][1] = 11; S[6][3][2] = 13; S[6][3][3] = 8; S[6][3][4] = 1; S[6][3][5] = 4; S[6][3][6] = 10; S[6][3][7] = 7; S[6][3][8] = 9; S[6][3][9] = 5; S[6][3][10] = 0; S[6][3][11] = 15; S[6][3][12] = 14; S[6][3][13] = 2; S[6][3][14] = 3; S[6][3][15] = 12; void CDES::FillS7_DES() S[7][0][0] = 13; S[7][0][1] = 2; S[7][0][2] = 8; S[7][0][3] = 4; S[7][0][4] = 6; S[7][0][5] = 15; S[7][0][6] = 11; S[7][0][7] = 1; S[7][0][8] = 10; S[7][0][9] = 9; S[7][0][10] = 3; S[7][0][11] = 14; S[7][0][12] = 5; S[7][0][13] = 0; S[7][0][14] = 12; S[7][0][15] = 7; S[7][1][0] = 1; S[7][1][1] = 15; S[7][1][2] = 13; S[7][1][3] = 8; S[7][1][4] = 10; S[7][1][5] = 3; S[7][1][6] = 7; S[7][1][7] = 4; S[7][1][8] = 12; S[7][1][9] = 5; S[7][1][10] = 6; S[7][1][11] = 11; S[7][1][12] = 0; S[7][1][13] = 14; S[7][1][14] = 9; S[7][1][15] = 2; } S[7][2][0] = 7; S[7][2][1] = 11; S[7][2][2] = 4; S[7][2][3] = 1; S[7][2][4] = 9; S[7][2][5] = 12; S[7][2][6] = 14; S[7][2][7] = 2; S[7][2][8] = 0; S[7][2][9] = 6; S[7][2][10] = 10; S[7][2][11] = 13; S[7][2][12] = 15; S[7][2][13] = 3; S[7][2][14] = 5; S[7][2][15] = 8; S[7][3][0] = 2; S[7][3][1] = 1; S[7][3][2] = 14; S[7][3][3] = 7; S[7][3][4] = 4; S[7][3][5] = 10; S[7][3][6] = 8; S[7][3][7] = 13; S[7][3][8] = 15; S[7][3][9] = 12; S[7][3][10] = 9; S[7][3][11] = 0; S[7][3][12] = 3; S[7][3][13] = 5; S[7][3][14] = 6; S[7][3][15] = 11; char* CDES::JoinSres_DES(char *a, char *b, char *c, char *d, char *e, char *f, char *g, char *h) char* JoinTres = new char[32]; int i,j; for (i = 0 ; i < 4 ; i++) JoinTres[i] = a[i]; } for (i = 4,j = 0 ; i < 8 ; i++,j++) JoinTres[i] = b[j]; 142

153 } for (i = 8,j = 0 ; i < 12 ; i++,j++) JoinTres[i] = c[j]; } for (i = 12,j = 0 ; i < 16 ; i++,j++) JoinTres[i] = d[j]; } for (i = 16,j = 0 ; i < 20 ; i++,j++) JoinTres[i] = e[j]; } for (i = 20,j = 0 ; i < 24 ; i++,j++) JoinTres[i] = f[j]; } for (i = 24,j = 0 ; i < 28 ; i++,j++) JoinTres[i] = g[j]; } for (i = 28,j = 0 ; i < 32 ; i++,j++) JoinTres[i] = h[j]; } } return JoinTres; char* CDES::PermuteSres_DES(char *r) char *res = new char[32]; res[0] = r[16-1]; res[1] = r[7-1]; res[2] = r[20-1]; res[3] = r[21-1]; 143

154 res[4] = r[29-1]; res[5] = r[12-1]; res[6] = r[28-1]; res[7] = r[17-1]; res[8] = r[1-1]; res[9] = r[15-1]; res[10] = r[23-1]; res[11] = r[26-1]; res[12] = r[5-1]; res[13] = r[18-1]; res[14] = r[31-1]; res[15] = r[10-1]; res[16] = r[2-1]; res[17] = r[8-1]; res[18] = r[24-1]; res[19] = r[14-1]; res[20] = r[32-1]; res[21] = r[27-1]; res[22] = r[3-1]; res[23] = r[9-1]; res[24] = r[19-1]; res[25] = r[13-1]; res[26] = r[30-1]; res[27] = r[6-1]; res[28] = r[22-1]; res[29] = r[11-1]; res[30] = r[4-1]; res[31] = r[25-1]; } return res; void CDES::GenKeys() char *keypf = keyipermutation(); char *keylshifted = LeftShift(keyPF,'L',1); // Left shift 1st Five bits to 1 bit char *keyrshifted = LeftShift(keyPF,'R',1); // Left shift 2nd Five bits to 1 bit keypermutationa(joinshifted(keylshifted,keyrshifted),1); // create Key1 #ifdef SDES keylshifted = LeftShift(keyPF,'L',3); keyrshifted = LeftShift(keyPF,'R',3); 144

155 #else keypermutationa(joinshifted(keylshifted,keyrshifted),2); // create Key2 keylshifted = LeftShift(keyPF,'L',2); keyrshifted = LeftShift(keyPF,'R',2); keypermutationa(joinshifted(keylshifted,keyrshifted),2); // create Key2 keylshifted = LeftShift(keyPF,'L',4); keyrshifted = LeftShift(keyPF,'R',4); keypermutationa(joinshifted(keylshifted,keyrshifted),3); // create key3 keylshifted = LeftShift(keyPF,'L',6); keyrshifted = LeftShift(keyPF,'R',6); keypermutationa(joinshifted(keylshifted,keyrshifted),4); // create key4 keylshifted = LeftShift(keyPF,'L',8); keyrshifted = LeftShift(keyPF,'R',8); keypermutationa(joinshifted(keylshifted,keyrshifted),5); // create key5 keylshifted = LeftShift(keyPF,'L',10); keyrshifted = LeftShift(keyPF,'R',10); keypermutationa(joinshifted(keylshifted,keyrshifted),6); // create key6 keylshifted = LeftShift(keyPF,'L',12); keyrshifted = LeftShift(keyPF,'R',12); keypermutationa(joinshifted(keylshifted,keyrshifted),7); // create key7 keylshifted = LeftShift(keyPF,'L',14); keyrshifted = LeftShift(keyPF,'R',14); keypermutationa(joinshifted(keylshifted,keyrshifted),8); // create key8 keylshifted = LeftShift(keyPF,'L',15); keyrshifted = LeftShift(keyPF,'R',15); keypermutationa(joinshifted(keylshifted,keyrshifted),9); // create key9 keylshifted = LeftShift(keyPF,'L',17); keyrshifted = LeftShift(keyPF,'R',17); keypermutationa(joinshifted(keylshifted,keyrshifted),10); // create key10 keylshifted = LeftShift(keyPF,'L',19); keyrshifted = LeftShift(keyPF,'R',19); keypermutationa(joinshifted(keylshifted,keyrshifted),11); // create key11 keylshifted = LeftShift(keyPF,'L',21); 145

156 keyrshifted = LeftShift(keyPF,'R',21); keypermutationa(joinshifted(keylshifted,keyrshifted),12); // create key12 keylshifted = LeftShift(keyPF,'L',23); keyrshifted = LeftShift(keyPF,'R',23); keypermutationa(joinshifted(keylshifted,keyrshifted),13); // create key13 keylshifted = LeftShift(keyPF,'L',25); keyrshifted = LeftShift(keyPF,'R',25); keypermutationa(joinshifted(keylshifted,keyrshifted),14); // create key14 keylshifted = LeftShift(keyPF,'L',27); keyrshifted = LeftShift(keyPF,'R',27); keypermutationa(joinshifted(keylshifted,keyrshifted),15); // create key15 } keylshifted = LeftShift(keyPF,'L',28); keyrshifted = LeftShift(keyPF,'R',28); keypermutationa(joinshifted(keylshifted,keyrshifted),16); // create key16 #endif 3. Main.cpp #include <iostream.h> #include <stdlib.h> #include <string.h> #include <CTYPE.h> #include "DES.h" char* Convert2Bin(char[]); char* Binary(char); void InsertInArray(char*,char[]); char* Convert2Hex(char*); char Hexa(char,char,char,char); void main() char ed; char *data = new char[data_length]; char *key = new char[key_total_length]; data[0] = '\0'; key[0] = '\0'; 146

157 char *tdata = new char[64]; char *tkey = new char[64]; cout << endl << "Encryption/Decryption? E/D: "; cin >> ed; if (tolower(ed) == 'e') //perform encryption cout << endl << "Starting Encryption..." << endl; cout << endl << "Enter Data to encrypt: "; cin >> tdata; cout << endl << "Enter Encryption Key: "; cin >> tkey; #ifdef SDES #else #endif strcpy(data,tdata); strcpy(key,tkey); strcpy(data,convert2bin(tdata)); strcpy(key,convert2bin(tkey)); CDES *des = new CDES(data,key); char* cipher = des->encrypt(); #ifdef DES #endif cipher = Convert2Hex(cipher); cout << endl << "Encrypted Text: " << cipher << endl; } else if (tolower(ed) == 'd') //perform decryption cout << endl << "Starting Decryption..." << endl; cout << endl << "Enter Data to Decrypt: "; cin >> tdata; cout << endl << "Enter Decryption Key: "; cin >> tkey; #ifdef SDES 147

158 #else #endif strcpy(data,tdata); strcpy(key,tkey); strcpy(data,convert2bin(tdata)); strcpy(key,convert2bin(tkey)); CDES *des = new CDES(data,key); char *plain = des->decrypt(); #ifdef DES #endif plain = Convert2Hex(plain); } } else } cout << endl << "Decrypted Text: " << plain << endl; //invalid choice... neither e nor d cout << endl << "We support only e and d..." << endl; char* Convert2Hex(char* out) int i,j; char hexchar; char *put = new char[data_length/4]; for (i = 0,j = 0 ; i < DATA_LENGTH ; j++, i += 4) hexchar = Hexa(out[i],out[i+1],out[i+2],out[i+3]); put[j] = hexchar; } put[j] = '\0'; } return put; char Hexa(char a, char b, char c, char d) if (a == '0' && b == '0' && c == '0' && d == '0') return '0'; 148

159 } else if (a == '0' && b == '0' && c == '0' && d == '1') return '1'; else if (a == '0' && b == '0' && c == '1' && d == '0') return '2'; else if (a == '0' && b == '0' && c == '1' && d == '1') return '3'; else if (a == '0' && b == '1' && c == '0' && d == '0') return '4'; else if (a == '0' && b == '1' && c == '0' && d == '1') return '5'; else if (a == '0' && b == '1' && c == '1' && d == '0') return '6'; else if (a == '0' && b == '1' && c == '1' && d == '1') return '7'; else if (a == '1' && b == '0' && c == '0' && d == '0') return '8'; else if (a == '1' && b == '0' && c == '0' && d == '1') return '9'; else if (a == '1' && b == '0' && c == '1' && d == '0') return 'A'; else if (a == '1' && b == '0' && c == '1' && d == '1') return 'B'; else if (a == '1' && b == '1' && c == '0' && d == '0') return 'C'; else if (a == '1' && b == '1' && c == '0' && d == '1') return 'D'; else if (a == '1' && b == '1' && c == '1' && d == '0') return 'E'; else return 'F'; char* Convert2Bin(char data[]) unsigned int i; char *bins; char *array = new char[data_length]; array[0] = '\0'; // cout << endl << "Data to Convert : " << data; for (i = 0 ; i < strlen(data) ; i++) bins = Binary(data[i]); 149

160 // cout << endl << bins; InsertInArray(bins,array); // cout << endl << "Array : " << array; } return array; } void InsertInArray(char* b,char* arr) int i,j; for (i = strlen(arr),j = 0 ; j < 4 ; i++,j++) arr[i] = b[j]; } } arr[i] = '\0'; char* Binary(char c) switch(c) case '0': return "0000"; case '1': return "0001"; case '2': return "0010"; case '3': return "0011"; case '4': return "0100"; case '5': return "0101"; case '6': return "0110"; case '7': return "0111"; case '8': return "1000"; case '9': return "1001"; 150

161 } case 'A': return "1010"; case 'B': return "1011"; case 'C': return "1100"; case 'D': return "1101"; case 'E': return "1110"; case 'F': return "1111"; default: return ""; } 151

162 152

163 Παράρτηµα Γ Αναφορές στον τρόπο λειτουργίας των µηχανών Lorentz & Enigma Παρακάτω παρατίθενται για λόγους πληρότητας φωτογραφίες και σχεδιαγράµµατα που επεξηγούν τον τρόπο λειτουργίας των µηχανών Lorentz και Enigma. 153

164 154

Κρυπ Κρ το υπ γραφία Κρυπ Κρ το υπ λογίας

Κρυπ Κρ το υπ γραφία Κρυπ Κρ το υπ λογίας Διαχείριση και Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Κρυπτογραφία Κρυπτογραφία Η Κρυπτογραφία (cryptography) είναι ένας κλάδος της επιστήμης της Κρυπτολογίας (cryptology), η οποία ασχολείται με την μελέτη

Διαβάστε περισσότερα

ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής. Συμμετρική Κρυπτογραφία

ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής. Συμμετρική Κρυπτογραφία ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής Συμμετρική Κρυπτογραφία Εισαγωγή Στην συνηθισμένη κρυπτογραφία, ο αποστολέας και ο παραλήπτης ενός μηνύματος γνωρίζουν και χρησιμοποιούν το ίδιο μυστικό κλειδί.

Διαβάστε περισσότερα

ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ

ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ ΤΕΙ Κρήτης ΕΠΠ Εργαστήριο Ασφάλεια Πληροφοριακών Συστηµάτων ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ ΤΕΙ Κρητης Τµηµα Εφαρµοσµενης Πληροφορικης Και Πολυµεσων Fysarakis Konstantinos, PhD kfysarakis@staff.teicrete.gr Εισαγωγή

Διαβάστε περισσότερα

Ασφάλεια Υπολογιστικών Συστηµάτων

Ασφάλεια Υπολογιστικών Συστηµάτων Ορισµοί Κρυπτογράφηση: η διεργασία µετασχηµατισµού ενός µηνύµατος µεταξύ ενός αποστολέα και ενός παραλήπτη σε µια ακατανόητη µορφή ώστε αυτό να µην είναι αναγνώσιµο από τρίτους Αποκρυπτογράφηση: η διεργασία

Διαβάστε περισσότερα

Κρυπτογραφία. Εργαστηριακό μάθημα 1

Κρυπτογραφία. Εργαστηριακό μάθημα 1 Κρυπτογραφία Εργαστηριακό μάθημα 1 Βασικοί όροι Με τον όρο κρυπτογραφία εννοούμε τη μελέτη μαθηματικών τεχνικών που στοχεύουν στην εξασφάλιση θεμάτων που άπτονται της ασφάλειας μετάδοσης της πληροφορίας,

Διαβάστε περισσότερα

ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Lab 3

ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Lab 3 ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Lab 3 Η Aσύμμετρη Kρυπτογραφία ή Κρυπτογραφία Δημοσίου Κλειδιού χρησιμοποιεί δύο διαφορετικά κλειδιά για την κρυπτογράφηση και αποκρυπτογράφηση. Eπινοήθηκε στο τέλος της δεκαετίας

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών Aσφάλεια ΣΤΟΧΟΙ ΚΕΦΑΛΑΙΟΥ Ορισµός τριών στόχων ασφάλειας - Εµπιστευτικότητα, ακεραιότητα και διαθεσιµότητα Επιθέσεις Υπηρεσίες και Τεχνικές

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών Aσφάλεια Περιεχόμενα Πλευρές Ασφάλειας Ιδιωτικό Απόρρητο Μέθοδος Μυστικού Κλειδιού (Συμμετρική Κρυπτογράφηση) Μέθοδος Δημόσιου Κλειδιού (Ασύμμετρη

Διαβάστε περισσότερα

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ Κρυπτογραφία Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Συμμετρικά Κρυπτοσυστήματα κλειδί k Αρχικό κείμενο (m) Αλγόριθμος Κρυπτογράφησης Ε c = E k (m) Κρυπτογραφημένο

Διαβάστε περισσότερα

Κρυπτογραφία. Κεφάλαιο 1 Γενική επισκόπηση

Κρυπτογραφία. Κεφάλαιο 1 Γενική επισκόπηση Κρυπτογραφία Κεφάλαιο 1 Γενική επισκόπηση Ανασκόπηση ύλης Στόχοι της κρυπτογραφίας Ιστορικό Γενικά χαρακτηριστικά Κλασσική κρυπτογραφία Συμμετρικού κλειδιού (block ciphers stream ciphers) Δημοσίου κλειδιού

Διαβάστε περισσότερα

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 8 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 8 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 8 η Βασίλης Στεφανής Περιεχόμενα Τι είναι κρυπτογραφία Ιστορική αναδρομή Αλγόριθμοι: Καίσαρα Μονοαλφαβιτικοί Vigenere Vernam Κρυπτογραφία σήμερα Κρυπτογραφία Σκοπός Αποστολέας

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη της Πληροφορικής και των. Aσφάλεια

Εισαγωγή στην επιστήμη της Πληροφορικής και των. Aσφάλεια Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών Aσφάλεια Περιεχόμενα Πλευρές Ασφάλειας Ιδιωτικό Απόρρητο Μέθοδος Μυστικού Κλειδιού (Συμμετρική Κρυπτογράφηση) Μέθοδος Δημόσιου Κλειδιού (Ασύμμετρη

Διαβάστε περισσότερα

Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία

Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία Συμμετρικά κρυπτοσυστήματα Άρης Παγουρτζής Στάθης Ζάχος Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Σχολή ΗΜΜΥ ΕΜΠ 1

Διαβάστε περισσότερα

Συμμετρικά κρυπτοσυστήματα

Συμμετρικά κρυπτοσυστήματα Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία Συμμετρικά κρυπτοσυστήματα Άρης Παγουρτζής Στάθης Ζάχος Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών Δίκτυα Feistel Σημαντικές

Διαβάστε περισσότερα

ΕΠΛ 674: Εργαστήριο 1 Ασφάλεια Επικοινωνιακών Συστημάτων - Κρυπτογραφία

ΕΠΛ 674: Εργαστήριο 1 Ασφάλεια Επικοινωνιακών Συστημάτων - Κρυπτογραφία ΕΠΛ 674: Εργαστήριο 1 Ασφάλεια Επικοινωνιακών Συστημάτων - Κρυπτογραφία Παύλος Αντωνίου Γραφείο: ΘΕΕ 02 B176 Εαρινό Εξάμηνο 2011 Department of Computer Science Ασφάλεια - Απειλές Ασφάλεια Γενικά (Ι) Τα

Διαβάστε περισσότερα

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές Κεφάλαιο 8 8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές Σελ. 320-325 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-g.ggia.info/ Creative

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Ασφάλεια Δεδομένων.

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Ασφάλεια Δεδομένων. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής στην Επιστήμη των Υπολογιστών 2015-16 Ασφάλεια Δεδομένων http://www.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Οι απειλές Ένας κακόβουλος χρήστης Καταγράφει μηνύματα

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Εισαγωγή. Χρήστος Ξενάκης

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Εισαγωγή. Χρήστος Ξενάκης Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Κρυπτογραφία Εισαγωγή Χρήστος Ξενάκης Στόχος του μαθήματος Η παρουσίαση και ανάλυση των βασικών θεμάτων της θεωρίας κρυπτογραφίας. Οι εφαρμογές της κρυπτογραφίας

Διαβάστε περισσότερα

Κρυπτογραφία. Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι)

Κρυπτογραφία. Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι) Κρυπτογραφία Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι) Κρυπτοσυστήματα Δημοσίου κλειδιού Αποστολέας P Encryption C Decryption P Παραλήπτης Προτάθηκαν το 1976 Κάθε συμμετέχων στο

Διαβάστε περισσότερα

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας Κρυπτογραφία Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Block ciphers και ψευδοτυχαίες

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Εισαγωγή- Βασικές Έννοιες Διδάσκων : Δρ. Παρασκευάς Κίτσος diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων

Διαβάστε περισσότερα

κρυπτογραϕία Ψηφιακή ασφάλεια και ιδιωτικότητα Γεώργιος Σπαθούλας Msc Πληροφορική και υπολογιστική βιοιατρική Πανεπιστήμιο Θεσσαλίας

κρυπτογραϕία Ψηφιακή ασφάλεια και ιδιωτικότητα Γεώργιος Σπαθούλας Msc Πληροφορική και υπολογιστική βιοιατρική Πανεπιστήμιο Θεσσαλίας κρυπτογραϕία Ψηφιακή ασφάλεια και ιδιωτικότητα Γεώργιος Σπαθούλας Msc Πληροφορική και υπολογιστική βιοιατρική Πανεπιστήμιο Θεσσαλίας ιδιότητες ασϕάλειας ιδιότητες ασϕάλειας αγαθών Εμπιστευτικότητα (Confidentiality)

Διαβάστε περισσότερα

Εφαρμοσμένη Κρυπτογραφία Ι

Εφαρμοσμένη Κρυπτογραφία Ι Εφαρμοσμένη Κρυπτογραφία Ι Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Συνολικό Πλαίσιο Ασφάλεια ΠΕΣ Εμπιστευτικότητα Ακεραιότητα Πιστοποίηση Μη-αποποίηση Κρυπτογράφηση

Διαβάστε περισσότερα

Εφαρμοσμένη Κρυπτογραφία Ι

Εφαρμοσμένη Κρυπτογραφία Ι Εφαρμοσμένη Κρυπτογραφία Ι Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Συμμετρικά Κρυπτοσυστήματα κλειδί k Αρχικό κείμενο (m) Αλγόριθμος Κρυπτογράφησης Ε c = E

Διαβάστε περισσότερα

Οι απειλές. Απόρρητο επικοινωνίας. Αρχές ασφάλειας δεδομένων. Απόρρητο (privacy) Μέσω κρυπτογράφησης

Οι απειλές. Απόρρητο επικοινωνίας. Αρχές ασφάλειας δεδομένων. Απόρρητο (privacy) Μέσω κρυπτογράφησης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής στην Επιστήμη των Υπολογιστών 2014-015 Ασφάλεια Δεδομένων http://www.ionio.gr/~mistral/tp/csintro/ Οι απειλές Ένας κακόβουλος χρήστης Καταγράφει μηνύματα που ανταλλάσσονται

Διαβάστε περισσότερα

Αλγόριθµοι δηµόσιου κλειδιού

Αλγόριθµοι δηµόσιου κλειδιού Αλγόριθµοι δηµόσιου κλειδιού Αλγόριθµοι δηµόσιου κλειδιού Ηδιανοµή του κλειδιού είναι ο πιο αδύναµος κρίκος στα περισσότερα κρυπτογραφικά συστήµατα Diffie και Hellman, 1976 (Stanford Un.) πρότειναν ένα

Διαβάστε περισσότερα

Κρυπτογραφία. Κρυπτοσυστήματα πακέτου (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Κρυπτογραφία. Κρυπτοσυστήματα πακέτου (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας Κρυπτογραφία Κρυπτοσυστήματα πακέτου (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Block ciphers και ψευδοτυχαίες

Διαβάστε περισσότερα

Εισαγωγή στην Κρυπτογραφία και τις Ψηφιακές Υπογραφές

Εισαγωγή στην Κρυπτογραφία και τις Ψηφιακές Υπογραφές Εισαγωγή στην Κρυπτογραφία και τις Ψηφιακές Υπογραφές Βαγγέλης Φλώρος, BSc, MSc Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών Εν αρχή είναι... Η Πληροφορία - Αρχείο

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Εισαγωγή- Βασικές Έννοιες Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org Αντίρριο 2015 1 ΤΙ ΕΙΝΑΙ Η ΚΡΥΠΤΟΛΟΓΙΑ?

Διαβάστε περισσότερα

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών;

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών; 1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών; Η ακεραιότητα δεδομένων(data integrity) Είναι η ιδιότητα που μας εξασφαλίζει ότι δεδομένα

Διαβάστε περισσότερα

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας Κρυπτογραφία Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Block ciphers (κρυπτοσυστήματα

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή 2. Θεωρία αριθμών Αλγεβρικές δομές 3. Οι κρυπταλγόριθμοι και οι ιδιότητές τους

ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή 2. Θεωρία αριθμών Αλγεβρικές δομές  3. Οι κρυπταλγόριθμοι και οι ιδιότητές τους ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή... 1 1.1. Ορισμοί και ορολογία... 2 1.1.1. Συμμετρικά και ασύμμετρα κρυπτοσυστήματα... 4 1.1.2. Κρυπτογραφικές υπηρεσίες και πρωτόκολλα... 9 1.1.3. Αρχές μέτρησης κρυπτογραφικής

Διαβάστε περισσότερα

Διατμηματικό Μεταπτυχιακό Πρόγραμμα Ηλεκτρονική και Επεξεργασία της Πληροφορίας

Διατμηματικό Μεταπτυχιακό Πρόγραμμα Ηλεκτρονική και Επεξεργασία της Πληροφορίας Ειδική Επιστημονική Εργασία Συμμετρικοί Αλγόριθμοι Κρυπτογράφησης Δεδομένων Οι περιπτώσεις των αλγορίθμων DES και TDEA Φλωκατούλα Δώρα, Μηχανικός Η/Υ & Πληροφορικής Επιβλέπων : Μπακάλης Δημήτριος, Επίκουρος

Διαβάστε περισσότερα

Δ Εξάμηνο. Κρυπτογραφία: Συμμετρική Κρυπτογράφηση

Δ Εξάμηνο. Κρυπτογραφία: Συμμετρική Κρυπτογράφηση ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Κρυπτογραφία: Συμμετρική Κρυπτογράφηση Διδάσκων : Δρ. Παρασκευάς Κίτσος http://www.diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Εργαστήριο Σχεδίασης Ψηφιακών

Διαβάστε περισσότερα

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) Ενότητα 5: ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΔΙΔΑΣΚΩΝ: ΚΩΝΣΤΑΝΤΙΝΟΣ ΧΕΙΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Αλγόριθµοι συµµετρικού κλειδιού

Αλγόριθµοι συµµετρικού κλειδιού Αλγόριθµοι συµµετρικού κλειδιού Αλγόριθµοι συµµετρικού κλειδιού Χρησιµοποιούν το ίδιο κλειδί για την κρυπτογράφηση και την αποκρυπτογράφηση Υλοποιούνται τόσο µε υλικό (hardware) όσο και µε λογισµικό (software)

Διαβάστε περισσότερα

Πληροφορική Ι. Μάθημα 10 ο Ασφάλεια. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Δρ. Γκόγκος Χρήστος

Πληροφορική Ι. Μάθημα 10 ο Ασφάλεια. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Δρ. Γκόγκος Χρήστος Οι διαφάνειες έχουν βασιστεί στο βιβλίο «Εισαγωγή στην επιστήμη των υπολογιστών» του B. Forouzanκαι Firoyz Mosharraf(2 η έκδοση-2010) Εκδόσεις Κλειδάριθμος Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου

Διαβάστε περισσότερα

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας Ηλεκτρονικό εμπόριο HE 7 Τεχνολογίες ασφάλειας Πρόκληση ανάπτυξης ασφαλών συστημάτων Η υποδομή του διαδικτύου παρουσίαζε έλλειψη υπηρεσιών ασφάλειας καθώς η οικογένεια πρωτοκόλλων TCP/IP στην οποία στηρίζεται

Διαβάστε περισσότερα

Ασφάλεια Υπολογιστικών Συστημάτων

Ασφάλεια Υπολογιστικών Συστημάτων Ασφάλεια Υπολογιστικών Συστημάτων Ενότητα 2: Συμμετρική κρυπτογραφία Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Ασύμμετρη Κρυπτογράφηση (Κρυπτογραφία Δημόσιου Κλειδιού) Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org

Διαβάστε περισσότερα

Ασφάλεια Τηλεπικοινωνιακών Συστημάτων ΣΤΑΥΡΟΣ Ν ΝΙΚΟΛΟΠΟΥΛΟΣ 03 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΚΡΥΠΤΟΛΟΓΙΑ

Ασφάλεια Τηλεπικοινωνιακών Συστημάτων ΣΤΑΥΡΟΣ Ν ΝΙΚΟΛΟΠΟΥΛΟΣ 03 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΚΡΥΠΤΟΛΟΓΙΑ Ασφάλεια Τηλεπικοινωνιακών Συστημάτων ΣΤΑΥΡΟΣ Ν ΝΙΚΟΛΟΠΟΥΛΟΣ 03 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΚΡΥΠΤΟΛΟΓΙΑ Περιγραφή μαθήματος Η Κρυπτολογία είναι κλάδος των Μαθηματικών, που ασχολείται με: Ανάλυση Λογικών Μαθηματικών

Διαβάστε περισσότερα

Παύλος Εφραιμίδης. Βασικές Έννοιες Κρυπτογραφίας. Ασφ Υπολ Συστ

Παύλος Εφραιμίδης. Βασικές Έννοιες Κρυπτογραφίας. Ασφ Υπολ Συστ Παύλος Εφραιμίδης Βασικές Έννοιες Κρυπτογραφίας Ασφ Υπολ Συστ 1 Βασικές υπηρεσίες/εφαρμογές κρυπτογραφίες: Confidentiality, Authentication, Integrity, Non- Repudiation Βασικές έννοιες κρυπτογραφίας 2 3

Διαβάστε περισσότερα

Ασφάλεια Πληροφοριακών Συστημάτων

Ασφάλεια Πληροφοριακών Συστημάτων Ασφάλεια Πληροφοριακών Συστημάτων Κρυπτογραφία/Ψηφιακές Υπογραφές Διάλεξη 2η Δρ. Β. Βασιλειάδης Τμ. Διοίκησης Επιχειρήσεων, ΤΕΙ Δυτ. Ελλάδας Kρυπτανάλυση Προσπαθούμε να σπάσουμε τον κώδικα. Ξέρουμε το

Διαβάστε περισσότερα

Κρυπτογράφηση Αποκρυπτογράφηση Ερευνητική εργασία Β'1 1 ο Γενικό Λύκειο Ευόσμου

Κρυπτογράφηση Αποκρυπτογράφηση Ερευνητική εργασία Β'1 1 ο Γενικό Λύκειο Ευόσμου Κρυπτογράφηση Αποκρυπτογράφηση Ερευνητική εργασία Β'1 1 ο Γενικό Λύκειο Ευόσμου 2013-2014 Project Ορισμοί Ιστορία Η αποκρυπτογράφηση στις μέρες μας Κρυπτογράφηση Αποκρυπτογράφηση Αποκρυπτογραφημένο-Κρυπτογραφημένο

Διαβάστε περισσότερα

Πρόλογος 1. 1 Μαθηµατικό υπόβαθρο 9

Πρόλογος 1. 1 Μαθηµατικό υπόβαθρο 9 Πρόλογος 1 Μαθηµατικό υπόβαθρο 7 1 Μαθηµατικό υπόβαθρο 9 1.1 Η αριθµητική υπολοίπων.............. 10 1.2 Η πολυωνυµική αριθµητική............ 14 1.3 Θεωρία πεπερασµένων οµάδων και σωµάτων.... 17 1.4 Πράξεις

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Ασύμμετρη Κρυπτογραφία. Χρήστος Ξενάκης

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Ασύμμετρη Κρυπτογραφία. Χρήστος Ξενάκης Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Κρυπτογραφία Ασύμμετρη Κρυπτογραφία Χρήστος Ξενάκης Ασύμμετρη κρυπτογραφία Μονόδρομες συναρτήσεις με μυστική πόρτα Μια συνάρτηση f είναι μονόδρομη, όταν δοθέντος

Διαβάστε περισσότερα

ρ. Κ. Σ. Χειλάς, ίκτυα Η/Υ ΙΙΙ, Τ.Ε.Ι. Σερρών, 2007

ρ. Κ. Σ. Χειλάς, ίκτυα Η/Υ ΙΙΙ, Τ.Ε.Ι. Σερρών, 2007 Ψηφιακές υπογραφές Ψηφιακές υπογραφές Υπάρχει ανάγκη αντικατάστασης των χειρόγραφων υπογραφών µε ψηφιακές (ΨΥ) Αυτές πρέπει να διαθέτουν τα εξής χαρακτηριστικά: Ο παραλήπτης πρέπει να είναι σε θέση να

Διαβάστε περισσότερα

8.3 Ασφάλεια ικτύων. Ερωτήσεις

8.3 Ασφάλεια ικτύων. Ερωτήσεις 8.3 Ασφάλεια ικτύων Ερωτήσεις 1. Με τι ασχολείται η ασφάλεια των συστηµάτων; 2. Τι είναι αυτό που προστατεύεται στην ασφάλεια των συστηµάτων και για ποιο λόγο γίνεται αυτό; 3. Ποια η διαφορά ανάµεσα στους

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Κρυπτοαλγόριθμοι. Χρήστος Ξενάκης

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Κρυπτοαλγόριθμοι. Χρήστος Ξενάκης Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Κρυπτογραφία Κρυπτοαλγόριθμοι Χρήστος Ξενάκης Θεωρία Πληροφορίας Η Θεωρία πληροφορίας (Shannon 1948 1949) σχετίζεται με τις επικοινωνίες και την ασφάλεια

Διαβάστε περισσότερα

Δραστηριότητες σχετικά με κρυπτογραφία και ελέγχους ισοτιμίας

Δραστηριότητες σχετικά με κρυπτογραφία και ελέγχους ισοτιμίας Δραστηριότητες σχετικά με κρυπτογραφία και ελέγχους ισοτιμίας Δραστηριότητα 6: Κωδικοί και κρυπτογραφία Το αντικείμενο της δραστηριότητας αυτής είναι η κατανόηση από την πλευρά των μαθητών μερικών στοιχειωδών

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 11η Διάλεξη: Ασφάλεια στο Web

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 11η Διάλεξη: Ασφάλεια στο Web Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 11η Διάλεξη: Ασφάλεια στο Web Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 1 Εισαγωγικά Βασικές

Διαβάστε περισσότερα

Ψευδο-τυχαιότητα. Αριθµοί και String. Μονόδροµες Συναρτήσεις 30/05/2013

Ψευδο-τυχαιότητα. Αριθµοί και String. Μονόδροµες Συναρτήσεις 30/05/2013 Ψευδο-τυχαιότητα Συναρτήσεις µιας Κατεύθυνσης και Γεννήτριες Ψευδοτυχαίων Αριθµών Παύλος Εφραιµίδης 2013/02 1 Αριθµοί και String Όταν θα αναφερόµαστε σε αριθµούς θα εννοούµε ουσιαστικά ακολουθίες από δυαδικά

Διαβάστε περισσότερα

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης Κατάλογος Περιεχομένων ΕΙΣΑΓΩΓΉ ΣΤΟ CRYPTOOL... 3 DOWNLOADING CRYPTOOL... 3 ΜΗΧΑΝΙΣΜΟΊ ΚΑΙ ΑΛΓΌΡΙΘΜΟΙ ΚΡΥΠΤΟΓΡΑΦΊΑΣ ΣΤΟ CRYPTOOL...

Διαβάστε περισσότερα

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΕΦΑΡΜΟΓΕΣ ΤΗΣ ΚΡΥΠΤΟΓΡΑΦΙΑΣ

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΕΦΑΡΜΟΓΕΣ ΤΗΣ ΚΡΥΠΤΟΓΡΑΦΙΑΣ ΤΕΙ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΜΣ ΕΠΙΧΕΙΡΗΜΑΤΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΕΦΑΡΜΟΓΕΣ ΤΗΣ ΚΡΥΠΤΟΓΡΑΦΙΑΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΑΠΟΣΤΟΛΙΔΟΥ ΚΥΡΙΑΚΗ ΕΠΙΒΛΕΠΩΝ: ΜΠΙΣΜΠΑΣ ΑΝΤΩΝΙΟΣ, Καθηγητής

Διαβάστε περισσότερα

El Gamal Αλγόριθμος. Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 7 2

El Gamal Αλγόριθμος. Κώστας Λιμνιώτης Κρυπτογραφία - Εργαστηριακό μάθημα 7 2 Κρυπτογραφία Εργαστηριακό μάθημα 7 (Αλγόριθμοι Δημοσίου Κλειδιού) α) El Gamal β) Diffie-Hellman αλγόριθμος για την ανταλλαγή συμμετρικού κλειδιού κρυπτογράφησης El Gamal Αλγόριθμος Παράμετροι συστήματος:

Διαβάστε περισσότερα

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΔΙΑΔΙΚΤΥΟ Το διαδίκτυο προσφέρει: Μετατροπή των δεδομένων σε ψηφιακή - ηλεκτρονική μορφή. Πρόσβαση

Διαβάστε περισσότερα

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 10 : Ασφάλεια. Δρ. Γκόγκος Χρήστος

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 10 : Ασφάλεια. Δρ. Γκόγκος Χρήστος 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Πληροφορική Ι Ενότητα 10 : Ασφάλεια Δρ. Γκόγκος Χρήστος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Χρηματοοικονομικής & Ελεγκτικής

Διαβάστε περισσότερα

Παύλος Εφραιμίδης. Βασικές Έννοιες Κρυπτογραφίας. Ασφ Υπολ Συστ

Παύλος Εφραιμίδης. Βασικές Έννοιες Κρυπτογραφίας. Ασφ Υπολ Συστ Παύλος Εφραιμίδης Βασικές Έννοιες Κρυπτογραφίας Ασφ Υπολ Συστ 1 θα εξετάσουμε τα ακόλουθα εργαλεία κρυπτογραφίας: ψηφιακές υπογραφές κατακερματισμός (hashing) συνόψεις μηνυμάτων μ (message digests) ψευδοτυχαίοι

Διαβάστε περισσότερα

KΕΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ

KΕΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ KΕΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ 1 Γενικά Η ψηφιακή υπογραφή είναι µια µέθοδος ηλεκτρονικής υπογραφής όπου ο παραλήπτης ενός υπογεγραµµένου ηλεκτρονικού µηνύµατος µπορεί να διαπιστώσει τη γνησιότητα του,

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (ΗΥ321)

Λειτουργικά Συστήματα (ΗΥ321) Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 19: Ασφάλεια Κρυπτογράφηση Βασική ιδέα: Αποθήκευσε και μετάδωσε την πληροφορία σε κρυπτογραφημένη μορφή που «δε βγάζει νόημα» Ο βασικός μηχανισμός: Ξεκίνησε από το

Διαβάστε περισσότερα

Κρυπτογραφία ηµόσιου Κλειδιού Η µέθοδος RSA. Κασαπίδης Γεώργιος -Μαθηµατικός

Κρυπτογραφία ηµόσιου Κλειδιού Η µέθοδος RSA. Κασαπίδης Γεώργιος -Μαθηµατικός Κρυπτογραφία ηµόσιου Κλειδιού Η µέθοδος RSA Τον Απρίλιο του 977 οι Ρόναλντ Ρίβεστ, Άντι Σαµίρ και Λέοναρντ Άντλεµαν, ερευνητές στο Ινστιτούτο Τεχνολογίας της Μασσαχουσέτης (ΜΙΤ) µετά από ένα χρόνο προσπαθειών

Διαβάστε περισσότερα

Πρόβληµα 2 (15 µονάδες)

Πρόβληµα 2 (15 µονάδες) ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΕΦΑΡΜΟΓΕΣ, 2013-2014 ΔΙΔΑΣΚΩΝ: Ε. Μαρκάκης Πρόβληµα 1 (5 µονάδες) 2 η Σειρά Ασκήσεων Προθεσµία Παράδοσης: 19/1/2014 Υπολογίστε

Διαβάστε περισσότερα

Κρυπτογραφία και Ηλεκτρονικοί Υπολογιστές. ΣΥΝΤΕΛΕΣΤΕΣ: Κραβαρίτης Αλέξανδρος Μαργώνη Αγγελική Χαλιμούρδα Κων/να

Κρυπτογραφία και Ηλεκτρονικοί Υπολογιστές. ΣΥΝΤΕΛΕΣΤΕΣ: Κραβαρίτης Αλέξανδρος Μαργώνη Αγγελική Χαλιμούρδα Κων/να Κρυπτογραφία και Ηλεκτρονικοί Υπολογιστές ΣΥΝΤΕΛΕΣΤΕΣ: Κραβαρίτης Αλέξανδρος Μαργώνη Αγγελική Χαλιμούρδα Κων/να Ορισμός κρυπτογραφίας Με τον όρο κρυπτογραφία, αναφερόμαστε στη μελέτη μαθηματικών τεχνικών

Διαβάστε περισσότερα

ΣΥΣΤΗΜΑΤΑ ΠΙΣΤΟΠΟΙΗΣΗΣ - ΚΡΥΠΤΟΓΡΑΦΙΑ - ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ

ΣΥΣΤΗΜΑΤΑ ΠΙΣΤΟΠΟΙΗΣΗΣ - ΚΡΥΠΤΟΓΡΑΦΙΑ - ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΣΥΣΤΗΜΑΤΑ ΠΙΣΤΟΠΟΙΗΣΗΣ - ΚΡΥΠΤΟΓΡΑΦΙΑ - ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ ΜΥΤΙΛΗΝΑΚΗΣ ΘΕΟΔΩΡΟΣ Α.Μ 2012 ΙΟΥΝΙΟΣ 2013 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΧΑΤΖΗΣ

Διαβάστε περισσότερα

Ασφάλεια στο Ηλεκτρονικό Επιχειρείν. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης

Ασφάλεια στο Ηλεκτρονικό Επιχειρείν. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης Ασφάλεια στο Ηλεκτρονικό Επιχειρείν ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης 1 Κίνδυνοι Η-Ε Μερικοί από τους κινδύνους ενός δικτυακού τόπου Ε-εμπορίου περιλαμβάνουν:

Διαβάστε περισσότερα

Κρυπτογραφία Δημόσιου Κλειδιού II Αλγόριθμος RSA

Κρυπτογραφία Δημόσιου Κλειδιού II Αλγόριθμος RSA Κρυπτογραφία Δημόσιου Κλειδιού II Αλγόριθμος RSA Τμήμα Μηχ. Πληροφορικής ΤΕΙ Κρήτης Κρυπτογραφία Δημόσιου Κλειδιού -RSA 1 Κρυπτογραφία Δημόσιου Κλειδιού - Ιστορία Ηνωμένες Πολιτείες 1975: Ο Diffie οραματίζεται

Διαβάστε περισσότερα

Βασικές Έννοιες Κρυπτογραφίας

Βασικές Έννοιες Κρυπτογραφίας Βασικές Έννοιες Κρυπτογραφίας Παύλος Εφραιμίδης Κρυπτογραφία Βασικές Έννοιες 1 Τι θα μάθουμε Obscurity vs. Security Βασικές υπηρεσίες κρυπτογραφίας: Confidentiality, Authentication, Integrity, Non- Repudiation

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ

ΥΠΟΛΟΓΙΣΤΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ ΥΠΟΛΟΓΙΣΤΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Εισαγωγή Άρης Παγουρτζής Στάθης Ζάχος Σχολή ΗΜΜΥ ΕΜΠ Διοικητικά του μαθήματος Διδάσκοντες Στάθης Ζάχος Άρης Παγουρτζής Πέτρος Ποτίκας (2017-18) Βοηθοί διδασκαλίας Παναγιώτης Γροντάς

Διαβάστε περισσότερα

Εισαγωγή στην Κρυπτολογία 3. Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Κωδικός DIΤ114 Σταύρος ΝΙΚΟΛΟΠΟΥΛΟΣ

Εισαγωγή στην Κρυπτολογία 3. Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Κωδικός DIΤ114 Σταύρος ΝΙΚΟΛΟΠΟΥΛΟΣ Εισαγωγή στην Κρυπτολογία 3 Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Κωδικός DIΤ114 Σταύρος ΝΙΚΟΛΟΠΟΥΛΟΣ Ακεραιότητα Μονόδρομη Κρυπτογράφηση Ακεραιότητα Αυθεντικότητα μηνύματος Ακεραιότητα μηνύματος Αυθεντικότητα

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Συναρτήσεις Κατακερματισμού και Πιστοποίηση Μηνύματος Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org Αντίρριο

Διαβάστε περισσότερα

Βασικές έννοιες της κρυπτογραφίας

Βασικές έννοιες της κρυπτογραφίας ΚΕΦΑΛΑΙΟ 4 Βασικές έννοιες της κρυπτογραφίας Στο κεφάλαιο αυτό εισάγονται οι ϐασικές έννοιες της κρυπτογρα- ϕίας, όπως τα είδη των αλγορίθµων ανάλογα µε το κλειδί, τα είδη αλγορίθµων ανάλογα µε το πως

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2 ΕΡΓΑΣΙΑ Διδάσκων: Γιώργος Χρυσάνθου Υπεύθυνος Άσκησης: Πύρρος Μπράτσκας Ημερομηνία Ανάθεσης: 3/10/015 Ημερομηνία Παράδοσης: 09/11/015 09:00 π.μ. I.Στόχος Στόχος αυτής της εργασίας είναι η χρησιμοποίηση

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Συμμετρική Κρυπτογραφία. Χρήστος Ξενάκης

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Συμμετρική Κρυπτογραφία. Χρήστος Ξενάκης Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Κρυπτογραφία Συμμετρική Κρυπτογραφία Χρήστος Ξενάκης Χρονολογείται από την Αρχαία Αίγυπτο Η πλειοψηφία των συμμετρικών κρυπτοαλγορίθμων είναι κρυπτοαλγόριθμοι

Διαβάστε περισσότερα

Στοιχεία Κρυπτογραφίας

Στοιχεία Κρυπτογραφίας Κεφάλαιο 1 ο Στοιχεία Κρυπτογραφίας 1.1 Εισαγωγή Κρυπτογραφία (cryptography) είναι η μελέτη τεχνικών που βασίζονται σε μαθηματικά προβλήματα με δύσκολη επίλυση, με σκοπό την εξασφάλιση της α- σφάλειας

Διαβάστε περισσότερα

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Βασικά Θέματα Κρυπτογραφίας Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά Αντικείμενο μελέτης Εφαρμοσμένη Κρυπτογραφία, απαραίτητη για την Ασφάλεια Δικτύων Υπολογιστών Χαρακτηριστικά των

Διαβάστε περισσότερα

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ Κρυπτογραφία Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou AES Ιαν. 1997: Το NIST (National Institute of Standards and Technology) απευθύνει κάλεσμα για τη δημιουργία

Διαβάστε περισσότερα

Εφαρμοσμένη Κρυπτογραφία Ι

Εφαρμοσμένη Κρυπτογραφία Ι Εφαρμοσμένη Κρυπτογραφία Ι Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Stream ciphers Η διαδικασία κωδικοποίησης για έναν stream cipher συνοψίζεται παρακάτω: 1.

Διαβάστε περισσότερα

Κατάλογος Σχηµάτων. Κατάλογος Πινάκων. I Θεµέλια 27

Κατάλογος Σχηµάτων. Κατάλογος Πινάκων. I Θεµέλια 27 Κατάλογος Σχηµάτων Κατάλογος Πινάκων ix xv xx I Θεµέλια 27 1 Μαθηµατικά 29 1.1 Κριτήρια διαιρετότητας................ 30 1.2 Μέγιστος κοινός διαιρέτης και Ευκλείδειος αλγόριθµος 31 1.3 Πρώτοι αριθµοί....................

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ»

ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ» ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ» - Κρυπτογραφία είναι - Κρυπτανάλυση είναι - Με τον όρο κλειδί. - Κρυπτολογία = Κρυπτογραφία + Κρυπτανάλυση - Οι επιστήµες αυτές είχαν

Διαβάστε περισσότερα

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) Ενότητα 4: ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΔΙΔΑΣΚΩΝ: ΚΩΝΣΤΑΝΤΙΝΟΣ ΧΕΙΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Εφαρμοσμένη Κρυπτογραφία Ι

Εφαρμοσμένη Κρυπτογραφία Ι Εφαρμοσμένη Κρυπτογραφία Ι Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Ιστορία Ασύμμετρης Κρυπτογραφίας Η αρχή έγινε το 1976 με την εργασία των Diffie-Hellman

Διαβάστε περισσότερα

Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών

Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών Ασύρματες Επικοινωνίες Μέρος V Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Slide: 1/30 Περιεχόμενα IEEE 802.11i ΤΟ ΠΡΩΤΟΚΟΛΛΟ CCMP Γενικά Λίγα

Διαβάστε περισσότερα

Εφαρμοσμένη Κρυπτογραφία Ι

Εφαρμοσμένη Κρυπτογραφία Ι Εφαρμοσμένη Κρυπτογραφία Ι Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Ασύμμετρα Κρυπτοσυστήματα κλειδί κρυπτογράφησης k1 Αρχικό κείμενο (m) (δημόσιο κλειδί) Αλγόριθμος

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Οι Αλγόριθμοι Κρυπτογραφίας και οι Ιδιότητές τους Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org Αντίρριο

Διαβάστε περισσότερα

Ασφάλεια Πληροφοριακών Συστημάτων

Ασφάλεια Πληροφοριακών Συστημάτων Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων Θεοδωρακοπούλου Ανδριάνα atheodorak@outlook.com Βαθμολόγηση Ασκήσεις Εργαστηρίου: 40% Τελική Εξέταση: 60% Ρήτρα: Βαθμός τελικής εξέτασης > 3.5 ΠΡΟΣΟΧΗ στις

Διαβάστε περισσότερα

Μελέτη Πρωτοκόλλων Κρυπτογραφίας

Μελέτη Πρωτοκόλλων Κρυπτογραφίας AΕΙ ΠΕΙΡΑΙΑ T.T. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ T.Τ. ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Μελέτη Πρωτοκόλλων Κρυπτογραφίας Άννα Ελένη Κ. Γεωργοπούλου Εισηγητής: Δρ Παναγιώτης

Διαβάστε περισσότερα

Α.ΤΕΙ ΚΡΗΤΗΣ ΠΑΡΑΡΤΗΜΑ ΧΑΝΙΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝIΚΩΝ ΜΗΧΑΝΙΚΩΝ

Α.ΤΕΙ ΚΡΗΤΗΣ ΠΑΡΑΡΤΗΜΑ ΧΑΝΙΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝIΚΩΝ ΜΗΧΑΝΙΚΩΝ Α.ΤΕΙ ΚΡΗΤΗΣ ΠΑΡΑΡΤΗΜΑ ΧΑΝΙΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝIΚΩΝ ΜΗΧΑΝΙΚΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΑ ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΚΑΙ ΟΙ ΧΡΗΣΙΜΟΤΗΤΑ ΤΟΥΣ ΧΑΤΖΗΣΤΕΦΑΝΟΥ ΣΤΥΛΙΑΝΟΣ ΧΑΝΙΑ ΜΑΙΟΣ 2013 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΜΠΑΡΜΟΥΝΑΚΗΣ ΙΩΑΝΝΗΣ

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Κρυπτογραφικές Συναρτήσεις. Χρήστος Ξενάκης

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Κρυπτογραφικές Συναρτήσεις. Χρήστος Ξενάκης Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Κρυπτογραφία Κρυπτογραφικές Συναρτήσεις Χρήστος Ξενάκης Ψευδοτυχαίες ακολουθίες Η επιλογή τυχαίων αριθμών είναι ένα βασικό σημείο στην ασφάλεια των κρυπτοσυστημάτων

Διαβάστε περισσότερα

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα Ενότητα 5: ΚΡΥΠΤΟΓΡΑΦΗΣΗ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος

Διαβάστε περισσότερα

Οικονομικό Πανεπιστήμιο Αθηνών Τμήμα Πληροφορικής ΠΜΣ στα Πληροφοριακά Συστήματα Κρυπτογραφία και Εφαρμογές Διαλέξεις Ακ.

Οικονομικό Πανεπιστήμιο Αθηνών Τμήμα Πληροφορικής ΠΜΣ στα Πληροφοριακά Συστήματα Κρυπτογραφία και Εφαρμογές Διαλέξεις Ακ. Οικονομικό Πανεπιστήμιο Αθηνών Τμήμα Πληροφορικής ΠΜΣ στα Πληροφοριακά Συστήματα Κρυπτογραφία και Εφαρμογές Διαλέξεις Ακ. Έτους 2015-2016 Μαρκάκης Ευάγγελος markakis@aueb.gr Ντούσκας Θεόδωρος ttouskas@aueb.gr

Διαβάστε περισσότερα

Ασφάλεια ικτύων (Computer Security)

Ασφάλεια ικτύων (Computer Security) Ασφάλεια ικτύων (Computer Security) Τι Εννοούµε µε τον Όρο Ασφάλεια ικτύων; Ασφάλεια Μόνο ο αποστολέας και ο προοριζόµενος παραλήπτης µπορούν να διαβάσουν και να κατανοήσουν ένα µήνυµα. Ο αποστολέας το

Διαβάστε περισσότερα

Οικονομικό Πανεπιστήμιο Αθηνών Τμήμα Πληροφορικής ΠΜΣ Κρυπτογραφία και Εφαρμογές

Οικονομικό Πανεπιστήμιο Αθηνών Τμήμα Πληροφορικής ΠΜΣ Κρυπτογραφία και Εφαρμογές Οικονομικό Πανεπιστήμιο Αθηνών Τμήμα Πληροφορικής ΠΜΣ Κρυπτογραφία και Εφαρμογές Μαριάς Ιωάννης Μαρκάκης Ευάγγελος marias@aueb.gr markakis@gmail.com Περίληψη Shannon theory Εντροπία Μελέτη κρυπτοσυστηµάτων

Διαβάστε περισσότερα

Εφαρμοσμένη Κρυπτογραφία Ι

Εφαρμοσμένη Κρυπτογραφία Ι Εφαρμοσμένη Κρυπτογραφία Ι Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Ψηφιακές Υπογραφές Ορίζονται πάνω σε μηνύματα και είναι αριθμοί που εξαρτώνται από κάποιο

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org Αντίρριο

Διαβάστε περισσότερα

Αριθμοθεωρητικοί Αλγόριθμοι

Αριθμοθεωρητικοί Αλγόριθμοι Αλγόριθμοι που επεξεργάζονται μεγάλους ακέραιους αριθμούς Μέγεθος εισόδου: Αριθμός bits που απαιτούνται για την αναπαράσταση των ακεραίων. Έστω ότι ένας αλγόριθμος λαμβάνει ως είσοδο έναν ακέραιο Ο αλγόριθμος

Διαβάστε περισσότερα

Cryptography and Network Security Chapter 9. Fifth Edition by William Stallings

Cryptography and Network Security Chapter 9. Fifth Edition by William Stallings Cryptography and Network Security Chapter 9 Fifth Edition by William Stallings Chapter 9 Κρυπτογραφια Δημοσιου Κλειδιου και RSA Every Egyptian received two names, which were known respectively as the true

Διαβάστε περισσότερα

Freedom of Speech. Κρυπτογραφία και ασφαλής ανταλλαγή πληροφοριών στο Internet

Freedom of Speech. Κρυπτογραφία και ασφαλής ανταλλαγή πληροφοριών στο Internet Freedom of Speech Κρυπτογραφία και ασφαλής ανταλλαγή πληροφοριών στο Internet Freedom of Speech Ποιός ; & Γιατί ; Τι είναι Ιστορικά Στόχοι Είδη Μοντέρνων Αλγορίθμων Μοντέλα Εμπιστοσύνης 14/03/2012 Freedom

Διαβάστε περισσότερα

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) Ενότητα 6: ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΔΙΔΑΣΚΩΝ: ΚΩΝΣΤΑΝΤΙΝΟΣ ΧΕΙΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Κρήτης

Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Κρήτης Συμμετρική Κρυπτογραφία I Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Κρήτης Συμμετρική Κρυπτογραφία I 1 Αρχές του Kerckhoff `La Cryptographie Militaire' (1883) Auguste Kerkhoffs, Ολλανδός φιλόλογος Πρώτη επιστημονική

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση Ασφαλείας (Ι) Απειλές Ασφαλείας Συμμετρική & Μη-Συμμετρική Κρυπτογραφία

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση Ασφαλείας (Ι) Απειλές Ασφαλείας Συμμετρική & Μη-Συμμετρική Κρυπτογραφία ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση (Ι) Απειλές Συμμετρική & Μη-Συμμετρική Κρυπτογραφία Β. Μάγκλαρης maglaris@netmode.ntua.gr www.netmode.ntua.gr 13/11/2017 ΘΕΜΑΤΙΚΕΣ ΠΕΡΙΟΧΕΣ ΑΣΦΑΛΕΙΑΣ Είδη Απειλών και Επιθέσεων

Διαβάστε περισσότερα