Διπλωματική Εργασία. Τίτλος:

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Διπλωματική Εργασία. Τίτλος:"

Transcript

1 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής Μεταπτυχιακό Πρόγραμμα Σπουδών Πληροφορική και Επικοινωνίες Διπλωματική Εργασία Τίτλος: Ανάλυση και υλοποίηση κρυπτογραφικού αλγορίθμου Hummingbird. Προσομοίωση κρυπτογράφησης και αποκρυπτογράφησης σε υλικό με γλώσσα VHDL. της Σταυρούλας Μάμμου Θεσσαλονίκη Φεβρουάριος 2017

2 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Μεταπτυχιακό Πρόγραμμα Σπουδών Πληροφορική και Επικοινωνίες Διπλωματική Εργασία Τίτλος: Ανάλυση και υλοποίηση κρυπτογραφικού αλγορίθμου Hummingbird. Προσομοίωση κρυπτογράφησης και αποκρυπτογράφησης σε υλικό με γλώσσα VHDL. της Σταυρούλας Μάμμου, ΑΕΜ:634 Επιβλέπον: Νικόλαος Κονοφάος Θεσσαλονίκη, 2017

3 ii

4 Αφιερώνεται στην πολυαγαπημένη μου μητέρα, Μαρία και στην αδερφή μου Εβίτα iii

5 Περίληψη Σήμερα, όλο και μεγαλύτερη είναι η ανάγκη των ανθρώπων, των οργανισμών και γενικότερα του κόσμου, για προστασία των δεδομένων τους και η ασφαλής διακίνηση των πληροφοριών σε κάθε επικοινωνία. Επιπλέον, η συνεχής επέκταση των δικτύων καθιστά ακόμη πιο δύσκολη την ανάγκη της ασφαλούς επικοινωνίας. Τα προβλήματα αυτά καλείται να αντιμετωπίσει ο κλάδος της κρυπτογραφίας, με πλήθος αλγορίθμων και τεχνικών που μετατρέπουν το περιεχόμενο της επικοινωνίας σε μη αναγνώσιμη μορφή από οποιονδήποτε άλλο εκτός του νόμιμου παραλήπτη. Σκοπός της συγκεκριμένης διπλωματικής εργασίας, είναι η πλήρης παρουσίαση όλων των σταδίων εκτέλεσης ενός από τους πολλούς κρυπτογραφικού αλγορίθμους, του αλγορίθμου Hummingbird και η υλοποίηση του σε επίπεδο υλικού, συγκεκριμένα στην γλώσσα υλικού VHDL. Για την κατανόηση του τρόπου που λειτουργεί ο αλγόριθμος στα πρώτα κεφάλαια της εργασίας γίνεται αναφορά στην επιστήμη της κρυπτογραφίας, στις κατηγορίες που χωρίζεται και οι διαφοροποιήσεις αυτών, καθώς και στις βασικές της έννοιες. Στην συνέχεια επισημαίνεται η κατηγορία της lightweight κρυπτογραφίας που ανήκει ο Hummingbird αλλά και οι τεχνικές κρυπτογράφησης που εφαρμόζονται στον αλγόριθμο. Ακολουθεί λεπτομερής ανάλυση των διαδικασιών αρχικοποίησης, κρυπτογράφησης και αποκρυπτογράφησης του Hummingbird, με βήματα. Σημαντική θέση στην εφαρμογή του αλγορίθμου καταλαμβάνει η κρυπτογράφηση και αποκρυπτογράφηση τμήματος, στην οποία περιλαμβάνονται οι κρυπτογραφικές τεχνικές της αντικατάστασης με Sbox και της μετάθεσης με γραμμική ολίσθηση. Επίσης, ο αλγόριθμος χρησιμοποιεί τον τεχνική του καταχωρητή ολίσθησης με γραμμική ανάδραση ή όπως είναι γνωστός στην κρυπτογραφία LFSR. Με βάση όσα αναλύθηκαν στα προηγούμενα κεφάλαια, υλοποιήθηκαν όλες οι τεχνικές και διαδικασίες του Hummingbird στην VHDL, με την βοήθεια του προγράμματος της εταιρείας Xilinx. Η προσομοίωση της υλοποίησης περιέχει κυκλώματα και κώδικα, τα οποία ελέγχθηκαν με παραδείγματα. Τα κυκλώματα, οι κώδικες και η εκτέλεση των προσομοιώσεων παρουσιάζονται στο κεφάλαιο 5 της παρούσα εργασίας. Τέλος στο τελευταίο κεφάλαιο, έχουμε τα συμπεράσματα που εξήχθησαν από την πορεία της υλοποίησης του αλγορίθμου και από τα αποτελέσματα των προσομοιώσεων, αλλά και προτάσεις για μελλοντικές υλοποιήσεις του Hummingbird που μπορούν να προσφέρουν βελτίωση και της συγκεκριμένης υλοποίησης. (Κεφάλαιο 6) iv

6 v

7 Abstract The ongoing changes in networks and the need for safety between the exchange information and data in communications are issues that the science of Cryptography has to deal with. Cryptography includes a large number of algorithms and techniques that makes the content of communication non readable for others, except for legal receiver. Consequently, the sender is ensured that the communication is secure and accomplished with safety. In the present thesis, after an extensive presentation of the basic categories and techniques of cryptography, the Hummingbird algorithm is analyzed. The Hummingbird is a lightweight cryptographic algorithm, which consist of 3 stages of execution, the Initialization Process, the Encryption Process and the Decryption Process. All this processes includes stream cipher and block cipher encryption or decryption techniques, such as transpotition with linear transform substitution with Sbox. Also the Hummingbird algorithm deploys the benefits of the extra safety that provides the linear feedback register, known as LFSR technique. In chapter 5, is presented the implementation in a hardware description language, in particular VHDL, of each content and process of Hummingbird algorithm, which analyzed in the previous chapter. Subsequently, the circuits and the codes of this implementation are simulated and tested with lot of inputs. In the final section of this chapter reported extensively 2 of the examples of simulation with the exact inputs and outputs in bit strings and in wavelengths, which generated by Xilinx ISE design suite program tool. Finally, in the last chapter of the thesis (Chapter 6), impress the future work on the Hummingbird algorithm and the possible improvement or upgrade of the thesis implementation to the reader. vi

8 vii

9 Ευχαριστίες Με την ολοκλήρωση της παρούσας διπλωματικής εργασίας, ολοκληρώνεται και ο δεύτερος κύκλος σπουδών μου, δίνοντας μου την ευκαιρία να ευχαριστήσω τον κύριο Κονοφάο Ν., καθηγητή σε όλα τα χρόνια των σπουδών μου και κυρίως επιβλέπων καθηγητή της εργασίας, για την μεγάλη εμπιστοσύνη που μου έδειξε και την βοήθεια που μου προσέφερε σε όλη την διάρκεια της συγγραφής της εργασίας. Επίσης, δεν πρέπει να παραλειφθεί ένα μεγάλο ευχαριστώ για τον χρόνο που διέθεσε ο καθηγητής, κύριος Δραζιώτη Κ., διότι καθοριστική αποτέλεσε η συμβολή του και οι διευκρινήσεις που μου προσέφερε όποτε και αν χρειάστηκε, στο κομμάτι της κρυπτογραφίας που περιλαμβάνει η εργασία αυτή. Πρέπει ιδιαίτερα να ευχαριστήσω την οικογένειά μου, που με στήριξε ηθικά αλλά και υλικά και σε αυτό το στάδιο των σπουδών μου. Χωρίς αυτούς δεν θα μπορούσα να καταφέρω τόσα πολλά και ελπίζω να χαρούν που θα δουν να ολοκληρώνεται με επιτυχία. Τέλος, ευχαριστώ πολύ τους καλούς μου φίλους και κοντινούς μου ανθρώπους για την ψυχολογική τους υποστήριξη, την συμπαράσταση τους και τις ωραίες στιγμές που μου χάρισαν σε όλη την πορεία των φοιτητικών μου χρόνων. viii

10 ix

11 Περιεχόμενα ΠΕΡΙΛΗΨΗ... IV ABSTRACT... VI ΕΥΧΑΡΙΣΤΙΕΣ... VIII ΠΕΡΙΕΧΟΜΕΝΑ... X 1. ΕΙΣΑΓΩΓΗ ΤΙ ΕΙΝΑΙ ΚΡΥΠΤΟΓΡΑΦΙΑ ΣΤΟΧΟΙ ΚΡΥΠΤΟΓΡΑΦΙΑΣ ΚΡΥΠΤΟΓΡΑΦΗΣΗ ΚΑΙ ΑΠΟΚΡΥΠΤΟΓΡΑΦΗΣΗ ΚΡΥΠΤΟΣΥΣΤΗΜΑΤΑ ΕΦΑΡΜΟΓΕΣ ΚΡΥΠΤΟΓΡΑΦΙΑΣ ΚΡΥΠΤΟΓΡΑΦΙΑ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ ΚΡΥΠΤΟΣΥΣΤΗΜΑΤΑ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΣΥΜΜΕΤΡΙΚΗ ΚΡΥΠΤΟΓΡΑΦΗΣΗ Κρυπτοσύστημα Μετάθεσης Κρυπτοσυστήματα Αντικατάστασης Αλγόριθμος Σημειωματάριου μιας Χρήσης (One time pad) Αλγόριθμοι Ροής (Stream cipher) Καταχωρητές Ολίσθησης με Γραμμική Ανάδραση (Linear Feedback Shift Register) Αλγόριθμοι Τμήματος (Block Cipher) Τεχνική Αντικατάστασης με S-boxes ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΗΣΗ LIGHTWEIGHT ΚΡΥΠΤΟΓΡΑΦΙΑ ΑΛΓΟΡΙΘΜΟΣ HUMMINGBIRD ΓΕΝΙΚΗ ΠΕΡΙΓΡΑΦΗ HUMMINGBIRD ΔΟΜΗ ΑΛΓΟΡΙΘΜΟΥ HUMMINGBIRD Διαδικασία Αρχικοποίησης (Initialization Process) Διαδικασία Κρυπτογράφησης (Encryption Process) Διαδικασία Αποκρυπτογράφησης (Description Process) Κρυπτογράφηση Τμήματος 16bit στον Hummingbird Επιλογή S-box στον Hummingbird Απορυπτογράφηση Τμήματος 16bit στον Hummingbird ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΓΕΝΙΚΗ ΠΑΡΟΥΣΙΑΣΗ ΣΧΕΔΙΑΣΗ ΟΛΟΚΛΗΡΩΜΕΝΩΝ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΨΗΦΙΑΚΏΝ ΣΥΣΤΗΜΑΤΩΝ ΓΛΩΣΣΕΣ ΠΕΡΙΓΡΑΦΗΣ ΥΛΙΚΟΥ (HARDWARE DESCRIPTION LANGUAGES) Η Γλώσσα VHDL (Very High Speed Integrated Circuit Hardware Description Language) ΛΟΓΙΣΜΙΚΟ ΠΡΟΣΟΜΟΙΩΣΗΣ XILINX x

12 5. ΥΛΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΟΥ HUMMINGBIRD ΣΕ VHDL ΥΛΟΠΟΙΗΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΡΧΙΚΟΠΟΙΗΣΗΣ Στοιχείο κυκλώματος: Key256Constant Στοιχείο κυκλώματος: SplitKey Στοιχείο κυκλώματος: noncerand Στοιχείο κυκλώματος: Mux16bit Στοιχείο κυκλώματος: Split16bit Στοιχείο κυκλώματος: Mux2to Στοιχείο κυκλώματος: Combine16bit Στοιχείο κυκλώματος: DFF16bit Στοιχείο κυκλώματος: DFF Στοιχείο κυκλώματος: InitializationPrBasic Στοιχείο κυκλώματος: FA16bit Στοιχείο κυκλώματος: fulladder Στοιχείο κυκλώματος: AssignC Στοιχείο κυκλώματος: InvalidCarry6in ΥΛΟΠΟΙΗΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΚΡΥΠΤΟΓΡΑΦΗΣΗΣ Στοιχείο κυκλώματος: RsiInitializationPr Στοιχείο κυκλώματος: TV3Constant Στοιχείο κυκλώματος: LFSRstage Στοιχείο κυκλώματος: Plaintextm16Constant Στοιχείο κυκλώματος: EncryptionPrBasic Στοιχείο κυκλώματος: InvalidCarry4in Στοιχείο κυκλώματος: InvalidCarry7in ΥΛΟΠΟΙΗΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΟΚΡΥΠΤΟΓΡΑΦΗΣΗΣ Στοιχείο κυκλώματος: CipherConstant Στοιχείο κυκλώματος: DecryptionPrBasic Στοιχείο κυκλώματος: FASub16bit Στοιχείο κυκλώματος: FASubstractor Στοιχείο κυκλώματος: AssignC0Decr ΥΛΟΠΟΙΗΣΗ ΚΡΥΠΤΟΓΡΑΦΗΣΗΣ ΚΑΙ ΑΠΟΚΡΥΠΤΟΓΡΑΦΗΣΗΣ ΤΜΗΜΑΤΟΣ Στοιχείο κυκλώματος: EnBlockCipherAll (Κρυπτογράφηση Τμήματος 16bit) Στοιχείο κυκλώματος: SplitKey Στοιχείο κυκλώματος: BlockCipherXOR Στοιχείο κυκλώματος: Split16to Στοιχείο κυκλώματος: EnSbox Στοιχείο κυκλώματος: EnBlockCipherBasic Στοιχείο κυκλώματος: LinearTransform Στοιχείο κυκλώματος: GenNewKey Στοιχείο κυκλώματος: DecBlockCipherAll (Αποκρυπτογράφηση Τμήματος 16bit) Στοιχείο κυκλώματος: DecrSbox Στοιχείο κυκλώματος: DecBlockCipherBasic Στοιχείο κυκλώματος: DecrLinearTransform ΕΦΑΡΜΟΓΕΣ ΥΛΟΠΟΙΗΣΗΣ Παραδείγματα και Αποτελέσματα Παράδειγμα 1 ο Παράδειγμα 2 ο xi

13 6. ΣΥΝΟΨΗ, ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΜΕΛΛΟΝΤΙΚΗ ΈΡΕΥΝΑ ΒΙΒΛΙΟΓΡΑΦΙΑ ΠΙΝΑΚΑΣ ΕΙΚΟΝΩΝ ΠΙΝΑΚΑΣ ΠΙΝΑΚΩΝ xii

14 1. Εισαγωγή 1.1 Τι είναι κρυπτογραφία Ο όρος κρυπτογραφία (προέρχεται από τους ελληνικούς όρους «κρυπτός»- κρυμμένος και «γράφω») αφορά το πεδίο που ασχολείται με την μελέτη, την ανάπτυξη και τη χρήση τεχνικών κρυπτογράφησης και αποκρυπτογράφησης με σκοπό την απόκρυψη του περιεχομένου των μηνυμάτων που αποστέλλονται μεταξύ δύο οντοτήτων. Σύμφωνα με τον Ronald L. Rivest, η κρυπτογραφία είναι η προσπάθεια ασφαλούς επικοινωνίας με την παρουσία τρίτων, που δεν συμμετέχουν στην επικοινωνία νόμιμα. Γενικά, η κρυπτογραφία θεωρείται από παλιά η επιστήμη της μυστικότητας. Η κρυπτογραφία αποτελεί τον ένα από τους δύο κλάδους της κρυπτολογίας, της επιστήμης που ασχολείται γενικά με την ασφαλή επικοινωνία μέσω τεχνικών και πρωτοκόλλων. Ο άλλος κλάδος της κρυπτολογίας είναι η κρυπτανάλυση. Με τον όρο κρυπτανάλυση περιγράφεται η μελέτη των μαθηματικών τεχνικών που αποσκοπούν στην παραβίαση της ασφαλούς επικοινωνίας και μετάδοσης πληροφοριών, που προσπαθείτε με την κρυπτογραφία. Ουσιαστικά πρόκειται για την αντίθετη διαδικασία. Η κρυπτογραφία χρησιμοποιείται ευρέως από τα πολύ παλιά χρόνια, που τότε κυρίως αφορούσε την μετατροπή κατανοητών μηνυμάτων σε μορφή «γρίφων» με απλές τεχνικές βασιζόμενες στην δομή της γλώσσας, όπως ο αναγραμματισμός. Επίσης μεγάλη χρήση της κρυπτογραφίας έγινε σε περιόδους πολέμου, όπως στο 2 ο Παγκόσμιο Πόλεμο, όπου η ασφαλής ανταλλαγή σημαντικών στρατιωτικών πληροφοριών ήταν αναγκαία. Σε αυτή την περίοδο η κρυπτογραφία βασίστηκε σε πολύπλοκα συστήματα που λειτουργούσαν σε μηχανές, όπως η μηχανή Enigma (Εικόνα 1), που κατασκευάστηκε την δεκαετία του 1920, αρχικά για εμπορικούς και έπειτα πήρε έγκριση για στρατιωτικούς και κυβερνητικούς σκοπούς κυρίως της Γερμανίας και χρησιμοποιήθηκε με πολλές παραλλαγές κρυπτογράφησης. 1

15 Εικόνα 1 Μηχανή Enigma Στις πιο σύγχρονες εποχές η κρυπτογραφία χρησιμοποιεί πεδία των μαθηματικών, όπως διακριτά μαθηματικά, θεωρία αριθμών, θεωρία πληροφορίας, υπολογιστική πολυπλοκότητα, στατιστική και άλλα πολλά. 1.2 Στόχοι Κρυπτογραφίας Οι βασικοί στόχοι της μοντέρνας κρυπτογραφίας, που πρέπει να πληρούνται για την ασφαλή επικοινωνία δύο οντοτήτων, είναι τέσσερις. Κατά την επικοινωνία πρέπει να παρέχεται: 1) Εμπιστευτικότητα(confidentiality), δηλαδή το μήνυμα που ανταλλάσουν δεν πρέπει να μπορεί να γνωστοποιηθεί ολόκληρο ή μέρος αυτού σε κανέναν τρίτο 2) Ακεραιότητα(integrity) του μηνύματος, που αφορά την αδυναμία τροποποίησης όλου ή μέρους του μηνύματος από κάποιον τρίτο χωρίς να γίνει αντιληπτή η αλλαγή από τις επικοινωνούντες οντότητες 3) Πιστοποίηση(authentication), που αφορά την αναγκαιότητα επιβεβαίωσης των στοιχείων των δύο οντοτήτων που επικοινωνούν, αλλά και την βεβαιότητα που σχετίζεται με στοιχεία του μηνύματος (προέλευση, ημερομηνία, προορισμός) 4) Αδυναμία άρνησης(non-repudiation) του αποστολέα σε μετέπειτα στάδιο της επικοινωνίας ότι ο ίδιος είναι δημιουργός του μηνύματος και έκανε την αποστολή αυτού. 1.3 Κρυπτογράφηση και Αποκρυπτογράφηση Η κρυπτογραφία σήμερα έχει συνδεθεί με τον όρο κρυπτογράφηση και αντίστοιχα η κρυπτανάλυση, η αντίστροφη διαδικασία, με τον όρο αποκρυπτογράφηση. 2

16 Γενικά, η κρυπτογράφηση περιλαμβάνει το αρχικό μήνυμα ή καθαρό μήνυμα (Plaintext), τον κρυπτογραφικό μηχανισμό ή συνάρτηση κρυπτογράφησης και το κρυπτογραφικό κλειδί (Key). Η συνάρτηση κρυπτογράφησης εφαρμόζεται στο αρχικό μήνυμα μαζί με το κλειδί και έχουμε την παραγωγή του κρυπτογραφημένου μηνύματος (Cipher text). Η εφαρμογή της γίνεται από τον αποστολέα και αφού παραχθεί το κρυπτογραφημένο μήνυμα αποστέλλεται στον παραλήπτη. Η αντίστροφη διαδικασία, της αποκρυπτογράφησης περιλαμβάνει το κρυπτογραφημένο μήνυμα (Cipher text), τον αποκρυπτογραφικό μηχανισμό ή συνάρτηση αποκρυπτογράφησης και το κλειδί (Key). Η συνάρτηση αποκρυπτογράφησης εφαρμόζεται στο κρυπτογραφημένο μήνυμα μαζί με το κλειδί και έχουμε την παραγωγή του αρχικού μηνύματος (Plaintext). Η διαδικασία αυτή εφαρμόζεται από τον παραλήπτη του μηνύματος. Αποκρυπτογραφώντας το μήνυμα γνωρίζει τις εμπιστευτικές πληροφορίες που ήθελε να μοιραστεί μαζί του ο αποστολέας. Όλα τα στοιχεία που αναφέρθηκαν, Plaintext, Key, Cipher text, και οι μηχανισμοί κρυπτογράφησης(e K ) και αποκρυπτογράφησης(d K ) δημιουργούν ένα κρυπτογραφικό σύστημα. Οι παραπάνω διαδικασίες περιγράφονται σχηματικά στην Εικόνα 2, που ακολουθεί. Εικόνα 2 Γενικό Σχήμα Κρυπτογράφησης και Αποκρυπτογράφησης Οι μηχανισμοί κρυπτογράφησης και αποκρυπτογράφησης, συνήθως είναι αλγόριθμοι, που είναι δημόσια γνωστοί. Συνεπώς και οντότητες εκτός των δύο που επικοινωνούν γνωρίζουν τους μηχανισμούς που χρησιμοποιούνται. Αυτός είναι και ο λόγος που σύμφωνα με την αρχή του Kerckhoff, που αναπτύχθηκε το 19 ο αιώνα από τον γνωστό κρυπτογράφο Auguste Kerckhoff [24], η ασφάλεια ενός κρυπτοσυστήματος βασίζεται μόνο στην ισχυρότητα του κλειδιού και όχι στην γνώση των υπόλοιπων στοιχείων του κρυπτοσυστήματος. 3

17 1.4 Κρυπτοσυστήματα Τα κρυπτοσυστήματα διαχωρίζονται σε δύο μεγάλες κατηγορίες με βάση την παλαιότητα των τεχνικών. Ο αρχικός, αυτός, διαχωρισμός γίνεται στα Κλασσικά Κρυπτοσυστήματα και στα Σύγχρονα Κρυπτοσυστήματα. Τα Κλασσικά Κρυπτοσυστήματα αφορούν πιο απλές τεχνικές που αναπτύχθηκαν και είχαν ευρεία χρήση τα προγενέστερα χρόνια. Στην παρούσα εργασία θα μας απασχολήσουν οι κατηγορίες που περιέχονται στα Σύγχρονα Κρυπτοσυστήματα, όπου ανήκει και ο αλγόριθμος Hummingbird που θα υλοποιηθεί στην συνέχεια. Γενικά, η διαίρεση των κρυπτοσυστημάτων σε κατηγορίες, εκτός της παλαιότητας, έγινε με γνώμονα τριών ειδών ανεξάρτητα κριτήρια. Τις τεχνικές που χρησιμοποιούνται για τον μετασχηματισμό του αρχικού μηνύματος σε κρυπτογραφημένο. Πιο συγκεκριμένα, έχουμε τα κρυπτοσυστήματα που βασίζονται στην μετατόπιση (Shift cipher) και τα κρυπτοσυστήματα που βασίζονται στην αντικατάσταση(substitution Cipher). Τον αριθμό των κλειδιών που χρησιμοποιούνται. Σύμφωνα με αυτό το κριτήριο έχουμε τα κρυπτοσυστήματα Δημόσιου Κλειδιού (Ασύμμετρη Κρυπτογράφηση), όπου υπάρχουν δημόσια και ιδιωτικά κλειδιά που διαμοιράζονται μεταξύ αποστολέα και παραλήπτη, και τα κρυπτοσυστήματα Ιδιωτικού Κλειδιού (Συμμετρική Κρυπτογράφηση), όπου ο αποστολέας και ο παραλήπτης χρησιμοποιούν το ίδιο μυστικό κλειδί για την κρυπτογράφηση και αποκρυπτογράφηση αντίστοιχα. Τον τρόπο που αντιμετωπίζεται και επεξεργάζεται το αρχικό μήνυμα για να μετατραπεί σε κρυπτογραφημένο. Υπάρχουν οι Κωδικοποιητές Τμήματος (Block cipher), οι οποίοι χωρίζουν το αρχικό κείμενο σε μικρότερα τμήματα και έπειτα εφαρμόζουν την συνάρτηση κρυπτογράφησης σε κάθε τμήμα και οι Κωδικοποιητές Ροής (Stream cipher), οι οποίοι αντιμετωπίζουν το αρχικό μήνυμα σαν μία ενιαία ροή δεδομένων (bits) και εφαρμόζουν την συνάρτηση κρυπτογράφησης σε κάθε bit. Αξίζει, απλά, να σημειωθεί ότι τα Κλασσικά Κρυπτοσυστήματα χρησιμοποιούν κατά κύριο λόγο Συμμετρική Κρυπτογράφηση, η οποία αποτελεί και βασική υποκατηγορία των Σύγχρονων Κρυπτοσυστημάτων. Αν προσπαθούσαμε να αποδώσουμε σχηματικά τις παραπάνω κατηγορίες με τις συνδέσεις που έχουν θα καταλήξουμε σε ένα διάγραμμα να θυμίζει το σχήμα της Εικόνα 3, που ακολουθεί. 4

18 Εικόνα 3 Σχήμα Διαχωρισμού Κρυπτοσυστημάτων 1.5 Εφαρμογές Κρυπτογραφίας Η εξέλιξη της τεχνολογίας, σήμερα, αυξάνει την ανάγκη της χρήσης της κρυπτογραφίας σε πλήθος εφαρμογών σε διάφορους τομείς, με σκοπό την αξιόπιστη και ασφαλή μεταφορά πληροφοριών. Η κρυπτογραφία πλέον χρησιμοποιείται παντού. Μερικά παραδείγματα χρήσης στην καθημερινότητα είναι: Στρατιωτικά δίκτυα για ασφαλή μεταφορά πληροφοριών, ATM τραπεζών για ασφαλείς συναλλαγές, Κινητή (GSM) και σταθερή (cryptophones) τηλεφωνία, Ασύρματα δίκτυα (Bluetooth, i) για ασφάλεια πρόσβασης και μεταφοράς πληροφοριών, Ηλεκτρονικό εμπόριο, Ηλεκτρονικό ταχυδρομείο ( ), Ηλεκτρονική ψηφοφορία (E-voting) για διασφάλιση της αξιοπιστία των αποτελεσμάτων, Σε παιχνίδια για προστασία από την πειρατεία, Προστασία δεδομένων σε DVD (CSS), Τηλεδιασκέψεις (VoIP), Δορυφορική τηλεόραση και γενικά εφαρμογές, Συστήματα συναγερμών, 5

19 Εσωτερικά στις επιχειρήσεις για διασφάλιση των εταιρικών πληροφοριών, Βάσεις δεδομένων με σημαντικές καταχωρήσεις, όπως συστήματα ιατρικών δεδομένων για την ασφάλεια των ευαίσθητων προσωπικών δεδομένων των ασθενών, Web traffic (https) για ασφαλή πλοήγηση στις ιστοσελίδες, Ανώνυμη περιήγηση στο διαδίκτυο (Proxy servers), Ιδιωτικό δίκτυο - πρόσβαση με VPN, Ψηφιακές υπογραφές για πιστοποίηση των επικοινωνούντων οντοτήτων. 1.6 Κρυπτογραφία Υλικού και Λογισμικού Η κρυπτογραφία μπορεί να εφαρμοστεί, πλέον, τόσο σε hardware όσο και σε software επίπεδο. Από την εμφάνιση της η κρυπτογραφία ενσωματώθηκε σε επίπεδο υλικού, παρέχοντας σημαντικά αποτελέσματα σε θέματα ταχύτητας διεκπεραίωσης. Επίσης, μεγάλης σημασίας είναι η ασφάλεια που παρέχει η κρυπτογραφία στο υλικό. Η απαίτηση ελάχιστης ή και καθόλου διαμόρφωσης κατά την εφαρμογή των διαδικασιών από τον χρήστη, δηλαδή η απουσία της αλληλεπίδρασης του χρήστη με το κρυπτογραφικό σύστημα, αυξάνει την ασφάλεια και κατ επέκταση την αποτελεσματικότητα του συστήματος. Σε αντίθεση, όμως, με την ταχύτητα και την ασφάλεια έρχεται να μειώσει την αποτελεσματικότητα της εφαρμογής της κρυπτογραφίας στο υλικό, το μεγάλο κόστος και η σύνδεση της με συγκεκριμένα μηχανήματα, προστατεύοντας συγκεκριμένα μέρη του συστήματος και εμποδίζοντας την εφαρμογή της σε όλο το σύστημα. Από την άλλη πλευρά, έχουμε την κρυπτογραφία σε επίπεδο λογισμικού. Η λύση αυτή είναι λιγότερο ασφαλής και πιο αργή, αλλά περισσότερο ευέλικτη. Πιο συγκεκριμένα, τα λογισμικά κρυπτογράφησης ή προγράμματα κρυπτογράφησης μπορούν να εφαρμοστούν σε όλες τις συσκευές ενός οργανισμού μειώνοντας το κόστος. Επιπλέον, μπορούν να χρησιμοποιηθούν εύκολα από τους χρήστες, καθώς και να ενημερωθούν με νέες προσθήκες και αναβαθμίσεις. Αυτοί είναι και οι βασικοί λόγοι της ευρείας χρήσης τους, σήμερα. Αρνητικό χαρακτηριστικό της κρυπτογραφίας στο λογισμικό είναι η αυξημένη περιπλοκότητα στην διαμόρφωση των διαδικασιών κρυπτογράφησης όταν πρόκειται για εξειδικευμένη χρήση. Ως επίλογος για την αξιολόγηση των δύο εφαρμογών κρυπτογράφησης, σε υλικό και λογισμικό, από έρευνες και οι συζητήσεις μεταξύ ειδικών στον τομέα αυτό οδήγησε στο συμπέρασμα ότι η χρήση τους πρέπει να βασίζεται στην ανάγκη και τα επιθυμητά χαρακτηριστικά της κάθε εφαρμογής. Μία λογική τοποθέτηση αποτελεί αυτή του Nico de Corato, μηχανικού τηλεπικοινωνιών, ο οποίος εκφράζει την άμεση σύνδεση και εξάρτηση του υλικού και του λογισμικού σε γενικότερα πλαίσια. Συνεπώς 6

20 καταλήγει ότι οι λύσεις που χρησιμοποιούνται σε κάθε περίπτωση εξαρτώνται από τις ανάγκες του ατόμου (διαθέσιμα χρήματα, επιθυμητό επίπεδο ασφάλειας και επιδόσεων-ταχύτητας, διαθέσιμοι πόροι). 7

21 2. Κρυπτοσυστήματα και Αλγόριθμοι 2.1 Συμμετρική Κρυπτογράφηση Η συμμετρική κρυπτογράφηση ή κρυπτογράφηση ιδιωτικού κλειδιού, όπως αναφέρθηκε στο κεφάλαιο 1.3, χαρακτηρίζεται από την χρήση ενός διαμοιραζόμενου μυστικού κλειδιού μεταξύ αποστολέα και παραλήπτη για την κρυπτογράφηση και αποκρυπτογράφηση, αντίστοιχα. Πιο απλά, το κλειδί που χρησιμοποιείται για να κρυπτογραφηθεί ένα μήνυμα αλλά και για να αποκρυπτογραφηθεί είναι το ίδιο. Το γενικό σχήμα που περιγράφει την λειτουργία της συμμετρικής κρυπτογράφησης και αποκρυπτογράφησης είναι αυτό που ακολουθεί (Εικόνα 4). Εικόνα 4 Γενικό Σχήμα Συμμετρικής Κρυπτογράφησης ή Κρυπτογράφησης Ιδιωτικού Κλειδιού Ο αποστολέας βάζει το αρχικό μήνυμα στον αλγόριθμο κρυπτογράφησης μαζί με το μυστικό κλειδί που έχει ήδη μοιραστεί με τον παραλήπτη. Το αποτέλεσμα της διαδικασίας αυτής είναι η δημιουργία του κρυπτογραφημένου κειμένου που μεταδίδεται στο κανάλι επικοινωνίας με ασφάλεια. Ο παραλήπτης λαμβάνει το κρυπτογραφημένο κείμενο και γνωρίζοντας το κλειδί που έχει μοιραστεί με τον αποστολέα βάζει το ληφθέν μήνυμα στον αλγόριθμο αποκρυπτογράφησης, που εφαρμόζει τους αντίστροφους μηχανισμούς από την κρυπτογράφηση, μαζί με το κλειδί και έχει σαν αποτέλεσμα το αρχικό μήνυμα (καθαρό κείμενο) που του μετέδωσε ο αποστολέας σε κατανοητή μορφή. Από την περιγραφή της παραπάνω διαδικασίας γίνεται φανερό ότι το κλειδί είναι ανεξάρτητο του αλγορίθμου, δηλαδή δύο διαφορετικά κλειδιά που εφαρμόζονται με τον ίδιο αλγόριθμο στο ίδιο αρχικό κείμενο, παράγουν δύο διαφορετικά κρυπτογραφημένα κείμενα. 8

22 Η σημαντική αδυναμία των συμμετρικών κρυπτοσυστημάτων, έγκειται στην ανάγκη ασφαλούς ανταλλαγής του μυστικού κλειδιού μεταξύ αποστολέα και παραλήπτη. Προϋπόθεση, συνεπώς, για την ασφάλεια του συστήματος είναι ο αποστολέας και ο παραλήπτης να έχουν βρει τρόπο να γνωστοποιήσουν με ασφάλεια το κλειδί σε προγενέστερο χρόνο από αυτόν της κρυπτογραφημένης επικοινωνίας, χωρίς να εμπλακεί κάποιος αντίπαλος. Αυτό μπορεί να γίνει με την προσωπική συνάντηση στο παρελθόν του αποστολέα και του παραλήπτη και την ανταλλαγή του κλειδιού για μελλοντική επικοινωνία, είτε με την τμηματοποίηση του κλειδιού και την αποστολή με διαφορετικά μέσα (τηλεφωνικά, ταχυδρομικά) μεταξύ αποστολέα και παραλήπτη, ώστε να μην μπορεί ο εκάστοτε αντίπαλος να παρακολουθεί όλα τα κανάλια και να υποκλέψει το κλειδί. Επίσης, καλό είναι να αποφεύγονται τα πολύ μικρά κλειδιά σε σχέση με το αρχικό μήνυμα, αλλά και η χρήση του ίδιου κλειδιού για πολλές κρυπτογραφήσεις διότι το σύστημα γίνεται ευάλωτο και οι αντιπάλους μπορούν να το σπάσουν Κρυπτοσύστημα Μετάθεσης Τα κρυπτοσυστήματα μετάθεσης σχετίζονται με το αλφάβητο της γλώσσας που είναι το αρχικό μήνυμα. Πιο αναλυτικά, η συνάρτηση μετάθεσης που χρησιμοποιείται κατά την κρυπτογράφηση αντιστοιχεί το κάθε γράμμα του αλφαβήτου με έναν αριθμό. Για παράδειγμα εάν πρόκειται για το ελληνικό αλφάβητο έχουμε τις εξής αντιστοιχίες: Εικόνα 5 Αντιστοιχίες Ελληνικού Αλφάβητου σε Κρυπτοσύστημα Μετάθεσης Στην συνέχεια για την κρυπτογράφηση, επιλέγεται το κλειδί που θα μας δώσει τον αριθμό των μεταθέσεων. Αυτός είναι και ο λόγος που πρέπει να είναι ένας αριθμός από το σύνολο των γραμμάτων του αλφαβήτου που έχουμε επιλέξει (εδώ: Κ={1,...,23}). Αφού έχουμε τις αντιστοιχίες, το αρχικό μήνυμα μετατρέπεται στην αντίστοιχη δεκαδική μορφή ανά γράμμα και εφαρμόζεται η μετάθεση: στο γράμμα που έχω προσθέτω το κλειδί, το κρυπτογραφημένο γράμμα δίνεται από την mod πράξη της πρόσθεσης με το πλήθος των γραμμάτων του αλφαβήτου μου. Για το ελληνικό αλφάβητο έχουμε (mod23) γιατί ξεκινήσαμε από το 0 την αντιστοίχιση. Για να γίνει πιο κατανοητό για κλειδί Κ=5 και για αρχικό μήνυμα «ΜΕΤΑ» έχουμε: Μ 11 11(Μ)+5(Κλειδί)= 16 9

23 16(mod23)= 16 Κρυπτογραφημένο γράμμα: Π Εφαρμόζοντας σε όλο το αρχικό μήνυμα έχουμε το κρυπτογραφημένο: «ΡΚΩΖ» Για την αποκρυπτογράφηση, γνωρίζοντας το κλειδί άρα και τον αριθμό των μεταθέσεων, αντιστοιχούνται τα γράμματα του κρυπτογραφημένου κειμένου σύμφωνα πάλι με Εικόνα 5 και εφαρμόζουμε την μετάθεση όπως και στην κρυπτογράφηση κατά: πλήθος των γραμμάτων του αλφαβήτου κλειδί. Δηλαδή στο παράδειγμα μας: Μετάθεση αποκρυπτογράφησης: 23-5(Κλειδί)= 18 Ρ 16 16(Π)+18= 34 34(mod23)= Μ Κρυπτοσυστήματα Αντικατάστασης Σε αυτό το σύστημα η κρυπτογράφηση βασίζεται σε έναν πίνακα όπου κάθε γράμμα της αλφαβήτου αντιστοιχεί σε κάποιο άλλο σύμβολο. Ο πίνακας αυτός αποτελεί το κλειδί της κρυπτογράφησης αλλά και της αποκρυπτογράφησης και δημιουργείται σύμφωνα με κανόνες. Συνεπώς για να αποκρυπτογραφήσει κάποιος ένα μήνυμα που κρυπτογραφήθηκε με το σύστημα της αντικατάστασης αρκεί να γνωρίζει τον πίνακα αντικατάστασης. Το πρόβλημα που αντιμετωπίζουν τα κρυπτοσυστήματα αντικατάστασης είναι η σχετικά εύκολη κρυπτανάλυση, το οποίο οφείλεται στο ότι εάν ένα γράμμα εμφανίζεται συχνά στο αρχικό μήνυμα, τότε θα εμφανίζεται με την ίδια συχνότητα και στο κρυπτογραφημένο κείμενο. Συνεπώς, εάν κάποιος γνωρίζει την συχνότητα εμφάνισης των γραμμάτων στην γλώσσα που είναι γραμμένο το αρχικό μήνυμα μπορεί να αποκρυπτογραφήσει σχετικά εύκολα το μήνυμα. Οι λύσεις στο πρόβλημα αυτό δόθηκαν με την διαφοροποίηση του πίνακα αντικατάστασης που αποτελεί μονοαλφαβητική αντικατάσταση. Παραδείγματα τέτοιων αλγορίθμων είναι, το κρυπτοσύστημα του Playfair, o αλγόριθμος του Vigenere (διπλωματική Blaise de Vigenere, ) που ανήκουν στις πολυαλφαβητικές αντικαταστάσεις, δηλαδή έχουμε για κλειδί όχι έναν αριθμό ή ένα σύμβολο-γράμμα από το αλφάβητο αλλά μία ακολουθία γραμμάτων, που επαναλαμβάνεται για την κρυπτογράφηση όσες φορές χρειάζεται επειδή συνήθως το μήκος του αρχικού μηνύματος είναι μεγαλύτερο από το 10

24 μήκος του κλειδιού. Το μικρό μήκος κλειδιού είναι όμως και ο λόγος που τα συστήματα αυτό είναι ευάλωτα σε κρυπτανάλυση Αλγόριθμος Σημειωματάριου μιας Χρήσης (One time pad) Η απαίτηση για μεγαλύτερο μήκος κλειδιού, οδήγησε από τον αλγόριθμο του Vigenere, στον One time pad (Gilbert Vernam & Joseph Mauborgne, 1917). Ο συγκεκριμένος αλγόριθμος χρησιμοποιεί μέγεθος κλειδιού ίσο με το μέγεθος του μηνύματος. Με αυτόν τον τρόπο, οι δημιουργοί του αλγορίθμου, βοήθησαν στην αποφυγή της κρυπτανάλυσης μέσω της ανάλυσης συχνοτήτων. Για την κρυπτογράφηση έχουμε την μετατροπή του αρχικού μήνυμα και του κλειδιού σε δεκαδική μορφή, όπως αναλύθηκε και στην υποενότητα για τα κρυπτοσυστήματα μετάθεσης, ανάλογα με το αλφάβητο. Έπειτα, προστίθενται γράμμα προς γράμμα το αρχικό μήνυμα και το κλειδί και τέλος στο αποτέλεσμα της πρόσθεσης εφαρμόζεται η πράξη mod το πλήθος των γραμμάτων του αλφαβήτου που χρησιμοποιείται (ελληνικό αλφάβητο 24, αγγλικό 26). Αυτή η πράξη μας δίνει το τελικό κρυπτογραφημένο κείμενο, με αντιστοίχιση και πάλι του δεκαδικού αποτελέσματος στο αντίστοιχο γράμμα. Σύμφωνα με τον Shannon(1949) πρόκειται για τον θεωρητικά πιο ασφαλή αλγόριθμο κρυπτογράφησης. Πιο συγκεκριμένα, το Θεώρημα του Shannon διατυπώνει την εξής πρόταση, για να επιτευχθεί η τέλεια μυστικότητα και ασφάλεια σε μία επικοινωνία πρέπει το κλειδί που χρησιμοποιείται στο κρυπτοσύστημα να έχει τουλάχιστον το μήκος του μηνύματος (Μήκος κλειδιού Μήκος μηνύματος). [36] Ο αλγόριθμος του One time pad πληροί αυτή την προϋπόθεση. Πέραν όμως τούτου, έχει πρόβλημα πρακτικής εφαρμογής διότι απαιτεί τόσο μεγάλο κλειδί όσο και το μήνυμα και σε κάθε κρυπτογράφηση ένα νέο διαφορετικό κλειδί. Σε αυτές τις δύο απαιτήσεις οφείλει και το όνομα του, το μέγεθος του κλειδιού μπορεί να πιάσει ένα ολόκληρο σημειωματάριο (pad) και μπορεί να χρησιμοποιηθεί μόνο μία φορά (one time). Μπορεί να γίνει εύκολα αντιληπτή η δυσκολία ασφαλούς ανταλλαγής τόσο μεγάλων κλειδιών Αλγόριθμοι Ροής (Stream cipher) Οι αλγόριθμοι ροής, όπως υποδηλώνει και το όνομα τους, αντιμετωπίζουν και κρυπτογραφούν το αρχικό μήνυμα σαν μία ροή. Αποτελούν μια σημαντική κατηγορία συμμετρικών αλγορίθμων κρυπτογράφησης, που λειτουργούν απλά και γρήγορα. Η ταχείς επιδόσεις κάνουν τους αλγόριθμους ροής ιδιαίτερα χρήσιμους στο κομμάτι της κρυπτογραφίας σε επίπεδο υλικού. Υλοποιούνται σε λίγες γραμμές κώδικα, ειδικά σε σχέση με τους αλγορίθμους τμήματος, που θα αναλυθούν σε επόμενο κεφάλαιο. Η 11

25 λειτουργία τους είναι όμοια με αυτή του one time pad, με την διαφορά ότι στους αλγόριθμους ροής δεν έχουμε ένα συγκεκριμένο τυχαίο μεγάλο κλειδί, αλλά για κλειδί έχουμε την παραγωγή μιας ψευδοτυχαίας κλειδοροής δυαδικών ψηφίων (keystream) με βάση ένα αρχικά ορισμένο ψευδοτυχαίο μικρό μυστικό κλειδί (seed). Η παραγωγή της κλειδοροής γίνεται από μία συνάρτηση PRG (PseudoRandom Generators), που δέχεται το μυστικό κλειδί και δημιουργεί την ψευδοτυχαία ακολουθία bit (keysteam). Κατά την κρυπτογράφηση, το αρχικό μήνυμα παριστάνεται ως μία ακολουθία δυαδικών ψηφίων (bit). Στη συνέχεια, αφού έχει δημιουργηθεί η ψευδοτυχαία ροή ψηφίων μέσω κάποιας γεννήτριας, έχουμε την εφαρμογή της δυαδικής πράξης αποκλειστικής διάζευξης(xor-exclusive OR) bit προς bit, με την σειρά που έρχονται, στο αρχικό μήνυμα και την ψευδοτυχαίας κλειδοροής. Μαθηματικά η παραπάνω διαδικασία μπορεί να περιγραφεί ως εξής: c i : κρυπτογραφημένο bit m i : bit αρχικού μηνύματος k i : bit ψευδοτυχαίας κλειδοροής Σχηματικά η κρυπτογράφηση ροής παρουσιάζεται στο σχήμα της Εικόνα 6, που ακολουθεί. Η λογική πύλη XOR, που χρησιμοποιείται, απεικονίζεται σε επίπεδο υλικού. Εικόνα 6 Γενικό Σχήμα Κρυπτογράφησης Ροής 12

26 Η διαδικασία της αποκρυπτογράφησης είναι όμοια με αυτήν της κρυπτογράφησης. Πιο συγκεκριμένα, στην ακολουθία κρυπτογραφημένων bit εφαρμόζεται η πράξη αποκλειστικής διάζευξης(xor-exclusive OR) bit προς bit με την ψευδοτυχαία κλειδοροή. Το αποτέλεσμα της πράξης μας δίνει την ροή των bit του αρχικού μηνύματος. Η μαθηματική αναπαράσταση είναι η ακόλουθη: Στην περίπτωση των αλγορίθμων ροής, το θεώρημα του Shannon [36] [36], που αναλύθηκε στην προηγούμενη ενότητα, δεν ισχύει. Αυτή ήταν και η εξ' αρχής διαφοροποίηση αυτού του τύπου κρυπτογράφησης σε σχέση με τον One time pad. Το μυστικό κλειδί είναι μικρότερο από το μήκος του μηνύματος που θέλω να κρυπτογραφήσω. Συνεπώς, για να θεωρηθούν ασφαλή τα κρυπτοσυστήματα ροής οι γεννήτριες κλειδοροής που χρησιμοποιούνται θα πρέπει να πληρούν κάποιες προϋποθέσεις. Οι ιδιότητες της γεννήτριας ροής είναι: Να μην είναι "προβλέψιμη". Μία συνάρτηση είναι προβλέψιμη αν και μόνο αν γνωρίζοντας κάποια bits της κλειδοροής μπορώ να υπολογίσω ολόκληρη την κλειδοροή με κάποιον αλγόριθμο. Παράδειγμα προβλέψιμης κατηγορίας γεννητριών είναι αυτή των Linear Congruential Generator(LCG), που δεν πρέπει να χρησιμοποιούνται στους αλγορίθμους ροής. Ο λόγος είναι η γραμμική παραγωγή της ακολουθίας, δηλαδή ο υπολογισμός των επόμενων τιμών με βάση τις προηγούμενες. Όσο πιο μικρό πλήθος προηγούμενων τιμών συμμετέχουν για τον υπολογισμό των επόμενων, τόσο πιο ευάλωτος γίνεται ο αλγόριθμος στην κρυπτανάλυση. Να παρέχει στην ακολουθία της κλειδοροής μεγάλη περίοδο επανάληψης. Επειδή η παραγωγή της κλειδοροής βασίζεται σε μία ντετερμινιστική συνάρτηση που δέχεται ένα αρχικό κλειδί (seed), είναι λογικό μετά από κάποιον αριθμό bit να επαναλαμβάνεται ξεκινώντας από την αρχή. Έχουμε, δηλαδή, περιοδική επανάληψη των bit της κλειδοροής. Όσο μεγαλύτερη είναι αυτή η περίοδος τόσο πιο ασφαλής είναι ο αλγόριθμος ροής και τόσο πιο δύσκολη η κρυπτανάλυσή του. Να παράγει μία ψευδοτυχαία ακολουθία όσο τον δυνατόν πιο όμοια με μία πραγματικά τυχαία ροή αριθμών. Επειδή πρόκειται για μια ροή από bit τότε θα πρέπει να ελέγχεται το πλήθος των δυαδικών ψηφίων μηδέν (0) και τον δυαδικών άσσων (1), καθώς και η συχνότητα εμφάνισης όλων των δυνατών ακολουθιών με 13

27 δυαδική αναπαράσταση. Όσο μεγαλύτερη είναι η τυχαιότητα της παραγόμενης κλειδοροής τόσο πιο δύσκολη είναι η κρυπτανάλυσή της. Εκτός, όμως, από τις προαναφερθείσες ιδιότητες στα σύγχρονα κρυπτοσυστήματα ροής συνηθίζεται το αρχικό μυστικό κλειδί (seed) να είναι μήκους 128bit τουλάχιστον. Η συγκεκριμένη προσθήκη στις ιδιότητες, προσφέρει μεγαλύτερη ασφάλεια και ανθεκτικότητα σε επιθέσεις εξαντλητικής αναζήτησης. Υπάρχουν κρυπτοσυστήματα ροής που βασίζονται σε Καταχωρητές Ολίσθησης με Γραμμική Ανάδραση (LFSR-Linear Feedback Shift Register). Στα συστήματα αυτά, ο αλγόριθμος LFSR χρησιμοποιείται ως συνάρτηση της γεννήτριας κλειδοροής. Ο LFSR θα αναλυθεί στο επόμενο κεφάλαιο, διότι είναι μία τεχνική που χρησιμοποιείται και στον αλγόριθμο του Hummingbird, ο οποίος θα υλοποιηθεί στην πορεία της εργασίας. Υπάρχουν πολλοί αλγόριθμοι ροής που δεν θα μας απασχολήσουν στην παρούσα εργασία. Αξίζει μόνο να σημειωθεί ότι ο δημοφιλέστερος αλγόριθμος κρυπτογράφησης ροής είναι ο RC Καταχωρητές Ολίσθησης με Γραμμική Ανάδραση (Linear Feedback Shift Register) Ο αλγόριθμος LFSR αποτελείται από δύο βασικά μέρη, όπως γίνονται εμφανή και από το όνομα του: έναν καταχωρητή ολίσθησης και μία συνάρτηση ανάδρασης. Η λειτουργία του βασίζεται στην χρήση του αρχικού μυστικού κλειδιού (seed) στον καταχωρητή, για την εφαρμογή της συνάρτησης και την παραγωγή μιας νέας τιμής που στην συνέχεια γίνεται η νέα είσοδος του αλγορίθμου. Η διαδικασία αυτή μας δίνει την ανάδραση και εφαρμόζεται για περίοδο, όπου n είναι το πλήθος των bit του αρχικού κλειδιού (seed). Μετά από εσωτερικές καταστάσεις, ο αλγόριθμος επιστρέφει στην αρχική τιμή του κλειδιού. Η πιο κοινή συνάρτηση που εφαρμόζεται στον LFSR είναι η αποκλειστικής διάζευξης(xor-exclusive OR) σε συγκεκριμένα κελιά του καταχωρητή. Τα κελιά αυτά αντιστοιχούν σε bit του seed και καθορίζονται από το πολυώνυμο ανάδρασης(feedback polynomial) που δηλώνεται για κάθε εφαρμογή του αλγορίθμου. Οι εκθέτες του πολυωνύμου μας δίνουν τις θέσεις των κελιών, συνεπώς το πολυώνυμο μπορεί να είναι μέχρι βαθμού n (πλήθος των bit του seed), δηλαδή πολυώνυμα της μορφής:. Σε κάθε βήμα, αρχικά, εφαρμόζεται η συνάρτηση μέσω της πράξης XOR, όπως αναφέρθηκε προηγουμένως, πραγματοποιείται ολίσθηση των υπαρχόντων bit στον 14

28 καταχωρητή κατά μία θέση και τέλος το αποτέλεσμα της πράξης XOR αποθηκεύεται στο πρώτο κελί του καταχωρητή αφού πλέον είναι κενό. Έξοδος του LFSR σε κάθε βήμα είναι το bit που διαγράφεται από τον καταχωρητή μέσω της ολίσθησης, δηλαδή το τελευταίο bit του καταχωρητή. Έτσι μπορούμε να έχουμε την ψευδοτυχαία ακολουθία bit που θα λειτουργήσει ως κλειδοροή στους αλγορίθμους ροής με το σύνολο των εξόδων που παρήγαγε ο LFSR σε όλα του τα βήματα, δηλαδή μία τυχαία ακολουθία με μήκος. Σχηματικά μπορεί να αναπαρασταθεί ένα βήμα του αλγορίθμου στην Εικόνα 7, που παρουσιάζεται στην συνέχεια. Εικόνα 7 Ενδοιάμεσο Βήμα LFSR Στο σχήμα περιγράφεται το αρχικό βήμα, όπου τοποθετείται το seed ώστε να ξεκινήσει ο αλγόριθμος. Τα S[1],..S[n] αποτελούν τα bit του αρχικού κλειδιού (seed). Να σημειωθεί ότι πρέπει να γίνει γνωστό και το πολυώνυμο για να λειτουργήσει ο αλγόριθμος. Στο σχήμα θεωρείται τυχαίο, γι αυτό και παίρνουμε τυχαίες θέσεις για εφαρμογή του XOR. Στο παράδειγμα που ακολουθεί μπορεί να γίνει πιο κατανοητή η λειτουργία του αλγορίθμου LFSR. Έχουμε: Αρχικό seed: 1100 Πολυώνυμο: Περίοδος: (για n=4),. Δηλαδή έχουμε 15 εκτελέσεις άρα και παραγόμενη τυχαία ακολουθία με μήκος 15bit. 15

29 Η εφαρμογή των βημάτων του αλγορίθμου φαίνεται στην εικόνα που ακολουθούν. Για συντομία στην περιγραφή έχουμε το 1 ο, 2 ο, 15 ο και 16 ο βήμα εκτέλεσης. Ομοίως εκτελούνται και τα ενδιάμεσα. Όπως φαίνεται και στην Εικόνα 8, εάν εκτελεστεί ο αλγόριθμος και για την 16 φορά τότε θα έχουμε ως νέα είσοδο το αρχικό seed. Εκεί ο αλγόριθμος, συνήθως, σταματά και η έξοδος της 16 ης εκτέλεσης δεν αποθηκεύεται στην ακολουθία εξόδου. Το τελικό αποτέλεσμα που βγαίνει ως έξοδος από τον αλγόριθμο LFSR και μπορεί να χρησιμοποιηθεί ως τυχαία κλειδοροή, είναι η ακολουθία « ». Εικόνα 8 Παράδειγμα Εκτέλεσης LFSR Αλγόριθμοι Τμήματος (Block Cipher) Οι αλγόριθμοι τμήματος είναι μια σημαντική κατηγορία αλγορίθμων συμμετρικού κλειδιού, που προσφέρουν μεγαλύτερη ασφάλεια. Αυτός είναι και ο λόγος που χρησιμοποιούνται σε πλήθος εφαρμογών, που όμως δεν απαιτούν ταχύτητα εκτέλεσης και μεγάλο χώρο μνήμης. Συνεπώς, εφαρμόζονται κυρίως σε επίπεδο λογισμικού και όχι υλικού όπως οι αλγόριθμοι ροής. Αποτελούν ένα δυνατό εργαλείο κρυπτογράφησης εάν εφαρμοστούν σωστά. Οι σύγχρονοι αλγόριθμοι τμήματος χρησιμοποιούν επαναληπτική λειτουργία για την παραγωγή του κρυπτογραφημένου κειμένου. Η επαναληπτική αυτή λειτουργία γίνεται σε πολλαπλούς γύρους, καθένας 16

30 από τους οποίους κρυπτογραφεί ένα κομμάτι του αρχικού μηνύματος με ένα μόνο κομμάτι του κλειδιού. Σε αυτή την λειτουργία βασίζεται και το όνομα τους. Πιο συγκεκριμένα, κάθε αλγόριθμος τμήματος είναι μία αντιστρέψιμη συνάρτηση που δέχεται δύο εισόδους K(k-bit) και P(n-bit) και παράγει μία έξοδο C(nbit). Οι είσοδοι προέρχονται το κλειδί και τμήμα του αρχικού μηνύματος, αντίστοιχα, και η έξοδος αποτελεί το κρυπτογραφημένο κομμάτι του μηνύματος. Τα τμήματα του αρχικού μηνύματος και του κρυπτογραφημένου έχουν το ίδιο μέγεθος. Το μέγεθος των παραμέτρων, δηλαδή ο αριθμός των bit κάθε στοιχείου, εξαρτάται από τον εκάστοτε αλγόριθμο. Η Εικόνα 9, μας δίνει σχηματικά την γενική λειτουργία των αλγορίθμων τμήματος. Στο επάνω μέρος του σχήματος βλέπουμε την διαδικασία κρυπτογράφησης και στο κάτω την αντίθετη διαδικασία, την αποκρυπτογράφηση. Οι συναρτήσεις (E,D) που εφαρμόζονται είναι η ίδια, διότι όπως προαναφέρθηκε είναι αντιστρέψιμη. Ο συνδυασμός όλων των κρυπτογραφημένων τμημάτων μας δίνει το τελικό κρυπτογραφημένο κείμενο και αντιστοίχως όλα τα τμήματα που αποκρυπτογραφούνται μας δίνουν το αρχικό μήνυμα. Εικόνα 9 Γενική Περιγραφή Κρυπτογράφησης Τμήματος Για να εξετάσουμε πιο λεπτομερώς την διαδικασία της κρυπτογράφησης θα χρησιμοποιήσουμε το ακόλουθο σχήμα, της Εικόνα 10, που περιγράφει έναν από τους πολλούς κύκλους κρυπτογράφησης. Ουσιαστικά έχουμε το αρχικό μήνυμα που διαχωρίζεται σε τμήματα (P[0],,P[n]) και σε κάθε κύκλο έχουμε την κρυπτογράφηση ενός τμήματος. Εσωτερικά στον κάθε κύκλο, το μυστικό κλειδί διαχωρίζεται και αυτό σε υποκλειδιά (K[1],,K[k]-round keys) και στην συνέχεια έχουμε την εξής ακολουθιακή εκτέλεση: εισέρχεται στην συνάρτηση κρυπτογράφησης το τμήμα του μηνύματος που θέλουμε να κρυπτογραφηθεί μαζί με το πρώτο υποκλειδί, αφού ολοκληρωθεί η διαδικασία αυτή εισέρχεται στην συνάρτηση το αποτέλεσμα μαζί με το 17

31 δεύτερο κλειδί και έτσι συνεχίζεται η εκτέλεση έως ότου τελειώσουν τα υποκλειδιά. Στο τέλος του κύκλου έχουμε το κρυπτογραφημένο τμήμα του κειμένου που θα αποσταλεί στον παραλήπτη. Η παραπάνω διαδικασία επαναλαμβάνεται, ομοίως, και για τα υπόλοιπα τμήματα του αρχικού μηνύματος. Εικόνα 10 Γενικό Σχήμα Κρυπτογράφησης Τμήματος Η συνάρτηση, που εφαρμόζεται κατά την κρυπτογράφηση και αποκρυπτογράφηση, είναι και μία μετάθεση του μηνύματος που πραγματοποιείται με βάση το μυστικό κλειδί. Συγκεκριμένα, εάν η μετάθεση που χρησιμοποιείται είναι τυχαία τότε λέμε ότι το κρυπτοσύστημα τμήματος είναι ιδανικό. Επιθυμητό είναι να προσεγγίζεται αυτός ο ορισμός από κάθε τέτοιο σύστημα. Ο Shannon, στις θεωρίες που ανέπτυξε για την ασφάλεια των κρυπτογραφικών συστημάτων όπως αναφέρθηκε και στην υποενότητα 2.1.3, εισήγαγε και τις έννοιες της διάχυσης και της σύγχυσης. [36] Η διάχυση σχετίζεται με την σύνδεση του αρχικού μηνύματος και του κρυπτογραφημένου, δηλαδή καθορίζει αν μία μικρή μεταβολή στο αρχικό μήνυμα θα οδηγήσει σε μία μεγάλη και τυχαία μεταβολή του κρυπτογραφημένου μηνύματος. Συνεπώς, όσο υψηλότερη είναι η διάχυση τόσο πιο ασφαλές είναι το σύστημα. Η σύγχυση, αφορά την σύνδεση του κρυπτογραφημένου κειμένου και του κλειδιού που χρησιμοποιήθηκε για την κρυπτογράφησή του. Πιο απλά, η υψηλή σύγχυση οδηγεί σε αδυναμία εύρεσης του κλειδιού ακόμη και αν ο επιτιθέμενος γνωρίζει πολλά ζευγάρια αρχικού μηνύματος και κρυπτογραφημένου. Η ανάγκη για αύξηση της διάχυσης και σύγχυσης στα κρυπτοσυστήματα τμήματος, ως συνεισφορά στην ασφάλειά τους, οδήγηση στην εφαρμογή 18

32 αντικαταστάσεων και αντιμεταθέσεων εντός των αλγορίθμων τμήματος. Σε κάθε γύρο της εκτέλεσης έχουμε την εφαρμογή των S-boxes για την υλοποίηση των αντικαταστάσεων και την εφαρμογή απλών αντιμεταθέσεων των bit, που ορίζονται στην αρχή του αλγορίθμου. Οι τεχνικές αυτές χρησιμοποιούνται από όλους τους αλγορίθμους τμήματος και είναι γνωστές ως δίκτυα αντικατάστασης-μετάθεσης(sp networks-substitution Permutation). Τα S-boxes, θα αναλυθούν σε επόμενο υποκεφάλαιο, διότι αποτελούν κομμάτι της λειτουργίας του αλγορίθμου Hummingbird. Η χρήση των παραπάνω τεχνικών σε συνδυασμό με την εφαρμογή των αλγορίθμων τμήματος με βάση τους κύκλους του σχήματος Feistel για τις μεταθέσεις, μας δίνει ένα ασφαλές κρυπτοσύστημα. Το σχήμα Feistel για d κύκλους παρουσιάζεται στην Εικόνα 11. Δεν είναι το μόνο σχήμα μεταθέσεων που υπάρχει και χρησιμοποιείται. Υπάρχουν και άλλα όπως οι ομοιόμορφες μεταθέσεις. Στην παρούσα εργασία θα αναφερθεί πιο αναλυτικά μόνο αυτό. Εικόνα 11 Γενικό Σχήμα Feistel Χαρακτηριστικό παράδειγμα αλγορίθμου τμήματος είναι ο Data Encryption Standard(DES-1976), που γνώρισε πολλές παραλλαγές όπως η απλοποιημένη μορφή για εκπαιδευτικούς σκοπούς S-DES και ο 3DES. Οι DES και 3DES χρησιμοποιούν κλειδιά μήκους 56bit και block μηνύματος των 64bit, ενώ ο S-DES χρησιμοποιεί κλειδιά μήκους 10bit και block μηνύματος των 8bit. Επίσης, λειτουργούν με βάση το σχήμα Feistel. Λόγω πολλών επιτυχημένων επιθέσεων που δέχτηκε πια δεν χρησιμοποιείται τόσο. 19

33 Την θέση του έχει πάρει ο αλγόριθμος Advanced Encryption Standard(AES-1997), που χρησιμοποιεί block μηνύματος των 128bit και κλειδιά μήκους 128 ή 192 ή 256 bit και δεν χρησιμοποιεί το σχήμα Feistel Τεχνική Αντικατάστασης με S-boxes Η τεχνική των S-boxes αποτελεί την καρδιά των αλγορίθμων τμήματος προσφέροντας σημαντικές προσθήκες στην ασφάλεια και καθιστώντας τους συγκεκριμένους αλγορίθμους ανθεκτικούς σε πολλές επιθέσεις. Αυτός είναι και ο λόγος που έχει δοθεί μεγάλη προσοχή στην σχεδίασή τους. Ουσιαστικά πρόκειται για την μετατροπή μιας ακολουθίας n-bit σε μία άλλη ακολουθία m-bit, με βάση έναν πίνακα. Χαρακτηριστικό παράδειγμα S-box είναι αυτό που δέχεται ένα 6bit είσοδο και παράγει μία έξοδο 4bit, με βάση τον Πίνακας 1, που ακολουθεί Πίνακας 1 Sbox 6bit Εισόδου και 4bit Εξόδου Για να δείξουμε πως λειτουργεί ο Πίνακας 1, εφαρμόζουμε είσοδο τον αριθμό S(110101). Χωρίζουμε το πρώτο και το τελευταίο bit, δηλαδή: S( ). Μετατρέποντάς τα σε δεκαδική μορφή, μας δίνουν την γραμμή στον Πίνακας 1. o 11 3 άρα 3 η γραμμή Κρατάμε τα 4 υπόλοιπα bit, δηλαδή: S( ). Μετατρέποντάς τα σε δεκαδική μορφή, μας δίνουν την στήλη του Πίνακας 1. o άρα 10 η στήλη Πηγαίνουμε στον Πίνακας 1 και βλέπουμε ποιο νούμερο αντιστοιχεί στην γραμμή και στήλη που βρήκαμε. Τον μετατρέπουμε σε δυαδική μορφή και έχουμε την έξοδο του S-box με την αντικατάσταση του αριθμού μας. o Άρα έξοδος «0101». 2.2 Ασύμμετρη Κρυπτογράφηση Η ασύμμετρη κρυπτογράφηση ή κρυπτογράφηση ή κρυπτογράφηση δημόσιου κλειδιού, όπως είναι ευρέως γνωστή, παρέχει έναν τελείως διαφορετικό τρόπο 20

34 διαχείρισης του κλειδιού σε σχέση με την συμμετρική κρυπτογράφηση. Η διαφοροποίηση αυτή, συνεισφέρει στον τομέα της ασφάλειας δίνοντας λύσης στην ανταλλαγή του κλειδιού μεταξύ των οντοτήτων που θέλουν να επικοινωνήσουν. Η βασική ιδέα, των Whitfield Diffie και Martin Hellman(1970), είναι ότι ο αποστολέας και ο παραλήπτης δεν χρειάζεται να διαμοιράζονται το ίδιο μυστικό κλειδί, αλλά μπορούν να κατέχουν διαφορετικά κλειδιά για διαφορετικές χρήσεις. Πιο αναλυτικά, ο αποστολέας και ο παραλήπτης έχουν ο καθένας από δύο κλειδιά. Ένα ιδιωτικό(private key) που το γνωρίζει μόνο ο ίδιος και ένα δημόσιο(public key) που διαμοιράζεται με όλους όσους θέλει να επικοινωνήσει. Το δημόσιο κλειδί κάθε ατόμου μπορεί να δημοσιοποιηθεί και στο διαδίκτυο σε ειδικούς server αποθήκευσης δημόσιων κλειδιών. Τα δύο αυτά κλειδιά συνδέονται με κάποια μαθηματική πράξη και δημιουργούν ένα ζεύγος κλειδιών που διέπουν την σχέση, εάν ένα μήνυμα κρυπτογραφεί με το δημόσιο κλειδί μπορεί να αποκρυπτογραφηθεί μόνο με το αντίστοιχο ιδιωτικό και αντίστροφα. Επίσης, είναι αδύνατο γνωρίζοντας ο επιτιθέμενος το δημόσιο κλειδί κάποιου να εξάγει το ιδιωτικό του, μέσω της μαθηματικής πράξης που τα ενώνει. Το ζεύγος κλειδιών για κάθε χρήστη παράγεται από γεννήτριες που λειτουργούν με ειδικές συναρτήσεις που δέχονται έναν πολύ μεγάλο τυχαίο αριθμό και δημιουργούν το δημόσιο και ιδιωτικό κλειδί. Η ισχυρότητα των κλειδιών βασίζεται στην τυχαιότητα του αριθμού που εισάγεται στην γεννήτρια. Γι' αυτό το λόγο, οι σύγχρονοι τρόποι υπολογισμού χρησιμοποιούν τυχαία δεδομένα από τον χρήστη που δεν μπορούν να υπολογιστούν αλλιώς (πχ ενέργειες ποντικιού κατά την χρήση του υπολογιστή του). Για την κρυπτογράφηση ενός μηνύματος, χρησιμοποιείται από τον αποστολέα το δημόσιο κλειδί του παραλήπτη που θα αποστείλει το κρυπτογραφημένο κείμενο. Συνεπώς, με βάση την προαναφερθείσα σχέση μεταξύ των κλειδιών, μόνο ο παραλήπτης και κάτοχος του αντίστοιχου ιδιωτικού κλειδιού θα μπορέσει να αποκρυπτογραφήσει το μήνυμα του αποστολέα. Έτσι διατηρείται το απόρρητο του μηνύματος. Η διαδικασίες της κρυπτογράφησης και αποκρυπτογράφησης δημόσιου κλειδιού περιγράφονται σχηματικά στην Εικόνα 12, που ακολουθεί. 21

35 Εικόνα 12 Γενικό Σχήμα Κρυπτογράφησης και Αποκρυπτογράφησης Δημόσιου Κλειδιού Με την χρήση κρυπτογράφησης δημόσιου κλειδιού, μπορούμε να ικανοποιήσουμε την εμπιστευτικότητα και την αυθεντικότητα της επικοινωνίας που όπως αναφέρθηκε στο κεφάλαιο 1, αποτελούν βασικούς στόχους της κρυπτογραφίας. Η εμπιστευτικότητα, δηλαδή η διαβεβαίωση της δυνατότητας αποκρυπτογράφησης και κατανόησης του μηνύματος μόνο από τον παραλήπτη, παρέχεται με την χρήση του δημόσιου και ιδιωτικού κλειδιού του παραλήπτη για την κρυπτογράφηση και αποκρυπτογράφηση αντίστοιχα, όπως περιγράφηκε και πιο πάνω. Η πιστοποίηση που αφορά την επιβεβαίωση των στοιχείων του αποστολέα στον παραλήπτη, ώστε να ξέρει εάν όντως επικοινωνεί με αυτόν που επιθυμεί, μπορεί να επιτευχθεί προσθέτοντας στην προαναφερθείσα διαδικασία και τα κλειδιά που κατέχει ο αποστολέας. Συνολικά, η κρυπτογράφηση και η αποκρυπτογράφηση δημόσιου κλειδιού, παρέχοντας εμπιστευτικότητα (2 η κρυπτογράφηση και 1 η αποκρυπτογράφηση στο σχήμα) και πιστοποίηση (1 η κρυπτογράφηση και 2 η αποκρυπτογράφηση στο σχήμα) μπορεί να περιγραφεί με τα βήματα της Εικόνα

36 Εικόνα 13 Βήματα Κρυπτογράφησης και Αποκρυπτογράφησης Δημόσιου Κλειδιού Πολλές φορές ο αποστολέας και ο παραλήπτης βρίσκονται χιλιόμετρα μακριά ή μπορεί και να μην γνωρίζονται, οπότε η ανταλλαγή του κοινού μυστικού κλειδιού μέσω αβέβαιου καναλιού για την εφαρμογή συμμετρικής κρυπτογράφησης είναι επικίνδυνη. Συνεπώς, στην περίπτωση αυτή, η κρυπτογράφηση δημόσιου κλειδιού αποτελεί την βέλτιστη λύση. Οι αλγόριθμοι δημόσιου κλειδιού, λύνοντας το πρόβλημα της ανταλλαγής του, χρησιμοποιούνται σήμερα πολύ περισσότερο σε πλήθος εφαρμογών και γενικότερα στις ψηφιακές επικοινωνίες(ψηφιακές υπογραφές, ηλεκτρονικό εμπόριο, ηλεκτρονικό ταχυδρομείο). Παραδείγματα και πιο διαδεδομένοι αλγόριθμοι της κατηγορίας αυτής είναι, ο RSA(Ron Rivest, Adi Shamir και Len Adleman, 1977) και η ανταλλαγή κλειδιού ή πρωτόκολλο Diffie-Hellman(Whitfield Diffie και Martin Hellman, 1976). 2.3 Lightweight Κρυπτογραφία Η lightweight κρυπτογραφία αποτελεί έναν ανερχόμενο κλάδο της κρυπτογραφίας, του οποίου στόχος είναι η δημιουργία αλγορίθμων που θα χρησιμοποιηθούν σε μικρές συσκευές. Οι συσκευές αυτές παρουσιάζουν περιορισμένους πόρους, μικρή μνήμη, περιορισμένη υπολογιστική δύναμη, μικρό μέγεθος και απαιτούν γρήγορη εκτέλεση, συνεπώς είναι αδύνατη η εφαρμογή της ασύμμετρης κρυπτογραφίας που έχει πολλές απαιτήσεις αλλά ακόμη και της συμμετρικής. Παρά τους περιορισμένους πόρους, αναγκαιότητα για τις συσκευές αυτές παραμένει η ασφάλεια. Συνεπώς, από τα παραπάνω γίνεται εμφανής η ανάγκη 23

37 διατήρησης της ισορροπίας μεταξύ ασφάλειας, κόστους και απόδοσης στους lightweight αλγορίθμους. Συσκευές, που χρησιμοποιούν τέτοιους αλγορίθμους, είναι οι αισθητήρες ασύρματου δικτύου και οι RFID συσκευές που χρησιμοποιούνται πλέον σε ιατρικά εμφυτεύματα, πιστωτικές κάρτες, διαβατήρια, barcodes κ.α. Οι lightweight αλγόριθμοι μπορούν να εφαρμοστούν και σε επίπεδο υλικού και σε επίπεδο λογισμικού. Για τους αλγορίθμους της πρώτης κατηγορίας στόχος είναι η βελτίωση του κόστους παραγωγής και χρήσης καθώς και το μέγεθος που καταλαμβάνουν οι συσκευές. Ενώ για τους αλγορίθμους λογισμικού, στόχος είναι η επίτευξη καλύτερων ταχυτήτων εκτέλεσης και η δέσμευση όσων των δυνατών λιγότερων πόρων από το σύστημα που λειτουργούν. Υπάρχουν πολλές προσπάθειες βελτίωσης των ήδη υπαρχόντων αλγορίθμων, ώστε να δημιουργηθούν τροποποιήσεις αυτών που θα προσφέρουν τα οφέλη των lightweight. Παράδειγμα αποτελούν οι DESL(DESLightweight) και ο χαμηλής κατανάλωσης AES. Σε ερευνητικό στάδιο βρίσκεται και μία ειδική κατηγορία των lightweight αλγορίθμων, οι ultra-lightweight αλγόριθμοι που στοχεύουν στην επιπλέον μείωση του κόστους χωρίς την απώλεια από το κομμάτι της ασφάλειας, για ειδικές συσκευές χαμηλού κόστους. Παράδειγμα ultra-lightweight αλγορίθμου είναι ο Hummingbird, με τον οποίο θα ασχοληθούμε και θα αναλύσουμε εκτενώς στο επόμενο κεφάλαιο. 24

38 3. Αλγόριθμος Hummingbird 3.1 Γενική Περιγραφή Hummingbird Ο hummingbird είναι ένας καινούργιος σχετικά αλγόριθμος, που μελετάται και εξελίσσεται με νέες εκδόσεις, της επίσης αναπτυσσόμενης κατηγορίας των ultralightweight κρυπτογραφικών αλγορίθμων. Δημιουργήθηκε από τους Engels, Schultz, και Smith για περιβάλλοντα περιορισμένων πόρων, όπως είναι οι μικρές συσκευές. Η έμπνευση και παρακίνηση των δημιουργών ήταν η μηχανή Enigma, που συνδύαζε καλή ασφάλεια και αποτελεσματικότητα. Η εφαρμογή του μελετάται και στο κομμάτι του υλικού αλλά και στο κομμάτι του λογισμικού. Αρχικά ο hummingbird, ξεκίνησε ως αλγόριθμος λογισμικού, διότι εμφάνισε προσαρμοστικότητα και αποτελεσματικότητα σε πλήθος εφαρμογών. Στην συνέχεια μελέτες στο κομμάτι του υλικού έδειξαν ότι και εδώ ο hummingbird εμφανίζει καλή συμπεριφορά. Η θετική συμπεριφορά του αλγορίθμου, το χαμηλό κόστος υλοποίησης και εφαρμογής, καθώς και η ανάγκη για πιο λεπτομερή αποτελέσματα στο κομμάτι αυτό, είναι οι βασικοί λόγοι που μέχρι σήμερα συνεχίζεται η μελέτη του αλγορίθμου, κυρίως, σε επίπεδο υλικού. Ο hummingbird αποτελεί υβριδικό μοντέλο κρυπτογράφησης, δηλαδή χρησιμοποιεί στοιχεία και της κρυπτογράφησης τμήματος και της κρυπτογράφησης ροής. Αυτή αποτελεί και την βασική διαφορά σε σχέση με τους υπόλοιπους lightweight αλγορίθμους που επικεντρώνονται ή στην κρυπτογραφία τμήματος ή στην κρυπτογραφία ροής. Η υβριδική του φύση δίνει την δυνατότητα διατήρησης της ασφάλειας με υλοποίηση μικρών τμημάτων(16bit block size) κρυπτογράφησης, μέσω των χαρακτηριστικών της κρυπτογράφησης τμήματος και επίτευξη των επιθυμητών επιπέδων κατανάλωσης ενέργειας και τήρησης των χρόνων εκτέλεσης, μέσω της κρυπτογράφησης ροής. Επιπλέον, προσφέρει ανθεκτικότητα τόσο σε επιθέσεις των αλγορίθμων τμήματος (γραμμικές και διαφορικές επιθέσεις) όσο και σε επιθέσεις αλγορίθμων ροής(επίθεση των γενεθλίων), διατηρώντας την ασφάλεια σε υψηλά επίπεδα. Ο αλγόριθμος αποτελείται από στάδια κατά την κρυπτογράφηση και αποκρυπτογράφηση, τα οποία θα αναλυθούν εκτενώς στα υποκεφάλαια της ενότητας αυτής. Μία ενδιαφέρουσα εφαρμογή του Hummingbird αποτελεί η πρόσφατη ενσωμάτωσή του στο Twitter για να ενισχυθεί η παρεχόμενη ασφάλεια και ιδιωτικότητα των χρηστών. (Περισσότερες πληροφορίες για την προσθήκη του Hummingbird στην ασφάλεια του Twitter, στην βιβλιογραφία) [7] 25

39 Όπως αναφέρθηκε, ο hummingbird, είναι ένας αλγόριθμος που ενδιαφέρει πολύ τους επιστήμονες του κλάδου της κρυπτογραφίας γι αυτό και μέχρι σήμερα ασχολούνται με την ανάλυση του, προτείνοντας βελτιώσεις και προσθήκες σε νέες εκδόσεις. Η πιο πρόσφατη εκδοχή του αλγορίθμου είναι ο Hummingbird-2, στον οποίο προστέθηκε ετικέτα πιστοποίησης(authentication tag) στο κάθε μήνυμα που επεξεργάζεται και αυξήθηκε το Internal State σε 128bit. 3.2 Δομή Αλγορίθμου Hummingbird Ο αλγόριθμος αποτελείται από δύο στάδια σε κάθε διαδικασία εφαρμογής του. Το στάδιο της αρχικοποίησης(initialization Process) και έπειτα της κρυπτογράφησης(encryption Process) και αντίστοιχα της αρχικοποίησης και στην συνέχεια της αποκρυπτογράφησης(description Process). Χρησιμοποιεί 16bit μέγεθος τμήματος(block size), μυστικό κλειδί μήκους 256bit και Internal State των 80bit. Πιο συγκεκριμένα, εκτός από τα βασικά αυτά στοιχεία, ο hummingbird αποτελείται από τα στοιχεία του πίνακα που ακολουθεί. Η ανάλυσή τους θα γίνει στο κάθε μέρος της διαδικασίας που ανήκει το καθένα. Εδώ απλά αναφέρονται επιγραμματικά και κυρίως τα σύμβολα τους, στον Πίνακας 2, για κατανόηση αναλυτικής περιγραφής που θα ακολουθήσει. PT i CT i K E K D K k i Ek i Dk i RS i LFSR Το i-στο block του αρχικού μηνύματος, για i=1,2,..,n Το i-στο block του κρυπτογραφημένου κειμένου, για i=1,2,,n Το κλειδί κρυπτογράφησης/αποκρυπτογράφησης, μεγέθους 256bit Η συνάρτηση κρυπτογράφησης του hummingbird με το κλειδί K Η συνάρτηση αποκρυπτογράφησης του hummingbird με το κλειδί K Το υποκλειδί για το i-στο block μεγέθους 64bit, για i=1,2,3,4 Το i-στο τμήμα κρυπτογράφησης τμήματος με εισόδους: PT i, k i και έξοδο CT i, για i=1,2,3,4 Το i-στο τμήμα αποκρυπτογράφησης τμήματος με εισόδους: CT i, k i και έξοδο PT i, για i=1,2,3,4 Ο i-στος καταχωρητής του Internal State με μέγεθος 16bit, για i=1,2,3,4 Ένας LFSR με χαρακτηριστικό πολυώνυμο: 26

40 Πρόσθεση modulo Αφαίρεση modulo Δυαδική πράξη αποκλειστικής διάζευξης, XOR m<<x (i) K j S i NONCE i Αριστερή κυκλική(η αρχή θεωρητικά ενώνεται με το τέλος) ολίσθηση της ακολουθίας m κατα x bit To j-στο υποκλειδί μεγέθους 16bit για το i-στο block, για j=1,2,3,4,5,6 και i=1,2,3,4 Το i-στο 4bit στα 4bit S-boxes, για i=1,2,3,4 Το i-στο NONCE, δηλαδή ένας τυχαίος αριθμός 16bit, για i=1,2,3,4 Πίνακας 2 Σύμβολα Αλγορίθμου Hummingbird Διαδικασία Αρχικοποίησης (Initialization Process) Η διαδικασία της αρχικοποίησης εκτελείται κατά την εκκίνηση της λειτουργίας του αλγορίθμου. Το όνομα του οφείλεται στην υλοποίηση της παράθεσης αρχικών τιμών, όσο το δυνατόν περισσότερο τυχαίων, στους καταχωρητές του Internal State, που θα χρησιμοποιηθούν στην πορεία του αλγορίθμου. Συνεπώς αποτελεί το πρώτο στάδιο του Hummingbird και εφαρμόζεται πάντα πριν το στάδιο της κρυπτογράφησης όσες φορές εκτελεστεί για το εκάστοτε αρχικό μήνυμα. Αρχικά, όταν τεθεί σε λειτουργία η αρχικοποίηση, επιλέγονται 4 τυχαίες ακολουθίες 16bit η κάθε μία. Οι ακολουθίες αυτές είναι οι NONCE i και χρησιμοποιούνται για να δώσουν τις τιμές τους στους 16bit καταχωρητές του Internal State. Συνεπώς, έχουμε τις εξής καταχωρήσεις: RS 1 =NONCE 1, RS 2 =NONCE 2, RS 3 =NONCE 3, RS 4 =NONCE 4. Επειδή, όμως, έχουμε ως αρχική απαίτηση την όσο το δυνατόν μεγαλύτερη τυχαιότητα των αριθμών η διαδικασία αυτή συνεχίζεται εφαρμόζοντας «μπέρδεμα» των bit και κρυπτογράφηση αυτών. Το γενικό σχήμα της αρχικοποίησης, φαίνεται στην Εικόνα 14(a) και ο αντίστοιχος ψευδοκώδικας της εκτέλεσης των βασικών στοιχείων της παρουσιάζεται στην Εικόνα 14(b). Στον ψευδοκώδικα έχουμε ως είσοδο 4 τυχαίους αριθμούς 16bit (NONCE i, i=1,2,3,4) και ως έξοδο τις τιμές για την αρχικοποίηση των 4 καταχωρητών (RS i4, i=1,2,3,4) καθώς και την τιμή αρχικοποίησης του LFSR. 27

41 Εικόνα 14 Διαδικασία Αρχικοποίησης Hummingbird (a) Γενικό Σχήμα Λειτουργίας (b) Ψευδοκώδικας Η αναλυτική παρουσίαση της παραπάνω διαδικασίας μπορεί να γίνει με τα εξής βήματα: 1) Απόδοση τιμών στους καταχωρητές RS i με βάση τα τυχαία NONCE i. 2) Εφαρμογή της πρόσθεσης modulo 2 16 των RS 1 και RS 3. 3) Στο αποτέλεσμα της πράξης του βήματος (2) εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 1. 4) Το αποτέλεσμα της πράξης του βήματος (3) κρυπτογραφείται κρυπτογράφηση τμήματος Ek 1, που θα περιγραφεί σε επόμενη υποενότητα. 5) Στο αποτέλεσμα του βήματος (4) εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 2. 6) Το αποτέλεσμα της πράξης του βήματος (5) εκχωρείται στον καταχωρητή RS 2. 7) Το αποτέλεσμα της πράξης του βήματος (5) κρυπτογραφείται με Ek 2. 8) Στο αποτέλεσμα του βήματος (7) εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 3. 28

42 9) Το αποτέλεσμα της πράξης του βήματος (8) εκχωρείται στον καταχωρητή RS 3. 10) Το αποτέλεσμα της πράξης του βήματος (8) κρυπτογραφείται με Ek 3. 11) Στο αποτέλεσμα του βήματος (10) εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 4. 12) Το αποτέλεσμα της πράξης του βήματος (11) εκχωρείται στον καταχωρητή RS 4. 13) Το αποτέλεσμα της πράξης του βήματος (11) κρυπτογραφείται με Ek 4. 14) Στο αποτέλεσμα του βήματος (13) εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 1 και το αποτέλεσμα αυτής εκχωρείται στον καταχωρητή RS 1. 15) Τέλος, το αποτέλεσμα της πράξης του βήματος (13) αποτελεί την έξοδο της διαδικασίας αρχικοποίησης και συμβολίζεται με TV. Το τελικό αποτέλεσμα 16bit, TV, αρχικοποιεί τον LFSR που θα χρησιμοποιηθεί στην διαδικασία κρυπτογράφησης του Hummingbird. Αυτός είναι και ο λόγος που η αρχικοποίηση θα εκτελεστεί ξανά εάν το μήνυμα είναι τόσο μεγάλο σε μέγεθος που φτάσει τα 16 στάδια, δηλαδή την περίοδο, του LFSR κατά την εφαρμογή των επαναλαμβανόμενων κρυπτογραφήσεων για κάθε 16 bit μηνύματος. Αξίζει να σημειωθεί ότι το 13 ο bit στον LFSR είναι πάντα προκαθορισμένο, ώστε να αποφευχθεί μία μηδενική καταχώρηση Διαδικασία Κρυπτογράφησης (Encryption Process) Η διαδικασία της κρυπτογράφησης του Hummingbird αποτελείται από 4 κρυπτογραφήσεις τμήματος 16bit, 4 καταχωρητές Internal State, που έχουν τιμές στην αρχή εκτέλεσης της διαδικασίας κρυπτογράφησης από η διαδικασία αρχικοποίησης και από έναν LFSR 16 σταδίων. Οι καταχωρητές Internal State θα ανανεωθούν μη προβλέψιμα, με βάση τις τωρινές τιμές τους, τις εξόδους των πρώτων 3 κρυπτογραφήσεων τμήματος και το στάδιο του LFSR. Οι είσοδοι του είναι το μυστικό κλειδί 256bit που διαχωρίζεται σε 4 υποκλειδιά των 64bit για κάθε μία από τις 4 κρυπτογραφήσεις και το τμήμα 16bit του αρχικού μηνύματος που θα κρυπτογραφηθεί. Έξοδος της διαδικασίας κρυπτογράφησης αποτελεί το κρυπτογραφημένο τμήμα κειμένου, που αντιστοιχεί στο αρχικό τμήμα του μηνύματος που εισήχθη στον αλγόριθμο. Πιο συγκεκριμένα, η διαδικασία κρυπτογράφησης περιγράφεται από το σχήμα της Εικόνα 15(a) και συνοπτικά από τον ψευδοκώδικα της Εικόνα 15(b). Στον κώδικα αυτό έχουμε ως είσοδο τις αρχικές τιμές των καταχωρητών, 16bit η κάθε μία, που υπολογίστηκαν στην διαδικασία αρχικοποίησης (RS i4, i=1,2,3,4) και το αρχικό μήνυμα 16bit (PT i ) και ως έξοδο το κρυπτογραφημένο μήνυμα (CT i ), αντιστοίχως 16bit, που 29

43 παρήγαγε ο αλγόριθμος μετά από επεξεργασία του αριχκού. Πιο αναλυτικά, όμως, μπορεί να περιγραφεί με τα εξής βήματα: 1) Στο 16bit τμήμα του αρχικού μηνύματος(pt i ) που εισέρχεται, εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 1. 2) Το αποτέλεσμα της πράξης του βήματος (1) κρυπτογραφείται με Ek 1,κρυπτογράφηση τμήματος, που θα αναλυθεί στην συνέχεια και κλειδί k 1. 3) Στο αποτέλεσμα του βήματος (2) εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 2. 4) Το αποτέλεσμα της πράξης του βήματος (3) κρυπτογραφείται με Ek 2 και κλειδί k 2. 5) Στο αποτέλεσμα του βήματος (4) εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 3. 6) Ο καταχωρητής RS 3 μπορεί να αλλάξει με βάση την εφαρμογή του LFSR ή το αποτέλεσμα της πράξης του βήματος (5). Η εκάστοτε τιμή εκχωρείται στον καταχωρητή RS 3. 7) Το αποτέλεσμα της πράξης του βήματος (5) κρυπτογραφείται με Ek 3 και κλειδί k 3. 8) Στο αποτέλεσμα του βήματος (7) εφαρμόζεται πρόσθεση modulo 2 16 με τον καταχωρητή RS 4. 9) Το αποτέλεσμα της πράξης του βήματος (8) κρυπτογραφείται με Ek 4 και κλειδί k 4. 10) Τέλος, το αποτέλεσμα της πράξης του βήματος (9) αποτελεί την έξοδο της διαδικασίας κρυπτογράφησης, που μας δίνει το κρυπτογραφημένο 16bit κομμάτι του μηνύματος και συμβολίζεται με CT i. 30

44 Εικόνα 15 Διαδικασία Κρυπτογράφησης Hummingbird (a) Γενικό Σχήμα Λειτουργίας (b) Ψευδοκώδικας Πέραν του καταχωρητή RS 3, που περιγράφηκε στα προηγούμενα βήματα, οι αλλαγές των τιμών των υπολοίπων καταχωρητών θα περιγραφούν ξεχωριστά ώστε να γίνουν κατανοητές στον αναγνώστη. Είναι προφανές ότι η αλλαγή της τιμής κάθε καταχωρητή θα γίνει αφού κρυπτογραφηθεί η ακολουθία που χρειάζεται ως παράμετρο για τον υπολογισμό της τιμής του. Σχηματικά, οι εξαρτήσεις για τον υπολογισμό των νέων τιμών των καταχωρητών φαίνονται στο σχήμα της Εικόνα 15(a) και αναλύονται στην συνέχεια. Πιο συγκεκριμένα, αναφερόμαστε στα τετράγωνα του διαγράμματος που περιέχουν τα 31

45 RS 1, RS 2, RS 3, RS 4, άρα επικεντρωθούμε στο αριστερά τμήμα του προαναφερθέντος σχήματος. Ο καταχωρητής RS 1, παίρνει την τιμή της modulo 2 16 πρόσθεσης του εαυτού του με το αποτέλεσμα της κρυπτογράφησης Ek 3. Ο καταχωρητής RS 4, παίρνει την τιμή της modulo 2 16 πρόσθεσης του εαυτού του με το αποτέλεσμα της κρυπτογράφησης Ek 1 και της νέας τιμής που θα έχει ο καταχωρητής RS 1 μετά την προαναφερθείσα αλλαγή. Ο καταχωρητής RS 2, παίρνει την τιμή της modulo 2 16 πρόσθεσης του εαυτού του με το αποτέλεσμα της κρυπτογράφησης Ek 1 (βήμα 3 της κρυπτογράφησης) και της νέας τιμής που θα έχει ο καταχωρητής RS 4 μετά την προαναφερθείσα αλλαγή. Ο καταχωρητής RS 3, περιγράφηκε στο βήμα (6) της κρυπτογράφησης Διαδικασία Αποκρυπτογράφησης (Description Process) Η διαδικασία της αποκρυπτογράφησης του Hummingbird, ακολουθεί την αντίστροφη διαδικασία της κρυπτογράφησης. Τα στοιχεία όμως που χρησιμοποιούν οι δύο διαδικασίες είναι τα ίδια. Το μόνο που διαφέρει είναι η πράξη της πρόσθεσης modulo 2 16 που χρησιμοποιείται στην διαδικασία της κρυπτογράφησης. Στην αποκρυπτογράφηση, την πράξη αυτή αντικαθιστά η αντίστροφή της, δηλαδή η αφαίρεση modulo Ομοίως με την διαδικασία κρυπτογράφησης, η αποκρυπτογράφηση περιγράφεται από το σχήμα της Εικόνα 16(a) και συνοπτικά από τον ψευδοκώδικα της Εικόνα 16(b). Στον κώδικα αυτό έχουμε ως είσοδο τις αρχικές τιμές των καταχωρητών, 16bit η κάθε μία, που υπολογίστηκαν στην διαδικασία αρχικοποίησης (RS i4, i=1,2,3,4) και το αρχικό μήνυμα 16bit (CT i ) και ως έξοδο το αποκρυπτογραφημένο μήνυμα (PT i ), αντιστοίχως 16bit, που παρήγαγε ο αλγόριθμος μετά από επεξεργασία του κρυπτογραφημένου. Πιο αναλυτικά, όμως, μπορεί να περιγραφεί με τα εξής βήματα: 1) Στο 16bit τμήμα του κρυπτογραφημένου μηνύματος(ct i ) που εισέρχεται, αποκρυπτογραφείται με την Dk 4, που είναι αποκρυπτογράφηση τμήματος και το κλειδί k 4. 2) Στο αποτέλεσμα του βήματος (1) εφαρμόζεται αφαίρεση modulo 2 16 με τον καταχωρητή RS 4. 3) Το αποτέλεσμα της πράξης του βήματος (2) αποκρυπτογραφείται με την Dk 3 και το κλειδί k 3. 4) Στο αποτέλεσμα του βήματος (3) εφαρμόζεται αφαίρεση modulo 2 16 με τον καταχωρητή RS 3. 32

46 5) Ο καταχωρητής RS 3 μπορεί να αλλάξει με βάση την εφαρμογή του LFSR ή το αποτέλεσμα της πράξης του βήματος (4). Η εκάστοτε τιμή εκχωρείται στον καταχωρητή RS 3. 6) Το αποτέλεσμα της πράξης του βήματος (4) αποκρυπτογραφείται με την Dk 2 και το κλειδί k 2. 7) Στο αποτέλεσμα του βήματος (6) εφαρμόζεται αφαίρεση modulo 2 16 με τον καταχωρητή RS 2. 8) Το αποτέλεσμα της πράξης του βήματος (7) αποκρυπτογραφείται με την Dk 1 και το κλειδί k 1. 9) Στο αποτέλεσμα του βήματος (8) εφαρμόζεται αφαίρεση modulo 2 16 με τον καταχωρητή RS 1. 10) Τέλος, το αποτέλεσμα της πράξης του βήματος (9) αποτελεί την έξοδο της διαδικασίας αποκρυπτογράφησης, που μας δίνει το αποκρυπτογραφημένο 16bit κομμάτι του αρχικού μηνύματος και συμβολίζεται με PT i. Εικόνα 16 Διαδικασία Αποκρυπτογράφησης Hummingbird (a) Γενικό Σχήμα Λειτουργίας (b) Ψευδοκώδικας 33

47 Οι καταχωρητών του Internal State αλλάζουν τιμές στην εκτέλεση της διαδικασίας αποκρυπτογράφησης, οι οποίες εξαρτώνται από τα αποτελέσματα επόμενων αποκρυπτογραφήσεων. Όπως είναι λογικό, αυτές οι αλλαγές θα γίνουν αφού υπολογιστεί το αποτέλεσμα κάθε αποκρυπτογράφησης που εξαρτάται ο κάθε καταχωρητής. Πιο συγκεκριμένα, οι αλλαγές αυτές, που φαίνονται και στο σχήμα της Εικόνα 16(a) και στα τετράγωνα με τα RS 1, RS 2, RS 3 και RS 4, αναφέρονται ξεχωριστά από την υπόλοιπη διαδικασία αποκρυπτογράφησης για ευκολία στην κατανόηση. Στο κομμάτι της ανανέωσης των καταχωρητών η πράξη που εφαρμόζεται είναι όμοια με αυτή της διαδικασίας κρυπτογράφησης, δηλαδή η πρόσθεση modulo Ο καταχωρητής RS 1, παίρνει την τιμή της modulo 2 16 πρόσθεσης του εαυτού του με το αποτέλεσμα του βήματος (2). Ο καταχωρητής RS 4, παίρνει την τιμή της modulo 2 16 πρόσθεσης του εαυτού του με το αποτέλεσμα της modulo 2 16 πρόσθεσης της νέας τιμής του καταχωρητή RS 1 με το αποτέλεσμα του βήματος (7). Ο καταχωρητής RS 2, παίρνει την τιμή της modulo 2 16 πρόσθεσης της αποκρυπτογράφησης Dk 2 και της νέας τιμής που θα έχει ο καταχωρητής RS 4 μετά την προαναφερθείσα αλλαγή. Ο καταχωρητής RS 3, περιγράφηκε στο βήμα (5) της κρυπτογράφησης Κρυπτογράφηση Τμήματος 16bit στον Hummingbird Η κρυπτογράφηση τμήματος(block cipher) είναι η βασική τεχνική που χρησιμοποιείται σε όλες τις διαδικασίες του Hummingbird. Όπως φαίνεται και από τις εικόνες Εικόνα 14(a) και Εικόνα 15(a) έχουμε την εφαρμογή 4 όμοιων κρυπτογραφήσεων τμήματος 16bit (Ek 1, Ek 2, Ek 3, Ek 4 ) κατά την αρχικοποίηση και κρυπτογράφηση αντίστοιχα. Η κάθε κρυπτογράφηση τμήματος είναι ένα δίκτυο αντικατάστασηςμετάθεσης(sp Network). Συγκεκριμένα εδώ αποτελείται από τμήματα μήκους 16bit(block size) και 64bit κλειδί. Η υλοποίηση της βασίζεται σε 4 επαναληπτικές εκτελέσεις ενός block κώδικα με αντικαταστάσεις και μεταθέσεις, 4 πρώτοι γύροι, και στην συνέχεια ενός επιπλέον γύρου που εφαρμόζει μόνο αντικαταστάσεις. Το γενικό σχήμα της κρυπτογράφησης τμήματος φαίνεται στην εικόνα Εικόνα 17(a), ενώ στην Εικόνα 17(b) παρουσιάζεται ο αντίστοιχος ψευδοκώδικας της κρυπτογράφησης τμήματος. Στον ψευδοκώδικα έχουμε ως είσοδο το μήνυμα προς κρυπτογράφηση μεγέθους 16bit (m) και ένα μέρος του κλειδιού με μέγεθος 64bit. Ως έξοδο έχουμε το κρυπτογραφημένο μήνυμα (m'), αντιστοίχως 16bit, που παρήγαγε η κρυπτογράφηση τμήματος μετά από επεξεργασία του αρχικού της εισόδου. 34

48 Εικόνα 17 Κρυπτογράφηση Τμήματος Hummingbird (a) Γενικό Σχήμα Λειτουργίας (b) Ψευδοκώδικας Ο αλγόριθμος κρυπτογράφησης δέχεται 16bit μηνύματος (διαδικασία κρυπτογράφησης) ή γενικά έναν 16bit αριθμό (διαδικασία αρχικοποίησης) και ένα 16bit τμήμα του κλειδιού. Το 64bit κλειδί, διαχωρίζεται σε 4 υποκλειδιά μήκους 16bit το καθένα που χρησιμοποιούνται στους 4 πρώτους γύρους. Στον επόμενο έχουμε την χρήση άλλων 2 κλειδιών που προκύπτουν από τα υποκλειδιά. Το (i) στα υποκλειδιά μας δηλώνει τον αριθμό της κρυπτογράφησης από το γενικό σχήμα των διαδικασιών αρχικοποίησης ή κρυπτογράφησης. Δηλαδή από 1 έως 4 για κάθε Ek 1, Ek 2, Ek 3, Ek 4. Έξοδος του αλγορίθμου είναι μία 16bit ακολουθία. 35

49 Ο κάθε ένας από τους πρώτους 4 της κρυπτογράφησης εκτελεί διαδοχικά τις εξής λειτουργίες: 1) Εφαρμογή της πράξης XOR στην 16bit ακολουθία εισόδου και στο K 1 υποκλειδί. 2) Διαχωρισμός του αποτελέσματος της πράξης XOR σε 4 ακολουθίες A, B, C, D, 4bit η κάθε μία. 3) Εφαρμογή αντικατάστασης S-box, που θα αναλυθεί σε επόμενη υποενότητα. 4) Συνένωση των ακολουθιών 4bit και εφαρμογή στην 16bit ακολουθία (4x4bit) γραμμικής αριστερής ολίσθησης που δίνεται από την σχέση:. 5) Εκτέλεση των 4 βημάτων για Κ 2, Κ 3, Κ 4 και 16bit ακολουθία εισόδου το νέο αποτέλεσμα του βήματος (4) σε κάθε επανάληψη. Στην συνέχεια, ο επόμενος γύρος και τελευταίος πριν την έξοδο της ακολουθίας, εκτελεί τις ακόλουθες λειτουργίες: 1) Υπολογισμός του υποκλειδιού Κ 5, εφαρμόζοντας την πράξη XOR στα υποκλειδιά Κ 1 και Κ 3. 2) Εφαρμογή της πράξης XOR στο υποκλειδί Κ 5 με την ακολουθία που προέκυψε μετά τους 4 πρώτους γύρους. 3) Διαχωρισμός του αποτελέσματος σε 4 ακολουθίες 4bit και εφαρμογή της αντικατάστασης με S-box. 4) Υπολογισμός του υποκλειδιού Κ 6, εφαρμόζοντας την πράξη XOR στα υποκλειδιά Κ 2 και Κ 4. 5) Συνένωση των 4 ακολουθιών που προέκυψαν από τα S-box και εφαρμογή της πράξης XOR στην 16bit ακολουθία (4x4bit) με το υποκλειδί Κ 6. Μετά την ολοκλήρωση των συνολικά 5 γύρων έχουμε την τελική κρυπτογραφημένη 16bit ακολουθία που συνεχίζει την διαδρομή της στην κάθε διαδικασία. Η κάθε τεχνική που χρησιμοποιείται έχει και μία ξεχωριστή ιδιότητα, που συνεισφέρει στην ενίσχυση της ασφάλεια της κρυπτογράφησης και κατ επέκταση και στην συνολική ασφάλεια του Hummingbird. Πιο συγκεκριμένα, η χρήση της πράξης της αποκλειστικής διάζευξης, XOR, προσφέρει μια καλή μίξη των ακολουθιών που εφαρμόζεται είτε πρόκειται για μίξη του κλειδιού με το μήνυμα είτε για παραγωγή κλειδιών. Η μετάθεση με γραμμική ολίσθηση προσφέρει ένα καλό «μπέρδεμα» των bit της ακολουθίας. Η τεχνική των S-box, υποενότητα , θα αναλυθεί και εκτενέστερα για την εφαρμογή του στον Hummingbird στο υποκεφάλαιο που ακολουθεί. 36

50 Επιλογή S-box στον Hummingbird Τα S-box στην κρυπτογράφηση τμήματος του Hummingbird δέχονται 4bit τα αντικαθιστούν με βάση κάποιον πίνακα και παράγουν μία νέα ακολουθία, βασισμένη σε αυτήν της εισόδου, με μέγεθος πάλι 4bit. Επειδή έχουμε την εφαρμογή των S-box σε 4 ακολουθίες ταυτόχρονα για κάθε έναν από τους 4 γύρους της κρυπτογράφησης, σημαντικό μέρος της μελέτης δόθηκε στην αποτελεσματικότερη υλοποίηση της διαδικασίας αυτής. Για περισσότερη μείωση της κατανάλωσης ενέργειας και μνήμης στην υλοποίηση του Hummingbird σε επίπεδο υλικού, που αφορά και την παρούσα εργασία, τα 4 S-box που απαιτούνταν μπορούν να αντικατασταθούν με μόνο 1 S-box, το οποίο επαναλαμβάνεται 4 φορές στην κρυπτογράφηση τμήματος των 16bit. Ο Πίνακας 3 είναι αυτός που χρησιμοποιείται 4 φορές. Η αντικατάσταση γίνεται με μετατροπή σε δεκαεξαδική αναπαράσταση, κυρίως για λόγους οικονομίας χώρου. x A B C D E F S 1 (x) F 1 C A 9 E B D 3 S 2 (x) 0 7 E 1 5 B A D 6 F C 4 9 S 3 (x) 2 E F 5 C 1 9 A B D S 4 (x) C 1 A F D E 6 B Πίνακας 3 Sbox Κρυπτογράφησης Τμήματος Hummingbird Το x στον πίνακα αποτελεί την δυαδική ακολουθία 4bit που θα αντικατασταθεί, και μας δίνει την στήλη στον πίνακα στην δεκαεξαδική της αναπαράσταση, και ανάλογα με την τιμή της και την S i που εφαρμόζεται σύμφωνα με το σχήμα της Εικόνα 17(a) έχουμε την γραμμή του πίνακα. Η δεκαεξαδική τιμή που θα βρεθεί, αντικαθιστά την ακολουθία αφού μετατραπεί σε δυαδική. Τα κριτήρια για την προαναφερθείσα απλοποίηση της εφαρμογής των S-box αναφέρονται εκτενέστερα στην πρώτη παρουσίαση του αλγορίθμου και συγκεκριμένα στο Παράρτημα Α(Appendix A) του εγγράφου στην βιβλιογραφία [11] Απορυπτογράφηση Τμήματος 16bit στον Hummingbird Η διαδικασία της αποκρυπτογράφησης τμήματος του αλγορίθμου Hummingbird, βασίζεται στην κρυπτογράφηση τμήματος που αναλύθηκε στην υποενότητα Πιο συγκεκριμένα, η αποκρυπτογράφηση ως αντίστροφη διαδικασία από την κρυπτογράφηση ακολουθεί κατά την εκτέλεση της την αντίθετη φορά του σχήματος που περιγράφεται στην Εικόνα 17 και περιέχει τις αντίθετες πράξεις. Αναλυτικότερα η διαδικασία της αποκρυπτογράφησης και όλων όσων περιέχει θα 37

51 παρουσιαστεί κατά την υλοποίηση της σε επόμενο κεφάλαιο. Αξίζει απλά να αναφερθεί η παραγωγή του Sbox της διαδικασίας αποκρυπτογράφησης. Ουσιαστικά πρόκειται για τον αντίστροφο του Πίνακας 3. Με την έννοια του αντίστροφου πίνακα εννοείται ότι η αντικατάσταση προκύπτει αντιστοιχίζοντας την δυαδική ακολουθία 4bit εισόδου στην δεκαεξαδική μορφή της, στο σύμβολο S i (x) στον Πίνακας 3. Δηλαδή η 2 η, 3 η, 4 η και 5 η γραμμή αυτού του πίνακα μας δίνει την είσοδο ενώ η 1 η μας δίνει την έξοδο μετά την αντικατάσταση. Στην περίπτωση που επιθυμούμε να δημιουργήσουμε τον πίνακα Sbox για την διαδικασία αποκρυπτογράφησης, θα είχαμε τον εξής πίνακα: x A B C D E F S 1 (x) D 4 A F B 2 1 C E 8 3 S 2 (x) E 4 B 1 6 F 9 5 D A 2 C S 3 (x) C 5 0 E 9 3 A D B F 1 2 S 4 (x) 0 5 C 2 3 F A 1 D E 6 B Πίνακας 4 Sbox Αποκρυπτογράφησης Τμήματος Hummingbird 38

52 4. Ψηφιακά Συστήματα Η αναγκαιότητα υλοποίησης των αλγορίθμων κρυπτογράφησης υλικού, για την κατανόησή τους, την βελτίωση της κατανάλωσης πόρων που χρησιμοποιούν αλλά και για την αντιμετώπιση των αδυναμιών που παρουσιάζουν καθιστά απαραίτητη την κατανόηση των ψηφιακών συστημάτων. Βασικό θέμα της παρούσας εργασίας αποτελεί η υλοποίηση του αλγορίθμου Hummingbird σε επίπεδο υλικού όπως αναφέρθηκε και σε προηγούμενο κεφάλαιο. Συνεπώς θα χρειαστεί η ανάλυση του με πύλες, ψηφιακά σήματα και σήματα ρολογιού που αποτελούν στοιχεία των κυκλωμάτων και κατ' επέκταση των ψηφιακών συστημάτων. 4.1 Γενική Παρουσίαση Στη σημερινή εποχή, που η τεχνολογία συνεχώς εξελίσσεται, είναι μεγάλη η ανάγκη κατανόησης των ψηφιακών συστημάτων σε βάθος, διότι αποτελούν βάση πολλών εργαλείων που μας βοηθούν στην καθημερινότητά μας. Χαρακτηριστικό παράδειγμα είναι οι υπολογιστές, τα κινητά τηλέφωνα και γενικά οι τηλεπικοινωνίες, τα ψηφιακά ρολόγια, τα ηλεκτρονικά παιχνίδια και πλήθος άλλων συσκευών. Τα ψηφιακά συστήματα αποτελούνται από ολοκληρωμένα κυκλώματα που περιέχουν λογικά κυκλώματα. Η τεχνολογία έχει αλλάξει δραματικά τα τελευταία χρόνια στο τομέα της δημιουργίας αυτών των κυκλωμάτων. Παλαιότερα η κατασκευή των λογικών κυκλωμάτων βασιζόταν σε ανεξάρτητα κομμάτια που περιείχαν τρανζίστορ (Εικόνα 18), τα οποία στην συνέχεια συνδέονταν δημιουργώντας τα ολοκληρωμένα κυκλώματα. Έτσι εμφανίστηκαν τα πρώτα ολοκληρωμένα κυκλώματα σε ένα τεμάχιο που είναι ευρέως γνωστά με την ονομασία chip. Εικόνα 18 Εσωτερική Δομή Τρανζίστορ 39

53 Η τεχνολογία αυτή εξελίχθηκε ακόμη περισσότερο με την προσθήκη στο ίδιο chip όλων των απαραίτητων στοιχείων για την δημιουργία ενός ολοκληρωμένου κυκλώματος μικροεπεξεργαστή. Αρχικά, οι μικροεπεξεργαστές είχαν πολύ μικρή υπολογιστική ισχύ και αποτελούνταν από λίγα τρανζίστορ. Όμως, οι ρυθμοί ανάπτυξης των ολοκληρωμένων κυκλωμάτων ήταν θεαματικοί οδηγώντας τον Gordon Moore(1975), ιδρυτή(1968) και πρόεδρο(1975) και της εταιρείας Intel, στην πρόβλεψη ότι τα τρανζίστορ που χωράνε σε ένα ολοκληρωμένο κύκλωμα μπορούν να διπλασιάζονται κάθε 2 χρόνια. [28] Η πρόβλεψη αυτή επαληθεύτηκε, γνωστή και ως Νόμος του Moore, και ισχύει μέχρι και σήμερα. Θεωρείται ότι θα συνεχιστεί η διατήρηση της επαληθευσιμότητα του Νόμου του Moore για την επόμενη δεκαετία, γι' αυτό και γίνονται μελλοντικές προβλέψεις και έρευνες στο νόμο αυτό. [6] Έτσι τα chip από τα λίγα τρανζίστορ που περιείχαν, πέρασαν στην εποχή που περιλάμβαναν μερικά εκατομμύρια και σήμερα κάθε chip μπορεί να περιέχει δισεκατομμύρια τρανζίστορ. Η αύξηση των τρανζίστορ ανά χρονιά φαίνεται και στο διάγραμμα της Εικόνα 19 που ακολουθεί. Εικόνα 19 Διάγραμμα Νόμου του Moore 40

54 4.2 Σχεδίαση Ολοκληρωμένων Ψηφιακών Συστημάτων Οι σχεδιαστές αρχικά έχουν ως αντικείμενο την σχεδίαση λογικών κυκλωμάτων που θα τοποθετηθούν σε ενιαίο chip και κατ' επέκταση την σχεδίαση πολλών ολοκληρωμένων κυκλωμάτων που θα τοποθετηθούν σε μία πλακέτα τυπωμένου κυκλώματος (Printed Circuit Board, PCB). Μία τέτοια πλακέτα κενή φαίνεται στην Εικόνα 20. Εικόνα 20 Πλακέτα Τυπωμένου Κυκλώματος (PCB) Στην πορεία των χρόνων οι σχεδιαστές κατέληξαν, για την δική τους διευκόλυνση, στην υλοποίηση λογικών κυκλωμάτων με την χρήση άλλων έτοιμων που υπάρχουν στην αγορά. Έτσι εξοικονομήθηκε χρόνος ανάπτυξης του εκάστοτε προϊόντος. Η απλοποίηση αυτή, όμως εμπεριέχει κάποια ζητήματα. Τα κύρια ζητήματα που μπορεί να αντιμετωπίσει ένας σχεδιαστής είναι δύο. Το πρώτο αφορά την χρήση ενός έτοιμου λογικού κυκλώματος. Εδώ ο σχεδιαστής θα πρέπει αρχικά να προσδιορίσει την λειτουργία που εκτελεί το κύκλωμα και έπειτα να το χρησιμοποιήσει ή να το επεκτείνει. Η διαδικασία αυτή ονομάζεται διαδικασία ανάλυσης του λογικού κυκλώματος. Το δεύτερο ζήτημα επικεντρώνεται στην δημιουργία ενός κυκλώματος. Στην περίπτωση αυτή, ο σχεδιαστής καλείται να υλοποιήσει εξαρχής ένα λογικό κύκλωμα που θα εκτελεί συγκεκριμένες λειτουργίες, διότι δεν υπάρχει κάποιο έτοιμο που να τις πραγματοποιεί. Η διαδικασία αυτή είναι γνωστή ως διαδικασία σύνθεσης. Στην διαδικασία αυτή συμπεριλαμβάνεται και η επέκταση ενός έτοιμου κυκλώματος ή ο συνδυασμός περισσότερων έτοιμων. Όπως είναι προφανές η διαδικασία της ανάλυσης είναι πιο απλή από αυτή της σύνθεσης, αλλά δεν είναι πάντα η εφικτή λύση. 41

55 Σε συνδυασμό με όσα αναφέρθηκαν οι σχεδιαστές καλούνται να αντιμετωπίσουν στην πορεία της σχεδίασης λάθη, να τηρήσουν προθεσμίες αλλά και να βρουν και την υλοποίηση με το χαμηλότερο κόστος, ώστε το τελικό προϊόν να είναι προσιτό στους αγοραστές. Τα βασικά βήματα σχεδίασης ψηφιακών συστημάτων που πρέπει να ακολουθούνται πάντα από τους σχεδιαστές παρουσιάζονται σχηματικά στο διάγραμμα της Εικόνα 21. Τα βήματα είναι απλά, αλλά ξεφεύγουν από το βασικό θέμα της παρούσας εργασίας δεν θα αναλυθούν περαιτέρω. Εικόνα 21 Βασικά Βήματα Σχεδίασης Ψηφιακών Συστημάτων Τα λογικά κυκλώματα, που όπως προαναφέρθηκε αποτελούν την βάση των ψηφιακών συστημάτων, υλοποιούνται κυρίως ως ηλεκτρονικά κυκλώματα που δέχονται σήματα διακριτών τιμών. Τα λογικά κυκλώματα που θα χρησιμοποιηθούν για την υλοποίηση του Hummingbird δέχονται σήματα 2 διακριτών τιμών. Αυτές οι τιμές είναι το δυαδικό μηδέν (0) και το δυαδικό ένα(1), δηλαδή δέχονται ψηφιακά σήματα (Εικόνα 22). Συνεπώς τα κυκλώματα τέτοιου τύπου ονομάζονται δυαδικά ψηφιακά κυκλώματα. 42

56 Εικόνα 22 Κυματομορφή Ψηφιακού Σήματος Εκτός, όμως, από τα σήματα που δέχονται βασικό χαρακτηριστικό της σχεδίασης λογικών κυκλωμάτων αποτελούν τα απλούστερα στοιχεία που βοηθούν στην δημιουργία τους. Τα στοιχεία, αυτά, είναι οι λογικές πύλες(logic gates) και τα δίκτυα πυλών. Τα δίκτυα πυλών ή δικτυώματα προέρχονται από τον συνδυασμός μεμονωμένων λογικών πυλών. Οι απλές λογικές πύλες υλοποιούν λογικές πράξεις και τα δικτυώματα μπορούν να υλοποιήσουν ακόμη και πολύπλοκες λογικές συναρτήσεις. Μία λογική πύλη δέχεται μία ή περισσότερες εισόδους και παράγει μία έξοδο ως αποτέλεσμα της εκάστοτε πράξης μεταξύ των εισόδων της. Οι είσοδοι και έξοδοι των λογικών συναρτήσεων των πυλών αποθηκεύονται σε δυαδικές μεταβλητές και μπορούν να παρασταθούν σε ένα πίνακα αλήθειας(truth table), όπως λέγεται. Ο πίνακας αυτός δίνει μια απλή απεικόνιση της αντιστοιχίας κάθε εισόδου με κάθε έξοδο και αποτελεί χαρακτηριστικό της κάθε συνάρτησης απλής ή σύνθετης. Αξίζει να σημειωθεί ότι η κάθε πύλη έχει άλλο κόστος, το οποίο εξαρτάται από τον αριθμό των εισόδων της και από την πολυπλοκότητα των συναρτήσεων που υλοποιεί. Η κάθε πύλη έχει δικό της σύμβολο που χρησιμοποιείται για την απεικόνισή της. Οι 3 βασικές λογικές πύλες συνδυάζονται μεταξύ τους και δημιουργούν νέες πύλες ή και λογικά κυκλώματα. Οι βασικές αυτές πύλες, υλοποιούν αντίστοιχα τις λογικές πράξεις: σύζευξης, λογικό "και" - AND, διάζευξης, λογικό "ή" - OR, λογικής άρνησης - NOT. Τα σύμβολα, οι πίνακες αλήθειας και η μαθηματική συνάρτηση των προαναφερθέντων πυλών, για δύο εισόδους στις AND και OR και μία στην NOT, φαίνονται στην Εικόνα 23 (α), (β) και (γ), αντίστοιχα. 43

57 Εικόνα 23 Λογικές Πύλες (α) AND (β) OR (γ) NOT 4.3 Πλεονεκτήματα Ψηφιακών Συστημάτων Τα πλεονεκτήματα των ψηφιακών συστημάτων είναι ιδιαίτερα σημαντικά και αυτός είναι ο λόγος που χρησιμοποιούνται ευρέως στις τεχνολογίες υλικού. Πιο συγκεκριμένα, σχετίζονται με: Την ακρίβεια και την αξιοπιστία (μικρή ευαισθησία). Την ευκολία στη σχεδίαση (λογική σχεδίαση). Τη δυνατότητα προγραμματισμού (Προγραμματιζόμενες Διατάξεις Λογικής - PLD). Την υψηλή συχνότητα λειτουργίας (επεξεργαστές στα 500 MHz με 100 εκατομμύρια αποτελέσματα πράξεων στο δευτερόλεπτο). Την υψηλή απόδοση με χαμηλό κόστος. 4.4 Γλώσσες Περιγραφής Υλικού (Hardware Description Languages) Για να μοντελοποιηθούν τα ψηφιακά συστήματα που αναλύθηκαν στις προηγούμενες ενότητες του κεφαλαίου, χρησιμοποιούνται οι γλώσσες περιγραφής υλικού. Οι γλώσσες αυτές θυμίζουν τις γλώσσες προγραμματισμού, όπως η C ή η Java, διότι γράφεται κώδικας(code) τηρώντας κάποιους συντακτικούς και γραμματικούς κανόνες ανάλογα την γλώσσα, όμως διαφέρουν πολύ από αυτές διότι δημιουργήθηκαν ειδικά για τις περιγραφή κυκλωμάτων. Μπορούν να μοντελοποιήσουν οποιοδήποτε σύστημα από μία πύλη έως ένα πολύπλοκο λογικό κύκλωμα. Συνεπώς, πρόκειται για γλώσσες υλικού και όχι λογισμικού όπως είναι οι γλώσσες προγραμματισμού, που περιέχουν στοιχεία για την προσομοίωση ενός πραγματικού τμήματος υλικού. 44

58 Πιο αναλυτικά, οι γλώσσες περιγραφής υλικού, υποστηρίζουν την ιεραρχική σχεδίαση(hierarchical design) που χρησιμοποιείται στο υλικό και αφορά κυκλώματα τα οποία στο εσωτερικό τους περιέχουν άλλα μικρότερα κυκλώματα σχεδιασμένα ανεξάρτητα το ένα από το άλλο. Επίσης, οι γλώσσες υλικού μπορούν να προσομοιώσουν την παραλληλία και την ταυτόχρονη εκτέλεση κάποιον στοιχείων που εμφανίζονται στην λειτουργία των ψηφιακών συστημάτων, σε αντίθεση με τις γλώσσες προγραμματισμού που εφαρμόζουν μια ακολουθιακή εκτέλεση των εντολών. Ακόμη μία βασική διαφορά των δύο τύπων γλωσσών είναι η ευαισθησία που παρουσιάζουν στον πραγματικό χρόνο. Όσον αφορά το υλικό ο χρονισμός των διάφορων στοιχείων κατά την εκτέλεση αποτελεί σημαντικό παράγοντα για το παραγόμενο αποτέλεσμα. Εξάλλου η λειτουργία του κυκλώματος θα πρέπει να είναι όσο πιο κοντά γίνεται στην πραγματική λειτουργία ενός κυκλώματος σε κάποιο υλικό και στην περίπτωση αυτή η εκτέλεση των λειτουργιών δεν είναι ακαριαία αλλά περιέχει καθυστερήσεις. Για την λειτουργία του χρονισμού χρησιμοποιούνται ειδικά σήματα εισόδου που εισάγουν τις επιθυμητές καθυστερήσεις. Γενικά οι γλώσσες περιγραφής υλικού πρέπει να μπορούν να περιγράφουν (describe), να προσομοιώνουν (simulation) ένα κύκλωμα, αλλά και να συνθέτουν (synthesis) ένα κύκλωμα. Με τον όρο προσομοίωση εννοείται η διαδικασία πιστοποίησης της δομής και συμπεριφοράς (behavioral & structural level) ενός κυκλώματος με βάση κατάλληλο λογισμικό. Το λογισμικό αυτό, που ονομάζεται προσομοιωτής (simulator), δέχεται την περιγραφή του κυκλώματος και το αρχείο που περιέχει τα διανύσματα ή σήματα εισόδου για την δοκιμή του κυκλώματος (testbench) γραμμένα και τα δύο σε γλώσσα υλικού και παράγει τις λογικές τιμές εξόδου του κυκλώματος. Έτσι μπορεί να ελεγχθεί η λειτουργία του κάθε κυκλώματος πριν την πραγματική υλοποίησή του. Επίσης, έχουμε και την ιδιότητα της σύνθεσης στις γλώσσες υλικού. Με τον όρο σύνθεση, αναφέρεται η αυτοματοποιημένη διαδικασία παραγωγής του δικτυώματος που αποτελεί το κύκλωμα μέσω της περιγραφής των λειτουργιών του σε γλώσσα υλικού. Για την παραπάνω λειτουργία χρησιμοποιείται κάποιο ειδικό εργαλείο(synthesis tool) που δέχεται ως είσοδο την περιγραφή του κυκλώματος σε γλώσσα υλικού και των συνδέσεων των στοιχείων του και παράγει ως έξοδο το δικτύωμα με πύλες. Υπάρχουν πολλές γλώσσες περιγραφής υλικού, αλλά οι πιο διαδεδομένες είναι αυτές που υποστηρίζουν όλες οι κατασκευαστικές εταιρείες ψηφιακού εξοπλισμού και έχουν δημιουργηθεί και λειτουργούν με βάση τα πρότυπα του Ινστιτούτου Ηλεκτρολόγων και Ηλεκτρονικών Μηχανικών (Institute of Electrical and Electronic 45

59 Engineers, IEEE). Οι γλώσσες, πρότυπα του ινστιτούτου IEEE, είναι δύο. Η γλώσσα VHSIC HDL(Very High Speed Integrated Circuit Hardware Description Language) ή VHDL, όπως είναι γνωστή και η γλώσσα Verilog HDL. Στην παρούσα εργασία η υλοποίηση θα γίνει σε VHDL, συνεπώς και θα ακολουθήσει μία πιο αναλυτική παρουσίαση της γλώσσας σε επόμενη ενότητα. Οι γλώσσες περιγραφής υλικού προσφέρουν πολλά οφέλη και σημαντική βοήθεια στους σχεδιαστές των ψηφιακών συστημάτων. Κάποια από τα βασικότερα πλεονεκτήματα τους είναι: Η μεταφερσιμότητα που προσφέρουν μεταξύ των διάφορων τεχνολογιών εύκολα και γρήγορα. Ο έλεγχος της εκάστοτε σχεδίασης που προσφέρει ευκολία στην μετάβαση από την περιγραφή στην πραγματική υλοποίηση του υλικού. Η ευκολία συνεννόησης μεταξύ των σχεδιαστών έχοντας ένα κοινό υπόβαθρο σχεδίασης με την κάθε γλώσσα Η Γλώσσα VHDL (Very High Speed Integrated Circuit Hardware Description Language) Η αλματώδης εξέλιξη των ψηφιακών συστημάτων την δεκαετία του 1980, οδήγησε στην διερεύνηση πρακτικών για την διευκόλυνση της διαδικασίας σχεδίασης των ολοκληρωμένων κυκλωμάτων. Στα πλαίσια της προσπάθειας αυτής, δημιουργήθηκε η VHDL, ως γλώσσα περιγραφής υλικού. Η δημοτικότητα της και η χρήση της αυξήθηκε και πια αποτελεί την πρώτη βιομηχανική γλώσσα. Η αναγνώριση αυτή οφείλεται στο ότι αποτελεί πρότυπο του ινστιτούτου IEEE, όπως αναφέρθηκε και στην ενότητα 4.4. Η αρχική έκδοση της VHDL έγινε γνωστή το 1987 με το πρότυπο ΙΕΕΕ 11076, ενώ αργότερα το 1993 εμφανίστηκε μια βελτιωμένη έκδοσή της με το πρότυπο ΙΕΕΕ Το πρότυπο στη συνέχεια αναβαθμίστηκε το 2000 και το 2002, με μικρές αλλαγές. Η σημερινή έκδοση της VHDL (VHDL 4.0) προτάθηκε το 2008 από την Τεχνική Επιτροπή της Accellera, οργανισμός που επιλέχθηκε από την IEEE για να δημιουργήσει την αναβάθμιση του προτύπου της επόμενης έκδοσης. Τελικά, η έκδοση αυτή ψηφίστηκε από την IEEE και δημοσιοποιήθηκε το 2009 με το πρότυπο IEEE Ένα κύκλωμα που περιγράφεται με ένα πρόγραμμα της γλώσσας VHDL ονομάζεται οντότητα σχεδίου ή απλά οντότητα. Αυτή αποτελείται από δύο κύρια μέρη, την δήλωση οντότητας (entity declaration), οποία καθορίζει τα σήματα εισόδου και εξόδου και την αρχιτεκτονική (architecture),η οποία δίνει τις λεπτομέρειες του κυκλώματος. 46

60 Τα σήματα εισόδου και εξόδου μιας οντότητας καθορίζονται με την βοήθεια της δήλωσης οντότητας, που γίνεται με την λέξη ENTITY. Το όνομα της οντότητας μπορεί να είναι οποιοδήποτε έγκυρο όνομα της γλώσσας VHDL. Οι αγκύλες δηλώνουν ένα προαιρετικό τμήμα. Τα σήματα εξόδου και εισόδου καθορίζονται με την λέξη-κλειδί PORT. Εάν μια θύρα είναι είσοδος, έξοδος ή διπλής κατεύθυνσης καθορίζεται από την κατάσταση της θύρας. Η αρχιτεκτονική μιας οντότητας παρέχει τις λεπτομέρειες του κυκλώματος της οντότητας και την συμπεριφορά του κυκλώματος. Αυτή αποτελείται από δύο κύρια μέρη, την περιοχή δήλωσης (declarative region) και το σώμα της αρχιτεκτονικής (architecture body).h περιοχή δήλωσης εμφανίζεται πριν απλό την λέξη BEGIN. Αυτή μπορεί να χρησιμοποιηθεί για να δηλωθούν σήματα, τύποι ορισμένοι από τον χρήστη και σταθερές. 4.5 Λογισμικό Προσομοίωσης Xilinx Η εφαρμογή της κάθε γλώσσας υλικού και η συγγραφή του κώδικά της γίνεται σε κάποιο προσομοιωτή, όπως και στις γλώσσες προγραμματισμού υπάρχουν οι μεταγλωττιστές. Με αυτόν τον τρόπο παρέχεται στον σχεδιαστή ακόμη μεγαλύτερη ευκολία, αφού χρησιμοποιεί ένα έτοιμο περιβάλλον με ειδικά σχεδιασμένο γραφικό περιβάλλον για τις ανάγκες του. Σήμερα υπάρχουν πολλά εμπορικά λογισμικά προσομοίωσης για γλώσσες περιγραφής υλικού. Η υλοποίηση του Hummingbird, στην παρούσα εργασία θα γίνει με χρήση του εργαλείου προσομοίωσης της εταιρείας Xilinx. Συγκεκριμένα για την σύνθεση, την υλοποίηση καθώς και την προσομοίωση των κυκλωμάτων του αλγορίθμου χρησιμοποιήθηκε το πακέτο ISE (Integrated Synthesis Environment) στην έκδοση 14.2 της Xilinx σε συνδυασμό με το ISim. Το εργαλείο αυτό, γενικά, στοχεύει στην σύνθεση και την ανάλυση HDL σχεδίων και ειδικά πρόκειται για μια σουίτα εφαρμογών που επιτρέπει στον προγραμματιστή την σύνθεση των στοιχείων του σε επίπεδο πυλών ή και με κώδικα, την εκτέλεση της ανάλυσης χρονισμού (timing analysis), την εξέταση των RTL διαγραμμάτων και την προσομοίωση των αντιδράσεων ενός σχεδίου (design) σε διαφορετικά ερεθίσματα. Υπάρχουν δύο εκδόσεις του Xilinx ISE Design Suite και επιλέγονται ανάλογα με τις ανάγκες του χρήστη και της υλοποίησης που επιθυμεί να προσομοιώσει. Οι εκδόσεις αυτές είναι το ISE Design Suite: System Edition, που παρέχει ένα έξτρα εργαλείο για υψηλής απόδοσης συστήματα και μοντελοποιεί την σχεδίαση με κώδικα στο πρόγραμμα Simulink ή Matlab. Η άλλη έκδοση ονομάζεται ISE Design Suite: WebPACK Edition και είναι αυτή που χρησιμοποιήθηκε και στην προσομοίωση της 47

61 παρούσας εργασίας. Αυτή παρέχει στον προγραμματιστή την δυνατότητα της πλήρους «από πίσω προς τα εμπρός» σχεδίασης. Σημειώνεται, επίσης, ότι γλώσσα VHDL ή σε Verilog. ο κώδικας στο εργαλείο αυτό μπορεί να είναι σε Εικόνα 24 Λογότυπο εταιρείας Xilinx Εικόνα 25 Λογότυπο Xilinx ISE Design Suite 48

62 5. Υλοποίηση Αλγορίθμου Hummingbird σε VHDL Στο κεφάλαιο αυτό θα παρουσιαστούν και θα αναλυθούν όλα τα επιμέρους στοιχεία (components) που απαρτίζουν την υλοποίηση του αλγορίθμου Hummingbird σε γλώσσα VHDL. Η αναφορά τους θα γίνει σύμφωνα με την σειρά που αναλύθηκε και η δομή του αλγορίθμου στο αντίστοιχο κεφάλαιο. (Κεφάλαιο 3) Αρκετά από τα στοιχεία κάθε διαδικασίας του αλγορίθμου είναι κοινά, συνεπώς και η ανάλυση τους θα γίνει στο πρώτο στάδιο που εμφανίζονται και έπειτα θα ακολουθεί απλή αναφορά αυτών. Η οποιαδήποτε διαφοροποίηση θα διευκρινίζεται εμφανώς. Στα πλαίσια της εργασίας αυτής, οι τιμές που δίνονται για την εκκίνηση της κάθε διαδικασίας οι τιμές δίνονται στατικά. Ο υπολογισμός, όμως, των τιμών αυτών έγινε με αλγόριθμό υπολογισμού τυχαίων ακολουθιών bit, ώστε να προσεγγίζει ένα πραγματικό περιβάλλον εφαρμογής του Hummingbird. Επίσης, όποια στοιχεία χρειάζονται στην διαδικασία κρυπτογράφησης και αποκρυπτογράφησης, αλλά υπολογίζονται στην διαδικασία αρχικοποίησης έχουν μεταφερθεί και αυτά ως στατικά ορίσματα μετά την ολοκλήρωση της αρχικοποίησης. 5.1 Υλοποίηση Διαδικασίας Αρχικοποίησης Η διαδικασία αρχικοποίησης είναι το πρώτο βήμα του αλγορίθμου που βοηθάει στην ισχυρότητα της κρυπτογράφησης μπερδεύοντας τα ήδη τυχαία διανύσματα bit που αρχικοποιούν τους καταχωρητές και χρησιμοποιούνται στην κρυπτογράφηση. Η διαδικασία αρχικοποίησης ακολουθεί την λογική της διαδικασίας κρυπτογράφησης με την διαφορά ότι η πρώτη επεξεργάζεται και τροποποιεί το περιεχόμενο των καταχωρητών ενώ η δεύτερη εφαρμόζει την ίδια διαδικασία στο αρχικό μήνυμα. Ουσιαστικά πρόκειται για κρυπτογράφηση των αρχικών τυχαίων τιμών που δίνονται στους καταχωρητές, ώστε να μπερδευτεί περισσότερο το μήνυμα που θα χρησιμοποιήσει και τους καταχωρητές αυτούς στην εφαρμογής της διαδικασίας κρυπτογράφησης και να είναι δυσκολότερο να αποκρυπτογραφηθεί από κάποιον επιτιθέμενο στην επικοινωνία. Επειδή, όμως, όπως προαναφέρθηκε είναι αναγκαίο να είναι γνωστό το περιεχόμενο των καταχωρητών για την εφαρμογή της διαδικασίας κρυπτογράφησης, αφού συμμετέχουν σε αυτήν, είναι λογικό να πρέπει να γνωστοποιηθούν με ασφάλεια και στον παραλήπτη του κρυπτογραφημένου μηνύματος, πιθανώς με τον ίδιο τρόπο που έχει γίνει και η ανταλλαγή του κοινού κλειδιού της επικοινωνίας μεταξύ αποστολέα και παραλήπτη, διότι θα τα χρειαστεί για την αποκρυπτογράφηση του μηνύματος. Χωρίς το περιεχόμενο των καταχωρητών μετά την διαδικασία αρχικοποίησης δεν μπορεί να εφαρμοστεί η αποκρυπτογράφηση. 49

63 Το γενικό σχήμα, το λεγόμενο RTL Schematic του Xilinx, της διαδικασίας αρχικοποίησης που δείχνει μόνο τις εισόδους και τις εξόδους, συνοψίζοντας όλα τα επιμέρους στοιχεία κυκλώματος που περιέχει σε ένα κουτί φαίνεται στην Εικόνα 26. Εικόνα 26 RTL Schematic Initialization Process Το γενικό σχήμα ως κύκλωμα που απεικονίζει το κύκλωμα του παραπάνω κουτιού παρουσιάζεται στην Εικόνα 27, που ακολουθεί. Εικόνα 27 Κύκλωμα Initialization Process 50

64 Η διαδικασία αρχικοποίησης δέχεται ως είσοδο 4 τυχαία 16bit διανύσματα για την αρχικοποίηση των καταχωρητών κατά της εκκίνηση της διαδικασίας, το κλειδί κρυπτογράφησης του αλγορίθμου με μέγεθος 256bit και παράγει ως έξοδο 5 νέα 16bit διανύσματα, 4 για τους καταχωρητές και ένα ως αρχική τιμή για τον LFSR της κρυπτογράφησης. Συγκεκριμένα στο κύκλωμα που υλοποιήθηκε οι είσοδοι που αναφέρθηκαν δίνονται στατικά, ενώ αλλάζουν ανάλογα με την εκάστοτε ανάγκη με χειροκίνητη αλλαγή στον κώδικα του αντίστοιχου στοιχείο για την εφαρμογή του επιθυμητού παραδείγματος. Οι τιμές που αλλάζουν στα testbench είναι η επιλογή των αρχικών τιμών των καταχωρητών ανάμεσα στο αρχικό διάνυσμα και στην νέα τιμή που υπολογίστηκε κατά το πρώτο τρέξιμο της διαδικασίας, το ρολόι των καταχωρητών για αποθήκευση των νέων τιμών, το reset των καταχωρητών για να αδειάσουν όταν εφαρμοστεί ξανά η αρχικοποίηση. Οι αλλαγές αυτές θα γίνουν εμφανείς στα παραδείγματα εκτέλεσης του αλγορίθμου, σε επόμενη υποενότητα του κεφαλαίου. Στην συνέχεια ακολουθεί αναλυτική παρουσίαση όλων των components διαδικασίας αρχικοποίησης, που φαίνονται και στην Εικόνα 27, αλλά και στο εσωτερικό αυτών Στοιχείο κυκλώματος: Key256Constant Το στοιχείο αυτό, είναι ίδιο για την διαδικασίας αρχικοποίησης, κρυπτογράφησης αλλά και αποκρυπτογράφησης. Περιέχει, απλά την απόδοση μιας τιμής σε μία μεταβλητή που λειτουργεί και σαν έξοδος. Η μεταβλητή αυτή αποτελεί λογικό διάνυσμα 256bit. Ανάλογα με το παράδειγμα που θα εφαρμοστεί η τιμή του στοιχείου αυτού πρέπει να αλλάζει χειροκίνητα. Η παρουσίαση του κώδικά του, στην εργασία αυτή, παραλείπεται Στοιχείο κυκλώματος: SplitKey256 Το στοιχείο αυτό, είναι ίδιο για την διαδικασίας αρχικοποίησης, κρυπτογράφησης αλλά και αποκρυπτογράφησης. Δέχεται ως είσοδο το 256 bit διάνυσμα του Key256Constant και το διαχωρίζει σε 4 ισομεγέθη διανύσματα των 64 bit. Τα 4 αυτά λογικά διανύσματα 64bit το καθένα, αποτελούν και την έξοδο του στοιχείου. Ο κώδικας του στοιχείου είναι σχετικά απλός και φαίνεται στην Εικόνα 28 που ακολουθεί. 51

65 Εικόνα 28 Κώδικας SpliKey Στοιχείο κυκλώματος: noncerand Το στοιχείο αυτό περιέχει τις 4 αρχικές τυχαίες τιμές των καταχωρητών, που δίνονται για την εκκίνηση της αρχικοποίησης. Οι τιμές εκχωρούνται σε 4 λογικά διανύσματα 16bit το καθένα. Ανάλογα με το παράδειγμα που θα εφαρμοστεί η τιμή του στοιχείου αυτού πρέπει να αλλάζει χειροκίνητα. Η παρουσίαση του κώδικά του, στην εργασία αυτή, παραλείπεται Στοιχείο κυκλώματος: Mux16bit Αποτελεί την υλοποίηση ενός 16bit πολυπλέκτη 2 σε 1, δίνει δηλαδή ως έξοδο την επιλογή ενός από 2 λογικά διανύσματα 16bit, τα οποία δέχεται ως είσοδο. Είσοδος του στοιχείου αυτού επίσης είναι και το select, το οποίο ανάλογα με την τιμή του, 1 ή 0, διευκρινίζει την επιλογή του 1 ου ή 2 ου αντίστοιχα διανύσματος. Το κύκλωμα αυτό αποτελείται με την σειρά του από κάποια στοιχεία κυκλώματος, όπως φαίνεται στην Εικόνα

66 Εικόνα 29 Κύκλωμα Mux16bit Το στοιχείο κυκλώματος, Mux16bit, χρησιμοποιείται και στην διαδικασία αρχικοποίησης και στην κρυπτογράφηση και την αποκρυπτογράφηση. Η κάθε μία από τις διαδικασίες αυτές περιέχει 4 πολυπλέκτες 16bit, έναν για την επιλογή τιμής κάθε καταχωρητή Στοιχείο κυκλώματος: Split16bit Το στοιχείο αυτό, δέχεται ως είσοδο ένα 16bit λογικό διάνυσμα και παράγει ως έξοδο 16 μεμονωμένα bit, τα αντίστοιχα του διανύσματος εισόδου. Ο κώδικας είναι απλός και παραλείπεται. Ο πολυπλέκτης 16bit περιέχει 2 στοιχεία κυκλώματος Split16bit, για τον διαχωρισμό σε 1 ξεχωριστό bit των 2 διανυσμάτων 16bit που δέχεται ως είσοδο. 53

67 Στοιχείο κυκλώματος: Mux2to1 Αποτελεί το απλό κύκλωμα 1bit ενός πολυπλέκτη 2 σε 1. Ο πολυπλέκτης αυτός δέχεται ως είσοδο 2bit δεδομένων και 1bit select που καθορίζει ποιο από τα 2 bit θα βγει στην έξοδο. Το κύκλωμα του στοιχείου αυτού φαίνεται στην Εικόνα 30. Εικόνα 30 Κύκλωμα Mux2to1 Ο πολυπλέκτης 16bit περιέχει 16 στοιχεία κυκλώματος Mux2to1, για τον υπολογισμό καθενός bit εξόδου από τις 16 εισόδους, ξεχωριστά. Το select είναι κοινό και για τα 16 Mux2to Στοιχείο κυκλώματος: Combine16bit Το στοιχείο αυτό, έχει ως είσοδο 16 μεμονωμένα bit και παράγει ως έξοδο τον συνδυασμό αυτών σε ένα λογικό διάνυσμα 16bit, τα αντίστοιχα του διανύσματος εισόδου. Ο κώδικας είναι απλός και παραλείπεται. Ο πολυπλέκτης 16bit, Mux16bit, περιέχει 1 στοιχείο κυκλώματος Combine16bit, για τον συνδυασμό σε 1 ενιαίο διάνυσμα 16bit των 16 μεμονωμένων εξόδων των στοιχείων Mux2to Στοιχείο κυκλώματος: DFF16bit Αποτελεί την υλοποίηση ενός D flip flop 16bit, που χρησιμοποιείται ως καταχωρητής αποθήκευσης των τιμών των 4 καταχωρητών του αλγορίθμου. Το στοιχείο αυτό δέχεται στην είσοδο του ένα διάνυσμα 16 bit και εγγράφει την τιμή στο flip flop όταν το ρολόι του πηγαίνει από 0 σε 1, δίνοντας παράλληλα και ως έξοδο την τιμή που «θα θυμάται» το flip flop. Εκτός από τις εισόδους αυτές το DFF16bit έχει ως είσοδο και το reset, που αδειάζει τις θέσεις των καταχωρητών συνεπώς το flip flop διαγράφει την μνήμη του. Το κύκλωμα του DFF16bit, είναι κοινό για τις διαδικασίες αρχικοποίησης, κρυπτογράφησης και αποκρυπτογράφησης, και φαίνεται στην Εικόνα

68 Εικόνα 31 Κύκλωμα DFF16bit Όπως φαίνεται από την παραπάνω εικόνα, το DFF16bit αποτελείται από επιμέρους στοιχεία κυκλώματος, δύο από τα οποία αναλύθηκαν σε προηγούμενες υποενότητες. Αυτά είναι το Split16bit που χρησιμοποιείται για να διαχωρίσει το αρχικό διάνυσμα 16bit σε μεμονωμένα bit και το Combine16bit που ενώνει τα μεμονωμένα bit των εξόδων των 1 bit D flip flop που αναλύονται στην συνέχεια Στοιχείο κυκλώματος: DFF Αποτελεί το απλό κύκλωμα ενός D flip flop, που δέχεται 1bit εισόδου και ανάλογα με το ρολόι προωθεί το bit αυτό στην έξοδο η το απορρίπτει. Εάν το ρολόι πηγαίνει από 0 σε 1 έχουμε προώθηση του bit εισόδου, ενώ εάν το ρολόι πηγαίνει από 1 σε 0 τότε το bit εισόδου απορρίπτεται. Τα D flip flop, θεωρούνται κυκλώματα με μνήμη, δηλαδή θυμούνται την προηγούμενη τιμή που είχαν συνεπώς αυτός είναι και ο λόγος που χρησιμοποιούνται ως καταχωρητές στην συγκεκριμένη υλοποίηση του αλγορίθμου. Το κύκλωμα του D flip flop που χρησιμοποιήθηκε στην εργασία αυτή παρουσιάζεται στην Εικόνα

69 Εικόνα 32 Κώδικας DFF Το D flip flop 16bit, DFF16bit, περιέχει 16 στοιχεία κυκλώματος DFF, για τον υπολογισμό καθενός bit εξόδου από τις 16 εισόδους, ξεχωριστά. Το ρολόι και το reset είναι κοινά και για τα 16 DFF Στοιχείο κυκλώματος: InitializationPrBasic Το στοιχείο αυτό, αποτελεί την βασική υλοποίηση της διαδικασίας αρχικοποίησης. Το κύκλωμα δέχεται τις τιμές των καταχωρητών και το κλειδί διαχωρισμένο σε 4 διανύσματα των 64bit. Συμφώνα με το διάγραμμα της Εικόνα 14(σελίδα 28) στο στοιχείο αυτό, έχουμε την εφαρμογή της modulo 2 16 πρόσθεσης και της διαδικασίας του block cipher κομματιού της κρυπτογράφησης στο περιεχόμενο των καταχωρητών, πράξεις που υλοποιούνται σε επιμέρους στοιχεία κυκλώματος. Ως έξοδος τους στοιχείου έχουμε τις 4 νέες τιμές των καταχωρητών και το διάνυσμα για την αρχικοποίηση του LFSR. Το κύκλωμα, InitializationPrBasic, παρουσιάζεται στο σχήμα της Εικόνα

70 Εικόνα 33 Κύκλωμα InitializationPrBasic Τα επιμέρους στοιχεία του InitializationPrBasic αναλύονται στην συνέχεια εκτός από το EnBlockCipherAll. Το στοιχείο EnBlockCipherAll, υλοποιεί την διαδικασία εφαρμογής της κρυπτογράφησης block cipher του αλγορίθμου. Όπως φαίνεται και στο διάγραμμα της αρχικοποίησης στην Εικόνα 14, έχουμε την χρήση 4 στοιχείων του κυκλώματος αυτού, δηλαδή της εφαρμογής του block cipher. Η περαιτέρω ανάλυση του συγκεκριμένου κυκλώματος και των επιμέρους στοιχείων κυκλώματος που περιέχει θα γίνει σε ξεχωριστή ενότητα καθώς αποτελεί σημαντικό τμήμα του αλγορίθμου Στοιχείο κυκλώματος: FA16bit Αποτελεί την υλοποίηση ενός πλήρους αθροιστή 16bit, ο οποίος χρησιμοποιείται για να εφαρμοστεί η modulo 2 16 πρόσθεση. Ο αθροιστής δέχεται στην είσοδό του δύο λογικά διανύσματα 16bit και βγάζει στην έξοδο το άθροισμα τους και το κρατούμενο, απορρίπτοντάς το. Ουσιαστικά αυτή είναι και η λογική πίσω από την πρόσθεση modulo Το κύκλωμα του αθροιστή, FA16bit, παρουσιάζεται στο σχήμα της Εικόνα

71 Εικόνα 34 Κύκλωμα FA16bit Το κύκλωμα αυτό χρησιμοποιείται και στην διαδικασία αρχικοποίησης και στην κρυπτογράφηση, αλλά και σε σημεία της αποκρυπτογράφησης, όπου χρειάζεται. Αλλάζει, απλά, το πλήθος των προσθέσεων που χρειάζεται η κάθε διαδικασία. Στην συγκεκριμένη περίπτωση που περιγράφεται, δηλαδή της διαδικασίας αρχικοποίησης, έχουμε την εφαρμογή 6 προσθέσεων modulo 2 16, συνεπώς χρησιμοποιούνται 6 στοιχεία FA16bit. Όπως φαίνεται από την Εικόνα 34, το στοιχείο κυκλώματος FA16bit αποτελείται από μικρότερα στοιχεία κυκλώματος, κάποια από τα οποία έχουν ήδη αναλυθεί. Περιέχει 2 στοιχεία κυκλώματος Split16bit (υποενότητα ), για τον διαχωρισμό σε 1 ξεχωριστό bit των 2 διανυσμάτων 16bit που δέχεται ως είσοδο και 1 στοιχείο Combine16bit (υποενότητα ), για τον συνδυασμό σε 1 ενιαίο διάνυσμα 16bit των 16 μεμονωμένων εξόδων των στοιχείων fulladder, που είναι το νέο στοιχείο του FA16bit που θα αναλυθεί στη συνέχεια. 58

72 Στοιχείο κυκλώματος: fulladder Αποτελεί το απλό κύκλωμα ενός πλήρους αθροιστή 2bit, δηλαδή το κύκλωμα που δέχεται 2bit δεδομένων και 1bit κρατούμενου για είσοδο και βγάζει στην έξοδο το άθροισμα αυτών των 3bit καθώς και το νέο κρατούμενο που προέκυψε από την πράξη αυτή. Η σχηματική απεικόνιση του κυκλώματος του στοιχείου αυτού φαίνεται στο σχήμα της Εικόνα 35. Εικόνα 35 Κύκλωμα fulladder Ο πλήρης αθροιστής 16bit, FA16bit, περιλαμβάνει 16 στοιχεία fulladder για την άθροιση κάθε δυάδας bit μεμονωμένα από τα διανύσματα 16bit εισόδου Στοιχείο κυκλώματος: AssignC0 Πρόκειται για το στοιχείο που αναθέτει στατικά το πρώτο κρατούμενο στον πρώτο από τους 16 αθροιστές για να ξεκινήσει ο υπολογισμός του αθροίσματος. Ο κώδικας του κυκλώματος παραλείπεται Στοιχείο κυκλώματος: InvalidCarry6in Το στοιχείο αυτό δέχεται τα 6 bit κρατούμενα από την εφαρμογή των 6 προσθέσεων, FA16bit, του συνολικού κυκλώματος InitializationPrBasic. Δεν πραγματοποιεί καμία επεξεργασία των εισόδων και δεν παράγει καμία έξοδο. Ουσιαστικά πρόκειται για ένα βοηθητικό στοιχείο ώστε να μην είναι εκτεθειμένες οι έξοδοι των κρατουμένων του FA16bit. 5.2 Υλοποίηση Διαδικασίας Κρυπτογράφησης Η διαδικασία κρυπτογράφησης εκτελείται αφού ολοκληρωθεί η διαδικασία αρχικοποίησης διότι χρειάζεται τα αποτελέσματα που βγάζει ως έξοδο η αρχικοποίηση για να ξεκινήσει να εκτελείται. Τα περισσότερα από τα κυκλώματα της κρυπτογράφησης είναι κοινά με την διαδικασία αρχικοποίησης αλλά υπάρχουν και κάποια που διαφέρουν. Συνεπώς τα νέα κυκλώματα θα αναλυθούν πλήρως όπως στην 59

73 διαδικασία αρχικοποίησης, ενώ όσα έχουν ήδη αναλυθεί θα αναφερθούν απλώς για τον τρόπο χρήσης τους στην διαδικασία κρυπτογράφησης. Το γενικό σχήμα, το λεγόμενο RTL Schematic του Xilinx, της διαδικασίας κρυπτογράφησης που δείχνει μόνο τις εισόδους και τις εξόδους, συνοψίζοντας όλα τα επιμέρους στοιχεία κυκλώματος που περιέχει σε ένα κουτί φαίνεται στην Εικόνα 36. Εικόνα 36 RTL Schematic Encryption Process Το γενικό σχήμα ως κύκλωμα που απεικονίζει το κύκλωμα του παραπάνω κουτιού παρουσιάζεται στην εικόνα Εικόνα 37, που ακολουθεί. Εικόνα 37 Κύκλωμα Encryption Process 60

74 Η διαδικασία κρυπτογράφησης δέχεται ως είσοδο το περιεχόμενο των 4 καταχωρητών που υπολογίστηκαν στην διαδικασία αρχικοποίησης, δηλαδή 4 διανύσματα 16bit το καθένα, τα οποία χρησιμοποιούνται για την αρχικοποίηση των καταχωρητών κατά της εκκίνηση της διαδικασίας, καθώς και την 5 η έξοδο της αρχικοποίησης που δίνει το διάνυσμα αρχικοποίησης του LFSR και χρησιμοποιείται στην διαδικασία κρυπτογράφησης. Επίσης είσοδος της διαδικασίας αυτής αποτελεί φυσικά το κλειδί κρυπτογράφησης του αλγορίθμου με μέγεθος 256bit και το αρχικό μήνυμα που προορίζεται για κρυπτογράφηση. Εάν το μήνυμα είναι μεγαλύτερο από 16bit, μέγεθος που κρυπτογραφεί ο αλγόριθμος σε κάθε τρέξιμο τότε πρέπει το μήνυμα να διαχωριστεί σε διανύσματα των 16bit και να ενωθεί κατά την έξοδο του ως κρυπτογραφημένο. Ως έξοδος, από την συγκεκριμένη διαδικασία, παράγονται 5 νέα 16bit διανύσματα. Τα 4 περιέχουν τις νέες τιμές των καταχωρητών για την επόμενη κρυπτογράφηση, τα οποία δεν εμφανίζονται στα τελικά αποτελέσματα της συγκεκριμένης υλοποίησης και το τελευταίο είναι το 16bit τμήμα του αρχικού μηνύματος που κρυπτογραφήθηκε. Επίσης στις εξόδους της συγκεκριμένης υλοποίησης έχουμε να εμφανίζεται και το αρχικό μήνυμα, για να έχουμε την δυάδα αρχικό και κρυπτογραφημένο μήνυμα στα αποτελέσματα. Συγκεκριμένα, όπως αναφέρθηκε και στην αρχή του συγκεκριμένου κεφαλαίου, στο κύκλωμα που υλοποιήθηκε οι τιμές των εισόδων δίνονται στατικά, ενώ μπορούν να αλλάξουν ανάλογα με την εκάστοτε ανάγκη για την εφαρμογή του επιθυμητού παραδείγματος. Η αλλαγή αυτή πρέπει να γίνει στον κώδικα του αντίστοιχου στοιχείο. Οι τιμές που αλλάζουν στα testbench είναι το select για την επιλογή των αρχικών τιμών των καταχωρητών ανάμεσα στο αρχικό διάνυσμα και στην νέα τιμή που υπολογίστηκε κατά το κάθε τρέξιμο της διαδικασίας, το select για την επιλογή της αρχικής τιμής του LFSR και έπειτα της νέας υπολογισθέντας τιμής για κάθε στάδιο που προχωράει ο LFSR μέσα στην κρυπτογράφηση, το ρολόι των καταχωρητών για αποθήκευση των νέων τιμών, το reset των καταχωρητών για να αδειάσουν όταν εφαρμοστεί ξανά για πρώτη φορά η κρυπτογράφηση μετά από εφαρμογή νέας αρχικοποίησης. Οι αλλαγές των τιμών αυτών στα testbench θα γίνουν εμφανείς στα παραδείγματα εκτέλεσης του αλγορίθμου, σε επόμενη υποενότητα του κεφαλαίου. Εάν συγκρίνουμε τα δύο κυκλώματα της αρχικοποίησης και της κρυπτογράφησης μπορούμε να δούμε πολλές ομοιότητες, αλλά και κάποιες διαφορές. Τα στοιχεία του κυκλώματος της αρχικοποίησης που χρησιμοποιούνται και στην κρυπτογράφηση είναι τα εξής: 61

75 Key256Constant (υποενότητα 5.1.1), για την απόδοση της στατικής τιμής του κλειδιού μεγέθους 256 στην μεταβλητή εξόδου. SplitKey256 (υποενότητα 5.1.2), για τον διαχωρισμό του 256bit κλειδιού σε 4 υποκλειδιά 64bit το καθένα. Mux16bit (υποενότητα 5.1.4) και των επιμέρους κυκλωμάτων που αυτό περιέχει, πολυπλέκτης για την επιλογή της σωστής τιμής των καταχωρητών ανάλογα με το στάδιο στο τρέξιμο του αλγορίθμου. Έχουμε, όπως και στην αρχικοποίηση, 4 πολυπλέκτες 16bit ώστε να διαλέγουν την αρχική ή την νέα τιμή για κάθε καταχωρητή ξεχωριστά. Επίσης στην διαδικασία κρυπτογράφησης, έχουμε έναν ακόμη πολυπλέκτη 16bit που χρησιμοποιείται για την επιλογή της αρχικής τιμής ή της τιμής του επόμενου σταδίου για τον LFSR. DFF16bit (υποενότητα 5.1.5) και των επιμέρους κυκλωμάτων που αυτό περιέχει, για την υλοποίηση των καταχωρητών του αλγορίθμου και την αποθήκευση της επιλεγμένης τιμής για το κάθε στάδιο του αλγορίθμου που προκύπτει από τον πολυπλέκτη, Mux16bit. Έχουμε, όπως και στην αρχικοποίηση, 4 καταχωρητές flip flop 16bit για την αναπαράσταση του κάθε καταχωρητή. Οι διαφορές θα γίνουν περισσότερο εμφανείς στην συνέχεια που θα παρουσιαστεί το κάθε στοιχείο της κρυπτογράφησης αναλυτικότερα Στοιχείο κυκλώματος: RsiInitializationPr Το στοιχείο αυτό, όπως και το noncerand της διαδικασίας αρχικοποίησης, δίνει τις αρχικές τιμές στους 4 καταχωρητές για την εκκίνηση της διαδικασίας κρυπτογράφησης. Οι τιμές προέρχονται από τις εξόδους της διαδικασίας αρχικοποίησης και εκχωρούνται σε 4 λογικά διανύσματα 16bit το καθένα. Ανάλογα με το παράδειγμα που θα εφαρμοστεί η τιμή του στοιχείου αυτού πρέπει να αλλάζει χειροκίνητα, αφού πρώτα εκτελεστεί η διαδικασία αρχικοποίησης. Η παρουσίαση του κώδικά του παραλείπεται Στοιχείο κυκλώματος: TV3Constant Το στοιχείο αυτό, δίνει την αρχική τιμή στον LFSR, ώστε να προχωρήσει στο επόμενο στάδιο και να δώσει την τιμή του στο σημείο της κρυπτογράφησης που χρειάζεται. Ως είσοδο και έξοδο του στοιχείου έχουμε το λογικό 16bit διάνυσμα που βγαίνει ως αποτέλεσμα από την διαδικασία αρχικοποίησης. Ανάλογα με το παράδειγμα που θα εφαρμοστεί η τιμή του στοιχείου αυτού πρέπει να αλλάζει χειροκίνητα, αφού πρώτα εκτελεστεί η διαδικασία αρχικοποίησης. Η παρουσίαση του κώδικά του παραλείπεται. 62

76 5.2.3 Στοιχείο κυκλώματος: LFSRstage Αποτελεί την υλοποίηση του LFSR και συγκεκριμένα του Galois LFSR, όπως διευκρινίζεται ότι περιέχει ο Hummingbird. Ουσιαστικά το κύκλωμα αυτό δέχεται ένα λογικό διάνυσμα 16bit εφαρμόζει κάποιες πράξεις xor και μεταθέσεις μεταξύ κάποιον συγκεκριμένων bit του διανύσματος, που δίνονται από το χαρακτηριστικό πολυώνυμο του LFSR, και έπειτα δίνει το νέο διάνυσμα που προέκυψε ως έξοδο. Το κύκλωμα του LFSR περιέχει και επιμέρους στοιχεία κυκλώματος, όπως φαίνεται και στην εικόνα Εικόνα 38. Εικόνα 38 Κύκλωμα LFSRstage Τα επιμέρους στοιχεία που χρησιμοποιούνται στον LFSR, έχουν ήδη αναλυθεί και είναι το Split16bit που χρησιμοποιείται για να διαχωρίσει το αρχικό διάνυσμα 16bit σε μεμονωμένα bit και το Combine16bit που ενώνει τα μεμονωμένα bit μετά την εφαρμογή των xor και των μεταθέσεων. Επίσης χρησιμοποιούνται 6 πύλες xor Στοιχείο κυκλώματος: Plaintextm16Constant Το στοιχείο αυτό, αποτελεί το αρχικό μήνυμα που θα κρυπτογραφηθεί. Περιέχει, απλά την απόδοση της τιμής του μηνύματος σε μία μεταβλητή που λειτουργεί και σαν έξοδος. Στην συγκεκριμένη υλοποίηση, η μεταβλητή αυτή αποτελεί λογικό διάνυσμα 16bit, διότι ο αλγόριθμος Hummingbird επεξεργάζεται κάθε φορά 16bit. Θα μπορούσαμε να έχουμε και περισσότερα από 16bit μηνύματος, απλά θα χρειαζόμασταν ένα κύκλωμα που θα το διαχώριζε σε 16bit τμήματα. Η λειτουργία αυτή είναι εκτός της παρούσας εργασίας. Ανάλογα με το παράδειγμα που θα εφαρμοστεί η τιμή του στοιχείου αυτού πρέπει να αλλάζει χειροκίνητα. Η παρουσίαση του κώδικά του, στην εργασία αυτή, παραλείπεται. 63

77 5.2.5 Στοιχείο κυκλώματος: EncryptionPrBasic Το στοιχείο αυτό, αποτελεί την βασική υλοποίηση της διαδικασίας κρυπτογράφησης. Το κύκλωμα δέχεται τις τιμές των καταχωρητών, την τιμή του εκάστοτε σταδίου του LFSR, το αρχικό μήνυμα σε διάνυσμα των 16bit και το κλειδί διαχωρισμένο σε 4 διανύσματα των 64bit. Συμφώνα με το διάγραμμα της Εικόνα 15 στο στοιχείο αυτό, έχουμε την εφαρμογή της modulo 2 16 πρόσθεσης και της διαδικασίας του block cipher κρυπτογράφησης στο αρχικό μήνυμα και τους καταχωρητές, πράξεις που υλοποιούνται σε επιμέρους στοιχεία κυκλώματος. Ως έξοδος τους στοιχείου έχουμε τις 4 νέες τιμές των καταχωρητών που εγγράφονται στους καταχωρητές για την επόμενη κρυπτογράφηση και το τελικό κρυπτογραφημένο μήνυμα σε διάνυσμα 16bit. Το κύκλωμα του στοιχείο EncryptionPrBasic, παρουσιάζεται στο σχήμα της Εικόνα 39. Εικόνα 39 Κύκλωμα EncryptionPrBasic Τα βασικά στοιχεία κυκλώματος που περιέχει το EncryptionPrBasic είναι το στοιχείο FA16bit, με τα επιμέρους κυκλώματα του, που έχει ήδη αναλυθεί σε προηγούμενη υποενότητα της διαδικασίας αρχικοποίησης και το EnBlockCipherAll, που όπως αναφέρθηκε υλοποιεί την block cipher κρυπτογράφηση και θα αναλυθεί σε ξεχωριστή υποενότητα. Το διάγραμμα της κρυπτογράφησης στην Εικόνα 15 (σελίδα 64

78 31),δείχνει την χρήση 4 στοιχείων του κυκλώματος EnBlockCipherAll, δηλαδή της εφαρμογής της block cipher κρυπτογράφησης. Στο στοιχείο EncryptionPrBasic, της διαδικασίας κρυπτογράφησης, έχουμε για την κρυπτογράφηση την εφαρμογή 4 προσθέσεων modulo 2 16, συνεπώς χρησιμοποιούνται 4 στοιχεία FA16bit και για την ανανέωση των καταχωρητών (Internal state update) την εφαρμογή 7 προσθέσεων modulo 2 16 άρα την χρήση 7 στοιχείων FA16bit. Συνολικά, έχουμε 11 προσθέσεις modulo 2 16 στην διαδικασία κρυπτογράφησης και αυτός είναι ο λόγος της ανάγκης για τα 2 νέα στοιχεία κυκλώματος που θα αναλυθούν στην συνέχεια Στοιχείο κυκλώματος: InvalidCarry4in Το στοιχείο αυτό, δέχεται τα 4 bit από τα κρατούμενα της εφαρμογής των 4 προσθέσεων, FA16bit, της κρυπτογράφησης του αρχικού μηνύματος που προαναφέρθηκαν. Δεν πραγματοποιεί καμία επεξεργασία των εισόδων και δεν παράγει καμία έξοδο. Ουσιαστικά πρόκειται για ένα βοηθητικό στοιχείο ώστε να μην είναι εκτεθειμένες οι έξοδοι των κρατουμένων του FA16bit Στοιχείο κυκλώματος: InvalidCarry7in Το στοιχείο αυτό, δέχεται τα 7 bit από τα κρατούμενα της εφαρμογής των 7 προσθέσεων, FA16bit, της ανανέωσης των καταχωρητών που προαναφέρθηκαν. Δεν πραγματοποιεί καμία επεξεργασία των εισόδων και δεν παράγει καμία έξοδο. Ουσιαστικά πρόκειται για ένα βοηθητικό στοιχείο ώστε να μην είναι εκτεθειμένες οι έξοδοι των κρατουμένων του FA16bit. 5.3 Υλοποίηση Διαδικασίας Αποκρυπτογράφησης Η διαδικασία αποκρυπτογράφησης αποτελεί την αντίστροφη διαδικασία της κρυπτογράφησης και όπως αναφέρθηκε και στην ενότητα 5.1, απαιτεί την γνώση των αποτελεσμάτων της διαδικασίας αρχικοποίησης για την εκτέλεσή της. Συνεπώς απαιτείται ασφαλής τρόπος ανταλλαγής των δεδομένων αυτών μεταξύ αποστολέα και παραλήπτη, όπως και ασφαλής ανταλλαγή έχει υπάρξει και με το κλειδί κρυπτογράφησης και αποκρυπτογράφησης, διότι είναι κοινό. Στην συγκεκριμένη υλοποίηση της διαδικασίας αποκρυπτογράφησης θεωρείται δεδομένη η γνώση των αποτελεσμάτων της διαδικασίας αρχικοποίησης, επομένως οι τιμές αυτές δίνονται στατικά όπως και οι υπόλοιπες είσοδοι για την εκκίνηση του αλγορίθμου, ομοίως με τις διαδικασίες αρχικοποίησης και κρυπτογράφησης. Το γενικό σχήμα, το λεγόμενο RTL Schematic του Xilinx, της διαδικασίας κρυπτογράφησης που δείχνει μόνο τις εισόδους και τις εξόδους, συνοψίζοντας όλα τα επιμέρους στοιχεία κυκλώματος που περιέχει σε ένα κουτί φαίνεται στην Εικόνα

79 Εικόνα 40 RTL Schematic Decryption Process Το γενικό σχήμα ως κύκλωμα που απεικονίζει το κύκλωμα του παραπάνω κουτιού παρουσιάζεται στην εικόνα Εικόνα 41, που ακολουθεί. Εικόνα 41 Κύκλωμα Decryption Process 66

80 Παρατηρώντας την Εικόνα 41 και συγκρίνοντας την με την αντίστοιχη της κρυπτογράφησης μπορούμε να διακρίνουμε πολλές ομοιότητες στα κυκλώματα τους. Η παρατήρηση αυτή είναι λογική εφόσον, όπως ήδη αναφέρθηκε, η διαδικασία αποκρυπτογράφησης είναι αντίθετη της κρυπτογράφησης. Αυτό σημαίνει ότι τα κυκλώματα τους ακολουθούν την ίδια λογική όμως έχουν κατασκευαστεί με την αντίστροφη φορά εκτέλεσης και περιέχουν τις αντίστροφες λογικές πράξεις. Πιο κατανοητά θα γίνουν τα παραπάνω στην πορεία του κεφαλαίου με την ανάλυση των κυκλωμάτων αποκρυπτογράφησης και με την σύγκριση που μπορεί να κάνει ο αναγνώστης στα αντίστοιχα κυκλώματα της κρυπτογράφησης. Λόγω της κοινής λογικής των διαδικασιών, είναι προφανές ότι και οι είσοδοι και έξοδοι θα είναι όμοιες. Συνεπώς η υλοποίηση που πραγματοποιήθηκε, όπως και στην διαδικασία κρυπτογράφησης, δέχεται ως είσοδο το περιεχόμενο των 4 καταχωρητών που υπολογίστηκαν στην διαδικασία αρχικοποίησης, δηλαδή 4 διανύσματα 16bit το καθένα, τα οποία χρησιμοποιούνται για την αρχικοποίηση των καταχωρητών κατά της εκκίνηση της διαδικασίας, καθώς και την 5 η έξοδο της αρχικοποίησης που δίνει το διάνυσμα αρχικοποίησης του LFSR και χρησιμοποιείται στην διαδικασία αποκρυπτογράφησης. Επίσης είσοδος στην διαδικασία αποτελεί φυσικά το κλειδί κρυπτογράφησης του αλγορίθμου με μέγεθος 256bit και το κρυπτογραφημένο μήνυμα που προορίζεται για αποκρυπτογράφηση και υπολογίστηκε από την διαδικασία κρυπτογράφησης. Εάν το μήνυμα είναι μεγαλύτερο από 16bit, μέγεθος το οποίο αποκρυπτογραφεί ο αλγόριθμος σε κάθε τρέξιμο τότε πρέπει το μήνυμα να διαχωριστεί σε διανύσματα των 16bit και να ενωθεί κατά την έξοδο του ως κρυπτογραφημένο. Ως έξοδος, από την συγκεκριμένη διαδικασία, παράγονται 5 νέα 16bit διανύσματα. Τα 4 περιέχουν τις νέες τιμές των καταχωρητών για την επόμενη κρυπτογράφηση, τα οποία δεν εμφανίζονται στα τελικά αποτελέσματα της συγκεκριμένης υλοποίησης και το τελευταίο είναι το 16bit τμήμα του κρυπτογραφημένου μηνύματος που αποκρυπτογραφήθηκε, δηλαδή το αντίστοιχο αρχικό 16bit τμήμα του μηνύματος. Επίσης στις εξόδους της συγκεκριμένης υλοποίησης έχουμε να εμφανίζεται και το κρυπτογραφημένο μήνυμα, για να έχουμε την δυάδα κρυπτογραφημένο και αρχικό μήνυμα στα αποτελέσματα. Τα κυκλώματα που δίνουν στατικά τις τιμές των εισόδων στην διαδικασία αποκρυπτογράφησης μπορούν να αλλάξουν με χειροκίνητη αλλαγή στον κώδικα του αντίστοιχου στοιχείο, ανάλογα με το εκάστοτε παράδειγμα και τα αποτελέσματα των δύο προηγηθέντων διαδικασιών. Εκτός από τις στατικές τιμές έχουμε και κάποιες τιμές που αλλάζουν στα testbench για να βοηθήσουν τον αλγόριθμο να πραγματοποιήσει τις λειτουργίες του. Αυτές είναι το select για την επιλογή των αρχικών τιμών των 67

81 καταχωρητών ανάμεσα στο αρχικό διάνυσμα και στην νέα τιμή που υπολογίστηκε κατά το κάθε τρέξιμο της διαδικασίας, το select για την επιλογή της αρχικής τιμής του LFSR και έπειτα της νέας υπολογισθέντας τιμής για κάθε στάδιο που προχωράει ο LFSR μέσα στην κρυπτογράφηση, το ρολόι των καταχωρητών για αποθήκευση των νέων τιμών, το reset των καταχωρητών για να αδειάσουν όταν εφαρμοστεί ξανά για πρώτη φορά η κρυπτογράφηση μετά από εφαρμογή νέας αρχικοποίησης. Οι αλλαγές των τιμών αυτών στα testbench θα γίνουν εμφανείς στα παραδείγματα εκτέλεσης του αλγορίθμου, σε επόμενη υποενότητα του κεφαλαίου. Τα στοιχεία του κυκλώματος, που έχουν ήδη αναλυθεί σε προηγούμενες υποενότητες της αρχικοποίησης ή της κρυπτογράφησης, αλλά χρησιμοποιούνται και στην αποκρυπτογράφηση είναι τα εξής: Key256Constant (υποενότητα 5.1.1), για την απόδοση της στατικής τιμής του κλειδιού μεγέθους 256 στην μεταβλητή εξόδου. SplitKey256 (υποενότητα 5.1.2), για τον διαχωρισμό του 256bit κλειδιού σε 4 υποκλειδιά 64bit το καθένα. Mux16bit (υποενότητα 5.1.4) και των επιμέρους κυκλωμάτων που αυτό περιέχει, πολυπλέκτης για την επιλογή της σωστής τιμής των καταχωρητών ανάλογα με το στάδιο στο τρέξιμο του αλγορίθμου. Έχουμε, όπως και στις προηγούμενες δύο διαδικασίες, 4 πολυπλέκτες 16bit ώστε να διαλέγουν την αρχική ή την νέα τιμή για κάθε καταχωρητή ξεχωριστά. Επίσης στην διαδικασία αποκρυπτογράφησης, έχουμε έναν ακόμη πολυπλέκτη 16bit που χρησιμοποιείται για την επιλογή της αρχικής τιμής ή της τιμής του επόμενου σταδίου για τον LFSR. DFF16bit (υποενότητα 5.1.5) και των επιμέρους κυκλωμάτων που αυτό περιέχει, για την υλοποίηση των καταχωρητών του αλγορίθμου και την αποθήκευση της επιλεγμένης τιμής για το κάθε στάδιο του αλγορίθμου που προκύπτει από τον πολυπλέκτη, Mux16bit. Έχουμε, όπως και στην αρχικοποίηση αλλά και την κρυπτογράφηση, 4 καταχωρητές flip flop 16bit για την αναπαράσταση του κάθε καταχωρητή. RsiInitializationPr (υποενότητα 5.2.1), για την αρχικοποίηση των καταχωρητών με τις τιμές που υπολογίστηκαν στην διαδικασία αρχικοποίησης, όπως δίνονται και οι τιμές στην διαδικασία κρυπτογράφησης. TV3Constant (υποενότητα 5.2.2), για την απόδοση της αρχικής τιμής στον LFSR που υπολογίστηκε στην διαδικασία αρχικοποίησης και είναι αναγκαία για την λειτουργία της αποκρυπτογράφησης. 68

82 LFSRstage (υποενότητα 5.2.3), για την μετάβαση του LFSR στο επόμενο στάδιο και τον υπολογισμό της νέας τιμής που χρησιμοποιείται και στην διαδικασία κρυπτογράφησης και αποκρυπτογράφησης. Η διαφορά στα αρχικά κυκλώματα των διαδικασιών κρυπτογράφησης και αποκρυπτογράφησης, που είναι αναγκαίο για την εκκίνηση των δύο διαδικασιών, αποτελεί το στοιχείο κυκλώματος για την ανάθεση του αρχικού και κρυπτογραφημένου μηνύματος αντίστοιχα καθώς και το βασικό κύκλωμα υλοποίησης της κάθε διαδικασίας Στοιχείο κυκλώματος: CipherConstant Το στοιχείο αυτό, αποτελεί το κρυπτογραφημένο μήνυμα που θα αποκρυπτογραφηθεί. Περιέχει, την απλή απόδοση της τιμής του μηνύματος σε μία μεταβλητή η οποία λειτουργεί και σαν έξοδος. Στην συγκεκριμένη υλοποίηση, η μεταβλητή αυτή αποτελεί λογικό διάνυσμα 16bit, διότι ο αλγόριθμος Hummingbird επεξεργάζεται κάθε φορά 16bit. Θα μπορούσαμε να έχουμε και περισσότερα από 16bit μηνύματος, απλά θα χρειαζόμασταν ένα κύκλωμα που θα το διαχώριζε σε 16bit τμήματα, όπως ακριβώς περιγράφηκε και στην διαδικασία κρυπτογράφησης. Ανάλογα με το παράδειγμα που θα εφαρμοστεί η τιμή του στοιχείου αυτού πρέπει να αλλάζει χειροκίνητα, μέσα στο στοιχείο αυτό. Η παρουσίαση του κώδικα του στοιχείου παραλείπεται Στοιχείο κυκλώματος: DecryptionPrBasic Το στοιχείο αυτό, αποτελεί την βασική υλοποίηση της διαδικασίας αποκρυπτογράφησης. Το κύκλωμα δέχεται τις τιμές των καταχωρητών, την τιμή του εκάστοτε σταδίου του LFSR, το κρυπτογραφημένο μήνυμα σε διάνυσμα των 16bit και το κλειδί διαχωρισμένο σε 4 διανύσματα των 64bit. Συμφώνα με το διάγραμμα της Εικόνα 16 στο στοιχείο αυτό, έχουμε την εφαρμογή της modulo 2 16 αφαίρεσης και της διαδικασίας της block cipher αποκρυπτογράφησης στο κρυπτογραφημένο μήνυμα και τους καταχωρητές και της modulo 2 16 πρόσθεσης για τον υπολογισμό των νέων τιμών των καταχωρητών, πράξεις που υλοποιούνται σε επιμέρους στοιχεία κυκλώματος. Ως έξοδος τους στοιχείου έχουμε τις 4 νέες τιμές των καταχωρητών που εγγράφονται στους καταχωρητές για την επόμενη κρυπτογράφηση και το τελικό κρυπτογραφημένο μήνυμα σε διάνυσμα 16bit. Το κύκλωμα του στοιχείο DecryptionPrBasic, παρουσιάζεται στο σχήμα της Εικόνα

83 Εικόνα 42 Κύκλωμα DecryptionPrBasic Κάποια από τα βασικά στοιχεία του DecryptionPrBasic, που έχουν αναλυθεί σε προηγούμενες υποενότητες του κεφαλαίου είναι: FA16bit (υποενότητα ) με τα επιμέρους κυκλώματα του, για τον υπολογισμό των νέων τιμών των καταχωρητών κατά το Internal state update. Για την υλοποίηση της ανανέωσης των τιμών των καταχωρητών έχουμε, όπως και στην κρυπτογράφηση, την εφαρμογή 7 προσθέσεων modulo 2 16 άρα την χρήση 7 στοιχείων FA16bit. InvalidCarry7in (υποενότητα ), για την συλλογή σε ένα στοιχείο των κρατουμένων των 7 προσθέσεων modulo 2 16 που προηγήθηκαν. InvalidCarry4in (υποενότητα ), για την συλλογή σε ένα στοιχείο των κρατουμένων των 4 αφαιρέσεων modulo 2 16 που θα αναλυθούν στην συνέχεια. Σημειώνεται ότι, το DecBlockCipherAll, που υλοποιεί την block cipher αποκρυπτογράφηση, θα αναλυθεί σε ξεχωριστή υποενότητα μαζί με την block cipher κρυπτογράφηση. Στο διάγραμμα της αποκρυπτογράφησης της Εικόνα 16(σελίδα 33), έχουμε την χρήση 4 στοιχείων του κυκλώματος DecBlockCipherAll, δηλαδή της εφαρμογής της block cipher αποκρυπτογράφησης. 70

84 Στοιχείο κυκλώματος: FASub16bit Αποτελεί την υλοποίηση ενός πλήρους αφαιρέτη, με την χρήση ενός πλήρους αθροιστή. Ο αφαιρέτης χρησιμοποιείται για να εφαρμοστεί η modulo 2 16 αφαίρεση. Ο αφαιρέτης δέχεται στην είσοδό του δύο λογικά διανύσματα 16bit και βγάζει στην έξοδο την διαφορά τους και το κρατούμενο, απορρίπτοντάς το. Ουσιαστικά αυτή είναι και η λογική πίσω από την αφαίρεση modulo Το κύκλωμα του αφαιρέτη, FASub16bit, παρουσιάζεται στο σχήμα της Εικόνα 43. Εικόνα 43 Κύκλωμα FASub16bit Για την υλοποίηση της αποκρυπτογράφησης στο βασικό της τμήμα, όπως μπορούμε να δούμε και στο διάγραμμα της Εικόνα 16 έχουμε την εφαρμογή 4 αφαιρέσεων modulo 2 16, συνεπώς στην διαδικασία αποκρυπτογράφησης χρησιμοποιούνται 4 στοιχεία κυκλώματος FASub16bit. Όπως φαίνεται από την εικόνα Εικόνα 43, το στοιχείο FASub16bit αποτελείται από μικρότερα στοιχεία κυκλώματος, κάποια από τα οποία έχουν ήδη αναλυθεί. 71

85 Περιέχει 2 στοιχεία κυκλώματος Split16bit (υποενότητα ), για τον διαχωρισμό σε 1 ξεχωριστό bit των 2 διανυσμάτων 16bit που δέχεται ως είσοδο και 1 στοιχείο Combine16bit (υποενότητα ), για τον συνδυασμό σε 1 ενιαίο διάνυσμα 16bit των 16 μεμονωμένων εξόδων των στοιχείων FASubstractor, που είναι το νέο στοιχείο του FASub16bit που θα αναλυθεί στη συνέχεια Στοιχείο κυκλώματος: FASubstractor Αποτελεί το κύκλωμα ενός πλήρους αφαιρέτη 2bit, με την υλοποίηση του μέσω του απλού κυκλώματος ενός πλήρους αθροιστή. Το κύκλωμα δέχεται 2bit δεδομένων και 1bit κρατούμενου για είσοδο και βγάζει στην έξοδο την διαφορά αυτών των 3bit καθώς και το νέο κρατούμενο που προέκυψε από την πράξη. Η σχηματική απεικόνιση του κυκλώματος του στοιχείου αυτού φαίνεται στο σχήμα της Εικόνα 44. Εικόνα 44 Κύκλωμα FASubstractor Ο πλήρης αφαιρέτης 16bit, FASub16bit, περιλαμβάνει 16 στοιχεία FASubstractor για τον υπολογισμό της διαφοράς κάθε δυάδας bit μεμονωμένα από τα διανύσματα εισόδου των 16bit Στοιχείο κυκλώματος: AssignC0Decr Πρόκειται για το στοιχείο που αναθέτει στατικά το πρώτο κρατούμενο στον πρώτο από τους 16 αφαιρέτες για να ξεκινήσει ο υπολογισμός της διαφοράς. Ο κώδικας του κυκλώματος παραλείπεται. 5.4 Υλοποίηση Κρυπτογράφησης και Αποκρυπτογράφησης Τμήματος Στο υποκεφάλαιο αυτό θα αναλυθεί λεπτομερώς η υλοποίηση της block cipher κρυπτογράφησης και αποκρυπτογράφησης, που αποτελούν τις αντίστροφες διαδικασίες. Ο block cipher στον Hummingbird αποτελεί το βασικό κομμάτι εφαρμογής της κρυπτογράφησης και αποκρυπτογράφησης. Η υλοποίηση του βασίστηκε στην εφαρμογή του σχήματος της Εικόνα 17 για την κρυπτογράφηση και του ίδιου σχήματος με την αντίστροφη φόρα και πράξεις για την αποκρυπτογράφηση. Λόγω αυτού τα 72

86 περισσότερα στοιχεία κυκλώματος των δύο διαδικασιών διαφέρουν αλλά υπάρχουν και κάποια κοινά, διότι κάποιες πράξεις μένουν ίδιες και στην αντίστροφη μορφή τους Στοιχείο κυκλώματος: EnBlockCipherAll (Κρυπτογράφηση Τμήματος 16bit) Το γενικό κύκλωμα της κρυπτογράφησης τμήματος υλοποιείται στο στοιχείο EnBlockCipherAll, το οποίο παρουσιάζεται στην Εικόνα 45. Το κύκλωμα αυτό δέχεται δύο διανύσματα και παράγει μετά από πράξεις μεταξύ αυτών ένα διάνυσμα στην έξοδο. Τα διανύσματα εισόδου έχουν μέγεθος 64bit, που αποτελεί το κλειδί που θα γίνει η κρυπτογράφηση και 16bit, το οποίο είναι το μήνυμα που θα κρυπτογραφηθεί. Το διάνυσμα εξόδου είναι και αυτό 16bit και αποτελεί το κρυπτογραφημένο μήνυμα που αντιστοιχεί σε αυτό που εισήχθη στο κύκλωμα. Εικόνα 45 Κύκλωμα EnBlockCipherAll Όπως ήδη αναφέρθηκε στις υποενότητες της αρχικοποίησης και της κρυπτογράφησης, έχουμε την εφαρμογή 4 κρυπτογραφήσεων τμήματος. Συνεπώς, αυτός είναι ο λόγος που το κλειδί του αλγορίθμου Hummingbird διαχωρίζεται εξ' αρχής σε 4 ισομεγέθη διανύσματα των 64bit το καθένα και ο λόγος που η υλοποίηση της κρυπτογράφησης τμήματος στο στοιχείο EnBlockCipherAll δέχεται στην είσοδο του διάνυσμα 64bit για το κλειδί. 73

87 Το διάνυσμα εισόδου και εξόδου που δίνει το μήνυμα είναι, είτε κάποια τιμή καταχωρητή για την διαδικασία αρχικοποίησης και το αρχικό μήνυμα για την διαδικασία κρυπτογράφησης στην αρχή εκτέλεσης κάθε διαδικασίας, είτε κάποια ενδιάμεση υπολογισμένη τιμή στην πορεία εκτέλεσης της κάθε διαδικασίας πριν ή μετά την εφαρμογή της κάθε μίας από τις 4 κρυπτογραφήσεις τμήματος. Από το σχήμα της Εικόνα 45, γίνεται εμφανής ο διαχωρισμός του κυκλώματος σε επιμέρους στοιχεία, τα οποία αναλύονται στην συνέχεια. Το βασικότερο από αυτά είναι το EnBlockCipherBasic, ενώ κάποια από τα υπόλοιπα του γενικού κυκλώματος κρυπτογράφησης τμήματος, αποτελούν τα επιμέρους στοιχεία που περιέχει το EnBlockCipherBasic Στοιχείο κυκλώματος: SplitKey64 Το στοιχείο αυτό, είναι ίδιο για την διαδικασίας κρυπτογράφησης και αποκρυπτογράφησης. Δέχεται ως είσοδο το 64bit διάνυσμα που παριστάνει το κλειδί και το διαχωρίζει σε 4 ισομεγέθη διανύσματα των 16bit. Τα 4 αυτά λογικά διανύσματα 16bit το καθένα, αποτελούν και την έξοδο του στοιχείου. Ο κώδικας του SplitKey64 είναι σχετικά απλός και φαίνεται στην Εικόνα 46, που ακολουθεί. Εικόνα 46 Κώδικας SplitKey64 74

88 Στοιχείο κυκλώματος: BlockCipherXOR Πρόκειται για την απλή εφαρμογή της λογικής πράξης της αποκλειστικής διάζευξης μεταξύ δύο διανυσμάτων 16 bit το καθένα. Το κύκλωμα, που φαίνεται στην Εικόνα 47, δέχεται τα δύο διανύσματα στην είσοδο του και παράγει ως έξοδο το αποτέλεσμα της πράξης XOR μεταξύ των bit τους. Το στοιχείο αυτό είναι κοινό, χωρίς αλλαγές, και για την διαδικασία κρυπτογράφησης και για την διαδικασία αποκρυπτογραφησης τμήματος. Αυτό οφείλεται στην ιδιότητα της πράξης xor να μένει η ίδια, δίνοντας τα σωστά αποτελέσματα και στην αντίστροφη διαδικασία. Εικόνα 47 Κώδικας BlockCipherXOR Το κύκλωμα EnBlockCipherAll περιέχει 2 πράξεις xor, συνεπώς και 2 στοιχεία κυκλώματος BlockCipherXOR Στοιχείο κυκλώματος: Split16to4 Το στοιχείο αυτό, δέχεται ως είσοδο ένα 16bit λογικό διάνυσμα και παράγει ως έξοδο 4 διανύσματα των 4bit το καθένα, που αντιστοιχούν στον διαχωρισμό του διανύσματος εισόδου. Ο κώδικας είναι κοινός και για την διαδικασία της κρυπτογράφησης τμήματος και για την διαδικασία αποκρυπτογράφησης τμήματος. Στην συγκεκριμένη υλοποίηση θεωρείται απλός και παραλείπεται Στοιχείο κυκλώματος: EnSbox Το στοιχείο αυτό υλοποιεί την αντικατάσταση που πραγματοποιεί ο αλγόριθμος με την εφαρμογή των Sbox. Το κύκλωμα δέχεται τα 4 διαχωρισμένα διανύσματα των 4bit από το Split16to4 στοιχείο και παράγει στην έξοδο τα 4 διανύσματα αντικατάστασης που αντιστοιχούν σε αυτά που εισήχθησαν. Ο κώδικας που 75

89 δημιουργήθηκε για την αντιστοίχηση των διανυσμάτων αντικατάστασης στο στοιχείο του κυκλώματος EnSbox βασίζεται στον Πίνακας 3 (σελίδα 37) και παρουσιάζεται στην Εικόνα 48. Εικόνα 48 Κώδικας EnSbox 76

90 Στοιχείο κυκλώματος: EnBlockCipherBasic Αποτελεί την βασική υλοποίηση της κρυπτογράφησης τμήματος. Δέχεται ως είσοδο ένα διάνυσμα 16bit, το οποίο είναι το αρχικό μήνυμα ή το ενδιάμεσο που προκύπτει από επεξεργασία του αρχικού στην πορεία εκτέλεσης του αλγορίθμου και ένα ακόμη διάνυσμα 16bit που είναι ένα μέρος του κλειδιού αφού διαχωρίστηκε στο προηγούμενο στοιχείο. Το κύκλωμα του στοιχείου αυτού φαίνεται στο σχήμα της Εικόνα 49. Εικόνα 49 Κύκλωμα EnBlockCipherBasic Το γενικό κύκλωμα της κρυπτογράφησης τμήματος, EnBlockCipherAll, περιλαμβάνει 4 στοιχεία κυκλώματος EnBlockCipherBasic, που αντιστοιχούν στις 4 επαναλήψεις που απαιτεί ο αλγόριθμος Hummingbird στο εσωτερικό της κρυπτογράφησης τμήματος. Αυτός είναι και ο λόγος χρήσης του στοιχείου που διαχωρίζει το κλειδί που εισέρχεται στο EnBlockCipherAll σε 4 διανύσματα, ένα για κάθε εκτέλεση του στοιχείου EnBlockCipherBasic που περιέχει. Τα επιμέρους στοιχεία κυκλώματος που φαίνονται στην Εικόνα 49 και υλοποιούν ένα μέρος της κρυπτογράφησης τμήματος έχουν ήδη αναλυθεί εκτός από το στοιχείο LinearTransform, που θα αναλυθεί στην συνέχεια. Από αυτά που έχουν αναλυθεί προηγουμένως και περιλαμβάνονται στο κύκλωμα του EnBlockCipherBasic είναι τα εξής, αναφορικά: BlockCipherXOR (υποενότητα ). Split16to4 (υποενότητα ). EnSbox (υποενότητα ) Στοιχείο κυκλώματος: LinearTransform Το στοιχείο αυτό υλοποιεί την γραμμική ολίσθηση της κρυπτογράφησης τμήματος που δίνεται από τον τύπο:. Το κύκλωμα δέχεται ένα διάνυσμα 16bit και αφού πραγματοποιήσει τις μεταθέσεις και τις πράξεις xor, όπου επιδεικνύει ο τύπος, βγάζει στην έξοδο ένα διάνυσμα 16bit που αντιστοιχεί στο επεξεργασμένο διάνυσμα εισόδου. Ο κώδικας φαίνεται στην Εικόνα 50, που ακολουθεί. 77

91 Εικόνα 50 Κώδιικας LinearTransform Στοιχείο κυκλώματος: GenNewKey Το στοιχείο αυτό, είναι ίδιο για την διαδικασίας κρυπτογράφησης και αποκρυπτογράφησης. Χρησιμοποιείται για την παραγωγή νέου κλειδιού με βάση τα ήδη δηλωμένα από την αρχή του αλγορίθμου. Πιο συγκεκριμένα, δέχεται ως είσοδο 2 διανύσματα 16bit, που αντιστοιχούν σε 2 τμήματα του κλειδιού εφαρμόζει την πράξη xor στα bit τους και βγάζει το αποτέλεσμα αυτής στην έξοδο. Η λειτουργία αυτή προσθέτει ισχυρότητα στον αλγόριθμο αφού είναι σαν να εφαρμόζεται επιπλέον κρυπτογράφηση με ένα νέο τυχαίο κλειδί. Στο κύκλωμα EnBlockCipherAll, έχουμε την χρήση 2 στοιχείων του κυκλώματος GenNewKey, που αντιστοιχούν στην παραγωγή 2 νέων κλειδιών. Το κύκλωμα του στοιχείου αυτού φαίνεται στην Εικόνα

92 Εικόνα 51 Κώδικας GenNewKey Στοιχείο κυκλώματος: DecBlockCipherAll (Αποκρυπτογράφηση Τμήματος 16bit) Το γενικό κύκλωμα της αποκρυπτογράφησης τμήματος υλοποιείται στο στοιχείο DecBlockCipherAll, το οποίο παρουσιάζεται στην Εικόνα 52. Παρατηρώντας το αντίστοιχο κύκλωμα της κρυπτογράφησης τμήματος που παρουσιάστηκε στην Εικόνα 45 καθώς και τα επιμέρους στοιχεία κυκλώματος που το αποτελούν, διαπιστώνουμε τις ομοιότητες που εμφανίζουν τα δύο αυτά στοιχεία και μπορεί να γίνει κατανοητή από τον αναγνώστη η έννοια της αντίστροφης διαδικασίας, όπως αναφέρθηκε και στην αρχή της υποενότητας 5.4, και χαρακτηρίζει την κρυπτογράφηση και αποκρυπτογράφηση. Το στοιχείο DecBlockCipherAll, δέχεται ως είσοδο για το κύκλωμά του δύο διανύσματα και παράγει μετά από πράξεις μεταξύ αυτών ένα διάνυσμα στην έξοδο. Τα διανύσματα εισόδου έχουν μέγεθος 64bit, που αποτελεί το κλειδί που θα γίνει η κρυπτογράφηση και 16bit, το οποίο είναι το μήνυμα που θα αποκρυπτογραφηθεί. Το διάνυσμα εξόδου είναι και αυτό 16bit και αποτελεί το αποκρυπτογραγημένο μήνυμα που αντιστοιχεί σε αυτό που εισήχθη στο κύκλωμα. 79

93 Εικόνα 52 Κύκλωμα DecBlockCipherAll Ομοίως με την κρυπτογράφηση τμήματος έχουμε την εφαρμογή 4 αποκρυπτογραφήσεων τμήματος, συνεπώς χρησιμοποιούνται 4 στοιχεία κυκλώματος DecBlockCipherAll, τα οποία φαίνονται και στην Εικόνα 41του γενικού κυκλώματος εφαρμογής της αποκρυπτογράφησης. Οπότε και σε αυτό το κύκλωμα έχουμε για κάθε τρέξιμο του την χρήση ενός από τα 4 διανύσματα των 64bit που διαχωρίστηκε το κλειδί στην αρχή της διαδικασίας κρυπτογράφησης. Από το σχήμα της Εικόνα 52, γίνεται εμφανής ο διαχωρισμός του κυκλώματος σε επιμέρους στοιχεία, τα οποία αναλύονται στην συνέχεια. Το βασικότερο από αυτά είναι το DecBlockCipherBasic, ενώ κάποια από τα υπόλοιπα του γενικού κυκλώματος κρυπτογράφησης τμήματος, αποτελούν τα επιμέρους στοιχεία που περιέχει το DecBlockCipherBasic, όπως και στην κρυπτογράφηση τμήματος. Αξίζει να σημειωθεί ότι τα επιμέρους στοιχεία του DecBlockCipherAll έχουν διαχωριστεί με τον ίδιο τρόπο με το στοιχείο EnBlockCipherAll, ώστε να διευκολυνθεί ο αναγνώστης στην κατανόηση των διαδικασιών. Αυτός είναι και ο λόγος που κάποια από αυτά τα στοιχεία παραμένουν ίδια, καθώς δεν αλλάζει το περιεχόμενο τους στην εφαρμογή της αντίστροφης διαδικασίας. Τα στοιχεία που παραμένουν ίδια, αναφορικά, είναι: SplitKey64 (υποενότητα ). BlockCipherXOR (υποενότητα ). Split16to4 (υποενότητα ). GenNewKey (υποενότητα ). 80

94 Στοιχείο κυκλώματος: DecrSbox Το στοιχείο αυτό υλοποιεί την αντίστροφη διαδικασία του στοιχείου της ενότητας , δηλαδή την αντικατάσταση που πραγματοποιεί ο αλγόριθμος με την εφαρμογή των Sbox. Το κύκλωμα δέχεται τα 4 διαχωρισμένα διανύσματα των 4bit από το στοιχείο Split16to4 και παράγει στην έξοδο τα 4 διανύσματα αντικατάστασης που αντιστοιχούν σε αυτά που εισήχθησαν. Ο κώδικας που δημιουργήθηκε για την αντιστοίχηση των διανυσμάτων αντικατάστασης στο στοιχείο του κυκλώματος DecrSbox βασίζεται στον αντίστροφο του Πίνακας 3και παρουσιάζεται στην Εικόνα 53. Εικόνα 53 Κώδικας DecrSbox 81

95 Στοιχείο κυκλώματος: DecBlockCipherBasic Αποτελεί την βασική υλοποίηση της αποκρυπτογράφησης τμήματος. Δέχεται ως είσοδο ένα διάνυσμα 16bit, το οποίο είναι το μήνυμα προς αποκρυπτογράφηση και ένα ακόμη διάνυσμα 16bit που είναι ένα μέρος του κλειδιού αφού διαχωρίστηκε στο στοιχείο SplitKey64. Το κύκλωμα του στοιχείου αυτού φαίνεται στο σχήμα της Εικόνα 54. Εικόνα 54 Κύκλωμα DecBlockCipherBasic Το γενικό κύκλωμα της αποκρυπτογράφησης τμήματος, DecBlockCipherAll, περιλαμβάνει 4 στοιχεία κυκλώματος DecBlockCipherBasic, που αντιστοιχούν στις 4 επαναλήψεις που απαιτεί ο αλγόριθμος Hummingbird στο εσωτερικό της κρυπτογράφησης τμήματος και κατ' επέκταση και την αποκρυπτογράφησης. Τα επιμέρους στοιχεία κυκλώματος που φαίνονται στην Εικόνα 54και υλοποιούν ένα μέρος της αποκρυπτογράφησης τμήματος έχουν ήδη αναλυθεί εκτός από το στοιχείο DecrLinearTransform, που θα αναλυθεί στην συνέχεια. Από αυτά που έχουν αναλυθεί προηγουμένως και περιλαμβάνονται στο κύκλωμα του DecBlockCipherBasic είναι τα εξής, αναφορικά: BlockCipherXOR (υποενότητα ). Split16to4 (υποενότητα ). DecrSbox (υποενότητα ) Στοιχείο κυκλώματος: DecrLinearTransform Το στοιχείο αυτό υλοποιεί την γραμμική ολίσθηση της αποκρυπτογράφησης τμήματος που αποτελεί την αντίστροφη διαδικασία από την γραμμική ολίσθηση της κρυπτογράφησης τμήματος. Η ολίσθηση αυτή δίνεται από τον αντίστροφο του τύπο:, δηλαδή με την επίλυση του τύπου ως προς m διότι το L(m) θεωρείται γνωστό. Το m αποτελείται από 16bit και ομοίως και το L(m). Συνεπώς αντικαθιστώντας το m με m 1,, m 16 και το L(m) με x 1,, x 16 και σχηματίζουμε ένα 16x16 γραμμικό σύστημα επί του GF[2]. Έπειτα από τους 82

96 απαραίτητους υπολογισμούς, η λύση του συστήματος μας δίνει τον εξής τύπο για την γραμμική ολίσθηση του Hummingbird:. Η υλοποίηση με βάση τον τύπο της γραμμικής ολίσθησης στην αποκρυπτογράφηση τμήματος, δίνεται από τον κώδικα που παρουσιάζεται στην Εικόνα 55. Το κύκλωμα δέχεται ένα διάνυσμα 16bit και αφού πραγματοποιήσει τις μεταθέσεις και τις πράξεις xor, όπου επιδεικνύει ο τύπος, βγάζει στην έξοδο ένα διάνυσμα 16bit που αντιστοιχεί στο επεξεργασμένο διάνυσμα εισόδου. Εικόνα 55 Κώδικας DecrLinearTransform 83

97 5.5 Εφαρμογές Υλοποίησης Στην ενότητα αυτή θα παρουσιαστούν τα δεδομένα εισόδου για την εκτέλεση της υλοποίησης του Hummingbird, καθώς και τα αποτελέσματα αυτών. Οι τιμές στις εισόδους, προέκυψαν από έτοιμη διαδικτυακή γεννήτρια τυχαίων bytes, που χρησιμοποιεί για την αύξηση της τυχαιότητας παραγωγής των bit, τον ατμοσφαιρικό θόρυβο. Έτσι γίνεται καλύτερη η παραγωγή σε σχέση με κάποιο ψευδοτυχαίο αλγόριθμο σε γλώσσα λογισμικού. [17] Παραδείγματα και Αποτελέσματα Τα παραδείγματα στα οποία δοκιμάστηκε ο αλγόριθμος στις 3 διαδικασίες που τον αποτελούν είναι πολλά, αλλά για χάρη συντομίας της εργασίας αναφέρονται 2 από αυτά, τα οποία αναλύονται σε ξεχωριστή υποενότητα το κάθε ένα με τις εισόδους και εξόδους της κάθε διαδικασίας Παράδειγμα 1 ο Στον Πίνακας 5παρουσιάζονται οι αρχικές τιμές που δόθηκαν για την εκκίνηση της πρώτης διαδικασίας εκτέλεσης δηλαδή της αρχικοποίησης και στον Πίνακας 6 έχουμε τα αποτελέσματα της διαδικασίας αρχικοποίησης μετά την ολοκλήρωση και των 4 επαναλήψεων που απαιτεί η εκτέλεσή της, τα οποία θα χρησιμοποιηθούν στην κρυπτογράφηση και αποκρυπτογράφηση. Διαδικασία Αρχικοποίησης (τιμές εισόδου) Nonce (16bit) Nonce (16bit) Nonce (16bit) Nonce (16bit) Key (256bit) Πίνακας 5 Παράδειγμα 1, Τιμές Εισόδου Διαδικασίας Αρχικοποίησης 84

98 RS1 (16bit) RS2 (16bit) RS3 (16bit) RS4 (16bit) TV (16bit) Διαδικασία Αρχικοποίησης (τιμές εξόδου) Πίνακας 6 Παράδειγμα 1, Τιμές Εξόδου Διαδικασίας Αρχικοποίησης Η κυματομορφή που παρήγαγε το Xilinx, τρέχοντας τους κώδικες και τα κυκλώματα της υλοποίησης για τις προηγούμενες τιμές φαίνεται στην Εικόνα 56. Εικόνα 56 Παράδειγμα 1, Κυματομορφή Διαδικασίας Αρχικοποίησης Για να έχουμε όμως αυτήν την κυματομορφή έπρεπε να κατασκευαστεί το αντίστοιχο testbench, στο οποίο όπως αναφέρθηκε σε προηγούμενες ενότητες δίνει τιμές σε μεταβλητές που απαιτούν αλλαγές στην διάρκεια εκτέλεσης, όπως το ρολόι. Το testbench της διαδικασίας αρχικοποίησης φαίνεται στην Εικόνα 57, που ακολουθεί στο οποίο έχουμε εκτέλεση για 5 κύκλους ρολογιού. Στον πρώτο κύκλο ρολογιού έχουμε την ανάθεση των τιμών Nonce i στους καταχωρητές και στους επόμενους 4 κύκλους έχουμε τις 4 επαναλήψεις που απαιτεί η αρχικοποίηση. Για όλα τα παραδείγματα το testbench αρχικοποίησης είναι ίδιο. 85

99 Εικόνα 57 Παράδειγμα 1, Testbench Διαδικασίας Αρχικοποίησης 86

100 Στην συνέχεια έχουμε την εκτέλεση της κρυπτογράφησης. Τα δεδομένα για την εκκίνηση της διαδικασίας αυτής παρουσιάζονται στον Πίνακας 7, ενώ τα αποτελέσματα που έχουμε ως έξοδο κατά την ολοκλήρωση της περιέχονται στον Πίνακας 8. Διαδικασία Κρυπτογράφησης (τιμές εισόδου) RS1 (16bit) RS2 (16bit) RS3 (16bit) RS4 (16bit) TV (16bit) PT i (16bit) Key (256bit) Πίνακας 7 Παράδειγμα 1, Τιμές Εισόδου Διαδικασίας Κρυπτογράφησης Διαδικασία Κρυπτογράφησης (τιμές εξόδου) CT i (16bit) PT i (16bit) Key (256bit) Πίνακας 8 Παράδειγμα 1, Τιμές Εξόδου Διαδικασίας Κρυπτογράφησης Η κυματομορφή που παρήγαγε το Xilinx, τρέχοντας τους κώδικες και τα κυκλώματα της υλοποίησης για τις προηγούμενες τιμές φαίνεται στην Εικόνα 58. Εικόνα 58 Παράδειγμα 1, Κυματομορφή Διαδικασίας Κρυπτογράφησης 87

101 Για να έχουμε όμως αυτήν την κυματομορφή έπρεπε να κατασκευαστεί το αντίστοιχο testbench, στο οποίο αλλάζουν τιμές όπως το ρολόι, το reset των καταχωρητών και το select για επιλογή της τιμής που θα αποθηκευτεί στους καταχωρητές. Το testbench της διαδικασίας κρυπτογράφησης φαίνεται στην Εικόνα 59, που ακολουθεί. Εδώ, έχουμε εκτέλεση για 1 κύκλο ρολογιού διότι έχουμε ένα τμήμα μηνύματος 16bit. Εάν είχαμε μεγαλύτερο μέγεθος μηνύματος θα είχαμε αντίστοιχα τόσους κύκλους ρολογιού μέχρι να τελειώσουν τα 16bit τμήματα που θα είχε διαχωριστεί. Για όλα τα παραδείγματα που θα εκτελεστούν το testbench κρυπτογράφησης είναι ίδιο. Εικόνα 59 Παράδειγμα 1, Testbench Διαδικασίας Κρυπτογράφησης 88

102 Τέλος έχουμε την εφαρμογή της διαδικασίας αποκρυπτογράφησης. Τα δεδομένα για την εκκίνηση της διαδικασίας αυτής παρουσιάζονται στον Πίνακας 9, ενώ τα αποτελέσματα που έχουμε ως έξοδο κατά την ολοκλήρωση της περιέχονται στον Πίνακας 10. Διαδικασία Αποκρυπτογράφησης (τιμές εισόδου) RS1 (16bit) RS2 (16bit) RS3 (16bit) RS4 (16bit) TV (16bit) CT i (16bit) Key (256bit) Πίνακας 9 Παράδειγμα 1, Τιμές Εισόδου Διαδικασίας Απορυπτογράφησης Διαδικασία Αποκρυπτογράφησης (τιμές εξόδου) PT i (16bit) CT i (16bit) Key (256bit) Πίνακας 10 Παράδειγμα 1, Τιμές Εξόδου Διαδικασίας Απορυπτογράφησης Η κυματομορφή που παρήγαγε με το πρόγραμμα Xilinx, τρέχοντας τους κώδικες και τα κυκλώματα της υλοποίησης για τις προηγούμενες τιμές φαίνεται στην Εικόνα 60. Εικόνα 60 Παράδειγμα 1, Κυματομορφή Διαδικασίας Απορυπτογράφησης 89

103 Για να έχουμε όμως αυτήν την κυματομορφή έπρεπε να κατασκευαστεί το αντίστοιχο testbench, στο οποίο αλλάζουν τιμές όπως το ρολόι, το reset των καταχωρητών και το select για επιλογή της τιμής που θα αποθηκευτεί στους καταχωρητές. Το testbench της διαδικασίας αποκρυπτογράφησης φαίνεται στην Εικόνα 61, που ακολουθεί. Εδώ, έχουμε εκτέλεση για ενός κύκλου ρολογιού διότι έχουμε ένα τμήμα μηνύματος 16bit. Εάν είχαμε μεγαλύτερο μέγεθος μηνύματος θα είχαμε αντίστοιχα τόσους κύκλους ρολογιού μέχρι να τελειώσουν τα 16bit τμήματα που θα είχε διαχωριστεί, ομοίως με την διαδικασία κρυπτογράφησης. Για όλα τα παραδείγματα που θα εκτελεστούν το testbench αποκρυπτογράφησης είναι ίδιο. Εικόνα 61 Παράδειγμα 1, Testbench Διαδικασίας Απορυπτογράφησης 90

104 Παράδειγμα 2 ο Ομοίως με την προηγούμενη υποενότητα ( ), στον Πίνακας 11 παρουσιάζονται οι αρχικές τιμές που δόθηκαν για την εκκίνηση της πρώτης διαδικασίας εκτέλεσης δηλαδή της αρχικοποίησης και στον Πίνακας 12 έχουμε τα αποτελέσματα της διαδικασίας αρχικοποίησης μετά την ολοκλήρωση και των 4 επαναλήψεων που απαιτεί η εκτέλεσή της, τα οποία θα χρησιμοποιηθούν στην κρυπτογράφηση και αποκρυπτογράφηση. Διαδικασία Αρχικοποίησης (τιμές εισόδου) Nonce (16bit) Nonce (16bit) Nonce (16bit) Nonce (16bit) Key (256bit) RS1 (16bit) RS2 (16bit) RS3 (16bit) RS4 (16bit) TV (16bit) Πίνακας 11 Παράδειγμα 2, Τιμές Εισόδου Διαδικασίας Αρχικοποίησης Διαδικασία Αρχικοποίησης (τιμές εξόδου) Πίνακας 12 Παράδειγμα 2, Τιμές Εξόδου Διαδικασίας Αρχικοποίησης Η κυματομορφή που παρήγαγε το Xilinx, τρέχοντας τους κώδικες και τα κυκλώματα της υλοποίησης για τις προηγούμενες τιμές φαίνεται στην Εικόνα

105 Εικόνα 62 Παράδειγμα 2, Κυματομορφή Διαδικασίας Αρχικοποίησης Για να έχουμε όμως αυτήν την κυματομορφή πρέπει να κατασκευαστεί το αντίστοιχο testbench, που όπως ήδη προαναφέρθηκε είναι το ίδιο με αυτό του παραδείγματος 1. Έχουμε δηλαδή και εδώ την εκτέλεση για 5 κύκλους ρολογιού. Στον πρώτο κύκλο ρολογιού έχουμε την ανάθεση των τιμών Nonce i στους καταχωρητές και στους επόμενους 4 κύκλους έχουμε τις 4 επαναλήψεις που απαιτεί η αρχικοποίηση. Για το testbench της διαδικασίας αρχικοποίησης μπορούμε να ανατρέξουμε στην Εικόνα 57 (σελίδα 86). Στην συνέχεια έχουμε την εκτέλεση της κρυπτογράφησης. Τα δεδομένα για την εκκίνηση της διαδικασίας αυτής παρουσιάζονται στον Πίνακας 13, ενώ τα αποτελέσματα που έχουμε ως έξοδο κατά την ολοκλήρωση της περιέχονται στον Πίνακας 14. Διαδικασία Κρυπτογράφησης (τιμές εισόδου) RS1 (16bit) RS2 (16bit) RS3 (16bit) RS4 (16bit) TV (16bit) PT i (16bit) Key (256bit) Πίνακας 13 Παράδειγμα 2, Τιμές Εισόδου Διαδικασίας Κρυπτογράφησης 92

106 Διαδικασία Κρυπτογράφησης (τιμές εξόδου) CT i (16bit) PT i (16bit) Key (256bit) Πίνακας 14 Παράδειγμα 2, Τιμές Εξόδου Διαδικασίας Κρυπτογράφησης Η κυματομορφή που παρήγαγε με το πρόγραμμα Xilinx, τρέχοντας τους κώδικες και τα κυκλώματα της υλοποίησης για τις προηγούμενες τιμές φαίνεται στην Εικόνα 63. Εικόνα 63 Παράδειγμα 2, Κυματομορφή Διαδικασίας Κρυπτογράφησης Ο κώδικας του testbench της διαδικασίας κρυπτογράφησης για την παραγωγή την αντίστοιχης κυματομορφής είναι το ίδιο με αυτό της Εικόνα 59 (σελίδα 88). Συγκεκριμένα έχουμε και εδώ την εκτέλεση ενός κύκλου ρολογιού διότι έχουμε ένα τμήμα μηνύματος 16bit. Τέλος ακολουθεί η εφαρμογή της διαδικασίας αποκρυπτογράφησης. Τα δεδομένα για την εκκίνηση της διαδικασίας αυτής παρουσιάζονται στον Πίνακας 15, ενώ τα αποτελέσματα που έχουμε ως έξοδο κατά την ολοκλήρωση της περιέχονται στον Πίνακας

107 Διαδικασία Αποκρυπτογράφησης (τιμές εισόδου) RS1 (16bit) RS2 (16bit) RS3 (16bit) RS4 (16bit) TV (16bit) CT i (16bit) Key (256bit) Πίνακας 15 Παράδειγμα 2, Τιμές Εισόδου Διαδικασίας Απορυπτογράφησης Διαδικασία Αποκρυπτογράφησης (τιμές εξόδου) PT i (16bit) CT i (16bit) Key (256bit) Πίνακας 16 Παράδειγμα 2, Τιμές Εξόδου Διαδικασίας Απορυπτογράφησης Η κυματομορφή που παρήγαγε με το πρόγραμμα Xilinx, τρέχοντας τους κώδικες και τα κυκλώματα της υλοποίησης για τις προηγούμενες τιμές φαίνεται στην Εικόνα 64. Εικόνα 64 Παράδειγμα 2, Κυματομορφή Διαδικασίας Απορυπτογράφησης Η κυματομορφή προέρχεται από τον κώδικα του testbench της Εικόνα 61 (σελίδα 90). Στο testbench, αυτό, έχουμε εκτέλεση για ενός κύκλου ρολογιού διότι έχουμε ένα τμήμα μηνύματος 16bit, όπως και στην διαδικασία κρυπτογράφησης. 94

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κρυπτογραφία. Κρυπτοσυστήματα ροής. Πέτρος Ποτίκας. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Κρυπτογραφία Κρυπτοσυστήματα ροής Πέτρος Ποτίκας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Σχολή ΗΜΜΥ ΕΜΠ Κρυπτογραφία 1 / 22 Περιεχόμενα 1 Εισαγωγή 2 Υπολογιστική

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

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

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

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

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

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

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

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

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

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

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

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

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

Κρυπτογραφία. Εργαστηριακό μάθημα 5 Stream ciphers Κρυπτανάλυση με τον αλγόριθμο Berlekamp-Massey

Κρυπτογραφία. Εργαστηριακό μάθημα 5 Stream ciphers Κρυπτανάλυση με τον αλγόριθμο Berlekamp-Massey Κρυπτογραφία Εργαστηριακό μάθημα 5 Stream ciphers Κρυπτανάλυση με τον αλγόριθμο Berlekamp-Massey Γενικά χαρακτηριστικά των stream ciphers Keystream Generator K i P i C i Δουλεύουν πάνω σε ένα ρεύμα από

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κρυπτογραφία. Ψευδοτυχαιότητα - Κρυπτοσυστήματα ροής. Άρης Παγουρτζής - Πέτρος Ποτίκας

Κρυπτογραφία. Ψευδοτυχαιότητα - Κρυπτοσυστήματα ροής. Άρης Παγουρτζής - Πέτρος Ποτίκας Κρυπτογραφία Ψευδοτυχαιότητα - Κρυπτοσυστήματα ροής Άρης Παγουρτζής - Πέτρος Ποτίκας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Σχολή ΗΜΜΥ ΕΜΠ Κρυπτογραφία 1 / 38

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 475: Εργαστήριο 2 Ο απλοποιημένος αλγόριθμος κρυπτογράφησης S-DES

ΕΠΛ 475: Εργαστήριο 2 Ο απλοποιημένος αλγόριθμος κρυπτογράφησης S-DES ΕΠΛ 475: Εργαστήριο 2 Ο απλοποιημένος αλγόριθμος κρυπτογράφησης S-DES ρ. Παύλος Αντωνίου Department of Computer Science 1 S-DES Γενικά (1) Ο αλγόριθμος DES χρησιμοποιεί κλειδιά μεγέθους 56 bit Ο απλοποιημένος

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

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

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

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

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

ΑΣΦΑΛΕΙΑ ΚΑΤΑ ΤΗ ΙΑΚΙΝΗΣΗ ΠΟΛΥΜΕΣΙΚΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΑΣΦΑΛΕΙΑ ΚΑΤΑ ΤΗ ΙΑΚΙΝΗΣΗ ΠΟΛΥΜΕΣΙΚΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΠΡΑΚΤΙΚΟ ΜΕΡΟΣ 4 ης ΕΡΓΑΣΙΑΣ Κλώνη Απόστολου ΠΕΡΙΕΧΟΜΕΝΑ Κρυπτογραφία Ψηφιακές υπογραφές Ψηφιακά πιστοποιητικά Ψηφιακή υδατογραφία 2 Κρυπτογραφία Η επιστήµη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ασφάλεια Πληροφοριακών Συστημάτων Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Ασφάλεια Πληροφοριακών Συστημάτων Ενότητα 5: Διαχείριση κλειδιών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

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

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

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

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

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

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

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

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

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

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

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

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

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

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

ΚΩΔΙΚΟΠΟΙΗΣΗ - ΑΠΟΚΩΔΙΚΟΠΟΙΗΣΗ ΑΠΟ Β ΠΑΓΚΟΣΜΙΟ ΠΟΛΕΜΟ ΜΕΧΡΙ ΣΗΜΕΡΑ

ΚΩΔΙΚΟΠΟΙΗΣΗ - ΑΠΟΚΩΔΙΚΟΠΟΙΗΣΗ ΑΠΟ Β ΠΑΓΚΟΣΜΙΟ ΠΟΛΕΜΟ ΜΕΧΡΙ ΣΗΜΕΡΑ ΚΩΔΙΚΟΠΟΙΗΣΗ - ΑΠΟΚΩΔΙΚΟΠΟΙΗΣΗ ΑΠΟ Β ΠΑΓΚΟΣΜΙΟ ΠΟΛΕΜΟ ΜΕΧΡΙ ΣΗΜΕΡΑ Εισαγωγικά-Κώστας Σαρηκιοσές Τι είναι η κρυπτογραφία; Χρήση κατά τη διάρκεια του Β Παγκοσμίου Πολέμου Μετά τον Β Παγκόσμιο Πόλεμο(από

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

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

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

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

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

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

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

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ ΕΠΑ.Λ. Άμφισσας Σχολικό Έτος : 2011-2012 Τάξη : Γ Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya2 ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ 8.3.4-8.3.6

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

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

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

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

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

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

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit! Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 25-6 Πράξεις με δυαδικούς αριθμούς (αριθμητικές ) http://di.ionio.gr/~mistral/tp/csintro/ Αριθμοί Πράξεις με δυαδικούς αριθμούς

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

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

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

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

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

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

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

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

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

Κινητές επικοινωνίες. Κεφάλαιο 6 Τεχνικές πoλυπλεξίας - CDMA

Κινητές επικοινωνίες. Κεφάλαιο 6 Τεχνικές πoλυπλεξίας - CDMA Κινητές επικοινωνίες Κεφάλαιο 6 Τεχνικές πoλυπλεξίας - CDMA 1 Πολυπλεξία Η πολυπλεξία επιτρέπει την παράλληλη μετάδοση δεδομένων από διαφορετικές πηγές χωρίς αλληλοπαρεμβολές. Τρία βασικά είδη TDM/TDMA

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

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

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

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

Κρυπτογραφία. Εργαστηριακό μάθημα 10 (Επαναληπτικές ασκήσεις)

Κρυπτογραφία. Εργαστηριακό μάθημα 10 (Επαναληπτικές ασκήσεις) Κρυπτογραφία Εργαστηριακό μάθημα 10 (Επαναληπτικές ασκήσεις) Εύρεση αντίστροφου αριθμού Mod n Έχουμε ήδη δει ότι πολύ συχνά συναντάμε την ανάγκη να βρούμε τον αντίστροφο ενός αριθμού a modulo n, δηλαδή

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

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

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

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

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

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

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

Κρυπτογραφικά Πρωτόκολλα

Κρυπτογραφικά Πρωτόκολλα Κρυπτογραφικά Πρωτόκολλα Παύλος Εφραιµίδης 25/04/2013 1 Κρυπτογραφικά Πρωτόκολλα Bit Commitment Fair Coin Mental Poker Secret Sharing Zero-Knowledge Protocol 2 πρωτόκολλα και υπηρεσίες χρήστης κρυπτογραφικές

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

Πράξεις με δυαδικούς αριθμούς

Πράξεις με δυαδικούς αριθμούς Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 25-6 Πράξεις με δυαδικούς αριθμούς (αριθμητικές πράξεις) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Πράξεις με δυαδικούς

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

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού ΤΕΙ ΚΡΗΤΗΣ ΤΜΉΜΑ ΜΗΧΑΝΙΚΏΝ ΠΛΗΡΟΦΟΡΙΚΉΣ Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων Συναρτήσεις Κατακερματισμού Ο όρος συνάρτηση κατακερματισμού (hash function) υποδηλώνει ένα μετασχηματισμό που παίρνει

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

6/1/2010. Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών. Περιεχόμενα. Εισαγωγή /1 IEEE

6/1/2010. Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών. Περιεχόμενα. Εισαγωγή /1 IEEE Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών Ασύρματες Επικοινωνίες Μέρος III Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Slide: 1/42 Περιεχόμενα IEEE 802.11 WIRED EQUIVALENT PRIVACY (WEP)

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

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

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

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

1.1. Ορισμοί και ορολογία

1.1. Ορισμοί και ορολογία 1 ΕΙΣΑΓΩΓΗ Προτού ξεκινήσουμε την περιήγησή μας στον κόσμο της κρυπτογραφίας, ας δούμε ορισμένα πρακτικά προβλήματα που κατά καιρούς έχουμε συναντήσει ή έχουμε φανταστεί. Το πρόβλημα του «μυστικού υπολογισμού».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΔΙΚΤΥΑ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΔΙΚΤΥΑ ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ: Κυκλικός Έλεγχος Πλεονασμού CRC codes Cyclic Redundancy Check codes Ο μηχανισμός ανίχνευσης σφαλμάτων στις επικοινωνίες

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

Παύλος Εφραιμίδης. Κρυπτογραφικά Πρωτόκολλα. Ασφ Υπολ Συστ

Παύλος Εφραιμίδης. Κρυπτογραφικά Πρωτόκολλα. Ασφ Υπολ Συστ Παύλος Εφραιμίδης Κρυπτογραφικά Πρωτόκολλα Ασφ Υπολ Συστ 1 Fair Coin Millionaires Problem Blind Signatures Oblivious Signatures Simultaneous Contract Signing Simultaneous Exchange of Secrets προηγμένα

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

Κρυπτογραφία. Κεφάλαιο 3 Αλγόριθμοι τμήματος Block ciphers

Κρυπτογραφία. Κεφάλαιο 3 Αλγόριθμοι τμήματος Block ciphers Κρυπτογραφία Κεφάλαιο 3 Αλγόριθμοι τμήματος Block ciphers Αλγόριθμοι τμήματος Τμήμα (μπλοκ) αρχικού μηνύματος μήκους n encrypt decrypt Τμήμα (μπλοκ) κρυπτογράμματος μήκους n 2 Σχηματική αναπαράσταση Plaintext

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

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

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

Ασφάλεια Πληροφοριακών Συστημάτων Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Ασφάλεια Πληροφοριακών Συστημάτων Ενότητα 6: Κρυπτογραφία Ι Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

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

4 ΚΡΥΠΤΟΓΡΑΦΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ 4 ΚΡΥΠΤΟΓΡΑΦΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ 4.1. Εισαγωγή Τα προηγούμενα κεφάλαια αποτελούν μια εισαγωγή στην κρυπτολογία, στις κατηγορίες κρυπτογραφικών πράξεων καθώς και στα βασικά μοντέλα κρυπτανάλυσης και αξιολόγησης

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

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

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

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

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

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

3 ΟΙ ΚΡΥΠΤΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΟΙ ΙΔΙΟΤΗΤΕΣ ΤΟΥΣ

3 ΟΙ ΚΡΥΠΤΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΟΙ ΙΔΙΟΤΗΤΕΣ ΤΟΥΣ 3 ΟΙ ΚΡΥΠΤΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΟΙ ΙΔΙΟΤΗΤΕΣ ΤΟΥΣ 3.. Θεωρία της πληροφορίας Το 948 και το 949 ο Shannon παρουσίασε δύο εργασίες ορόσημα στις επικοινωνίες και στην ασφάλεια της πληροφορίας. Στο σημείο αυτό θα

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

Παράρτημα Α Περισσότερα για την Ασφάλεια στο Διαδίκτυο

Παράρτημα Α Περισσότερα για την Ασφάλεια στο Διαδίκτυο Παράρτημα Α Περισσότερα για την Ασφάλεια στο Διαδίκτυο A.1 Κρυπτογράφηση Δημόσιου Κλειδιού Όπως αναφέρθηκε στην παράγραφο 2.3.2, η πιο διαδεδομένη μέθοδος κρυπτογραφίας στο Διαδίκτυο είναι η κρυπτογράφηση

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

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος Η έννοια του προβλήματος 1. Αναφέρετε μερικά από τα προβλήματα που συναντάτε στην καθημερινότητά σας. Απλά προβλήματα Ποιο δρόμο θα ακολουθήσω για να πάω στο σχολείο; Πως θα οργανώσω μια εκδρομή; Πως θα

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

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

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

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

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

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

7. O κβαντικός αλγόριθμος του Shor

7. O κβαντικός αλγόριθμος του Shor 7. O κβαντικός αλγόριθμος του Shor Σύνοψη Ο κβαντικός αλγόριθμος του Shor μπορεί να χρησιμοποιηθεί για την εύρεση της περιόδου περιοδικών συναρτήσεων και για την ανάλυση ενός αριθμού σε γινόμενο πρώτων

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

ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ

ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ 3.1 Τυχαίοι αριθμοί Στην προσομοίωση διακριτών γεγονότων γίνεται χρήση ακολουθίας τυχαίων αριθμών στις περιπτώσεις που απαιτείται η δημιουργία στοχαστικών

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

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

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

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

Κεφάλαιο 1. Βασικές έννοιες στην κρυπτογραφία

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

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

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

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

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

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

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης Κατάλογος Περιεχομένων 1 ΑΣΎΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΊΑ ΚΑΙ PGP...- 3-1.1 ΕΙΣΑΓΩΓΉ...- 3-1.2 ΤΙ ΕΊΝΑΙ ΤΟ PGP;...- 4-1.3 ΤΟ PGP ΒΉΜΑ ΒΉΜΑ......-

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

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

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

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

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

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

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

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

ΒΑΣΙΚΑ ΘΕΜΑΤΑ ΚΡΥΠΤΟΓΡΑΦΙΑΣ ΒΑΣΙΚΑ ΘΕΜΑΤΑ ΚΡΥΠΤΟΓΡΑΦΙΑΣ 2. ΒΑΣΙΚΑ ΘΕΜΑΤΑ ΚΡΥΠΤΟΓΡΑΦΙΑΣ 2.1 Εισαγωγικές Παρατηρήσεις Στο κεφάλαιο αυτό επεξηγούνται οι βασικές ενότητες από την Εφαρμοσμένη Κρυπτογραφία που θεωρούνται απαραίτητες για

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