ΣΧΕΔΙΑΣΗ ΣΕ ΥΛΙΚΟ ΚΑΙ ΠΕΡΙΓΡΑΦΗ ΜΕ VHDL TON ΚΡΥΠΤΟΓΡΑΦΙΚΟ ΑΛΓΟΡΙΘΜΟ RIJNDAEL

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

Download "ΣΧΕΔΙΑΣΗ ΣΕ ΥΛΙΚΟ ΚΑΙ ΠΕΡΙΓΡΑΦΗ ΜΕ VHDL TON ΚΡΥΠΤΟΓΡΑΦΙΚΟ ΑΛΓΟΡΙΘΜΟ RIJNDAEL"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ Π.Μ.Σ. ΡΑΔΙΟΗΛΕΚΤΡΟΛΟΓΙΑΣ ΗΛΕΚΤΡΟΝΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΥΚΛΩΜΑΤΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΣΧΕΔΙΑΣΗ ΣΕ ΥΛΙΚΟ ΚΑΙ ΠΕΡΙΓΡΑΦΗ ΜΕ VHDL TON ΚΡΥΠΤΟΓΡΑΦΙΚΟ ΑΛΓΟΡΙΘΜΟ RIJNDAEL ΧΟΥΜΚΟΣΛΗΣ ΑΧΙΛΛΕΑΣ Επιβλέπων Γ.Θεοδωρίδης Λέκτορας του Τμήματος Φυσικής ΘΕΣΣΑΛΟΝΙΚΗ 2008

2 ΠΕΡΙΕΧΟΜΕΝΑ Κεφάλαιο 1 ο : Κρυπτογραφία.... σελ :Ορολογία σελ :Κατηγοριες αλγόριθμων.....σελ :Kρυπταναλυση......σελ :Ασφαλεια αλγόριθμων......σελ :Γνωστοι αλγοριθμοι κρυπτογραφιας.....σελ :Διαχειρηση κλειδιων σελ.19 Κεφάλαιο 2 ο : 2.Περιγραφή του Αλγορίθμου Rijndael....σελ : To state, το κλειδι του αλγοριθμου και ο αριθμος των γυρων...σελ : Ο μετασχηματισμος των γυρων σελ : Ο μετασχηματισμος ByteSub....σελ : Ο μετασχηματισμος ShiftRow σελ : Ο μετασχηματισμος MixColumn......σελ : Tο σταδιο της προσθεσης με το κλειδι-γυρου......σελ.45 Κεφάλαιο 3 ο : 1.Αναλυτικη Περιγραφή..σελ.47 2 : Aρχιτεκτονικη συστηματος.....σελ.50 3 : VHDL.....σελ.56 4 : LEONARDO SPECTRUM...σελ.58 Κεφάλαιο 4 ο : Λεπτομερης Παρουσιαση των components..σελ.59 1

3 4.1 : Μετρητης count_round......σελ : Μετρητης count_final σελ : Μετρητης count_mix......σελ : Moναδα εισοδου δεδομενων κλειδιου Load_key_input......σελ : Moναδα εισοδου δεδομενων Load_input......σελ : Moναδα ελεγχου FSM......σελ : Εncr/Dec_unit σελ.85 Κεφάλαιο 5 ο : Αποτελέσματα. σελ : Επιβεβαιωση ορθης λειτουργιας.. σελ : Επιδοση επιφανειας-ταχυτητας... σελ.113 Συμπεράσματα:....σελ.274 Παράρτημα Α: Πίνακες.. σελ.114 Παράρτημα Β: Κωδικες....σελ.114 2

4 Λίστα Πινάκων Πίνακας 1 παράδειγμα για STATE με Nb = 6....σελ.36 Πίνακας 2 παράδειγμα για Cipher Key με Nk = 4..σελ.37 Πίνακας 3 Ο αριθμός των γύρων(nr) ως συνάρτηση του μεγέθους των block και Κλειδιού.σελ.38 Πίνακας 4 τιμές ολίσθησης για διάφορα μεγέθη block...σελ.42 Λίστα Σχημάτων σχήμα 1 κρυπτογράφηση-αποκρυπτογράφηση...σελ.10 σχήμα 2 O μετασχηματισμός ByteSub σε κάθε ξεχωριστό byte του State...σελ.41 σχήμα 3 O μετασχηματισμός ShiftRow σε κάθε μια σειρά του State State...σελ.42 σχήμα 4 O μετασχηματισμός MixColumn στις κολώνες του State.σελ.44 σχήμα 5 Στην πρόσθεση κλειδιού εφαρμόζεται μια EXOR μεταξύ Round Key και State....σελ.45 σχήμα 6 Σχηματική απεικόνιση της εσωτερικής αρχιτεκτονικής των επιμέρους components που υλοποιούν τα στάδια του αλγόριθμου.σελ.51 σχήμα 7 Σχηματική απεικόνιση της εσωτερικής αρχιτεκτονικής των κεντρικων components που υλοποιούν τα στάδια του αλγόριθμου.σελ.52 σχήμα 8 συγκεντρωτικό διάγραμμα της συνολικής διάταξης των components 3

5 .σελ.53 σχήμα 9 διάγραμμα βαθμίδας του μετρητή count_round σελ.58 σχήμα 10 διάγραμμα βαθμίδας του μετρητή count_final...σελ.59 σχήμα 11 διάγραμμα βαθμίδας του μετρητή count_mix.σελ.60 σχήμα 12 διάγραμμα εισόδων-εξόδων μονάδας Load_keyinput.σελ.61 σχήμα 13 διάγραμμα επιμέρων components της μονάδας Load_keyinput..σελ.62 σχήμα 14 διάγραμμα βαθμίδας του καταχωρητη key_register σελ.63 σχήμα 15 διάγραμμα βαθμίδας του καταχωρητη key_register... σελ.63 σχήμα 16 διάγραμμα ροης μονάδας fsm_keyregister.. σελ.65 σχήμα 17 διάγραμμα εισόδων-εξόδων μονάδας Load_input σελ.66 σχήμα 18 διάγραμμα επιμέρων components της μονάδας Load_input... σελ.67 σχήμα 19 διάγραμμα βαθμίδας καταχωρητη d_mem..σελ.68 σχήμα 20 διάγραμμα βαθμίδας καταχωρητη katax.....σελ.69 σχήμα 21 διάγραμμα βαθμίδας μετρητη counter_signal....σελ.70 σχήμα 22 διάγραμμα ροης μονάδας FSM_input..σελ.73 σχήμα 23 διάγραμμα εισοδων-εξοδων μονάδας FSM_input....σελ.74 σχήμα 24 διάγραμμα ροης μονάδας AES_controller...σελ.81 σχήμα 25 διάγραμμα εισοδων-εξοδων μονάδας AES_controller....σελ.83 σχήμα 26 διάγραμμα βαθμιδών της μονάδας CORE...σελ.85 σχήμα 27 διάγραμμα βαθμίδας καταχωρητη εισόδου....σελ.86 σχήμα 28 διάγραμμα βαθμίδας αθροιστή init_key_add. σελ.86 σχήμα 29 διάγραμμα βαθμίδας πολυπλεκτη mux_unit0....σελ.88 σχήμα 30 διάγραμμα βαθμίδας Βasic_Block..σελ.89 σχήμα 31 διάγραμμα βαθμίδας pln_reg0... σελ.90 σχήμα 32 διάγραμμα βαθμίδας SB0x_stage0....σελ.91 σχήμα 33 διάγραμμα βαθμίδας demux_sbox0.....σελ.91 σχήμα 34 διάγραμμα βαθμίδας S_box....σελ.92 σχήμα 35 διάγραμμα 16 βαθμίδων s_box....σελ.93 4

6 σχήμα 36 διάγραμμα πολυπλεκτη mux_sbox...σελ.94 σχήμα 37 διάγραμμα βαθμίδας plan_reg01...σελ.94 σχήμα 38 διάγραμμα βαθμίδας Shiftrow_stage0... σελ.95 σχήμα 39 διάγραμμα βαθμίδας demux_shiftrot σελ.95 σχήμα 40 διάγραμμα βαθμίδας shift_rot0.....σελ.96 σχήμα 41 διάγραμμα βαθμίδας invshift_rot0....σελ.96 σχήμα 42 διάγραμμα βαθμίδας mux_shiftrot0....σελ.97 σχήμα 43 διάγραμμα βαθμίδας plan_reg σελ.97 σχήμα 44 διάγραμμα βαθμίδας MixCol_stage σελ.98 σχήμα 45 διάγραμμα βαθμίδας MixCol_byte..σελ.100 σχήμα 46 διάγραμμα βαθμίδας MixCol_col....σελ.100 σχήμα 47 διάγραμμα των 4βαθμίδων MixCol_column....σελ.101 σχήμα 48 διάγραμμα βαθμίδας MixCol_state σελ.102 σχήμα 49 διάγραμμα βαθμίδας Κey_add.....σελ.103 σχήμα 50 διάγραμμα βαθμίδας demux_unit.....σελ.103 σχήμα 51 διάγραμμα πολυπλεκτη mux_sbox...σελ.82 σχήμα 52 διάγραμμα πολυπλεκτη mux_sbox...σελ.82 5

7 ΠΕΡΙΛΗΨΗ Η εργασία που επιτεύχθηκε ήταν η υλοποίηση του αλγόριθμου κρυπτογραφίας AES Rinjdael για δεδομένα μεγέθους λέξης 128bits.Η μεθοδολογία υλοποίησης και για διάταξη που δουλεύει με δεδομένα μεγέθους 192 και 256 bits είναι ακριβώς η ίδια. Για διδακτικούς σκοπούς και λόγους έχει επιλεχθεί το μέγεθος των 128bits αφού έχει λιγότερα bits και άρα μπορεί κάποιος να παρακολουθήσει ευκολότερα την διαδικασία κρυπτογράφησης/αποκρυπτογράφησης ανά στάδιο. Σκοπός της εργασίας ήταν η υλοποίηση της διάταξης που μπορεί να πραγματοποιήσει την κρυπτογράφηση/αποκρυπτογράφηση δεδομένων. Η γεννήτρια κλειδιών που απαιτείται για την πλήρη λειτουργία του αλγόριθμου και της αντίστοιχης μονάδας μνήμης RAM είναι στόχος κάποιας άλλης ευρύτερης εργασίας. Η αρχιτεκτονική που επιλέχθηκε για την υλοποίηση του αλγόριθμου είναι η pipelined αρχιτεκτονική.η χρήση αυτής της αρχιτεκτονικής υπερισχύει της απλής υλοποίησης αρχιτεκτονικής. Δηλαδή, είναι προτιμότερο και περισσότερο χρήσιμο να χωρίζονται τα δεδομένα σε άλλα επιμέρους πακέτα δεδομένα έτσι ώστε να είναι συνέχεια <<απασχολημένη>> η μονάδα επεξεργασίας σε αντίθεση με την αρχιτεκτονική απλής υλοποίησης. Αντί λοιπόν να επεξεργάζεται ένα πακέτο δεδομένων την φορά στην μονάδα επεξεργασίας και έτσι το κάθε component που υλοποιεί τα 4 στάδια του αλγόριθμου επεξεργάζεται το πακέτο δεδομένων ενώ τα υπόλοιπα component αδρανούν 6

8 component λοιπόν τα οποία δεν έχουν δεχθεί δεδομένα περιμένουν να υλοποιήσει το κάθε γύρο για να γεμίσει και πάλι με δεδομένα. Ο προγραμματισμός έγινε χρησιμοποιώντας την <<γλώσσα>> ψηφιακού προγραμματισμού VHDL( very high descriptive language ) με γνώμονα την την όσο γίνεται καλύτερη και ταχύτερη λειτουργία των επιμέρους components αλλά και την όσο γίνεται μικρότερη χρησιμοποίηση ψηφιακών κυκλωμάτων. Σκοπός μας ήταν λοιπόν η όσο το δυνατόν μικρότερη έκταση των κυκλωμάτων ( circuit area ). Σκοπός της περαιτέρω έρευνας είναι η προσπάθεια εξεύρεσης νέων τρόπων και μεθοδολογιών αποδοτικότερων, τόσο σε ταχύτητα επεξεργασίας όσο και σε επιφάνεια κυκλώματος, για την υλοποίηση του αλγόριθμου AES.Τα εργαλεία με τα οποία δουλέψαμε είναι τα Leonardo spectrum b και το ModelSim SE-EE 5,4e. To πρώτο εργαλείο χρησιμοποιείται για τον έλεγχο του κώδικα προγραμματισμού αλλά και υλοποιεί το κύκλωμα το ψηφιακό. Το δεύτερο εργαλείο είναι αυτό στο οποίο και ελέγχουμε την σωστή λειτουργία του κωδικα.ελεγχουμε το σωστό χρονισμό και την σωστή ροή δεδομένων του κάθε component ξεχωριστά αλλά και του συνολικού γενικού component. H εργασία και η υλοποίηση του αλγόριθμου με άλλα εργαλεία καινούργια και πιο εξελιγμένα θα έχει ως αποτέλεσμα καλυτέρα αποτελέσματα τόσο σε επίπεδο προγραμματισμού ( software ) όσο και σε επίπεδο δημιουργίας κυκλώματος ( hardware ). Ωστόσο, θεωρούμε ότι τα μεγαλύτερα περιθώρια βελτίωσης του κυκλώματος υλοποίησης του αλγόριθμου υπάρχουν στον τομεα του καλύτερου και πιο << έξυπνου >> προγραμματισμου.δηλαδη, μπορεί και άλλη αρχιτεκτονική πέρα της pipelined αρχιτεκτονικής να αποδώσει καλύτερα είτε ως έχει είτε με κάποια παραλλαγή άλλων αρχιτεκτονικών εφαρμογής. Αντικείμενο αυτής της εργασίας είναι η προσπάθεια υλοποίησης του αλγόριθμου κρυπτογραφίας AES Rinjdael αλλά και μέσω της υλοποίησης η καλύτερη εμβάθυνση του τρόπου χρήσης της <<γλώσσας προγραμματισμού>> ψηφιακών VHDL. Η υλοποίηση λοιπόν γίνεται χρησιμοποιώντας τον προγραμματισμό μέσω της <<γλώσσας προγραμματισμού>> ψηφιακών VHDL και των εργαλείων Leonardo spectrum b και ModelSim SE-EE 5,4e. Η VHDL υλοποιεί την δημιουργία κυκλωμάτων ψηφιακών που πραγματοποιούν τα στάδια που απαιτεί ο αλγόριθμος φύση της VHDL είναι μια περιγραφική << γλωσσά >>. Αυτό σημαίνει ότι με τον κατάλληλο κώδικα προγραμματισμού περιγράφουμε στα εργαλεία που 7

9 χρησιμοποιούμε, τα component που απαιτούνται για την υλοποίηση των σταδίων του αλγόριθμου. Η κεντρική αρχιτεκτονική της συνολικής σχεδίασης του γενικού κυκλώματος είναι η pipelined αρχιτεκτονική. Η υλοποίηση δηλαδή των επιμέρους σταδίων έτσι ώστε να επεξεργάζονται συνέχεια δεδομένα το component που υλοποιεί την Enc/Dec_Unit βαθμίδα επεξεργασιας,αντι να επεξεργάζεται δεδομένα ένα component την φορά. Έτσι, γι αυτό το λόγο η σχεδίαση γίνεται πιο πολύπλοκη και απαιτείται ο σχεδιασμός κάποιων βαθμιδών παραπανω.απαιτειται λοιπόν η χρήση components που πραγματοποιούν μετρητές, μονάδα εισόδου δεδομένων και κλειδιού αλλά μιας κεντρικής μονάδας FSM που ελέγχει και συντονίζει την λειτουργία όλων των υπόλοιπων βαθμιδών αλλά και της συνολικής διάταξης. Ο απόλυτος συγχρονισμός όλων αυτών των επιμέρους components είναι και το ζητούμενο κατά την σύνταξη του κώδικα που τα υλοποιεί. Η αρχιτεκτονική που υλοποιείται είναι τέτοια ώστε να είναι δυνατή η λειτουργία της κρυπτογραφίας αλλά και της αποκρυπτογραφιάς από το ίδιο κύκλωμα σχεδίαση της διάταξης είναι τέτοια ώστε χρησιμοποιώντας μια κοινή κυκλωματική υλοποίηση που περιέχει components που πραγματοποιούν τόσο κρυπτογράφηση όσο και άλλα components που πραγματοποιούν όσο και αποκρυπτογραφηση.αυτη η λειτουργία είναι εφικτή με την χρήση του κατάλληλου σήματος ελέγχου που επιλέγει τα αντίστοιχα components που απαιτουνται.ετσι, μπορούμε να πούμε ότι όλα τα components που υλοποιούν τα 4 στάδια του αλγόριθμου αποτελούνται το καθένα από 2 άλλα επιμέρους components που το καθένα υλοποιεί η την μια λειτουργία η την άλλη. Η ροή δεδομένων μεγέθους 128bits αφού έχουν επεξεργασθεί, εξέρχονται από το κεντρικό component CORE και τότε η συνολική διάταξη είτε συνεχίζει την λειτουργία της επεξεργασίας είτε παραμένει σε αδράνεια και αναμένει τα καινούργια δεδομένα στην είσοδο της μονάδας εισόδου δεδομένων. 8

10 ΑBSTRACT The effort to protect information and the safety of communications has always been a major and most significant task. During transmission of confidential information, there is always the fear of their interception or stealing by nonauthorized persons or enemies. The effort to protect information has led to the need to find new ways for encryption in such a way that they are incomprehensible and protected from whoever tries to slip into their transmission, even if he manages to get them. This need and effort of encryption is nowdays a science and is called cryptography. In order to encrypt data in a message, an encryption algorithm is needed. The safety of the algorithm usually has nothing to do with its secrecy, but with its resistance to attacks. Therefore, the algorithm uses keys, meaning secret codes necessary for the encryption and decryption of the message. The object of this project is the development of the AES Rijndael algorithm.. Its design is rather conservative, yet still allows a very efficient implementation. For the implementation of the algorithm we choose the choice of pipelined architecture.it uses 4 different stages which operate on each byte idependently and an easy analysis that enables us to demonstrate its security against all known types of attack. We have a 128-bit data block, size and a 128-bit key. In this project, we develop the design that it will reproduce the algorithm using for tools the programs Leonardo and Modelsim. We design the circuit that it will accomplish the encryption and the decryption.we accomplish to design a unit which is able to operate both as encryption and as the decryptio. The circuit is composed of 7 components, which are: the counters, count_round count_final and count_mix, the load input units Load_input_unit and Load_key_unit, the FSM control and finally the main component Encr/Decr_unit. The algorithm constituted from 10 rounds from which the first and the 10th are different from the others. So, the FSM control unit is efforted to control amd <<know>> at which stage and which round the data are.the counters and the load input units are developed with such a way that it is possible to prepare the data for a the pipelined unit Encr/Decr. The language that was used is the VHDL and the mode of composing the codes is descriptive. 9

11 For the implementation and development of the project, we use a design program, the Leonardo Spectrum and the simulation program (the Modelsim) in order to check the right timing and operation of components and circuits.. 10

12 KΕΦΑΛΑΙΟ 1 KΡΥΠΤΟΓΡΑΦΙΑ 1.1 ΟΡΟΛΟΓΙΑ Αποστολή-λήψη μηνύματος Υποθέτουμε ότι ένας αποστολέας θέλει να στείλει ένα μήνυμα σε έναν παραλήπτη. Ή αποστολή αυτή πρέπει να γίνει με ασφάλεια, κάτι που σημαίνει ότι δεν μπορεί να διαβάσει το μήνυμα κάποιος υποκλοπέας. Μηνύματα και κρυπτογράφηση Το μήνυμα ονομάζεται και καθαρό κείμενο (plaintext). Η διαδικασία μετατροπής ενός μηνύματος με τέτοιο τρόπο ώστε να μην είναι φανερό το περιεχόμενο του λέγεται κρυπτογράφηση (encryption). Το αποτέλεσμα της διαδικασίας κρυπτογράφησης ονομάζεται κρυπτογραφημένο κείμενο (cipher text). Η αντίστροφη διαδικασία ονομάζεται αποκρυπτογράφηση (decryption). Τα παραπάνω φαίνονται στο σχήμα 1. σχήμα 1 κρυπτογράφηση-αποκρυπτογράφηση Η επιστήμη που ασχολείται με την ασφάλεια των μεταδιδόμενων μηνυμάτων ονομάζεται κρυπτογραφία, ενώ η επιστήμη που ασχολείται με την ανάκτηση των κρυπτογραφημένων μηνυμάτων ονομάζεται κρυπτανάλυση. Ο κλάδος των μαθηματικών που περιλαμβάνει την κρυπτογραφία και την κρυπτανάλυση είναι η κρυπτολογία. Το plaintext συμβολίζεται με το γράμμα Μ και μπορεί να είναι μία ακολουθία από bits, ένα αρχείο κειμένου, ήχου, κινούμενης εικόνας ή οτιδήποτε. Όσον αφορά τους υπολογιστές, το Μ απλά είναι δεδομένα σε δυαδική μορφή. Το plaintext μπορεί να προορίζεται είτε για μετάδοση, είτε για αποθήκευση. Σε κάθε περίπτωση, πάντως, το plaintext είναι μήνυμα προς κρυπτογράφηση. Το cipher text συμβολίζεται με C, και είναι επίσης δεδομένα σε δυαδική μορφή. Το cipher text μπορεί να είναι ίδιο σε 11

13 μέγεθος με το Μ ή και μεγαλύτερο. Συνδυάζοντας, όμως, την κρυπτογράφηση με την συμπίεση, το C γίνεται μικρότερο από το Μ. Ωστόσο η κρυπτογράφηση δεν μπορεί να το επιτύχει αυτό από μόνη της. Η συνάρτηση κρυπτογράφησης Ε, εφαρμόζεται στο Μ και παράγεται το C. Με μαθηματικό συμβολισμό δηλαδή: E ( M ) = C Κατά την αντίστροφη διαδικασία, η συνάρτηση αποκρυπτογράφησης D εφαρμόζεται στο C και παράγεται το Μ: C ( C) = M Αλγόριθμοι και κωδικοί-κλειδιά Ένας αλγόριθμος κρυπτογραφίας (cipher) είναι η μαθηματική συνάρτηση που χρησιμοποιείται για κρυπτογράφηση και αποκρυπτογράφηση. Γενικά υπάρχουν δύο συσχετιζόμενες συναρτήσεις : μία για κρυπτογράφηση και μία για αποκρυπτογράφηση. Εάν η ασφάλεια ενός αλγορίθμου βασίζεται στο να μείνει κρυφός ο τρόπος λειτουργίας του, τότε ονομάζεται περιορισμένος (restricted) αλγόριθμος. Τέτοιοι αλγόριθμοι έχουν πλέον μόνο ιστορικό ενδιαφέρον, αφού είναι ανεπαρκείς για τις σημερινές απαιτήσεις. Μία μεγάλη ομάδα χρηστών η οποία μπορεί και να μεταβάλλεται και ως προς τη σύνθεση της, δεν μπορεί να χρησιμοποιεί τέτοιους αλγορίθμους γιατί κάθε φορά που κάποιος θα εγκατέλειπε την ομάδα, όλοι οι άλλοι θα έπρεπε να χρησιμοποιούν πλέον διαφορετικό αλγόριθμο. Αν κάποιος αποκαλύψει τυχαία το «μυστικό», όλοι οι υπόλοιποι πρέπει να αλλάξουν αλγόριθμο. Επιπρόσθετα, οι περιορισμένοι αλγόριθμοι δεν επιτρέπουν ποιοτικό έλεγχο ή τυποποίηση. Κάθε ομάδα χρηστών πρέπει να έχει τον δικό της μοναδικό αλγόριθμο. Μια τέτοια ομάδα δεν μπορεί να χρησιμοποιεί προϊόντα software και hardware που δεν είναι φτιαγμένα κατά παραγγελία, γιατί ένας υποκλοπέας μπορεί να αγοράσει το ίδιο προϊόν και να μάθει τον αλγόριθμο. Αν κανένα μέλος της ομάδας δεν είναι καλός κρυπτογράφος, τότε δεν θα γνωρίζουν αν έχουν έναν ασφαλή αλγόριθμο. Παρ' όλα αυτά τα βασικά μειονεκτήματα, οι περιορισμένοι αλγόριθμοι είναι πολύ δημοφιλείς σε εφαρμογές μικρής ασφάλειας. Οι χρήστες είτε δεν συνειδητοποιούν, είτε δεν νοιάζονται για τα προβλήματα ασφάλειας που υπάρχουν στο σύστημα τους. Η μοντέρνα κρυπτογραφία επιλύει όλα αυτά τα προβλήματα με το κλειδί (key), το οποίο συμβολίζεται με Κ. Το εύρος των πιθανών τιμών που μπορεί να πάρει το κλειδί 12

14 ονομάζεται Keyspace. Τόσο η κρυπτογράφηση, όσο και η αποκρυπτογράφηση χρησιμοποιούν το κλειδί οπότε οι συναρτήσεις παίρνουν την εξής μορφή : E D K K ( M ) = C ( C) = M Η ασφάλεια των παραπάνω αλγορίθμων βασίζεται αποκλειστικά στο κλειδί και όχι στις επιμέρους λεπτομέρειες του αλγορίθμου. Αυτό σημαίνει ότι ο αλγόριθμος μπορεί να δημοσιοποιηθεί και να αναλυθεί, οπότε και προϊόντα που χρησιμοποιούν τον αλγόριθμο μπορούν να παραχθούν μαζικά. Συμπερασματικά, δεν υπάρχει πρόβλημα αν κάποιος υποκλοπέας γνωρίζει τον αλγόριθμο, γιατί αν δεν γνωρίζει το ειδικό κλειδί, δεν μπορεί να διαβάσει τα απεσταλμένα μηνύματα. Κρυπτοσύστημα (cryptosystem) είναι ένας αλγόριθμος μαζί με όλα τα πιθανά plaintexts, cipher texts και κλειδιά. Υπηρεσίες κρυπτογραφίας Η κρυπτογραφία, εκτός του ότι παρέχει εμπιστευτικότητα, παρέχει και άλλες υπηρεσίες όπως: Πιστοποίηση (Authentication). Ο παραλήπτης ενός μηνύματος πρέπει να έχει τη δυνατότητα να εξακριβώσει την προέλευση του μηνύματος. Ένας εισβολέας, δηλαδή, δεν θα πρέπει να έχει την ικανότητα να μεταμφιεστεί σαν κάποιος άλλος. Ακεραιότητα (Integrity).Ο παραλήπτης ενός μηνύματος πρέπει να έχει τη δυνατότητα να επιβεβαιώνει ότι το μήνυμα δεν τροποποιήθηκε κατά τη μετάδοση. Ένας εισβολέας, δηλαδή, δεν θα πρέπει να έχει την ικανότητα να αντικαταστήσει ένα γνήσιο μήνυμα με ένα ψεύτικο. Μη-άρνηση (No repudiation). Ο αποστολέας ενός μηνύματος δεν μπορεί να αρνηθεί ψευδώς- αργότερα ότι αυτός έστειλε το μήνυμα. Αυτές είναι οι τρεις βασικές απαιτήσεις στην αλληλεπίδραση των υπολογιστών, και είναι αντίστοιχες τον διαπροσωπικών επαφών. Για παράδειγμα κάποιος είναι όντως αυτός που υποστηρίζει, τα διαπιστευτήρια του (π.χ. ταυτότητα, άδεια οδήγησης) είναι έγκυρα, και ένα έγγραφο που δηλώνεται ότι προήλθε από κάποιο άτομο, όντως προήλθε από το άτομο αυτό. 13

15 1.2 ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ Υπάρχουν δύο κατηγορίες αλγορίθμων κρυπτογραφίας που βασίζονται σε κλειδί: οι συμμετρικοί αλγόριθμοι και οι αλγόριθμοι δημοσίου κλειδιού. (A) Συμμετρικοί Αλγόριθμοι Συμμετρικοί αλγόριθμοι (symmetric algorithms) είναι οι αλγόριθμοι στους οποίους το κλειδί κρυπτογράφησης μπορεί να υπολογιστεί από το αντίστοιχο αποκρυπτογράφησης και αντιστρόφως. Στις περισσότερες περιπτώσεις συμμετρικών αλγορίθμων το κλειδί κρυπτογράφησης είναι ίδιο με το κλειδί αποκρυπτογράφησης. Οι αλγόριθμοι αυτοί ονομάζονται και αλγόριθμοι μυστικού κλειδιού ή ενός / μονού κλειδιού. Σε αυτούς, λοιπόν, απαιτείται ο αποστολέας κι ο παραλήπτης να συμφωνήσουν σ' ένα κλειδί προτού ξεκινήσουν να επικοινωνούν με ασφάλεια. Η ασφάλεια ενός συμμετρικού αλγορίθμου βασίζεται στο κλειδί. Η αποκάλυψη του κλειδιού σημαίνει ότι οποιοσδήποτε μπορεί να κρυπτογραφεί και να αποκρυπτογραφεί μηνύματα. Εφόσον η επικοινωνία πρέπει να παραμείνει μυστική, πρέπει να κρατείται μυστικό το κλειδί. Η κρυπτογράφηση και αποκρυπτογράφηση με συμμετρικό αλγόριθμο, συμβολίζεται ως εξής: E D K K ( M ) = C ( C) = M Οι συμμετρικοί αλγόριθμοι μπορούν να χωριστούν σε δύο κατηγορίες. Κάποιοι ενεργούν στο plaintext κατά 1 bit (ή 1 byte) κάθε φορά και ονομάζονται stream algorithms ή stream ciphers. Άλλοι ενεργούν στο plaintext κατά ομάδες bit κάθε φορά, οι οποίες ονομάζονται blocks. Αυτοί είναι οι block algorithms ή block ciphers. Στους σύγχρονους υπολογιστικούς αλγορίθμους ένα τυπικό μέγεθος block είναι 64 bits, το οποίο είναι αρκετά μεγάλο για να παρεμποδίζει πιθανή ανάλυση από υποκλοπείς, αλλά και αρκετά μικρό για να είναι εύχρηστο. (B)Αλγόριθμοι Δημοσίου Κλειδιού Οι αλγόριθμοι δημόσιον κλειδιού (public-key algorithms) ονομάζονται και ασύμμετροι, σχεδιάζονται έτσι ώστε το κλειδί που χρησιμοποιείται για κρυπτογράφηση να είναι διαφορετικό από το κλειδί της αποκρυπτογράφησης. Επιπρόσθετα, το κλειδί αποκρυπτογράφησης δεν μπορεί τουλάχιστον σε εύλογο 14

16 χρονικό διάστημα να υπολογισθεί από το κλειδί κρυπτογράφησης. Ονομάζονται δε «δημοσίου κλειδιού», γιατί το κλειδί κρυπτογράφησης δεν παραμένει μυστικό αλλά δημοσιοποιείται. Οποιοσδήποτε δηλαδή μπορεί να κρυπτογραφήσει ένα μήνυμα, αλλά μόνο συγκεκριμένος κάτοχος του αντίστοιχου κλειδιού αποκρυπτογράφησης μπορεί να αποκρυπτογραφήσει το μήνυμα. Σ' αυτά τα συστήματα το κλειδί κρυπτογράφησης ονομάζεται συνήθως δημόσιο κλειδί (public key) και το κλειδί αποκρυπτογράφησης ιδιωτικό κλειδί (private key). Η κρυπτογράφηση χρησιμοποιώντας το δημόσιο κλειδί και η αποκρυπτογράφηση με το αντίστοιχο ιδιωτικό κλειδί (το οποίο είναι διαφορετικό) συμβολίζεται ως εξής : E D K K ( M ) = C ( C) = M Κάποιες φορές μηνύματα κρυπτογραφούνται με το ιδιωτικό κλειδί και αποκρυπτογραφούνται με τα δημόσιο κλειδί. Αυτό χρησιμοποιείται στις ψηφιακές υπογραφές (digital signatures). 1.3 KΡΥΠΤΑΝΑΛΥΣΗ Ο κύριος στόχος της κρυπτογραφίας είναι να μείνει μυστικό το plaintext (ή το κλειδί ή και τα δύο) από τους υποκλοπείς. Οι υποκλοπείς υποτίθεται ότι έχουν πλήρη πρόσβαση στην επικοινωνία μεταξύ αποστολέα και παραλήπτη. Κρυπτανάλυση είναι η επιστήμη της ανάκτησης το plaintext ενός μηνύματος, χωρίς να υπάρχει πρόσβαση στο κλειδί. Μια επιτυχημένη κρυπτανάλυση μπορεί να ανακτήσει το plaintext ή το κλειδί. Μπορεί επίσης να ανακαλύψει πιθανές αδυναμίες ενός κρυπτοσυστήματος που πιθανόν να οδηγήσουν στα προηγούμενα αποτελέσματα. Μία επιχειρούμενη Κρυπτανάλυση ονομάζεται επίθεση (attack). Υπάρχουν τέσσερις διαφορετικοί τύποι κρυπταναλυτικής επίθεσης. Σε καθέναν από αυτούς υποτίθεται ότι ο κρυπταναλυτής / υποκλοπέας έχει πλήρη γνώση του αλγορίθμου κρυπτογραφίας που χρησιμοποιείται. (Α)Επίθεση μόνο στο ciphertext (Cipher only attack) Ο υποκλοπέας έχει το ciphertext πολλών διαφορετικών μηνυμάτων, τα οποία έχουν κρυπτογραφηθεί με τον ίδιο αλγόριθμο. Στόχος του είναι να ανακτήσει τα plaintext όσο δυνατόν περισσότερων μηνυμάτων, ή ακόμα καλύτερα να εξάγει το 15

17 κλειδί (ή τα κλειδιά) που χρησιμοποιείται στηv κρυπτογράφηση των μηνυμάτων, έτσι ώστε να αποκρυπτογραφεί άλλα μηνύματα με τα ίδια κλειδιά. Γνωστά: C = E ( P ) C = E ( P ),LL C = E ( P ) 1 K 1, 2 K 2 i K i Εξαγόμενα: είτε C E ( P ) i+ 1 = K i+1 P, P, P, 1 2 L L i k, είτε ένας αλγόριθμος που να συνάγει το P i+ 1 από το (Β)Επίθεση σε γνωστό plaintext (Known plaintext attack) Ο υποκλοπέας έχει πρόσβαση όχι μόνο στο ciphertext διαφόρων μηνυμάτων, αλλά και στο plaintext αυτών των μηνυμάτων. Στόχος του είναι να εξάγει το κλειδί (ή τα κλειδιά) που χρησιμοποιείται στην κρυπτογράφηση των μηνυμάτων ή έναν αλγόριθμο για να αποκρυπτογραφήσει νέα μηνύματα που κρυπτογραφούνται με το ίδιο κλειδί. Γνωστά: P C = E ( P ), P, C = E ( P ) L P, C = E ( P ) 1, 1 K K 2 L Εξαγόμενα: είτε το k, είτε ένας αλγόριθμος που να συνάγει το P i+ 1 από το C E ( P ) = i+ 1 K i+1 i i K i (Γ)Επίθεση σε επιλεγόμενο plaintext (Chosen plaintext attack) Ο υποκλοπέας όχι μόνο έχει πρόσβαση στο ciphertext και στο αντίστοιχο plaintext για διάφορα μηνύματα, αλλά και επιλέγει το plaintext που κρυπτογραφείται. Αυτό είναι πολύ πιο ισχυρό σε σχέση με μια. επίθεση σε γνωστό plaintext, γιατί ο υποκλοπέας έχει τη δυνατότητα να επιλέξει να κρυπτογραφήσει συγκεκριμένα plaintext block, τα οποία μπορεί να αποδίδουν περισσότερες πληροφορίες σχετικά με το κλειδί. Στόχος του είναι να εξάγει το κλειδί (ή τα κλειδιά) που χρησιμοποιείται στην κρυπτογράφηση των μηνυμάτων ή έναν αλγόριθμο για να αποκρυπτογραφήσει νέα μηνύματα που κρυπτογραφούνται με το ίδιο κλειδί. Γνωστά: C P = D ( C ), C, P = D ( C ) L C, P = D ( C ) 1, 1 K K 2 L i i K i, όπου ο υποκλοπέας μπορεί να επιλέξει P, P,L 2 LP 1 i Εξαγόμενα : είτε το k, είτε ένας αλγόριθμος που να συνάγει το P i+ 1 από το C E ( P ) = i+ 1 K i+1 (Δ)Προσαρμόσιμη επίθεση σε επιλεγόμενο plaintext (Adaptive Chosen plaintext attack) 16

18 Είναι μια ειδική περίπτωση επίθεσης σε επιλεγόμενο plaintext. Ο υποκλοπέας όχι μόνο επιλέγει το plaintext που κρυπτογραφείται, αλλά μπορεί και να τροποποιήσει την επιλογή του βασιζόμενος σε αποτελέσματα προηγούμενης κρυπτογράφησης. Σε μια επίθεση σε επιλεγόμενο plaintext, ο υποκλοπέας μπορεί απλά να έχει τη δυνατότητα να επιλέξει ένα μεγάλο block του plaintext που πρόκειται να κρυπτογραφηθεί. Ενώ σε μια προσαρμόσιμη επίθεση σε επιλεγόμενο plaintext μπορεί να επιλέξει ένα μικρότερο block του plaintext και στη συνέχεια κάποιο άλλο block βασιζόμενος στα αποτελέσματα του πρώτου κοκ. Υπάρχουν τουλάχιστον τρεις ακόμη τύποι κρυπταναλυτικής επίθεσης: (Ε)Επίθεση επιλεγόμενου ciphertext (Chosen ciphertext attack) Ο υποκλοπέας μπορεί να επιλέξει διαφορετικά ciphertexts που πρόκειται να αποκρυπτογραφηθούν κι έχει πρόσβαση στο αποκρυπτογραφημένο plaintext. Στόχος του είναι να εξάγει το κλειδί. Γνωστά: C P = D ( C ), C, P = D ( C ) L C, P = D ( C ) 1, 1 K K 2 L Εξαγόμενο: k Η επίθεση αυτή είναι κυρίως εφαρμόσιμη σε αλγορίθμους δημοσίου κλειδιού. i i K i (Ζ) Επίθεση επιλεγόμενου κλειδιού (Chosen key attack) Η επίθεση αυτή δεν σημαίνει ο μπορεί ο υποκλοπέας να επιλέξει κλειδί. Σημαίνει ότι γνωρίζει κάπως τη σχέση που υπάρχει μεταξύ διαφορετικών κλειδιών. (Η)Rurrer-hose cryptanalysis Ο υποκλοπέας απειλεί, εκβιάζει ή βασανίζει κάποιον, μέχρι ότου αποσπάσει το κλειδί. Συχνά, η δωροδοκία αναφέρεται σαν επίθεση αγοράς κλειδί (purchase key attack). Όλες αυτές είναι πολύ ισχυρές επιθέσεις και συνήθως είναι καλύτερος τρόπος «σπασίματος» ενός αλγορίθμου. 1.4 ΑΣΦΑΛΕΙΑ ΑΛΓΟΡΙΘΜΩΝ Διαφορετικοί αλγόριθμοι προσφέρουν και διαφορετικά επίπεδα ασφάλειας, ανάλογα βέβαια με το πόσο δύσκολα αυτοί «σπάνε». Εάν το κόστος που απαιτείται για να «σπάσει» ένας αλγόριθμος είναι μεγαλύτερο από την αξία των κρυπτογραφημένων δεδομένων, ή εάν απαιτούμενος χρόνος είναι μεγαλύτερος από 17

19 το χρονικό διάστημα που τα κρυπτογραφημένα δεδομένα πρέπει να παραμείνουν μυστικά, τότε ο αλγόριθμος είναι πιθανότατα ασφαλής. Είναι σημαντικό το ότι η αξία των δεδομένων θα πρέπει πάντοτε να παραμένει μικρότερη από το κόστος «σπασίματος» της ασφάλειας που τα προστατεύει. Οι διάφορες κατηγορίες «σπασίματος» ενός αλγορίθμου -σε φθίνουσα σειρά όσον αφορά τη δριμύτητα τουςείναι: Ολοκληρωτικό «σπάσιμο» του αλγορίθμου (Total break) Ο υποκλοπέας βρίσκει το κλειδί Κ και μπορεί να αποκρυπτογραφήσει το μήνυμα D K ( C) = P. Γενική ανίχνευση (Global detuction) Ο υποκλοπέας βρίσκει έναν εναλλακτικό αλγόριθμο Α, ισοδύναμο με τον D K ( C), χωρίς να γνωρίζει το Κ. Οπότε μπορεί να αποκρυπτογραφήσω το μήνυμα χωρίς να έχει το κλειδί. Τοπική ανίχνευση (Local detuction) Ο υποκλοπέας βρίσκει το plaintext ενός «παρεμποδιζόμενου» ciphertext. Ανίχνευση πληροφορίας (Information detuction) Ο υποκλοπέας αποσπά κάποια πληροφορία σχετικά με το κλειδί ή το plaintext, όπως για παράδειγμα μερικά bits το κλειδιού ή κάποια πληροφορία σχετικά με τη δομή του plaintext. Ένας αλγόριθμος είναι απόλυτα ασφαλής αν δεν υπάρχει αρκετή πληροφορία για ν ανακτηθεί το plaintext, ανεξαρτήτως του πόσο τμήμα του ciphertext έχει ο υποκλοπέας. Μόνο ένα one-time pad. είναι αδύνατο να «σπάσει», παρ' ότι ο υποκλοπέας μπορεί να έχει απεριόριστα μέσο Όλα τα άλλα κρυπτοσυστήματα μπορούν να «σπάσουν» με μια επίθεση ciphertext only, πολύ απλά δοκιμάζοντας όλα τα πιθανά κλειδιά ένα προς ένα και ελέγχοντας το plaintext που προκύπτει (brute-force attack). Η κρυπτογραφία αφορά συστήματα που υπολογιστικός είναι αδύνατο να «σπάσουν». Ένας αλγόριθμος θεωρείται υπολογιστικός ασφαλής εφόσον είναι ανέφικτο να «σπάσει» με τα διαθέσιμα μέσα (είτε τα ήδη υπάρχοντα, είτε τα μελλοντικά). 18

20 ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΕΠΙΘΕΣΕΩΝ: Η πολυπλοκότητα μιας επίθεσης μετράται με διαφόρους τρόπους: (A)Πολυπλοκότητα δεδομένων (Data complexity) Το ποσό των δεδομένων που απαιτείται σαν είσοδος κατά την επίθεση (B)Πολυπλοκότητα διαδικασίας (Processing complexity) Ο χρόνος που απαιτείται για την εκτέλεση μιας επίθεσης. Απαιτήσεις μνήμης (Storage requirements) Το ποσό μνήμης που απαιτείται για την επίθεση. Σύμφωνα με μία εμπειρική μέθοδο σαν πολυπλοκότητα μιας επίθεσης θεωρείται ο μικρότερος από τους τρεις παραπάνω παράγοντες. Αν ένας αλγόριθμος έχει πολυπλοκότητα διαδικασίας 128 2, 128 τότε απαιτούνται 2 πράξεις (οι οποίες μπορεί να είναι και ιδιαίτερα χρονοβόρες) για να «σπάσουμε» τον αλγόριθμο. Αν υποθέσουμε ότι έχουμε αρκετή υπολογιστική ταχύτητα ώστε να εκτελούμε ένα εκατομμύριο πράξεις το δευτερόλεπτο, και αν συνδέσουμε παράλληλα ένα εκατομμύριο επεξεργαστές, τότε θα χρειαστούμε χρόνια για να αποκαλυφθεί το κλειδί, δηλαδή ένα δισεκατομμύριο φορές την ηλικία του σύμπαντος! 1.5 ΓΝΩΣΤΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΡΥΠΤΟΓΡΑΦΙΑΣ Μερικοί από τους πιο γνωστούς αλγορίθμους κρυπτογραφίας είναι οι εξής: DES (Data Encryption standard): Είναι ο πιο δημοφιλής συμμετρικός αλγόριθμος, ο οποίος και αποτελεί παγκόσμιο πρότυπο. Χρησιμοποιεί το ίδιο κλειδί τόσο για την κρυπτογράφηση, όσο και για την αποκρυπτογράφηση. RSA: Πήρε το όνομα του από τους εφευρέτες του (Rivest, Sharim, Adleman). Είναι ο πιο δημοφιλής αλγόριθμος δημόσιου κλειδιού. Χρησιμοποιείται τόσο για κρυπτογράφηση δεδομένων, όσο και για ψηφιακές υπογραφές. DSA (Digital Signature Algorithm): Είναι αλγόριθμος δημοσίου κλειδιού, ο οποίος χρησιμοποιείται μόνο για ψηφιακές υπογραφές και όχι για κρυπτογράφηση δεδομένων. 1.6 ΔΙΑΧΕΙΡΙΣΗ ΚΛΕΙΔΙΩΝ 19

21 Εισαγωγή Στην πραγματικότητα η διαχείριση κλειδιών είναι το πιο δύσκολο κομμάτι της κρυπτογραφίας. Ο σχεδιασμός ασφαλών κρυπτογραφικών αλγορίθμων και πρωτοκόλλων δεν είναι εύκολος, αλλά βασιζόμαστε στην μεγάλη έρευνα -σε ακαδημαϊκό επίπεδο- που γίνεται σε αυτή την περιοχή. Στην ουσία, το να διατηρήσουμε κρυφά τα κλειδιά είναι πολύ πιο δύσκολο. Οι υποκλοπείς επιτίθενται και σε συμμετρικά και σε δημοσίου-κλειδιού κρυπτοσυστήματα, μέσω της διαχείρισης κλειδιών των συστημάτων αυτών. Γιατί, λοιπόν, ένας υποκλοπέας πρέπει να κουραστεί προκειμένου να «σπάσει» έναν αλγόριθμο κρυπτογραφίας, εάν θα μπορούσε να ανακτήσει το κλειδί λόγω πιθανής «ακαταστασίας» στην διαδικασία αποθήκευσης του κλειδιού; Γιατί πρέπει να ξοδέψει τεράστια οικονομικά ποσά για να φτιάξει μια μηχανή υποκλοπής, εάν θα μπορούσε απλά να δωροδοκήσει έναν υπάλληλο με ένα μικρό ποσό; Ο υποκλοπέας μπορεί να κλέψει τα κλειδιά: είτε απαγάγοντας, είτε δελεάζοντας κάποιον που ξέρει το κλειδί. Είναι πολύ πιο εύκολο να βασιστείς σε πιθανές αδυναμίες των ανθρώπων, παρά σε αδυναμίες των κρυπτοσυστημάτων. Τα δύο συμβαλλόμενα μέρη στην επικοινωνία, ο αποστολέας κι ο παραλήπτης, πρέπει να προφυλάσσουν το κλειδί, ακριβώς όπως και τα δεδομένα που κρυπτογραφούνται. Ένα κλειδί πρέπει να αλλάζει τακτικά, γιατί αλλιώς μπορεί να υπάρξει τεράστια απώλεια δεδομένων. Δυστυχώς, πολλά προϊόντα της αγοράς ισχυρίζονται ότι εγγυώνται την ασφάλεια, προφασιζόμενα ότι χρησιμοποιούν κάποιον γνωστό αλγόριθμο κρυπτογραφίας, όπως π.χ. τον ΟΕ8, αλλά αυτό σε καμία περίπτωση δεν καλύπτει την αξιοπιστία της εφαρμογής, εάν δεν εξασφαλίζεται η μυστικότητα του κλειδιού. Μπορεί, δηλαδή, το πρόγραμμα να χρησιμοποιεί σωστά την κρυπτογράφηση ΟΕ8, αλλά παρ' όλα αυτά η εφαρμογή να είναι πλήρως ανασφαλής. 20

22 Δημιουργία κλειδιών Η ασφάλεια ενός αλγορίθμου βασίζεται στο κλειδί. Αν χρησιμοποιηθεί μια κρυπτογραφικούς αδύναμη διαδικασία δημιουργίας κλειδιών, τότε το όλο σύστημα θα είναι αδύναμο. Ο υποκλοπέας δεν χρειάζεται να υποκλέψει τον αλγόριθμο κρυπτογραφίας. Μπορεί να υποκλέψει τον αλγόριθμο της δημιουργίας κλειδιών. Μειωμένο εύρος κλειδιού Όπως αναφέρθηκε, το κλειδί μπορεί να πάρει κάποια τιμή από ένα μεγάλο πλήθος αριθμών. Το εύρος όλων των πιθανών τιμών ενός κλειδιού ονομάζεται εύρος κλειδιού (keyspace). Ο DES έχει κλειδί 56 bit. Αν υλοποιηθεί κατάλληλα, κάθε ακολουθία 56 bit (56 bit string) μπορεί να είναι το κλειδί. Οπότε υπάρχουν 56 2 (δηλαδή ) πιθανά κλειδιά. Το πρόγραμμα Norton Discreet για MS-DOS επιτρέπει μόνο ASCII κλειδιά, αναγκάζοντας το bit υψηλής τάξης (high order bit) να μηδενιστεί. Επίσης, το πρόγραμμα μετατρέπει τα πεζά γράμματα σε κεφαλαία, (οπότε το 5 bit κάθε byte είναι πάντοτε το αντίθετο από το 6 bit) και αγνοεί το bit χαμηλής τάξης (low order bit) κάθε byte κι έχει σαν αποτέλεσμα μόνο 2 40 κλειδιά. Αυτή η ανεπαρκής διαδικασία παραγωγής κλειδιών, έχει σαν αποτέλεσμα να είναι δέκα χιλιάδες φορές πιο εύκολο να «σπάσει» ο DES, σε σχέση με την σωστή υλοποίηση του. Ανεπαρκείς επιλογές κλειδιού Όταν κάποιος επιλέγει κλειδιά, συνήθως επιλέγει τα αδύναμα (poor) κλειδιά. Συνήθως, δηλαδή, επιλέγει λέξεις με «εύκολους» χαρακτήρες, γιατί είναι πιο εύκολο να τις θυμάται. Έτσι, ακόμα κι ο πιο αξιόπιστος αλγόριθμος δεν θα μπορούσε να έχει καλά αποτελέσματα αν οι χρήστες επιλέγουν σαν κλειδί το όνομα τους, ή αν καταγράφουν τα κλειδιά τους σε χαρτί, τοποθετώντας το σε προφανή θέση. Μία brute force επίθεση δεν δοκιμάζει όλα τα πιθανά κλειδιά με αριθμητική σειρά, αλλά αρχικά δοκιμάζει τα προφανή κλειδιά. Αυτή ονομάζεται λεξικολογική επίθεση (dictionary attack), γιατί αυτός που επιτίθεται χρησιμοποιεί το λεξικό των κοινών κλειδιών. Η λεξικολογική επίθεση είναι πολύ πιο ισχυρή όταν χρησιμοποιείται εναντίον ενός αρχείου κλειδιών και όχι εναντίον ενός μοναδικού κλειδιού. Ένας απλός χρήστης μπορεί να είναι αρκετά έξυπνος ώστε να επιλέξει τα σωστά κλειδιά. Αν, όμως, χίλιοι 21

23 άνθρωποι επιλέξουν το δικό τους κλειδί σαν password σε ένα υπολογιστικό σύστημα, είναι πολύ πιθανό ένα τουλάχιστον άτομο να επιλέξει κλειδί από το λεξικό του εισβολέα που διαπράττει την επίθεση. ΤΥΧΑΙΑ ΚΛΕΙΔΙΑ Καλά (ως προς την αποτελεσματικότητα ) κλειδιά, είναι τα τυχαία bit strings τον παράγονται από κάποια αυτόματη διεργασία. Αν το κλειδί έχει μήκος 64 bit, τότε κάθε κλειδί 64 bits θα πρέπει να. έχει την ίδια πιθανότητα να παραχθεί. Τα bits του κλειδιού παράγονται είτε από μία αξιόπιστη τυχαία πηγή, είτε από μία κρυπτογραφικός ασφαλή ψευδοτυχαία γεννήτρια bit. Είναι σημαντικό να χρησιμοποιηθεί μία καλή ψευδοτυχαία γεννήτρια αριθμών για τη δημιουργία των κλειδιών,, αλλά είναι πολύ πιο σημαντικό να.χρησιμοποιηθεί ένας ασφαλής αλγόριθμος κρυπτογραφίας και μια αξιόπιστη διαδικασία διαχείρισης κλειδιών. Κάποιοι αλγόριθμοι κρυπτογραφίας έχουν «αδύναμα» κλειδιά, δηλαδή συγκεκριμένα κλειδιά τα οποία είναι λιγότερο ασφαλή σε σχέση με άλλα. Οπότε θα πρέπει να γίνεται έλεγχος για αυτά τα κλειδιά και όταν ανακαλυφθεί ένα τέτοιο κλειδί, να δημιουργείται ένα καινούριο. Για παράδειγμα ο DES έχει 10 «αδύναμα» κλειδιά σε σύνολο 2 56, οπότε η πιθανότητα δημιουργίας ενός τέτοιου είναι πολύ μικρή. Ο υποκλοπέας δε γνωρίζει αν χρησιμοποιείται κάποιο αδύναμο κλειδί, οπότε δεν μπορεί να αποκομίσει κάποιο όφελος από αυτό. Η μη χρησιμοποίηση «αδύναμου» κλειδιού παρέχει στον υποκλοπέα κάποια πληροφορία. Πάντως, θα πρέπει να γίνεται έλεγχος στο σύστημα και για μερικά «αδύναμα» κλειδιά. Το να παράγονται κλειδιά για συστήματα κρυπτογραφίας δημοσίου-κλειδιού είναι πιο δύσκολο, γιατί συνήθως πρέπει να έχουν προκαθορισμένες μαθηματικές ιδιότητες (π.χ. να είναι πρώτοι αριθμοί, να είναι υπόλοιπα δευτέρου βαθμού κλπ). Το σημαντικό, βέβαια, θέμα της διαχείρισης κλειδιών είναι ότι τα τυχαία κλειδιά που παράγονται από τις γεννήτριες θα πρέπει να είναι όντως τυχαία. Φράσεις-λέξεις εισόδου Μία λύση είναι να χρησιμοποιηθεί μία ολόκληρη φράση, αντί για μία λέξη, και να μετατραπεί αυτή τη φράση σε ένα κλειδί. Αυτές οι φράσεις ονομάζονται φράσεις εισόδου (pass phrases). Μία τεχνική που ονομάζεται key crunching, μετατρέπει μία φράση (που είναι εύκολη στην απομνημόνευση) σε τυχαίο κλειδί. Χρησιμοποιεί μία one way hash function για να μετασχηματίσει ένα string κειμένου αυθαίρετου 22

24 μήκους, σε ψευδοτυχαίο bit string. Αν η φράση είναι αρκετά μεγάλη, το κλειδί που προκύπτει θα είναι τυχαίο. Για παράδειγμα, για ένα κλειδί 64 bit, μία φράση εισόδου περίπου 49 χαρακτήρων (ή περίπου 10 λέξεων) είναι επαρκής. Ένας εμπειρικός κανόνας λέει ότι χρειάζονται 5 λέξεις για κάθε 4 bytes τον κλειδιού. Η τεχνική αυτή μπορεί να χρησιμοποιηθεί και στη δημιουργία ιδιωτικών κλειδιών για σύστημα κρυπτογραφίας δημοσίου-κλειδιού: το text string διασπάται σε τυχαίο «γόνο», ο οποίος τροφοδοτεί ένα ντετερμινιστικό σύστημα, από το οποίο παράγονται τα ζεύγη δημόσιου / ιδιωτικού. κλειδιού. Παρ όλα αυτά, η ασάφεια δεν είναι υποκατάστατο της πραγματικής τυχαιότητας. Τα καλύτερα κλειδιά είναι τα τυχαία κλειδιά, καθώς είναι δύσκολο να τα θυμάται κανείς. Μη-γραμμικά keyspaces Ας υποθέσουμε ότι ένας στρατιωτικός οργανισμός κρυπτογραφίας θέλει να φτιάξει έναν κρυπτογραφικό εξοπλισμό. Πρέπει να χρησιμοποιηθεί ένας ασφαλής αλγόριθμος, αλλά υπάρχει η ανησυχία μην πέσει στα χέρια του εχθρού ο εξοπλισμός. Η χειρότερη, βέβαια, περίπτωση είναι να μπορέσει να προστατέψει ο αλγόριθμος τα μυστικά του εχθρού! Εάν υπήρχε η δυνατότητα να τοποθετηθεί ο αλγόριθμος σε ένα στοιχείο αδιαπέραστο σε αλλοιώσεις από τρίτους, θα μπορούσε να γίνει το εξής: θα απαιτούνταν κλειδιά ειδικού και μυστικού τύπου. Όλα τα άλλα κλειδιά θα έχουν ως αποτέλεσμα να κάνει κρυπτογράφηση και αποκρυπτογράφηση το στοιχείο, χρησιμοποιώντας έναν αυστηρά «εξασθενημένο» αλγόριθμο. Αυτό γίνεται ώστε οι πιθανότητες για κάποιον που δεν γνωρίζει αυτή την ειδική μορφή, να βρει τυχαία το σωστό κλειδί, να είναι σχεδόν μηδενικές. Αυτό καλείται μη-γραμμικό keyspace, γιατί όλα τα κλειδιά δεν είναι το ίδιο ισχυρά. Ένας εύκολος τρόπος για να γίνει αυτό, είναι να δημιουργηθεί το κλειδί σε δύο μέρη: το κανονικό κλειδί και κάποιο σταθερό string που κρυπτογραφείται με αυτό το κλειδί. Το στοιχείο αποκρυπτογραφεί το string με το κλειδί. Αν πάρει το σταθερό string, χρησιμοποιεί έναν διαφορετικό, «αδύναμο» αλγόριθμο. Αν ο αλγόριθμος έχει κλειδί 128 bit και 64 bit block size, το συνολικό κλειδί είναι 192 bits. Αυτό δίνει στον αγόριθμο ένα αποτελεσματικό κλειδί 2 128, αλλά οι πιθανότητες για μια τυχαία επιλογή σωστού κλειδιού είναι Μία πιο έξυπνη λύση είναι να σχεδιαστεί ένας αλγόριθμος, ώστε κάποια συγκεκριμένα κλειδιά του να είναι πιο «δυνατά» από κάποια άλλα. Ένας αλγόριθμος μπορεί να μην έχει 23

25 «αδύναμα» κλειδιά, αλλά παρ όλα αυτά να έχει μη-γραμμικό keyspace. Η λύση αυτή λειτουργεί μόνο όταν ο αλγόριθμος είναι μυστικός και ο εχθρός δεν μπορεί να τον αντιστρέψει, ή αν η ισχύς των κλειδιών είναι αρκετά έξυπνη, ώστε να μην μπορεί να την ανακαλύψει ο εχθρός. Mεταβίβαση κλειδιών Στα πλαίσια της ανάλυσης μας, υποθέτουμε ότι δύο χρήστες, έστω χρήστης-1 και χρήστης-2, επικοινωνούν μέσω ενός καναλιού επικοινωνίας στο οποίο, ενδεχομένως, έχουν πρόσβαση διάφοροι υποκλοπείς. Έστω ότι οι δύο χρήστες χρησιμοποιούν έναν συμμετρικό αλγόριθμο κρυπτογραφίας για να επικοινωνήσουν με ασφάλεια. Χρειάζονται το ίδιο κλειδί. Ο χρήστης-1 παράγει ένα κλειδί, χρησιμοποιώντας μία τυχαία γεννήτρια κλειδιού και πρέπει να. το δώσει στο χρήστη-2 με ασφάλεια. Αν μπορούν να συναντηθούν κάπου, τότε ο ένας δίνει στον άλλο το αντίγραφο του κλειδιού, αλλιώς θα υπάρξει πρόβλημα. Η κρυπτογραφία δημοσίου-κλειδιού λύνει το πρόβλημα επιτυχώς, με κάποιο διακανονισμό που έχει προηγηθεί, αλλά αυτές οι τεχνικές δεν είναι πάντοτε διαθέσιμες. Κάποια άλλα συστήματα χρησιμοποιούν εναλλακτικά κανάλια επικοινωνίας που γνωρίζουν ότι είναι ασφαλή. Ο ένας χρήστης θα μπορούσε να στείλει στον άλλο με έναν έμπιστο αγγελιοφόρο, ή μέσω ενός πιστοποιημένου ταχυδρομείου, ή θα μπορούσε να εγκαινιάσει ένα νέο κανάλι επικοινωνίας, ελπίζοντας ότι δεν υποκλέπτει κανείς. Ο χρήστης-1 β να μπορούσε να στείλει στο χρήστη-2 το συμμετρικό κλειδί, διαμέσου του δικού τους καναλιού, αυτού στο οποίο θα γίνει η κρυπτογράφηση. Αλλά αυτό είναι ανόητο, γιατί στέλνοντας το κλειδί κρυπτογράφησης στο ίδιο κανάλι, τότε οποιοσδήποτε υποκλοπέας θα μπορεί να αποκρυπτογραφεί όλες τις επικοινωνίες. Το πρότυπο Χ9.17 καθορίζει δύο τύπους κλειδιών : κλειδιά κρυπτογράφησηςκλειδιού και κλειδιά δεδομένων. Τα κλειδιά κρυπτογράφισης-κλειδιού (keyencryption key) κρυπτογραφούν άλλα κλειδιά για διανομή. Τα κλειδιά δεδομένων (data key) κρυπτογραφούν τα μηνύματα που ανταλλάσσονται. Αυτά τα κλειδιά κρυπτογράφησης-με κλειδί πρέπει να διανεμηθούν χειροκίνητα, αλλά μόνο σπανίως. Τα κλειδιά δεδομένων διανέμονται πιο συχνά. Αυτή η ιδέα του κλειδιού σε «δύοστρώσεις», χρησιμοποιείται συχνά στην διανομή κλειδιών. Μία άλλη λύση στο πρόβλημα της διανομής, είναι η διάσπαση του κλειδιού σε αρκετά διαφορετικά μέρη, και η αποστολή καθενός από αυτά μέσω διαφορετικών καναλιών. Ένα μέρος μπορεί να σταλεί μέσω τηλεφώνου, ένα άλλο με , ένα με 24

26 ταχυδρομικό περιστέρι, ένα με μια υπηρεσία παράδοσης αντικειμένων κλπ. Εφόσον ο υποκλοπέας θα μπορούσε να συλλέξει όλα τα μέρη εκτός από ένα, και παρ' όλα αυτά να μην γνωρίζει τι είναι το κλειδί, η μέθοδος θα λειτουργούσε σχεδόν σε όλες τις περιπτώσεις. Διανομή κλειδιών σε μεγάλα δίκτυα Τα κλειδιά κρυπτογράφησης-κλειδιού που μοιράζονται σε ζεύγη χρηστών, δουλεύουν καλά μικρά δίκτυα, αλλά μπορεί να γίνουν «δυσκίνητα» αν το δίκτυο μεγαλώσει. Εφόσον κάθε ζευγάρι χρηστών πρέπει να ανταλλάξει κλειδιά, ο συνολικός αριθμός ανταλλαγών κλειδιού που απαιτούνται σε ένα δίκτυο η ατόμων, είναι n ( n 1). Σε ένα δίκτυο 6-ατόμων απαιτούνται 15 ανταλλαγές κλειδιού. Σε 2 δίκτυο 1000 ατόμων απαιτούνται σχεδόν ανταλλαγές. Σε αυτές τις περιπτώσεις, η δημιουργία ενός κεντρικού server κλειδιών (ή περισσοτέρων), κάνει την εφαρμογή πολύ πιο αποτελεσματική. Επαλήθευση κλειδιών Όταν ο παραλήπτης (ή χρήστης-2) παραλαμβάνει ένα κλειδί, πώς γνωρίζει ότι προέρχεται από το σωστό αποστολέα (ή χρήστη-1) και όχι από κάποιον άλλο, ο οποίος προσποιείται ότι είναι ο πραγματικός αποστολέας. Αν ο χρήστης-2 δώσει το κλειδί στον χρήστη-1 πρόσωπο με πρόσωπο, τότε είναι εύκολη η επιβεβαίωση. Αν ο χρήστης-1 στείλει το κλειδί μέσω ενός έμπιστου αγγελιοφόρου, τότε ο χρήστης-2 εμπιστεύεται τον αγγελιοφόρο. Αν το κλειδί έχει κρυπτογραφηθεί με ένα κλειδί κρυπτογράφησης-κλειδιού, τότε ο χρήστης-2 βασίζεται στο γεγονός ότι μόνο ο χρήστης-1 έχει το συγκεκριμένο κλειδί. Αν ο χρήστης-1 χρησιμοποιεί ένα πρωτόκολλο ψηφιακής υπογραφής για να υπογράψει το κλειδί, ο χρήστης-2 πρέπει να εμπιστευτεί την βάση δεδομένων δημοσίου κλειδιού, όταν επαληθεύσει αυτή την υπογραφή (θα πρέπει επίσης να βασιστεί στο ότι ο χρήστης-1 έχει κρατήσει το κλειδί του κρυφό). Αν ένα Κέντρο Διανομής Κλειδιού Κ.Δ.Κ. (Distribution Center-KDC) υπογράψει το δημόσιο κλειδί του χρήστη-1, ο χρήστης-2 θα πρέπει να εμπιστευτεί ότι το αντίγραφο του δημοσίου κλειδιού του Κ.Δ.Κ. δεν έχει αλλοιωθεί. Κάποιος που ελέγχει ολόκληρο το δίκτυο γύρω από το χρήστη-2 μπορεί να τον κάνει να πιστέψει ότι είναι οποιοσδήποτε. Ο υποκλοπέας στέλνει ένα κρυπτογραφημένο και υπογεγραμμένο μήνυμα, δηλώνοντας ότι προέρχεται από το 25

27 χρήστη-1 (δηλαδή τον πραγματικό αποστολέα). Όταν ο χρήστης-2 προσπαθήσει να προσπελάσει την βάση δεδομένων δημοσίου-κλειδιού για να επαληθεύσει την υπογραφή του χρήστη-1, ο υποκλοπέας θα μπορούσε να αντικαταστήσει το δικό του "δημόσιο κλειδί. Δηλαδή θα μπορούσε ο υποκλοπέας να επινοήσει ένα δικό του ψεύτικο Κ.Δ.Κ. και να το ανταλλάξει με το πραγματικό δημόσιο κλειδί του Κ.Δ.Κ.. Με τον τρόπο αυτό, θα ξεγελαστεί ο χρήστης-2. Με βάση τα παραπάνω, αρκετοί ισχυρίζονται ότι η κρυπτογραφία δημοσίουκλειδιού είναι αναποτελεσματική. Εφόσον ο μόνος τρόπος για να σιγουρευτούν οι χρήστες-1 και 2 ότι τα κλειδιά τους δεν αλλοιώνονται είναι να συναντηθούν πρόσωπο με πρόσωπο, η κρυπτογραφία δημοσίου-κλειδιού δεν προάγει την αξιοπιστία. Αυτό είναι απλοϊκό να το σκεφτεί κανείς, θεωρητικά είναι σωστό, όμως η πραγματικότητα είναι αρκετά πιο πολύπλοκη. Η κρυπτογραφία δημοσίου-κλειδιού που χρησιμοποιεί ψηφιακές υπογραφές και έμπιστα ΚΔΚ, κάνει πολύ πιο δύσκολη την αντικατάσταση ενός κλειδιού με ένα άλλο. Ο παραλήπτης (χρήστης-2) ποτέ δεν μπορεί να είναι απόλυτα βέβαιος ότι δεν τον ελέγχει κάποιος υποκλοπέας, αλλά μπορεί να είναι σίγουρος ότι ακόμη κι αν το κάνει αυτό κάποιος υποκλοπέας, απαιτούνται πολύ περισσότερα μέσα σε σχέση με αυτά που έχει στην πραγματικότητα. Επίσης, η επαλήθευση κλειδιού θα μπορούσε να γίνει μέσω τηλεφωνικής επικοινωνίας, οπότε και θα υπάρχει φωνητική αναγνώριση ανάμεσα στους χρήστες. Όμως, η φωνητική αναγνώριση δεν είναι καλή μέθοδος πιστοποίησης. Αν είναι ένα δημόσιο κλειδί, τότε μπορεί να ειπωθεί δημοσίως με ασφάλεια. Αν είναι μυστικό κλειδί, τότε μπορεί να χρησιμοποιηθεί μία one-way hash function για να επαληθευτεί το κλειδί. Ανίχνευση λαθών κατά την μετάδοση κλειδιών Μερικές φορές παρεμβάλλονται λάθη στα κλειδιά κατά την μετάδοση τους. Αυτό είναι μεγάλο πρόβλημα, γιατί ένα αλλοιωμένο κλειδί μπορεί να έχει σαν αποτέλεσμα megabytes μη-κρυπτογραφημένου ciphertext. Όλα τα κλειδιά θα πρέπει να μεταδίδονται με κάποια ανίχνευση λάθους και διόρθωση bits. Με αυτόν τον τρόπο, μπορούν να ανιχνεύονται εύκολα τα λάθη κατά τη μετάδοση των κλειδιών. Μία από τις πιο διαδεδομένες μεθόδους, είναι να κρυπτογραφηθεί μια σταθερά με το κλειδί και να σταλθούν τα πρώτα 2 έως 4 bytes του ciphertext μαζί με το κλειδί. Στην λήψη γίνεται το ίδιο πράγμα. Αν οι κρυπτογραφημένες σταθερές ταιριάζουν, τότε το κλειδί έχει μεταδοθεί χωρίς λάθη. Η πιθανότητα μη-ανιχνευθέντων λαθών κυμαίνεται από μία στις 2 16, έως μία στις

28 Ανίχνευση λαθών κατά την κρυπτογράφηση Μερικές φορές ο παραλήπτης θέλει να ελέγξει αν ένα συγκεκριμένο κλειδί που έχει, είναι το σωστό συμμετρικό κλειδί αποκρυπτογράφησης. Αν το μήνυμα plaintext είναι μορφής ASCII, πρέπει να το αποκρυπτογραφήσει και να διαβάσει το μήνυμα. Αν το plaintext είναι τυχαίο, υπάρχουν άλλες μέθοδοι. Μία απλοϊκή προσέγγιση είναι να επισυνάψουμε ένα block επαλήθευσης (verification block), δηλαδή μία γνωστή επικεφαλίδα (header) στο μήνυμα plaintext πριν την κρυπτογράφηση. Στη λήψη, ο παραλήπτης αποκρυπτογραφεί την επικεφαλίδα κι επαληθεύει αν είναι σωστή. Αυτός ο τρόπος δουλεύει μεν, αλλά δίνει στον υποκλοπέα ένα γνωστό plaintext, το οποίο τον βοηθάει να υποκλέψει το σύστημα. Επίσης, αυτή η μέθοδος διευκολύνει την επίθεση σε αλγορίθμους με κλειδί μικρού μήκους, όπως ο DES, και σε όλους τους εξαγόμενους αλγορίθμους. Χρηση κλειδιων Η software κρυπτογράφηση εμπεριέχει ρίσκο. Όταν στο υπολογιστικό σύστημα εκτελούνται, ταυτόχρονα πολλές λειτουργίες υπάρχει κίνδυνος είτε να μην γίνει σωστά η κρυπτογράφηση, είτε μείνει το κλειδί εκτεθειμένο σε εισβολείς λόγω μη κρυπτογράφησης του, ή λόγω μη έγκαιρης αποθήκευσής του εξαιτίας κακής διαχείρισης μνήμης του ηλεκτρονικού υπολογιστή. Σε ένα περιβάλλον που «τρέχουν» πολλές εφαρμογές, μπορεί να τεθεί η λειτουργία κρυπτογράφησης σε υψηλή προτεραιότητα, ώστε να μην υπάρξει διακοπή (interrupt). Αυτό θα μπορούσε να μετριάσει το ρίσκο, αν και η όλη διαδικασία είναι παρακινδυνευμένη. Οι hardware εφαρμογές είναι πιο ασφαλείς. Πολλές μηχανές κρυπτογράφησης σχεδιάζονται ώστε να σβήνουν τα κλειδιά, αν υπάρξει κάποια αλλοίωση (δηλαδή επέμβαση από τρίτους). Κάποιες επικοινωνιακές εφαρμογές, όπως τηλεφωνικοί κρυπτογράφοι, χρησιμοποιούν κλειδιά συνόδου (session key). Κλειδί συνόδου, είναι ένα κλειδί που χρησιμοποιείται μόνο για μία επικοινωνία - π.χ. μία μοναδική τηλεφωνική συνομιλία - και μετά απορρίπτεται. Δεν υπάρχει λόγος να αποθηκευτεί το κλειδί, αφού έχει χρησιμοποιηθεί. Αν χρησιμοποιηθεί ένα πρωτόκολλο ανταλλαγής κλειδιού για να μεταβιβαστεί το κλειδί από τον ένα συνομιλητή στον άλλο, το κλειδί δεν χρειάζεται να αποθηκευτεί πριν τη χρήση του, έτσι κι αλλιώς. Αυτό κάνει πολύ λιγότερο πιθανό να εκτεθεί το κλειδί. 27

29 Έλεγχος χρήσης κλειδιού Σε μερικές εφαρμογές μπορεί να είναι επιθυμητό να ελέγξουμε τον τρόπο χρήσης ενός κλειδιού συνόδου. Μερικοί χρήστες μπορεί να χρειάζονται κλειδιά συνόδου μόνο για κρυπτογράφηση, ή μόνο για αποκρυπτογράφηση. Τα κλειδιά συνόδου μπορεί να εξουσιοδοτηθούν για χρήση σε μία προκαθορισμένη μηχανή, ή σε προκαθορισμένο χρόνο. Μία μέθοδος που ελέγχει αυτούς τους περιορισμούς, επισυνάπτει ένα διάνυσμα ελέγχου - ΔΕ (control vector-cv). Το.ΔΕ καθορίζει τις χρήσεις και τους περιορισμούς για το συγκεκριμένο κλειδί. Τα πλεονεκτήματα αυτής της μεθόδου είναι ότι το ΔΕ μπορεί να έχει οποιοδήποτε μήκος και να αποθηκεύεται πάντα απαλλαγμένο από το κρυπτογραφημένο κλειδί. Ενημέρωση κλειδιών Ας υποτεθεί ότι υπάρχει ένα κρυπτογραφημένο data link, στο οποίο πρέπει να αλλάζονται τα κλειδιά καθημερινά. Ίσως είναι επίπονο να γίνεται κάθε μέρα διανομή κλειδιών. Μία πιο εύκολη λύση είναι η δημιουργία ενός νέου κλειδιού από το παλιό κλειδί. Αυτό ονομάζεται ενημέρωση κλειδιού (key updating). Αυτό που χρειάζεται είναι μία one-way function. Αν αποστολέας και παραλήπτης μοιράζονται το ίδιο κλειδί, και αν και οι δύο ενεργούν πάνω σ αυτό χρησιμοποιώντας την ίδια one-way function, τότε θα πάρουν το ίδιο αποτέλεσμα. Στη συνέχεια μπορούν να πάρουν τα bits που χρειάζονται από το αποτέλεσμα, ώστε να φτιάξουν το νέο κλειδί. Η ενημέρωση κλειδιών δουλεύει καλά, αλλά δεν πρέπει να ξεχνάμε ότι το νέο κλειδί είναι τόσο ασφαλές, όσο ήταν και το παλιό. Αν ο υποκλοπέας καταφέρει να μάθει το παλιό κλειδί, τότε μπορεί να εφαρμόσει μόνος του την ενημέρωση κλειδιού, άρα να μάθει και το νέο κλειδί. Αν, όμως, δεν έχει το παλιό κλειδί και εξαπολύσει μια ciphertext-only attack στα κρυπτογραφημένα δεδομένα, τότε οι χρήστες μπορούν να είναι ασφαλείς. Αποθήκευση κλειδιών Το λιγότερο πολύπλοκο πρόβλημα στην αποθήκευση κλειδιών είναι αυτό του ενός χρήστη. Εφόσον υπάρχει μόνο ένα εμπλεκόμενο πρόσωπο, αυτό θα είναι υπεύθυνο για το κλειδί. Κάποια συστήματα χρησιμοποιούν την εύκολη προσέγγιση: το κλειδί αποθηκεύεται στο μυαλό του χρήστη και ποτέ στο σύστημα! Ο χρήστης έχει την ευθύνη να θυμάται το κλειδί και να το χρησιμοποιεί κάθε φορά που χρειάζεται ένα αρχείο κρυπτογραφημένο ή αποκρυπτογραφημένο. 28

30 Μία άλλη λύση είναι να αποθηκευτεί το κλειδί σε μία μαγνητική κάρτα, δηλαδή πλαστικό κλειδί με ενσωματωμένο ROM chip (λέγεται και ROM key) ή έξυπνη κάρτα. Ένας χρήστης θα μπορούσε να χρησιμοποιήσει το κλειδί του εισάγοντας το φυσικό κουπόνι (token) σε έναν ειδικό αναγνώστη στο δικό του κουτί κρυπτογράφησης, ή επισυνάπτοντας το στο τερματικό του. Όσο ο χρήστης μπορεί να χρησιμοποιήσει το κλειδί, δεν το γνωρίζει, οπότε και δεν μπορεί να το διακυβεύσει. Μπορεί να το χρησιμοποιήσει μόνο κατά τον τρόπο που υποδεικνύεται από το διάνυσμα ελέγχου. Το ROM key είναι μία πολύ έξυπνη ιδέα. Οι άνθρωποι κατανοούν τα φυσικά κλειδιά, δηλαδή τι σημαίνουν και πως να τα προστατέψουν. Βάζοντας κι ένα κρυπτογραφικό κλειδί στον ίδιο φυσικό τύπο, η αποθήκευση και η προστασία του κλειδιού γίνονται πολύ πιο εύκολα κατανοητές. Αυτή η τεχνική γίνεται πολύ πιο ασφαλής «σπάζοντας» το κλειδί στη μέση και. αποθηκεύοντας το ένα τμήμα στο τερματικό και το άλλο στο ROM key. Η απώλεια του ROM key δεν διακυβεύει το κρυπτογραφικό κλειδί - αλλάζοντας αυτό το κλειδί, όλα είναι πάλι όπως αρχικά. Το ίδιο γίνεται και με απώλεια του τερματικού. Έτσι διακυβεύοντας είτε το ROM key, είτε το σύστημα, δεν διακυβεύεται το κλειδί κρυπτογραφίας. Ένας υποκλοπέας θα πρέπει να έχει και τα δύο. Τα κλειδιά που είναι δύσκολο να τα θυμάται κανείς (hard to remember keys) μπορούν να αποθηκεύονται σε κρυπτογραφημένη μορφή, Κοινοποιώντας κάτι αντίστοιχο με το κλειδί κρυπτογράφησης-κλειδιού. Π.χ. ένα RSA ιδιωτικό κλειδί μπορεί να κρυπτογραφηθεί με ένα DES κλειδί και να αποθηκευτεί στο σκληρό δίσκο. Για να ανακτηθεί το RSA κλειδί, ο χρήστης πρέπει να εφαρμόσει το DES κλειδί σε ένα πρόγραμμα αποκρυπτογράφησης. Αν τα κλειδιά παράγονται ντετερμινιστικά (με μία κρυπτογραφικός αξιόπιστη γεννήτρια ψευδοτυχαίων ακολουθιών) μπορεί να είναι πιο εύκολο να παραχθούν ξανά από ένα remember password κάθε φορά που χρειάζεται. Στην ιδανική περίπτωση, ένα κλειδί ποτέ δεν θα πρέπει να εμφανίζεται μη κρυπτογραφημένο έξω από τη συσκευή κρυπτογράφησης. Αν και αυτό δεν είναι πάντοτε δυνατό, αλλά είναι ο κύριος στόχος. Εφεδρικά κλειδιά Το νόημα της κρυπτογράφησης είναι να δημιουργηθούν αρχεία που είναι αδύνατο να ανακτηθούν χωρίς το κλειδί. Τι γίνεται, όμως, αν για οποιονδήποτε λόγω χαθούν τα κλειδιά. Για να το αποφύγουμε αυτό, η καλύτερη λύση είναι η μέθοδος που ονομάζεται key escrow. Όλοι οι χρήστες ενός συστήματος θα πρέπει να καταγράφουν 29

31 τα κλειδιά τους σε ένα χαρτί και να το δίνουν στον υπεύθυνο ασφαλείας, ο οποίος θα τα κλειδώσει σε ένα χρηματοκιβώτιο, ή θα τα κρυπτογραφήσει όλα με ένα κυρίαρχο κλειδί (master key). Το πρόβλημα σε αυτό το σύστημα διαχείρισης κλειδιού είναι ότι ο υπεύθυνος του συστήματος πρέπει να εμπιστευτεί τον υπεύθυνο ασφαλείας στο ότι ο τελευταίος δεν θα κακομεταχειριστεί τα κλειδιά όλων των χρηστών. Ακριβώς το ίδιο πρέπει να κάνουν και οι χρήστες. Μία πολύ καλύτερη λύση είναι να χρησιμοποιηθεί ένα πρωτόκολλο μυστικού-μοιράσματος (secret-sharing protocol). Όταν ένας χρήστης παράγει ένα κλειδί το χωρίζει σε κομμάτια, τα οποία στέλνει κρυπτογραφημένα φυσικά- σε έναν άλλο υπεύθυνο. Κανένα από όλα αυτά τα κομμάτια δεν είναι το κλειδί, αλλά αν κάποιος τα συλλέξει όλα μπορεί να ξαναφτιάξει το κλειδί. Έτσι και ο χρήστης και ο υπεύθυνος είναι προστατευμένοι όσον αφορά το ενδεχόμενο απώλειας των δεδομένων των χρηστών. Ή ο χρήστης θα μπορούσε απλά να αποθηκεύσει τα διάφορα κομμάτια κρυπτογραφημένα με καθένα από τα δημόσια κλειδιά του υπευθύνου, στον δικό του σκληρό δίσκο. Με τον τρόπο αυτό δεν αναμειγνύεται κανείς στην διαχείριση κλειδιών, μέχρις ότου -βεβαίως- γίνει αυτό αναγκαίο. Εκτεθειμένα κλειδιά Όλα τα πρωτόκολλα, τεχνικές και αλγόριθμοι είναι ασφαλείς, μόνο αν το κλειδί (το ιδιωτικό κλειδί σε ένα σύστημα δημοσίου-κλειδιού) παραμένει κρυφό. Αν το κλειδί ενός χρήστη κλαπεί και εκτεθεί, τότε διακυβεύεται η ασφάλεια του χρήστη. Αν το εκτεθειμένο κλειδί ήταν για συμμετρικό κρυπτοσύστημα, τότε ο χρήστης μπορεί να αλλάξει το κλειδί του και να ελπίζει ότι η πραγματική ζημιά ήταν η ελάχιστη δυνατή. Αν ήταν ιδιωτικό κλειδί, τότε το πρόβλημα είναι μεγαλύτερο. Το αντίστοιχο δημόσιο κλειδί του υπάρχει στους servers όλου του δικτύου. Ο υποκλοπέας του ιδιωτικού κλειδιού μπορεί να υποδυθεί τον πραγματικό χρήστη, οπότε μπορεί να έχει πρόσβαση σε όλες τις επικοινωνίες του εν λόγω χρήστη (όπως να διαβάζει κρυπτογραφημένα mail, να υπογράφει αλληλογραφία, να διαβάζει συμβόλαια...). Αν εκτεθεί ένα ιδιωτικό κλειδί, το νέο διαδίδεται γρήγορα στο δίκτυο. Σε κάθε βάση δεδομένων δημοσίων κλειδιών πρέπει να γνωστοποιηθεί αμέσως ότι ένα συγκεκριμένο ιδιωτικό κλειδί έχει εκτεθεί, από φόβο μήπως κάποιος ανυποψίαστος χρήστης κρυπτογραφήσει ένα μήνυμα με αυτό το εκτεθειμένο κλειδί. Αν ο χρήστης γνωρίζει ποτέ εκτέθηκε το κλειδί του, μπορεί να το γνωστοποιήσει στο Κ.Δ.Κ. που διαχειρίζεται τα κλειδιά, οπότε όλα τα μηνύματα που ελήφθησαν (από τους 30

32 υπόλοιπους χρήστες και προερχόμενα από τον εν λόγω) μετά την απώλεια του είναι ύποπτα. Επίσης κανένας δεν θα του στέλνει μηνύματα με το αντίστοιχο δημόσιο κλειδί. Η εφαρμογή μπορεί να χρησιμοποιήσει ένα είδος χρονικής σφραγίδας (timestamp) για να καθορίσει ποια μηνύματα είναι νόμιμα και ποια είναι ύποπτα. Αν δεν γνωρίζει πότε ακριβώς εκτέθηκε το κλειδί του, το πράγμα είναι πολύ πιο δύσκολο. Σε αυτή την περίπτωση υπάρχουν χρήστες που αποσύρονται π.χ. σχετικά με την υπογραφή ενός συμβολαίου, γιατί το άτομο που έκλεψε το κλειδί υπέγραψε αντί για τον κανονικό χρήστη (ο χρήστης υποστηρίζει ότι υπέγραψε ο υποκλοπέας, ενώ ο δεύτερος χρήστης-μέρος του συμβολαίου ισχυρίζεται ότι η υπογραφή μπήκε μετά την κλοπή...). Οπότε στη διαμάχη αυτή, πρέπει να αποφασίσει κάποιος δικαστής. Αυτό είναι σημαντικό πρόβλημα και καταδεικνύει ότι είναι επικίνδυνο για το χρήστη να έχει μόνο ένα κλειδί για όλες τις εφαρμογές. Είναι προτιμότερο σε κάθε διαφορετική εφαρμογή να υπάρχει και διαφορετικό κλειδί. Διάρκεια ζωής κλειδιών Κανένα κλειδί κρυπτογράφησης δεν πρέπει να χρησιμοποιείται για ακαθόριστη χρονική περίοδο, θα πρέπει να «λήγει», δηλαδή να μην χρησιμοποιείται πέραν μιας συγκεκριμένης περιόδου. Υπάρχουν διάφοροι λόγοι γι' αυτό. Για όσο μεγαλύτερη χρονική διάρκεια χρησιμοποιείται ένα κλειδί, τόσο πιο πολύ θα εκτεθεί σε υποκλοπείς. Κάποιοι καταγράφουν τα κλειδιά και τα χάνουν. Αν χρησιμοποιηθεί το ίδιο κλειδί για ένα χρόνο, υπάρχει πολύ μεγαλύτερη πιθανότητα να εκτεθεί / διακυβευτεί απ' ότι αν χρησιμοποιηθεί για μία ημέρα. Όσο μεγαλύτερο χρονικό διάστημα χρησιμοποιείται ένα κλειδί, τόσο μεγαλύτερη θα είναι η ζημιά, αν αυτό εκτεθεί. Αν το κλειδί χρησιμοποιηθεί για κρυπτογράφηση ενός αρχείου (σε έναν server αρχείων), τότε η απώλεια του κλειδιού σημαίνει ότι εκτίθεται μόνο το αρχείο αυτό. Αν, όμως, χρησιμοποιηθεί για την κρυπτογράφηση όλων των αρχείων του server, τότε προφανώς και η ζημιά θα είναι συντριπτική. Για όσο μεγαλύτερο χρονικό διάστημα χρησιμοποιείται το κλειδί, τόσο μεγαλύτερος είναι ο πειρασμός για κάποιον υποκλοπέα να προσπαθήσει να το «σπάσει». Γενικά είναι πιο εύκολη η υποκλοπή σε chiphertexts που είναι κρυπτογραφημένα με το ίδιο κλειδί. 31

33 Σε κάθε κρυπτογραφική εφαρμογή θα πρέπει να υπάρχει μία πολιτική που καθορίζει την επιτρεπόμενη διάρκεια ζωής του κλειδιού. Διαφορετικά κλειδιά μπορούν να έχουν διαφορετική διάρκεια ζωής. Για ένα σύστημα διασύνδεσης, όπως το τηλέφωνο, είναι λογικό να χρησιμοποιείται ένα κλειδί για τη διάρκεια της τηλεφωνικής κλήσης, κι ένα άλλο κλειδί για μία νέα κλήση. Σε ένα σύστημα με αφιερωμένα (dedicated) επικοινωνιακά κανάλια, τα κλειδιά πρέπει να έχουν σχετικά μικρή διάρκεια ζωής, η οποία εξαρτάται από την αξία και την ποσότητα των δεδομένων που κρυπτογραφούνται στη συγκεκριμένη περίοδο. Το κλειδί για επικοινωνιακή σύνδεση της τάξης gigabit per second, θα πρέπει να αλλάζει πολύ πιο συχνά απ' ότι το κλειδί για 9600 modem link. Εάν υποτεθεί ότι υπάρχει μία αποτελεσματική μέθοδος μεταβίβασης νέων κλειδιών, τα κλειδιά συνόδου θα πρέπει να αλλάζονται τουλάχιστον μία φορά τη μέρα. Τα κλειδιά κρυπτογράφησης-κλειδιών δεν χρειάζεται να αλλάζουν τόσο συχνά. Αυτό έχει σαν αποτέλεσμα να είναι μικρό το ciphertext με το οποίο θα «ασχοληθεί» (δηλαδή στο οποίο θα επιτεθεί) ο υποκλοπέας. Παρ όλα αυτά, αν ένα κλειδί κρυπτογράφησης-κλειδιού εκτεθεί, η πιθανή απώλεια είναι μέγιστη: όλες οι επικοινωνίες που κρυπτογραφούνται με κάθε κλειδί που κρυπτογραφήθηκε με τα εν λόγω κλειδιά μπορούν να υποκλαπούν. Έτσι σε κάθε εφαρμογή πρέπει να αντισταθμιστεί ο κίνδυνος υποκλοπής του κλειδιού με τη χρονική διάρκεια που απαιτείται μέχρι να γίνει η διανομή ενός νέου κλειδιού. Τα κλειδιά που χρησιμοποιούνται για κρυπτογράφηση αρχείων δεδομένων προς αποθήκευση, δε γίνεται να αλλάζουν συχνά. Τα αρχεία αυτά μπορεί να μείνουν αποθηκευμένα στο δίσκο για μήνες ή χρόνια, έως ότου κάποιος τα ξαναχρειαστεί. Το να αποκρυπτογραφούνται και να επανακρυπτογραφούνται κάθε μέρα, δεν προάγει την ασφάλεια σε καμία περίπτωση. Απλά προσφέρει περισσότερη «δουλειά» στον υποκλοπέα. Μία λύση είναι να κρυπτογραφηθεί κάθε αρχείο με ένα μοναδικό κλειδί αρχείου (file key) και στη συνέχεια να κρυπτογραφηθούν όλα τα κλειδιά αρχείων με ένα κλειδί κρυπτογράφησης-κλειδιού. Το τελευταίο μπορεί να αποθηκευθεί σε ασφαλές μέρος. Φυσικά, η απώλεια αυτού του κλειδιού συνεπάγεται και απώλεια όλων των ξεχωριστών κλειδιών αρχείων. Στις εφαρμογές κρυπτογραφίας δημοσίου-κλειδιού η διάρκεια ζωής των ιδιωτικών κλειδιών ποικίλει. Τα ιδιωτικά κλειδιά που χρησιμοποιούνται σε ψηφιακές υπογραφές μπορεί να διαρκέσουν για χρόνια. Αντιθέτως, τα ιδιωτικά κλειδιά που χρησιμοποιούνται σε εοίη-ί1ίρρίη πρωτόκολλα απορρίπτονται αμέσως μετά την 32

34 ολοκλήρωση του πρωτοκόλλου. Ακόμη κι αν η ασφάλεια ενός κλειδιού αναμένεται να κρατήσει για μια ολόκληρη ζωή, είναι συνετό να αλλάζει κάθε δύο χρόνια. Σε πολλά δίκτυα τα ιδιωτικά κλειδιά κρατούν μόνο για δύο χρόνια και μετά οι χρήστες πρέπει να αποκτήσουν ένα νέο κλειδί. Όμως, το παλιό κλειδί θα πρέπει να παραμείνει κρυφό σε περίπτωση που χρειαστεί ώστε να πιστοποιηθεί μία υπογραφή από το παρελθόν (από την περίοδο του παλιού κλειδιού δηλαδή). Αλλά το νέο κλειδί χρησιμοποιείται στην υπογραφή νέων εγγράφων, ώστε να μειωθεί ο αριθμός των υπογεγραμμένων κειμένων στα οποία θα μπορούσε να επιτεθεί ο υποκλοπέας. Καταστροφή κλειδιών Εφόσον τα κλειδιά θα πρέπει να αντικαθίστανται τακτικά, τα παλιά κλειδιά θα πρέπει να καταστρέφονται. Τα παλιά κλειδιά είναι πολύτιμα ακόμη κι αν δεν πρόκειται να ξαναχρησιμοποιηθούν. Γνωρίζοντας τα, ένας υποκλοπέας θα μπορούσε να διαβάσει μηνύματα που έχουν κρυπτογραφηθεί με αυτά. Τα κλειδιά θα πρέπει να καταστραφούν με ασφάλεια. Αν το κλειδί καταγραφεί σε χαρτί, το χαρτί θα πρέπει να κομματιαστεί ή να καεί. Αν το κλειδί είναι. αποθηκευμένο στο σκληρό δίσκο του υπολογιστή, τα πραγματικά bits αποθήκευσης του θα πρέπει να γίνουν overwrite πολλές φορές, ή να καταστραφεί ο δίσκος. Ένα πιθανό πρόβλημα είναι ότι σε έναν υπολογιστή, τα κλειδιά μπορούν να εύκολα να αντιγραφούν και να αποθηκευτούν σε διάφορα μέρη. Σε έναν υπολογιστή ο οποίος διαχειρίζεται μόνος του τη μνήμη, η συνεχής ανταλλαγή προγραμμάτων στη μνήμη επιδεινώνει το πρόβλημα. Δεν υπάρχει τρόπος να διασφαλιστεί ότι είναι επιτυχής μία διαγραφή κλειδιού στον υπολογιστή, ειδικά αν το λειτουργικό σύστημα του ελέγχει τη διεργασία διαγραφής. Μία σκέψη είναι να χρησιμοποιηθεί ένα ειδικό πρόγραμμα διαγραφής κλειδιού, το οποίο ανιχνεύει όλο το δίσκο ψάχνοντας για αντίγραφα από τα bits του κλειδιού σε αχρησιμοποίητα ο1οεκ3 και σβήνει αυτά τα blocks. Επίσης, θα πρέπει να σβηστούν τα περιεχόμενα όλων των προσωρινών αρχείων. Διαχείριση δημόσιου-κλειδιού Στην κρυπτογραφία δημοσίου-κλειδιού η διαχείριση κλειδιών είναι πιο εύκολη, αλλά υπάρχουν κι εδώ προβλήματα. Κάθε άτομο έχει μόνο ένα δημόσιο κλειδί ανεξάρτητα από τον αριθμό των ατόμων στο δίκτυο. Αν ο χρήστης-1 (αποστολέας) 33

35 θέλει να στείλει ένα μήνυμα στον χρήστη-2 (παραλήπτης) θα πρέπει να πάρει το δημόσιο κλειδί του δευτέρου, το οποίο μπορεί να γίνει με διάφορους τρόπους : μπορεί να το πάρει από τον ίδιο μπορεί να το πάρει από μια κεντρική βάση δεδομένων μπορεί να το πάρει από την ιδιωτική βάση δεδομένων του χρήστη-2. Όμως, υπάρχουν πολλοί τρόποι επίθεσης στην κρυπτογραφία δημοσίου κλειδιού, οι οποίοι βασίζονται στην αντικατάσταση του κλειδιού του χρήστη-2 από το κλειδί του υποκλοπέα. Έστω, λοιπόν, ότι ο χρήστης-1 θέλει να στείλει ένα μήνυμα στο χρήστη-2. Ο χρήστης-1 παίρνει από τη βάση δεδομένων το δημόσιο κλειδί του χρήστη-2, οπότε ο υποκλοπέας αντικαθιστά το δικό του κλειδί με αυτό του χρήστη-2. (Αν ο χρήστης-1 ζητούσε ευθέως το κλειδί του χρήστη-2, τότε ο υποκλοπέας θα έπρεπε να εμποδίσει τη μετάδοση και να αντικαταστήσει το δικό του κλειδί με αυτό του χρήστη-2). Ο χρήστης-1 κρυπτογραφεί το μήνυμα του με το κλειδί του υποκλοπέα και το στέλνει στο χρήστη-2. Ο υποκλοπέας «σταματά» το μήνυμα, το αποκρυπτογραφεί και το διαβάζει. Στη συνέχεια κρυπτογραφεί ξανά το μήνυμα με το πραγματικό κλειδί του χρήστη-2 και το στέλνει στο χρήστη-2. Συνεπώς, οι δύο χρήστες εξαπατήθηκαν. Πιστοποιητικά δημόσιου-κλειδιού Ένα πιστοποιητικό δημοσίου-κλειδιού είναι ένα δημόσιο κλειδί υπογεγραμμένο από ένα έμπιστο άτομο. Πιστοποιητικά χρησιμοποιούνται σε προσπάθειες αντικατάστασης ενός κλειδιού από ένα άλλο οι οποίες εμποδίζονται. Το πιστοποιητικό ενός χρήστη-2 σε μία βάση δεδομένων δημοσίων κλειδιών δεν περιέχει μόνο το δημόσιο κλειδί του, αλλά και διάφορες πληροφορίες (όπως το όνομα του, τη διεύθυνση του κ.ο.κ.) και υπογράφεται από κάποιο έμπιστο άτομο, που είναι γνωστός σαν Αρχή Πιστοποίησης - ΑΠ (Certification Authority-CA). Υπογράφοντας και το κλειδί και τις πληροφορίες σχετικά με τον χρήστη-2, η ΑΠ επιβεβαιώνει ότι οι πληροφορίες σχετικά με το χρήστη-2 είναι ακριβείς και το δημόσιο κλειδί όντως ανήκει στο χρήστη αυτό. Οπότε ο χρήστης-1 ελέγχει την υπογραφή της ΑΠ (δηλαδή του δικαστή) και στη συνέχεια χρησιμοποιεί το δημόσιο κλειδί όντας βέβαιος ότι το κλειδί ανήκει στο χρήστη-2 και όχι σε κάποιον άλλο. Ποιο είναι, όμως, το νόημα της πιστοποίησης; Ή ποιος είναι άξιος εμπιστοσύνης ώστε να εκδίδει πιστοποιητικά; Ο οποιοσδήποτε μπορεί να υπογράψει ένα πιστοποιητικό οποιουδήποτε άλλου, αλλά θα 34

36 πρέπει να υπάρχει τρόπος ώστε να «φιλτράρονται» αυτά τα πιστοποιητικά. Στην ιδανική περίπτωση ο χρήστης-2 εφαρμόζει κάποιες διεργασίες πιστοποίησης πριν η ΑΠ υπογράψει το πιστοποιητικό του. Επιπρόσθετα, μία χρονική σφραγίδα ή μια ένδειξη χρονικής εγκυρότητας του πιστοποιητικού είναι σημαντικά ώστε να προφυλαχθεί από εκτεθειμένα κλειδιά. Η χρονική σφραγίδα δεν είναι αρκετή. Κλειδιά μπορεί να ακυρωθούν προτού λήξουν, οπότε είναι σημαντικό η ΑΠ να κρατά μία λίστα με τα άκυρα πιστοποιητικά, την οποία πρέπει να ελέγχουν οι χρήστες. Επίσης και το ένα, μοναδικό ζεύγος δημοσίου και ιδιωτικού κλειδιού δεν είναι αρκετό. Μία καλή εφαρμογή κρυπτογραφίας δημοσίου-κλειδιού χρειάζεται ξεχωριστά κλειδιά για κρυπτογράφηση και για ψηφιακές υπογραφές. Αυτός ο διαχωρισμός επιτρέπει διαφορετικά επίπεδα ασφάλειας, διαφορετικούς χρόνους λήξης (δηλαδή διάρκειας ζωής των κλειδιών), διαφορετικές διεργασίες για εφεδρικά κλειδιά κ.ο.κ. Ακόμη κι ένα μοναδικό ζεύγος κλειδιών κρυπτογράφησης / αποκρυπτογράφησης δεν είναι αρκετό. Ένα μοναδικό κλειδί πιστοποιεί και την ταυτότητα κάποιου χρήστη, αλλά και την ιδιότητα του. Ένας χρήστης, όμως, μπορεί να έχει πολλές ιδιότητες. Για παράδειγμα, ο χρήστης μπορεί να θέλει να υπογράψει ένα έγγραφο σαν ανεξάρτητος χρήστης, σαν αντιπρόεδρος μιας εταιρείας, ή σαν πρόεδρος ενός οργανισμού. Για κάθε ξεχωριστή ιδιότητα του χρήστη θα πρέπει να υπάρχει κι ένα διαφορετικό κλειδί. Κάποια από αυτά τα κλειδιά έχουν μεγαλύτερη αξία, οπότε και θα πρέπει να προστατευτούν καλύτερα. Διαχείριση διανεμημένων κλειδιών Σε κάποιες περιπτώσεις, αυτού του είδους η κεντρική διαχείριση κλειδιών δεν θα δουλέψει. Ίσως δεν υπάρχει κάποια ΑΠ την οποία μπορούν να εμπιστευτούν οι χρήστες. Η διαχείριση διανεμημένων κλειδιών επιλύει αυτό το πρόβλημα με τους εισαγωγείς (introducers). Οι εισαγωγείς είναι χρήστες του συστήματος, οι οποίοι υπογράφουν τα δημόσια κλειδιά των φίλων τους. Για παράδειγμα όταν ο χρήστης-2 δημιουργεί το δημόσιο κλειδί του, το δίνει να του το υπογράψουν δύο φίλοι του, οι οποίοι και του το υπογράφουν δίνοντας του ένα αντίγραφο τους υπογραφής. Τώρα, όταν ο χρήστης-2 παρουσιάζει το κλειδί του σε έναν άγνωστο χρήστη-1, παρουσιάζει μαζί με αυτό και τους δύο υπογραφές. Αν ο χρήστης-1 γνωρίζει κι εμπιστεύεται κάποιον από τους δύο εισαγωγείς, τότε πιστεύει ότι το κλειδί του χρήστη-2 είναι έγκυρο. Αν τους γνωρίζει και τους δύο λίγο (όχι καλά), πάλι έχει λόγους να πιστεύει 35

37 ότι το κλειδί είναι έγκυρο. Αν δεν γνωρίζει κανέναν από τους δύο, τότε δεν έχει λόγους να εμπιστευτεί τον χρήστη-2. Με την πάροδο του χρόνου, ο χρήστης-2 θα «συλλέξει» περισσότερους εισαγωγείς. Αν οι δύο χρήστες κινούνται στον ίδιο χώρο, οι πιθανότητες να γνωρίσει ο χρήστης-1 κάποιον από τους εισαγωγείς του χρήστη-2 είναι μεγάλες. Για να αποφευχθεί η αντικατάσταση κάποιου κλειδιού από τον υποκλοπέα, τους εισαγωγέας θα πρέπει να είναι σίγουρος ότι το κλειδί ανήκει στο χρήστη-2 πριν το υπογράψει. Βεβαίως, μπορεί ο εισαγωγέας να απαιτήσει να δοθεί το κλειδί πρόσωπο με πρόσωπο ή σε τηλεφωνική επικοινωνία για λόγους ασφαλούς ανταλλαγής κλειδιού. Το πλεονέκτημα αυτού του μηχανισμού είναι ότι δεν υπάρχει ΑΠ την οποία όλοι πρέπει να εμπιστεύονται. Από την άλλη πλευρά, όταν ο χρήστης-1 λαμβάνει το κλειδί του χρήστη-2, δεν έχει εγγυήσεις ότι θα γνωρίζει κάποιον από τους εισαγωγείς, οπότε δεν είναι σίγουρο αν θα εμπιστευτεί την εγκυρότητα του κλειδιού. 36

38 KΕΦΑΛΑΙΟ 2 ΠΑΡΟΥΣΙΑΣΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ RIJNDAEL ( 2 ) ΠΕΡΙΓΡΑΦΗ ΑΛΓΟΡΙΘΜΟΥ RIJNDAEL Ο αλγόριθμος Rijndael είναι αλγόριθμος που χρησιμοποιεί blocks με μεταβλητό μέγεθος του block και με μεταβλητό μέγεθος κλειδιου.το μέγεθος του block αλλά και του κλειδιού μπορεί να οριστεί ανεξάρτητα σε 128,192 η 256bits. ( 2.1 ) TΟ STATE ΤΟ ΚΛΕΙΔΙ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΚΑΙ Ο ΑΡΙΘΜΟΣ ΤΩΝ ΓΥΡΩΝ Οι διαφορετικοί μετασχηματισμοί επενεργούν σε ένα ενδιάμεσο αποτέλεσμα των δεδομένων, το καλούμενο STATE. Το STATE μπορεί να παρασταθεί ως ένας ορθογωνικος πίνακας από bytes.αυτός ο πίνακας έχει 4 γραμμές, ο αριθμός των κολώνων ορίζεται ως Nb και είναι ίσος με το μέγεθος του block διαιρεμένο με το 32. Το Cipher Key είναι παρόμοια ορισμένο ως και αυτό ένας ορθογωνικος πίνακας με 4 γραμμές.o αριθμός των πινάκων του κλειδιού ορίζεται ως Νκ και είναι ίσος με το μήκος του κλειδιού διαιρεμένου με το 32. Οι απεικονίσεις και των δυο παρατίθενται στους πίνακες 1 και 2 37

39 Πίνακας 1 παράδειγμα για STATE με Nb = 6 Πίνακας 2 παράδειγμα για Cipher Key με Nk = 4 Σε κάποιες περιπτώσεις αυτά τα block μπορούν ακόμα να θεωρηθούν ως μιας διάστασης σειράς από 4-bytes vectors, οπού κάθε vector αποτελείται από ενεργή κολώνα της εκδοχής με ορθογώνιο πίνακα.αυτές οι γραμμές έχουν μέγεθος 4,6 ή 8 αντίστοιχα και χωρίζονται σε 0-3,0-5 και 0-7.Αυτα τα 4-bytes vectors αναφέρονται μερικές φορές ως λέξεις. Όπου είναι απαραίτητο να ορισθούν τα 4 ξεχωριστά bytes με 4-byte vector η λεξη,θα χρησιμοποιείται ο συμβολισμός ( a, b, c, d ) όπου a, b, c και d είναι τα bytes στις θέσεις 0,1, 2 και 3 αντίστοιχα στην κολώνα, vector ή λέξη που χρησιμοποιούμε. 38

40 Η είσοδος και έξοδος που χρησιμοποιείται στον αλγόριθμο Rijndael όσο αφορά το εξωτερικό interface, θεωρείται ως μιας διάστασης γραμμή των 8-bit byte αριθμημενη προς τα πάνω από το 0 μέχρι 4 Νb 1.Αυτά τα block (πακέτα δεδομένων) έχουν μέγεθος 16, 24 και 32 bytes και χωρίζονται σε 0-15,0-23 ή Το Cipher Key μπορεί να θεωρηθεί ως μιας διάστασης γραμμή από 8bit bytes τα οποία είναι αριθμημενα προς τα πάνω από 0 μέχρι 4 Νk 1.Αυτά τα block έχουν μέγεθος 16, 24 και 32bytes και χωρίζονται σε 0-15,0-23 ή Tα bytes εισόδου ( το plaintext ) είναι χαρτογραφημένα σε bytes του STATE με την σειρά α0,0,α1,0,α2,0,α3,0,α0,1,α1,1,α2,1,α3,1,α4,1.. και τα bytes του κλειδιού είναι χαρτογραφημένα σε bytes του Cipher Key με την σειρά k0,0,k1,0,k2,0,k3,0,k0,1,k1,1,k2,1,k3,1,k4,1...στο τέλος της διαδικασίας του αλγόριθμου η έξοδος του αλγόριθμου εξάγεται από το STATE παίρνοντας τα bytes του STATE με την ίδια σειρά. Πιο αναλυτικά,αν ο μιας διάστασης φορέας ενός byte είναι n και οι φορείς των δυο διαστάσεων είναι ( i, j ) τότε, έχουμε : i = n mod 4 j = n / 4 n = i + 4 * j Επιπλέον, ο φορέας i είναι επίσης ο αριθμός του byte το οποίο βρίσκεται εντός του 4-byte vector η λέξη και j είναι ο φορέας για το vector ή λέξη η οποία περιέχεται στο block. O αριθμός των γύρων που απαιτούνται για την ολοκλήρωση της διαδικασίας συμβολίζεται με Nr και εξαρτάται από τις τιμές Nb και Nk.Ο τρόπος με τον οποίο καθορίζονται ο αριθμός των γύρων παρατίθεται στον παρακάτω πινακα 3 39

41 Πίνακας 3 Ο αριθμός των γύρων(nr) ως συνάρτηση του μεγέθους των block και Κλειδιού ( 2.2 ) Ο ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ΤΩΝ ΓΥΡΩΝ Ο μετασχηματισμός των γύρων αποτελείται από 4 διαφορικούς μετασχηματισμούς.χρησιμοποιώντας ψευδό κώδικα C συμβολισμό έχουμε : Round ( State, RoundKey ) { ByteSub ( State ); ShiftRow ( State ); MixColumn ( State ); AddRoundKey ( State ); } O τελικός γύρος του αλγόριθμου είναι ελαφρά διαφορετικος.οριζεται ως εξής : FinalRound ( State ); { ByteSub ( State ); ShiftRow ( State ); AddRoundKey ( State, RoundKey ); } 40

42 Στον παραπάνω συμβολισμό που παρουσιάστηκε οι <<συναρτήσεις>> ( Round, ShiftRow, ) επενεργούν στις γραμμές των οποίων οι δείκτες ( State, RoundKey ) δίνονται. Είναι φανερό ότι ο τελικός γύρος είναι ίδιος με τους άλλους γύρους απλά χωρίς το στάδιο του MixColumn. Παρακάτω ακολουθούν οι παρουσιάσεις των components των μετασχηματισμών. ( 2.3 ) Ο ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ByteSub O ByteSub μετασχηματισμός είναι μια μη-γραμμική αντικατάσταση η οποία επενεργεί σε κάθε ένα byte του State ξεχωριστά.ο πίνακας που ορίζει τον τρόπο αντικατάστασης ( η αλλιώς S-box ) είναι αναστρέψιμος και είναι κατασκευασμένος από την σύνθεση 2 άλλων μετασχηματισμών : (1) Πρώτα, παίρνουμε τον πολλαπλασιαζομενο ανάστροφο σε πεδίο GF ( 2 8 ) του οποίου η αναπαράσταση βρίσκεται στο παράρτημα Α (2) Έπειτα, εφαρμόζεται ένας affine (σε πεδίο GF ( 2 8 ) ) μετασχηματισμός ο οποίος και περιγράφεται γραφικά παρακάτω : 41

43 H εφαρμογή του S-Box που μόλις περιγράψαμε σε όλα τα bytes του State συμβολίζεται ως : ByteSub ( State ). Στο παρακάτω σχήμα 2 παρουσιάζεται η επίδραση του ByteSub μετασχηματισμού στο State 42

44 σχήμα 2 O μετασχηματισμός ByteSub σε κάθε ξεχωριστό byte του State Ο ανάστροφος του ByteSub πραγματοποιείται με την αντικατάσταση των bytes όταν εφαρμόζεται ο ανάστροφος πίνακας. Πιο συγκεκριμένα, ο μετασχηματισμός η εκτέλεση του συσχετισμένου μετασχηματισμού ( affine transformation ) για κάθε μια από τις 256 δυνατές τιμές που μπορεί να πάρει ένα byte. Ο πίνακας που απεικονίζει το S-box σε 16δικη μορφή παρατίθεται στο Παράρτημα Α με την υπόθεση ότι το byte που θα αντικατασταθεί έχει την μορφή xy. Π.χ Αν ένα 8bit byte του State έστω το S 1, 1, έχει τιμή S 1, 1 = { 43 }, τότε η τιμή αντικατάστασης που ορίζεται από την τομή της γραμμής 4 και στήλης 3. Σύμφωνα λοιπόν με τον πίνακα η νέα τιμή θα είναι S ' 1, 1 = { 1a }. Ο αντιστροφος invbytesub είναι παρομοιος με τον ByteSub μονο που χρησιμοποιουμε τον πινακα που παρατιθεται στο Παραρτημα Α. ( 2.4 ) Ο ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ShiftRow Σε αυτόν τον μετασχηματισμό οι σειρές του πίνακα State ολισθαίνουν κυκλικά διάφορους αριθμούς θέσεων. 43

45 Έτσι, η σειρά 0 δεν ολισθαίνει καθόλου, η σειρά 1 ολισθαίνει κατά C1 bytes, η σειρά 2 ολισθαίνει κατά C2 bytes και η σειρά 3 ολισθαίνει κατά C3 bytes. Οι τιμές C1,C2 και C3 είναι οι τιμές ολίσθησης και εξαρτώνται από το μέγεθος του block Νb.Οι διάφορες τιμές καθορίζονται στον παρακάτω πίνακα 4 Πίνακας 4 τιμές ολίσθησης για διάφορα μεγέθη block Η λειτουργία της ολίσθησης των σειρών του πίνακα State σύμφωνα με τις παραπάνω καθορισμένες τιμές συμβολίζεται ως εξής : ShiftRow ( State ). Στο παρακάτω σχήμα 3 παρουσιάζεται η επίδραση του ByteSub μετασχηματισμού στο State σχήμα 3 O μετασχηματισμός ShiftRow σε κάθε μια σειρά του State 44

46 Ο ανάστροφος μετασχηματισμός ShiftRow είναι κυκλική ολίσθηση από κατω,των 3 γραμμών Nb-C1, Nb-C2 και Nb-C3 bytes αντίστοιχα έτσι ώστε το byte στην θέση j και γραμμή i να μεταφέρεται στην θέση ( j + Nb-Ci ) mod Nb. ( 2.5 ) Ο ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ΜixColumn Στο μετασχηματισμό MixColumn οι κολώνες του πίνακα του State θεωρούνται πολυώνυμα 4 ορων επί του πεδίου GF ( 2 8 ) και πολλαπλασιάζετε modulo x με ένα σταθερό πολυώνυμο c(x) το οποίο είναι : 3 2 c(x) = 03 x + '01' x + '01' x + '02'. Αυτό το πολυώνυμο είναι ισοδύναμο με το x και έτσι είναι μη αναστρέψιμο. Μπορούμε να χρησιμοποιήσουμε την απεικόνιση με πίνακες, έτσι, θα έχουμε b(x) = c(x) a(x). H εφαρμογή αυτής της λειτουργίας σε όλες τις κολώνες του πίνακα State συμβολίζεται ως : MixColumn ( State ) 45

47 Στο παρακάτω σχήμα 4 παρουσιάζεται γραφικά η επίδραση του μετασχηματισμού MixColumn στον πίνακα State. σχήμα 4 O μετασχηματισμός MixColumn στις κολώνες του State Ο ανάστροφος μετασχηματισμός MixColumn είναι παρόμοιος με αυτόν του MixColumn.Κάθε κολώνα μετασχηματίζεται όταν πολλαπλασιάζετε με ένα συγκεκριμένο πολυώνυμο πολλαπλασιασμού d(x) το οποίο ορίζεται : 3 2 ( 03 x + '01' x + '01' x + '02') d(x) = 01. Ενώ δίνεται ότι : 3 2 d ( x) = '0B' x + '0D' x + '09' x+ '0E'. ( 2.6 ) ΤΟ ΣΤΑΔΙΟ ΤΗΣ ΠΡΟΣΘΕΣΗΣ ΜΕ ΤΟ ΚΛΕΙΔΙ-ΓΥΡΟΥ Σε αυτή την εφαρμογή ένα κλειδί-γύρου εφαρμόζεται στον πίνακα δεδομένων State μέσω μιας απλής bitwise XOR. 46

48 Το κάθε κλειδί-γύρου ( Round Key ) εξάγεται από το Cipher Key μέσω της ρουτίνας της παραγωγής του κλειδιού. Το μέγεθος του Round Key είναι πάντα ίσο με το μέγεθος του block Nb. Ο μετασχηματισμός ο οποίος αποτελείται από μια XOR επί των bytes του Round Key με τα δεδομένα του πίνακα State, συμβολίζεται ως εξής : AddRoundkey ( State, RoundKey ). Αυτός ο μετασχηματισμός παρουσιάζεται στο παρακάτω σχήμα 5 σχήμα 5 Στην πρόσθεση κλειδιού εφαρμόζεται μια XOR μεταξύ Round Key και State To ανάστροφο στάδιο του AddRoundKey μετασχηματισμού είναι ο ίδιος του ανάστροφος. 47

49 KΕΦΑΛΑΙΟ 3 ( 1 ) ANAΛΥΤΙΚΗ ΠΕΡΙΓΡΑΦΗ: Η διαδικασία της κρυπτογράφησης/αποκρυπτογράφησης υλοποιείται χρησιμοποιώντας τα παρακάτω επιμέρους στάδια. : (α) ΕΙΣΟΔΟΣ: Η μονάδα επεξεργασίας της εισόδου αποτελείται από 2 μοναδες,την μονάδα Load_key και την μονάδα Load_input. H είσοδος των δεδομένων και του αρχικού κλειδιού είναι 32bits.Οι μέγεθος όμως των δεδομένων που απαιτείται για την επεξεργασία είναι λέξεις των 128bits ( αφού αυτό το μέγεθος λέξης προς κρυπτογράφηση επιλέχθηκε).οι μονάδες αυτές έχουν σαν σκοπό να δέχονται είσοδο 32bits και να φτιάχνουν πακέτα δεδομένων των 128bits για να εισέλθουν στην είσοδο της μονάδας επεξεργασιας.σκοπος του κεντρικού ελέγχου είναι να συντονίζει την λειτουργία αυτών των δυο ξεχωριστών μονάδων έτσι ώστε να έχουμε ταυτόχρονη είσοδο των δεδομένων και των δυο μονάδων στην μονάδα επεξεργασίας. Πιο συγκεκριμένα μονάδα Load_input αποτελείται από 4 καταχωρητες,1 μετρητή count_round και μια μονάδα ελέγχου FSM.Οι καταχωρητες παίρνουν είσοδο των 32bits και φτιάχνουν πακέτα με τετράδες των 32bits δηλαδή λέξεις των 128bits οι οποίες και θα υποστούν την κρυπτογράφηση/αποκρυπτογράφηση στην μονάδα Core.Eπειδη,η μονάδα επεξεργασίας Enc/Dec υλοποιείται με μια pipelined αρχιτεκτονική τεσσάρων σταδίων γι αυτό άλλωστε υπάρχουν στην σχεδίαση οι 4 καταχωρητες σχηματοποιούν τέσσερις ομάδες των 128bits.Η μονάδα αυτή ενεργοποιείται με το που εισέρχονται δεδομένα στην μοναδα,δηλαδη στον πρώτο από τους 4 καταχωρητες ανεξάρτητα από τον κεντρικό έλεγχο FSM.Ο κεντρικός έλεγχος 48

50 ενημερώνεται για την πορεία της σχηματοποίησης από σήματα εξόδου της Load_input. Η λειτουργία της μονάδας εισόδου του κλειδιού Load_key είναι αντίστοιχη με αυτή της Load_input.Kαι εδώ υπάρχει ένας καταχωρητης και μια μονάδα ελέγχου FSM.Η μοναδα δέχεται τέσσερις εισόδους από 32bits και τις ομαδοποιεί και σχηματίζει μια λέξη-κλειδί μεγέθους 128bits το οποίο και προωθείται στην μονάδα στην μονάδα επεξεργασίας για να εκτελεστεί το στάδιο της αρχικής άθροισης Initial_KeyAddition. Kαι οι δυο παραπάνω μονάδες έχουν για εξόδους σήματα των 128bits τα οποία και εισέρχονται ως είσοδοι στην μονάδα επεξεργασία Enc/Dec.Eκτος από τα δεδομένα εξέρχονται των μονάδων υπάρχουν και τα σήματα εξόδου key_ready και data_ready τα οποία κατευθύνονται ως σήματα ελέγχου στην είσοδο της κεντρικής μονάδας ελέγχου FSM.Σκοπός των σημάτων αυτών είναι να ενημερώνεται η μονάδα ελέγχου για την πορεία επεξεργασίας/σχηματοποίησης των δεδομένων εισόδου και κυρίως για το πότε είναι έτοιμα να προωθηθούν στην μονάδα Core για να αρχίσουν την διαδικασία επεξεργασίας του αλγόριθμου. (β) Core ( μοναδα επεξεργασίας ): Είναι μια μονάδα που αποτελείται από έναν αρχικό καταχωρητη εισόδου των δεδομενων,τη βαθμίδα που υλοποιεί το στάδιο του Initial_KeyAddition, έναν πολυπλεκτη 1-2,την βαθμίδα Basic_Block που αποτελείται από άλλες επιμέρους βαθμίδες που στην ουσία υλοποιούν τα υπόλοιπα 4 στάδια του αλγόριθμου και ένας αποπλεκτης 2-1. Αυτή η μονάδα είναι αυτή η οποία στην ουσία πραγματοποιεί τα στάδια που απαιτούνται για να υλοποιηθεί ο αλγοριθμος.το Basic_Block είναι η βαθμίδα του Core oπου πραγματοποιείται η επεξεργασία των 10 γύρων του αλγόριθμου στα δεδομενα.οταν η επεξεργασία έχει λάβει τέλος και τα δεδομένα έχουν κρυπτογραφηθεί/αποκρυπτογραφηθεί τότε είτε επαναλαμβάνεται η ίδια διαδικασία για την επόμενη τετράδα δεδομένων είτε δεν υπάρχουν καινούργια δεδομένα στην είσοδο και έτσι ολόκληρη μονάδα αδρανεί και περιμένει σε αυτή την κατάσταση έως ότου να δεχτεί η μονάδα εισόδου καινούργια τετράδα δεδομένων. (γ) Μετρητές (counters): Είναι 3 μετρητές : o μετρητής count_round, ο μετρητής count_mix και ο μετρητής ount_final. 49

51 Ο σκοπός λειτουργίας τους είναι να παρακολουθούν την πορεία της επεξεργασίας των δεδομένων κατά την διάρκεια των 10 γύρων μέσα στην μονάδα επεξεργασίας Core. Οι μετρητές μετρώντας παλμούς ρολογιού ενημερώνουν με κατάλληλα σήματα ελέγχου την κεντρική μονάδα ελέγχου FSM.Ενημερώνουν δηλαδή τον έλεγχο για το πότε τα δεδομένα τελειώνουν τον πρώτο γύρο (μετά από 5 παλμούς ρολογιού),πότε τελειώνουν τους επομένους 8 ενδιάμεσους γύρους (ανά 4 παλμούς ρολογιού),πότε εισέρχονται το πρώτο πακέτο δεδομένων στον 10 ο και τελευταίο γύρο του αλγόριθμου και για πόσους παλμούς ρολογιού θα πρέπει να παραλείπεται το στάδιο του Mix_Col της βαθμίδας Basic_Block( είναι χαρακτηριστικό του αλγόριθμου ο τελευταίος γύρος να μην ακριβώς ίδιος με του υπόλοιπους 8 αλλά να παραλείπεται η βαθμίδα που υλοποιεί το στάδιο Mix_Col ). Οι μετρητές έχουν ως εξόδους τα σήματα ελέγχου : end_of_round,last_round και no_mix,τα οποία εισέρχονται και αυτά ως σήματα εισόδου στην κεντρική μονάδα ελέγχου μετρητές έχουν αλληλεπίδραση με τον έλεγχο και έτσι ενώ ο FSM ενημερώνεται για την πορεία της διαδικασίας του αλγόριθμου, ο έλεγχος με τη σειρά του τους ελεγχει.ετσι,με κατάλληλα σήματα ο FSM είτε ενεργοποιεί είτε απενεργοποιεί τους μετρητές ανάλογα με το σε ποια κατάσταση (state) βρίσκεται. (δ) Έλεγχος μονάδας (unit FSM): H λειτουργία και ο σκοπός της μονάδας ελέγχου FSM είναι η άσκηση ελέγχου στις υπόλοιπες βαθμίδες που αποτελούν το συνολικό σύστημα μονάδα ελέγχου ενημερώνεται από τις επιμέρους βαθμίδες της αρχιτεκτονικής και αυτή με τη σειρά της δίνει τα κατάλληλα σήματα ελέγχου στις επιμέρους βαθμίδες για την σωστή και απρόσκοπτη πορεία της υλοποίησης του αλγοριθμου.πιο συγκεκριμενα,λαμβανοντας τα κατάλληλα σήματα ελέγχου από τους μετρητές και τις μονάδες ελέγχου των μονάδων Load_input και Load_Key δίνει με τη σειρά του κατάλληλα σήματα στην μονάδα επεξεργασίας Core. Aρχικα, από τα σήματα data_ready και key_ready που λαμβάνει ως εισόδους από τις μονάδες εισόδου δεδομένων και κλειδιου,ενεργοποιει την μονάδα επεξεργασίας και την θέτει σε κατάσταση αναμονής έτσι ώστε να είναι έτοιμη να υποδεχθεί τις εισόδους. Αφού έχουν εισέλθει τα δεδομένα στην επεξεργασία από την μονάδα εισόδου και έχει αρχίσει η διαδικασία του αλγορίθμου η μονάδα ελέγχου πρέπει να <<γνωρίζει>> σε ποιο γύρο και σε ποιο στάδιο του συγκεκριμένου γύρου βρίσκεται το κάθε πακέτο 50

52 των 128bits.Eτσι,όπως αναφέρθηκε και παραπάνω οι μετρητές είναι επιμερισμένοι σε αυτή την λειτουργια.οι μετρητές ενημερώνουν σε ποιο γύρο και στάδιο βρίσκονται τα δεδομένα και ποτέ τελικά ολοκληρώνονται και οι 10 γύροι του αλγοριθμου.οταν λοιπόν ολοκληρωθεί η διαδικασία του αλγορίθμου για το κάθε πακέτο δεδομένων,τοτε,ειτε ο έλεγχος ενεργοποιεί και πάλι την μονάδα Core για τις νέες εισόδους είτε πραγματοποιεί reset σε όλο το σύστημα και το θέτει σε κατάσταση αναμονής έως ότου να δεχθούν οι μονάδες εισόδου νέα πακέτα δεδομένων. ( 2 ) ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΧΕΔΙΑΣΗΣ Η αρχιτεκτονική που επιλέχθηκε για την υλοποίηση του συγκεκριμένου αλγόριθμου είναι αυτή της pipelined αρχιτεκτονικής αλγόριθμος υλοποιείται κατά την διέλευση των δεδομένων από 4 διαδοχικά σταδια.στην έξοδο καθενός από αυτά τα στάδια τοποθετούμε 4 αντίστοιχους καταχωρητες.ετσι,αντι να επεξεργάζεται ένα block των 128bits την φορά, επεξεργάζονται 4 block δεδομένων τα οποία εισέρχονται σε κάθε στάδιο. Αντί λοιπον,ένα block να πραγματοποιεί έναν γύρο των 4 σταδίων σε έναν παλμό ρολογιού στην pipelined αρχιτεκτονική έχουμε 4 παλμούς ρολογιού σε κάθε γυρο.τελικα τα 4 πακέτα θα πραγματοποιήσουν 9 γύρους σε 36 παλμούς ρολογιού ενώ ο πρώτος απαιτεί 5 παλμούς ρολογιού. Η λειτουργία της διάταξης αρχίζει με το που δέχεται δεδομένα εισόδου μεγέθους 32bits η Load_input μονάδα και η Load_key.Μετά από την πάροδο 19 παλμών ρολογιού δημιουργούνται 4 πακέτα των 128bits τα οποία και εισέρχονται στην μονάδα Enc/Dec για να επεξεργαστουν.κατα την διάρκεια 5 παλμών ρολογιού υπάρχει προώθηση των δεδομένων εξόδου της μονάδας Load_input στην είσοδο της Enc/Dec μοναδας.μετα από αυτούς τους 5 παλμούς η βαθμίδα Basic_block λειτουργεί χωρίς να δέχεται πλέον άλλη είσοδο αλλά επεξεργάζονται τα ήδη εισερχόμενα 4 πακέτα. Η μονάδα Load_input σ αυτό το χρονικό διάστημα είτε παραμένει αδρανής ( γιατί δεν υπάρχουν καινούργια δεδομένα εισόδου ) είτε ξαναδημιουργεί τα 4 πακέτα των 128bits.Οι βαθμίδες των μετρητών ενημερώνουν την μονάδα ελέγχου FSM για το πότε τα δεδομένα εισέρχονται στον 10 ο και τελευταίο γύρο και δίνουν τα κατάλληλα 51

53 σήματα ελέγχου ώστε να παρακαμθει το ΜixCol_stage σταδιο.για τους επομένους 4 παλμούς ρολογιού η βαθμίδα Enc/Dec προωθεί την έξοδο της ( τα επεξεργασμένα 4 πακέτα ) στην έξοδο της συνολικής βαθμίδας. Κατά την διάρκεια της διαδικασίας της προώθησης των επεξεργασμένων πακέτων από την έξοδο της βαθμίδας Enc/Dec,η μονάδα εισόδου Load_input συνεχίζει να δημιουργεί τα 4 πακέτα. Όταν η μονάδα ελέγχου FSM βρίσκεται στην κατάσταση s1 περιμένει μετά από ένα παλμό ρολογιού την είσοδο της μονάδας επεξεργασίας 4 καινούργιων πακέτων από την Load_input και η διαδικασία επαναλαμβάνεται εκ νεου.το σύστημα οδηγείται στην reset κατάσταση s0 αν δεν υπάρχουν νέα δεδομένα. Η αρχιτεκτονική της συνολικής σχεδίασης είναι τέτοια ώστε στο ίδιο design να μπορεί να επιτευχθεί και η κρυπτογραφία αλλά και η αποκρυπτογραφια.καθε βαθμίδα περιέχει και ένα component που υλοποιεί την κρυπτογραφία και ένα αντίστοιχο component που να υλοποιεί την αποκρυπτογραφηση. Αυτό φαίνεται καλύτερα στην παρακάτω διάταξη 52

54 σχήμα 6 Σχηματική απεικόνιση της εσωτερικής αρχιτεκτονικής των επιμέρους components που υλοποιούν τα στάδια του αλγόριθμου Το αν θα έχουμε την μια λειτουργία ή την άλλη ορίζεται κάθε φορά από component πολυπλεκτη και ένα component αποπλέκτη οι οποίοι ελέγχονται από το ίδιο σήμα ελέγχου Encr το οποίο δίνεται από την μονάδα FSM. Παρακάτω παρατίθεται η κεντρική αρχιτεκτονική της Encr/Dec μονάδα 53

55 σχήμα 7 Σχηματική απεικόνιση της εσωτερικής αρχιτεκτονικής των κεντρικων components που υλοποιούν τα στάδια του αλγόριθμου Η λεπτομερέστερη ανάλυση των επιμέρους component παρουσιάζεται παρακάτω. Το συνολικό design, η αρχιτεκτονική της διάταξης που υλοποιεί τον αλγόριθμο κρυπτογραφίας AES, παρατίθεται στο παρακάτω σχημα 8.Στην αρχιτεκτονική που παρουσιάζουμε, το σύστημα μπορεί και υλοποιεί είτε την κρυπτογραφία είτε την αποκρυπτογραφά.όπως αναφέρθηκε και πριν,ένα κοινό σήμα ελέγχου, το encr ορίζει αν θα έχουμε κρυπτογράφηση των δεδομένων η αν θα έχουμε αποκρυπτογράφηση. 54

56 σχήμα 8 συγκεντρωτικό διάγραμμα της συνολικής διάταξης των components Ο αλγόριθμος υλοποιείται από την μονάδα Enc/Dec.Στην μονάδα αυτή μπαίνουν τα δεδομένα και μέσω σημάτων ελέγχου επεξεργάζονται πραγματοποιώντας τους απαιτούμενους γύρους του αλγόριθμου. Όπως φαίνεται και από το παραπάνω σχηματικό συνολική μονάδα ελέγχεται από την βαθμίδα που υλοποιεί τον έλεγχο FSM.Έχει λοιπον,σηματα εισόδου ελέγχου από τον έλεγχο FSM σήμα εισόδου από την μονάδα εισόδου έξοδος της μονάδας είναι στην ουσία 4 σήματα των 32bits τα οποία είναι τα επεξεργασμένα 4 πακέτα των 32bits της μονάδας εισοδου.τελικα λοιπον,εισερχονται 128bits και επεξεργαζονται και ετσι και στην έξοδο παίρνουμε δεδομένα 128bits. Η μονάδα Enc/Dec αποτελείται από μια άλλη εσωτερική αρχιτεκτονικη.στο εσωτερικό του μεγαλύτερου component Enc/Dec υπάρχει η αρχιτεκτονική υλοποίησης του αλγόριθμου αρχιτεκτονική της σχεδίασης παρατίθεται στο σχηματικό διάγραμμα του Enc/Dec στο σχήμα 14. Στο παραπάνω σχηματικό υπάρχει ο πρώτος καταχωρητης, ο οποίος δέχεται τα δεδομένα της μονάδας της μονάδας εισόδου. Έπεται η αρχική XOR που υλοποιεί την Initial_Round.Στην συνεχεία έχει τοποθετηθεί ένας πολυπλεκτης 2-1 ο οποίος και καθορίζει ποια δεδομένα θα 55

57 εισέλθουν στο Basic_Block component (είτε τα δεδομένα που επανεπεξεργαζονται είτε που εισέρχονται και είναι καινούργια).το Basic/Block παρατίθεται στο σχήμα 18. Στο σχηματικό του σχήματος παρουσιάζεται η επεξεργασία των δεδομένων, είτε για κρυπτογράφηση είτε για αποκρυπτογράφηση επεξεργασία αυτή γίνεται συμφωνά με τα στάδια που απαρτίζουν τους γύρους του αλγοριθμου.στην υλοποίηση της επεξεργασίας των δεδομένων επιλέχθηκε η pipelined αρχιτεκτονική.αντι,κάθε πακέτο των 128bits να πραγματοποιεί τον κάθε γύρο σε διάρκεια ενός παλμού ρολογιού στην pipelined αρχιτεκτονική υπάρχουν οι 4 καταχωρητες του σχηματος.ετσι, κάθε πακέτο χρειάζεται 5,4 και 3 παλμούς ρολογιού για να πραγματοποιήσει έναν γυρο.ωστοσο,το κέρδος που έχουμε είναι ότι επεξεργάζονται ταυτόχρονα και τα 4 πακέτα των128bits που θέλουμε να κρυπτογραφήσουμε /αποκρυπτογραφήσουμε. Μετά το component του Basic_Block υπάρχει ένας αποπλέκτησ 1-2 ο οποίος ελέγχεται από από την κεντρική μονάδα ελέγχου FSM και επιλέγει αν τα επεξεργασμένα δεδομένα θα εξέλθουν από την μονάδα επεξεργασίας ως έξοδοι της μονάδας ή θα εισέλθουν και πάλι ως είσοδοι στον αρχικό πολυπλεκτη. Η μονάδα επεξεργασίας Enc/Dec είναι μια μονάδα pipelined αρχιτεκτονικης.επεξεργαζεται ταυτόχρονα 4 πακέτα των 128bits αντί να επεξεργάζεται ένα πακέτο την φορά ενώ οι όλες οι βαθμίδες δουλεύουν ταυτόχρονα χωρίς να μένουν χωρίς δεδομένα. Ο έλεγχος της όλης διάταξης γίνεται από το component FSM.Core και παρατίθεται στο σχήμα. Η λειτουργία της βαθμίδας FSM_AES είναι να παρακολουθεί την πορεία της επεξεργασίας των δεδομένων στα στάδια και στους γύρους του αλγόριθμου έλεγχος αναγνωρίζει και ελέγχει σε ποια από τις 7 καταστάσεις μπορεί να βρίσκεται το συνολικό σύστημα. Η πρώτη κατάσταση είναι αυτή στην οποία η μονάδα Enc/Dec παραμένει σε κατάσταση αναμονης.αν υπάρχει εισροή νέων εισόδων στην μονάδα εισοδου,το σύστημα ακόμα δεν επεξεργάζεται και περιμένει να δεχτεί πακέτα των 128bits. Η δεύτερη κατάσταση είναι αυτή στην οποία η μονάδα επεξεργασίας αρχίζει να δέχεται δεδομένα για επεξεργασία. 56

58 Η τρίτη κατάσταση είναι αυτή κατά την διάρκεια της οποίας η Enc/Dec επεξεργάζεται τα δεδομένα για τους πρώτους 9 γυρους.κατα την διάρκεια της επεξεργασίας της πρώτης ομάδας των 128bits ( 4 πακέτα των 128bits ) στην μονάδα επεξεργασίας η μονάδα εισόδου δέχεται νέα δεδομένα και ξαναφτιάχνει 4 νέα πακέτα δεδομένων. Η τέταρτη κατάσταση είναι αυτή οπού το πρώτο πακέτο εισέρχεται στον τελευταίο ( 10 ο ) γύρο ενώ τα υπόλοιπα 3 πακέτα βρίσκονται και επεξεργάζονται στον 9 ο γύρο. Η πέμπτη κατάσταση είναι αυτή που το πρώτο πακέτο έχει ολοκληρώσει τους 10 γύρους του αλγορίθμου και εξέρχεται στην έξοδο ενώ τα υπόλοιπα 3 έπονται. Στην έκτη κατασταση,εχουν εξέλθει όλα τα δεδομένα επεξεργασμένα στην έξοδο και στον επόμενο παλμό ρολογιού η Enc/Dec μονάδα αδειάζει από δεδομένα και μεταβαίνει το σύστημα στην δεύτερη κατάσταση ( αν υπάρχουν νέα πακέτα δεδομένων ) η στην πρώτη ( reset ) κατάσταση ( αν δεν υπάρχουν νέα δεδομένα ).K Για να μπορέσει η μονάδα ελέγχου FSM να <<αντιλαμβάνεται>> τις καταστάσεις και τις μεταβάσεις σε αυτές υπάρχουν σήματα ελέγχου εισόδου που προέρχονται από τις Τα σήματα αυτά ενεργοποιούνται όταν είναι έτοιμα τα δεδομένα εισόδου και κλειδιού για να μπουν στην μονάδα Enc/Dec. Ακόμα, υπάρχουν και οι 3 μετρητές σκοπός λειτουργίας των count_round,count_final και count_mix είναι να <<ενημερώνουν>> τον κεντρικό έλεγχο FSM_Core για το που βρίσκονται τα δεδομένα εισόδου στην μονάδα Εnc/Dec ( σε ποιο στάδιο και γύρο ).Έτσι πρώτος μετρητής μετρά τους παλμούς ρολογιού που περνούν για την διέλευση του κάθε πακέτου από τα κάθε στάδια των γύρων δεύτερος count_final μετρά τους παλμούς ρολογιού και ενημερώνει τον FSM πότε τα δεδομένα έχουν ολοκληρώσει 9 γύρους και μπαίνουν στον τελευταίο γύρο. Τέλος τρίτος μετρητής count_mix μετρά τους παλμούς ρολογιού και ενημερώνει ποτέ τα δεδομένα του πρώτου πακέτου είναι στον τελευταίο γύρο και ποτέ να δοθεί τα κατάλληλο σήμα ελέγχου για να αλλάξει η αλληλουχία των σταδίων και να παρακάμει το στάδιο MixColumn_stage. ( 4 ) VHDL: O κώδικας με τον οποίο περιγράφουμε τα επιμέρους components με τα οποία υλοποιούμε τον αλγόριθμο είναι η VHDL.Η γλώσσα VHDL δημιουργήθηκε στις 57

59 αρχές της δεκαετίας του 1980 από το αμερικανικό υπουργείο άμυνας με σκοπό την ανάπτυξη μιας τυποποιημένης πρακτικής σχεδίασης ψηφιακών κυκλωμάτων. Αποτελεί μια γλώσσα κειμένου η οποία καταγράφει τη δομή περίπλοκων ψηφιακών κυκλωμάτων. Παρέχει δυνατότητες μοντελοποίησης της συμπεριφοράς των ψηφιακών κυκλωμάτων και έτσι μπορεί να χρησιμοποιηθεί ως είσοδος σε προγράμματα λογισμικού που προσομοιώνουν τη συμπεριφορά των ψηφιακών κυκλωμάτων. Χρησιμοποιείται για την εισαγωγή σχεδίων σε συστήματα σχεδίασης CAD. Δύο σημαντικοί λόγοι για τη χρήση της VHDL έναντι της σχηματικής σχεδίασης είναι οι συντομότεροι χρόνοι ανάπτυξης στην ηλεκτρονική σχεδίαση και η απλούστερη υποστήριξη. Η γραφή σε κώδικα VHDL δεν είναι η χρήση σχηματικών στοιχείων (π.χ. πυλών), αλλά είναι ένας νέος τρόπος σχεδίασης. Η εργασία με τη VHDL δεν σημαίνει απλώς γράψιμο κώδικα, αλλά και δυνατότητα για δημιουργία ιεραρχιών και σχεδίαση με τη βοήθεια βιβλιοθήκης στοιχείων. Η σχεδίαση με τη VHDL σημαίνει ότι ο σχεδιαστής γράφει κώδικα και μετά επιβεβαιώνει τη λειτουργία σε έναν προσομοιωτή. Στη συνέχεια, ο κώδικας συντίθεται σε κύκλωμα. Η σύνθεση με τη βοήθεια compiler μεταφράζεται σε κώδικα μηχανής. Όσον αφορά το hardware, ο κώδικας VHDL μεταφράζεται σε σχήμα με πύλες και flip flops. Η VHDL υποστηρίζει τη δημιουργία περιβάλλοντος για ψηφιακή εξέλιξη. Υποστηρίζει επίσης διάφορες μεθόδους εξέλιξης. Πολλά από τα σημερινά ηλεκτρονικά προϊόντα έχουν διάρκεια ζωής περισσότερο από 10 χρόνια και συνεπώς πρέπει να επανασχεδιαστούν αρκετές φορές ώστε να επωφεληθούν από την καινούρια τεχνολογία. Ο απλούστερος τρόπος για να γίνει αυτό είναι να χρησιμοποιηθεί η ανεξάρτητη τεχνολογίας VHDL σχεδίαση. Πράγμα που σημαίνει ότι υπάρχει δυνατότητα αλλαγής της τεχνολογίας χρησιμοποιώντας αυτόματα εργαλεία. Όταν ένα ηλεκτρονικό προϊόν έχει διάρκεια ζωής 10 ετών, είναι σύνηθες να τροποποιείται και να προστίθενται καινούριες λειτουργίες. Η VHDL υποστηρίζει τη μετατρεψιμότητα, καθώς είναι εύκολη στην ανάγνωση, ιεραρχική και δομημένη. Η γλώσσα υποστηρίζει ιεραρχίες (block diagram), επαναχρησιμοποιήσιμα στοιχεία. διαχείριση λαθών και επαλήθευση. Τα στοιχεία μπορούν να αποθηκευθούν σε βιβλιοθήκη για χρήση σε πολλούς διαφορετικούς σχεδιασμούς. 58

60 Η ροή της ανάπτυξης από τον καθορισμό μέχρι το πρωτότυπο διαιρείται ως ακολούθως: Η φάση ανάλυσης αποτελείται από το γράψιμο του καθορισμού. Ο καθορισμός μπορεί να γραφτεί σε VHDL ή κανονική γλώσσα. Ο σκοπός του καθορισμού είναι να διαπιστωθεί τι πρέπει να γίνει. Ο καθορισμός μπορεί να περιγραφεί σε VHDL και μετά να επαληθευθεί σε έναν προσομοιωτή. Η φάση σχεδίασης σημαίνει τη μεταφορά του καθορισμού σε μια αρχιτεκτονική και κώδικα VHDL. Η φάση ξεκινά ορίζοντας μια αρχιτεκτονική (block diagram). Όταν η αρχιτεκτονική είναι έτοιμη, ο VHDL κώδικας γράφεται για τα διάφορα στοιχεία (blocks) ή αντιγράφονται έτοιμα στοιχεία από κάποια βιβλιοθήκη. Στη συνέχεια, η λειτουργία του σχεδιασμού επαληθεύεται σε έναν προσομοιωτή. Όταν το αποτέλεσμα συμφωνεί με τον καθορισμό, ο σχεδιαστής μπορεί να προχωρήσει στην επόμενη φάση. Στη φάση αυτή, το κύριο ζήτημα είναι ο τρόπος σχεδίασης της αρχιτεκτονικής και των στοιχείων. Η επόμενη φάση είναι η επιλογή τεχνολογίας. Η τεχνολογία καθορίζεται από παραμέτρους, όπως τιμή, επιδόσεις, κ.α. Οι χρονικοί περιορισμοί περιγράφονται σε ένα format που μπορεί να διαβαστεί από το εργαλείο σύνθεσης. Αν η σύνθεση δεν ανταποκρίνεται στους χρονικούς περιορισμούς, πρέπει η φάση σχεδίασης να επαναληφθεί εν μέρει ή στο σύνολο της. Μια εγκεκριμένη σύνθεση παράγει ένα τεχνολογικά εξαρτημένο σχέδιο, το οποίο είναι ένας φάκελος εισόδου για άλλα εργαλεία. Ένα πρωτότυπο κατασκευάζεται και συγκρίνεται με τον καθορισμό. Αν το αποτέλεσμα συμφωνεί με τον καθορισμό, τότε το κύκλωμα είναι έτοιμο. Αυτή η σύγκριση ονομάζεται επικύρωση LEONARDO SPECTRUM Για να ελεγξουμε την ορθη λειτουργια των components που σχεδιαστηκαν και υλοποιηθηκαν με την παραπανω γλωσσα VHDL χρησιμοποιουμε το προγραμμα εξομοιωσης Leonardo Spectrum Το πρόγραμμα Leonardo Spectrum είναι ένα ευέλικτο και διαδραστικό εργαλείο λογικής σύνθεσης, βελτιστοποίησης και ανάλυσης, το οποίο αναπτύχθηκε ώστε να επιτρέπει τη χρήση μεθόδων σχεδιασμού ανεξάρτητων τεχνολογίας για ASIC (Application Specific Integrated Circuit), FPGA (Field Programmable Gate Array) 59

61 και CPLD (Complex Programmable Logic Device). Οι σχεδιαστές μπορούν, να ενσωματώσουν αποτελεσματικά και οικονομικά πολλά design σε ένα, να χειριστούν την ιεραρχία του design και να χρησιμοποιήσουν την VHDL για να ολοκληρώσουν το design. Το εν λόγω πρόγραμμα προσφέρει design capture, είσοδο για VHDL και Verilog, διόρθωση λαθών σε επίπεδο register-transfer-level για λογική σύνθεση, (constrain-based βελτιστοποίηση, χρονική ανάλυση και σχηματική απεικόνιση. 60

62 KΕΦΑΛΑΙΟ 4 ( 4 ) ΛΕΠΤΟΜΕΡΗΣ ΠΑΡΟΥΣΙΑΣΗ ΤΩΝ COMPONENTS ( 4.1 ) METΡΗΤΗΣ Count_Round: Είναι component που υλοποιεί μετρητή ο οποίος απαιτείται για να μετρά τους γύρους της διαδικασίας που περνά κάθε block των 128bits.Μετρά με 2 διαφορετικούς τρόπους. Στην αρχή μετρά κάθε 5 παλμούς ρολογιού και δίνει σήμα end_of_round = 1 στην μονάδα FSM ενώ μετέπειτα μετρά κάθε 4 παλμούς ρολογιού. Το αν θα μετρά μέχρι τους 5 η τους 4 παλμούς ρολογιού το καθορίζει ο έλεγχος FSM μέσω του σήματος round_0.στην αρχή μετρά μέχρι 5 παλμούς γιατί ο πρώτος γύρος της διαδικασίας διαρκεί 5 παλμούς ρολογιού ενώ οι επόμενοι 9 απαιτούν 4 παλμούς. Το σήμα end_of_round είναι συνδεδεμένο με το σήμα enable του επόμενου μετρητή Count_final και ενημερώνει την κεντρική μονάδα τον αριθμό των γύρων που έχουν περασει.στο παρακάτω σχήμα 9 παρατίθεται το διάγραμμα του μετρητή.οπως φαίνεται και στο σχήμα τα σήματα εισόδου είναι το ρολόι clk,τα en_round και reset_round και round_0 τα οποία και προέρχονται από την μονάδα ελεγχου.το σήμα εξόδου end_of_round το οποίο είναι και σήμα που κατευθύνεται στην είσοδο του επομένου μετρητή count_final 61

63 σχήμα 9 διάγραμμα βαθμίδας του μετρητή count_round ( 4.2 ) METΡΗΤΗΣ Count_final: Eιναι μετρητής ο οποίος συνδέεται με τον μετρητή count_round μεσω του σηματος εισοδου end_of_round που συνδεεται με το σημα ενεργοποιησης enable του μετρητη count_final. Σκοπος του μετρητη είναι να μετρα κάθε φορα που ενεργοποιειται,δηλαδη, κάθε φορα που το σημα end_of_round = 1 κατι που σημβαινει κάθε φορα που τελειωνει ενας γυρος. Όταν το end_of_round ενεργοποιειθει και γινει 1 8 φορες τοτε ο μετρητης δινει σημα εξοδου last_round = 1 δηλαδη τα δεδομενα στον επομενο παλμο ρολογιου θα είναι ετοιμα να αρχισουν να μπαινουν στον τελευταιο γυρο.ο μετρητης ενημερωνει την κεντρικη μοναδα ελεγχου ότι το πρωτο πακετο δεδομενων εισερχεται στον τελευταιο γυρο ετσι ώστε ο ελεγχος να δωσει το καταλληλο σημα ελεγχου mix_select για να μπορεσει να παρακαμθει το component που υλοποιει το σταδιο Mix_Column. Στο παρακάτω σχήμα 10 παρατίθεται το διάγραμμα του μετρητή.οπως φαίνεται και στο σχήμα τα σήματα εισόδου είναι το ρολόι clk,τα en_final και reset_final.to σημα enable ελεγχεται από το σημα του προηγουμενου μετρητη end_of_round,ενώ το reset προέρχεται από την μονάδα ελεγχου.το σήμα εξόδου last_round το οποίο είναι και σήμα που κατευθύνεται στην είσοδο της κεντρικής μονάδας ελέγχου. σχήμα 10 διάγραμμα βαθμίδας του μετρητή count_final ( 4.3 ) METΡΗΤΗΣ Count_mix: 62

64 Είναι ο τελευταίος μετρητής ο οποίος μετράει μέχρι το 2 και δίνει σήμα εξόδου no_mix = 1.Όταν ενεργοποιείται ο μετρητής μετράει 2 παλμούς ρολογιού έτσι ώστε να ενημερώσει τον κεντρικό έλεγχο FSM ότι το πρώτο block των δεδομένων είναι στον τελευταίο γύρο του αλγόριθμου και πρέπει να δοθεί το κατάλληλο σήμα ελέγχου ώστε να παρακάμψει το component που υλοποιεί το στάδιο Mix_Column.Έτσι, η μονάδα ελέγχου FSM μεταβαίνει στην κατάσταση s4 στην οποία δίνεται όπως προαναφέρθηκε το κατάλληλο σήμα mix_select ώστε να αλλάξει ο 10 ο γύρος από τους υπόλοιπους 9. Στο παρακάτω σχήμα 11 παρατίθεται το διάγραμμα του μετρητή.οπως φαίνεται και στο σχήμα τα σήματα εισόδου είναι το ρολόι clk,τα en_mix και reset_mix.to σήμα enable και το reset προέρχεται από την μονάδα ελεγχου.το σήμα εξόδου no_mix το οποίο είναι και σήμα που κατευθύνεται στην είσοδο της κεντρικής μονάδας ελέγχου. σχήμα 11 διάγραμμα βαθμίδας του μετρητή count_mix ( 4.4 ) ΜΟΝΑΔΑ ΕΙΣΟΔΟΥ ΔΕΔΟΜΕΝΩΝ KΛΕΙΔΙΟΥ Load_key_input Είναι η μοναδα που απαιτειται για να δεχθει τα δεδομενα του κλειδιου του αλγοριθμου. Σκοπος της ολης διαταξης είναι να συγχρονιζει τα δεδομενα του κλειδιου με τα δεδομενα που επεξεργαζονται ετσι ώστε να γινεται επιτυχημενη το σταδιο του Add_Round_Key oπου λαμβανει χωρα η προσθεση των 128bits των δεδομενων με τα 128bits των δεδομενων του κλειδιου. Αυτή η βαθμίδα ελέγχεται από ένα κεντρικό σήμα reset και αρχίζει να επεξεργάζεται κάθε φορά που εισέρχονται καινούργια δεδομένα εισόδου. 63

65 Παρακάτω περιγράφεται αναλυτικότερα η αρχιτεκτονική της βαθμίδας. ΔΙΑΤΑΞΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Το σύστημα που πρέπει να υλοποιηθεί αποτελείται από μια μονάδα ελέγχου FSM και έναν διαφοροποιημένο register που έχει και έναν εσωτερικό μετρητή.αυτα αποτελουν τα 2 κυρια component key_register και fsm_keyinput. Έτσι, η διάταξη που θα υλοποιηθεί με την VHDL θα είναι σχηματικά η παρακάτω σχήμα 12 διάγραμμα εισόδων-εξόδων μονάδας Load_keyinput Όπως φαίνεται και από το παραπάνω σχηματικό το component τα σήματα εισόδου της διάταξης είναι τα clk, key_data που είναι η είσοδος δεδομένων των32bits του component,key_in σήμα εισόδου εξωτερικό που δηλώνει την είσοδο δεδομένων κλειδιού και reset σήμα που έρχεται από την μονάδα ελέγχου. Σήματα εξόδου είναι τα key_out τα δεδομένα εξόδου των 128bits που πορεύονται για την μονάδα επεξεργασίας και το σήμα key_ready που ενημερώνει την μονάδα ελέγχου ότι έχει φτιαχτεί ένα κλειδί μεγέθους 128bits Ο επιμέρους σχεδιάσμος του παραπάνω σχηματικού παρατίθεται στο παρακάτω σχήμα όπου φαίνονται από ποια components αποτελείται η σχεδίαση του συστήματος. 64

66 σχήμα 13 διάγραμμα επιμέρων components της μονάδας Load_keyinput Oπως φαίνεται και στο παραπάνω σχηματικό διάγραμμα η διάταξη αποτελείται από το component fsm_keyregister το οποίο υλοποιεί την μονάδα ελέγχου και παρέχει τα κατάλληλα σήματα ελεγχου,αποτελειται και από το component key_register o oποιος είναι καταχωρητης που δέχεται τα 32bits της εισόδου και δημιουργεί τα 128bits της εξόδου. Πιο συγκεκριμένα, θα έχουμε : COMPONENTS (1) : Ο καταχωρητης key_register: Oπως φαίνεται και από το παρακάτω σχήμα 14 το component έχει για σήματα εισόδου τα clk, τα en_keyreg και reset_keyreg είναι σήματα enable και reset και είναι σήματα ελέγχου που δίνονται από τον τοπικό έλεγχο FSM της διάταξης και key_data είναι το σήμα εισόδου που εισέρχονται τα δεδομένα του κλειδιού. Τα σήματα εξόδου είναι τα key_out που είναι το σήμα εξόδου μεγέθους 128bits το οποίο και προωθείται στην μονάδα επεξεργασίας και το σήμα ελέγχου key_ready το οποίο είναι σήμα εισόδου της κεντρικής μονάδας ελέγχου και ενημερώνει τον 65

67 κεντρικό έλεγχο FSM αλλά και τον τοπικό έλεγχο FSM της διάταξης ότι είναι έτοιμα τα δεδομένα του κλειδιού. σχήμα 14 διάγραμμα βαθμίδας του καταχωρητη key_register Η λειτουργία του component είναι να δέχεται στην είσοδο του δεδομένα μεγέθους 32bits και να τα προωθεί στην έξοδο φτιάχνοντας blocks μεγέθους 128 bits.είναι ένας απλός καταχώρησης ο οποίος όμως έχει και εσωτερικό μετρητή ο οποίος μετράει μέχρι το 4 και έτσι κατανέμονται 4 σήματα των 32bits δημιουργώντας ένα σήμα των 128bits.Oταν αυτό γίνεται το σήμα key_ready γίνεται 1 και ενημερώνει όσο την τοπική τόσο και την κεντρική μονάδα ελέγχου. Το σήμα αυτό εξόδου προωθείται στην είσοδο της βαθμίδας Enc/Dec_Unit και πιο συγκεκριμένα στην είσοδο του component Initial_keyAddition (2) : Η μονάδα ελέγχου FSM fsm_keyinput: Το component υλοποιεί τον έλεγχο μέσω μιας μηχανής FSM που αποτελείται από τις επιμέρους καταστάσεις s0,s1 και s2.h λειτουργία της τοπικής μονάδας ελέγχου είναι σχετική απλή και <<φροντίζει απλώς>> την δημιουργία πακέτων δεδομένων κλειδιού. 66

68 σχήμα 15 διάγραμμα βαθμίδας του καταχωρητη key_register Oπως φαίνεται και από το παραπάνω σχήμα 15 το component έχει για σήματα εισόδου τα clk, key_in σήμα ελέγχου που ορίζει την είσοδο 32bits δεδομένων στην μονάδα εισόδου του κλειδιού,key_ready σήμα ελέγχου που δείχνει ότι έχει ετοιμαστεί μια ομάδα 4 πακέτων 32bits σε ένα σήμα 128bits και το reset σήμα εξωτερικό reset. Το σήμα key_ready έρχεται από το προηγούμενο component του key_register.πρακτικα,το σήμα προέρχεται από τον εσωτερικό μετρητή του key_register component δηλώνει ότι μετά την παρέλευση 4 παλμών ρολογιού έχει σχηματιστεί ένα κλειδί-σήμα μεγέθους 128bits. Οι καταστάσεις με τις οποίες δουλεύει η μονάδα ελέγχου είναι οι παρακάτω s0,s1 και s2. state s0: είναι η reset κατάσταση και έχει για εξόδους τις παρακάτω en_keyreg<='0' reset_keyreg<='0' state s1: είναι η κατάσταση στην οποία τα δεδομένα του κλειδιού εισέρχονται στην μονάδα en_keyreg<='1' reset_keyreg<='1' state s2: είναι η κατάσταση στην οποία τα δεδομένα είναι έτοιμα για να εξέλθουν της μονάδας en_keyreg<='0' reset_keyreg<='1' Το διάγραμμα των καταστάσεων παρατίθεται παρακάτω : 67

69 σχήμα 16 διάγραμμα ροης μονάδας fsm_keyregister Oπως φαίνεται και παραπάνω, το σύστημα από την κατάσταση reset s0 μεταβαίνει στην κατάσταση s1 όταν δέχεται ως είσοδο το σήμα key_in = 1.Απο εκεί στον επόμενο παλμό ρολογιού το σύστημα επανέρχεται στην αρχική κατάσταση και περιμένει τα νέα δεδομένα να εισέλθουν στην μονάδα εισόδου κλειδιού. ( 4.5 ) ΜΟΝΑΔΑ ΕΙΣΟΔΟΥ ΔΕΔΟΜΕΝΩΝ Load_Input Aπαιτείται για την έκρυθμη λειτουργία της συνολικής διάταξης η λειτουργία μιας μονάδας εισόδου που να <<υποδέχεται>> τα δεδομένα και να τα ομαδοποιεί σε πακέτα των 128bits.Αυτή η βαθμίδα ελέγχεται από ένα κεντρικό σήμα reset και αρχίζει να επεξεργάζεται κάθε φορά που εισέρχονται καινούργια δεδομένα εισόδου. Παρακάτω περιγράφεται αναλυτικότερα η αρχιτεκτονική της βαθμίδας. ΔΙΑΤΑΞΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Το σύστημα που πρέπει να υλοποιηθεί αποτελείται από μια μονάδα ελέγχου FSM, 3 registers,έναν διαφοροποιημένο register και έναν μετρητή. Η όλη διάταξη είναι η βαθμίδα εισόδου για μια ολοκληρωμένη υλοποίηση του αλγόριθμου κρυπτογραφίας RINDAEL ( AES ). 68

70 Ο δίαυλος των δεδομένων είναι 32 bits στην είσοδο της διάταξης εισόδου, ενώ στο εσωτερικό έχουμε δίαυλο των 256 bits.ακόμα,έχουμε 4 registers γιατί, τα δεδομένα που χειριζόμαστε είναι είσοδοι για pipelined μονάδα 4 σταδίων. Έτσι, η διάταξη που θα υλοποιηθεί με την VHDL θα είναι σχηματικά η παρακάτω. σχήμα 17 διάγραμμα εισόδων-εξόδων μονάδας Load_input Στο παραπάνω σχηματικό, βλέπουμε την γενικότερη δομή της διάταξης. Όπως βλέπουμε, τα δεδομένα εισέρχονται από τον δίαυλο σε λέξεις των 32 bits ενώ εξέρχονται από την βαθμίδα από δίαυλο με μέγεθος λέξης 256 bits. Aπο,τα παραπάνω σήματα ελέγχου,τα clk,finish, ready_to_start, reset, data_length και data_in έρχονται από την γενική μονάδα ελέγχου του συστήματος. Ο επιμέρους σχεδιάσμος του παραπάνω σχηματικού παρατίθεται στο παρακάτω σχήμα όπου φαίνονται από ποια components αποτέλειται η σχεδίαση του συστήματος. 69

71 σχήμα 18 διάγραμμα επιμέρων components της μονάδας Load_input Τα components R1,R2,R3 και R4 είναι registers με τον πρώτο να είναι λίγο πιο διαφορετικός από τους υπόλοιπους. Η μονάδα ελέγχου FSM παρέχει τα σήματα ελέγχου που απαιτούνται για την λειτουργία των υπολοίπων τμημάτων. Η μονάδα του μετρητή λαμβάνοντας τα σήματα ελέγχου από τον control, μετράει και σε καθορισμένα σημεία δίνει σαν έξοδο καθόρισμενα σήματα τα οποία τα επιστρέφει στον control. Πιο συγκεκριμένα, θα έχουμε : COMPONENTS 70

72 (1) : R2, R3 και R4 είναι απλοί καταχωρητές με εισόδους των 128 bits και εξόδους με το ίδιο μέγεθος.ακόμα,έχει σήματα τα enable και ασύγχρονο reset.oπως και όλα τα υπόλοιπα μέρη του συστήματος είναι γράμμενα σε γλώσσα VHDL και ο κώδικας βρίσκεται στo παραρτημα Α ( ως d_mem ). Παρακάτω παρατίθεται το σχηματικό διάγραμμα του καταχωρητη στο σχήμα 19 σχήμα 19 διάγραμμα βαθμίδας καταχωρητη d_mem (2) : R1, είναι και αυτός καταχωρητής με ασύχρονο reset μόνο που λαμβάνει είσοδο δεδομένα από δίαυλο (bus) των bits ενώ έχει για έξοδο δεδομένα των 128 bits.το byte αυτό των 256 bits έχει ενεργοποιημένα είτε τα πρώτα 128 bits,είτε τα πρώτα 192 bits,είτε και τα 256 bits ανάλογα με το μέγεθος της λέξης που πρόκειται να δουλέψει τοκυρίως μέρος του αλγόριθμου κρυπτογραφίας.αυτό ορίζεται από το σήμα data_length το οποίο έρχεται από τον κεντρικό έλεγχο. Έτσι, ανάλογα με την χωρητικότητα της εισόδου,φορτώνει και μεταφέρει δεδομένα στους υπόλοιπους registers,ανα παλμό ρολογιού (clk),πακέτα των 32 bits.για τον εσωτερικό μετρητή που χρειαζόμαστε για να γίνει ο σχηματισμός των 128,192 ή των 256 bits,χρησιμοποιούμε την εσωτερική μεταβλητή ι.η μεταβλητή αυτή μετρά τα πακέτα των 32 bits που δέχεται ο register και καθορίζει πόσα bits από τα 256 θα είναι ενεγοποιημένα. Ο κώδικας βρίσκεται στo παραρτημα Α ( ως reg1 ). Παρακάτω παρατίθεται το σχηματικό διάγραμμα του καταχωρητη στο σχήμα 20 71

73 σχήμα 20 διάγραμμα βαθμίδας καταχωρητη katax (3) : Ο μετρητής (counter ), είναι ενας μετρητής ο οποίος ανάλογα με την τιμή του σήματος data_length, μετράει και δίνει στην κατάλληλη στιγμή τα σήματα data_ready, change_reg και full. change_reg : Όταν ενεργοποιηθεί αυτό το σήμα,σημαίνει πως στον επόμενο παλμό θα σχηματισθεί ένα block των 128,192, 256 bits.δηλαδή,για παράδειγμα,στην πρώτη περίπτωση το σήμα θα είναι 1 στον τρίτο παλμό,στην δεύτερη περίπτωση, στον πέμπτο και στην τρίτη περίπτωση στον έβδομο παλμό ρολογιού.έτσι, στον επόμενο παλμό θα ενεργοποιηθεί το enable των registers και θα αρχίσει η φόρτωση των δεδομένων. data_ready : Το σήμα ενεργοποιήται όταν έχει μετρήσει ο counter :16 παλμούς ( για 128 bits), 24 παλμούς ( για 192 bits ) και 32 παλμούς ( για 256 bits ). Δηλαδή, για 128 bits σχηματίζονται 4 πακέτα των 32 bits και έχουμε 16 παλμούς αφού έχουμε : 4 registers * 4 παλμούς / register για 192 bits σχηματίζονται 6 πακέτα των 32 bits και έχουμε 24 παλμούς αφού έχουμε : 4 registers * 6 παλμούς / register για 256 bits σχηματίζονται 8 πακέτα των 32 bits και έχουμε 32 παλμούς αφού έχουμε : 4 registers * 8 παλμούς / register full : Το σήμα αυτό ενεργοποιήται όταν το data_ready γίνει 1 για δεύτερη φορά.τότε,ένα stream από δεδομένα έχει μπεί στην μονάδα του αλγόριθμου και επεξεργάζεται ένα 72

74 άλλο stream έχει φορτωθεί στον τελευταίο register (R4) και περιμένει να λάβει το κατάλληλοσήμα για να εισέλθει στην μονάδα του αλγόριθμου. Παρακάτω παρατίθεται το σχηματικό διάγραμμα του μετρητη στο σχήμα 21 σχήμα 21 διάγραμμα βαθμίδας μετρητη counter_signal ( 4 ) : Ο έλεγχος του συστήματος γίνεται από τον controller που υλοποιήται από μια μηχανή FSM. Αποτελείται από 8 καταστάσεις, τις s0, s1, s2, s3, s4, s5, s6 και s7. Όπου : s0 : είναι η reset κατάσταση και έχει για εξόδους τις παρακάτω : enable<='0' en_data<='0' en_reg<='0' en_reg1<='0' resetn<='1' resetn_reg<='1' resetn_data<='1' s1 : ο πρώτος register αρχίζει να φορτώνει δεδομένα, με εξόδους enable<='1' en_data<='1' en_reg<='0' en_reg1<='0' 73

75 resetn<='0' resetn_reg<='0' resetn_data<='0' s2 : τα δεδομένα φορτώνουν στον R2 enable<='1' en_data<='1' en_reg<='1' en_reg1<='1' resetn<='0' resetn_reg<='0' resetn_data<='0' s3 : τα δεδομένα βγαίνουν από την έξοδο enable<='0' en_data<='1' en_reg<='1' en_reg1<='1' resetn<='0' resetn_reg<='0' resetn_data<='0' s4 : κατάσταση αναμονής enable<='0' en_data<='0' en_reg<='0' en_reg1<='0' resetn<='0' resetn_reg<='0' resetn_data<='0' s5 : αρχίζουν να φορτώνονται νέα δεδομένα στον R1 enable<='1' en_data<='1' 74

76 en_reg<='1' en_reg1<='1' resetn<='0' resetn_reg<='0' resetn_data<='0' s6 : ενδιάμεση κατάσταση enable<='1' en_data<='0' en_reg<='0' en_reg1<='0' resetn<='0' resetn_reg<='0' resetn_data<='0' s7 : κατάσταση αναμονής των δεδομένων στην έξοδο ( περιμένουν ready_to_start = 1 ) enable<='0' en_data<='0' en_reg<='0' en_reg1<='0' resetn<='0' resetn_reg<='0' resetn_data<='0' s8 : νεα δεδομενα εισερχονται στους καταχωρητες enable<='1' en_data<='1' en_reg<='0' en_reg1<='0' resetn<='0' resetn_reg<='0' resetn_data<='0' 75

77 s9 : νεα δεδομενα εισερχονται στους καταχωρητες enable<='1' en_data<='1' en_reg<='0' en_reg1<='0' resetn<='0' resetn_reg<='0' resetn_data<='0' s10 : αρχιζουν και εισερχονται νεα δεδομενα στην εισοδο για το δευτερο πακετο δεδομενων enable<='1' en_data<='1' en_reg<='1' en_reg1<='0' resetn<='0' resetn_reg<='0' resetn_data<='0' Το διάγραμμα των καταστάσεων παρατίθεται παρακάτω : σχήμα 22 διάγραμμα ροης μονάδας FSM_input 76

78 Το συνολικό component που δείχνει τα σήματα εισόδου και εξόδου παρατίθεται στο παρακάτω σχηματικό διάγραμμα σχήμα 23 διάγραμμα εισοδων-εξοδων μονάδας FSM_input Λεπτομερέστερη ανάλυση για την λειτουργία του συστήματος μπορεί να γίνει με βάση το παραπάνω διάγραμμα. ΛΕΙΤΟΥΡΓΙΑ Αρχικά, αρχικοποιούμε το σύστημα με το reset και το μεταβαίνουμε στην κατάσταση s0. Όταν ο κεντρικός έλεγχος δώσει data_new = 1 ( δηλαδή νέα δεδομένα μπαίνουν στην μονάδα ), τοτέ μεταβαίνει στην s1. Για την περίπτωση των 192 bits για παράδειγμα, ο μετρητής στον πέμπτο παλμό ρολογιού θα δώσει change_reg = 1 και σε συνδιασμό με το data_ready= 0 πηγαίνουμε στην s2 οπού φορτώνει δεδομένα ο R2. Στην συνέχεια γυρνάμε πάλι στην s1 μέχρι να σχηματιστεί ακόμα ένα block των 192 bits όπου όταν έρθει change_reg = 1 77

79 και data_ready = 0 to block φορτώνεται στον R2 ενώ το προηγούμενο φορτώνεται στον R3. Αυτή η διαδικασία επαναλαμβάνεται μέχρι να έρθει change_reg = 1 και data_ready = 1 και ready_to_start = 1 για να μεταβεί στην s3 και να βγάλει τα δεδομένα στην έξοδο ή αν έρθει change_reg = 1 και data_ready = 1 και ready_to_start = 0 μεταβαίνει στην s7 και περιμένει το ready_to_start = 1 για να πάει στην s3.h s3 ειναι η κατασταση κατα την διαρκεια της οποιας αρχιζουν να εξερχονται τα δεδομενα στην εξοδο. Από την s3 τώρα, αν έρθει data_new = 1 ( δηλαδή νέα δεδομένα εισέρχονται ) και full = 0 τότε μεταβαίνει στην s5 και αρχίζει η φόρτωση των νέων εισόδων στον R1 μέχρις ότου έρθει change_reg = 1 και τότε πηγαίνουμε στις s10, s9, s10 και s6 και στον επόμενο παλμό του ρολογιού στην s2 και επαναλαμβάνεται η ίδια διαδικασία. Αν τώρα, έρθει change_reg = 1 και full = 1 ή data_new = 0 σημαίνει πως δεν εισέρχονται νέα δεδομένα είτε γιατί δεν υπάρχουν είτε γιατί η μόναδα επεξεργασίας είναι απασχολημένη ενώ και η έξοδος του συστήματος είναι έτοιμη να βγάλει blocks δεδομένων. Τότε, είμαστε στην κατάσταση αναμονής s4 εως ότου έρθει finish = 1 και data_new = 1 ( δηλαδή, η επεξεργασία των προηγουμένων blocks τελείωσε και νέα δεδομένα εισέρχονται στον R1 ) και πάμε στην s1 και επαναλαμβάνεται η ίδια διαδικασία. ( 4.6 ) ΜΟΝΑΔΑ ΕΛΕΓΧΟΥ FSM: Eίναι το κεντρικό component το οποίο χρησιμοποιώντας και <<ερμηνεύοντας>> τα κατάλληλα σήματα ελέγχου παρακολουθεί την πορεία και λειτουργία του αλγόριθμου. Πρακτικά, η μονάδα ελέγχου FSM πρέπει να ενημερώνεται και να <<γνωρίζει>> σε ποια φάση επεξεργασίας βρίσκονται τα δεδομένα. Η πρώτη φάση είναι αυτή κατά την οποία τα πακέτα των 32bits της εισόδου δημιουργούν τα 4 πακέτα των 128bits.Η διαδικασία αυτή υλοποιείται από το component Load_input και όταν τελειώνει ο έλεγχος ενημερώνεται με την ενεργοποίηση του σήματος data_ready = 1.Η φάση αυτή της προπαρασκευης των πακέτων των δεδομένων απαιτεί 19 παλμούς ρολογιού και σε αυτό το χρονικό διάστημα ο έλεγχος κρατάει ανενεργό το κεντρικό component CORE όπως και τους μετρητές count_round,count_mix και count_lastround. 78

80 H δεύτερη φάση είναι αυτή κατά την οποία έχουν φτιαχτεί τα 4 πακέτα των 128bits και αρχίζουν να προωθούνται στο component CORE όπου υλοποιείται η επεξεργασία των δεδομενων.τα πακέτα εισέρχονται ένα ένα διαδοχικά με διαφορά ενός παλμού ρολογιού και τότε ενεργοποιείται το CORE component όπως και ο μετρητής count_round. Aπο την στιγμή που άρχισε αυτή η φάση, ο έλεγχος FSM πρέπει να γνωρίζει αν τα δεδομένα βρίσκονται στον πρώτο γύρο έτσι ώστε να δώσει το κατάλληλο σήμα round_0 στον μετρητή count_round και έτσι να μετρήσει 5 παλμούς ρολογιού αντί για 4 αφού τόσα στάδια προβλέπει ο αλγόριθμος για το πρώτο από τους 10 γύρους. Ακόμα, πρέπει να γνωρίζει ποτέ τα δεδομένα βρίσκονται στους 8 ενδιάμεσους γύρους και πόσο χρονικό διάστημα απαιτείται για την αποπεράτωση τους.αυτο επιτυγχάνεται από τον μετρητή count_lastround ο οποίος ενεργοποιείται και μετράει κάθε φορά που τελειώνει ένας γύρος.όταν λοιπόν μετρήσει 9 φορές, τότε τα δεδομένα είναι έτοιμα να εισέλθουν στον τελευταίο γύρο. Τέλος, ο έλεγχος FSM ενημερώνεται από τον μετρητή count_lastround και αυτό σημαίνει πως τα δεδομένα είναι στον 10 ο και τελευταίο γύρο της διαδικασίας. Ο τελευταίος γύρος αποτελείται από 3 στάδια και όχι από 4.Το στάδιο που πρέπει να παραλείψουν τα δεδομένα όπως αναφέρθηκε και στην ανάλυση του αλγόριθμου, είναι το Mix_Col στάδιο. Δηλαδή θα πρέπει τα δεδομένα να παρακάμψουν το component Mix_Column και μέσω ενός πολυπλεκτη 1-2 να εισέλθουν στο τελευταίο στάδιο. Έτσι, τα πακέτα προωθούνται στην είσοδο του component Αdd_Round_Key και από κει στην έξοδο της βαθμίδας αφού έχουν εκτελεστεί οι 10 γύροι του αλγόριθμου. Αυτό επιτυγχάνεται μέσω του σήματος no_mix το οποίο ειδοποιεί τον μετρητή count_mix τον έλεγχο να δώσει σήμα mix_select = 1 στον πολυπλεκτη 1-2 που βρίσκεται στην βάση της διάταξης του CORE. Τα σήματα εισόδου είναι σήματα με τα οποία επικοινωνεί η κεντρική μονάδα ελέγχου με τις υπόλοιπες βαθμίδες της συνολικής διάταξης. Είναι λοιπόν σήματα που ενημερώνουν τον έλεγχο για την πορεία των δεδομένων στην διαδικασία της επεξεργασίας. Τα σήματα εξόδου είναι σήματα ελέγχου των επιμέρους βαθμιδών. Είναι δηλαδή σήματα που επιτρέπουν την απρόσκοπτη λειτουργία της βαθμίδας CORE. Είναι πολύ σημαντικό να υπάρχει απόλυτος συγχρονισμός μεταξύ των μετρητών και τις μονάδες ελέγχου μετρητές πρέπει να μετρούν σωστά έτσι ώστε να ενημερώνουν 79

81 την μονάδα ελέγχου για την σωστή πορεία επεξεργασίας των δεδομένων είτε στην μονάδα CORE είτε στην μονάδα εισόδου Load_input. Η αλληλεπίδραση μετρητών και μονάδα FSM είναι δυναμική αφού και ο έλεγχος ελέγχει τους μετρητές με τα σήματα reset και enable αλλά και οι μετρητές ενημερώνουν με τη σειρά τους την μονάδα FSM με τα σήματα τους εξόδου. Παρακάτω παρατίθενται οι καταστάσεις με τις οποίες δουλεύει ο έλεγχος FSM states0: κατάσταση αρχικοποίησης en_pln0<='0' reset_pln0<='1' en_pln<='0' reset_pln<='1' initial_round<='0' mix_select<='1' reset_round<='1' reset_final<='1' reset_mix<='1' en_round<='0' en_mix<='0' finish<='0' busy<='0' ready_to_start<='1' round_0<='0' states1:αρχιζει να δέχεται δεδομένα η μονάδα CORE en_pln0<='1' reset_pln0<='0' en_pln<='1' reset_pln<='0' initial_round<='1' mix_select<='1' reset_final<='0' reset_round<='0' reset_mix<='0' 80

82 en_round<='1' en_mix<='0' finish<='0' busy<='1' ready_to_start<='0' round_0<='1' states2:εχουν εισέλθει 4 block δεδομένων και πραγματοποιούνται 8 γύροι του αλγόριθμου en_pln0<='1' reset_pln0<='0' en_pln<='1' reset_pln<='0' initial_round<='0' mix_select<='1' reset_round<='0' reset_final<='0' reset_mix<='0' en_round<='1' en_mix<='0' finish<='0' busy<='1' ready_to_start<='0' round_0<='0' states3: το πρώτο block μπαίνει στον 10 ο γύρο ενώ τα υπόλοιπα 3 είναι στον 9 ο ενεργοποιείται ο μετρητής count_mix en_pln0<='1' reset_pln0<='0' en_pln<='1' reset_pln<='0' initial_round<='0' mix_select<='1' reset_round<='0' και 81

83 reset_final<='0' reset_mix<='0' en_round<='1' en_mix<='1' finish<='0' busy<='1' ready_to_start<='0' round_0<='0' states4: το πρώτο block είναι έτοιμο να τελειώσει και τον τελευταίο γύρο και να παρακάμψει το στάδιο Mix_Col en_pln0<='0' reset_pln0<='0' en_pln<='1' reset_pln<='0' initial_round<='0' mix_select<='0' reset_round<='0' reset_final<='0' reset_mix<='0' en_round<='1' en_mix<='1' finish<='1' busy<='1' ready_to_start<='0' round_0<='0' states5: τα δεδομένα έχουν επεξεργασθεί και εξέρχονται της διάταξης ενώ καινούργια δεδομένα επεξεργάζονται στην μονάδα εισόδου Load_input en_pln0<='0' reset_pln0<='0' en_pln<='1' reset_pln<='0' initial_round<='0' 82

84 mix_select<='0' reset_round<='1' reset_final<='1' reset_mix<='1' en_round<='0' en_mix<='0' finish<='1' busy<='1' ready_to_start<='1' round_0<='0' states6: τα δεδομένα που έχουν επεξεργασθεί εξέρχονται στης διάταξης και άλλα νέα δεδομένα δεν υπάρχουν στην μονάδα εισόδου Load_input και το σύστημα αρχικοποιείται en_pln0<='1' reset_pln0<='0' en_pln<='1' reset_pln<='0' initial_round<='0' mix_select<='0' reset_round<='0' reset_mix<='0' en_round<='0' en_mix<='0' finish<='1' busy<='1' ready_to_start<='0' round_0<='0' Το σχηματικό που δείχνει το διάγραμμα καταστάσεων είναι το παρακάτω 83

85 σχήμα 24 διάγραμμα ροης μονάδας AES_controller Όπως φαίνεται και στο παραπάνω διάγραμμα ο έλεγχος επιτυγχάνεται μέσω των καταστάσεων s0,s1,s2,s3,s4,s5 και s6. s0 : Είναι η κατάσταση αρχικοποίησης (reset), στην οποία όλα τα components που ελέγχονται από την μονάδα FSM γίνονται reset s1: Όταν η μονάδα εισόδου Load_input έχει δεχθεί δεδομένα στην είσοδο της και έχει δημιουργήσει 4 πακέτα των 128bits,δίνει data_ready_out = 1. Ταυτόχρονα, έχει φτιαχτεί και το κλειδί των 128bits και η μονάδα Load_key δίνει το σήμα key_ready = 1.Ετσι,όταν ο έλεγχος FSM βρίσκεται στην κατάσταση s0 και δέχεται data_ready = 1 και key_ready = 1 μεταβαίνει στην κατάσταση s1. H κατάσταση s1 είναι αυτή κατά την οποία τα δεδομένα από την μονάδα Load_input αρχίζουν να περνούν διαδοχικά στην Enc/Dec_Unit.Χρειάζονται 5 παλμοί ρολογιού για να περάσουν τα 4 πρώτα block δεδομένων. Έτσι, ενεργοποιούνται (μέσω σημάτων enable) οι καταχώρητες της pipelened μονάδας ενώ ο πολυπλεκτης mux περνάει τα δεδομένα στην έξοδο του και από κει στην πρόσθεση με το κλειδί (initial_key).ενεργοποιηται ο μετρητής count_round. 84

86 s2: όταν ο μετρητής count_round δώσει το σήμα end_of_round = 1 τότε ο έλεγχος μεταβαίνει στην κατάσταση s2. Η s2 κατάσταση δίνει στον πολυπλεκτη mux της Enc/Dec_Unit το κατάλληλο σήμα ώστε να απομονώσει τον καταχωρητη reg της μονάδας με την βαθμίδα Basic_Block.Έχουν εισέλθει 4 πακέτα δεδομένων και πραγματοποιούνται 8 γύροι του αλγόριθμου, ενώ ο μετρητής count_final αρχίζει να μετράει. s3: Όταν ο μετρητής count_final δώσει σήμα last_round = 1 τότε ο έλεγχος FSM μεταβαίνει στην κατάσταση s4.το πρώτο block μπαίνει στον 10 ο γύρο ενώ τα υπόλοιπα 3 είναι στον 9 ο γυρο.ενεργοποιειται και αρχίζει να μετράει ο μετρητής count_mix. s4: Oταν ο count_mix δώσει σήμα no_mix = 1 το πρώτο block είναι έτοιμο να παρακάμψει το στάδιο Mix_Col.Στην κατάσταση s4 εισέρχεται τότε. Πρέπει να παραμείνει στην κατάσταση αυτή για 4 παλμούς ρολογιού μέχρι και τα υπόλοιπα 3 blocks δεδομένων να βγουν από το component Basic_Block και να δώσει σήμα finish = 1 έτσι ώστε να αρχίσουν να εισέρχονται δεδομένα στην έξοδο. s5: O μετρητής count_round συνεχίζει να μετρά και μετά από 3 παλμούς ρολογιού από την s4, δέχεται είσοδο το σήμα end_of_round = 1 και data_full = 1 εισέρχεται στην s5. Tα δεδομένα βγαίνουν από την Enc/Dec_Unit και εισέρχονται στην έξοδο ενώ δίνει σήμα ready_to_start = 1 έτσι ώστε η μονάδα εισόδου Load_input να ετοιμάσει και πάλι να δώσει τα επόμενα 4 blocks δεδομενων.γινονται reset οι μετρητές. Στον επόμενο παλμό ρολογιού ο έλεγχος FSM μεταβαίνει στην κατάσταση s1 έτσι ώστε να ξαναρχίσει η επεξεργασία και της δεύτερης 4αδας δεδομένων. s6: όταν το σύστημα βρίσκεται στην s4 και μετά από 4 παλμούς ρολογιού δέχεται σήμα end_of _round = 1 όταν το σήμα data_full = 0, δηλαδή δεν υπάρχουν αλλά δεδομένα στην Load_input μονάδα για επεξεργασία, μεταβαίνει στην κατάσταση s6 οπού τα τελευταία δεδομένα εξέρχονται από την έξοδο. Στον επόμενο παλμό ρολογιού, η μονάδα FSM μεταβαίνει και πάλι στην reset κατάσταση s0 και πιστεύει και περιμένει να δεχθεί εκνέου καινούργια δεδομένα για επεξεργασία. 85

87 Το συνολικό component που δείχνει τα σήματα εισόδου και εξόδου παρατίθεται στο παρακάτω σχηματικό διάγραμμα σχήμα 25 διάγραμμα εισοδων-εξοδων μονάδας AES_controller 86

88 ( 4.7 ) Encr/Dec_Unit : Είναι η μονάδα στην οποία πραγματοποιείτε η υλοποίηση του αλγοριθμου.ειναι η Enc/Dec μονάδα που αποτελείται από αλλά επιμέρους τμήματα ( components ). Αυτή τη μονάδα εισέρχονται διαδοχικά τα 4 πακέτα των 128 bits.για τη μονάδα αυτή έχει επιλεχθεί η αρχιτεκτονική pipeline (διαδοχικών σταδίων).αποτελείται από 4 στάδια (stages).σε κάθε στάδιο πραγματοποιείτε και ένα στάδιο του αλγοριθμου.ετσι, στο πρώτο στάδιο υλοποιείτε το Key_Addition κομμάτι του αλγορίθμου ( πρόσθεση του κλειδιού ),στο δεύτερο το S_Box, στο τρίτο το Shift_Rotate και στο τέταρτο το Mix_Column.Τα 4 στάδια αποτελούν ένα γύρο από τους 8 ενδιάμεσους γύρους ενώ 5 στάδια αποτελούν τον πρώτο γύρο(initial round), bits επεξεργάζονται κατά την διάρκεια των 4 αυτών σταδίων κρυπτογράφησης/αποκρυπτογραφησης.αφου Oτελειώνουν τον κάθε γύρο επαναλαμβάνονται τα στάδια έως δοτού τα δεδομένα να έχουν ολοκληρώσει τους πρώτους 9 γυρους.οταν εισέλθουν στον τελευταίο γύρο των 128 bits, τότε ο γύρος αποτελείται από 3 στάδια Το στάδιο Mix_Column με το κατάλληλο σήμα mix select του mux παρακάμπτεται και τα δεδομένα εξέρχονται από το Shift_rotate στάδιο και εισέρχονται στο τελευταίο στάδιο και από εκεί στην έξοδο της βαθμίδας. Η μονάδα έχει σαν εισόδους, σήματα ελέγχου από την μονάδα ελέγχου FSM, τα δεδομένα της εισόδου και τα δεδομένα του κλειδιού. Σαν εξόδους έχει τα επεξεργασμένα πακέτα δεδομένων. Στο παρακάτω σχήμα παρατίθεται το σχηματικό διάγραμμα της διάταξης της μονάδας στο σχήμα 26 87

89 σχήμα 26 διάγραμμα βαθμιδών της μονάδας CORE Αναλυτικότερα, όπως βλέπουμε και στο παραπάνω σχηματικό διάγραμμα το συνολικό CORE component αποτελείται από τα επιμέρους component Βlock_round, έναν καταχωρητη register input, έναν αθροιστή initial_key_add, έναν πολυπλεκτη 2-1 mux_unit και έναν αποπλεκτη 1-2 demux_unit στο τέλος της διάταξης. Ο ΚΑΤΑΧΩΡΗΤΗΣ input_reg0: Eίναι στην ουσία ο καταχωρητης που υποδέχεται τα δεδομένα και προωθεί διαδοχικά το κάθε πακέτο δεδομένων προς το στάδιο της επεξεργασίας Βlock_round.Έχει είσοδο σήμα μεγέθους 128 bits όπως και εξοδο.το enable και reset σήμα δίνονται από την κεντρική μονάδα ελέγχου FSM της διάταξης.τη στιγμή που δίνεται από την μονάδα ελέγχου το ενεργοποιημένο σήμα data_ready = 1, ο έλεγχος FSM ενεργοποιεί τον καταχωρητη μέσω του σήματος enable= 1 και αρχίζει να προωθεί τα δεδομένα των 4 πακέτων με διαφορά ενός παλμού ρολογιου.μετα από την πάροδο λοιπόν 4 παλμών ρολογιού έχουν εισέλθει όλα τα δεδομένα στο component input_reg0 και προωθούνται στον παρακάτω αθροιστή. Παρακάτω παρατίθεται το σχηματικό διάγραμμα του καταχωρητη στο σχήμα 27 88

90 σχήμα 27 διάγραμμα βαθμίδας καταχωρητη εισόδου Τα σήματα ελέγχου en_pln0,reset_pln0 δίνονται από τον κεντρικό έλεγχο, το clk είναι το ρολόι της διάταξης ενώ το plain_ciphertext είναι το 128bits σήμα που έρχεται από την έξοδο της μονάδας Load_input.Το σήμα εξόδου pln_out προωθείται στο παρακάτω component AΘΡΟΙΣΤΗΣ initial_key_add: Eίναι ένα component που υλοποιεί την λογική πράξη XOR μεταξύ των δεδομένων των 128bits της εισόδου και των δεδομένων των 128bits του κλειδιου.ετσι, η μια είσοδος είναι το σήμα pln_out του καταχωρητη input_reg και η άλλη είναι το σήμα initial_key των 128bits το οποίο είναι σήμα εισόδου της συνολικής διάταξης. Έξοδος είναι το 128bits σήμα out_init_add το οποίο είναι και η μια από τις 2 εισόδους του πολυπλεκτη 2-1 που ακολουθεί. Παρακάτω παρατίθεται το σχηματικό διάγραμμα του αθροιστή initial_key_add0 στο σχήμα 28 σχήμα 28 διάγραμμα βαθμίδας αθροιστή init_key_add 89

91 Τα σήματα ελέγχου είναι το in_core των 128bits από την προηγούμενη βαθμίδα και το initial_key από την είσοδο της διάταξης. Το σήμα εξόδου out_init_add προωθείται στο παρακάτω component ΠΟΛΥΠΛΕΚΤΗΣ 2-1 (mux_unit0): Eίναι component που υλοποιεί την πολυπλεξη 2 σημάτων εισοδου.επιλεγει λοιπόν αν θα περάσει στην έξοδο το ένα σήμα η το άλλο.το σήμα ελέγχου initial_round επιλέγει αν θα περάσει στην έξοδο του component το σήμα που έρχεται από την έξοδο του αθροιστή η αν θα περάσει η έξοδος του του αποπλεκτη που βρίσκεται στο τέλος της διάταξης του CORE component demux_unit0.το σήμα επιλογής initial_round δίνεται από τον έλεγχο FSM. Αν το σήμα initial_round = 1 τότε σημαίνει ότι τα δεδομένα έχουν εισέλθει στο CORE component και είναι έτοιμα να αρχίσουν την πραγματοποίηση του πρώτου γυρου.πρακτικα όσο εξακολουθεί να είναι ενεργοποιημένο το initial_round = 1 σημαίνει πως η μονάδα συνεχίζει να δέχεται πακέτα δεδομένων από την μονάδα εισόδου δεδομένων Load_input. Aν το σήμα initial_round = 0 τότε σημαίνει πως τα 4 πακέτα των 128bits έχουν όλα εισέλθει στην CORE unit και βρίσκονται στο component Βlock_round που υλοποιεί την διαδικασία της επεξεργασίας που ορίζει ο αλγόριθμος.η μονάδα Load_input είτε δεν έχει αλλά καινούργια δεδομένα είτε ακόμα τα επεξεργάζεται και έτσι η μονάδα <<κλειδώνει>> δεν δέχεται αλλά νέα δεδομένα και επεξεργάζεται αυτά που έχουν εισέλθει στο component Βlock_round.Έτσι, ο πολυπλεκτης mux_unti0 περνά στην έξοδο του το σήμα που έρχεται από την έξοδο του αποπλεκτη 1-2 demux_unit0. Δηλαδή επιτρέπει τα επεξεργασμένα δεδομένα του πρώτου γύρου να εισέλθουν ξανά στο Βlock_round για τον δεύτερο γύρο κ.ο.κ. 90

92 Παρακάτω παρατίθεται το σχηματικό διάγραμμα του πολυπλεκτη 2-1 mux_unit0 στο σχήμα 29 σχήμα 29 διάγραμμα βαθμίδας πολυπλεκτη mux_unit0 Τα σήματα εισόδου είναι το a_in που είναι η είναι η έξοδος του component demux_unit0 ενώ η είσοδος b_in είναι η έξοδος out_init_add της προηγούμενης βαθμίδας initial_key_add.το σήμα ελέγχου ctr είναι το initial_round και δίνεται από τον έλεγχο της διάταξης FSM. Το σήμα εξόδου mux_out είναι σήμα 128bits που εισέρχεται ως είσοδος στο επόμενο component Βlock_round Βasic_Block ( component υλοποίησης του αλγορίθμου): Είναι το component που ουσιαστικά πραγματοποιεί την διαδικασία της κρυπτογράφησης/αποκρυπτογράφησης των δεδομένων εισοδου.το component υλοποιεί δηλαδή τους 10 γύρους που απαιτούνται για την διαδικασία της κρυπτογράφησης/αποκρυπτογραφησης.εισοδος της βαθμίδας είναι η έξοδος του παραπάνω πολυπλεκτη mux_unit0,δεδομενα των 128bits προς επεξεργασια.εξοδος της βαθμίδας είναι τα επεξεργασμένα πλέον δεδομένα που προωθούνται και εισέρχονται στον τελευταίο 1-2 αποπλεκτη demux_unti0. Το σήμα ελέγχου encr, που είναι εξωτερικό, ορίζει αν θα πραγματοποιηθεί κρυπτογράφηση η αποκρυπτογραφηση.αν το σήμα encr = 0 υλοποιείται κρυπτογράφηση αν είναι encr = 1 υλοποιείται αποκρυπτογράφηση. H μονάδα στην ουσία λειτουργεί με δυο τρόπους ένας είναι η επιλογή λειτουργίας κρυπτογράφησης/αποκρυπτογράφησης.αυτό καθορίζεται από το σήμα ελέγχου encr 91

93 που αναφέρθηκε πιο πριν.ο άλλος τρόπος ορίζει σε ποιο γύρο της διαδικασίας του αλγορίθμου βρίσκονται τα δεδομενα.οριζεται από το σήμα ελέγχου mix_select το οποίο δίνεται από την κεντρική μονάδα ελέγχου. Αν το mix_select = 1 τότε το component Βasic_Block πραγματοποιεί τους 8 πρώτους γύρους των 4 σταδίων ( ο πρώτος γύρος υλοποιείται με 5 σταδια,τα 4 στάδια του Basic_Block και η αρχική άθροιση με το κλειδί initial_key_add ). Αν το mix_select = 0 τότε το component Βasic_Block πραγματοποιεί τον τελευταίο 10 ο γύρο των 3 σταδίων παραλείποντας το στάδιο Mix_Column. Eτσι,το component επενεργεί στα bits και bytes των δεδομένων εισόδου κατά την διάρκεια των επιμέρους σταδιων.οταν τελειώνει η επεξεργασία του κάθε γύρου τα δεδομένα εισέρχονται ξανά στην μονάδα για τον επόμενο γύρο. Η βαθμίδα Basic_Block αποτελείται από 4 επιμέρους βαθμίδες που υλοποιούν το καθένα από τα 4 στάδια και τους pipelined καταχωρητες για την υλοποίηση της pipelined αρχιτεκτονικής. Παρακάτω παρατίθεται το σχηματικό διάγραμμα του των βαθμιδών που απαρτίζουν το Basic_Block στο σχήμα 30 σχήμα 30 διάγραμμα βαθμίδας Βasic_Block 92

94 Στο παραπάνω σχηματικό διάγραμμα μπορούμε να διακρίνουμε τα επιμέρους components καταχωρητες της pipelined αρχιτεκτονικής pln_reg0,pln_reg01,pln_reg10,pln_reg02 oπως και τα components SBox_stage0,Shiftrow_stage0,MixColumn_stage0 και keyadd_stage0 τα οποία αντιστοιχούν στα 4 στάδια του αλγοριθμου.τα components παρουσιάζονται αναλυτικότερα παρακάτω. Τα σήματα ελέγχου με τα οποία ο κεντρικός έλεγχος FSM ελέγχει την βαθμίδα είναι τα σήματα enable και reset που ενεργοποιούν και επανεκινουν αντίστοιχα τους παραπάνω καταχωρητες. Τα σήματα αυτά ενεργοποιούνται ταυτόχρονα και έτσι είτε όλοι οι καταχωρητες έχουν τα σήματα enable ενεργοποιημένα είτε τα σήματα reset. Όταν λοιπόν η Enc/Dec μονάδα ενεργοποιείται με την είσοδο δεδομένων στις επιμέρους βαθμίδες ενεργοποιούνται, με τα κατάλληλα enable σήματα, και οι pipelined καταχωρητες. Όπως φαίνεται και στο παραπάνω σχήμα το component Basic_Block αποτελείται από άλλα 8 επιμέρους components pln_reg0 : Είναι ο πρώτος καταχωρητης που δέχεται για είσοδο το σήμα pln_in που είναι το σήμα εξόδου από το προηγούμενο component mux_unit0.τα σήματα en_pln και reset_pln δίνονται από τον έλεγχο και ενεργοποιείται ο καταχωρητης όταν η μονάδα δέχεται δεδομενα.το component είναι ένας απλός καταχωρητης οπού δέχεται δεδομένα και τα περνά στην έξοδο του μετά την πάροδο ενός παλμού ρολογιου.τα δεδομένα προωθούνται στην εισοδο.παρακατω παρατίθεται το σχηματικό διάγραμμα του pln_reg0.στο σχήμα 31 βλέπουμε τα σήματα εισόδου και εξόδου. σχήμα 31 διάγραμμα βαθμίδας pln_reg0 93

95 SBox_stage0 : Eείναι ένα component που αποτελείται από άλλα 4 components.το σχηματικό διάγραμμα παρατίθεται στο παρακάτω σχήμα 32 σχήμα 32 διάγραμμα βαθμίδας SB0x_stage0 Oπως φαίνεται και στο παραπάνω σχηματικό τα επιμέρους components που απαρτίζουν το συνολικό SBox_stage0 είναι τα demux_sb0x,s_box,invs_box και mux_sbox. Tα σήματα με τα οποία επικοινωνούν οι επιμέρους βαθμίδες είναι σήματα των 128 bits.h είσοδος της βαθμίδας είναι το 128bits σήμα in_sbox το οποίο προέρχεται από τον προηγούμενο καταχωρητη pln_reg0.h έξοδος της βαθμίδας είναι το επίσης 128bits σήμα out_sbox το οποίο συνδέεσαι με την είσοδο του επομένου καταχωρητη pln_reg01. (1)demux_SBOX: Είναι ένας αποπλεκτης 1-2,του οποίου το component παρατίθεται στο παρακάτω σχηματικό σχήμα 33 σχήμα 33 διάγραμμα βαθμίδας demux_sbox0 94

96 Tο σήμα εισόδου c_in είναι το σήμα εξόδου του προηγουμένου καταχωρητη.τα σήματα demux1 και demxu2 είναι τα σήματα εξόδου του αποπλεκτη.το demux1 εισέρχεται στην επόμενη βαθμίδα S_box ενώ το σήμα demux2 εισέρχεται στην βαθμίδα invs_box.το σήμα ελέγχου ctr είναι το σήμα encr που δίνεται εξωτερικά και ορίζει σε ποια από τις 2 εξόδους θα κατευθυνθεί η είσοδος c_in.αν είναι 0 τότε η είσοδος c_in κατευθύνεται στην έξοδο demux1 και από κει στο component S_box.Αν είναι το σήμα 1 τότε η είσοδος c_in κατευθύνεται στην έξοδο demux2 και από κει στο component invs_box.στην ουσία το component αυτό μέσω του σήματος επιλογής encr ορίζει αν θα υλοποιηθεί στο επόμενο component το στάδιο του S_box η το αντίστροφο του invs_box.δηλαδή ορίζει αν θα υλοποιηθεί κρυπτογράφηση ή αποκρυπτογράφηση. (2)S_box:Είναι η βαθμίδα που πραγματοποιεί την S_box διαδικασία του αλγοριθμου.το κεντρικό component είναι αυτό που παρατίθεται στο παρακάτω σχήμα 34 σχήμα 34 διάγραμμα βαθμίδας S_box Όπως φαίνεται και στο παραπάνω σχηματικό έχουμε είσοδο το σήμα input_sbox και έξοδο το σήμα output_sbox.to 128bits σήμα εισόδου χωρίζεται σε 16 επιμέρους 8bits σήματα τα οποία είναι είσοδοι σε 16 components που υλοποιούν τον s_box μετασχηματισμο.καποια από τα 16 αυτά s_box παρατίθενται στο παρακάτω σχηματικό σχήμα 35. Eτσι, βλέπουμε το αρχικό 128bits σήμα εισόδου της βαθμίδας να σπάει και να χωρίζεται σε 16 σήματα των 8 bits.στο σημείο αυτό δημιουργείται ο 4*4 πίνακας state που αναφερθήκαμε στο σημείο παρουσίασης του αλγορίθμου πίνακας αυτός αποτελείται από 16 bytes των 8 bits.eτσι, το κάθε στοιχειό/byte του πίνακα state δέχεται την επεξεργασία που υλοποιεί το καθένα από τα s_box.o χωρισμός αυτός των 128bits σε 16 σήματα των 8bits γίνεται με το κατάλληλο κώδικα vhdl.το καθένα από τα 16 s_box έχει είσοδο ένα 8bit σήμα το οποίο και αντικαθιστά 95

97 με ένα άλλο 8bit σήμα συμφωνά με την διαδικασια επεξεργασιας που οριζεται στο s_box σταδιο. To αποτελεσμα της διαδικασιας αυτης στα 16 αυτά σηματα αποτελουν 16 επιμερους σήματα εξοδου.τα 16 αυτά σήματα out_sbox των 16 s_box ενώνονται έτσι ώστε να απαρτίζουν πλέον ένα 128bits σήμα εξόδου output_sbox. σχήμα 35 διάγραμμα 16 βαθμίδων s_box Το σήμα αυτό εξόδου εισέρχεται στο παρακάτω component mux_sbox0.το αντίστοιχο component inv_sbox υλοποιεί τον αντίστροφο μετασχηματισμό S_Box.Και αυτό το component αποτελείται από αλλά 16 αντίστροφα S_box.Η λογική αυτής της βαθμίδας είναι ότι το 128bits σήμα εισόδου εισέρχεται και στο component που υλοποιεί τον S_Box μετασχηματισμό και στο component που υλοποιεί τον αντίστροφο S_Box μετασχηματισμό. Οι δυο έξοδοι των component output_sbox και out_invs_box εισέρχονται στις 2 εισόδους του παρακάτω πολυπλεκτη. (3)mux_SBOX: Είναι το component που υλοποιεί την πολυπλεξη των 2 εξόδων των components S_box και invs_box output_sbox και out_invs_box.τα δυο αυτά 96

98 σήματα μπαίνουν στον πολυπλεκτη αλλά στην έξοδο βγαίνει μονό το ένα.παρακατω παρατίθεται το σχηματικό διάγραμμα του mux_sbox στο σχήμα 36. σχήμα 36 διάγραμμα πολυπλεκτη mux_sbox Όπως παρατηρούμε από το παραπάνω σχηματικό έχουμε 2 εισόδους 128bits σημάτων και ένα σήμα επιλογής ctr.το a_in είναι το σήμα output_sbox ενώ το b_in είναι το σήμα out_invs_box ενώ το ctr είναι το σήμα ελέγχου encr.aν το encr = 0 τότε το a_in βγαίνει στην έξοδο out_sbox.aλλιως το σήμα b_in βγαίνει στην έξοδο της βαθμίδας έξοδος εισέρχεται στο επόμενο component pln_reg01. (3)pln_reg01: Είναι ο δεύτερος pipelined καταχωρητης με είσοδο την 128bit έξοδο του προηγούμενου component.o καταχωρηρητης απλά προωθεί τα δεδομένα στην έξοδο του με καθυστέρηση ενός παλμού ρολογιου.οπως φαίνεται και στο παρακάτω σχήμα 37 η είσοδος plan_in είναι σήμα μεγέθους 128bits όπως και η έξοδος plan_out. σχήμα 37 διάγραμμα βαθμίδας plan_reg01 Η έξοδος της παραπάνω βαθμίδας εισέρχεται στο παρακάτω στάδιο που υλοποιείται από το component Shiftrow_stage0. 97

99 (4) Shiftrow_stage0: Eίναι ένα component που αποτελείται από άλλα 4 components.το σχηματικό διάγραμμα παρατίθεται στο παρακάτω σχήμα 38 σχήμα 38 διάγραμμα βαθμίδας Shiftrow_stage0 Στο παραπάνω σχηματικό διάγραμμα φαίνονται και τα επιμέρους τμήματα της σχεδίασης. (1)demux_shiftrot0:Eιναι ένας αποπλεκτης 1-2 ο οποίος έχει ως σήμα εισόδου όπως φαίνεται και στο παρακάτω σχήμα 39, το σήμα in_shiftrot[127:0] το οποίο είναι έξοδος της προηγούμενης βαθμιδας,το σήμα ελέγχου encr επιλέγει αν η έξοδος demux1 θα εισέλθει στην επόμενη βαθμίδα shift_rot0 ή αν το σήμα εξόδου demux2 θα εισέλθει στην βαθμίδα invshift_rot.oταν έχει επιλεχθεί η λειτουργία της κρυπτογράφησης και encr = 0 τοτε τα δεδομένα προωθούνται στην βαθμίδα που υλοποιεί το shiftrow στάδιο. Oταν επιλεχθεί λειτουργία αποκρυπτογράφησης,encr = 1, τότε τα δεδομένα προωθούνται στην βαθμίδα που υλοποιεί το ιnvshiftrow στάδιο.to σήμα εισόδου του αποπλέκτη είναι μεγέθους 128 bits όπως άλλωστε και τα σήματα εξόδου demux1 και demux2. σχήμα 39 διάγραμμα βαθμίδας demux_shiftrot0 98

100 (2)shift_row.stage:Είναι το component το οποίο υλοποιεί την διαδικασία του shift_rotate σταδίου του αλγοριθμου.οπως φαίνεται και στο παρακατω σχήμα 40 είναι ένα component με σήμα εισόδου το in_rot,μεγέθους 128 bits, που είναι η έξοδος demux1 του προηγουμένου component.έξοδος του component σήμα out_rot,και αυτό σχήμα 40 διάγραμμα βαθμίδας shift_rot0 μεγέθους 128 bits, το οποίο προωθείται στο επόμενο component.tα 128bits της εισόδου επεξεργάζονται συμφωνά με την διαδικασία που ακολουθείται από το shift_rotate στάδιο του αλγοριθμου.οπως αναφερθεί και προηγουμένως τα δεδομένα σχηματίζουν 16bytes των 8bits τα οποία σχηματίζουν τον πίνακα στον οποίο υλοποιείται το shiftrotate σταδιο.ετσι,εχουμε μια ολίσθηση των δεδομένων ανάλογα σε ποια σειρά βρισκονται.το αποτέλεσμα της διαδικασίας είναι ένα σήμα μεγέθους 128bits,το out_rot το οποίο είναι η μια από τις 2 εισόδους του επόμενου component, του πολυπλεκτη 2-1mux_shiftrot0. (3)invshift_row.stage:Eιναι το component που υλοποιεί τον αντίστροφο μετασχηματισμό invshiftrot.oπως και το παραπάνω component η είσοδος μετασχηματίζεται σε ένα άλλο σήμα 128bits το οποίο είναι το δεύτερο σήμα εισόδου του επόμενου πολυπλεκτη.στο παρακάτω σχήμα 41 φαίνεται το διάγραμμα της βαθμίδας σχήμα 41 διάγραμμα βαθμίδας invshift_rot0 99

101 Eτσι,αν έχει επιλεχθεί μέσω του σήματος encr η επιλογή της αποκρυπτογράφησης τα δεδομένα επεξεργάζονται σ αυτό το component και τα αποτελέσματα προωθούνται στο επόμενο 2-1 πολυπλεκτη mux_shiftrot. (4)mux_shiftrot0:Είναι το component που έχει για εισόδους a_in και b_in τις εξόδους των 2 προηγούμενων βαθμιδων.οπως φαίνεται και στο σχήμα 42 το σήμα ελέγχου ctr ορίζει αν θα προωθηθεί στην έξοδο της γενικότερης βαθμίδας shift_row.stage και από κει στην επόμενη βαθμίδα της σχεδιασης.το σήμα εξόδου του πολυπλεκτη mux_out μεγέθους 128 bits διασπάται σε 4 επιμέρους σήματα shiftrot_stage_out0 σχήμα 42 διάγραμμα βαθμίδας mux_shiftrot0, shiftrot_stage_out1, shiftrot_stage_out2 και shiftrot_stage_out3 τα οποια όπως φαίνεται και στο παραπάνω σχηματικό διάγραμμα είναι μεγέθους 32bits.Tα 4 αυτά σήματα εξέρχονται του shift_row.stage και είναι σήματα εισόδου για την επόμενη βαθμίδα. (4)pln_reg10: Είναι ένας ακόμα καταχωρητης που χρειάζεται για την υλοποίηση της pipelined αρχιτεκτονικης.οπως φαίνεται και στο παρακάτω σχήμα 43 έχει ως σήματα εισόδου τα clk, en_plan και το reset_plan τα οποία ελέγχονται από την κεντρική σχήμα 43 διάγραμμα βαθμίδας plan_reg10 100

102 μονάδα ελεγχου.τα σήματα εισόδου plan_in0, plan_in1, plan_in2, plan_in3 είναι μεγέθους 32 bits και έρχονται από την προηγουμένη βαθμιδα.τα δεδομένα απλώς προωθούνται στην έξοδο μετά από καθυστέρηση ενός παλμού ρολογιου.τα σήματα εξόδου plan_out0, plan_out1, plan_out2, plan_out3 παριστούν τις 4 κολώνες του πίνακα state τα οποία και εισέρχονται στην επόμενη βαθμίδα του MixColumn_stage. (5) MixColumn_stage0:Η αρχιτεκτονική που υλοποιεί αυτό το στάδιο φαίνεται στο παρακάτω σχηματικό διάγραμμα. σχήμα 44 αρχιτεκτονική της μονάδας Μix_Column για την επεξεργασία μιας κολώνας Όπου με την βαθμίδα XTIME συμβολίζουμε τον πολλαπλασιασμό με το {02} η το πολυώνυμο x, ο οποίος σε επίπεδο byte υλοποιείται με μια αριστερή ολίσθηση και αν το 8 ο bit b7 είναι ίσο με 1 τότε εκτελείται και μια πράξη XOR με το {1b} η { }.Επειδή το 0 είναι ουδέτερο στοιχείο της πρόσθεσης μπορούμε να θεωρήσουμε τις 2 περιπτώσεις για b7=0 και b7=1 σε μια,αν εκτελέσουμε την πράξη XOR με το byte 000b7b70b7b7. Eτσι, αν το b7=0 θα γίνει XOR με το 00 ενώ για 101

103 b7=1 θα γίνει XOR με το {1Β}.Η αρχιτεκτονική αυτής της βαθμίδας φαίνεται στο παρακάτω σχήμα σχήμα 44 αρχιτεκτονική της μονάδας XTIME Η αρχιτεκτονική του σχήματος 43 προέκυψε θεωρώντας τα παρακάτω : O μετασχηματισμός MixColumn που επενεργεί στην πρώτη από τις 4 κολώνες του πίνακα State είναι ως εξής : S 0,c = [ {02} {03} {01} {01} ] [ S0,c ] ή αλλιώς S 0,c = {02} ( S0,c S1,c ) S1,c ( S2,c S3,c ) Oμοίως λοιπόν εκφράζονται και τα υπόλοιπα bytes : S i,c = {02} ( Si,c S(i+1)mod4,c ) S(i+1)mod4,c ( S(i+2)mod4,c S(i+3)mod4,c) (1) Oπου Si,c το i byte της στήλης-κολώνας c. O ανάστροφος μετασχηματισμός MixColumn που επενεργεί στην πρώτη από τις 4 κολώνες του πίνακα State είναι ως εξής : invs 0,c = [ {0e} {0b} {0d} {09} ] [ S0,c S1,c S2,c S3,c] ή αλλιώς invs 0,c = {04}({02} ( S0,c S1,c ) {02} ( S2,c S3,c ) ( S0,c S2,c ) {02} ( S2,c S1,c ) S1,c ( S2,c S3,c ).(2) Aν παρατηρήσουμε προσεκτικά βλέπουμε ότι ο όρος {02} ( S2,c S1,c ) S1,c ( S2,c S3,c ) υπάρχει και στη σχέση (1) και (2). 102

104 Έτσι λοιπόν μπορούμε να θεωρήσουμε την παρακάτω σχέση (3) συνδυάζει και τους δυο μετασχηματισμούς μαζί : invs i,c = {04}({02} ( Si,c S(i+1)mod4,c) {02} ( S(i+2)mod4,c S(i+3)mod4,c) ( Si,c S(i+2)mod4,c) {02} ( S2,c S1,c ) S1,c ( S2,c S3,c )) S i,c. (3) Oπου Si,c είναι το i byte της στήλης-κολώνας c, S i,c είναι το i byte της στήληςκολώνας c μετά την εφαρμογή του μετασχηματισμού MixColumn και invs i,c είναι το i byte της στήλης-κολώνας c μετά την εφαρμογή του ανάστροφου μετασχηματισμού invmixcolumn. Το κύκλωμα λοιπόν του σχήματος 43 εκτελεί τον μετασχηματισμό MixColumn σύμφωνα με την εξίσωση της σχέσης (1) αλλά και τον ανάστροφο μετασχηματισμό invmixcolumn σύμφωνα με την εξίσωση της σχέσης (3). To component αποτελείται από 9 άλλα επιμέρους components τα οποία είναι: (1) demux_miccol0, demux_miccol1, demux_miccol2, demux_miccol3:eιναι 4 όμοια component τα οποία είναι αποπλεκτες 1-2 και έχουν για είσοδο τα σήματα data_in_0, data_in_1, data_in_2,data_in_3 μεγέθους 32bits.Το σήμα ελέγχου mix_select ελέγχει αν τα δεδομένα θα προωθηθούν στο component ΜixCol_state για επεξεργασία η αν θα κατευθυνθούν κατευθείαν στους πολυπλεκτες mux_mixcol0, mux_mixcol1, mux_mixcol2 και mux_mixcol3.ετσι οι έξοδοι out_1 των 4 αποπλεκτών εισέρχονται στο ΜixCol_state ενώ οι έξοδοι out_2 εισέρχονται στους πολυπλεκτες mux_mixcol.το κάθε σήμα παριστά όπως προαναφέρθηκε κάθε μια από τις 4 κολώνες του state του αλγοριθμου.παρακατω παρατίθεται το σχήμα 46 της βαθμίδας ΜixCol_stage. 103

105 σχήμα 46 διάγραμμα βαθμίδας MixCol_stage (2) MixCol_state: Tο component αποτελείται από άλλα επιμέρους components.έχει, όπως φαίνεται και στο παραπάνω σχήμα,4 εισόδους,τα σήματα in_mix_0, in_mix_1, in_mix_2 και in_mix_3 τα οποία είναι και τα δεδομένα προς επεξεργασια.ενω οι έξοδοι out_mix_0, out_mix_1, out_mix_2 και out_mix_3 προωθούνται στους πολυπλεκτες mux_mixcol. Αρχικα,τα δεδομένα των 32 bit διαχωρίζονται σε byte των 8bit και επεξεργάζονται στο component mixcol_byte στο σχήμα 47.Τα δεδομένα αυτά αποτελούν μια <<λέξη>> ενώ, 4 <<λέξεις>> σχηματίζουν μια κολώνα του πίνακα state πάνω στον οποίο επιδρά ο μετασχηματισμός MixColumn.Eτσι,δεδομενα των 8bit φτιάχνουν ένα byte.στη συνεχεία αυτά τα 4 byte επεξεργάζονται στο component mixcol_col.oπως φαίνεται και στο σχήμα 48 υπάρχουν 4 component όπου το καθένα επεξεργάζεται 4 σήματα των 8 bit,τα οποία συνδυάζονται όπως φαίνεται στο σχηματικό διάγραμμα και έτσι κάθε component παράγει ένα σήμα 8bit. To σήμα encr που ελέγχεται από τον κεντρικό ελεγχο,οριζει αν θα γίνει κρυπτογράφηση ή αποκρυπτογράφηση αφού το ίδιο component μπορεί να εκτελέσει και τις δυο λειτουργίες. Tα 4 αυτά σήματα των 8 bit αποτελούν το σήμα μιας κολώνας του πίνακα του state. 104

106 Συνολικά θα έχουμε 4 κολώνες του πίνακα 4*4 state. Στο σχήμα 48 το component αποτελείται στην ουσία από άλλα 4 επιμέρους components τα οποία σχηματοποιούν τα τις 4 κολώνες των 32bits και έτσι συνολικά έχουμε την επεξεργασία του αρχικού σήματος των 128 bits. σχήμα 47 διάγραμμα βαθμίδας MixCol_byte 105

107 σχήμα 48 διάγραμμα βαθμίδας MixCol_col Όπως φαινεται και στο παραπάνω σχήμα έχουμε σαν εξόδους τα σήματα οut_column_0, οut_column_1, οut_column_2, οut_column_3 φτιάχνουν το σήμα in_mix των 32 bit.όπως φαίνεται στο παρακάτω σχήμα

108 σχήμα 49 διάγραμμα των 4βαθμίδων MixCol_column Όπως φαίνεται και από τις παραπάνω βαθμίδες τα 4 σήματα in_mix των 32bits εισέρχονται το καθένα σε ένα component που υλοποιεί την επεξεργασία και έτσι παράγονται τα σήματα εξόδου out_mix_0,out_mix_1,out_mix_2 και out_mix_3 τα οποία αποτελούν τις 4 κολώνες του πίνακα STATE. Οι 4 αυτές κολώνες του πίνακα, δηλαδή τα 4 σήματα 32bits απαρτίζουν ένα ενιαίο συγκεντρωτικό component το MixCol_state. To συνολικό component που πραγματοποιεί το στάδιο παρατίθεται στο παρακάτω σχήμα

109 σχήμα 50 διάγραμμα βαθμίδας MixCol_state Oι έξοδοι out_mix_0,out_mix_1,out_mix_2 και out_mix_3 εισέρχονται στους 4 επόμενους 2-1 πολυπλεκτες mux_128_32 oι οποίοι έχουν ως δεύτερη είσοδο το σήμα εξόδου out_2 των αποπλεκτων demux_128_32. Tο σήμα επιλογής ctr επιλέγει είτε την μια είσοδο είτε την άλλη για να προωθήσει στην εξοδο.οσο τα δεδομένα επεξεργάζονται στους 9 πρώτους γύρους του αλγόριθμου παίρνουν στην έξοδο της βαθμίδας τα επεξεργασμένα out_mix από το component ΜixCol_state μέσω του ctr των mux_128_32. Όταν τα δεδομένα εισέρχονται στον τελευταίο γύρο το σήμα ctr επιλέγει να περάσει στην έξοδο της βαθμίδας ως σήμα εξόδου mixcol_out τις εξόδους των αποπλεκτων demux_128_32 έτσι ώστε να παρακάμψει το στάδιο του MixColumn_stage όπως άλλωστε προβλέπει ο αλγόριθμος. Το σήμα εξόδου της βαθμίδας mixcol_out προωθείται ως είσοδο στο τελευταίο component Αdd_Round_Key. (6) Κey_Add_stage: To στάδιο της πρόσθεσης του κλειδιού ( ΑddRoundKey ) αποτελείται απλά από ένα component που πραγματοποιεί μια απλή XOR μεταξύ του σήματος εξόδου του 108

110 προηγούμενου component mixcol_out το οποίο και εισέρχεται στην είσοδο in_keyadd και του σήματος round_key το οποίο είναι και το 128bit κλειδι.παρακατω παρατίθεται το σχήμα 51 που απεικονίζει τα σήματα εισόδου και εξόδου του component σχήμα 51 διάγραμμα βαθμίδας Κey_add ΑΠΟΠΛΕΚΤΗΣ 2-1 (demux_unit): Είναι ένας απλός απλοπλεκτης ο οποίος και βρίσκεται στο τέλος της διάταξης. Όπως φαίνεται και στο παρακάτω σχήμα 52 έχει ως είσοδο της έξοδο της βαθμίδας BasicBlock out_keyadd το οποίο και εισέρχεται ως είσοδο στο σήμα c_in. σχήμα 52 διάγραμμα βαθμίδας demux_unit To σήμα ελέγχου ctr επιλέγει αν η έξοδος demux2 θα στην έξοδο γενικά της διάταξης και αυτό σημαίνει πως τα δεδομένα του πίνακα State ολοκλήρωσαν τους 10 γύρους του αλγοριθμου.αν επιλεγεί η είσοδος του demux να προωθηθεί στην έξοδο demux1, τότε αυτή η έξοδος επιστρέφει και πάλι στην είσοδο της μονάδας επεξεργασίας ( δηλαδή στην είσοδο του component mux_unit0 ) έτσι ώστε να επαναληφθούν οι υπόλοιποι γύροι που απομένουν για την ολοκλήρωση της διαδικασίας. 109

111 KΕΦΑΛΑΙΟ ΕΠΙΒΕΒΑΙΩΣΗ ΟΡΘΗΣ ΛΕΙΤΟΥΡΓΙΑΣ Load_input_unit : H μονάδα load_input δέχεται δεδομένα και αρχίζουν να γεμίζει ο πρώτος καταχωρητης : Έρχονται και νέα δεδομένα και συνεχίζει να γεμίζει ο πρώτος καταχωρητης ενώ οι υπόλοιποι 3 αναμένουν 110

112 Έχει γεμίσει ο πρώτος register και στο επόμενο clk θα μεταφέρει τα data έχει δεχθεί τα data του πρώτου καταχωρητη ο δεύτερος ενώ ο τρίτος περιμένει 111

113 Η μονάδα έχει γεμίσει και στο επόμενο clk θα αρχίσει να αδειάζει για να αρχίσει και πάλι η ιδία διαδικασία αν έρθουν νέα δεδομένα 112

114 Load_key_unit : Αρχίζει να γεμίζει με data του κλειδιού ο register της μονάδας Έχει δεχθεί και αλλά δεδομένα και έχει 2 blocks των 32bits Στον καταχωρητη της μονάδας έχει φτιαχτεί το αρχικό κλειδί initial_key 113

115 AES(128) : Η διαδικασία των rounds έχει ξεκινήσει και τα δεδομένα βρίσκονται στο component Block_round και επεξεργάζονται Η διαδικασία για το πρώτο block των 128bits έχει ολοκληρωθεί και τα αποτελέσματα πρωοθονται στην έξοδο της μονάδας Εncr/Decr και του συνολικού component AES_CORE 114

116 Tέλος μονάδα επεξεργασίας έχει επεξεργασθεί 4 blocks των 128bits αφού έχει τελειώσει η επεξεργασία και έχουν προωθηθεί στην έξοδο τα δεδομένα το σύστημα επανέρχεται σε κατάσταση αδράνειας και περιμένει να ξαναδεχθεί δεδομένα από την μονάδα εισόδου Load_input 115

117 Στο παρακάτω σχηματικό φαίνεται η λειτουργία της κεντρικής μονάδας ελέγχου FSM Στο παρακάτω σχηματικό φαίνεται η λειτουργία της μονάδας ελέγχου FSM της Load_input 116

118 5.2 ΕΠΙΔΟΣΗ ΕΠΙΦΑΝΕΙΑΣ-ΤΑΧΥΤΗΤΑΣ 117

119 ΣΥΜΠΕΡΑΣΜΑΤΑ Σκοπός αυτής της εργασίας ήταν η ανάπτυξη υλικού και ο σχεδιασμός της διάταξης η οποία και θα υλοποιεί τη λειτουργία-διαδικασία κρυπτογράφησης και 118

120 αποκρυπτογράφησης σύμφωνα με την ρουτίνα που ορίζει το specification του αλγόριθμου Rijndael. Για την επίτευξη της εργασίας σημαντικά τα βήματα της σχεδίασης της διάταξης και της λογικής που υλοποιήσαμε,της εκτέλεσης μέσω των εργαλείων σχεδίασης που χρησιμοποιήσαμε (Leonardo) και της επιβεβαίωσης της ορθής λειτουργίας τόσο των επιμέρων components που σχεδιάσαμε όσο και του γενικού και συγκεντρωτικού component που υλοποιεί τον αλγόριθμο. Πρωταρχικός μας σκοπός ήταν η σχεδίαση της διάταξης που θα υλοποιούσε τον αλγόριθμο.στην συνέχεια, σχεδιάσαμε τα επιμέρους και μικρά components-blocks, τα οποία και ενώσαμε σε γενικότερα και μεγαλύτερα blocks, τα οποία τελικά απαρτίζουν το συνολικό κεντρικό block που υλοποιεί τον αλγόριθμο. Τέλος, για την επιβεβαίωση της ορθής λειτουργίας της σχεδίασης των κυκλωμάτων και της υλοποίησης, χρησιμοποιήσαμε κατάλληλο πρόγραμμα προσομοίωσης λειτουργίας των κυκλωμάτων (Modelsim). To πλήθος των επιμέρους components που σχεδιάσαμε και χρησιμοποιήσαμε και ο απόλυτος συγχρονισμός μεταξύ των ήταν το ζητούμενο και ένας παράγοντας που αύξησε αρκετά το βαθμό δυσκολίας 119

121 ΠΑΡΑΡΤΗΜΑ A Ο πινακας S-Box: Ο αναστροφος πινακας S -Box: 120

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy)

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy) Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων PGP (Pretty Good Privacy) Εισαγωγή Το λογισμικό Pretty Good Privacy (PGP), το οποίο σχεδιάστηκε από τον Phill Zimmerman, είναι ένα λογισμικό κρυπτογράφησης

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

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

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

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

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

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

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

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

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

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

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο. Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο. Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος 1 ΠΕΡΙΕΧΟΜΕΝΑ Ψηφιακές Υπογραφές Ασύμμετρης Κρυπτογραφίας Συστήματα ψηφιακής υπογραφής με αυτοανάκτηση Συστήματα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 2. Κρυπτογραφικά εργαλεία

Κεφάλαιο 2. Κρυπτογραφικά εργαλεία Κεφάλαιο 2 Κρυπτογραφικά εργαλεία Συμμετρική κρυπτογράφηση Καθολικά αποδεκτή τεχνική που χρησιμοποιείται για τη διαφύλαξη της εμπιστευτικότητας δεδομένων τα οποία μεταδίδονται ή αποθηκεύονται Γνωστή και

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

Αυθεντικότητα Μηνυμάτων Συναρτήσεις Hash/MAC

Αυθεντικότητα Μηνυμάτων Συναρτήσεις Hash/MAC Αυθεντικότητα Μηνυμάτων Συναρτήσεις Hash/MAC Τμήμα Μηχ. Πληροφορικής ΤΕΙ Κρήτης Αυθεντικότητα Μηνυμάτων 1 Αυθεντικότητα Μηνύματος Εφαρμογές Προστασία ακεραιότητας Εξακρίβωση ταυτότητας αποστολέα Μη άρνηση

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

Διδάσκουσα: Χάλκου Χαρά,

Διδάσκουσα: Χάλκου Χαρά, Διδάσκουσα: Χάλκου Χαρά, Διπλωματούχος Ηλεκτρολόγος Μηχανικός & Τεχνολογίας Η/Υ, MSc e-mail: chalkou@upatras.gr Κάθε ασθενείς έχει έναν ιατρικό φάκελο όπου περιέχονται τα ιατρικά του δεδομένα. Οι χειρόγραφοι

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

ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ. Οδηγίες προς τις Συνεργαζόμενες Τράπεζες

ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ. Οδηγίες προς τις Συνεργαζόμενες Τράπεζες ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ Οδηγίες προς τις Συνεργαζόμενες Τράπεζες 1. Εισαγωγή Γνωριμία με τα Ψηφιακά Πιστοποιητικά Η χρήση ηλεκτρονικών

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

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

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

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

YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ

YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ ΤΕΙ Κρητης Τμήμα Μηχανικών Πληροφορικής Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Εισαγωγή Ο στόχος της υβριδικής μεθόδου είναι να αντισταθμίσει τα μειονεκτήματα της συμμετρικής

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

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

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

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

Cryptography and Network Security Chapter 13. Fifth Edition by William Stallings Cryptography and Network Security Chapter 13 Fifth Edition by William Stallings Chapter 13 Digital Signatures To guard against the baneful influence exerted by strangers is therefore an elementary dictate

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

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

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

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

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

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

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

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

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

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

Hash Functions. μεγεθος h = H(M) ολους. στο μηνυμα. στο συγκεκριμενο hash (one-way property)

Hash Functions. μεγεθος h = H(M) ολους. στο μηνυμα. στο συγκεκριμενο hash (one-way property) Hash Functions Συρρικνωνει μηνυμα οποιουδηποτε μηκους σε σταθερο μεγεθος h = H(M) Συνηθως θεωρουμε οτι η hash function ειναι γνωστη σε ολους Το hash χρησιμοποιειται για να ανιχνευσει τυχον αλλαγες στο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Συμμετρική Κρυπτογραφία

Συμμετρική Κρυπτογραφία ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής Ασφάλεια Πληροφοριακών Συστημάτων Εργαστήριο Συμμετρική Κρυπτογραφία Konstantinos Fysarakis, PhD kfysarakis@staff.teicrete.gr Εισαγωγή } Στην συνηθισμένη κρυπτογραφία,

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

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

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Τοπολογίες Διατάξεων Κρυπτογράφησης- Ασφάλεια Δικτύων και Ασφάλεια Ηλεκτρονικού Ταχυδρομείου Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail:

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

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

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

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

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

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

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

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

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

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

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

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές ΤΕΙ Κρητης Τμήμα Μηχανικών Πληροφορικής Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές Ψηφιακά Πιστοποιητικά Υποδομή δημόσιου κλειδιού (Public Key Infrastructure

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ασφάλεια Πληροφοριακών Συστηµάτων. Αυθεντικότητα Μηνυµάτων 1

Ασφάλεια Πληροφοριακών Συστηµάτων. Αυθεντικότητα Μηνυµάτων 1 Αυθεντικότητα Μηνυµάτων Συναρτήσεις Hash/MAC Τμήμα Μηχ. Πληροφορικής ΤΕΙ Κρήτης Αυθεντικότητα Μηνυµάτων 1 Αυθεντικότητα Μηνύµατος Εφαρμογές Προστασία ακεραιότητας Εξακρίβωση ταυτότητας αποστολέα Μη άρνηση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δίκτυα Υπολογιστών Ενότητα 6: Secure Sockets Layer - SSL

Δίκτυα Υπολογιστών Ενότητα 6: Secure Sockets Layer - SSL Δίκτυα Υπολογιστών Ενότητα 6: Secure Sockets Layer - SSL Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

Δομή Ηλεκτρονικού υπολογιστή

Δομή Ηλεκτρονικού υπολογιστή Δομή Ηλεκτρονικού υπολογιστή Η κλασσική δομή του μοντέλου που πρότεινε το 1948 ο Von Neumann Κεντρική Μονάδα Επεξεργασίας Είσοδος Αποθήκη Αποθήκη - Έξοδος Εντολών Δεδομένων Κλασσικό μοντέλο Von Neumann

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

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

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

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

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

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

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

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ ΣΤΗΝ ΕΕ

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ ΣΤΗΝ ΕΕ ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ Ψηφιακές υπογραφές ΝΙΚΟΣ ΣΑΡΙΔΑΚΗΣ ΣΤΑΣΗΣ ΑΝΤΩΝΗΣ Γενική Γραμματεία Δημόσιας Διοίκησης και Ηλεκτρονικής Διακυβέρνησης ΥΠΕΣΔΔΑ 1 ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ ΣΤΗΝ ΕΕ ΠΟΛΙΤΕΣ ΕΠΙΧΕΙΡΗΣΕΙΣ

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

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα.

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΘΕΜΑ Α ΚΥΡΙΑΚΗ 04/05/2014- ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΟΚΤΩ (8) ΕΚΦΩΝΗΣΕΙΣ Α1. Να χαρακτηρίσετε

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

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

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

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

Threshold Cryptography Algorithms. Εργασία στα πλαίσια του μαθήματος Τεχνολογίες Υπολογιστικού Νέφους

Threshold Cryptography Algorithms. Εργασία στα πλαίσια του μαθήματος Τεχνολογίες Υπολογιστικού Νέφους Threshold Cryptography Algorithms Εργασία στα πλαίσια του μαθήματος Τεχνολογίες Υπολογιστικού Νέφους Ορισμός Το σύστημα το οποίο τεμαχίζει ένα κλειδί k σε n τεμάχια έτσι ώστε οποιοσδήποτε συνδυασμός πλήθους

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

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

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

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

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

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

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

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 4: Τεχνικές Μετάδοσης ΜΕΤΑΓΩΓΗ Τεχνική µεταγωγής ονομάζεται ο τρόπος µε τον οποίο αποκαθίσταται η επικοινωνία ανάµεσα σε δύο κόµβους με σκοπό την

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

Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω:

Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω: Σημειώσεις Δικτύων Αναλογικά και ψηφιακά σήματα Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω: Χαρακτηριστικά

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

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

Παύλος Εφραιμίδης. προηγμένα κρυπτογραφικά πρωτόκολλα. Ασφ Υπολ Συστ Παύλος Εφραιμίδης προηγμένα κρυπτογραφικά πρωτόκολλα Ασφ Υπολ Συστ 1 Zero-Knowledge Proofs Zero-Knowledge Proofs of Identity Blind Signatures Oblivious Signatures Simultaneous Contract Signing Simultaneous

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