Διπλωμαηική Εργαζία ηνπ θνηηεηή ηνπ Τκήκαηνο Ηιεθηξνιόγσλ Μεραληθώλ θαη Τερλνινγίαο Υπνινγηζηώλ ηεο Πνιπηερληθήο Σρνιήο ηνπ Παλεπηζηεκίνπ Παηξώλ

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

Download "Διπλωμαηική Εργαζία ηνπ θνηηεηή ηνπ Τκήκαηνο Ηιεθηξνιόγσλ Μεραληθώλ θαη Τερλνινγίαο Υπνινγηζηώλ ηεο Πνιπηερληθήο Σρνιήο ηνπ Παλεπηζηεκίνπ Παηξώλ"

Transcript

1 ΠΑΝΕΠΙΣΗΜΙΟ ΠΑΣΡΩΝ ΣΜΗΜΑ ΗΛΕΚΣΡΟΛΟΓΩΝ ΜΗΥΑΝΙΚΩΝ ΚΑΙ ΣΕΥΝΟΛΟΓΙΑ ΤΠΟΛΟΓΙΣΩΝ ΣΟΜΕΑ: ΗΛΕΚΣΡΟΝΙΚΗ ΚΑΙ ΤΠΟΛΟΓΙΣΩΝ ΕΡΓΑΣΗΡΙΟ ΥΕΔΙΑΜΟΤ ΟΛΟΚΛΗΡΩΜΕΝΩΝ ΚΤΚΛΩΜΑΣΩΝ ΜΕΓΑΛΗ ΚΛΙΜΑΚΑ (VLSI DESIGN) Διπλωμαηική Εργαζία ηνπ θνηηεηή ηνπ Τκήκαηνο Ηιεθηξνιόγσλ Μεραληθώλ θαη Τερλνινγίαο Υπνινγηζηώλ ηεο Πνιπηερληθήο Σρνιήο ηνπ Παλεπηζηεκίνπ Παηξώλ Τζίλγθα Ηιία ηνπ Νηθνιάθε Αξηζκόο Μεηξώνπ: 6399 Θέκα «Αποδοηικός ζτεδιαζμός και σλοποίηζη ηης ζσνάρηηζης καηακερμαηιζμού Skein ζε πλαηθόρμα σλικού» Επηβιέπσλ Θενδσξίδεο Γεώξγηνο Αριθμός Διπλωμαηικής Εργαζίας: Πάηξα, Μάηνο 2011

2

3 ΠΙΣΟΠΟΙΗΗ Πηζηνπνηείηαη όηη ε Δηπισκαηηθή Εξγαζία κε ζέκα «Αποδοηικός ζτεδιαζμός και σλοποίηζη ηης ζσνάρηηζης καηακερμαηιζμού Skein ζε πλαηθόρμα σλικού» Τνπ θνηηεηή ηνπ Τκήκαηνο Ηιεθηξνιόγσλ Μεραληθώλ θαη Τερλνινγίαο Υπνινγηζηώλ Τζίλγθα Ηιία ηνπ Νηθνιάθε Αξηζκόο Μεηξώνπ: 6399 Παξνπζηάζηεθε δεκόζηα θαη εμεηάζηεθε ζην Τκήκα Ηιεθηξνιόγσλ Μεραληθώλ θαη Τερλνινγίαο Υπνινγηζηώλ ζηηο.../../ Ο Επηβιέπσλ Θενδσξίδεο Γεώξγηνο Επίθνπξνο Καζεγεηήο Ο Δηεπζπληήο ηνπ Τνκέα Επζύκηνο Φνύζνο Καζεγεηήο

4

5 Αριθμός Διπλωμαηικής Εργαζίας: Θέμα: «Αποδοηικός ζτεδιαζμός και σλοποίηζη ηης ζσνάρηηζης καηακερμαηιζμού Skein ζε πλαηθόρμα σλικού» Φνηηεηήο: Επηβιέπσλ: Πεξίιεςε Σθνπόο ηεο δηπισκαηηθήο απηήο εξγαζίαο είλαη κέζσ ηνπ ζρεδηαζκνύ θαη ηεο πινπνίεζεο ηεο ζπλάξηεζεο θαηαθεξκαηηζκνύ Skein λα θαηαλνεζνύλ ζε βάζνο νη αξρέο ηεο ζρεδίαζεο θπθισκάησλ κεγάιεο θιίκαθαο ζε δηαθνξεηηθέο πιαηθόξκεο πιηθνύ. Σηελ εξγαζία απηή ζρεδηάδνληαη θαη εμνκνηώλνληαη ε ιεηηνπξγία ηεζζάξσλ θπθισκάησλ πινπνηήζεσλ ηεο ζπλάξηεζεο κε δηαθνξεηηθή ζθόπεπζε ε θαζεκία θαη ζπγθξίλνληαη κεηαμύ ηνπο κε βάζε θαιά νξηζκέλα θξηηήξηα θαη εμάγνληαη ρξήζηκα ζπκπεξάζκαηα.

6

7 ΠΕΡΙΕΦΟΜΕΝΑ ΡΕΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1 Κρυπτογραφία Ειςαγωγι Ορολογία Σχετικι με τθν Κρυπτογραφία Αποςτολζασ - Ραραλιπτθσ Μθνφματα και κρυπτογράφθςθ Ριςτοποίθςθ, ακεραιότθτα και μθ-αποκιρυξθ Αλγόρικμοι και κλειδιά Αλγόρικμοι κρυπτογραφίασ Κρυπτανάλυςθ Αςφάλεια των αλγορίκμων Γνωςτοί αλγόρικμοι κρυπτογραφίασ ΚΕΦΑΛΑΙΟ 2 Μονόδρομεσ ςυναρτιςεισ και εφαρμογζσ Μονόδρομεσ Συναρτιςεισ Μονόδρομεσ HASH Συναρτιςεισ Ψθφιακζσ Υπογραφζσ Επικζςεισ Γενεκλίων ςε Μονόδρομεσ HASH Συναρτιςεισ Hardware VS Software Encryption ΚΕΦΑΛΑΙΟ 3 Ο Αλγόρικμοσ Skein Ιςτορικι αναδρομι Χαρακτθριςτικά του Skein Κφρια ςυςτατικά του Skein Το Threefish Block Cipher Το UBI Αλυςιδωτισ Λειτουργίασ Το Skein Hashing Ρροαιρετικά ςτοιχεία (Optional Arguments) Skein MAC Δενδροειδζσ HASH με τον Skein

8 3.4 Ρλιρεισ Ρροδιαγραφζσ του Skein Συμβολοςειρζσ Η ςειρά των bit και byte Ρλιρεισ Ρροδιαγραφζσ του Threefish Ρλιρεισ Ρροδιαγραφζσ του UBI Ρλιρεισ Ρροδιαγραφζσ του Skein ΚΕΦΑΛΑΙΟ 4 Οι αρχιτεκτονικζσ των κυκλωμάτων Γενικι Ρεριγραφι Το Κφκλωμα Μικρισ Επιφάνειασ Ειςαγωγι Interface και Βαςικά Component Το Component Input Block Το Component Rounds Ο Ρολυπλζκτθσ Ειςόδου Το Component adder_8x Ο Register Το Component Tweak Generator Ο Ρολυπλζκτθσ Κλειδιοφ Το Component Key Generator Το Component Output Block Το Control Unit Το Κφκλωμα Υψθλϊν Επιδόςεων με Ρεριοριςμό Ειςόδου Ειςαγωγι Interface και Βαςικά Component Το Component Input Block Το Component Rounds Ο Ρολυπλζκτθσ Ειςόδου Το Component adder_8x Οι Δφο Register Το Component Tweak Generator Ο Ρολυπλζκτθσ Κλειδιοφ Το Component Key Generator Οι Ρολυπλζκτεσ των Subkey

9 Το Component Output Block Το Control Unit Το Κφκλωμα Υψθλϊν Επιδόςεων Χωρίσ Ρεριοριςμό Ειςόδου Ειςαγωγι Interface και Βαςικά Component Το Component Input Block Το Component Output Block Το Control Unit Κφκλωμα Χωρίσ Pipeline Ειςαγωγι Interface και Βαςικά Component Το Component Rounds Το Component Key Generator Το Control Unit Τα Υπόλοιπα Component ΚΕΦΑΛΑΙΟ 5 Αποτελζςματα Σφνκεςθσ και ΕΞΟΜΟΙΩΣΕΩΝ Αποτελζςματα Σφνκεςθσ Αποτελζςματα Εξομοιϊςεων Το Κφκλωμα Μικρισ Επιφάνειασ Το Κφκλωμα Υψθλϊν Επιδόςεων με Ρεριοριςμζνθ Είςοδο Το Κφκλωμα Υψθλϊν Επιδόςεων Χωρίσ Ρεριοριςμό Ειςόδου Το Κφκλωμα Χωρίσ Pipeline ΚΕΦΑΛΑΙΟ 6 Συμπεράςματα ΚΕΦΑΛΑΙΟ 7 Βιβλιογραφία

10

11 ΚΕΥΑΛΑΙΟ 1 ΚΡΤΠΣΟΓΡΑΥΙΑ 1.1 ΕΙΑΓΨΓΗ Στθ ςφγχρονθ εποχι υπάρχει μεγάλθ ανάγκθ για τθ δυνατότθτα προφφλαξθσ ςθμαντικϊν πλθροφοριϊν ϊςτε να μθ διαρρεφςουν. Αυτζσ μπορεί να είναι είτε επαγγελματικά μυςτικά είτε ςτρατιωτικά ι άλλα. Από τθν αρχαιότθτα ακόμθ, υπάρχουν ευριματα κρυπτογραφθμζνων κειμζνων ςε πολιτιςμοφσ όπωσ των Αιγυπτίων, των Αςςυρίων και των Βαβυλωνίων. Αυτι θ ανάγκθ κορυφϊκθκε ςτα χρόνια του Δευτζρου Ραγκοςμίου Ρολζμου. Η απαίτθςθ για αςφαλι μετάδοςθ ςτρατιωτικϊν ςχεδίων και εντολϊν επίκεςθσ μζςα από μθ αςφαλι κανάλια επικοινωνίασ ςτα οποία είχαν πρόςβαςθ υποκλοπείσ του εχκροφ ικανοποιικθκε μζςω τθσ κρυπτογράφθςθσ των μθνυμάτων αυτϊν. Από τότε θ μετάδοςθ δεδομζνων ςε κωδικοποιθμζνθ μορφι εξελίχκθκε ςε ξεχωριςτό επιςτθμονικό κλάδο. Στισ μζρεσ μασ, θ κρυπτογραφία ζχει πλικοσ εφαρμογϊν, με βαςικό ςκοπό τθν παραποίθςθ μίασ πλθροφορίασ ζτςι ϊςτε να γίνεται κατανοθτι μόνον από το άτομο προσ το οποίο απευκφνεται. Οι εφαρμογζσ τθσ κρυπτογραφίασ ζχουν επεκτακεί ςε πολλζσ πτυχζσ τθσ κακθμερινισ μασ ηωισ: ςυναλλαγζσ με τθν τραπεηικι μασ κάρτα (όπουκρυπτογραφείται ο προςωπικόσ μασ κωδικόσ - PIN), δυνατότθτα ψθφιακισ

12 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ υπογραφισ θλεκτρονικϊν εγγράφων (με τθ χριςθ του ιδιωτικοφ μασ κλειδιοφ), θλεκτρονικό εμπόριο κοκ. Βζβαια ςε όλα αυτά ςυμβάλει κακοριςτικά και θ ανάπτυξθ των υπολογιςτϊν και των θλεκτρονικϊν ςυςτθμάτων. Διότι χάρισ ςτθν αυξανόμενθ υπολογιςτικι ιςχφ δίνεται θ δυνατότθτα για όλο και πιο πολφπλοκα κρυπτογραφικά ςυςτιματα τα οποία είναι δυςκολότερο να παραβιαςτοφν από επικζςεισ. Αυτό είναι πιο ςθμαντικό ςιμερα κακϊσ μζςω τθσ χριςθσ των τθλεπικοινωνιακϊν δικτφων διακινοφνται ςθμαντικζσ πλθροφορίεσ κάτι που απαιτεί και πολλαπλάςια αςφάλεια δεδομζνων αφοφ κρίςιμεσ εφαρμογζσ υλοποιοφνται θλεκτρονικά και μία υποκλοπι μπορεί να αποβεί καταςτροφικι. Πλα τα παραπάνω ςυνθγοροφν ότι το ερευνθτικό ενδιαφζρον ςτο χϊρο τθσ κρυπτογραφίασ είναι τεράςτιο ειδικά ςτισ ςθμερινζσ ςυνκικεσ διαβίωςθσ και εξάπλωςθσ του διαδικτφου και των θλεκτρονικά παρεχόμενων υπθρεςιϊν. Για αυτό λοιπόν, θ πανεπιςτθμιακι ζρευνα ςτρζφεται ςτο αντικείμενο τθσ κρυπτογράφθςθσ δεδομζνων και ςτο αντίςτοιχο μακθματικό τθσ υπόβακρο, ςε τομείσ όπωσ Θεωρία Ρολυπλοκότθτασ, Θεωρία Αρικμϊν, Θεωρία Ρικανοτιτων και Στατιςτικισ. 1.2 ΟΡΟΛΟΓΙΑ ΦΕΣΙΚΗ ΜΕ ΣΗΝ ΚΡΤΠΣΟΓΡΑΥΙΑ Αποςτολϋασ - Παραλόπτησ Ζςτω ότι ζνασ αποςτολζασ κζλει να ςτείλει ζνα μινυμα ςε ζναν παραλιπτθ. Η αποςτολι αυτι πρζπει να γίνει με αςφάλεια, κάτι που ςθμαίνει ότι δεν πρζπει να κατανοιςει το μινυμα κάποιοσ υποκλοπζασ Μηνύματα και κρυπτογρϊφηςη Το μινυμα ονομάηεται και καθαρό κείμενο (plaintext). Η διαδικαςία μετατροπισ ενόσ μθνφματοσ με τζτοιο τρόπο ϊςτε να μθν είναι κατανοθτό το περιεχόμενό του λζγεται κρυπτογράφηςη (encryption). Το αποτζλεςμα τθσ κρυπτογράφθςθσ ςε ζνα κακαρό κείμενο ονομάηεται κρυπτογραφημζνο κείμενο (ciphertext). Η αντίςτροφθ διαδικαςία ονομάηεται αποκρυπτογράφηςη (decryption). Τα παραπάνω φαίνονται ςτο Σχιμα 1.1. plaintext Encryption ciphertext Decryption plaintext Σχιμα 1.1: Κρυπτογράφθςθ και Αποκρυπτογράφθςθ Η επιςτιμθ που αςχολείται με τθν αςφάλεια των μεταδιδόμενων μθνυμάτων ονομάηεται κρυπτογραφία, ενϊ θ επιςτιμθ που αςχολείται με τθν ανάκτθςθ των

13 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ κρυπτογραφθμζνων μθνυμάτων ονομάηεται κρυπτανάλυςη. Ο κλάδοσ των μακθματικϊν που περιλαμβάνει τθν κρυπτογραφία και τθν κρυπτανάλυςθ είναι θ κρυπτολογία. Το plaintext ςυμβολίηεται με το γράμμα Μ και μπορεί να είναι μία ακολουκία από bits, ζνα αρχείο κειμζνου, ιχου, κινοφμενθσ εικόνασ ι οποιαδιποτε άλλθ πλθροφορία. Πςον αφορά τουσ υπολογιςτζσ, το Μ απλά είναι δεδομζνα ςε δυαδικι μορφι χωρίσ κάποια ςυγκεκριμζνθ μορφι. Το plaintext μπορεί να προορίηεται είτε για μετάδοςθ, είτε για αποκικευςθ. Σε κάκε περίπτωςθ, πάντωσ, το plaintext είναι το μινυμα προσ κρυπτογράφθςθ. Το ciphertext ςυμβολίηεται με C, και είναι επίςθσ δεδομζνα ςε δυαδικι μορφι. Το ciphertext μπορεί να είναι ίδιο ςε μζγεκοσ με το Μ ι και μεγαλφτερο. Μπορεί όμωσ, ςυνδυάηοντασ τθν κρυπτογράφθςθ με τθν ςυμπίεςθ, το C να γίνει μικρότερο από το Μ. Αυτό όμωσ δεν μπορεί θ κρυπτογράφθςθ από μόνθ τθσ να το πετφχει αυτό. Η ςυνάρτθςθ κρυπτογράφθςθσ Ε, εφαρμόηεται ςτο Μ και παράγεται το C. Με μακθματικό ςυμβολιςμό δθλαδι: E(M) = C Κατά τθν αντίςτροφθ διαδικαςία, θ ςυνάρτθςθ αποκρυπτογράφθςθσ D εφαρμόηεται ςτο C και παράγεται το Μ : D(C) = M Εφόςον ο ςτόχοσ τθσ κρυπτογράφθςθσ και ακολοφκωσ τθσ αποκρυπτογράφθςθσ ενόσ μθνφματοσ είναι θ ανάκτθςθ του αρχικοφ plaintext, πρζπει να ιςχφει θ ιςότθτα : D(E(M) = M Πιςτοπούηςη, ακεραιότητα και μη-αποκόρυξη Η κρυπτογραφία, εκτόσ του ότι παρζχει εμπιςτευτικότθτα, παρζχει και άλλεσ υπθρεςίεσ που ςτθρίηονται ςε αυτι όπωσ: Πιςτοποίηςη (Authentication). O παραλιπτθσ ενόσ μθνφματοσ πρζπει να ζχει τθ δυνατότθτα να εξακριβϊςει τθν προζλευςθ του μθνφματοσ. Ζνασ ειςβολζασ, δθλαδι, δεν κα πρζπει να ζχει τθν ικανότθτα να μεταμφιεςτεί ςαν κάποιοσ άλλοσ. Ακεραιότητα (Integrity). O παραλιπτθσ ενόσ μθνφματοσ πρζπει να ζχει τθ δυνατότθτα να επιβεβαιϊνει ότι το μινυμα δεν τροποποιικθκε κατά τθ μετάδοςθ. Ζνασ ειςβολζασ, δθλαδι, δεν κα πρζπει να ζχει τθν ικανότθτα να αντικαταςτιςει ζνα γνιςιο μινυμα με ζνα ψεφτικο. Μη-αποκήρυξη (Non-repudiation). Ο αποςτολζασ ενόσ μθνφματοσ δεν μπορεί να αποκθρφξει ζνα μινυμα που ο ίδιοσ ζςτειλε και να αρνθκεί -ψευδϊσαργότερα ότι αυτόσ ζςτειλε το μινυμα. Αυτζσ είναι οι τρεισ βαςικζσ απαιτιςεισ ςτθν αλλθλεπίδραςθ των υπολογιςτϊν, και είναι αντίςτοιχεσ των διαπροςωπικϊν επαφϊν. Ζτςι, κάποιοσ είναι όντωσ αυτόσ

14 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ που υποςτθρίηει,δθλαδι τα διαπιςτευτιριά του (credentials) πχ ταυτότθτα, άδεια οδιγθςθσ κλπ είναι ζγκυρα, και κατ αναλογία ζνα ζγγραφο που δθλϊνεται ότι προιλκε από κάποιο άτομο, όντωσ προιλκε από το άτομο αυτό.πλα αυτά παρζχονται με τισ πιο πάνω υπθρεςίεσ Αλγόριθμοι και κλειδιϊ Ζνασ αλγόριθμοσ κρυπτογραφίασ (cipher) είναι θ μακθματικι ςυνάρτθςθ που χρθςιμοποιείται για κρυπτογράφθςθ και αποκρυπτογράφθςθ. Γενικά υπάρχουν δφο ςυςχετιηόμενεσ ςυναρτιςεισ: μία για κρυπτογράφθςθ και μία για αποκρυπτογράφθςθ. Εάν θ αςφάλεια ενόσ αλγορίκμου βαςίηεται ςτο να μείνει κρυφόσ ο τρόποσ των διαδικαςιϊν αυτϊν, τότε ονομάηεται περιοριςμζνοσ (restricted) αλγόριθμοσ. Τζτοιοι αλγόρικμοι δεν χρθςιμοποιοφνται πια και ζχουν μόνο ιςτορικό ενδιαφζρον, αφοφ είναι ανεπαρκείσ για τισ ςθμερινζσ απαιτιςεισ. Αυτό γιατί μία μεγάλθ ομάδα χρθςτϊν, θ οποία μπορεί και να μεταβάλλεται ωσ προσ τθ ςφνκεςι τθσ, δεν μπορεί να χρθςιμοποιεί τζτοιουσ αλγορίκμουσ γιατί κάκε φορά που κάποιοσ κα εγκατζλειπε τθν ομάδα, όλοι οι άλλοι κα ζπρεπε να χρθςιμοποιοφν πλζον διαφορετικό αλγόρικμο. Είναι και επιςφαλισ γιατί αν κάποιοσ αποκάλυπτε τυχαία τον μυςτικό αυτό αλγόρικμο όλοι οι υπόλοιποι κα κινδφνευαν και κα ζπρεπε να αλλάξουν τον αλγόρικμο. Επιπλζον, οι περιοριςμζνοι αλγόρικμοι δεν επιτρζπουν ποιοτικό ζλεγχο ι τυποποίθςθ. Κάκε ομάδα χρθςτϊν πρζπει να ζχει τον δικό τθσ μοναδικό αλγόρικμο. Μια τζτοια ομάδα δεν μπορεί να χρθςιμοποιεί προϊόντα software και hardware που δεν είναι φτιαγμζνα κατά παραγγελία και εξειδικευμζνα για αυτι τθν ομάδα, γιατί ζνασ υποκλοπζασ μπορεί να αγοράςει το ίδιο προϊόν και να μάκει τον αλγόρικμο. Αν κανζνα μζλοσ τθσ ομάδασ δεν είναι καλόσ κρυπτογράφοσ δεν κα γνωρίηουν αν ζχουν ζναν αςφαλι αλγόρικμο. Ραρ όλα αυτά τα ςθμαντικά μειονεκτιματα, οι περιοριςμζνοι αλγόρικμοι είναι πολφ δθμοφιλείσ ςε εφαρμογζσ μικρισ αςφάλειασ. Αυτό δικαιολογείται επειδι οι χριςτεσ είτε δεν ςυνειδθτοποιοφν, είτε δεν νοιάηονται για τα προβλιματα αςφάλειασ που υπάρχουν ςτο ςφςτθμά τουσ. Η μοντζρνα κρυπτογραφία επιλφει όλα αυτά τα προβλιματα με το κλειδί (key), το οποίο ςυμβολίηεται με Κ παράγοντασ μοναδικζσ ςυναρτιςεισ κρυπτογράφθςθσ και αποκρυπτογράφθςθσ. Το εφροσ των πικανϊν τιμϊν που μπορεί να πάρει το κλειδί ονομάηεται keyspace. Τόςο θ κρυπτογράφθςθ, όςο και θ αποκρυπτογράφθςθ χρθςιμοποιοφν το κλειδί οπότε οι ςυναρτιςεισ παίρνουν τθν εξισ μορφι: E k (M) = C D k (C) = M Οι ςυναρτιςεισ αυτζσ ζχουν τθν ιδιότθτα: Αυτό φαίνεται και ςτο Σχιμα 1.2: D k (E k (M)) = M

15 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ Key Key Plaintext Ciphertext Encryption Decryption Original Plaintext Σχιμα 1.2: Κρυπτογράφθςθ και αποκρυπτογράφθςθ με κλειδί Μερικοί αλγόρικμοι χρθςιμοποιοφν διαφορετικό κλειδί για κρυπτογράφθςθ (ζςτω Κ 1 ) και διαφορετικό για αποκρυπτογράφθςθ (ζςτω Κ 2 ) οπότε και ιςχφουν τα εξισ: E k1 (M) = C D k2 (C) = M D k2 (E k1 (M)) = M Τα παραπάνω φαίνονται ςτο Σχιμα 1.3: Encry ption Key Decry ption Key Plaintext Ciphertext Encry ption Decry ption Original Plaintext Σχιμα 1.3: Κρυπτογράφθςθ και αποκρυπτογράφθςθ με δφο διαφορετικά κλειδιά Η αςφάλεια των παραπάνω αλγορίκμων βαςίηεται αποκλειςτικά ςτο κλειδί και όχι ςτισ επιμζρουσ λεπτομζρειεσ του αλγορίκμου. Αυτό ςθμαίνει ότι ο αλγόρικμοσ μπορεί να δθμοςιοποιθκεί και να αναλυκεί, οπότε και προϊόντα που χρθςιμοποιοφν τον αλγόρικμο μποροφν να παραχκοφν μαηικά αφοφ μπορεί να τυποποιθκεί. Συμπεραςματικά, δεν υπάρχει πρόβλθμα αν κάποιοσ υποκλοπζασ γνωρίηει τον αλγόρικμο, γιατί αν δεν γνωρίηει το ειδικό κλειδί, δεν μπορεί να διαβάςει τα απεςταλμζνα μθνφματα. Κρυπτοςφςτημα (cryptosystem) είναι ζνασ αλγόρικμοσ μαηί με όλα τα πικανά plaintexts, ciphertexts και κλειδιά

16 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ Αλγόριθμοι κρυπτογραφύασ Υπάρχουν δφο κατθγορίεσ αλγορίκμων κρυπτογραφίασ που βαςίηονται ςε κλειδί: οι ςυμμετρικοί αλγόρικμοι και οι αλγόρικμοι δθμοςίου κλειδιοφ Συμμετρικοί αλγόριθμοι Συμμετρικοί αλγόριθμοι (symmetric algorithms) είναι οι αλγόρικμοι ςτουσ οποίουσ το κλειδί κρυπτογράφθςθσ μπορεί να υπολογιςτεί από το αντίςτοιχο αποκρυπτογράφθςθσ και αντιςτρόφωσ. Στισ περιςςότερεσ περιπτϊςεισ ςυμμετρικϊν αλγορίκμων το κλειδί κρυπτογράφθςθσ είναι ίδιο με το κλειδί αποκρυπτογράφθςθσ. Οι αλγόρικμοι αυτοί ονομάηονται και αλγόρικμοι μυςτικοφ κλειδιοφ ι ενόσ/μονοφ κλειδιοφ. Σε αυτοφσ ο αποςτολζασ κι ο παραλιπτθσ ςυμφωνοφν ςε ζνα κλειδί πριν ξεκινιςουν να επικοινωνοφν με αςφάλεια. Η αςφάλεια ενόσ ςυμμετρικοφ αλγορίκμου βαςίηεται ςτο κλειδί και θ αποκάλυψι του ςθμαίνει ότι οποιοςδιποτε μπορεί να κρυπτογραφεί και να αποκρυπτογραφεί μθνφματα. Εφόςον θ επικοινωνία πρζπει να παραμείνει μυςτικι, πρζπει να κρατείται μυςτικό το κλειδί. Η κρυπτογράφθςθ και αποκρυπτογράφθςθ με ςυμμετρικό αλγόρικμο ςυμβολίηεται ωσ εξισ: E k (M) = C D k (C) = M Οι ςυμμετρικοί αλγόρικμοι μποροφν να χωριςτοφν ςε δφο κατθγορίεσ. Κάποιοι ενεργοφν ςτο plaintext κατά 1 bit (ι 1 byte) κάκε φορά και ονομάηονται stream algorithms ι stream ciphers. Άλλοι ενεργοφν ςτο plaintext κατά ομάδεσ bit κάκε φορά, οι οποίεσ ονομάηονται blocks. Αυτοί είναι οι block algorithms ι block ciphers. Στουσ ςφγχρονουσ υπολογιςτικοφσ αλγορίκμουσ ζνα τυπικό μζγεκοσ block είναι 64 bits, το οποίο είναι αρκετά μεγάλο για να παρεμποδίηει πικανι ανάλυςθ από υποκλοπείσ, αλλά και αρκετά μικρό για να είναι εφχρθςτο και αποδοτικό όταν χρθςιμοποιείται ςε ςφγχρονα ςυςτιματα Αλγόριθμοι δημοςίου κλειδιού Οι αλγόριθμοι δημοςίου κλειδιοφ (public-key algorithms) ι αλλιϊσ αςφμμετροι ςχεδιάηονται ζτςι ϊςτε το κλειδί που χρθςιμοποιείται για κρυπτογράφθςθ να είναι διαφορετικό από αυτό τθσ αποκρυπτογράφθςθσ. Επιλπζον, το κλειδί αποκρυπτογράφθςθσ δεν μπορεί (τουλάχιςτον ςε εφλογο χρονικό διάςτθμα) να υπολογιςκεί από το κλειδί κρυπτογράφθςθσ. Ονομάηονται και δθμοςίου κλειδιοφ γιατί το κλειδί κρυπτογράφθςθσ δεν παραμζνει μυςτικό, αλλά δθμοςιοποιείται. Οποιοςδιποτε δθλαδι μπορεί να κρυπτογραφιςει ζνα μινυμα, αλλά μόνο ο κάτοχοσ του αντίςτοιχου κλειδιοφ αποκρυπτογράφθςθσ μπορεί να αποκρυπτογραφιςει το μινυμα. Σ αυτά τα ςυςτιματα το κλειδί κρυπτογράφθςθσ ονομάηεται δημόςιο κλειδί (public key) και το κλειδί αποκρυπτογράφθςθσ ιδιωτικό κλειδί (private key). Η κρυπτογράφθςθ χρθςιμοποιϊντασ το δθμόςιο κλειδί και θ αποκρυπτογράφθςθ με το αντίςτοιχο ιδιωτικό κλειδί (το οποίο είναι διαφορετικό) ςυμβολίηεται ωσ εξισ:

17 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ E k (M) = C D k (C) = M Υπάρχει, όμωσ, και θ αντίςτροφθ χριςθ των κλειδιϊν όπου τα μθνφματα κρυπτογραφοφνται με το ιδιωτικό κλειδί και αποκρυπτογραφοφνται με το δθμόςιο κλειδί. Αυτι χρθςιμοποιείται ςτισ ψθφιακζσ υπογραφζσ (digital signatures) Κρυπτανϊλυςη Ο κφριοσ ςτόχοσ τθσ κρυπτογραφίασ είναι να μείνει μυςτικό το plaintext (ι το κλειδί ι και τα δφο) από τουσ υποκλοπείσ. Οι υποκλοπείσ πάντα υποκζτουμε ότι ζχουν πλιρθ πρόςβαςθ ςτθν επικοινωνία μεταξφ αποςτολζα και παραλιπτθ. Κρυπτανάλυςη είναι θ επιςτιμθ τθσ ανάκτθςθσ του plaintext ενόσ μθνφματοσ, χωρίσ να υπάρχει πρόςβαςθ ςτο ίδιο το κλειδί. Μια επιτυχθμζνθ κρυπτανάλυςθ μπορεί να ανακτιςει το plaintext ι το κλειδί. Μπορεί επίςθσ να ανακαλφψει πικανζσ αδυναμίεσ ενόσ κρυπτοςυςτιματοσ που πικανόν να οδθγιςουν ςτα προθγοφμενα αποτελζςματα. Μία επιχειροφμενθ κρυπτανάλυςθ ονομάηεται και επίθεςη (attack). Υπάρχουν τζςςερισ διαφορετικοί τφποι κρυπταναλυτικισ επίκεςθσ. Σε κακζναν από αυτοφσ υποτίκεται ότι ο κρυπταναλυτισ/υποκλοπζασ ζχει πλιρθ γνϊςθ του αλγορίκμου κρυπτογραφίασ που χρθςιμοποιείται Επίθεςη μόνο ςτο ciphertext (Ciphertext -only attack) Ο υποκλοπζασ ζχει το ciphertext πολλϊν διαφορετικϊν μθνυμάτων, τα οποία ζχουν κρυπτογραφθκεί με τον ίδιο αλγόρικμο. Στόχοσ του είναι να ανακτιςει τα plaintext όςο δυνατόν περιςςότερων μθνυμάτων ι ακόμθ και να εξάγει το κλειδί που χρθςιμοποιείται για τθν κρυπτογράφθςθ των μθνυμάτων, ζτςι ϊςτε να μπορεί να αποκρυπτογραφεί άλλα μθνφματα με τα ίδια κλειδιά. Γνωςτά: C 1 = E k (P 1 ), C 2 = E k (P 2 ), C i = E k (P i ) Εξαγόμενα: είτε P 1, P 2,... P i, k, είτε ζνασ αλγόρικμοσ που να ςυνάγει το P i+1 από το C i+1 = E k (P i+1 ) Επίθεςη ςε γνωςτό plaintext (Known-plaintext attack) Ο υποκλοπζασ ζχει πρόςβαςθ όχι μόνο ςτο ciphertext διαφόρων μθνυμάτων, αλλά και ςτο plaintext αυτϊν των μθνυμάτων. Στόχοσ του είναι να εξάγει το κλειδί (ι τα κλειδιά) που χρθςιμοποιείται ςτθν κρυπτογράφθςθ των μθνυμάτων ι ζναν αλγόρικμο για να αποκρυπτογραφιςει νζα μθνφματα που κρυπτογραφοφνται με το ίδιο κλειδί. Γνωςτά : P 1,C 1 = E k (P 1 ), P 2, C 2 = E k (P 2 ), P i,c i = E k (P i ) Εξαγόμενα : είτε το k, είτε ζνασ αλγόρικμοσ που να ςυνάγει το P i+1 από το C i+1 = E k (P i+1 )

18 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ Επίθεςη ςε επιλεγόμενο plaintext (Chosen-plaintext attack) Ο υποκλοπζασ ζχει πρόςβαςθ ςτο ciphertext και ςτο αντίςτοιχο plaintext για διάφορα μθνφματα αλλά και μπορεί να επιλζγει το plaintext που κρυπτογραφείται. Αυτι θ επίκεςθ είναι πολφ πιο ιςχυρι ςε ςχζςθ με μια επίκεςθ ςε γνωςτό plaintext, γιατί ο υποκλοπζασ ζχει τθ δυνατότθτα να επιλζξει να κρυπτογραφιςει ςυγκεκριμζνα plaintext blocks, τα οποία μπορεί να αποδίδουν περιςςότερεσ πλθροφορίεσ ςχετικά με το κλειδί. Στόχοσ του είναι και πάλι να εξάγει το κλειδί (ι τα κλειδιά) που χρθςιμοποιείται ςτθν κρυπτογράφθςθ των μθνυμάτων ι ζναν αλγόρικμο για να αποκρυπτογραφιςει νζα μθνφματα που κρυπτογραφοφνται με το ίδιο κλειδί. Γνωςτά: P 1,C 1 = E k (P 1 ), P 2, C 2 = E k (P 2 ), P i,c i = E k (P i ) όπου ο υποκλοπζασ μπορεί να επιλζξει P 1, P 2, P i Εξαγόμενα: είτε το k, είτε ζνασ αλγόρικμοσ που να ςυνάγει το P i+1 από το C i+1 = E k (P i+1 ) Προςαρμόςιμη επίθεςη ςε επιλεγόμενο plaintext (Adaptivechosen-plaintext attack) Είναι μια ειδικι περίπτωςθ επίκεςθσ ςε επιλεγόμενο plaintext. Ο υποκλοπζασ όχι μόνο επιλζγει το plaintext που κρυπτογραφείται, αλλά μπορεί και να τροποποιιςει τθν επιλογι του βαςιηόμενοσ ςε αποτελζςματα προθγοφμενθσ κρυπτογράφθςθσ. Σε μια επίκεςθ ςε επιλεγόμενο plaintext, ο υποκλοπζασ μπορεί απλά να ζχει τθ δυνατότθτα να επιλζξει ζνα μεγάλο block του plaintext που πρόκειται να κρυπτογραφθκεί. Ενϊ ςε μια προςαρμόςιμθ επίκεςθ ςε επιλεγόμενο plaintext μπορεί να επιλζξει ζνα μικρότερο block του plaintext και ςτθ ςυνζχεια κάποιο άλλο block βαςιηόμενοσ ςτα αποτελζςματα του πρϊτου κοκ Επίθεςη επιλεγόμενου ciphertext (Chosen-ciphertext attack) O υποκλοπζασ μπορεί να επιλζξει διαφορετικά ciphertexts που πρόκειται να αποκρυπτογραφθκοφν κι ζχει πρόςβαςθ ςτο αποκρυπτογραφθμζνο plaintext. Στόχοσ του είναι να εξάγει το κλειδί. Γνωςτά: C 1, P 1 = D k (C 1 ), C 2, P 2 = D k (C 2 ), C i, P i = D k (C i ) Εξαγόμενο: k Η επίκεςθ αυτι είναι κυρίωσ εφαρμόςιμθ ςε αλγορίκμουσ δθμοςίου κλειδιοφ Επίθεςη επιλεγόμενου κλειδιού (Chosen-key attack). Η επίκεςθ αυτι δεν ςθμαίνει ότι μπορεί ο υποκλοπζασ να επιλζξει κλειδί. Σθμαίνει ότι γνωρίηει κάπωσ τθ ςχζςθ που υπάρχει μεταξφ διαφορετικϊν κλειδιϊν Rubber-hose cryptanalysis. Ο υποκλοπζασ απειλεί, εκβιάηει ι βαςανίηει κάποιον, μζχρισ ότου αποςπάςει το κλειδί. Συχνά, θ δωροδοκία αναφζρεται ςαν επίθεςη αγοράσ κλειδιοφ (purchase-key attack). Πλεσ αυτζσ είναι πολφ ιςχυρζσ επικζςεισ και ςυνικωσ είναι ο καλφτεροσ τρόποσ «ςπαςίματοσ» ενόσ αλγορίκμου

19 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ Αςφϊλεια των αλγορύθμων Διαφορετικοί αλγόρικμοι προςφζρουν και διαφορετικά επίπεδα αςφάλειασ, ανάλογα βζβαια με το πόςο δφςκολα αυτοί παραβιάηονται. Εάν το κόςτοσ που απαιτείται για να «ςπάςει» ζνασ αλγόρικμοσ είναι μεγαλφτερο από τθν αξία των κρυπτογραφθμζνων δεδομζνων ι εάν ο απαιτοφμενοσ χρόνοσ είναι μεγαλφτεροσ από το χρονικό διάςτθμα που τα κρυπτογραφθμζνα δεδομζνα πρζπει να παραμείνουν μυςτικά, τότε ο αλγόρικμοσ κεωρείται και είναι πικανότατα αςφαλισ. Είναι ςθμαντικό το ότι θ αξία των δεδομζνων κα πρζπει πάντοτε να παραμζνει μικρότερθ από το κόςτοσ «ςπαςίματοσ» τθσ αςφάλειασ που τα προςτατεφει. Οι διάφορεσ κατθγορίεσ «ςπαςίματοσ» ενόσ αλγορίκμου, ςε φκίνουςα ςειρά όςον αφορά τθ δριμφτθτά τουσ, είναι: 1. Ολοκλθρωτικό «ςπάςιμο» του αλγορίκμου (Total break) Ο υποκλοπζασ βρίςκει το κλειδί Κ και μπορεί να αποκρυπτογραφιςει το μινυμα, D k (C) = P 2. Γενικι ανίχνευςθ (Global deduction) Ο υποκλοπζασ βρίςκει ζναν εναλλακτικό αλγόρικμο Α, ιςοδφναμο με τον D k (C), χωρίσ να γνωρίηει το Κ. Οπότε μπορεί να αποκρυπτογραφιςει το μινυμα χωρίσ να ζχει το κλειδί. 3. Τοπικι ανίχνευςθ (Local deduction) Ο υποκλοπζασ βρίςκει το plaintext ενόσ «παρεμποδιηόμενου» ciphertext. 4. Ανίχνευςθ πλθροφορίασ (Information deduction) Ο υποκλοπζασ αποςπά κάποια πλθροφορία ςχετικά με το κλειδί ι το plaintext, όπωσ για παράδειγμα μερικά bits του κλειδιοφ ι κάποια πλθροφορία ςχετικά με τθ δομι του plaintext. Ζνασ αλγόρικμοσ είναι απόλυτα αςφαλήσ αν δεν υπάρχει αρκετι πλθροφορία για να ανακτθκεί το plaintext, ανεξαρτιτωσ του πόςο τμιμα του ciphertext ζχει ο υποκλοπζασ. Μόνο ζνα one-time pad είναι αδφνατο να «ςπάςει» ανεξάρτθτα από τα μζςα που μπορεί να ζχει ο υποκλοπζασ. Πλα τα άλλα κρυπτοςυςτιματα μποροφν να «ςπάςουν» με μια επίκεςθ ciphertext-only, ςτθν οποία δοκιμάηονται όλα τα πικανά κλειδιά και ελζγχεται το plaintext που προκφπτει (brute-force attack). Η κρυπτογραφία αφορά ςυςτιματα που υπολογιςτικϊσ είναι αδφνατο να «ςπάςουν» μζςα ςε εφλογο χρονικό διάςτθμα. Ζνασ αλγόρικμοσ κεωρείται υπολογιςτικώσ αςφαλήσ εφόςον είναι ανζφικτο να «ςπάςει» με τα διακζςιμα μζςα (είτε τα ιδθ υπάρχοντα, είτε τα μελλοντικά). Η πολυπλοκότθτα μιασ επίκεςθσ μετράται με διάφορουσ τρόπουσ : 1. Πολυπλοκότθτα δεδομζνων (Data complexity) Το ποςό των δεδομζνων που απαιτείται ςαν είςοδοσ κατά τθν επίκεςθ

20 ΚΕΦΑΛΑΙΟ 1 ΚΥΡΤΟΓΑΦΙΑ 2. Πολυπλοκότθτα διαδικαςίασ (Processing complexity) Ο χρόνοσ που απαιτείται για τθν εκτζλεςθ μιασ επίκεςθσ. 3. Απαιτιςεισ μνιμθσ (Storage requirements) Το ποςό μνιμθσ που απαιτείται για τθν επίκεςθ. Σφμφωνα με μία εμπειρικι μζκοδο ςαν πολυπλοκότθτα μιασ επίκεςθσ κεωρείται ο μικρότεροσ από τουσ τρεισ παραπάνω παράγοντεσ. Αν ζνασ αλγόρικμοσ ζχει πολυπλοκότθτα διαδικαςίασ 2 128, τότε απαιτοφνται πράξεισ (οι οποίεσ μπορεί να είναι και ιδιαίτερα χρονοβόρεσ) για να «ςπάςουμε» τον αλγόρικμο. Αν υποκζςουμε ότι ζχουμε αρκετι υπολογιςτικι ταχφτθτα, ϊςτε να εκτελοφμε ζνα εκατομμφριο πράξεισ το δευτερόλεπτο, και αν ςυνδζςουμε παράλλθλα ζνα εκατομμφριο επεξεργαςτζσ, τότε κα χρειαςτοφμε χρόνια για να αποκαλυφκεί το κλειδί, δθλαδι ζνα διςεκατομμφριο φορζσ τθν θλικία του ςφμπαντοσ! Γνωςτού αλγόριθμοι κρυπτογραφύασ Μερικοί από τουσ πιο γνωςτοφσ αλγόρικμουσ κρυπτογραφίασ είναι οι εξισ: DES (Data Encryption Standard): Είναι ο πιο δθμοφιλισ ςυμμετρικόσ αλγόρικμοσ, ο οποίοσ και αποτελεί παγκόςμιο πρότυπο. Χρθςιμοποιεί το ίδιο κλειδί τόςο για τθν κρυπτογράφθςθ, όςο και για τθν αποκρυπτογράφθςθ. RSA: Ριρε το όνομά του από τουσ εφευρζτεσ του (Rivest-Shamir- Adleman). Είναι ο πιο δθμοφιλισ αλγόρικμοσ δθμόςιου κλειδιοφ. Χρθςιμοποιείται για τθν κρυπτογράφθςθ δεδομζνων όςο και για ψθφιακζσ υπογραφζσ. DSA (Digital Signature Algorithm): Είναι αλγόρικμοσ δθμοςίου κλειδιοφ, ο οποίοσ χρθςιμοποιείται μόνο για ψθφιακζσ υπογραφζσ και όχι για κρυπτογράφθςθ δεδομζνων

21 ΚΕΥΑΛΑΙΟ 2 ΜΟΝΟΔΡΟΜΕ ΤΝΑΡΣΗΕΙ ΚΑΙ ΕΥΑΡΜΟΓΕ 2.1 ΜΟΝΟΔΡΟΜΕ ΤΝΑΡΣΗΕΙ Η ιδζα των μονόδρομων ςυναρτιςεων (one-way functions) είναι μείηονοσ ςθμαςίασ ςτθν κρυπτογραφία με δθμόςιο κλειδί. Στισ μονόδρομεσ ςυναρτιςειs είναι εφκολο να υπολογιςτεί θ ζξοδόσ τουσ για μία ςυγκεκριμζνθ είςοδο αλλά πολφ δφςκολο από τθν ζξοδο να προκφψει θ αντίςτοιχθ είςοδοσ. Αυτό ςθμαίνει ότι με δεδομζνο το x εφκολα μπορεί να βρεκεί το f(x) αλλά είναι δφςκολο με δεδομζνο το f(x) βροφμε το x. Πταν λζμε δφςκολο εννοοφμε ότι ακόμα και αν όλοι οι υπολογιςτζσ του κόςμου προςπακοφςαν να βρουν το x με βάςθ το f(x) αυτό κα ζπαιρνε εκατομμφρια χρόνια. Αυτό βζβαια ιςχφει κεωρθτικά και δε μπορεί να αποδειχτεί ότι υπάρχουν τζτοιεσ ςυναρτιςεισ. Ραρόλα αυτά υπάρχουν ςυναρτιςεισ που μοιάηουν να είναι μονόδρομεσ για τισ οποίεσ εφκολα υπολογίηεται θ ζξοδοσ για μια ςυγκεκριμζνθ είςοδο και πολφ δφςκολα γίνεται το αντίςτροφο. Οι μονόδρομεσ ςυναρτιςειs δεν μποροφν να χρθςιμοποιθκοφν αυτοφςιεσ για κωδικοποίθςθ (encryption) αφοφ κανείσ δεν μπορεί να κάνει τθν αποκωδικοποίθςθ (decryption) λόγω των ιδιοτιτων που μόλισ αναφζραμε για τισ ςυναρτιςειs αυτζσ. Οι «μονόδρομεσ ςυναρτιςειs με μυςτικι πόρτα» (trap door one-way functions) είναι ειδικισ μορφισ μονόδρομεσ ςυναρτιςειs ςτισ οποίεσ ιςχφει ότι και ςτισ κανονικζσ

22 ΚΕΦΑΛΑΙΟ 2 ΜΟΝΟΔΟΜΕΣ ΣΥΝΑΤΗΣΕΙΣ ΚΑΙ ΕΦΑΜΟΓΕΣ μονόδρομεσ ςυναρτιςειs αλλά επιπλζον ιςχφει ότι αν γνωρίηουμε μία μυςτικι πλθροφορία y για αυτζσ, τότε με βάςθ τα y και f(x) είναι εφκολο να υπολογίςουμε το x. 2.2 ΜΟΝΟΔΡΟΜΕ HASH ΤΝΑΡΣΗΕΙ Οι μονόδρομεσ hash ςυναρτιςειs ςυναντϊνται ςτθ βιβλιογραφία με πολλά ονόματα, όπωσ ςυνάρτθςθ ςυμπίεςθσ (compression function), αποτφπωμα (fingerprint), message digest, ζλεγχοσ ακεραιότθτασ μθνφματοσ (Message Integrity Check MIC) και πολλά άλλα. Η hash ςυνάρτθςθ είναι μία ςυνάρτθςθ που ζχει ςαν είςοδο μία μεταβλθτοφ μικουσ ςυμβολοςειρά θ οποία αποτελεί το μινυμα ειςόδου (string το οποίο λζγεται pre-image) και το μετατρζπει ςε μία κακοριςμζνου μικουσ ςυμβολοςειρά εξόδου (λζγεται hash τιμι ι message digest κοκ) το οποίο ζχει γενικά μικρότερο μζγεκοσ. Οι μονόδρομεσ hash ςυναρτιςειs είναι hash ςυναρτιςειs για τισ οποίεσ εφκολα μπορεί να υπολογιςτεί θ τιμι εξόδου από τθν τιμι ειςόδου, αλλά είναι δφςκολο το αντίςτροφο, δθλαδι να βροφμε τθν τιμι ειςόδου θ οποία αντιςτοιχεί ςε μία ςυγκεκριμζνθ hash τιμι εξόδου. Μία καλι μονόδρομθ hash ςυνάρτθςθ είναι επίςθσ ελεφκερθ από ςυγκροφςεισ (collision free), που ςθμαίνει ότι είναι δφςκολο να βροφμε δφο μθνφματα ειςόδου (pre-images) οι οποίεσ κα ζχουν τθν ίδια hash τιμι εξόδου. Ραρζχουν με τον τρόπο αυτό μία μοναδικι ςχζςθ μεταξφ τθσ ειςόδου και τθσ εξόδου αντικακιςτϊντασ ζτςι τθν αυκεντικότθτα μίασ μεγάλθσ ςε μζγεκοσ πλθροφορίασ (δθλαδι του μθνφματοσ ειςόδου) με τθν αυκεντικότθτα ενόσ αρκετά μικρότερου ςε μζγεκοσ μθνφματοσ εξόδου. Μία μονόδρομθ hash ςυνάρτθςθ, H(M), ενεργεί ςε ζνα οποιουδιποτε μικουσ μινυμα M και επιςτρζφει μία ςτακεροφ-μικουσ hash τιμι, h. h = H(M) Ρολλζσ ςυναρτιςεισ μποροφν να πάρουν μία οποιουδιποτε μικουσ είςοδο και να επιςτρζψουν μία ζξοδο ςτακεροφ μικουσ. Οι μονόδρομεσ hash ςυναρτιςειs πρζπει να ζχουν επιπρόςκετα όμωσ χαρακτθριςτικά τα οποία τισ κάνουν μονόδρομθσ λειτουργίασ. Αυτά είναι: Είναι εφκολο να υπολογιςτεί το h όταν δίνεται το M. Πταν δίνεται το h είναι δφςκολο να υπολογιςτεί το M ϊςτε να ιςχφει H(M) = h. Πταν δίνεται το M είναι δφςκολο να βρεκεί ζνα άλλο μινυμα, M, τζτοιο ϊςτε να ιςχφει H(M) = H(M ) (1). Οι hash ςυναρτιςειs είναι δθμόςιεσ, δθλαδι δεν υπάρχει μυςτικότθτα ςτον τρόπο λειτουργίασ τουσ. Η αςφάλεια μιασ μονόδρομθσ hash ςυνάρτθςθs οφείλεται ςτθν μονοδρομικότθτα τθσ (one-wayness)

23 ΚΕΦΑΛΑΙΟ 2 ΜΟΝΟΔΟΜΕΣ ΣΥΝΑΤΗΣΕΙΣ ΚΑΙ ΕΦΑΜΟΓΕΣ Η ζξοδοσ των hash ςυναρτιςεων δεν εξαρτάται από τθν είςοδο με κανζνα διακριτό τρόπο και μία αλλαγι ςε ζνα μόνο bit του μθνφματοσ ειςόδου (pre-image ) κατά μζςο όρο αλλάηει τα μιςά bit τθσ hash τιμισ εξόδου. Με δεδομζνθ μία hash τιμι είναι υπολογιςτικά ανζφικτο να βροφμε ζνα μινυμα ειςόδου (pre-image)το οποίο κα ζδινε τθν ίδια hash τιμι κάτι που αποτελεί μία βαςικι ιδιότθτα των μονόδρομων hash ςυναρτιςεων. Μία κατθγορία κρυπτογραφικϊν αλγορίκμων κατά τθν εκτζλεςθ τουσ χρθςιμοποιοφν μια μυςτικι πλθροφορία, θ οποία λζγεται κλειδί, ζτςι ϊςτε μόνο εξουςιοδοτθμζνοι χριςτεσ οι οποίοι γνωρίηουν το κλειδί να μποροφν να εφαρμόςουν το κρυπτογραφικό αλγόρικμο ςε ζνα ςυγκεκριμζνο μινυμα ειςόδου ζτςι ϊςτε να βρουν το μινυμα εξόδου (2). Με τισ μονόδρομεσ hash ςυναρτιςειs χωρίσ κλειδί οποιοςδιποτε μπορεί να επαλθκεφςει μία hash τιμι που του ςτζλνουμε αφοφ δεν υπάρχει μυςτικι πλθροφορία, το κλειδί εν προκειμζνω, και όπωσ είπαμε δεν υπάρχει κάποια μυςτικότθτα ςτον τρόπο με τον οποίο δουλεφουν οι μονόδρομεσ hash ςυναρτιςεισ. Μποροφμε να ςκεφτοφμε τα παραπάνω ςαν ζνα τρόπο για να παίρνουμε τθν hash τιμι εξόδου (message digest) ενόσ αρχείου. Εάν δθλαδι κζλουμε να επιβεβαιϊςουμε ότι κάποιοσ ζχει ζνα ςυγκεκριμζνο αρχείο, το οποίο ζχουμε και εμείσ, αλλά δεν επικυμοφμε να μασ ςτείλει το αρχείο αυτό, τότε απλά ηθτάμε να μασ ςτείλει τθ hash τιμι του. Εάν μασ αποςταλεί θ ςωςτι hash τιμι, τότε είναι ςίγουρο ότι το αρχείο υπάρχει. Η διαδικαςία αυτι είναι ιδιαίτερα ςθμαντικι ςε οικονομικζσ ςυναλλαγζσ, όπου φυςικά δεν κζλουμε μία οφειλι μίασ κάποιασ αξίασ να μπορεί να μετατραπεί ςε οφειλι μίασ άλλθσ κάπου ςτο δίκτυο! Συνικωσ λοιπόν χρθςιμοποιείται μία μονόδρομθ hash ςυνάρτθςθ χωρίσ κλειδί, για να μπορεί οποιοςδιποτε να επιβεβαιϊςει τθ hash τιμι. Αντίκετα, εάν κζλουμε μόνο ζνασ ςυγκεκριμζνοσ παραλιπτθσ να είναι ικανόσ να επαλθκεφςει το αποςτελλόμενο hash, τότε χρθςιμοποιοφμε κϊδικεσ πιςτοποίθςθσ μθνυμάτων (MAC S) οι οποίοι είναι μονόδρομεσ hash ςυναρτιςειs μαηί με τθ χριςθ ενόσ κρυφοφ κλειδιοφ (secret key). Ζτςι πλζον θ hash τιμι προκφπτει ςαν ςυνάρτθςθ του μθνφματοσ ειςόδου (pre-image) και του κρυφοφ κλειδιοφ. Ιςχφουν τα ίδια με αυτά που αναφζραμε για τισ μονόδρομεσ hash ςυναρτιςειs αλλά πλζον μόνο κάποιοσ ο οποίοσ ζχει το κλειδί μπορεί να επαλθκεφςει τθ hash τιμι. Μποροφμε να δθμιουργιςουμε ζνα μθχανιςμό MAC είτε χρθςιμοποιϊντασ μία hash ςυνάρτθςθ είτε ζναν αλγόρικμο κρυπτογράφθςθσ τμιματοσ (block). Οι είςοδοι ςε μία μονόδρομθ ςυνάρτθςθ είναι ζνα τμιμα (block) του μθνφματοσ ειςόδου και θ ζξοδοσ των προθγοφμενων τμθμάτων (blocks) (Σχιμα 2.1). Η hash τιμι δθλαδι του M i τμιματοσ (block) είναι: h i = f(m i, h i-1 )

24 ΚΕΦΑΛΑΙΟ 2 ΜΟΝΟΔΟΜΕΣ ΣΥΝΑΤΗΣΕΙΣ ΚΑΙ ΕΦΑΜΟΓΕΣ M i h i-1 Μονόδρομη ζσνάρηηζη h i Σχιμα 2.1: Μονόδρομθ Συνάρτθςθ Αυτι θ hash τιμι μαηί με το επόμενο τμιμα (block) του μθνφματοσ γίνονται οι επόμενοι είςοδοι ςτθν μονόδρομθ ςυνάρτθςθ. Εντζλει, θ hash τιμι ολόκλθρου του μθνφματοσ είναι θ hash τιμι του τελευταίου τμιματοσ (block). Μία ακόμθ ιδιότθτα που πρζπει να υπάρχει είναι το αρχικό μινυμα να περιζχει κάποια δυαδικι αναπαράςταςθ του μικουσ ολόκλθρου του μθνφματοσ. Ζτςι ξεπερνιζται ζνα πικανό πρόβλθμα αςφάλειασ που προκφπτει επειδι μθνφματα με διαφορετικό μικοσ είναι πικανόν να ζχουν τθν ίδια hash τιμι. Η τεχνικι αυτι ονομάηεται MD-strengthening. 2.3 ΧΗΥΙΑΚΕ ΤΠΟΓΡΑΥΕ Οι ψθφιακζσ υπογραφζσ ζχουν τθν ίδια ςθμαςία και χριςθ με τισ κανονικζσ υπογραφζσ, που ςθμαίνει ότι: 1. Η υπογραφι πρζπει να είναι αυκεντικι: Η υπογραφι πείκει τον παραλιπτθ του κειμζνου ότι ο αποςτολζασ εν γνϊςει του υπζγραψε το κείμενο. 2. Η υπογραφι δεν πλαςτογραφείται: Η υπογραφι είναι απόδειξθ ότι όντωσ υπζγραψε ο αναφερόμενοσ ωσ υπογράφων και κανείσ άλλοσ. 3. Η υπογραφι δεν είναι επαναχρθςιμοποιιςιμθ: Η υπογραφι είναι μζροσ ενόσ ςυγκεκριμζνου κειμζνου και δεν μπορεί να μεταφερκεί για χριςθ ςε κάποιο άλλο κείμενο. 4. Το υπογεγραμμζνο κείμενο είναι μθ τροποποιιςιμο: Αφοφ το κείμενο υπογραφεί δεν μπορεί να τροποποιθκεί. 5. Η υπογραφι είναι μθ απαρνοφμενθ: Ο υπογράφων δε μπορεί αργότερα να ιςχυριςτεί ότι δεν υπζγραψε ο ίδιοσ. Στθν πραγματικότθτα τίποτα από τα πιο πάνω δεν ιςχφουν ακριβϊσ αλλά παρόλα τα προβλιματα αποδεχόμαςτε ότι αυτά ιςχφουν λόγω τθσ μεγάλθσ δυςκολίασ που υπάρχει ςτο να παραβιαςτεί κάποια από τισ πιο πάνω αρχζσ. Ρροφανϊσ αυτό είναι δφςκολο να εφαρμοςτεί κατευκείαν ςτουσ υπολογιςτζσ αφοφ μία υπογραφι μπορεί να γίνει αποκοπι και επικόλλθςθ ι να τροποποιθκεί το κείμενο χωρίσ να υπάρχει κάποια απόδειξθ για αυτι τθν τροποποίθςθ

25 ΚΕΦΑΛΑΙΟ 2 ΜΟΝΟΔΟΜΕΣ ΣΥΝΑΤΗΣΕΙΣ ΚΑΙ ΕΦΑΜΟΓΕΣ Για αυτό το λόγο οι ψθφιακζσ υπογραφζσ είναι διαφορετικισ μορφισ από ότι οι κανονικζσ και ζνασ τρόποσ πρακτικισ υλοποίθςισ τουσ είναι οι αλγόρικμοι δθμοςίου κλειδιοφ (κεφάλαιο ). Αυτοί όμωσ οι αλγόρικμοι είναι μθ αποδοτικοί όταν εφαρμόηονται ςε μεγάλα κείμενα. Ζτςι, για να γλιτϊςουμε χρόνο οι ψθφιακζσ υπογραφζσ υλοποιοφνται με μονόδρομεσ hash ςυναρτιςειs όπου αντί να υπογράψουμε ολόκλθρο το κείμενο υπογράφουμε τθν hash τιμι του κειμζνου. Σε αυτιν τθν περίπτωςθ τόςο θ μονόδρομθ hash ςυνάρτθςθ όςο και ο αλγόρικμοσ ψθφιακισ υπογραφισ ζχουν προςυμφωνθκεί και αυτό λειτουργεί ωσ εξισ: 1. Ο αποςτολζασ παράγει τθν μονόδρομθ hash τιμι του κειμζνου. 2. Ο αποςτολζασ κρυπτογραφεί τθ hash τιμι με το ιδιωτικό κλειδί και ζτςι υπογράφει το κείμενο. 3. Ο αποςτολζασ ςτζλνει το κείμενο και τθν υπογεγραμμζνθ hash τιμι ςτον παραλιπτθ. 4. Ο παραλιπτθσ παράγει τθν μονόδρομθ hash τιμι του αρχείου που του ζςτειλε ο αποςτολζασ. Μετά χρθςιμοποιϊντασ τον αλγόρικμο ψθφιακισ υπογραφισ αποκρυπτογραφεί τθν hash τιμι που ζλαβε χρθςιμοποιϊντασ το δθμόςιο κλειδί του αποςτολζα. Εάν θ υπογεγραμμζνθ hash τιμι ταιριάηει με τθ hash τιμι που δθμιοφργθςε ο παραλιπτθσ, τότε θ υπογραφι είναι ζγκυρθ. Η ταχφτθτα αυξάνει κατακόρυφα και αφοφ θ πικανότθτα δφο διαφορετικά κείμενα να ζχουν τθν ίδια 160 bit hash τιμι είναι μία ςτισ αυτό μασ δίνει το επικυμθτό επίπεδο αςφάλειασ ωσ προσ αυτά τα οποία επικυρϊνει θ ψθφιακι υπογραφι. Ζτςι ο κακζνασ μπορεί με αςφάλεια να αντιςτοιχίςει τθν υπογραφι τθσ hash τιμισ με τθν υπογραφι του κειμζνου. Εάν δε χρθςιμοποιοφςαμε μονόδρομθ hash ςυνάρτθςθ τότε κα ιταν εφκολο να δθμιουργιςουμε πολλά κείμενα τα οποία κα είχαν τθν ίδια hash τιμι και ζτςι κάποιοσ που κα υπζγραφε ζνα κείμενο κα μποροφςε να εξαπατθκεί «βλζποντασ» τθν υπογραφι του ςε κείμενα τα οποία ποτζ δεν υπζγραψε. Οι ψθφιακζσ υπογραφζσ με χριςθ μονόδρομων hash ςυναρτιςεων ζχουν και άλλα πλεονεκτιματα. Αρχικά, θ υπογραφι μπορεί να κρατθκεί ξεχωριςτά από το κείμενο και κατά δεφτερον, οι απαιτιςεισ για αποκικευςθ ςτον παραλιπτθ για το κείμενο και τθν υπογραφι είναι πολφ μικρότερεσ. Υπάρχουν πολλοί αλγόρικμοι ψθφιακϊν υπογραφϊν. Πλοι τουσ είναι αλγόρικμοι δθμοςίου κλειδιοφ ςτουσ οποίουσ θ διαδικαςία τθσ υπογραφισ γίνεται με κρυπτογράφθςθ χρθςιμοποιϊντασ ζνα ιδιωτικό κλειδί, ενϊ θ διαδικαςία επιβεβαίωςθσ τθσ υπογραφισ γίνεται με αποκρυπτογράφθςθ χρθςιμοποιϊντασ το δθμόςιο κλειδί. Τυπικό παράδειγμα τζτοιου αλγορίκμου είναι ο RSA ςτον οποίο θ ψθφιακι υπογραφι προκφπτει κρυπτογραφϊντασ με ιδιωτικό κλειδί τθν hash τιμι του κειμζνου που κζλουμε να υπογράψουμε

26 ΚΕΦΑΛΑΙΟ 2 ΜΟΝΟΔΟΜΕΣ ΣΥΝΑΤΗΣΕΙΣ ΚΑΙ ΕΦΑΜΟΓΕΣ Είναι δε εφικτό δφο χριςτεσ να υπογράψουν το ίδιο ψθφιακό κείμενο (multiple signatures) και αυτό χρθςιμοποιϊντασ μονόδρομθ hash ςυνάρτθςθ μπορεί να γίνει με τον εξισ τρόπο: 1. Ο πρϊτοσ χριςτθσ υπογράφει τθν hash τιμι του κειμζνου 2. Ο δεφτεροσ χριςτθσ υπογράφει τθν hash τιμι του κειμζνου 3. Ο δεφτεροσ χριςτθσ ςτζλνει τθν ψθφιακι υπογραφι του ςτον πρϊτο 4. Ο πρϊτοσ χριςτθσ ςτζλνει το κείμενο, τθν ψθφιακι υπογραφι του και τθν ψθφιακι υπογραφι του δεφτερου χριςτθ ςε ζναν τρίτο χριςτθ. 5. Ο τρίτοσ χριςτθσ μπορεί να επιβεβαιϊςει τόςο τθν υπογραφι του πρϊτου όςο και του δεφτερου χριςτθ ςτο ςυγκεκριμζνο κείμενο. Τα δφο πρϊτα βιματα μποροφν να είναι ςειριακά ι παράλλθλα ενϊ ςτο τελευταίο βιμα ο τρίτοσ χριςτθσ μπορεί να επιβεβαιϊςει τθν μία υπογραφι χωρίσ να πρζπει να επιβεβαιϊςει και τθν άλλθ. Κάποιοσ που υπογράφει μπορεί να κάνει απάτθ με τθν ψθφιακι υπογραφι του υπογράφοντασ ζνα κείμενο και αργότερα να υποςτθρίξει ότι δεν το υπζγραψε. Αρχικά υπογράφει κανονικά το κείμενο, μετά ανϊνυμα, δθμοςιεφει το ιδιωτικό του κλειδί με κάποιο τρόπο. Τότε μετά υποςτθρίηει ότι θ ψθφιακι υπογραφι του ζχει υποκλαπεί και ότι τθ χρθςιμοποιοφν άλλοι. Μετά αποκθρφςςει τθν υπογραφι των κειμζνων τα οποία υπζγραψε χρθςιμοποιϊντασ το ιδιωτικό κλειδί του. Αυτό λζγεται αποκιρυξθ (repudiation). Τα χρονόςθμα (timestamps) μποροφν να περιορίςουν αυτό το φαινόμενο αλλά πάντα ο χριςτθσ κα μπορεί να ιςχυριςτεί ότι το κλειδί του υποκλάπθκε νωρίτερα. Ζτςι θ μόνθ λφςθ ςε αυτό είναι τα ιδιωτικά κλειδιά να μθν είναι άμεςα γνωςτό ςτο χριςτθ του, ζτςι ϊςτε να μθν μπορεί να κάνει απάτθ αλλά να μπορεί απλά να το χρθςιμοποιεί για να δθμιουργιςει ψθφιακζσ υπογραφζσ. Αυτό ςθμαίνει δθλαδι ότι ο χριςτθσ δεν γνωρίηει τθν ςυγκεκριμζνθ τιμι του κλειδιοφ που χρθςιμοποιεί αλλά απλά διακζτει ζνα μθχανιςμό για γζννθςθ κλειδιοφ(key generation) ζτςι ϊςτε να μπορεί να παράγει ψθφιακζσ υπογραφζσ. 2.4 ΕΠΙΘΕΕΙ ΓΕΝΕΘΛΙΨΝ Ε ΜΟΝΟΔΡΟΜΕ HASH ΤΝΑΡΣΗΕΙ Υπάρχουν δφο είδθ κρίςιμων επικζςεων ςε μία μονόδρομθ hash ςυνάρτθςθ. Η πρϊτθ είναι, με δεδομζνο τθ hash τιμι ενόσ μθνφματοσ H(M), κάποιοσ ειςβολζασ να ικελε να δθμιουργιςει ζνα άλλο κείμενο Μ ζτςι ϊςτε να ιςχφει H(M)=H(M ). Η δεφτερθ επίκεςθ είναι πιο λογικι και ςε αυτιν ζνασ επιτικζμενοσ κζλει να βρει δφο τυχαία μθνφματα Μ και Μ ζτςι ϊςτε να ιςχφει Η(Μ)=Η(Μ ). Αυτό λζγεται ςφγκρουςθ (collision) και είναι πολφ πιο εφκολθ επίκεςθ από ότι θ πρϊτθ. Αυτό προςομοιϊνεται με το παράδοξο των γενεκλίων ςφμφωνα με το οποίο για να ζχει κάποιοσ ςε ζνα δωμάτιο τθν ίδια θμερομθνία γζννθςθσ με ςζνα πρζπει ςτατιςτικά να υπάρχουν ςτο

27 ΚΕΦΑΛΑΙΟ 2 ΜΟΝΟΔΟΜΕΣ ΣΥΝΑΤΗΣΕΙΣ ΚΑΙ ΕΦΑΜΟΓΕΣ δωμάτιο 253 άτομα. Αντίκετα απαιτοφνται μόλισ 23 άτομα ςε ζνα δωμάτιο ζτςι ϊςτε να υπάρχουν δφο άτομα τα οποία να ζχουν γενζκλια τθν ίδια μζρα, οποιαδιποτε μζρα. Το να βρεισ κάποιον με ςυγκεκριμζνθ θμερομθνία γζννθςθσ είναι ανάλογο με τθν πρϊτθ επίκεςθ, ενϊ το να βρεισ δφο άτομα με τθν ίδια τυχαία θμερομθνία γζννθςθσ είναι ανάλογο με τθ δεφτερθ επίκεςθ θ οποία είναι ευρφτερα γνωςτι ωσ επίκεςθ γενεκλίων (birthday attack). Ζςτω ότι μία μονόδρομθ hash ςυνάρτθςθ είναι αςφαλισ και αυτι παράγει μία ζξοδο m bit. Το να βροφμε ζνα μινυμα το οποίο να ζχει τθν ίδια hash τιμι με μία ςυγκεκριμζνθ hash τιμι, αυτό κα απαιτοφςε να κάνουμε hashing ςε 2 m τυχαία μθνφματα. Αντίκετα κα απαιτοφςε να κάνουμε hashing μόνο ςε 2 m/2 τυχαία μθνφματα για να βροφμε δφο τυχαία μθνφματα τα οποία κα ζχουν τθν ίδια hash τιμι χωρίσ να μασ ενδιαφζρει ποια να είναι αυτι. Ζνα μθχάνθμα το οποίο κάνει hashing ςε ζνα εκατομμφριο μθνφματα το δευτερόλεπτο κα του ζπαιρνε χρόνια για να βρει ζνα δεφτερο μινυμα το οποίο να ζχει τθν ίδια 64 bit hash τιμι. Το ίδιο μθχάνθμα κα μποροφςε να βρει ζνα ηεφγοσ μθνυμάτων τα οποία ζχουν τθν ίδια hash τιμι χωρίσ να μασ ενδιαφζρει ποια ςυγκεκριμζνα είναι αυτι ςε περίπου μία ϊρα. Αυτό ςθμαίνει ότι για να προςτατευτοφμε από επικζςεισ γενεκλίων (birthday attack) κα πρζπει να επιλζξουμε hash τιμι διπλάςιου μεγζκουσ από ότι κα επιλζγαμε αλλιϊσ. Για παράδειγμα, εάν κζλουμε να μειϊςουμε τθν πικανότθτα να παραβιάςει κάποιοσ το ςφςτθμά μασ ςε λιγότερο από 1 / κα πρζπει να χρθςιμοποιιςουμε μία μονόδρομθ hash ςυνάρτθςθ θ οποία παράγει ςαν ζξοδο μία 256 bit hash τιμι. Κάποιοσ κα μποροφςε να υποςτθρίξει ότι οι επικζςεισ γενεκλίων (birthday attacks) δεν μασ πολυενοχλοφν, όμωσ υπάρχει ζνα ςενάριο που αποδεικνφει ότι αυτό δεν ιςχφει: 1. Ο πρϊτοσ χριςτθσ ετοιμάηει δφο ςυμβόλαια. Το ζνα είναι αρεςτό ςτον δεφτερο χριςτθ ενϊ το δεφτερο τον χρεοκοπεί. 2. Ο πρϊτοσ χριςτθσ κάνει μικροαλλαγζσ και ςτα δφο κείμενα και υπολογίηει τθ hash τιμι του κακενόσ. Αυτζσ οι αλλαγζσ είναι ανοφςιεσ ωσ προσ τθ δομι του κειμζνου, π.χ. αντί για space να το αντικαταςτιςει με δφο space ι κάτι άλλο ανεπαίςκθτο. Ζτςι κάνοντασ μικροαλλαγζσ ςε ζνα κείμενο μποροφμε κάλλιςτα να βροφμε πάρα πολλά κείμενα. 3. Ο πρϊτοσ χριςτθσ για κάκε μικροαλλαγι που ζχει κάνει ςτα δφο κείμενα ςυγκρίνει κάκε φορά τθν hash τιμι τουσ και αναηθτεί μία μικροαλλαγι για τθν οποία θ αντίςτοιχεσ hash τιμζσ των δφο κειμζνων είναι ίδιεσ, κάτι που αντιςτοιχεί ςε birthday attack. Εάν θ hash τιμι ζχει 64bit τότε όπωσ είπαμε κα βρεκεί ζνα τζτοιο ταίριαςμα hash τιμϊν μετά από 2 32 προςπάκειεσ. 4. Μόλισ γίνει αυτό, ο πρϊτοσ χριςτθσ δίνει ςτον δεφτερο χριςτθ να υπογράψει το ςυμβόλαιο που του είναι αρεςτό, χρθςιμοποιϊντασ ζνα πρωτόκολλο κατά το οποίο ο δεφτεροσ χριςτθσ υπογράφει μόνο τθ hash τιμι. 5. Κάποια ςτιγμι αργότερα ο πρϊτοσ χριςτθσ αντικακιςτά το ςυμβόλαιο που όντωσ υπζγραψε ο δεφτεροσ χριςτθσ με το πρϊτο ςυμβόλαιο, το οποίο τον

28 ΚΕΦΑΛΑΙΟ 2 ΜΟΝΟΔΟΜΕΣ ΣΥΝΑΤΗΣΕΙΣ ΚΑΙ ΕΦΑΜΟΓΕΣ χρεοκοπεί και το οποίο βρζκθκε να ζχει τθν ίδια hash τιμι με το κανονικό ςυμβόλαιο. Ζτςι πλζον ο πρϊτοσ χριςτθσ μπορεί να πείςει ζνα δικαςτι ότι ο δεφτεροσ χριςτθσ υπζγραψε το ςυμβόλαιο το οποίο τον χρεοκοπεί. Ππωσ καταλαβαίνουμε αυτό είναι ζνα πολφ μεγάλο πρόβλθμα και πρζπει να λάβουμε πρόνοια ζτςι ϊςτε οι hash ςυναρτιςειs μασ να μθν είναι ευάλωτεσ ςε επικζςεισ γενεκλίων. Για το λόγο αυτό πρακτικά επιλζγουμε για τισ hash ςυναρτιςειs να ζχουνε 128bit ζξοδο ςαν hash τιμι. Ζτςι κάποιοσ ο οποίοσ κζλει να επιχειριςει μία birthday attack πρζπει ςε αυτιν τθν περίπτωςθ να κάνει hash ςε 2 64 τυχαία κείμενα ζτςι ϊςτε να βρει δφο τα οποία ζχουν τθν ίδια hash τιμι. 2.5 HARDWARE VS SOFTWARE ENCRYPTION Μζχρι πρόςφατα όλα τα προϊόντα κρυπτογράφθςθσ είχαν τθ μορφι εξειδικευμζνου hardware. Αυτά τα κουτιά κρυπτογράφθςθσ-αποκρυπτογράφθςθσ ςυνδζονταν ςτισ γραμμζσ επικοινωνίασ και κρυπτογραφοφςαν όλα τα δεδομζνα τα οποία όδευαν ςε αυτιν τθν τθλεπικοινωνιακι γραμμι. Ραρότι θ software κρυπτογράφθςθ είναι πιο διαδεδομζνθ ςιμερα, θ hardware κρυπτογράφθςθ είναι ακόμα θ ακολουκοφμενθ πρακτικι για ςτρατιωτικζσ και ςοβαρζσ εμπορικζσ εφαρμογζσ. Αυτό γίνεται για πολλοφσ λόγουσ όπωσ: Για λόγουσ ταχφτθτασ αφοφ οι πιο πολλοί software αλγόρικμοι κρυπτογράφθςθσ δεν μποροφν να εκτελεςτοφν αποδοτικά ςε επεξεργαςτζσ γενικοφ ςκοποφ. Ζτςι τα προϊόντα κρυπτογράφθςθσ με μορφι ειδικευμζνου hardware κα ζχουν πάντα υψθλότερθ ταχφτθτα. Επιπλζον θ κρυπτογράφθςθ που είναι μία απαιτθτικι διαδικαςία, δεν μπορεί να είναι το κφριο ζργο ενόσ επεξεργαςτι γιατί τότε όλο το ςφςτθμα υπολειτουργεί. Η λφςθ ςε αυτό είναι θ κρυπτογράφθςθ να γίνεται ςε κάποιο άλλο chip ακόμα και αν αυτό είναι κάποιοσ άλλοσ επεξεργαςτισ. Για λόγουσ αςφάλειασ αφοφ ζνασ software αλγόρικμοσ κρυπτογράφθςθσ δεν ζχει «φυςικι προςταςία». Αυτό γιατί κάποιοσ μπορεί να τροποποιιςει τον αλγόρικμο κρυπτογράφθςθσ, και μάλιςτα χωρίσ κάποιοσ να το καταλάβει, χρθςιμοποιϊντασ διάφορα software προγράμματα ειδικά για αυτό τον ςκοπό τα οποία παρεμβαίνουν και τροποποιοφν τον κϊδικα τζτοιων software αλγόρικμων κρυπτογράφθςθσ. Από τθν άλλθ οι hardware ςυςκευζσ κρυπτογράφθςθσ εγκιβωτίηονται με αςφαλι τρόπο ζτςι ϊςτε να αποφφγουμε το ςενάριο αυτό και υπάρχουν δικλείδεσ αςφαλείασ οι οποίεσ δεν επιτρζπουν ςε κάποιον να τροποποιιςει μία hardware ςυςκευι κρυπτογράφθςθσ. Ζτςι ειδικοφ ςκοποφ chip μποροφν να επικαλυφκοφν με μία χθμικι ουςία θ οποία ςε προςπάκεια παραβίαςισ τθσ προκαλεί τθν καταςτροφι του chip. Επίςθσ, οι hardware ςυςκευζσ κρυπτογράφθςθσ είναι θλεκτρομαγνθτικά κωρακιςμζνεσ και ζτςι δεν μπορεί να διαρρεφςει καμία εμπιςτευτικι πλθροφορία από αυτά με χριςθ θλεκτρομαγνθτικισ ακτινοβολίασ

29 ΚΕΦΑΛΑΙΟ 2 ΜΟΝΟΔΟΜΕΣ ΣΥΝΑΤΗΣΕΙΣ ΚΑΙ ΕΦΑΜΟΓΕΣ Ακόμθ, οι hardware ςυςκευζσ κρυπτογράφθςθσ είναι εφκολεσ ςτο να εγκαταςτακοφν και γενικά δεν ςυνεργάηονται με γενικοφ ςκοποφ υπολογιςτζσ. Ζτςι για ανκρϊπουσ οι οποίοι κζλουν να κρυπτογραφοφν τισ τθλεφωνικζσ ςυνομιλίεσ τουσ, να μεταδϊςουν δεδομζνα κοκ είναι πιο οικονομικό και πιο εφκολο να χρθςιμοποιοφν μία ειδικοφ ςκοποφ ςυςκευι κρυπτογράφθςθσ ςτα τθλζφωνά τουσ, fax κοκ παρά να ανακζτουν τθν κρυπτογράφθςθ ςε μικροεπεξεργαςτι και software. Τζλοσ, θ υλοποίθςθ ενόσ software αλγορίκμου κρυπτογράφθςθσ δεν κα πρζπει να είναι άμεςα ορατι ςτο χριςτθ και ο μόνοσ τρόποσ για να γίνει αυτό είναι ο software κϊδικασ του αλγορίκμου κρυπτογράφθςθσ να γραφτεί πολφ «βακιά» ςτο λειτουργικό ςφςτθμα. Αυτό όμωσ είναι κάτι πολφ δφςκολο να γίνει. Αντίκετα, οποιοςδιποτε μπορεί να παρεμβάλλει hardware ςυςκευζσ κρυπτογράφθςθσ μεταξφ του υπολογιςτι του και του εξωτερικοφ του modem. Ζτςι λοιπόν οι βαςικζσ αρχζσ των hardware ςυςκευϊν κρυπτογράφθςθσ ςιμερα είναι: ειδικοφ ςκοποφ «κουτιά» για τθλεπικοινωνιακζσ γραμμζσ, τα οποία μποροφν εφκολα να ενςωματωκοφν ςε προςωπικοφσ υπολογιςτζσ και τα οποία περιζχουν chip κρυπτογράφθςθσ που υλοποιοφν λειτουργίεσ όπωσ επιβεβαίωςθ κωδικϊν και διαχείριςθ κλειδιϊν. Αυτά ζχουν ςυγκεκριμζνεσ απαιτιςεισ λειτουργίασ και πριν χρθςιμοποιθκοφν πρζπει ο αγοραςτισ να επιβεβαιϊςει ότι αυτό που αγοράηει ταιριάηει ςτθν χριςθ που αυτι θ ςυςκευι κα ζχει. Αντίκετα οι κρυπτογραφικοί αλγόρικμοι οι οποίοι υλοποιοφνται ςε software πλεονεκτοφν ςτο ότι είναι εφκολο να τροποποιθκοφν ι και να αναβακμιςτοφν. Είναι ακόμθ εφκολοι ςτθ χριςθ και εφκολο να μεταφερκοφν (portability) ςε άλλουσ υπολογιςτζσ και άρα να εγκαταςτακοφν ςε πολλά μθχανιματα με πολφ φκθνό τρόπο. Οι software αλγόρικμοι κρυπτογράφθςθσ είναι κατάλλθλοι για απλοφσ χριςτεσ τθρουμζνων των αναλογιϊν και λαμβάνοντασ υπόψθ όλα τα μειονεκτιματα που αυτοί παρουςιάηουν

30

31 ΚΕΥΑΛΑΙΟ 3 Ο ΑΛΓΟΡΙΘΜΟ SKEIN 3.1 ΙΣΟΡΙΚΗ ΑΝΑΔΡΟΜΗ Στισ 2 Νοεμβρίου 2007 ο αμερικανικόσ οργανιςμόσ NIST (National Institute of Standards and Technology) προκιρυξε τον ανοιχτό διεκνι διαγωνιςμό για το νζο πρότυπο κρυπτογράφθςθσ που κα λάβει τθν ονομαςία SHA-3 (Secure Hash Algorithm) (3). Ζνασ από τουσ 41 υποψθφίουσ είναι και ο αλγόρικμοσ με τθν ονομαςία Skein, δθμιοφργθμα των Niels Ferguson, Stefan Lucks, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas και Jesse Walker (4). Ο ςυγκεκριμζνοσ αλγόρικμοσ κατάφερε να προκρικεί και ςτα δφο ςτάδια του διαγωνιςμοφ, μαηί με άλλουσ 13 και 4 ςυνυποψιφιουσ ςτο πρϊτο και δεφτερο ςτάδιο αντίςτοιχα, και να βρίςκεται ςτθν τελικι πεντάδα αλγορίκμων από τουσ οποίουσ κα γίνει και θ τελικι επιλογι. 3.2 ΦΑΡΑΚΣΗΡΙΣΙΚΑ ΣΟΤ SKEIN Ο Skein είναι μία οικογζνεια hash αλγορίκμων με τρία διαφορετικά μεγζκθ εςωτερικϊν καταςτάςεων: 256, 512 και 1024 bits (5). Η βαςικι πρόταςθ για όλουσ τουσ υπάρχοντεσ αλγόρικμουσ είναι αυτι με τα 512 bit μζγεκοσ εςωτερικϊν καταςτάςεων. Μπορεί να το κάνει αυτό με αςφάλεια θ οποία κα είναι αδιαπζραςτθ για το

32 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN προβλζψιμο μζλλον. Τα 1024 bit αποτελοφν τθν υπερβολικά ςυντθρθτικι πρόταςθ αφοφ ζχει το διπλάςιο μζγεκοσ εςωτερικϊν καταςτάςεων, κάτι που τθν προςτατεφει και ςε περίπτωςθ αποτυχίασ διότι ακόμθ και εάν μία μελλοντικι επίκεςθ καταφζρει να «ςπάςει» αυτι των 512 bit είναι πολφ πικανό αυτι των 1024 bit να παραμείνει αςφαλισ. Τζλοσ, θ πρόταςθ των 256 bit είναι θ παραλλαγι για χαμθλι χριςθ μνιμθσ αφοφ μπορεί να υλοποιθκεί ακόμθ και με 100 byte RAM. Κάκε μία από τισ τρεισ αυτζσ προτάςεισ μπορεί να υποςτθρίξει οποιοδιποτε μζγεκοσ εξόδου. Αν υπάρξει θ απαίτθςθ για αντικατάςταςθ ενόσ ιδθ υπάρχοντοσ αλγορίκμου, όπωσ του MD5 ι κάποιου SHA, προτείνονται οι παρακάτω διαμορφϊςεισ (Ρίνακασ 3.1) Replace With State Size Output Size MD5 Skein Skein SHA-1 Skein Skein SHA-224 Skein Skein SHA-256 Skein Skein SHA-384 Skein Skein SHA-512 Skein Skein Πίνακασ 3.1: Απευκείασ αντικαταςτάςεισ των MD5, SHA-1 και SHA-2 Η πρωτοποριακι ιδζα που χρθςιμοποιεί ο Skein είναι αυτι τθσ δθμιουργίασ μίασ hash function με τθ χριςθ tweakable block cipher. Αυτό επιτρζπει ςτον αλγόρικμο να κάνει hash το μινυμα ειςόδου μαηί με δεδομζνα διαμόρφωςθσ κάνοντασ κάκε φορά τθ ςυνάρτθςθ ςυμπίεςθσ μοναδικι. Αυτι θ ιδιότθτα προλαμβάνει πολλά είδθ επικζςεων των ςυναρτιςεων hash παρζχοντασ ταυτόχρονα ςτον Skein μεγάλθ ελαςτικότθτα. 3.3 ΚΤΡΙΑ ΤΣΑΣΙΚΑ ΣΟΤ SKEIN Ο Skein δθμιουργείται από τα εξισ τρία ςυςτατικά: Threefish: Το threefish είναι ζνα tweakable block cipher ςτον πυρινα του Skein προςδιοριηόμενο από το μζγεκοσ του block που επεξεργάηεται το οποίο μπορεί να είναι 256, 512 ι 1024 bit. Unique Iteration Block (UBI): Το UBI είναι μία επαναλθπτικι διαδικαςία θ οποία χρθςιμοποιεί το threefish για να παράξει μία ςυνάρτθςθ ςυμπίεςθσ με αυκαίρετο μζγεκοσ ειςόδου και ςυγκεκριμζνο μζγεκοσ εξόδου

33 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Optional Argument System: Επιτρζπει ςτο Skein να υποςτθρίξει μία μεγάλθ γκάμα από δυνατότθτεσ χωρίσ όμωσ να επιβαρφνει υλοποιιςεισ και εφαρμογζσ οι οποίεσ δεν τισ χρθςιμοποιοφν. Αυτι θ διαίρεςθ του αλγορίκμου ςτισ πιο πάνω μονάδεσ επιτρζπει τθν καλφτερθ κατανόθςθ και ανάλυςθ του αλγορίκμου και απόδειξθ των ιδιοτιτων του. Ο Threefish αλγόρικμοσ βαςίηεται ςε γνϊςεισ χρόνων επάνω ςτο ςχεδιαςμό και τθν ανάλυςθ block cipher. Το UBI είναι αποδεδειγμζνα αςφαλζσ και μπορεί να χρθςιμοποιθκεί με οποιοδιποτε tweakable cipher.το optional argument system επιτρζπει ςτο Skein να «ραφτεί ςτα μζτρα» διαφορετικϊν απαιτιςεων. Αυτά τα τρία ςυςτατικά είναι ανεξάρτθτα μεταξφ τουσ και χριςιμα από μόνα τουσ αλλά είναι ο ςυνδυαςμόσ τουσ που προςφζρει πραγματικά πλεονεκτιματα. Και κάκε πλευρά του Skein ςχεδιάςτθκε για να βελτιϊςει αυτά τα πλεονεκτιματα Σο Threefish Block Cipher Το threefish είναι ζνα μεγάλο tweakable block cipher. Ορίηεται για τρία διαφορετικά μεγζκθ: 256, 512 και 1024 bit. Το κλειδί (key) είναι ίδιου μεγζκουσ με το μπλοκ και το tweak ζχει το ίδιο μζγεκοσ και για τα τρία μεγζκθ μπλοκ και είναι 128 bit. Η βαςικι αρχι καταςκευισ του είναι ότι ζνασ μεγάλοσ αρικμόσ από απλοφσ γφρουσ είναι πιο αςφαλισ από λιγότερουσ και πολυπλοκότερουσ. Το threefish χρθςιμοποιεί μόνο τρείσ μακθματικζσ ςυναρτιςεισ. Αυτζσ είναι θ exclusive-or (XOR), θ πρόςκεςθ και θ περιςτροφι κατά μία ςτακερά. Πλεσ ςε λζξεισ των 64 bit κάνοντάσ τεσ πολφ γριγορεσ ςε ςφγχρονουσ 64 bit επεξεργαςτζσ. Ραρακάτω (Σχιμα 3.1) φαίνεται ο πυρινασ του threefish ο οποίοσ είναι μία απλι μθ γραμμικι ςυνάρτθςθ θ οποία ονομάηεται MIX. Ενεργεί πάνω ςε δφο λζξεισ των 64 bit. Κάκε MIX αποτελείται από μία απλι πρόςκεςθ, μία περιςτροφι κατά μία ςτακερά και μία XOR. Σχιμα 3.1: Η ςυνάρτθςθ MIX Στο Σχιμα 3.2 φαίνεται πϊσ ςυναρτιςεισ MIX χρθςιμοποιοφνται για τθν καταςκευι ενόσ threefish των 512 bit. Κάκε ζνασ από τουσ 72 γφρουσ του Skein-512 αποτελείται από τζςςερισ τζτοιεσ ςυναρτιςεισ ακολουκοφμενεσ από τισ μετακζςεισ

34 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN των οχτϊ λζξεων των 64 bit (permute). Ζνα subkey εγχζεται κάκε τζςςερισ γφρουσ. Οι μετακζςεισ των 64 bit λζξεων είναι ίδιεσ για κάκε γφρο και οι ςτακερζσ περιςτροφισ επιλεγμζνεσ για τθν βζλτιςτθ διαςπορά και επαναλαμβάνονται κάκε οχτϊ γφρουσ. Η καταςκευι των subkey γίνεται από τον ςυνδυαςμό των key και tweak κακϊσ κάκε ζνα αποτελείται από τθν ςυνειςφορά των key, tweak και τθσ τιμισ ενόσ μετρθτι. Αρχικά το key και το tweak επεκτείνονται κατά μία ακόμθ λζξθ, κακεμία από τισ οποίεσ δθμιουργείται από το αποτζλεςμα των XOR όλων των 64 bit λζξεων που απαρτίηουν το key και to tweak αντίςτοιχα. Για το key επιπλζον γίνεται XOR και με μία ςτακερά. Τελικά το subkey είναι ο ςυνδυαςμόσ όλων εκτόσ από μία των λζξεων του key, δφο εκ των λζξεων του tweak και του αρικμοφ του subkey (Σχιμα 3.3). Ανάμεςα ςτο κάκε subkey το εκτεταμζνο key και το εκτεταμζνο tweak περιςτρζφονται κατά μία λζξθ. Ολόκλθρο το key μπορεί να υπολογιςτεί ςε μόλισ λίγουσ επεξεργαςτικοφσ κφκλουσ. Αυτό ελαχιςτοποιεί το κόςτοσ χριςθσ νζου key κάτι που είναι ζνασ πολφ ςοβαρόσ παράγοντασ κατά τθ χριςθ block cipher μζςα ςε μία ςυνάρτθςθ hash. Στo Σχιμα 3.4 φαίνεται θ καταςκευι τεςςάρων από τουσ 72 γφρουσ του Skein Η καταςκευι του Skein-1024 είναι παρόμοια, με τθ διαφορά ότι ζχει οχτϊ MIX ανά γφρο και 80 γφρουσ ςυνολικά. Οι ςτακερζσ περιςτροφισ και οι μετακζςεισ (permute) των λζξεων είναι διαφορετικζσ για κάκε ζκδοςθ και είναι επιλεγμζνεσ ϊςτε να επιτευχκεί θ μζγιςτθ διάχυςθ ςε όλο το threefish block. Η μθ-γραμμικότθτα ςτο threefish προκφπτει από τα κρατοφμενα ςτισ προςκζςεισ, κάκε μία από τισ οποίεσ είναι ςυνάρτθςθ πλειοψθφίασ των δφο bit ειςόδου και ενόσ bit κρατουμζνου. Το καταςκεφαςμα MIX/permute ζχει ςχεδιαςτεί ϊςτε να προςφζρει πλιρθ διάχυςθ ςε 9 γφρουσ για το threefish-256, ςε 10 για το threefish-512 και ςε 11 για το threefish Στουσ 72 και 80 γφρουσ το threefish επιτυγχάνει περιςςότερεσ πλιρεισ διαχφςεισ από οποιονδιποτε άλλο block cipher

35 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Σχιμα 3.2: Τζςςερισ από τουσ 72 γφρουσ του Threefish-512 Σχιμα 3.3: Η δθμιουργία ενόσ subkey

36 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Σχιμα 3.4: Τζςςερισ από τουσ 72 γφρουσ του Threefish

37 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Σο UBI Αλυςιδωτόσ Λειτουργύασ Το Unique Block Iteration (UBI) αλυςιδωτισ λειτουργίασ ςυνδυάηει ωσ ειςόδουσ μία αλυςιδωτι τιμι μαηί με μία ςειρά από bit αυκαίρετου μικουσ και παράγει μία κακοριςμζνου μικουσ ζξοδο. Ο πιο απλόσ τρόποσ κατανόθςισ του είναι ζνα παράδειγμα. Το Σχιμα 3.5 δείχνει τον υπολογιςμό του UBI μίασ 166 byte (3 μπλοκ) τιμισ ειςόδου για τον Skein-512. Ο υπολογιςμόσ χρθςιμοποιεί τρείσ κλιςεισ του threefish-512. Σχιμα 3.5: Κάνοντασ HASH ςε ζνα μινυμα τριϊν μπλοκ με λειτουργία UBI Τα μπλοκ μθνφματοσ Μ 0 και Μ 1 περιζχουν 64 byte δεδομζνων το κακζνα, και το Μ 2 είναι το τελευταίο μπλοκ μθνφματοσ ςυμπλθρωμζνο (padded) το οποίο περιζχει 38 byte δεδομζνων. Η τιμι του tweak για κάκε ζνα μπλοκ κωδικοποιεί πόςα byte ζχουν επεξεργαςτεί μζχρι τϊρα και εάν αυτό είναι το πρϊτο ι/και το τελευταίο μπλοκ του υπολογιςμοφ του UBI. Το tweak ακόμθ κωδικοποιεί ζνα πεδίο που δθλϊνει τον τφπο του μπλοκ (δεν φαίνεται ςτο ςχιμα) το οποίο χρθςιμοποιείται για να διαχωρίηει τισ διαφορετικζσ χριςεισ που μπορεί να ζχουν τα UBI μεταξφ τουσ. Το tweak είναι θ καρδιά του UBI. Με τθ χριςθ ενόσ διαφοροποιοφμενου κρυπτογραφιματοσ (tweakable cipher), το UBI εξαςφαλίηει ότι κάκε μπλοκ επεξεργάηεται με μία μοναδικι παραλλαγι τθσ ςυνάρτθςθσ ςυμπίεςθσ. Κάτι που ακυρϊνει μία μεγάλθ γκάμα επικζςεων «αποκοπισ και επικόλλθςθσ» (cut-and-paste attacks): ζνα μινυμα το οποίο παράγει ζνα ςυγκεκριμζνο αποτζλεςμα ςε μία χριςθ κα παράξει ζνα τελείωσ διαφορετικό αποτζλεςμα ςε μία άλλθ. Το UBI είναι μία παραλλαγι τθσ Matyas-Meyer-Oceas hash λειτουργίασ. Εν αντικζςει με πολλζσ άλλεσ, το μινυμα ειςόδου ςτον αλγόρικμο hash είναι το ίδιο με το «κακαρό κείμενο» (plaintext) ςτο block cipher. Από τθ ςτιγμι που ο επιτικζμενοσ ζχει τον μζγιςτο ζλεγχο ςτο μινυμα ειςόδου παρζχεται επαυξθμζνο επίπεδο αςφαλείασ Σο Skein Hashing Ο Skein χτίηεται με πολλαπλζσ επαναλιψεισ του UBI. Το Σχιμα 3.6 δείχνει τον Skein ωσ μία απλι ςυνάρτθςθ hash. Αρχίηοντασ με τιμι αλυςίδασ το 0, υπάρχουν τρεισ

38 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN επαναλιψεισ του UBI: μία για το μπλοκ διαμόρφωςθσ (configuration block), μία για το μινυμα (μικουσ μζχρι και byte) και μία για τον μεταςχθματιςμό εξόδου. Σχιμα 3.6: Ο Skein ςε λειτουργία απλοφ HASH Το μικουσ 32 byte μινυμα διαμόρφωςθσ κωδικοποιεί το επικυμθτό μζγεκοσ εξόδου και κάποιεσ ακόμθ παραμζτρουσ για τθν υποςτιριξθ του δενδροειδοφσ hash. Αν ο Skein χρθςιμοποιείται ςαν μία απλι ςυνάρτθςθ hash ςτακερό μζγεκοσ εξόδου και όχι δενδροειδζσ hash ι MAC κλειδί το αποτζλεςμα του μπλοκ διαμόρφωςθσ είναι ςτακερό για όλα τα μθνφματα και μπορεί να προχπολογιςτεί ωσ μία αρχικι τιμι. Σχιμα 3.7: Ο Skein με μεγαλφτερο μζγεκοσ εξόδου Ο μεταςχθματιςμόσ εξόδου απαιτείται για τθν επίτευξθ τυχαιότθτασ του hash αλγορίκμου (αναφζρεται ςτθν παράγραφο 2.2 ςτο τζλοσ). Επιτρζπει ακόμθ ςτον αλγόρικμο να παράγει οποιουδιποτε μεγζκουσ ζξοδο μζχρι το μικοσ των 2 64 bit. Εάν

39 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN ζνα απλό μπλοκ εξόδου δεν είναι αρκετό, τρζχει ο μεταςχθματιςμόσ εξόδου αρκετζσ φορζσ όπωσ φαίνεται ςτο Σχιμα 3.7. Η αλυςιδωτι είςοδοσ όλων των μπλοκ είναι θ ίδια και το πεδίο των δεδομζνων αποτελείται από ζναν απαρικμθτι των 8 byte.κατ ουςία, αυτό χρθςιμοποιεί το threefish ςε λειτουργία απαρίκμθςθσ. Η παραγωγι μεγάλων ςε μικοσ εξόδων είναι πολλζσ φορζσ βολικι, αλλά φυςικά θ αςφάλεια του Skein περιορίηεται από τον αρικμό των εςωτερικϊν καταςτάςεων Προαιρετικϊ ςτοιχεύα (Optional Arguments) Για τθν αφξθςθ τθσ ευελιξίασ του Skein, αρκετζσ προαιρετικζσ είςοδοι μποροφν να ενεργοποιθκοφν κατά βοφλθςθ. Αυτζσ οι επιλογζσ κακοδθγοφνται από πραγματικζσ εφαρμογζσ του αλθκινοφ κόςμου. Αυτζσ είναι: Κλειδί (key - προαιρετικό): Ζνα κλειδί το οποίο μετατρζπει τον Skein ςε MAC ι KDF αλγόρικμο. Διαμόρφωςθ (configuration - απαιτοφμενο): Για το μπλοκ διαμόρφωςθσ που ςυηθτικθκε πιο πάνω. Εξατομίκευςθ (personalization - προαιρετικό): Μία ςυμβολοςειρά τθν οποία οι διάφορεσ εφαρμογζσ μποροφν να χρθςιμοποιιςουν για τθ δθμιουργία διαφορετικϊν ςυναρτιςεων για διαφορετικζσ χριςεισ. Δθμόςιο κλειδί (public key - προαιρετικό): Χρθςιμοποιείται για το hash του δθμόςιου κλειδιοφ κατά τον hash ενόσ μθνφματοσ για υπογραφι. Αυτό δζνει το hash τθσ υπογραφισ με το δθμόςιο κλειδί. Ζτςι, αυτό το χαρακτθριςτικό εξαςφαλίηει ότι το ίδιο μινυμα παράγει διαφορετικά hash για διαφορετικά δθμόςια κλειδιά. Προςδιοριςτισ παραγωγισ κλειδιοφ (key derivation identifier - προαιρετικό): Χρθςιμοποιείται για τθν παραγωγι κλειδιϊν. Για να γίνει αυτό, παρζχουμε το κφριο κλειδί ςτο κλειδί ειςόδου και τον προςδιοριςμό του ηθτοφμενου κλειδιοφ εδϊ. Τυχαία μοναδικι τιμι (nonce - προαιρετικό): τυχαία τιμι για χριςθ ςε stream cipher (δεσ ) και τυχαιοποιθμζνο hash. Μινυμα (message - προαιρετικό): Το κανονικό μινυμα ειςόδου ςτθ λειτουργία hash. Ζξοδοσ (output - απαιτοφμενο): Για το μεταςχθματιςμό εξόδου. Ο υπολογιςμόσ τθσ εξόδου του Skein αποτελείται από τθν επεξεργαςία όλων αυτϊν των επιλογϊν ςτθ ςειρά με χριςθ του UBI. Κάκε είςοδοσ ζχει μία διαφορετικι τιμι τφπου (type value) ςτο tweak, εξαςφαλίηοντασ ότι οι είςοδοι δεν είναι εναλλάξιμοι. Καμία από αυτζσ δεν επθρεάηει τθν απόδοςθ και τθν πολυπλοκότθτα τθσ βαςικισ hash λειτουργίασ με κανζνα τρόπο. Διαφορετικζσ υλοποιιςεισ μποροφν να επιλζξουν ποια ςτοιχεία κα κρατιςουν και ποια κα αγνοιςουν. Ρροφανϊσ, ο Skein μπορεί να εμπλουτιςτεί και με άλλα προαιρετικά ςτοιχεία. Αυτά μποροφν να ειςαχκοφν οποιαδιποτε ςτιγμι, ακόμθ και όταν θ ςυνάρτθςθ ζχει ιδθ τυποποιθκεί, αφοφ θ προςκικθ νζων ςτοιχείων είναι ςυμβατι προσ τα πίςω

40 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Skein MAC Ο τυποποιθμζνοσ τρόποσ για να χρθςιμοποιθκεί μία ςυνάρτθςθ hash είναι θ χριςθ τθσ HMAC δομισ. Ο Skein φυςικά και μπορεί να χρθςιμοποιθκεί για HMAC, αλλά αυτό απαιτεί τουλάχιςτον δφο hash υπολογιςμοφσ για κάκε πιςτοποίθςθ, κάτι μθ αποδοτικό για ςφντομα μθνφματα. Ο Skein ζχει μθδενικι επιβάρυνςθ όταν χρθςιμοποιείται ωσ μία MAC ςυνάρτθςθ. Σχιμα 3.8: Skein-MAC Η τροποποίθςθ του Skein ςε λειτουργία MAC είναι απλι, όπωσ φαίνεται και ςτο Σχιμα 3.8. Αντί για ξεκίνθμα με 0 και επεξεργαςία του μπλοκ διαμόρφωςθσ, ξεκινάμε με 0, επεξεργαηόμαςτε το μπλοκ κλειδιοφ και ζπειτα το μπλοκ διαμόρφωςθσ. Ή βλζποντάσ το αντίςτροφα, το απλό Skein hash είναι το Skein MAC με κενό κλειδί. Και όπωσ με τθν ζξοδο του μπλοκ διαμόρφωςθσ του απλοφ Skein hash θ ζξοδοσ του μπλοκ διαμόρφωςθσ ςτο Skein MAC είναι προχπολογίςιμθ και ςτακερι για δεδομζνο μζγεκοσ εςωτερικϊν καταςτάςεων και μζγεκοσ εξόδου. Ζτςι μπορεί να προχπολογιςτεί για ζνα δεδομζνο κλειδί. Από τθ ςτιγμι που ο πιο ςυνθκιςμζνοσ τρόποσ χριςθσ του MAC είναι θ πιςτοποίθςθ πολλαπλϊν μθνυμάτων με ζνα μοναδικό κλειδί, αυτό αποτελεί ςθμαντικι αφξθςθ τθσ απόδοςθσ ςτα ςφντομα μθνφματα Δενδροειδϋσ HASH με τον Skein Πταν γίνεται hash ςε μεγάλεσ ποςότθτεσ δεδομζνων, θ γραμμικι διάταξθ μιασ κλαςικισ γραμμικισ ςυνάρτθςθσ hash γίνεται περιοριςτικι: αποτρζπει ζνα πολυπφρθνο επεξεργαςτι από τθ χριςθ περιςςότερων του ενόσ πυρινεσ τθν ίδια ςτιγμι. Ακόμθ, μία ςυνθκιςμζνθ χριςθ μίασ hash ςυνάρτθςθσ είναι να επιβεβαιϊςει τθν ακεραιότθτα μιασ μεγάλθσ ποςότθτασ δεδομζνων. Με μία γραμμικι ςυνάρτθςθ hash όλα τα δεδομζνα πρζπει να επαλθκευτοφν τθν ίδια ςτιγμι. Αυτό μπορεί να αποβεί πολφ αναποτελεςματικό, μιασ και είναι ςυχνά επικυμθτι θ επαλικευςθ ενόσ μόνο τμιματοσ από τα δεδομζνα. Μία διάταξθ δζνδρου λφνει και τα δφο αυτά προβλιματα. Ζτςι, αντί να κάνουμε hash τα δεδομζνα ωσ μία μεγάλθ ςυμβολοςειρά, τα δεδομζνα κόβονται ςε τμιματα. Κάκε τμιμα γίνεται hash και τα αποτελζςματα χρθςιμοποιοφνται ςαν ζνα νζο μινυμα. Αυτι θ διαδικαςία μπορεί να γίνει επαναλθπτικά μζχρισ ότου προκφψει ζνα μόνο hash αποτζλεςμα

41 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Ο Skein αλγόρικμοσ ςυμπεριλαμβάνει μία προαιρετικι δενδροειδι λειτουργία για να υποςτθρίξει αυτοφ του τφπου τισ εφαρμογζσ. Κακϊσ διαφορετικζσ εφαρμογζσ ζχουν διαφορετικζσ απαιτιςεισ, υπάρχουν τρείσ παράμετροι που μποροφν να επιλεγοφν για τθν βελτιςτοποίθςθ του δενδροειδοφσ hash για κάκε ςυγκεκριμζνθ χριςθ: το leaf node size, το tree fan-out και το maximum tree height. Επεξθγείται παρακάτω (παράγραφοσ ). 3.4 ΠΛΗΡΕΙ ΠΡΟΔΙΑΓΡΑΥΕ ΣΟΤ SKEIN υμβολοςειρϋσ Πταν αναφζρεται θ φράςθ «ζνα string από X», εννοοφμε μία ακολουκία από καμία ι περιςςότερεσ τιμζσ, κακεμία από τισ οποίεσ ζχει τον τφπο X. Για παράδειγμα: ζνα string από byte είναι μία ακολουκία από κανζνα ι περιςςότερα byte. Τα string γράφονται ωσ λίςτεσ διαχωριςμζνεσ εςωτερικά με κόμμα και τυπικά απαρικμοφνται τα ςτοιχεία τουσ ξεκινϊντασ από το μθδζν. Για παράδειγμα: ζνα string t αποτελοφμενο από 7 τιμζσ γράφεται ωσ: Το ςφμβολο του concatenation δθλϊνει μία αλλθλουχία από string. Χρθςιμοποιείται το 0 n για να δθλϊςει ζνα string από n μθδενικά, όπου ο τφποσ των μθδενικϊν (bit ι byte) κα είναι προφανισ από τα ςυμφραηόμενα Η ςειρϊ των bit και byte Η ςειρά των bit και byte είναι μία ςυνικθσ πθγι ςφγχυςθσ ςτουσ κρυπτογραφικοφσ αλγορίκμουσ. Εν ςυντομία, ο Skein πάντα χρθςιμοποιεί τθ ςυνκικθ του πιο ςθμαντικοφ byte ςτο τζλοσ (least-significant-byte-first convention). Αλλά για να μθν υπάρξει οποιαδιποτε παρανόθςθ ακολουκοφν οριςμοί των τφπων μετατροπϊν δεδομζνων. Ο βαςικόσ κακολικόσ τφποσ δεδομζνων ςτουσ ςφγχρονουσ επεξεργαςτζσ είναι τα string από byte. Κάκε byte ζχει μία τιμι ςτο εφροσ 0 ζωσ 255. Ζνα byte μπορεί ακόμθ να ειδωκεί και ςαν μία ακολουκία από 8 bit (b 7, b 6,...,b 0 ), όπου κάκε b i είναι είτε 0 είτε 1 και θ τιμι b του byte δίδεται από: Ζνα string από bit αποκθκεφεται ςαν ζνα string από byte. Για το διαγωνιςμό των ςυναρτιςεων hash, το NIST προςδιορίηει μία ςυγκεκριμζνθ αντιςτοίχθςθ από ζνα string από bit ςε ζνα string από byte. Κάκε ομάδα από 8 bit κωδικοποιείται ςε ζνα byte: το πρϊτο bit πθγαίνει ςτο bit 7 του byte, το επόμενο ςτο bit 6 του byte κοκ. Εάν το

42 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN μικοσ ςε bit του string δεν είναι πολλαπλάςιο του 8, το τελευταίο byte χρθςιμοποιείται μερικϊσ, με τισ λιγότερο ςθμαντικζσ κζςεισ των bit να μζνουν αχρθςιμοποίθτεσ. Για τθν μετατροπι μίασ ακολουκίασ από byte ςε ζναν ακζραιο, χρθςιμοποιοφμε τθ ςυνκικθ least-significant-byte-fist. Ζςτω ότι τα είναι ζνα string από n byte. Ορίηουμε: Η αντίςτροφθ αντιςτοίχθςθ γίνεται με τθ χριςθ τθσ ςυνάρτθςθσ ToBytes: όπου Αυτι θ ςυνάρτθςθ εφαρμόηεται μόνο όταν κωδικοποιοφν πλιρωσ τθν τιμι u. ζτςι ϊςτε τα byte να Συχνά κάνουμε μετατροπζσ ανάμεςα ςε string των 8n byte και ςε αυτά των n 64-bit λζξεων. Ζςτω ότι είναι τα byte, ορίηουμε: Η αντίςτροφθ αντιςτοίχθςθ δίνεται από: όπου Πλόρεισ Προδιαγραφϋσ του Threefish Το threefish είναι ζνα tweakable block cipher με μζγεκοσ block 256, 512 ι 1024 bit. Το μζγεκοσ του tweak είναι πάντα 128 bit. Η ςυνάρτθςθ κρυπτογράφθςθσ E(K, T, P) κάνει χριςθ των ακόλουκων όρων: K T P Το κλειδί (key) του block cipher: ζνα string μεγζκουσ 32, 64 ι 128 byte (256, 512 ι 1024 bits) Το tweak: ζνα string μεγζκουσ 16 byte (128 bit) Το «κακαρό κείμενο» (plaintext): ζνα string από byte ίςου μεγζκουσ με το κλειδί Το threefish ενεργεί εξολοκλιρου πάνω ςε μθ-προςθμαςμζνεσ λζξεισ των 64 bit. Πλεσ οι είςοδοι μετατρζπονται ςε string λζξεων μικουσ 64 bit. Ζςτω ότι είναι ο αρικμόσ των λζξεων ςτο key και άρα και ςτο plaintext. Το key K αναπαριςτάται από τισ λζξεισ, το tweak T από τισ και το plaintext P από τισ

43 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Ο αρικμόσ των γφρων,, είναι ςυνάρτθςθ του μεγζκουσ του μπλοκ όπωσ φαίνεται παρακάτω (Ρίνακασ 3.2). Μζγεκοσ Block / Key # Λζξεων (N w ) # Γφρων (N r ) Πίνακασ 3.2: Ο αρικμόσ των γφρων για τα διάφορα μεγζκθ μπλοκ Η δθμιουργία των κλειδιϊν (key schedule)(αναλφεται παρακάτω ) μετατρζπει το key και το tweak ςε μία ακολουκία από subkey, κακζνα από τα οποία αποτελείται από λζξεισ. Τα subkey εμφανίηονται ωσ. Ζςτω ότι είναι θ τιμι τθσ i-οςτισ λζξθσ τθσ κρυπτογράφθςθσ ζπειτα από d γφρουσ-επαναλιψεισ. Ξεκινάμε ωσ εξισ: για κάκε Και ζπειτα εφαρμόηουμε τα παρακάτω για. Για κάκε γφρο, προςκζτουμε ζνα subkey εάν ζχουμε: γφρουσ αρικμθμζνουσ ωσ εξισ:. Για { ( ) Τα MIX και τα permute ορίηονται ωσ: Πίνακασ 3.3: Οι τιμζσ των permute π(i)

44 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Οι τιμζσ των είναι τα αποτελζςματα των MIX ςυναρτιςεων (ορίηονται παρακάτω ) και θ ζξοδοσ των permute είναι θ ζξοδοσ των γφρων. Τα permute π(i) δίνονται ςτον Ρίνακασ 3.3. Το ciphertext C δίδεται από τισ ςχζςεισ: Οι ςυναρτήςεισ MIX Η ςυνάρτθςθ ζχει δφο λζξεισ ειςόδου και παράγει δφο λζξεισ εξόδου κάνοντασ χριςθ των παρακάτω εξιςϊςεων: όπου είναι ο τελεςτισ αριςτερισ περιςτροφισ. Οι ςτακερζσ φαίνονται ςτον Ρίνακασ Πίνακασ 3.4: Στακερζσ περιςτροφισ για κάκε Το Key Schedule Η παραγωγι των subkey ξεκινάει ςτο key schedule ορίηοντασ δφο επιπλζον λζξεισ, τισ και ωσ εξισ: Η ςτακερά διαςφαλίηει ότι το εκτεταμζνο κλειδί (extended key) δεν κα είναι ποτζ όλο μθδενικά. και όπου όλεσ οι προςκζςεισ είναι modulo

45 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Αποκρυπτογράφηςη Η αποκρυπτογράφθςθ του threefish είναι θ αντίςτροφθ διαδικαςία τθσ κρυπτογράφθςθσ. Τα subkey χρθςιμοποιοφνται με τθν αντίςτροφθ ςειρά και κάκε γφροσ αποτελείται από το αντίςτροφο permutation ακολουκοφμενο από τισ αντίςτροφεσ ςυναρτιςεισ MIX Πλόρεισ Προδιαγραφϋσ του UBI Το UBI χτίηεται πάνω ςε ζνα tweakable block cipher με μζγεκοσ μπλοκ και κλειδιοφ byte και ζνα tweak μεγζκουσ 16 byte. Η ςυνάρτθςθ UBI(G, M, T s ) ζχει ειςόδουσ: G M T s μία αρχικι τιμι μεγζκουσ N b byte ζνα string μθνφματοσ αυκαίρετου μεγζκουσ μζχρι τα bit, κωδικοποιθμζνθ ςε ζνα string από byte ζνασ 128 bit ακζραιοσ ο οποίοσ είναι θ αρχικι τιμι για το tweak Το UBI επεξεργάηεται το μινυμα ςε τμιματα (μπλοκ) χρθςιμοποιϊντασ ζνα μοναδικό tweak για το κακζνα. Τα πεδία του tweak φαίνονται ςτο Σχιμα 3.9 και ςτον Ρίνακασ 3.5. Για να αποφευχκοφν οι πολλζσ διαφορετικζσ παράμετροι, χρθςιμοποιοφμε το tweak ςαν μία 128 bit τιμι. Αυτό απλοποιεί τουσ ςυμβολιςμοφσ αλλά επιβάλλει και κάποιουσ περιοριςμοφσ ςτθν τιμι που μπορεί να πάρει το T s. Πταν τα BitPad, First και Final bit είναι μθδζν τότε θ τιμι του πεδίου Position πρζπει να είναι τζτοια ϊςτε το άκροιςμά τθσ με το μικοσ (length) του M ςε byte να μθν υπερβαίνει το Σχιμα 3.9: Τα πεδία του tweak

46 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Πνομα Bit Ρεριγραφι Position 0-95 Ο αρικμόσ των byte ςτο string που ζχουν επεξεργαςτεί μζχρι τϊρα (ςυμπεριλαμβανομζνου του παρόντοσ) reserved Για μελλοντικι χριςθ, πρζπει να είναι μθδζν TreeLevel Επίπεδο ςτο δενδροειδζσ hash, μθδζν για μθ δενδροειδείσ υπολογιςμοφσ BitPad 119 Ενεργοποιθμζνο εάν αυτό το μπλοκ περιζχει το τελευταίο byte μίασ ειςόδου τθσ οποίασ το μικοσ δεν είναι ακζραιοσ αρικμόσ από bit. Μθδζν διαφορετικά Type Τφποσ του μθνφματοσ(config, message, output, ) First 126 Ενεργοποιθμζνο για το πρϊτο μπλοκ τθσ ςυμπίεςθσ UBI Final 127 Ενεργοποιθμζνο για το τελευταίο μπλοκ τθσ ςυμπίεςθσ UBI Πίνακασ 3.5: Τα πεδία του tweak Εάν ο αρικμόσ των bit ςτα δεδομζνα M είναι πολλαπλάςιο του 8, ορίηουμε B:=0 και M :=M. Εάν δεν είναι πολλαπλάςιο του 8, το τελευταίο byte χρθςιμοποιείται μερικϊσ. Τα πιο ςθμαντικά bit από το τελευταίο byte περιζχουν δεδομζνα. Συμπλθρϊνουμε (pad) το τελευταίο byte κζτοντασ ςτο πιο ςθμαντικό μθχρθςιμοποιοφμενο bit τθν τιμι 1 και ςτα υπόλοιπα μθ χρθςιμοποιοφμενα (εάν υπάρχουν) τθν τιμι 0. Τζλοσ ορίηουμε B:=1 και M το μινυμα με το bit pad. Ζςτω N M ο αρικμόσ των bit ςτο M. Τότε θ είςοδοσ περιορίηεται ςε N M < Συμπλθρϊνουμε το μινυμα M με p μθδενικά μζχρισ ότου το μικοσ του να είναι πολλαπλάςιο του μεγζκουσ μπλοκ, εξαςφαλίηοντασ ότι παίρνουμε τουλάχιςτον ζνα ολόκλθρο μπλοκ. { Διαςπάμε το M ςε k μπλοκ μθνφματοσ Το αποτζλεςμα του UBI υπολογίηεται ωσ εξισ: κακζνα μεγζκουσ N b byte. Ππου, όλεσ οι άλλεσ τιμζσ των και είναι μθδζν, και είναι θ ςυνάρτθςθ κρυπτογράφθςθσ που περιγράφεται ςτθν παράγραφο και είναι το αποτζλεςμα του κάκε «κρίκου» τθσ UBI αλυςίδασ. Η τιμι του tweak για κάκε μπλοκ δθμιουργείται από τθν παρακάτω πρόςκεςθ:

47 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Ο πρϊτοσ όροσ είναι το, το οποίο προςδιορίηει τα πεδία TreeLevel και Type και προαιρετικά μία αρχικι τιμι (offset) για το πεδίο Position. Η ζκφραςθ τροποποιεί μόνο το πεδίο Position. Για κάκε μπλοκ το Position παίρνει ςαν τιμι τον αρικμό από byte που ζχουν επεξεργαςτεί μζχρι τϊρα, ςυμπεριλαμβανομζνου και όλων των byte ςτο τρζχον μπλοκ, ςυν τθν αρχικι τιμι από το. Οι πιο πάνω περιοριςμοί του υπάρχουν για να διαςφαλίςουν ότι θ πρόςκεςθ αυτι δεν πρόκειται ποτζ να δθμιουργιςει κρατοφμενο και ζτςι να επθρεάςει τα άλλα πεδία του tweak. Ο όροσ κζτει το First flag, αλλά μόνο ςτο πρϊτο μπλοκ του UBI. Ο όροσ κάνει δφο πράγματα: για κάκε μπλοκ, εκτόσ από το τελευταίο, το είναι μθδζν, οπότε δεν κάνει τίποτα, και ςτο τελευταίο μπλοκ ενεργοποιεί το Final flag (κζςθ bit 127) και εάν ζχει γίνει padding κζτει το BitPad flag (κζςθ bit 119) Πλόρεισ Προδιαγραφϋσ του Skein Τιμέσ πεδίου Type Ο Skein ζχει πολλζσ πικανζσ παραμζτρουσ. Κάκε μία, είτε προαιρετικι είτε απαιτοφμενι, ζχει το δικό τθσ μοναδικό αναγνωριςτικό τφπο και τιμι. Οι τιμζσ βρίςκονται ςτο πεδίο από 0 ζωσ 63. Ο Skein επεξεργάηεται τισ παραμζτρουσ ςε αρικμθτικά αφξουςα ςειρά των τιμϊν των τφπων, όπωσ φαίνεται ςτον Ρίνακασ 3.6. Σφμβολο Τιμι Ρεριγραφι 0 Key (για MAC και KDF) 4 Configuration block 8 Personalization block 12 Public key (για ψθφιακζσ υπογραφζσ) 16 Key identifier (για KDF) 20 Nonce (για stream cipher ι randomized hashing) 48 Message 63 Output Πίνακασ 3.6: Τιμζσ για το πεδίο Type Το configuration string Το configuration string εμπεριζχει τα εξισ δεδομζνα: Schema Identifier: Είναι κυριολεκτικά μία ςτακερά. Εάν κάποια άλλθ τυποποίθςθ κζλει να ορίςει μία διαφορετικι ςυνάρτθςθ βαςιςμζνθ ςτο UBI και ςτο Threefish, μπορεί να επιλζξει ζνα διαφορετικό schema identifier και να διαςφαλίςει ότι θ ςυνάρτθςι τθσ είναι διαφορετικι από το Skein. Version: Για τθν υποςτιριξθ μελλοντικϊν επεκτάςεων : το μζγεκοσ εξόδου του υπολογιςμοφ ςε bit. Αυτό διαςφαλίηει ότι δφο Skein υπολογιςμοί που διαφζρουν μόνο ςτο μζγεκοσ εξόδου δίνουν διαφορετικά (μθ ςυγγενικά) αποτελζςματα. : tree leaf size encoding. Απενεργοποιθμζνο εάν δεν χρθςιμοποιείται δενδροειδισ δομι hash

48 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN : tree fan-out encoding. Απενεργοποιθμζνο εάν δεν χρθςιμοποιείται δενδροειδισ δομι hash. : max tree height. Απενεργοποιθμζνο εάν δεν χρθςιμοποιείται δενδροειδισ δομι hash. Οι τιμζσ των παραμζτρων του δενδροειδοφσ hash αναλφονται ςτθν παράγραφο Η τοπολογία του 32bit configuration string δίνεται παρακάτω ςτον Ρίνακασ 3.7. Τα δεςμευμζνα πεδία υπάρχουν για μελλοντικζσ επεκτάςεισ επιτρζποντασ τθν προσ τα πίςω ςυμβατότθτα. Offset Μζγεκοσ ςε bit Ονομαςία Ρεριγραφι 0 4 Schema identifier Το ASCII string SHA3 = (0x53, 0x48, 0x41, 0x33), ι ToBytes(0x ,4) 4 2 Version number Ρροςωρινά ςτθν τιμι 1 : ToBytes(1,2) 6 2 Δεςμευμζνο, με τιμι Output length ToBytes(N 0,8) 16 1 Tree leaf size enc. Y l 17 1 Tree fan-out enc. Y f 18 1 Max. tree height Y m Δεςμευμζνο, με τιμι 0 Πίνακασ 3.7: Τα πεδία του configuration string Η ςυνάρτηςη εξόδου Η ςυνάρτθςθ εξόδου Output(G, N 0 ) ζχει τισ ακόλουκεσ παραμζτρουσ: G N 0 θ τιμι αλυςίδασ (chaining value) ο αρικμόσ των απαιτοφμενων bit εξόδου και παράγει N 0 bit ςτθν ζξοδο. Το αποτζλεςμα αποτελείται από τα πρϊτα byte από: Εάν byte. Εάν το μζγεκοσ τθσ εξόδου είναι ζνασ ακζραιοσ αρικμόσ από το τελευταίο byte χρθςιμοποιείται μερικϊσ μόνο

49 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Απλό HASH Ο απλόσ Skein HASH υπολογιςμόσ ζχει τισ ακόλουκεσ ειςόδουσ: N b N 0 M Το εςωτερικό μζγεκοσ καταςτάςεων (internal state size) ςε byte. Ρρζπει να είναι 32, 64, ι 128. Το μζγεκοσ εξόδου ςε bit. Το μινυμα που πρόκειται να γίνει hash, ζνα string μεγζκουσ μζχρι και bit ( byte). Ζςτω C το configuration string όπωσ ορίηεται ςτθν παράγραφο όπου. Ορίηουμε: όπου είναι το αποτζλεςμα του hash Πλήρεσ Skein Σε πλιρθ του μορφι, ο Skein υπολογιςμόσ ζχει τισ εξισ ειςόδουσ: N b N 0 K Y l Y f Y m Το εςωτερικό μζγεκοσ καταςτάςεων (internal state size) ςε byte. Ρρζπει να είναι 32, 64, ι 128. Το μζγεκοσ εξόδου ςε bit. Ζνα κλειδί μεγζκουσ N k byte. Ειςάγουμε ζνα κενό string (N k =0) εάν κανζνα κλειδί δεν είναι επικυμθτό. Μζγεκοσ φφλλου δενδροειδοφσ δομισ Το fan-out τθσ δενδροειδοφσ δομισ Μζγιςτο φψοσ δζντρου L Λίςτα από t ηεφγθ όπου είναι θ τιμι του Type και είναι ζνα string από bit κωδικοποιθμζνο ωσ ζνα string από byte. Ζχουμε: Με τθν απαίτθςθ ότι για κάκε i και. Μία κενι λίςτα L είναι επιτρεπτι. Κάκε μπορεί να είναι το πολφ

50 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Το πρϊτο βιμα είναι να επεξεργαςτοφμε το key. Εάν, θ αρχικι τιμι αποτελείται μόνο από μθδζν. Εάν ςυμπιζηουμε το key με το UBI για να πάρουμε τθν αρχικι τιμι: Ζςτω C το configuration string όπωσ ορίηεται ςτθν παράγραφο Υπολογίηουμε: Οι παράμετροι ζπειτα επεξεργάηονται κατά ςειρά: με μία εξαίρεςθ: εάν οι παράμετροι δζντρου, και δεν είναι όλοι μθδζν, τότε μία πλειάδα ειςόδου με επεξεργάηεται όπωσ ορίηεται ςτθν παράγραφο , αντί για απλά ζνα ςκζτο UBI. Και το τελικό Skein αποτζλεςμα δίνεται από: Δενδροειδήσ δομή Το μινυμα ειςόδου (τφποσ ) είναι ιδιαίτερο και μπορεί να επεξεργαςτεί ςαν ζνα δζντρο. Το Σχιμα 3.10 δίνει ζνα παράδειγμα του πϊσ δουλεφει θ δενδροειδισ δομι. Ελζγχεται από τισ τρεισ παραμζτρουσ δζντρου, και ςτο configuration block. Κανονικά (για μθ δενδροειδζσ hash), αυτζσ είναι όλεσ μθδζν. Εάν δεν είναι όλεσ μθδζν, θ κανονικι UBI ςυνάρτθςθ που επεξεργάηεται το αντικακίςταται από μία καταςκευι ςε μορφι δζντρου. Αυτι είναι μία απλι αντικατάςταςθ τθσ UBI ςυνάρτθςθσ, όλα τα άλλα μζρθ του Skein μζνουν απαράλλακτα. Χρθςιμοποιοφνται οι ακόλουκεσ παράμετροι: Η κωδικοποίθςθ του μεγζκουσ φφλλου. Το μζγεκοσ κάκε φφλλου του δζντρου είναι byte όπου. Η κωδικοποίθςθ του fan-out. Το fan-out ενόσ κόμβου του δζντρου είναι όπου. Το μζγιςτο φψοσ του δζντρου:. (Εάν το φψοσ του δζντρου δεν περιορίηεται, αυτι θ παράμετροσ τίκεται ςτθν τιμι

51 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Η τιμι ειςόδου αλυςίδασ. Αυτι είναι θ είςοδοσ G τθσ UBI κλιςθσ που αντικακιςτά το δενδροειδζσ hash και θ ζξοδοσ τθσ προθγοφμενθσ UBI εξόδου ςτον Skein υπολογιςμό. Τα δεδομζνα μθνφματοσ. Ορίηουμε μζγεκοσ φφλλου (leaf size) το size) το. και μζγεκοσ κόμβου (node Σχιμα 3.10: Μία επιςκόπθςθ του tree hashing Τα δεδομζνα μθνφματοσ είναι ζνα string από bit κωδικοποιθμζνα ςαν ζνα string από byte. Ρρϊτα διαςπάμε το M ςε ζνα ι περιςςότερα μπλοκ μθνφματοσ. Εάν το M είναι ζνα κενό string τότε βάηουμε τα δεδομζνα ςε ζνα μόνο μπλοκ μθνφματοσ το οποίο είναι από μόνο του ζνα κενό string. Εάν το M δεν είναι το κενό string τότε όλα τα μπλοκ,, περιζχουν bit και το μπλοκ περιζχει μεταξφ και bit. Ορίηεται το πρϊτο επίπεδο του tree hashing: Σθμειϊςτε ότι ςτο tweak, το πεδίο του TreeLevel ζχει τθν τιμι 1 και ςτο Position προςτίκεται το αρχικό offset (ςε byte) του message block. Το υπόλοιπο του δζντρου ορίηεται επαναλθπτικά. Για κάκε επίπεδο χρθςιμοποιοφμε τουσ παρακάτω κανόνεσ. Εάν το ζχει μζγεκοσ τότε το αποτζλεςμα ορίηεται από τθ ςχζςθ

52 ΚΕΦΑΛΑΙΟ 3 Ο ΑΛΓΟΙΘΜΟΣ SKEIN Εάν το ζχει μζγεκοσ μεγαλφτερο από και τότε ζχουμε ςχεδόν φτάςει ςτο μζγιςτο φψοσ του δζντρου. Το αποτζλεςμα δίνεται από τθ ςχζςθ: Εάν καμία από αυτζσ τισ ςυνκικεσ δεν υφίςτανται τότε παράγουμε το επόμενο επίπεδο του δζντρου. Διαςπάμε το ςε μπλοκ όπου όλα τα μπλοκ εκτόσ από το τελευταίο ζχουν byte και το τελευταίο ζχει μεταξφ και. Ζπειτα ορίηουμε: και εφαρμόηουμε τουσ παραπάνω κανόνεσ ξανά ςτο. Το αποτζλεςμα είναι θ ζξοδοσ του tree hashing. Γίνεται θ αλυςιδωτι είςοδοσ τθσ επόμενθσ UBI ςυνάρτθςθσ. (προσ το παρόν δεν ζχουν οριςτεί ενδιάμεςοι τφποι μεταξφ των T msg και T out, ζτςι το G 0 γίνεται θ αλυςιδωτι είςοδοσ του μεταςχθματιςμοφ εξόδου.) Κακϊσ το κάκε κόμβοσ του δζντρου ζχει fan-out τουλάχιςτον 2, ζτςι το μζγεκοσ του μθνφματοσ ειςόδου αυξάνεται λογαρικμικά κακϊσ αυξάνεται γραμμικά το φψοσ του δζντρου

53 ΚΕΥΑΛΑΙΟ 4 ΟΙ ΑΡΦΙΣΕΚΣΟΝΙΚΕ ΣΨΝ ΚΤΚΛΨΜΑΣΨΝ Στο παρόν κεφάλαιο κα παρουςιαςτοφν αναλυτικά τα τζςςερα κυκλϊματα και οι αρχιτεκτονικζσ τουσ όπωσ αυτά γράφτθκαν και προςομοιϊκθκαν κατά τθν επεξεργαςία τθσ διπλωματικισ εργαςίασ. Τα τζςςερα κυκλϊματα είναι τα εξισ: 1. Κφκλωμα μικρισ επιφάνειασ. Είναι ζνα κφκλωμα κατά τον ςχεδιαςμό του οποίου βαςικόσ γνϊμονασ ιταν το παραγόμενο κφκλωμα να ζχει μικρι επιφάνεια (low area). 2. Κφκλωμα υψθλϊν επιδόςεων με περιοριςμζνθ είςοδο (64 bit). Ο γνϊμονασ για τθν καταςκευι του κυκλϊματοσ αυτοφ ιταν να ζχει όςο το δυνατόν μεγαλφτερθ ταχφτθτα κατά τθν παραγωγι των απαιτοφμενων hash. Κάτι που μπορεί αντικειμενικά να μετρθκεί με τθ χριςθ του throughput που ζχει το κάκε κφκλωμα. 3. Κφκλωμα υψθλϊν επιδόςεων χωρίσ περιοριςμζνθ είςοδο (512 bit). Το κφκλωμα αυτό δθμιουργικθκε ςφμφωνα με το προθγοφμενο και με ςκοπό να γίνει θ ςφγκριςι του με αυτό ωσ προσ τθν ταχφτθτα τουσ. Είναι το μόνο ςτο οποίο δεν υπάρχει περιοριςμόσ ςτα bit ειςόδου. 4. Απλό κφκλωμα όμοιο με το δεφτερο χωρίσ pipeline. Σκοπόσ του κυκλϊματοσ αυτοφ είναι θ ςφγκριςι του με το δεφτερο, αφοφ μοναδικι διαφορά τουσ είναι θ ζλλειψθ pipeline από το παρόν.

54 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ 4.1 ΓΕΝΙΚΗ ΠΕΡΙΓΡΑΥΗ Τα κυκλϊματα υλοποιοφν δφο εκδοχζσ του Skein: αυτι τθσ απλισ ςυνάρτθςθσ κατακερματιςμοφ (HASH) αλλά και αυτι τθσ ςυνάρτθςθσ κατακερματιςμοφ με χριςθ κλειδιοφ (MAC). Η επιλογι μίασ εκ των δφο γίνεται κατά τθν εκκίνθςθ ενόσ νζου μθνφματοσ μζςω του ςιματοσ ειςόδου sel_mac το οποίο όταν βρίςκεται ςτθ ςτάκμθ 0 το κφκλωμα λειτουργεί ςε mode απλοφ hash και όταν είναι ςε ςτάκμθ 1 ςε mode MAC. Τα δεδομζνα μπαίνουν κατά ριπάσ ςε 8 πακζτα των 64 bit το κακζνα, όταν υπάρχουν. Κάκε ζνα ειςάγεται ςε κάκε ζνα παλμό ξεκινϊντασ δφο παλμοφσ μετά το ςιμα new_msg το οποίο πρζπει να μεταβεί ςτθν κατάςταςθ 1 και για χρόνο ενόσ παλμοφ μόνο. Οπότε, αφοφ περάςουν 10 παλμοί από τθν πρϊτθ ςτιγμι εκκινείται το πρϊτο threefish. Για να ειςάγουμε παραπάνω δεδομζνα από 512 bit επαναλαμβάνουμε τθν όλθ διαδικαςία μία περίοδο του threefish από τθ ςτιγμι τθσ ενεργοποίθςθσ του ςιματοσ new_msg. Ππωσ και ςτο πρότυπο του αλγορίκμου, το μζγεκοσ του μθνφματοσ και του κλειδιοφ (αν υπάρχει) είναι από 0 μζχρι bit ( byte). Ζτςι για να γίνει θ είςοδοσ αυτϊν των μθνυμάτων πρζπει να ακολουκθκεί θ εξισ διαδικαςία: 1. Κάκε φορά θ όλθ διαδικαςία εκκινείται μζςω του new_msg όπωσ περιγράφθκε παραπάνω. Αυτό ιςχφει όχι για τθν πρϊτθ μόνο φορά (πρϊτα 512 bit) αλλά και για τισ υπόλοιπεσ (αν υπάρχουν). 2. Εάν το μινυμα ζχει μζγεκοσ 0 bit, τότε μαηί με το πρϊτο πακζτο των 64 bit ειςάγεται και ο αρικμόσ 0 ςτθν είςοδο msg_len (αρικμόσ χριςιμων bit από τα 64) και ταυτόχρονα ενεργοποιείται το ςιμα last_block. 3. Εάν το μινυμα ζχει παραπάνω bit, τότε ειςάγονται όςα ολόκλθρα πακζτα των 64 bit υπάρχουν και μόνο ςτο τελευταίο μαηί με τθν είςοδο κζτουμε ςτο msg_len τον αρικμό των bit που είναι ενεργά ςτο πακζτο αυτό και ενεργοποιοφμε το ςιμα last_block ταυτόχρονα. Στθν περίπτωςθ που χρθςιμοποιείται το mode MAC, μετά τθν είςοδο των τελευταίων bit του κλειδιοφ δεν ειςάγουμε ξανά δεδομζνα ςτθν αμζςωσ επόμενθ περίοδο αλλά ςτθν μεκεπόμενθ κακϊσ μεςολαβεί το UBI του configuration κάτι που απαιτεί ζνα ολόκλθρο threefish για να γίνει. Κατόπιν ξεκινάει θ ειςαγωγι των data δεδομζνων όπωσ ακριβϊσ γίνεται και ςτθν περίπτωςθ του κλειδιοφ. Αφοφ και τα τελευταία bit του μθνφματοσ ζχουν μπει, το αποτζλεςμα κα βγει ςτθν ζξοδο δφο περιόδουσ μετά, αφοφ ακολουκοφν με τθ ςειρά ζνα threefish για το άμεςα ειςαχκζν μινυμα και ακόμθ ζνα για το UBI εξόδου (=1 threefish). Πταν το αποτζλεςμα είναι ζτοιμο κα εμφανιςτεί ςτθν ζξοδο MD (Message Digest) μαηί με το ςιμα valid μζςα ςε 8 παλμοφσ. Εφόςον το μζγεκοσ ςε bit τθσ εξόδου MD είναι 64, ςε 8 παλμοφσ κα βγουν ςυνολικά 8 64=512 bit

55 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Τζλοσ, μποροφμε να ειςάγουμε νζο μινυμα και άρα νζα δεδομζνα μετά από ακριβϊσ 2 περιόδουσ από τθ ςτιγμι που ενεργοποιικθκε το ςιμα new_msg. Πλα τα παραπάνω ιςχφουν ζτςι και ςτα τρία κυκλϊματα με είςοδο 64 bit (1, 2, 4). Για τθν περίπτωςθ του (3) κυκλϊματοσ χωρίσ περιοριςμζνθ είςοδο ιςχφουν τα παραπάνω με τθ διαφορά ότι ςε ζνα παλμό ειςάγονται μονομιάσ 512 bit και μετά από ζνα παλμό από τθν ενεργοποίθςθ του new_msg. Και πάλι όταν φτάςουμε ςτα τελευταία bit, είτε μθνφματοσ είτε κλειδιοφ, ειςάγουμε ςτθν είςοδο msg_len τον αρικμό των ενεργϊν bit από τα 512 και ενεργοποιοφμε τθν είςοδο last_block. 4.2 ΣΟ ΚΤΚΛΨΜΑ ΜΙΚΡΗ ΕΠΙΥΑΝΕΙΑ Ειςαγωγό Στόχοσ τθσ ςχεδίαςθσ ιταν να χρθςιμοποιθκεί πολφ λιγότερθ επιφάνεια για τθν υλοποίθςι του, δίνοντάσ του τθ δυνατότθτα να χρθςιμοποιείται ςε εφαρμογζσ που ζχουν μία τζτοια απαίτθςθ όπωσ είναι κινθτζσ εφαρμογζσ (mobile) αλλά και ςε μεγάλεσ εφαρμογζσ ωσ ζνα τμιμα κυκλϊματοσ (component) ζτοιμο προσ χριςθ. Εφαρμογζσ που δεν ζχουν μεγάλεσ απαιτιςεισ ςε ταχφτθτα. Επιπλζον, όπωσ είναι γνωςτό, τα κυκλϊματα ςιμερα πάςχουν, πλζον, και από ρεφματα διαρροισ των τρανηίςτορ ςτθν καταπολζμθςθ των οποίων ςυμβάλει και θ μείωςθ τθσ επιφανείασ, δθλαδι θ χρθςιμοποίθςθ λιγότερων τρανηίςτορ. Ακόμθ είναι γνωςτό ότι όςο πιο μικρά είναι τα παραγόμενα κυκλϊματα τόςο πιο μικρό και το κόςτοσ καταςκευισ τουσ (ASIC) ι αγοράσ τουσ (FPGA) Για να γίνει κάτι τζτοιο εφικτό, επακόλουκο ιταν να γίνει ζνασ ςυμβιβαςμόσ ωσ προσ τθν ταχφτθτα του κυκλϊματοσ. Ζτςι ςε αυτι τθ ςχεδίαςθ δεν ζγινε κανζνα «ξετφλιγμα» των γφρων του αλγορίκμου όπωσ ζγινε ςτα άλλα τρία κυκλϊματα. Άρα για να εκτελεςτεί ζνασ γφροσ όπωσ περιγράφεται ςτον αλγόρικμο κα χρειαςτεί χρόνο μίασ ολόκλθρθσ περιόδου του ρολογιοφ. Ακόμθ, για τθν παραγωγι κλειδιϊν θ μονάδα παραγωγισ κλειδιϊν (subkey generator) χρειάηεται χρόνο μίασ περιόδου για τθν παραγωγι και είςοδο των δεδομζνων ςτουσ shift register. Συνολικά το κφκλωμα κα κάνει για να παράξει ζνα αποτζλεςμα το threefish 72 γφρουσ 1clock + 1clock=73clock. Με το μθ ξετφλιγμα των γφρων επιτυγχάνονται λιγότερα MIX ςυνολικά αφοφ εάν είχαμε ξετυλίξει 8 γφρουσ όπωσ ςτα άλλα τρία κυκλϊματα κα είχαμε 8 4=32 MIX ενϊ τϊρα ζχουμε μόνο 4, άρα μία διαφορά των 28 MIX τα οποία περιλαμβάνουν από ζναν ακροιςτι 64 bit και 64 πφλεσ XOR το κακζνα Interface και Βαςικϊ Component Το κφκλωμα, όπωσ ζγινε φανερό και από τα παραπάνω, είναι ςφγχρονο με τθν είςοδο clock το ρολόι του κυκλϊματοσ. Πλεσ οι αλλαγζσ κατάςταςθσ και γενικότερα όλεσ οι ενζργειεσ ςυμβαίνουν ςτθν ανερχόμενθ παρυφι του clock. Η είςοδοσ reset είναι αςφγχρονθ και αυτό που κάνει είναι να κζτει το όλο κφκλωμα ςτθν αρχικι του

56 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ κατάςταςθ για όςο χρόνο ζχει τθν τιμι 1. Η είςοδοσ enable είναι θ είςοδοσ επίτρεψθσ τθσ λειτουργίασ του κυκλϊματοσ. Το κφκλωμα λειτουργεί μόνο και για όςο θ είςοδοσ enable ζχει τθν τιμι 1.Συνοπτικά, οι υπόλοιπεσ είςοδοι/ζξοδοι του κυκλϊματοσ είναι: Είςοδοι Ζξοδοι Συμβολιςμόσ Bit Ρεριγραφι Συμβολιςμόσ Bit Ρεριγραφι msg 64 Μινυμα ειςόδου md 64 Hash τιμι length 7 Χρθςιμοποιοφμενα bit valid 1 Ειδοποίθςθ εγκυρότθτασ new_msg 1 Ειδοποίθςθ ειςόδου κάκε 512 bit last_block 1 Ειδοποίθςθ τελευταίων bit sel_mac 1 Επιλογι HASH ι MAC Πίνακασ 4.1: Είςοδοι/Ζξοδοι του κυκλϊματοσ Ππωσ περιγράφθκε και πιο πάνω, θ είςοδοσ msg είναι θ κφρια είςοδοσ των δεδομζνων τα οποία ςτθ ςυνζχεια μπαίνουν ςτθν μονάδα pad για να δθμιουργθκεί το απαιτοφμενο από τον αλγόρικμο string των 512 bit. Η είςοδοσ length είναι αυτι που δίνει το ακριβζσ μζγεκοσ του τελευταίου πακζτου των 64 bit. Αυτό γίνεται ςε ςυνεργαςία με τθν είςοδο last_block με τθ διαδικαςία που περιγράφθκε προθγουμζνωσ. Η new_msg ενεργοποιεί το κφκλωμα για να δεχτεί το νζο μινυμα και ςτθ ςυνζχεια ειδοποιεί για τα νζα πακζτα που ζρχονται. Η είςοδοσ sel_mac όταν βρίςκεται ςτθ ςτάκμθ 0 το κφκλωμα λειτουργεί ςαν απλό hash και όταν βρίςκεται ςτθ ςτάκμθ 1 ςαν MAC. Η ζξοδοσ του κυκλϊματοσ είναι το md το οποίο βγάηει τα δεδομζνα ςε 8 τμιματα των 64 bit το κακζνα. Και θ valid είναι ςε ςτάκμθ 1 για όςο χρόνο τα δεδομζνα εξζρχονται. Στο Σχιμα 4.1 φαίνονται τα βαςικά component που απαρτίηουν το κφκλωμα και οι μεταξφ τουσ διαςυνδζςεισ. Τα βαςικά από τα οποία είναι: Ονομαςία I/0 Ρεριγραφι Input Block 8/6 Μετατρζπει τα δεδομζνα ειςόδου από 8 πακζτα των 64 bit ςε ζνα των 512 bit και παράγει τα ςιματα first, final, bitpad και position Control Unit 7/11 Συντονίηει όλα τα υπόλοιπα και αςκεί τον ζλεγχο του κυκλϊματοσ Rounds 6/1 Ρεριζχει τα MIX και πραγματοποιεί ζνα γφρο (round) Key 8/1 Ραράγει τθν κατάλλθλθ ςτιγμι τα κατάλλθλα subkey Generator Tweak Generator Output Block 2/2 Διαςπά το μινυμα εξόδου ςε τμιματα των 64 bit. Πίνακασ 4.2: Τα component του κυκλϊματοσ 5/1 Δθμιουργεί το κατάλλθλο tweak ανάλογα με τθν είςοδο και τθν κατάςταςθ

57 Σχιμα 4.1: Γενικι τοπολογία του κυκλϊματοσ. Φαίνονται τα component που το απαρτίηουν και οι μεταξφ τουσ διαςυνδζςεισ.

58 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Το component input block είναι ο padder του ςυςτιματοσ. Εκτόσ από αυτό επιτελεί και άλλεσ λειτουργίεσ του ςυςτιματοσ και αυτζσ είναι να παράγει τα ςιματα first, final, bitpad, position. Ο αλγόρικμοσ για τθ λειτουργία του χρειάηεται να γνωρίηει εάν το μπλοκ δεδομζνων που επεξεργάηεται είναι το πρϊτο ι το τελευταίο, εάν ζχει γίνει θ διαδικαςία του bitpad, όπωσ περιγράφεται ςτο πρότυπο, και πόςα είναι τα δεδομζνα που ζχουν επεξεργαςτεί μζχρι ςτιγμισ. Αυτά χρθςιμοποιοφνται ςαν είςοδοι από το tweak generator και από το control unit. Τα τζςςερα αυτά ςιματα πρζπει να χρθςιμοποιθκοφν μόνο ζνα παλμό ρολογιοφ μετά και τθν είςοδο του τελευταίου πακζτου, δθλαδι 10 παλμοφσ μετά τθν ενεργοποίθςθ τθσ ειςόδου new_msg, και μόνο τότε. Πςο για το ςιμα M512, αυτό είναι το παραγόμενο string για να γίνει hash και παραμζνει μετά τθν δθμιουργία του μζχρι τθν αντικατάςταςι του από το επόμενο string. Το ςιμα start_keygen ενεργοποιείται κακϊσ μπαίνει και το τελευταίο πακζτο των 64 bit και προκαλεί τθν εκκίνθςθ του εςωτερικοφ counter του control unit. Το rounds είναι το component που υλοποιεί το μεγαλφτερο μζροσ του threefish. Ρεριζχει τα 4 MIX και το permute κακϊσ και τουσ adder για τον υπολογιςμό του αποτελζςματοσ του κάκε γφρου. Είναι και αυτό ζνα ςφγχρονο κφκλωμα, αφοφ ςτο τζλοσ του και πριν τθν ζξοδό του R512 υπάρχει ζνασ register. Ζχει εκτόσ από τθν είςοδο text_in τθν είςοδο skey ςτθν οποία μπαίνει το subkey κάκε 4 γφρουσ. Στουσ υπόλοιπουσ δεν ζχει ςθμαςία τι ειςάγεται αφοφ ο adder παρακάμπτεται από τον εςωτερικό multiplexer. Πμωσ για τθ ςωςτι λειτουργία του multiplexer και τθν επιλογι των κατάλλθλων ςτακερϊν περιςτροφισ από τα MIX απαραίτθτθ είναι θ είςοδοσ του αρικμοφ του τρζχοντοσ γφρου από το ςιμα cntr_val (τα πρϊτα 3 bit). Το component rounds μαηί με τον multiplexer ειςόδου (512bit MUX 4to1) δθμιουργοφν τον μικρό κφκλο επανάλθψθσ για τουσ 72 γφρουσ. Για να ολοκλθρωκεί όμωσ θ διαδικαςία του threefish πρζπει να γίνει μία ακόμθ πρόςκεςθ subkey και μία XOR του αποτελζςματοσ με το αρχικό μινυμα από τα component 8x64bit Adders και XOR αντίςτοιχα. Ο προαναφερκείσ multiplexer ειςόδου (512bit MUX 4to1) ζχει το ρόλο τθσ ειςόδου των νζων δεδομζνων κάκε 73 παλμοφσ και το κλείςιμο του κφκλου για τουσ άλλουσ 72. Αυτά που ειςάγονται μποροφν να είναι είτε αυτά που παρζχονται εξωτερικά τροποποιθμζνα από τον padder είτε κάποιεσ ςτακερζσ τιμζσ ςτισ περιπτϊςεισ που το μπλοκ που ξεκινάει είναι είτε configuration ( 0x 1334 ) είτε output ( 0x00 ) (οι τιμζσ αυτζσ εξθγοφνται παρακάτω). Ζνα άλλο ςθμαντικό component του ςυςτιματοσ είναι το tweak generator, δουλειά του οποίου είναι να ςυγκεντρϊνει τα ςιματα first, final, bitpad και position από το input block και το ςιμα type από το control unit και να ςχθματίηει το ςωςτό string tweak που ειςάγεται ςτο component key generator. Στισ περιπτϊςεισ που το type του μπλοκ είναι cfg (configuration) ι out (output) τότε οι άλλεσ είςοδοι δεν χρθςιμοποιοφνται αλλά παράγονται εςωτερικά κακϊσ είναι πάντα ίδιεσ ςε αυτζσ τισ περιπτϊςεισ

59 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Το key generator, λοιπόν, είναι το component που δθμιουργεί ςειριακά όλα τα subkey που χρειάηονται από το component rounds. Ζχει ςαν ειςόδουσ του τα ςιματα tweak προερχόμενο από το component tweak generator, το key προερχόμενο από τον multiplexer κλειδιοφ (512bit MUX 3to1) και το ςιμα cntr_val (round#) προερχόμενο από το control unit. Τα τρία αυτά ςιματα είναι απαραίτθτα για να γίνει θ παραγωγι των subkey. Ακόμθ ειςάγονται τα ςιματα en_keygen_shr (enable key generator shift registers) και load_keygen_shr (load key generator shift registers) τα οποία και ελζγχουν τθ λειτουργία του κυκλϊματοσ και κα αναλυκοφν διεξοδικά παρακάτω. Χριςιμο κα ιταν να γνωρίηουμε ότι για να αποκθκευτοφν τα δεδομζνα ςτουσ εςωτερικοφσ shift register και να παραχκεί το πρϊτο subkey χρειάηεται ζνασ παλμόσ ρολογιοφ. Φυςικά δεν λείπουν και τα ςιματα clock, enable και reset τα οποία φανερϊνουν ότι και αυτό το component είναι ςφγχρονο. Ο multiplexer κλειδιοφ (512bit MUX 3to1) είναι αυτόσ που μαηί με τα component rounds, 8x64bit Adders, XOR και key generator κλείνουν το μεγάλο κφκλο δεδομζνων κακϊσ ςχεδόν πάντα το αποτζλεςμα του threefish χρθςιμοποιείται ςαν νζο κλειδί ςτο επόμενο μπλοκ. Δεν χρθςιμοποιείται μόνο όταν ξεκινάει θ λειτουργία του αλγορίκμου ςε mode MAC όπου και ειςάγεται θ ςτακερά 0 ( 0x00 ) και όταν ξεκινά ςε mode HASH όπου και ειςάγεται θ ςτακερά 0x49 33 (επεξθγοφνται παρακάτω). Το component output block είναι αυτό που αναλαμβάνει να μετατρζψει τα δεδομζνα εξόδου (X512) από ζνα μεγάλο string των 512 bit ςε 8 μικρότερα των 64 bit και να τα εξάγει διαδοχικά από τθν ζξοδο md (message digest) που είναι και θ τελικι ζξοδοσ του κυκλϊματοσ. Ταυτόχρονα με τθν ζξοδο των δεδομζνων ενεργοποιείται και θ ζξοδοσ valid του component θ οποία είναι και ζξοδοσ του κυκλϊματοσ ειδοποιϊντασ για τθν εγκυρότθτα των αποτελεςμάτων. Ο register που υπάρχει δίπλα ςτο component rounds είναι αυτόσ που κρατά αποκθκευμζνο το αρχικό μινυμα το οποίο και γίνεται xor με το αποτζλεςμα τθσ πρόςκεςθσ του τελευταίου subkey. Είναι και αυτόσ κετικά ακμοπυροδότθτοσ και ελεγχόμενοσ αςφγχρονα από το reset και ζχει ςιμα επίτρεψθσ το enable, όπωσ όλα τα ςτοιχεία μνιμθσ του κυκλϊματοσ. Ελζγχεται κατευκείαν από το component control unit και ενεργοποιείται μόνο ςτον πρϊτο γφρο οπότε και ειςάγονται τα δεδομζνα ςτο component rounds. Το control unit είναι ο ενορχθςτρωτισ όλου του κυκλϊματοσ. Επιλζχκθκε μία ςυγκεντρωτικι λογικι ελζγχου λόγω τθσ πολυπλοκότθτασ του ςυςτιματοσ και τθσ όχι πάντα άμεςθσ εξάρτθςθσ των ςτοιχείων που τθν απαρτίηουν. Ρεριζχει τον counter υπεφκυνο για τθ λειτουργία του component rounds και για τθν παραγωγι του ςιματοσ cntr_val Σο Component Input Block Ραραπάνω παρουςιάςτθκε θ ςυνολικι δομι του κυκλϊματοσ και τα μζρθ από τα οποία αποτελείται. Στθ ςυνζχεια κα παρουςιαςτοφν ζνα ζνα τα component αυτά ξεκινϊντασ από το input block. Δεν κα επεκτακοφμε περαιτζρω ςτθν εςωτερικι δομι

60 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ των component που το ςχθματίηουν μιασ και είναι βαςικζσ λογικζσ και λίγο πολφ γνωςτζσ ςτον κακζνα. Ππωσ βλζπουμε το Σχιμα 4.2 κα δοφμε ότι το input block χωρίηεται ςε δφο τμιματα, όςεσ είναι και οι εργαςίεσ που πρζπει να κάνει: να κάνει pad ςτα τμιματα των δεδομζνων που ζρχονται και να δθμιουργιςει όλα εκείνα τα ςιματα για τισ ιδιότθτεσ του τρζχοντοσ μπλοκ δεδομζνων (first, final, bitpad, position). Το πρϊτο γίνεται ςτα αριςτερά, όπωσ το βλζπουμε, και το δεφτερο ςτα δεξιά. Επιπλζον υπάρχει και ο counter ο οποίοσ πραγματοποιεί τον ζλεγχο ςτο εςωτερικό του input block. Ζτςι λοιπόν ςτο τμιμα του padder εφαρμόηεται φιλτράριςμα του κάκε πακζτου 64 bit που ειςάγεται με δφο ςκοποφσ: να αποκοποφν όλα τα μθ χρθςιμοποιοφμενα bit του τελευταίου πακζτου κάνοντάσ τα 0 και να γίνει 1 το αμζςωσ επόμενο bit από τα χρθςιμοποιοφμενα εάν εφαρμοςτεί bitpad, όπωσ ακριβϊσ λζει θ περιγραφι του αλγορίκμου. Αυτό πετυχαίνεται με δφο μάςκεσ : μία μάςκα που γίνεται λογικό and με τα δεδομζνα και μθδενίηει όπου ζχει 0 τθν είςοδο και μία μάςκα που γίνεται λογικό or και ενεργοποιεί το αντίςτοιχο bit δεδομζνων με αυτό που είναι 1 ςε αυτιν. Αυτζσ ζχουν ονομαςτεί and_mask και or_mask αντίςτοιχα. Για τθ δθμιουργία τθσ and_mask δθμιουργοφνται 3 διαφορετικζσ, οι οποίεσ ζχουν ωσ εξισ: 1. and_mask_1: Είναι αυτι που κάνει τθ βαςικι δουλειά, δθλαδι να αποκόπτει όςα bit είναι αχρθςιμοποίθτα μθδενίηοντάσ τα. Ξεκινάμε από ζνα string των 65 bit το οποίο ζχει όλα του τα bit 0 εκτόσ από αυτό ςτθ κζςθ 64 (το πιο ςθμαντικό). Αυτό το string γίνεται αρικμθτικό shift προσ τα δεξιά (SRA Shift Right Arithmetic) κατά τόςεσ κζςεισ όςα είναι και τα χρθςιμοποιοφμενα bit. Άρα ζτςι από το bit 63 και κάτω ζχουμε τόςουσ άςςουσ όςα και τα bit που πρζπει να περάςουν ανεπθρζαςτα, ενϊ όλα τα άλλα κα μθδενιςτοφν. 2. and_mask_2: Είναι μία μάςκα για τθν περίπτωςθ που το πακζτο δεν είναι το τελευταίο και άρα δεν χρειάηεται κάποια αλλαγι. Οπότε όςο δεν ζχει ενεργοποιθκεί το ςιμα last_block τα bit τθσ είναι όλα 1 και τα δεδομζνα περνάνε αναλλοίωτα. 3. and_mask_3: Είναι για τθν περίπτωςθ που ζχει παρζλκει το τελευταίο πακζτο και μετά. Τότε θ είςοδοσ πρζπει να κλείςει και όλα τα bit από τθ ςτιγμι αυτι και μετά να είναι 0. Οι τρείσ αυτζσ μάςκεσ ςυνδυάηονται μεταξφ τουσ με τθν εξισ λογικι: δθμιουργϊντασ τθν μάςκα θ οποία πρόκειται να γίνει λογικό and με τα δεδομζνα. Πςο για τθ μάςκα or_mask αυτι δθμιουργείται πιο απλά με τθ χριςθ ενόσ λογικοφ shift δεξιά (SRL Shift Right Logical) ςτον οποίο ειςάγεται ζνα string των 64 bit όπου ανάλογα εάν χρειάηεται να γίνει bitpad ζχει ζνα 1 ι ζνα 0 ςτο bit 63 και όλα τα άλλα είναι

61 Σχιμα 4.2: Το εςωτερικό του Input Block. Τα component που το απαρτίηουν και οι μεταξφ τουσ διαςυνδζςεισ.

62 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Τα δεδομζνα λοιπόν, πριν ειςζλκουν ςτον shift register για να ςυγκεντρωκοφν μαηί με τα άλλα και να ςχθματίςουν τα 512 bit και να ςυνεχίςουν όλα μαηί, ακολουκοφν τθν εξισ διαδρομι. Αρχικά γίνονται bitwise and με τθν and_mask και ζπειτα το αποτζλεςμα γίνεται bitwise or με τθν or_mask. Ζπειτα μπαίνουν ςτο component reverse unit όπου και γίνεται θ περιςτροφι των byte τθσ κάκε λζξθσ κακϊσ ζτςι περιγράφεται ςτο πρότυπο του αλγορίκμου (Ραράγραφοσ 3.4.2). Στο reverse unit αλλάηει θ δφναμθ των byte κακϊσ το πιο ςθμαντικό γίνεται το λιγότερο ςθμαντικό, το δεφτερο πιο ςθμαντικό γίνεται το δεφτερο λιγότερο ςθμαντικό και οφτω κακεξισ. Το reverse unit φυςικά είναι ζνα αςφγχρονο κομμάτι του κυκλϊματοσ το οποίο αποτελείται μόνο από καλϊδια τα οποία αλλάηουν κζςεισ. Ζπειτα τα δεδομζνα ειςάγονται ςτον left shift register ςτα 64 λιγότερο ςθμαντικά bit όπου και μετατοπίηονται κάκε φορά μία κζςθ (64 bit) αριςτερά για να μπει το νζο πακζτο μζχρι να ςυμπλθρωκοφν τα 512 bit. Πταν ολοκλθρωκεί αυτι θ διαδικαςία τα δεδομζνα είναι ζτοιμα για χριςθ. Στο δεξί τμιμα του ζχουμε όπωσ είπαμε τθν παραγωγι των ςθμάτων first, final, bitpad και position. Το position παράγεται με τισ διαδοχικζσ προςκζςεισ του αρικμοφ των ειςαγόμενων bit κάκε φορά. Οπότε ξεκινϊντασ με τον αρικμό 0 αρχίηουμε να προςκζτουμε τον αρικμό 64 με κάκε πακζτο δεδομζνων που ειςάγεται εκτόσ εάν είναι το τελευταίο οπότε και προςκζτουμε τον αρικμό των bit που ειςάγεται από το ςιμα msg_len (length εξωτερικά). Ζπειτα δεν προςτίκεται κανζνασ νζοσ αρικμόσ μζχρι να γίνει επαναφορά ολόκλθρου του component μζςω του ςιματοσ reset_input. Για να γίνει αυτό, ζνασ πολυπλζκτθσ επιλζγει εάν κα προςτεκεί θ ςτακερά 64 ι θ τιμι του ςιματοσ msg_len με select ςιμα το last_block το οποίο ενεργοποιείται ταυτόχρονα με τθν είςοδο του μεγζκουσ και των δεδομζνων. Ζπειτα ο register που αποκθκεφει το άκροιςμα απενεργοποιείται μόνιμα μζςω του ςιματοσ last_block_tmp το οποίο παράγει το Flip-Flop που δθμιουργεί τθν ζξοδο last (οπότε last = last_block_tmp). Φυςικά πριν από αυτό ο register δεν λειτουργεί ςυνεχϊσ αλλά μόνο όταν μπαίνουν δεδομζνα ςτον left shift register. Και οι δφο τουσ ελζγχονται από το ίδιο ςιμα enable_bfr (enable buffer) το οποίο παράγει ο εςωτερικόσ του input block counter. Το ςιμα αυτό παραμζνει ενεργό για 8 παλμοφσ. Αφοφ λοιπόν παραχκεί το άκροιςμα των bit αυτό πρζπει να μετατραπεί από άκροιςμα των bit ςε άκροιςμα των byte όπωσ και χρειάηεται ο αλγόρικμοσ. Αυτό γίνεται με τθ χριςθ ενόσ δεφτερου adder (ADD2) ο οποίοσ όποτε τα bit δεν είναι πολλαπλάςιο του 8, δεν ςχθματίηουν δθλαδι ακζραιο αρικμό από byte τότε προςκζτει μία μονάδα ςτα 96 πιο ςθμαντικά bit του ακροίςματοσ. Το αποτζλεςμα εξζρχεται μζςω του ςιματοσ position. Εδϊ παράγεται και το ςιμα bitpad το οποίο είναι ουςιαςτικά ο αρικμόσ που προςτίκεται. Πςον αφορά το ςιμα first αυτό παράγεται από ζνα flip-flop (MSG0: 1bit DFF First)το οποίο ξεκινάει από τθν τιμι 1 και όταν το ςιμα end_block ενεργοποιθκεί αυτό γίνεται 0 ςτον επόμενο παλμό και παραμζνει ζτςι μζχρι να γίνει επαναφορά

63 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Αντίςτοιχα το last παράγεται από ζνα flip-flop (MSG0: 1bit DFF Last) με αρχικι τιμι 0 και γίνεται 1 όταν ενεργοποιθκεί θ είςοδοσ last_block. Και οι δφο αυτζσ ζξοδοι επιτρζπεται να ενεργοποιθκοφν μόνο ςτον τελευταίο από τουσ 8 παλμοφσ με τθ χριςθ του ςιματοσ en_output. Πςον αφορά τον counter είναι ζνασ απλόσ counter 8 καταςτάςεων ο οποίοσ απαρικμεί τουσ κτφπουσ του ρολογιοφ και ζπειτα παγϊνει περιμζνοντασ να ενεργοποιθκεί το ςιμα start_counter το οποίο και το εκκινεί. Για να το κάνει αυτό χρθςιμοποιεί ζνα T-flip-flop και γι αυτό πρζπει το ςιμα εκκίνθςθσ να ενεργοποιείται ζνα παλμό νωρίτερα. Ραράγει τα ςιματα που προαναφζρκθκαν και επιπλζον ςτο τζλοσ ενεργοποιεί και το ςιμα start_keygen για να ξεκινιςει ο counter εςωτερικά του control unit ειδοποιϊντασ ότι το μινυμα είναι ζτοιμο για ειςαγωγι ςτθ μονάδα rounds Σο Component Rounds Το component αυτό είναι θ καρδιά του αλγορίκμου κακϊσ ςε αυτό γίνονται όλεσ οι πράξεισ που απαιτοφνται για τθ διάχυςθ τθσ πλθροφορίασ και τθν παραγωγι του hash αποτελζςματοσ. Ρεριζχει 4 MIX και ζνα permute όπωσ και 8 adder για τισ προςκζςεισ των subkey. Αρχικά όμωσ και πριν περιγράψουμε το component το ίδιο, πρζπει να γίνει θ περιγραφι κάποιων ςθμαντικϊν component που το απαρτίηουν. Αυτά είναι το MIX και το permute Το MIX Το MIX ενϊ όπωσ περιγράφεται ςτον αλγόρικμο είναι πολφ απλό ςτθ υλοποίθςι του, αυτό που δθμιουργικθκε ςτθν ςυγκεκριμζνθ περίπτωςθ είναι ελαφρϊσ πιο ςφνκετο. Αυτό γιατί ςτθν μία περιζχει μόνο ζναν 64bit adder, μία περιςτροφι (shifter) και μία bitwise XOR, ενϊ εδϊ χρειάηονται εςωτερικά να βρίςκονται και οι 8 πικανζσ περιςτροφζσ που μπορεί να χρειαςτοφν και να επιλζγεται μία κάκε φορά. Επελζγει αυτόσ ο τρόποσ υλοποίθςθσ και όχι αυτόσ με τθ χριςθ μίασ μόνο μεταβλθτοφ αρικμοφ περιςτροφισ που κα ιταν ζνα άλλο ςενάριο υλοποίθςθσ. Σε αυτό που επελζγει, Σχιμα 4.3, οι περιςτροφζσ πραγματοποιοφνται με τθ χριςθ απλϊν καλωδίων και δεν αλλάηουν, απλά επιλζγεται θ ςωςτι από ζναν multiplexer 8 ςε 1 των 64 bit. Ζτςι ουςιαςτικά υπάρχει μόνο θ κακυςτζρθςθ των καλωδίων και του πολυπλζκτθ και όχι κάποιου shifter. Το MIX ζχει ειςόδουσ τισ X 0, X 1 και τον επιλογζα των περιςτροφϊν (sel) και εξόδουσ τισ Y 0, Y Το permute Το permute είναι απλά ζνα ανακάτεμα των λζξεων 64 bit. Γι αυτό και υλοποιείται απλά από καλϊδια τα οποία μετατάςςουν τισ λζξεισ αυτζσ μζςα ςτο κφκλωμα. Αυτζσ φαίνονται ςτο Σχιμα 4.4 και οι ςτακερζσ μετάκεςθσ ςτον Ρίνακασ

64 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.3: Το εςωτερικό του component MIX. Σχιμα 4.4: Το εςωτερικό του permute

65 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Αρχιτεκτονική του Component Rounds Ζτςι λοιπόν, για το ςχθματιςμό του rounds χρθςιμοποιείται θ διάταξθ που φαίνεται ςτο Σχιμα 4.5. Οι είςοδοι text και skey (subkey) αναλφονται ςε 8 λζξεισ των 64 bit θ κακεμία οι οποίεσ ειςάγονται ανά ηεφγθ ςτουσ adder όπου και γίνεται θ πρόςκεςθ του subkey. Πμωσ το subkey δεν προςτίκεται ςε κάκε γφρο αλλά μόνο ανά τζςςερεισ. Οπότε υπάρχει ζνασ multiplexer ο οποίοσ παρακάμπτει τθν πρόςκεςθ ςτουσ άλλουσ γφρουσ μεταφζροντασ τθν είςοδο text κατευκείαν ςτο επόμενο ςτάδιο. Ζπειτα, οι λζξεισ που βγαίνουν από τον multiplexer ειςάγονται ανά ηεφγθ ςτα 4 MIX μαηί με τον επιλογζα ςτακερϊν περιςτροφισ (skey_num). Ο επιλογζασ αυτόσ είναι τα τρία λιγότερο ςθμαντικά bit τθσ ζνδειξθσ του counter του control unit και ειςάγονται ζτοιμα. Τα δφο λιγότερο ςθμαντικά από αυτά χρθςιμοποιοφνται ςτθ λογικι ελζγχου του multiplexer με ςκοπό να επιλζγει ςε όλουσ τουσ γφρουσ το text κατευκείαν χωρίσ πρόςκεςθ και όταν ο αρικμόσ του τρζχοντοσ γφρου είναι πολλαπλάςιοσ του 4 να επιλζγει το αποτζλεςμα τθσ πρόςκεςθσ. Μετά το MIX ακολουκεί το permute το οποίο όπωσ είπαμε κάνει τισ μετακζςεισ των λζξεων ςφμφωνα με τισ ςτακερζσ του αλγορίκμου. Ζπειτα, τα δεδομζνα ειςάγονται ςτον 512 bit register. Ο οποίοσ ελζγχεται εκτόσ από το κακολικό ςιμα reg_en (enable) και από το ςιμα ελζγχου enable_rounds που παράγει το control unit. Τζλοσ, τα δεδομζνα βγαίνουν ςυνολικά ςαν μία 512 bit λζξθ και διαχειρίηονται ανάλογα Ο Πολυπλϋκτησ Ειςόδου Ο ςυγκεκριμζνοσ πολυπλζκτθσ είναι ζνασ απλόσ πολυπλζκτθσ 4 ςε 1 εφρουσ 512 bit. Επιλζγει ανάμεςα ςτθν επιςτροφι από τθν ζξοδο του component rounds R512, τθν οποία και επιλζγει ςε όλουσ τουσ γφρουσ εκτόσ από τον πρϊτο (round 0) οπότε και επιλζγει ζνα από τα εξισ: 1. Στθν περίπτωςθ που ειςάγεται είτε κλειδί (key) είτε μινυμα (message) από το input block τθν ζξοδό του M Στθν περίπτωςθ που το μπλοκ που ξεκινάει επεξεργαςία είναι τφπου configuration τότε ειςάγεται το configuration string το οποίο είναι ςτακερό αφοφ το output length είναι ςτακερό και δεν χρθςιμοποιείται δενδροειδισ δομι και ζχει τιμι 0x και αντιςτοιχεί ςε ζξοδο 512 bit. 3. Στθν περίπτωςθ που το μπλοκ είναι τφπου output τότε θ ειςαγόμενθ τιμι πρζπει να είναι 0, δθλαδι και τα 512 bit να ζχουν τθν τιμι 0, όπωσ ορίηει ο αλγόρικμοσ. Το ςιμα ελζγχου του είναι το text_sel και ζχει εφροσ 2 bit

66 Σχιμα 4.5: Το εςωτερικό του component rounds. Φαίνεται θ διάταξθ των MIX, permute και των άλλων ςτοιχείων.

67 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σο Component adder_8x64 Το component 8x64bit adder που υπάρχει μετά το component rounds είναι 8 adder των 64 bit ο κακζνασ οι οποίοι προςκζτουν τθν κάκε λζξθ του R512 με τθν αντίςτοιχθ του τελευταίου subkey. Χρθςιμοποιοφνται 8 adder των 64 bit και όχι ζνασ των 512bit για να μθν υπάρξει διάδοςθ κρατουμζνου από λζξθ ςε λζξθ, όπωσ υπαγορεφει ο αλγόρικμοσ Ο Register Ο register που χρθςιμοποιείται και φαίνεται ςτο Σχιμα 4.1 είναι ζνασ απλόσ ακμοπυροδότθτοσ register εφρουσ 512 bit. Χρθςιμοποιείται για να αποκθκεφει το αρχικό μινυμα ειςόδου του threefish. Αυτό χρειάηεται για να μπορεί να γίνει xor με το αποτζλεςμα τθσ τελευταίασ πρόςκεςθσ και να βγαίνει το τελικό αποτζλεςμα του threefish. Για αυτό ενεργοποιείται μόνο όταν τα δεδομζνα ειςάγονται ςτο threefish, δθλαδι ςτον πρϊτο γφρο (round 0). Το ςιμα ελζγχου ςυνεπϊσ προζρχεται από το control unit και ςυγκεκριμζνα από τον counter ςτο εςωτερικό του Σο Component Tweak Generator Το tweak generator είναι το component εκείνο που ςυγκεντρϊνει όλα τα ςιματα που παράγονται ςτο input block και ςτο control unit και δθμιουργεί το tweak των 128 bit. Οι είςοδοι είναι οι first, final, bitpad, position και type. Και εδϊ ακολουκείται θ ίδια λογικι με τον πολυπλζκτθ ειςόδου. Μόνιμθ κατάςταςθ του κυκλϊματοσ είναι αυτι όπου τα δεδομζνα απλϊσ διζρχονται από το component αυτό και πιο ςυγκεκριμζνα μζςα από τουσ 4 πολυπλζκτεσ. Διαφορετικά διακρίνουμε δφο περιπτϊςεισ. Πταν ο τφποσ του μπλοκ είναι configuration τότε οι πολυπλζκτεσ επιλζγουν τισ αντίςτοιχεσ τιμζσ που ζχουν ςαν ςτακερζσ ειςόδουσ. Δθλαδι τθν 0x και 1 για το first και final και 0 για το bitpad. Εάν ο τφποσ του μπλοκ είναι output τότε οι πολυπλζκτεσ επιλζγουν τισ τιμζσ 0x , 1, 1 και 0 αντίςτοιχα. Τα ςυνολικά bit των πεδίων αυτϊν είναι οπότε υπολείπονται ακόμθ 23 μζχρι τα 128 τα οποία και ςυμπλθρϊνονται με μθδενικά. Πλα αυτά ςφμφωνα με τον αλγόρικμο και τθν περιγραφι του tweak ςτο Σχιμα 3.9. Ακολουκεί το Σχιμα 4.6 ςτο οποίο παρουςιάηεται το tweak generator Ο Πολυπλϋκτησ Κλειδιού Ο πολυπλζκτθσ κλειδιοφ είναι ζνασ πολυπλζκτθσ 3 ςε 1 εφρουσ 512 bit. Επιλζγει ποιο κα είναι κάκε φορά το κλειδί ειςόδου ςτο key generator ανάλογα με το ςτάδιο τθσ επεξεργαςίασ. Διακρίνονται τρεισ περιπτϊςεισ: 1. Εάν βριςκόμαςτε ςτθν αρχι ενόσ νζου κλειδιοφ, δθλαδι δεν ζχει ξεκινιςει ακόμθ θ επεξεργαςία του πρϊτου μπλοκ του κλειδιοφ, τότε ειςάγεται ςαν είςοδοσ θ τιμι 0, δθλαδι και τα 512 bit είναι Εάν βριςκόμαςτε ςτθν αρχι ενόσ νζου μθνφματοσ και ςε mode HASH τότε ειςάγεται το προχπολογιςμζνο αποτζλεςμα του configuration και ζχει τιμι

68 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ 0x4903ADFF749C51CE0D95DE399746DF038FD C79BCE9A255629FF352CB15DB 62599DF6CA7B0EABE394CA9D5C3F C71A75B523AE18A40B660FCC33. Με αυτόν τον τρόπο παρακάμπτουμε ολόκλθρο το ςτάδιο αυτό γλυτϊνοντασ και τουσ 72 γφρουσ και άρα και τουσ 73 παλμοφσ ρολογιοφ. 3. Σε όλεσ τισ άλλεσ περιπτϊςεισ το αποτζλεςμα του threefish είναι πάντοτε αυτό που χρθςιμοποιείται ςαν το κλειδί του επόμενου threefish. Σχιμα 4.6: Το εςωτερικό του component tweak generator. Φαίνονται οι πολυπλζκτεσ για τισ δφο ειδικζσ περιπτϊςεισ και θ ςυγκζντρωςθ όλων των ςθμάτων για τθ δθμιουργία του tweak

69 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σο Component Key Generator To component αυτό (Σχιμα 4.7) είναι εκείνο το οποίο παράγει τα subkey ςε κάκε γφρο του αλγορίκμου. Η ςχεδίαςθ που επιλζχκθκε είναι και θ προτεινόμενθ από τον ίδιο τον αλγόρικμο κακϊσ χρθςιμοποιεί ζνα πολφ μικρό και απλό κφκλωμα για τθν καταςκευι των subkey ανά παλμό ρολογιοφ ι ςτθν περίπτωςι μασ ανά τζςςερισ παλμοφσ. Για να το κάνει αυτό αξιοποιεί μία ιδιότθτα που ζχουν τα παραγόμενα subkey και αυτι δεν είναι άλλθ από το μεγάλο μζροσ που ζχουν κοινό δφο διαδοχικά subkey. Ζτςι για να παραχκεί ζνα subkey χρειάηεται τα 8 από τα 9 τμιματα του extended key και 2 από τα 3 τμιματα του extended tweak. Τα επιλεγμζνα τμιματα όμωσ χρθςιμοποιοφνται κυκλικά για τα διαδοχικά subkey κάτι που εκμεταλλεφεται το κφκλωμά μασ με τουσ δφο shift register που χρθςιμοποιεί. Ζναν για το extended key μεγζκουσ 576 bit (9 64 ι αλλιϊσ ) και ζναν για το extended tweak μεγζκουσ 192 bit (3 64 ι αλλιϊσ ). Ο τρόποσ λειτουργίασ του είναι ο ακόλουκοσ. Ζνα παλμό πριν ξεκινιςει το component rounds να επεξεργάηεται το μινυμα ειςόδου επιτρζπεται ςτουσ shift register μζςω του ςιματοσ en_shr (enable shift register) να λειτουργιςουν (αφοφ βριςκόμαςτε ςτον πρϊτο γφρο (round 0) κα διζλκει από τθν πφλθ and) και ταυτόχρονα μζςω του ςιματοσ load_shr δίνεται θ εντολι να φορτϊςουν το extended key και το extended tweak και ζτςι να δθμιουργθκεί το πρϊτο subkey. Το extended key και το extended tweak δεν είναι άλλα από τα key και tweak επαυξθμζνα με το αποτζλεςμα των xor των 8 τμθμάτων και τθσ ςτακεράσ (κεφάλαιο ) για το key και το αποτζλεςμα τθσ xor των 2 τμθμάτων για το tweak. Τα τμιματα αυτά είναι τα k 8 και t 2 αντίςτοιχα και ειςάγονται ςτα λιγότερο ςθμαντικά bit. Για να παραχκεί το πρϊτο κλειδί επιλζγονται από το extended key τα 512 πιο ςθμαντικά bit και από το extended tweak τα 128 πιο ςθμαντικά bit των αποκθκευμζνων string κάκε φορά. Και με μόνο τρείσ προςκζςεισ των 64 bit παράγεται το subkey. Για το επόμενο αρκεί θ τιμι του counter να γίνει ακζραιο πολλαπλάςιο του 4, οπότε και κα βριςκόμαςτε ςτον τζταρτο γφρο (round 4) για να επιτραπεί ςτο ςιμα επίτρεψθσ en_shr να διζλκει μζςα από τθν πφλθ and και ζτςι να ενεργοποιθκοφν οι shift register και να περιςτρζψουν κατά 64 κζςεισ τα string που ζχουν αποκθκευμζνα και ζτςι να παραχκεί το επόμενο subkey. Αυτό επαναλαμβάνεται μζχρι τθ δθμιουργία και των 19 subkey. Ο αρικμόσ των γφρων που προςτίκεται είναι ο αρικμόσ του τρζχοντοσ κλειδιοφ και όχι θ τιμι του counter που ταυτίηεται με τθν τιμι του γφρου (round). Στθν πραγματικότθτα είναι θ τιμι του counter διαιρεμζνθ με τον αρικμό 4, αφοφ ανά 4 γφρουσ παράγεται ζνα subkey. Άρα είναι θ τιμι του counter χωρίσ τα δφο τελευταία bit. Διευκρινίηεται ότι οι shift register είναι δφο ςφγχρονοι shift register παράλλθλθσ φόρτωςθσ με αλλαγι κατάςταςθσ ςτθν ανερχόμενθ παρυφι του ρολογιοφ και αςφγχρονο ςιμα επαναφοράσ (reset). Για οποιαδιποτε ενζργεια απαιτείται το ςιμα επίτρεψθσ (enable) και εάν το ςιμα load_shr είναι ενεργοποιθμζνο πραγματοποιείται

70 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ παράλλθλθ φόρτωςθ, διαφορετικά περιςτροφι τθσ αποκθκευμζνθσ λζξθσ κατά 64 bit μεταφζροντασ τα πιο ςθμαντικά ςτθ κζςθ των λιγότερο ςθμαντικϊν. Σχιμα 4.7: Το εςωτερικό του component key generator. Φαίνονται οι shift register και οι τρεισ adder όπωσ και τα τμιματα των λζξεων που ειςάγονται ςτο κακζνα

71 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σο Component Output Block Το component αυτό (Σχιμα 4.8), όπωσ προαναφζρκθκε, αναλαμβάνει να επικοινωνεί τα αποτελζςματα με το εξωτερικό του κυκλϊματοσ. Αναλαμβάνει, δθλαδι, να επιλζγει το ςωςτό αποτζλεςμα threefish τθ ςωςτι ςτιγμι και να το γνωςτοποιεί ςε μία άλλθ εξωτερικι μονάδα θ οποία περιμζνει το αποτζλεςμα. Αυτό το κάνει με το ςιμα valid το οποίο ενεργοποιείται ταυτόχρονα με τθν ζξοδο των πακζτων των δεδομζνων, αλλά πολφ εφκολα κα μποροφςε να το κάνει αυτό ζναν παλμό νωρίτερα δίνοντασ χρόνο ςτθν μονάδα που «ακοφει» να προετοιμαςτεί για τθ λιψθ. Ζνα παλμό πριν τα δεδομζνα είναι ζτοιμα, παράγεται από το control unit το ςιμα start_output (start_out_bfr) το οποίο και ενεργοποιεί τον εςωτερικό counter 8 καταςτάςεων να μετριςει 8 παλμοφσ ρολογιοφ. Απαιτοφνται 1 παλμόσ για να γίνει θ φόρτωςθ των δεδομζνων ςτον shift register και ταυτόχρονα θ ζξοδοσ του πρϊτου τμιματοσ και άλλοι 7 παλμοί για τα εναπομείναντα πακζτα. Ο shift register είναι ίδιασ καταςκευισ με αυτοφσ του key generator με μόνθ διαφορά το μζγεκοσ τθσ αποκθκευμζνθσ λζξθσ (512 bit εδϊ). Ακόμθ χρθςιμοποιείται ζνα D-Flip-Flop για τθν καταςκευι του ςιματοσ load_bfr το οποίο και φορτϊνει τον register. Σχιμα 4.8: Το εςωτερικό του Output Block

72 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σο Control Unit Το control unit, όπωσ φανερϊνει και το όνομά του, παράγει όλα τα ςιματα ελζγχου και ςυγχρονιςμοφ των διαφόρων μονάδων. Είναι αυτό που με τθ χριςθ μίασ μθχανισ εςωτερικϊν καταςτάςεων (FSM Finite State Machine) γνωρίηει τι τφποσ είναι το κάκε μπλοκ που επεξεργάηεται και παράγει τα κατάλλθλα ςιματα (type, text_sel, key_sel κ.α.) Ακόμθ περιζχει και τον counter που ελζγχει το component rounds και παράγει και το αρικμό του τρζχοντοσ γφρου (round #) Ο Counter 73 Παλμών Είναι ο μεγαλφτεροσ counter του κυκλϊματοσ και ςυντονίηει πολλά από τα ςιματα ελζγχου. Ζχει για ειςόδουσ τα τζςςερα βαςικά ςιματα και αυτά δεν είναι άλλα από: το ςιμα εκκίνθςθσ (start_counter), το ςιμα ρολογιοφ (clock), το αςφγχρονο ςιμα επαναφοράσ (reset) και το ςιμα επίτρεψθσ (enable). Ραράγει τα ςιματα: first_round: Ραίρνει τθν τιμι 1 μόνο όταν βριςκόμαςτε ςτον πρϊτο γφρο (round 0) και χρθςιμοποιείται για τον ζλεγχο του επιλογζα πολυπλζκτθ ειςόδου text_sel. en_keygen, load_keygen: Είναι τα ςιματα ελζγχου των shift register τθσ μονάδασ key generator. Ππωσ αναλυτικά εξθγικθκε παραπάνω ελζγχουν τθν φόρτωςθ και περιςτροφι των δεδομζνων. en_input: Είναι ζνα ςιμα επίτρεψθσ τθσ ειςόδου του ςιματοσ new_msg που ειςάγεται εξωτερικά. Ενεργοποιείται κάκε φορά όταν είναι ενεργοποιθμζνοσ ο counter (και άρα υπάρχει μπλοκ υπό επεξεργαςία) ςτθν τιμι 62 (63 οσ γφροσ) για να δϊςει τον απαραίτθτο χρόνο ςτο input block να ζχει ζτοιμο το νζο μπλοκ ειςόδου. Αλλιϊσ, όταν δεν είναι ενεργόσ ο counter (και άρα το ςφςτθμα περιμζνει νζο μινυμα για να ξεκινιςει) ςτθν τιμι 72 (73 οσ γφροσ - τελευταίοσ) ςτθν οποία και παραμζνει παγωμζνοσ ο counter μζχρι να ξεκινιςει. Αυτζσ είναι οι δφο μοναδικζσ περιπτϊςεισ να ειςαχκεί νζο μπλοκ προσ επεξεργαςία ςτο threefish. cntr_end: (counter end) Είναι ζνα ςιμα που ειδοποιεί το component FSM για το επικείμενο τζλοσ του τρζχοντοσ ςετ γφρων. Ενεργοποιείται όταν ο counter ζχει τθν τιμι 70 προκαλϊντασ τθν αλλαγι κατάςταςθσ (όχι πάντα) ςτο FSM και δίνοντασ του το απαραίτθτο χρονικό περικϊριο να αποφαςίςει εάν κα ςυνεχίςει τθ λειτουργία του counter ι εάν κα τθν αφιςει να διακοπεί. en_text_reg: (enable text register) Ελζγχει τον register που αποκθκεφει το αρχικό μινυμα ειςόδου με ςκοπό να γίνει xor με το αποτζλεςμα των επαναλιψεων. Ενεργοποιείται πάντα ςτον πρϊτο γφρο (round 0) όταν και ειςάγεται ζνα νζο μπλοκ ςτο threefish. (Ταυτίηεται με το ςιμα first_round) rounds_reg_en: (rounds register enable) Ελζγχει τον εςωτερικό του component rounds register επιτρζποντάσ του ι μθ τθ λειτουργία. Ραραμζνει ςτθν τιμι 1 για το διάςτθμα που είναι ενεργόσ ο counter. counter_value: Είναι θ τρζχουςα τιμι του counter και χρθςιμοποιείται από τα component που αναφζρκθκαν πιο πάνω με τον τρόπο που αναφζρκθκε

73 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Ο counter χρθςιμοποιεί τον ίδιο τρόπο ενεργοποίθςθσ με τουσ υπόλοιπουσ και αυτόσ είναι με τθ χριςθ ενόσ T-Flip_Flop για τθν δθμιουργία του ςιματοσ enable του counter. Τζλοσ, ο counter ξεκινά τθν απαρίκμθςθ από τθν τιμι 72 για να δϊςει χρόνο ςτθν παραγωγι του πρϊτου subkey από το component key generator. Πταν τελειϊςει θ απαρίκμθςθ και εφόςον δεν ζχει δοκεί εντολι μζςω του ςιματοσ start_counter για τθ ςυνζχιςι τθσ ςταματά και παραμζνει ςτθν τιμι αυτι (72) Το Component FSM Ραρά τθν ονομαςία του, το component αυτό δεν περιζχει μόνο τθν μθχανι καταςτάςεων αλλά και κάποια άλλα ςτοιχεία. Αυτά είναι ζνασ μθχανιςμόσ ελζγχου και ςυγχρονιςμοφ του ςιματοσ εκκίνθςθσ του output block, ζνα D-Flip-Flop για να «κρατάει» το ςιμα last εάν αυτό ενεργοποιικθκε, ζνα D-Flip-Flop για να μπορεί να παρακάμπτει ζνα ςιμα ελζγχου και ζνα D-Flip-Flop για τθν πρόκλθςθ κακυςτζρθςθσ 1 παλμοφ όποτε αυτό χρειάηεται. Ο μθχανιςμόσ ελζγχου του ςιματοσ εκκίνθςθσ του output block αποτελείται από δφο D-Flip-Flop και ζνα T-Flip-Flop. Η λογικι του είναι απλι: Επειδι οι καταςτάςεισ μπορεί να αλλάηουν χωρίσ απαραίτθτα να ζχει ολοκλθρωκεί ζνα ςετ γφρων εκμεταλλεφεται τθ ςτακερότθτα ςτθν περίοδο του ςιματοσ cntr_end και ζτςι όταν φτάςει ςτθν τελευταία κατάςταςθ ενόσ κφκλου καταςτάςεων ενεργοποιεί το μθχανιςμό αυτό ανεξάρτθτα από το εάν κα παραμείνει ςε αυτιν μζχρι το τζλοσ του μπλοκ. Ο μθχανιςμόσ μόλισ ενεργοποιθκεί το ςιμα cntr_end ενεργοποιεί για ζνα παλμό το ςιμα start_out_bfr και επανζρχεται ςτθν πρότερθ κατάςταςι του. Ακόμθ επειδι το input block που παράγει το ςιμα final πριν ολοκλθρωκεί θ επεξεργαςία του τρζχοντοσ μπλοκ ξεκινάει να ειςάγει το επόμενο και «ξεχνάει» τισ ιδιότθτεσ του τρζχοντοσ υπάρχει ζνα D-Flip-Flop για να κρατάει αυτό τθν ιδιότθτα αυτι που χρειάηεται ςαν ςιμα ελζγχου τθσ αλλαγισ κάποιων καταςτάςεων. Ππωσ φαίνεται και ςτο Σχιμα 4.10 όταν θ μθχανι βρίςκεται ςτθν κατάςταςθ key_0 ι message_0 εάν προζρχεται από τθν κατάςταςθ halt πρζπει να περάςει αμζςωσ ςτθν επόμενθ κατάςταςθ χωρίσ να περιμζνει το ςιμα cntr_and. Αυτό επιτυγχάνεται με τθ χριςθ ενόσ D-Flip-Flop το οποίο κζτει θ κατάςταςθ halt και εάν είναι ενεργοποιθμζνθ θ ζξοδόσ του τότε μεταβαίνει κατευκείαν ςτθν επόμενθ κατάςταςθ. Αντίςτοιχα, όταν βρίςκεται ςτθν κατάςταςθ configuration_1 και output_1 πρζπει να περιμζνει χρόνο ενόσ παλμοφ πριν περάςει ςτθν επόμενθ κατάςταςθ κάτι που επιτυγχάνεται με τθ βοικεια του ςιματοσ delay_1clk που ενεργοποιείται από το αντίςτοιχο D-Flip-Flop. Ακολουκεί το ςχιμα με τθν αρχιτεκτονικι του FSM component (Σχιμα 4.9)

74 Σχιμα 4.9: Το εςωτερικό του component FSM. Φαίνονται τα Flip-Flop και θ Finite State Machine.

75 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Οι Καταςτάςεισ τησ FSM Συνολικά ζχει 15 καταςτάςεισ και ειδικότερα: 1 κατάςταςθ ςτάςθσ, 4 καταςτάςεισ για το key, 3 καταςτάςεισ για το configuration, 4 καταςτάςεισ για το message και 3 καταςτάςεισ για το output. Αναλυτικά για τθν κακεμία: halt: Είναι θ κατάςταςθ θρεμίασ του κυκλϊματοσ, παραμζνει ςε αυτι μζχρι να ζρκει νζο μινυμα οπότε και ανάλογα με το ςιμα sel_mac μεταβαίνει είτε ςτθν key_0 είτε ςτθν message_0. Κακϊσ βρίςκεται ςε αυτιν ενεργοποιείται το ςιμα bypass_cntr_end κακϊσ για λόγουσ ςυγχρονιςμοφ όταν βρεκεί ςε μία από τισ δφο δεν πρζπει να περιμζνει τθν ενεργοποίθςθ αυτοφ του ςιματοσ. key_0: Είναι θ πρϊτθ από μία ςειρά καταςτάςεων για τθν πραγματοποίθςθ του MAC αλγορίκμου. Είναι πανομοιότυπθ με τθν key_2 με τθ μόνθ διαφορά να βρίςκεται ςτο ςιμα του επιλογζα του πολυπλζκτθ κλειδιοφ. Η key_0 επιλζγει για είςοδο τθν τιμι 0 ενϊ θ key_2 επιλζγει για είςοδο το αποτζλεςμα του threefish. key_1: Είναι μία κατάςταςθ θ οποία χρειάηεται μόνο για να μεταβεί το ςιμα start_inp_counter ςτθν τιμι 0 πριν μπορζςει να μεταβεί ςτθν τιμι 1 ςτθν κατάςταςθ key_2. Εάν το κλειδί ζχει μζγεκοσ μικρότερο ι ίςο από 512 bit τότε μεταβαίνει κατευκείαν ςτισ καταςτάςεισ για το configuration. key_2: Είναι μία κατάςταςθ που επαναλαμβάνεται όςεσ φορζσ χρειαςτεί, μαηί με τθν key_3, μζχρι να τελειϊςουν τα μπλοκ κλειδιοφ και να ενεργοποιθκεί το ςιμα last. key_3: Η φπαρξι τθσ οφείλεται ςτον ίδιο λόγο που οφείλεται και τθσ key_1. Υπάρχει για τθν απενεργοποίθςθ του ςιματοσ start_inp_counter. configuration_0: Ο ρόλοσ αυτισ τθσ κατάςταςθσ είναι να ενεργοποιεί το ςιμα start_rounds το οποίο και ενεργοποιεί τον counter για ζνα ακόμθ ςετ γφρων. configuration_1: Στθν κατάςταςθ αυτι τίκεται ο πολυπλζκτθσ ειςόδου ςτθν αντίςτοιχθ τιμι για το configuration μπλοκ. Ταυτόχρονα γίνεται επαναφορά του input block και του εςωτερικοφ D-Flip-Flop που ςυγκρατεί το last. configuration_2: Είναι μία βοθκθτικι κατάςταςθ και υπάρχει για να επαναφζρει τον πολυπλζκτθ ειςόδου. message_0: Είναι θ αντίςτοιχθ τθσ key_0 όταν πραγματοποιείται ο απλόσ HASH αλγόρικμοσ. Είναι πανομοιότυπθ με τθν message_2 αλλά και εδϊ θ διαφορά ζγκειται ςτον επιλογζα του πολυπλζκτθ κλειδιοφ ο οποίοσ ειςάγει το ζτοιμο αποτζλεςμα του configuration που προθγείται ςτον αλγόρικμο. message_1: Ππωσ θ key_1 και θ key_3 υπάρχουν για να ςβζνουν το ςιμα start_inp_counter. Αν το μινυμα είναι μικρό ( 512 bit) τότε μεταβαίνει κατευκείαν ςτθν κατάςταςθ output_0. message_2: Είναι θ κατάςταςθ θ οποία επαναλαμβάνεται όςεσ φορζσ χρειαςτεί μαηί με τθν message_3 για να ειςαχκοφν όλα τα μπλοκ μθνφματοσ που απομζνουν

76 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ message_3: Η αντίςτοιχθ τθσ message_1. output_0: Αυτι θ κατάςταςθ υπάρχει όπωσ και θ configuration_0 για να ενεργοποιιςει το ςιμα start_rounds. output_1: Είναι θ πρϊτθ από τισ τρείσ για το μπλοκ εξόδου. Δεν ειςάγονται δεδομζνα από το input block αλλά θ αντίςτοιχθ ςτακερά από τον πολυπλζκτθ ειςόδου. output_2: Επαναφζρει τον πολυπλζκτθ ειςόδου και αναμζνει για να λάβει τθν απόφαςθ αν κα ςυνεχίςει και ςε ποιο mode από τα δφο. Ακολουκεί το ςχιμα με τισ καταςτάςεισ και τισ μεταβάςεισ από τθ μία ςτθν άλλθ (Σχιμα 4.10)

77 Σχιμα 4.10: Οι καταςτάςεισ και οι μεταβάςεισ από τθ μία ςτθν άλλθ. Σχθματίηονται 2 κφκλοι λειτουργίασ, αυτόσ του MAC και αυτόσ του απλοφ HASH.

78 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Η αρχιτεκτονική του Control Unit Η αρχιτεκτονικι του control unit είναι αρκετά απλι, αφοφ το μόνο που κάνει είναι να ενςωματϊνει τα δφο προαναφερκζντα component και επιπλζον αν επαναπροςδιορίηει τον επιλογζα του πολυπλζκτθ ειςόδου. Αυτό το κάνει με τθ χριςθ δφο πυλϊν and και του ςιματοσ round0 από τον counter. Oι πφλεσ δεν επιτρζπουν ςτον επιλογζα να πάρει άλλθ τιμι εκτόσ από το 0 (αντιςτοιχεί ςτο feedback από τθ μονάδα rounds) όταν βρίςκεται ςε οποιοδιποτε γφρο εκτόσ του πρϊτου (round 0). Ακόμθ υπάρχει και μία πφλθ or θ οποία βρίςκεται για να επιτρζψει και ςτο input block και ςτο FSM να ενεργοποιοφν τον counter. Ακολουκεί το ςχιμα με τθν αρχιτεκτονικι του Control Unit (Σχιμα 4.11)

79 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.11: Το control unit

80 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ 4.3 ΣΟ ΚΤΚΛΨΜΑ ΤΧΗΛΨΝ ΕΠΙΔΟΕΨΝ ΜΕ ΠΕΡΙΟΡΙΜΟ ΕΙΟΔΟΤ Ειςαγωγό Αποτελεί τθν κυρίωσ υλοποίθςθ και ζχει ςχεδιαςτεί με γνϊμονα τθν ταχφτθτα ςτθν επεξεργαςία και παραςκευι των αποτελεςμάτων. Χρθςιμοποιεί τθν τεχνικι του pipeline και ζχει ξετυλιγμζνουσ τουσ 8 από τουσ 72 γφρουσ του αλγορίκμου. Οπότε μπορεί να επεξεργάηεται δφο εντελϊσ ανεξάρτθτα μθνφματα ταυτόχρονα και ανεξάρτθτα το ζνα από το άλλο. Φυςικά, τα μθνφματα αυτά δεν μποροφν να ζχουν κάποια ςχζςθ μεταξφ τουσ, διότι όπωσ εξθγείται και παραπάνω ςτθν περιγραφι του αλγορίκμου, το κάκε μπλοκ δεδομζνων εξαρτάται από το αποτζλεςμα του προθγοφμενοφ του (το αποτζλεςμα ενόσ μπλοκ χρθςιμοποιείται ςαν key για τθν παραγωγι των subkey του επόμενου) εκτόσ και αν εφαρμόηεται δενδροειδισ δομι επεξεργαςίασ. Οπότε μιλάμε πάντα για δφο διαφορετικά και ανεξάρτθτα μθνφματα ςτθν περίπτωςι μασ. Χρθςιμοποιικθκε ξετφλιγμα (loop unroll) 8 γφρων διότι είναι το μικρότερο ξετφλιγμα που προςφζρει τθν ιδιότθτα των αμετάβλθτων ςτακερϊν περιςτροφισ ςτα MIX component. Ππωσ φαίνεται και από τον Ρίνακασ 3.4 οι μεταβλθτζσ επαναλαμβάνονται κάκε 8 γφρουσ. Οπότε ζτςι δεν υπάρχει κακόλου πολυπλζκτθσ μζςα ςτο MIX όπωσ ςυνζβαινε ςτο προθγοφμενο κφκλωμα. Ζτςι, ςυνολικά περιλαμβάνει 4 8=32 MIX κάτι που το κάνει αρκετά μεγάλο ςε επιφάνεια όπωσ κα φανεί και παρακάτω ςτθν ανάλυςθ των αποτελεςμάτων. Πςον αφορά τουσ χρόνουσ του ςυγκεκριμζνου κυκλϊματοσ, αυτό χρειάηεται 72 8=9 επαναλιψεισ του component rounds που πλζον περιλαμβάνει 8 γφρουσ του αλγορίκμου και τουσ εκτελεί ςε δφο παλμοφσ ρολογιοφ λόγω του ςταδίου pipeline που περιζχει. Οπότε ςυνολικά χρειάηεται 9 2=18 παλμοφσ για τθν επεξεργαςία του μπλοκ και άλλον 1 για τθ ςφλλθψθ και παραγωγι του πρϊτου subkey, ςφνολο 19. Πμωσ ζνασ μονόσ αρικμόσ παλμϊν κα ιταν αδφνατο να υλοποιθκεί λόγω του pipeline, διότι, όταν κα ερχόταν θ ςτιγμι να ειςαχκεί ζνα νζο μπλοκ του μθνφματοσ τότε κα γινόταν αυτό επικαλφπτοντασ τα δεδομζνα του άλλου μθνφματοσ που κα βριςκόταν ιδθ ςε ςτάδιο επεξεργαςίασ και ζτςι κα το κατζςτρεφε (κα εξθγθκεί αναλυτικά παρακάτω). Οπότε αναγκαςτικά ο αρικμόσ των παλμϊν είναι 20. Βζβαια το αποτζλεςμα παράγεται κανονικά ςε 19 παλμοφσ αλλά περιμζνει ακόμθ ζναν μζχρι να ειςαχκεί ςτο key generator. Ακόμθ, λόγω των 8 παλμϊν που χρειάηεται το component input block για να ετοιμάςει και να ειςάγει ζνα ολόκλθρο 512 bit μπλοκ δεδομζνων επιλζχκθκε τα μθνφματα να μθν ειςάγονται διαδοχικά, αλλά με μία ςθμαντικι κακυςτζρθςθ το ζνα από το άλλο. Ζτςι όταν ο counter δείχνει τθν τιμι 0 ειςάγεται το πρϊτο μπλοκ αλλά το δεφτερο τϊρα ξεκινάει να ετοιμάηεται ςτο input block, ζτςι κα είναι ζτοιμα και κα ειςαχκεί όταν ο counter κα δείχνει τθν τιμι 9. Δεν επιλζχκθκε θ τιμι 10 θ οποία ζχει το πλεονζκτθμα τθσ ςυμμετρίασ κακϊσ το δεφτερο μινυμα πρζπει πάντα να ειςάγεται ςε περιττό αρικμό ζνδειξθσ του counter

81 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Κάτι τελευταίο που δεν πρζπει να παραλθφκεί είναι ότι ενϊ τα μθνφματα είναι ανεξάρτθτα μεταξφ τουσ, υπάρχει εξάρτθςθ ςτον τρόπο που ειςάγονται κακϊσ χρθςιμοποιοφν κοινοφσ πόρουσ (component rounds). Επιπλζον, όποιο μινυμα ιταν το τελευταίο αυτό κα είναι και το πρϊτο που κα ειςαχκεί κακϊσ ο counter όταν τελειϊνει δεν επανζρχεται ςτθν αρχικι του κατάςταςθ αλλά παραμζνει εκεί που είναι ζτοιμοσ να ξεκινιςει κατευκείαν με το μινυμα 1 και μετά να ξεκινιςει με το μινυμα 0 (Με τισ ονομαςίεσ μινυμα 0 και μινυμα 1 εννοοφμε αυτά που χρθςιμοποιοφν τουσ αντίςτοιχουσ counter και key generator - Επεξθγοφνται αναλυτικότερα παρακάτω) Interface και Βαςικϊ Component Το κφκλωμα, όπωσ και το προθγοφμενο είναι ςφγχρονο με τθν είςοδο clock το ρολόι του κυκλϊματοσ. Πλεσ οι αλλαγζσ κατάςταςθσ και γενικότερα όλεσ οι ενζργειεσ ςυμβαίνουν ςτθν ανερχόμενθ παρυφι του clock. Η είςοδοσ reset είναι αςφγχρονθ και αυτό που κάνει είναι να κζτει το όλο κφκλωμα ςτθν αρχικι του κατάςταςθ για όςο χρόνο ζχει τθν τιμι 1. Η είςοδοσ enable είναι θ είςοδοσ επίτρεψθσ τθσ λειτουργίασ του κυκλϊματοσ. Το κφκλωμα λειτουργεί μόνο και για όςο θ είςοδοσ enable ζχει τθν τιμι 1.Συνοπτικά, οι υπόλοιπεσ είςοδοι/ζξοδοι του κυκλϊματοσ είναι: Είςοδοι Ζξοδοι Συμβολιςμόσ Bit Ρεριγραφι Συμβολιςμόσ Bit Ρεριγραφι msg 64 Μινυμα ειςόδου md 64 Hash τιμι length 7 Χρθςιμοποιοφμενα bit valid 1 Ειδοποίθςθ εγκυρότθτασ new_msg 1 Ειδοποίθςθ ειςόδου κάκε 512 bit last_block 1 Ειδοποίθςθ τελευταίων bit sel_mac 1 Επιλογι HASH ι MAC Πίνακασ 4.3: Είςοδοι/Ζξοδοι του κυκλϊματοσ Η είςοδοσ msg είναι θ κφρια είςοδοσ των δεδομζνων τα οποία ςτθ ςυνζχεια μπαίνουν ςτθν μονάδα pad για να δθμιουργθκεί το απαιτοφμενο από τον αλγόρικμο string των 512 bit. Η είςοδοσ length είναι αυτι που δίνει το ακριβζσ μζγεκοσ του τελευταίου πακζτου των 64 bit. Αυτό γίνεται ςε ςυνεργαςία με τθν είςοδο last_block με τθ διαδικαςία που περιγράφθκε ςτθν γενικι περιγραφι ςτθν αρχι του κεφαλαίου. Η new_msg ενεργοποιεί το κφκλωμα για να δεχτεί το νζο μινυμα και ςτθ ςυνζχεια ειδοποιεί για τα νζα πακζτα που ζρχονται. Η είςοδοσ sel_mac όταν βρίςκεται ςτθ ςτάκμθ 0 το κφκλωμα λειτουργεί ςαν απλό hash και όταν βρίςκεται ςτθ ςτάκμθ 1 ςαν MAC. Η ζξοδοσ του κυκλϊματοσ είναι το md το οποίο βγάηει τα δεδομζνα ςε 8 τμιματα των 64 bit το κακζνα. Και θ valid είναι ςε ςτάκμθ 1 για όςο χρόνο τα δεδομζνα εξζρχονται

82 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Στο Σχιμα 4.12 φαίνονται τα βαςικά component που απαρτίηουν το κφκλωμα και οι μεταξφ τουσ διαςυνδζςεισ. Τα βαςικά από τα οποία είναι: Ονομαςία I/0 Ρεριγραφι Input Block 10/7 Μετατρζπει τα δεδομζνα ειςόδου από 8 πακζτα των 64 bit ςε ζνα των 512 bit και παράγει τα ςιματα first, final, bitpad και position Control Unit 8/18 Συντονίηει όλα τα υπόλοιπα και αςκεί τον ζλεγχο του κυκλϊματοσ Rounds 7/1 Ρεριζχει τα MIX και πραγματοποιεί ζνα γφρο (round) Key 8/1 Ραράγει τθν κατάλλθλθ ςτιγμι τα κατάλλθλα subkey Generator Tweak Generator 5/1 Δθμιουργεί το κατάλλθλο tweak ανάλογα με τθν είςοδο και τθν κατάςταςθ Output Block 2/2 Διαςπά το μινυμα εξόδου ςε τμιματα των 64 bit. Πίνακασ 4.4: Τα component του κυκλϊματοσ Το component input block είναι ο padder του ςυςτιματοσ. Εκτόσ από αυτό επιτελεί και άλλεσ λειτουργίεσ του ςυςτιματοσ και αυτζσ είναι να παράγει τισ εξόδουσ first, final, bitpad, position. Ο αλγόρικμοσ για τθ λειτουργία του χρειάηεται να γνωρίηει εάν το μπλοκ δεδομζνων που επεξεργάηεται είναι το πρϊτο ι το τελευταίο, εάν ζχει γίνει θ διαδικαςία του bitpad, όπωσ περιγράφεται ςτο πρότυπο, και πόςα είναι τα δεδομζνα που ζχουν επεξεργαςτεί μζχρι ςτιγμισ. Ρρζπει να τα γνωρίηει και για τα δφο μθνφματα οπότε και για να επιλζξει ςε ποιο από τα δφο αναφζρεται κάκε φορά υπάρχει το ςιμα sel_inp (select input) του οποίου θ ςτάκμθ 0 αναφζρεται ςτο πρϊτο και όταν είναι 1 ςτο άλλο. Τα ςιματα αυτά χρθςιμοποιοφνται ςαν είςοδοι από το tweak generator και από το control unit. Οι τζςςερεισ αυτζσ ζξοδοι πρζπει να χρθςιμοποιθκοφν μόνο ζνα παλμό ρολογιοφ μετά και τθν είςοδο του τελευταίου πακζτου, δθλαδι 10 παλμοφσ μετά τθν ενεργοποίθςθ τθσ ειςόδου new_msg, και μόνο τότε. Πςο για τθν ζξοδο M512, αυτι είναι το παραγόμενο string για να γίνει hash και παραμζνει μετά τθν δθμιουργία τθσ μζχρι τθν αντικατάςταςι τθσ από το επόμενο string. Η ζξοδοσ start_keygen ενεργοποιείται κακϊσ μπαίνει και το τελευταίο πακζτο των 64 bit και προκαλεί τθν εκκίνθςθ του εςωτερικοφ counter του control unit. Το rounds είναι το component που υλοποιεί το μεγαλφτερο μζροσ του threefish. Ρεριζχει τα 32 MIX και τα 8 permute κακϊσ και τουσ adder για τον υπολογιςμό του αποτελζςματοσ και των τεςςάρων γφρων ςε κάκε παλμό. Είναι και αυτό ζνα ςφγχρονο κφκλωμα, αφοφ ςτο μζςον του και πριν τθν ζξοδό του R512 υπάρχει από ζνασ register. Ζχει εκτόσ από τθν είςοδο text_in, ειςόδουσ τισ skey0 και skey1 ςτισ οποίεσ και μπαίνουν τα αντίςτοιχα για κάκε μινυμα subkey. Για τθν επιλογι των κατάλλθλων subkey υπάρχουν δφο πολυπλζκτεσ οι οποίοι επιλζγουν διαδοχικά και εναλλάξ το αποτζλεςμα του ςωςτοφ key generator. Το ςιμα επιλογισ τουσ παράγεται κατευκείαν από το control unit και είναι το mux_sel

83 Σχιμα 4.12: Γενικι τοπολογία του κυκλϊματοσ. Φαίνονται τα component που το απαρτίηουν και οι μεταξφ τουσ διαςυνδζςεισ.

84 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Το component rounds μαηί με τον multiplexer ειςόδου (512bit MUX 4to1) δθμιουργοφν τον μικρό κφκλο επανάλθψθσ για τουσ 72 γφρουσ. Για να ολοκλθρωκεί όμωσ θ διαδικαςία του threefish πρζπει να γίνει μία ακόμθ πρόςκεςθ subkey και μία XOR του αποτελζςματοσ με το αρχικό μινυμα από τα component 8x64bit Adders και XOR αντίςτοιχα τα οποία και γίνονται μόνο μία φορά για κάκε μπλοκ. Στο component rounds ςχθματίηονται και τα δφο ςτάδια pipeline, ωςτόςο οι επαναλιψεισ γίνονται όχι ανεξάρτθτα του ενόσ ςταδίου από το άλλο αλλά για ζνα μπλοκ δεδομζνων εναλλάςςεται θ βακμίδα ςτθν οποία βρίςκεται. Από εδϊ προκφπτει και ο περιοριςμόσ του άρτιου αρικμοφ των παλμϊν μίασ περιόδου κακϊσ εάν ιταν περιττόσ τότε κα ειςάγονταν ςτθν ίδια βακμίδα όπου και κα βριςκόταν το άλλο μινυμα. Ακολουκεί ο Ρίνακασ 4.5 ςτον οποίο φαίνεται ο ςυςχετιςμόσ των δφο μθνυμάτων και των αντίςτοιχων τιμϊν που δείχνουν οι counter για το κακζνα. Counter value Counter value Message0 I O Message1 O I Πίνακασ 4.5: Στον πίνακα αυτό φαίνεται πότε ειςάγονται και εξάγονται τα αντίςτοιχα μθνφματα (I=input, O=output, =δεν χρθςιμοποιείται) Ο προαναφερκείσ multiplexer ειςόδου (512bit MUX 4to1) ζχει το ρόλο τθσ ειςόδου των νζων δεδομζνων κάκε φορά που ζνασ από τουσ δφο counter δείχνει τθν τιμι 0 και το κλείςιμο του κφκλου (feedback) για τουσ υπόλοιπουσ. Αυτά που ειςάγονται μποροφν να είναι είτε αυτά που παρζχονται εξωτερικά τροποποιθμζνα από τον padder είτε κάποιεσ ςτακερζσ τιμζσ ςτισ περιπτϊςεισ που το μπλοκ που ξεκινάει είναι είτε configuration ( 0x 1334 ) είτε output ( 0x00 ) (οι τιμζσ αυτζσ είναι ίδιεσ και για τα τζςςερα κυκλϊματα και εξθγικθκαν παραπάνω κεφάλαιο 4.2.5). Ζνα άλλο ςθμαντικό component του ςυςτιματοσ είναι το tweak generator το οποίο, δουλειά του είναι να ςυγκεντρϊνει τα ςιματα first, final, bitpad και position από το input block και το ςιμα type από το control unit και να ςχθματίηει το ςωςτό string tweak που ειςάγεται ςτο component key generator. Στισ περιπτϊςεισ που το type του μπλοκ είναι cfg (configuration) ι out (output) τότε οι άλλεσ είςοδοι δεν χρθςιμοποιοφνται αλλά παράγονται εςωτερικά κακϊσ είναι πάντα ίδιεσ ςε αυτζσ τισ περιπτϊςεισ. Το key generator, λοιπόν, είναι το component που δθμιουργεί ςειριακά όλα τα subkey που χρειάηονται από το component rounds. Είναι δφο ςτθν περίπτωςι μασ κακϊσ δφο είναι και τα μθνφματα που επεξεργαηόμαςτε ταυτόχρονα. Το component ζχει ςαν ειςόδουσ του τα ςιματα tweak προερχόμενο από το component tweak generator, το key προερχόμενο από τον multiplexer κλειδιοφ (512bit MUX 3to1) και το ςιμα cntr_val (round#) προερχόμενο από το control unit. Τα τρία αυτά ςιματα είναι απαραίτθτα για να γίνει θ παραγωγι των subkey. Ακόμθ ειςάγονται τα ςιματα en_keygen_shr (enable key generator shift registers) και load_keygen_shr (load key generator shift registers) τα οποία και ελζγχουν τθ λειτουργία του κυκλϊματοσ και κα

85 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ αναλυκοφν διεξοδικά παρακάτω. Χριςιμο κα ιταν να γνωρίηουμε ότι για να αποκθκευτοφν τα δεδομζνα ςτουσ εςωτερικοφσ shift register και να παραχκεί το πρϊτο subkey χρειάηεται ζνασ παλμόσ ρολογιοφ. Φυςικά δεν λείπουν και τα ςιματα clock, enable και reset τα οποία φανερϊνουν ότι και αυτό το component είναι ςφγχρονο. Ο multiplexer κλειδιοφ (512bit MUX 3to1) είναι αυτόσ που μαηί με τα component rounds, 8x64bit Adders, XOR, τον αντίςτοιχο key generator και τουσ πολυπλζκτεσ των subkey κλείνουν το μεγάλο κφκλο δεδομζνων κακϊσ ςχεδόν πάντα το αποτζλεςμα του threefish χρθςιμοποιείται ςαν νζο κλειδί ςτο επόμενο μπλοκ. Δεν χρθςιμοποιείται μόνο ςτισ περιπτϊςεισ που ξεκινάει θ λειτουργία του αλγορίκμου ςε mode MAC οπότε και ειςάγεται θ ςτακερά 0 ( 0x00 ) και όταν ξεκινά ςε mode HASH οπότε και ειςάγεται θ ςτακερά 0x49 33 (επεξθγικθκαν ςτο κεφάλαιο 4.2.9). Ρριν όμωσ το αποτζλεςμα του προθγοφμενου threefish φτάςει ςτον πολυπλζκτθ κλειδιοφ περνά από ζνα register του οποίου ο ρόλοσ είναι απλϊσ να ειςάγει κακυςτζρθςθ ενόσ παλμοφ λόγω τθσ φπαρξθσ του ενόσ παραπάνω παλμοφ που προςτζκθκε ϊςτε να γίνει ο αρικμόσ των παλμϊν άρτιοσ αρικμόσ. Το component output block είναι αυτό που αναλαμβάνει να μετατρζψει τα δεδομζνα εξόδου (X512) από ζνα μεγάλο string των 512 bit ςε 8 μικρότερα των 64 bit και να τα εξάγει διαδοχικά από τθν ζξοδο md (message digest) που είναι και θ τελικι ζξοδοσ του κυκλϊματοσ. Ταυτόχρονα με τθν ζξοδο των δεδομζνων ενεργοποιείται και θ ζξοδοσ valid του component θ οποία είναι και ζξοδοσ του κυκλϊματοσ ειδοποιϊντασ για τθν εγκυρότθτα των αποτελεςμάτων. Οι register που υπάρχουν δίπλα ςτο component rounds είναι αυτοί που κρατοφν αποκθκευμζνα τα αρχικά μθνφματα τα οποία και πρόκειται να γίνουν xor με το αποτζλεςμα τθσ πρόςκεςθσ του τελευταίου subkey. Είναι κετικά ακμοπυροδότθτοι και ελεγχόμενοι αςφγχρονα από το reset και με ςιμα επίτρεψθσ το enable, όπωσ όλα τα ςτοιχεία μνιμθσ του κυκλϊματοσ. Ελζγχονται κατευκείαν από το component control unit και κακζνα από αυτά ενεργοποιείται μόνο ςτον πρϊτο γφρο του αντίςτοιχου μθνφματοσ οπότε και ειςάγονται τα δεδομζνα ςτο component rounds. Για να επιλεχκεί το ςωςτό από αυτά και πάλι υπάρχει ζνασ πολυπλζκτθσ των 512 bit ο οποίοσ ελζγχεται και αυτόσ από το ςιμα mux_sel. Το control unit είναι ο ενορχθςτρωτισ όλου του κυκλϊματοσ. Επιλζχκθκε μία ςυγκεντρωτικι λογικι ελζγχου λόγω τθσ πολυπλοκότθτασ του ςυςτιματοσ και τθσ όχι πάντα άμεςθσ εξάρτθςθσ των ςτοιχείων που τθν απαρτίηουν. Ρεριζχει τον counter υπεφκυνο για τθ λειτουργία του component rounds και για τθν παραγωγι των ςθμάτων cntr_val0 και cntr_val Σο Component Input Block Ραραπάνω παρουςιάςτθκε θ ςυνολικι δομι του κυκλϊματοσ και τα μζρθ από τα οποία αποτελείται. Στθ ςυνζχεια κα παρουςιαςτοφν ζνα ζνα τα component αυτά ξεκινϊντασ από το input block. Δεν κα επεκτακοφμε περαιτζρω ςτθν εςωτερικι δομι

86 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ των component που το ςχθματίηουν μιασ και είναι βαςικζσ λογικζσ και λίγο πολφ γνωςτζσ ςτον κακζνα. Ππωσ βλζπουμε το Σχιμα 4.13 κα δοφμε ότι το input block χωρίηεται ςε δφο τμιματα, όςεσ είναι και οι εργαςίεσ που πρζπει να κάνει: (1) να κάνει pad ςτα τμιματα των δεδομζνων που ζρχονται και (2) να δθμιουργιςει όλα εκείνα τα ςιματα για τισ ιδιότθτεσ του τρζχοντοσ μπλοκ δεδομζνων (first, final, bitpad, position) και να τισ ςυγκρατιςει και για τα δφο μθνφματα. Το πρϊτο γίνεται ςτα αριςτερά, όπωσ το βλζπουμε, και το δεφτερο ςτα δεξιά. Επιπλζον υπάρχει και ο counter ο οποίοσ πραγματοποιεί τον ζλεγχο ςτο εςωτερικό του input block. Ζτςι λοιπόν ςτο τμιμα του padder εφαρμόηεται φιλτράριςμα του κάκε πακζτου 64 bit που ειςάγεται με δφο ςκοποφσ: να αποκοποφν όλα τα μθ χρθςιμοποιοφμενα bit του τελευταίου πακζτου κάνοντάσ τα 0 και να γίνει 1 το αμζςωσ επόμενο bit από τα χρθςιμοποιοφμενα εάν εφαρμοςτεί bitpad, όπωσ ακριβϊσ λζει θ περιγραφι του αλγορίκμου. Αυτό πετυχαίνεται με δφο μάςκεσ : μία μάςκα που γίνεται λογικό and με τα δεδομζνα και μθδενίηει όπου ζχει 0 τθν είςοδο και μία μάςκα που γίνεται λογικό or και ενεργοποιεί το αντίςτοιχο bit δεδομζνων με αυτό που είναι 1 ςε αυτιν. Αυτζσ ζχουν ονομαςτεί and_mask και or_mask αντίςτοιχα. Για τθ δθμιουργία τθσ and_mask δθμιουργοφνται 3 διαφορετικζσ, οι οποίεσ ζχουν ωσ εξισ: 1. and_mask_1: Είναι αυτι που κάνει τθ βαςικι δουλειά, δθλαδι να αποκόπτει όςα bit είναι αχρθςιμοποίθτα μθδενίηοντάσ τα. Ξεκινάμε από ζνα string των 65 bit το οποίο ζχει όλα του τα bit 0 εκτόσ από αυτό ςτθ κζςθ 64 (το πιο ςθμαντικό). Αυτό το string γίνεται αρικμθτικό shift προσ τα δεξιά (SRA Shift Right Arithmetic) κατά τόςεσ κζςεισ όςα είναι και τα χρθςιμοποιοφμενα bit. Άρα ζτςι από το bit 63 και κάτω ζχουμε τόςουσ άςςουσ όςα και τα bit που πρζπει να περάςουν ανεπθρζαςτα, ενϊ όλα τα άλλα κα μθδενιςτοφν. 2. and_mask_2: Είναι μία μάςκα για τθν περίπτωςθ που το πακζτο δεν είναι το τελευταίο και άρα δεν χρειάηεται κάποια αλλαγι. Οπότε όςο δεν ζχει ενεργοποιθκεί το ςιμα last_block τα bit τθσ είναι όλα 1 και τα δεδομζνα περνάνε αναλλοίωτα. 3. and_mask_3: Είναι για τθν περίπτωςθ που ζχει παρζλκει το τελευταίο πακζτο και μετά. Τότε θ είςοδοσ πρζπει να κλείςει και όλα τα bit από τθ ςτιγμι αυτι και μετά να είναι 0. Οι τρείσ αυτζσ μάςκεσ ςυνδυάηονται μεταξφ τουσ με τθν εξισ λογικι: δθμιουργϊντασ τθν μάςκα θ οποία πρόκειται να γίνει λογικό and με τα δεδομζνα. Πςο για τθ μάςκα or_mask αυτι δθμιουργείται πιο απλά με τθ χριςθ ενόσ λογικοφ shift δεξιά (SRL Shift Right Logical) ςτον οποίο ειςάγεται ζνα string των 64 bit όπου ανάλογα εάν χρειάηεται να γίνει bitpad ζχει ζνα 1 ι ζνα 0 ςτο bit 63 και όλα τα άλλα είναι

87 Σχιμα 4.13: Το εςωτερικό του Input Block. Τα component που το απαρτίηουν και οι μεταξφ τουσ διαςυνδζςεισ. Φαίνονται και τα ςτοιχεία για το κάκε μινυμα ξεχωριςτά.

88 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Τα δεδομζνα λοιπόν, πριν ειςζλκουν ςτον shift register για να ςυγκεντρωκοφν μαηί με τα άλλα και να ςχθματίςουν τα 512 bit και να ςυνεχίςουν όλα μαηί, ακολουκοφν τθν εξισ διαδρομι. Αρχικά γίνονται bitwise and με τθν and_mask και ζπειτα το αποτζλεςμα γίνεται bitwise or με τθν or_mask. Ζπειτα μπαίνουν ςτο component reverse unit όπου και γίνεται θ περιςτροφι των byte τθσ κάκε λζξθσ κακϊσ ζτςι περιγράφεται ςτο πρότυπο του αλγορίκμου (Ραράγραφοσ 3.4.2). Στο reverse unit αλλάηει θ δφναμθ των byte κακϊσ το πιο ςθμαντικό γίνεται το λιγότερο ςθμαντικό, το δεφτερο πιο ςθμαντικό γίνεται το δεφτερο λιγότερο ςθμαντικό και οφτω κακεξισ. Το reverse unit φυςικά είναι ζνα αςφγχρονο κομμάτι του κυκλϊματοσ το οποίο αποτελείται μόνο από καλϊδια τα οποία αλλάηουν κζςεισ. Ζπειτα τα δεδομζνα ειςάγονται ςτον left shift register ςτα 64 λιγότερο ςθμαντικά bit όπου και μετατοπίηονται κάκε φορά μία κζςθ (64 bit) αριςτερά για να μπει το νζο πακζτο μζχρι να ςυμπλθρωκοφν τα 512 bit. Πταν ολοκλθρωκεί αυτι θ διαδικαςία τα δεδομζνα είναι ζτοιμα για χριςθ. Στο δεξί τμιμα του ζχουμε όπωσ είπαμε τθν παραγωγι των ςθμάτων first, final, bitpad και position. Το position παράγεται με τισ διαδοχικζσ προςκζςεισ του αρικμοφ των ειςαγόμενων bit κάκε φορά. Οπότε ξεκινϊντασ με τον αρικμό 0 αρχίηουμε να προςκζτουμε τον αρικμό 64 με κάκε πακζτο δεδομζνων που ειςάγεται εκτόσ εάν είναι το τελευταίο οπότε και προςκζτουμε τον αρικμό των bit που ειςάγεται από το ςιμα msg_len (length εξωτερικά). Ζπειτα δεν προςτίκεται κανζνασ νζοσ αρικμόσ μζχρι να γίνει επαναφορά ολόκλθρου του component μζςω του ςιματοσ reset_input. Για να γίνει αυτό, ζνασ πολυπλζκτθσ επιλζγει εάν κα προςτεκεί θ ςτακερά 64 ι θ τιμι του ςιματοσ msg_len με select ςιμα το last_block το οποίο ενεργοποιείται ταυτόχρονα με τθν είςοδο του μεγζκουσ και των δεδομζνων. Ζπειτα ο register που αποκθκεφει το άκροιςμα απενεργοποιείται μόνιμα μζςω του ςιματοσ last_block_tmp το οποίο παράγει το Flip-Flop που δθμιουργεί τθν ζξοδο last (οπότε last = last_block_tmp). Φυςικά πριν από αυτό ο register δεν λειτουργεί ςυνεχϊσ αλλά μόνο όταν μπαίνουν δεδομζνα ςτον left shift register. Και οι δφο τουσ ελζγχονται από το ίδιο ςιμα enable_bfr (enable buffer) το οποίο παράγει ο εςωτερικόσ του input block counter. Το ςιμα αυτό παραμζνει ενεργό για 8 παλμοφσ. Πλα αυτά γίνονται κάκε φορά ςε διαφορετικό register ανάλογα με το ποιο μινυμα ειςάγεται εκείνθ τθ ςτιγμι. Αυτό, όπωσ είπαμε επιλζγεται με το ςιμα sel_inp (select input - sel_inp_block εςωτερικά). Ζτςι με το ςιμα αυτό επιλζγεται ςε ποιόν από τουσ 2 register κα γίνει θ πρόςκεςθ αλλά και ποιανοφ θ τιμι κα εμφανιςτεί ςτθν ζξοδο. Το ςε ποιον κα γίνε θ πρόςκεςθ επιλζγεται από τα ςιματα enable του κακενόσ register, ενϊ για τθν ζξοδο αυτό γίνεται με τθ χριςθ ενόσ πολυπλζκτθ (99bit MUX 2to1). Αφοφ λοιπόν επιλεγεί το άκροιςμα των bit αυτό πρζπει να μετατραπεί από άκροιςμα των bit ςε άκροιςμα των byte όπωσ και χρειάηεται ο αλγόρικμοσ. Αυτό γίνεται με τθ χριςθ ενόσ δεφτερου adder (ADD2) ο οποίοσ όποτε τα bit δεν είναι πολλαπλάςιο του 8, δεν ςχθματίηουν δθλαδι ακζραιο αρικμό από byte τότε προςκζτει

89 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ μία μονάδα ςτο ςτα 96 πιο ςθμαντικά bit του ακροίςματοσ. Το αποτζλεςμα εξζρχεται μζςω του ςιματοσ position. Εδϊ παράγεται και το ςιμα bitpad το οποίο είναι ουςιαςτικά ο αρικμόσ που προςτίκεται. Πςον αφορά το ςιμα first αυτό παράγεται από ζνα flip-flop (MSG0: 1bit DFF First ι MSG1: 1bit DFF First αντίςτοιχα) το οποίο ξεκινάει από τθν τιμι 1 και όταν το ςιμα end_block ενεργοποιθκεί και ταυτόχρονα επιτρζπεται να αλλάξει (ζχει επιλεγεί δθλαδι από το sel_inp) αυτό γίνεται 0 ςτον επόμενο παλμό και παραμζνει ζτςι μζχρι να γίνει επαναφορά. Αντίςτοιχα το last παράγεται από ζνα flip-flop (MSG0: 1bit DFF Last ι MSG1: 1bit DFF Last αντίςτοιχα) με αρχικι τιμι 0 και γίνεται 1 όταν ενεργοποιθκεί θ είςοδοσ last_block και επιτραπεί από τον επιλογζα sel_inp. Και οι δφο αυτζσ ζξοδοι επιτρζπεται να ενεργοποιθκοφν μόνο ςτον τελευταίο από τουσ 8 παλμοφσ με τθ χριςθ του ςιματοσ en_output. Πςον αφορά τον counter είναι ζνασ απλόσ counter 8 καταςτάςεων ο οποίοσ απαρικμεί τουσ κτφπουσ του ρολογιοφ και ζπειτα παγϊνει περιμζνοντασ να ενεργοποιθκεί το ςιμα start_counter το οποίο και το εκκινεί. Για να το κάνει αυτό χρθςιμοποιεί ζνα T-flip-flop και γι αυτό πρζπει το ςιμα εκκίνθςθσ να ενεργοποιοφνται ζνα παλμό νωρίτερα. Ραράγει τα ςιματα που προαναφζρκθκαν και επιπλζον ςτο τζλοσ ενεργοποιεί και το ςιμα start_keygen για να ξεκινιςει ο counter εςωτερικά του control unit ειδοποιϊντασ ότι το μινυμα είναι ζτοιμο για ειςαγωγι ςτθ μονάδα rounds. Το inp_block ζχει ακόμθ μία ζξοδο, αυτι είναι θ active_inp_block και γνωςτοποιεί ςτο control unit τθν κατάςταςθ λειτουργίασ του input block. Ουςιαςτικά πρόκειται για το ςιμα επίτρεψθσ του shift register (enable_bfr) Σο Component Rounds Το component αυτό είναι θ καρδιά του αλγορίκμου κακϊσ ςε αυτό γίνονται όλεσ οι πράξεισ που απαιτοφνται για τθ διάχυςθ τθσ πλθροφορίασ και τθν παραγωγι του hash αποτελζςματοσ. Ρεριζχει 32 MIX και 8 permute όπωσ και 16 adder των 64 bit για τισ προςκζςεισ των subkey. Αρχικά όμωσ και πριν περιγράψουμε το component το ίδιο, πρζπει να γίνει θ περιγραφι κάποιων ςθμαντικϊν component που το απαρτίηουν. Αυτά είναι το MIX και το permute Το MIX Το MIX όπωσ και ςτθν περιγραφι του αλγορίκμου είναι πολφ απλό ςτθ υλοποίθςι του. Αυτό γιατί περιζχει μόνο ζναν 64bit adder, μία περιςτροφι (shifter) και μία bitwise XOR. Στθν υλοποίθςθ αυτι όπωσ και ςτισ υπόλοιπεσ οι περιςτροφζσ πραγματοποιοφνται με απλά καλϊδια χωρίσ να επιβαρφνουν με κάποια κακυςτζρθςθ αφοφ είναι πάντα ςτακερζσ. Το MIX ζχει ειςόδουσ τισ X 0, X 1 και εξόδουσ τισ Y 0, Y 1 ςφμφωνα με τουσ ςυμβολιςμοφσ που χρθςιμοποιικθκαν. Το εςωτερικό του φαίνεται ςτο Σχιμα

90 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.14: Το εςωτερικό του MIX Το permute Το permute είναι απλά ζνα ανακάτεμα των λζξεων 64 bit. Γι αυτό και υλοποιείται απλά από καλϊδια τα οποία μετατάςςουν τισ λζξεισ αυτζσ μζςα ςτο κφκλωμα. Αυτζσ φαίνονται ςτο Σχιμα 4.15 και οι ςτακερζσ μετάκεςθσ ςτον Ρίνακασ 3.3. Σχιμα 4.15: Το permute

91 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Αρχιτεκτονική του Component Rounds Ζτςι λοιπόν, για το ςχθματιςμό του rounds χρθςιμοποιείται θ διάταξθ που φαίνεται ςτο Σχιμα Οι είςοδοι text και skey0 (subkey) αναλφονται ςε 8 λζξεισ των 64 bit θ κακεμία οι οποίεσ ειςάγονται ανά ηεφγθ ςτουσ adder όπου και γίνεται θ πρόςκεςθ του subkey. Μετά το MIX ακολουκεί το permute το οποίο όπωσ είπαμε κάνει τισ μετακζςεισ των λζξεων ςφμφωνα με τισ ςτακερζσ του αλγορίκμου. Ακολουκοφν άλλα τρία ηεφγθ MIX permute και ζπειτα φτάνουμε ςτον πρϊτο register. Εδϊ ολοκλθρϊνεται το πρϊτο από τα δφο ςτάδια του pipeline.ο register είναι εφρουσ 512 bit και ελζγχεται εκτόσ από το κακολικό ςιμα reg_en (enable) και από το ςιμα ελζγχου enable_rounds που παράγει το control unit. Ακολουκεί θ ίδια διαδικαςία μία ακόμθ φορά και ζτςι ςχθματίηεται το δεφτερο ςτάδιο pipeline. Με τθ διαφορά ότι ςε αυτό προςτίκεται το skey1 και οι ςτακερζσ περιςτροφισ είναι αυτζσ ςτο δεφτερο μιςό του Ρίνακασ 3.4. Τζλοσ, τα δεδομζνα βγαίνουν ςυνολικά ςαν μία 512 bit λζξθ και διαχειρίηονται ανάλογα

92 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.16: Το εςωτερικό του component rounds. Φαίνονται τα δφο ςτάδια pipeline τα οποία χωρίηονται με τον μεςαίο register

93 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Ο Πολυπλϋκτησ Ειςόδου Είναι ακριβϊσ ο ίδιοσ με αυτόν που αναλφκθκε ςτθν παράγραφο 4.2.5, επιτελεί τον ίδιο ςκοπό, ζχει τισ ίδιεσ τιμζσ ειςόδου και ζχει τα ίδια ςιματα ελζγχου Σο Component adder_8x64 Και αυτό το component ζχει αναλυκεί ςτθν παράγραφο Οι Δύο Register Οι δφο register που φαίνονται ςτο Σχιμα 4.12 ςτα αριςτερά είναι όπωσ και ςτο προθγοφμενο κφκλωμα δφο απλοί ακμοπυροδότθτοι register εφρουσ 512 bit με ςιμα επίτρεψθσ εκτόσ από το κακολικό ςιμα enable (reg_en) το ςιμα en_rg0 (enable register 0) και en_rg1 για τον κακζνα. Ο πρϊτοσ αποκθκεφει το αρχικό μινυμα ειςόδου του threefish για το πρϊτο μινυμα και ο δεφτεροσ για το άλλο. Ενεργοποιοφνται από το control unit όταν ο αντίςτοιχοσ counter δείξει τθν τιμι 0 που υποδθλϊνει ότι τθ ςτιγμι αυτι μπαίνουν τα δεδομζνα ςτο threefish Σο Component Tweak Generator Το component αυτό είναι το ίδιο με αυτό που χρθςιμοποιικθκε ςτο πρϊτο κφκλωμα και αναλφκθκε διεξοδικά ςτθν παράγραφο Επιτελεί τον ίδιο ςκοπό λειτουργίασ και δεν χρειάηεται 3εχωριςτό για κάκε μινυμα αφοφ καταρχιν δεν περιζχει ςτοιχεία μνιμθσ και κατά δεφτερον ποτζ δεν χρειάηεται να παραχκοφν ταυτόχρονα παϋνω από ζνα tweak Ο Πολυπλϋκτησ Κλειδιού Ιςχφουν τα ίδια που ιςχφουν και για το tweak generator και οι τιμζσ που ειςάγει όπωσ και τα ςιματα ελζγχου του ζχουν αναλυκεί ςτθν παράγραφο Σο Component Key Generator To component αυτό (Σχιμα 4.17) είναι εκείνο το οποίο παράγει τα subkey ςε κάκε γφρο του αλγορίκμου. Η ςχεδίαςθ που επιλζχκθκε είναι θ ίδια με αυτισ τθσ παραγράφου με μόνθ διαφορά το ςιμα επίτρεψθσ λειτουργίασ, κακϊσ ςε αυτιν τθν περίπτωςθ πρζπει να παράγεται ζνα subkey ςε κάκε παλμό και όχι ανά τζςςερισ όπωσ πριν. Είναι και θ προτεινόμενθ από τον ίδιο τον αλγόρικμο κακϊσ χρθςιμοποιεί ζνα πολφ μικρό και απλό κφκλωμα για τθν καταςκευι των subkey ανά παλμό ρολογιοφ. Για να το κάνει αυτό αξιοποιεί μία ιδιότθτα που ζχουν τα παραγόμενα subkey και αυτι δεν είναι άλλθ από το μεγάλο μζροσ που ζχουν κοινό δφο διαδοχικά subkey. Ζτςι για να παραχκεί ζνα subkey χρειάηεται τα 8 από τα 9 τμιματα του extended key και 2 από τα 3 τμιματα του extended tweak. Τα επιλεγμζνα τμιματα όμωσ χρθςιμοποιοφνται κυκλικά για τα διαδοχικά subkey κάτι που εκμεταλλεφεται το κφκλωμά μασ με τουσ δφο shift register που χρθςιμοποιεί. Ζναν για το extended key μεγζκουσ 576 bit (9 64 ι αλλιϊσ ) και ζναν για το extended tweak μεγζκουσ 192 bit (3 64 ι αλλιϊσ )

94 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Ο τρόποσ λειτουργίασ του είναι ο ακόλουκοσ. Ζνα παλμό πριν ξεκινιςει το component rounds να επεξεργάηεται το μινυμα ειςόδου επιτρζπεται ςτουσ shift register μζςω του ςιματοσ en_shr (enable shift register) να λειτουργιςουν και ταυτόχρονα μζςω του ςιματοσ load_shr δίνεται θ εντολι να φορτϊςουν το extended key και το extended tweak και ζτςι να δθμιουργθκεί το πρϊτο subkey. Το extended key και το extended tweak δεν είναι άλλα από τα key και tweak επαυξθμζνα με το αποτζλεςμα των xor των 8 τμθμάτων και τθσ ςτακεράσ (κεφάλαιο ) για το key και το αποτζλεςμα τθσ xor των 2 τμθμάτων για το tweak. Τα τμιματα αυτά είναι τα k 8 και t 2 αντίςτοιχα και ειςάγονται ςτα λιγότερο ςθμαντικά bit. Σχιμα 4.17: Το εςωτερικό του component key generator. Φαίνονται οι shift register και οι τρεισ adder όπωσ και τα τμιματα των λζξεων που ειςάγονται ςτο κακζνα. Για να παραχκεί το πρϊτο κλειδί επιλζγονται από το extended key τα 512 πιο ςθμαντικά bit και από το extended tweak τα 128 πιο ςθμαντικά bit των αποκθκευμζνων string κάκε φορά. Και με μόνο τρείσ προςκζςεισ των 64 bit παράγεται

95 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ το subkey. Για το επόμενο παραμζνουν ενεργοί οι shift register και περιςτρζφουν κατά 64 κζςεισ τα string που ζχουν αποκθκευμζνα και ζτςι παράγεται το επόμενο subkey. Αυτό επαναλαμβάνεται μζχρι τθ δθμιουργία και των 19 subkey. Ο αρικμόσ των γφρων που προςτίκεται είναι ο αρικμόσ του τρζχοντοσ κλειδιοφ και άρα θ τιμι του counter. Διευκρινίηεται ότι οι shift register είναι δφο ςφγχρονοι shift register παράλλθλθσ φόρτωςθσ με αλλαγι κατάςταςθσ ςτθν ανερχόμενθ παρυφι του ρολογιοφ και αςφγχρονο ςιμα επαναφοράσ (reset). Για οποιαδιποτε ενζργεια απαιτείται το ςιμα επίτρεψθσ (enable) και εάν το ςιμα load_shr είναι ενεργοποιθμζνο πραγματοποιείται παράλλθλθ φόρτωςθ, διαφορετικά περιςτροφι τθσ αποκθκευμζνθσ λζξθσ κατά 64 bit μεταφζροντασ τα πιο ςθμαντικά ςτθ κζςθ των λιγότερο ςθμαντικϊν. Στθν περίπτωςι μασ, όπωσ αναφζρκθκε και παραπάνω, ζχουμε δφο μθνφματα που επεξεργάηονται κάκε φορά, οπότε χρειάηεται και να παραχκοφν δφο ομάδεσ από 19 subkey. Ζτςι χρθςιμοποιικθκε δφο φορζσ το component αυτό, χωρίσ το ζνα να επθρεάηει με οποιονδιποτε τρόπο το άλλο. Τα ςιματα ελζγχου τουσ είναι ανεξάρτθτα και παράγονται από το control unit Οι Πολυπλϋκτεσ των Subkey Είναι οι δφο πολυπλζκτεσ που ζχουν ςαν είςοδό τουσ τισ δφο εξόδουσ των key generator και ελζγχονται από το ςιμα ελζγχου mux_sel (MUX_odd 2to1 και MUX_even 2to1). Αυτό που κάνουν είναι να κατευκφνουν κατάλλθλα τα παραγόμενα από τα key generator τμιματα ανάλογα με ποιο από τα δφο μθνφματα επεξεργάηεται ςτο κάκε ςτάδιο του pipeline. Οπότε όταν πχ ειςζλκει μπλοκ του πρϊτου μθνφματοσ ο πολυπλζκτθσ MUX_odd επιλζγει το αποτζλεςμα του key generator 1 και ο MUX_even του key generator Σο Component Output Block Το component αυτό, όπωσ και αρκετά άλλα, είναι το ίδιο ακριβϊσ με του προθγοφμενου κυκλϊματοσ και αναλφεται ςτθν παράγραφο Σο Control Unit Το control unit, όπωσ φανερϊνει και το όνομά του, παράγει όλα τα ςιματα ελζγχου και ςυγχρονιςμοφ των διαφόρων μονάδων. Είναι αυτό που με τθ χριςθ μίασ μθχανισ εςωτερικϊν καταςτάςεων (FSM Finite State Machine) για κάκε μινυμα (ςυνολικά δφο) γνωρίηει τι τφποσ είναι το κάκε μπλοκ που επεξεργάηεται και παράγει τα κατάλλθλα ςιματα (type, text_sel, key_sel κ.α.) Ακόμθ περιζχει και το component counter που ελζγχει το component rounds και παράγει και το αρικμό του τρζχοντοσ γφρου (round #) για κάκε μινυμα Το Component Counter (20 Παλμών) Είναι ο μεγαλφτεροσ counter του κυκλϊματοσ και ςυντονίηει πολλά από τα ςιματα ελζγχου. Ζχει για ειςόδουσ τα βαςικά ςιματα: το ςιμα ρολογιοφ (clock), το αςφγχρονο ςιμα επαναφοράσ (reset) και το ςιμα επίτρεψθσ (enable). Επίςθσ και από ζνα ςιμα ενεργοποίθςθσ (start_counter_0 και start_counter_1) για κάκε μινυμα όπωσ

96 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ και το ςιμα active_inp_block (active input block) το οποίο ενθμερϊνει για τθν κατάςταςθ του input block. Σχιμα 4.18: Το interface του component counter Το interface του φαίνεται ςτο Σχιμα 4.18 και παράγει τα ακόλουκα ςιματα για κάκε ζνα από τα μθνφματα: first_round: Ραίρνει τθν τιμι 1 μόνο όταν βριςκόμαςτε ςτον πρϊτο γφρο (round 0) και χρθςιμοποιείται για τον ζλεγχο του επιλογζα πολυπλζκτθ ειςόδου text_sel. Πταν είναι 0 ο επιλογζασ δεν μπορεί να δείχνει άλλθ τιμι εκτόσ από το feedback Χ512. en_keygen, load_keygen: Είναι τα ςιματα ελζγχου των shift register τθσ μονάδασ key generator. Ππωσ αναλυτικά εξθγικθκε παραπάνω ελζγχουν τθν φόρτωςθ και περιςτροφι των δεδομζνων. en_input: Είναι ζνα ςιμα επίτρεψθσ τθσ ειςόδου του ςιματοσ new_msg που ειςάγεται εξωτερικά. Ενεργοποιείται ςτισ εξισ περιπτϊςεισ: o Πταν οι counter είναι ενεργοί, οπότε υπάρχει κάποιο μινυμα που επεξεργάηεται, και ο αντίςτοιχοσ counter ζχει τιμι 9 o Πταν οι counter είναι ανενεργοί, ο αντίςτοιχοσ counter ζχει τιμι 19 και το input block δεν είναι ενεργό. Είναι θ περίπτωςθ κατά τθν οποία το κφκλωμα ςυνολικά βριςκόταν ςτθν ακινθςία και ζνα από τα δφο ηθτοφν να ξεκινιςουν. o Πταν οι counter είναι ανενεργοί, ο αντίςτοιχοσ counter ζχει τιμι 10 και το input block είναι ενεργό. Είναι θ περίπτωςθ που δεν υπιρχε κανζνα μινυμα ςτο ςτάδιο τθσ επεξεργαςίασ, ιρκε το ζνα και αμζςωσ ιρκε και το άλλο. Οπότε το ζνα βρίςκεται ςτο ςτάδιο τθσ ειςαγωγισ από το input block. cntr_end: (counter end) Είναι ζνα ςιμα που ειδοποιεί το component FSM για το επικείμενο τζλοσ του τρζχοντοσ ςετ γφρων. Ενεργοποιείται όταν ο counter ζχει τθν τιμι 17 προκαλϊντασ τθν αλλαγι κατάςταςθσ (όχι πάντα) ςτο FSM και δίνοντασ του το απαραίτθτο χρονικό περικϊριο να αποφαςίςει εάν κα ςυνεχίςει τθ λειτουργία του counter ι εάν κα τθν αφιςει να διακοπεί. en_text_reg: (enable text register) Ελζγχει τον register που αποκθκεφει το αρχικό μινυμα ειςόδου με ςκοπό να γίνει xor με το αποτζλεςμα των επαναλιψεων

97 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Ενεργοποιείται πάντα ςτον πρϊτο γφρο (round 0) όταν και ειςάγεται ζνα νζο μπλοκ ςτο threefish. (Ταυτίηεται με το ςιμα first_round) counter_value: Είναι θ τρζχουςα τιμι του counter και χρθςιμοποιείται από τα component που αναφζρκθκαν πιο πάνω με τον τρόπο που αναφζρκθκε. Και το κοινό ςιμα rounds_reg_en (rounds register enable) το οποίο ελζγχει τον εςωτερικό του component rounds register επιτρζποντάσ του ι μθ τθ λειτουργία. Ραραμζνει ςτθν τιμι 1 για το διάςτθμα που είναι ενεργοί οι counter. Πςον αφορά τθ λειτουργία των counter, οι δφο counter είναι μεταξφ τουσ ςυηευγμζνοι κακϊσ ελζγχονται από το ίδιο ςιμα επίτρεψθσ και ζχουν τα ίδια ςιματα ρολογιοφ και επαναφοράσ. Ο ζνασ ξεκινά τθν απαρίκμθςθ από τθν τιμι 19 και ο άλλοσ από τθν τιμι 10 και μετράνε ο κακζνασ μζχρι τθν τιμι 19 μετά τθν οποία επανζρχονται ςτθν τιμι 0. Τα ηεφγθ τιμϊν φαίνονται και ςτον Ρίνακασ 4.5 όπου φαίνεται και πότε ειςάγονται δεδομζνα ςτο rounds. Ξεκινάνε από το ηεφγοσ για να δϊςουν το προβάδιςμα του ενόσ παλμοφ ςτο key generator. Το κάκε slot (κζςθ επεξεργαςίασ) ζχει δικό του T-Flip-Flop που ςυγκρατεί το εάν υπάρχει μινυμα ςτο slot 1 ι ςτο slot 2 και το ςιμα επίτρεψθσ του counter παράγεται από το λογικό or των δφο εξόδων των Flip-Flop αυτϊν. Ζτςι, αρκεί ζνα από τα δφο να είναι ενεργό και οι counter λειτουργοφν κανονικά και εάν απενεργοποιθκοφν ςταματάνε ςτο τζλοσ του αντίςτοιχου counter μζνοντασ ζτοιμοι για να ςυνεχίςουν με το slot που ςταμάτθςε τελευταίο. Αυτό το ςθμείο είναι ιδιαίτερα ςθμαντικό κακϊσ επθρεάηει και τον τρόπο ειςόδου των δεδομζνων. Οπότε το ςφςτθμα που κα ειςάγει τα δεδομζνα πρζπει να γνωρίηει ποιο πακζτο μπαίνει ςε κάκε slot και να κυμάται ποιο ιταν αυτό που βγικε τελευταίο κακϊσ είναι αυτό το slot που κα χρθςιμοποιθκεί ξανά πρϊτο. Ζχει ςθμαςία γιατί θ είςοδοσ δεν είναι ςυμμετρικι και τα δεδομζνα του δεφτερου slot ξεκινάνε να ειςάγονται ζνα παλμό νωρίτερα από ότι κα περίμενε κανείσ (μετά από 9 παλμοφσ μετά το πρϊτο και όχι μετά από 10, αντίςτοιχα τα δεδομζνα του πρϊτου ειςάγονται μετά από 11 παλμοφσ από αυτά του δεφτερου και όχι μετά από 10) Το Component FSM Ραρά τθν ονομαςία του, το component αυτό δεν περιζχει μόνο τθν μθχανι καταςτάςεων αλλά και κάποια άλλα ςτοιχεία (Σχιμα 4.19). Αυτά είναι ζνασ μθχανιςμόσ ελζγχου και ςυγχρονιςμοφ του ςιματοσ εκκίνθςθσ του output block, ζνα D-Flip-Flop για να «κρατάει» το ςιμα last εάν αυτό ενεργοποιικθκε και ζνα D-Flip-Flop για να μπορεί να παρακάμπτει ζνα ςιμα. Ο μθχανιςμόσ ελζγχου του ςιματοσ εκκίνθςθσ του output block αποτελείται από δφο D-Flip-Flop και ζνα T-Flip-Flop. Η λογικι του είναι απλι: Επειδι οι καταςτάςεισ μπορεί να αλλάηουν χωρίσ απαραίτθτα να ζχει ολοκλθρωκεί ζνα ςετ γφρων εκμεταλλεφεται τθ ςτακερότθτα ςτθν περίοδο του ςιματοσ cntr_end και ζτςι όταν φτάςει ςτθν τελευταία κατάςταςθ ενόσ κφκλου καταςτάςεων ενεργοποιεί το μθχανιςμό αυτό ανεξάρτθτα από το εάν κα παραμείνει ςε αυτιν μζχρι το τζλοσ του

98 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ μπλοκ. Ο μθχανιςμόσ μόλισ ενεργοποιθκεί το ςιμα cntr_end ενεργοποιεί για ζνα παλμό το ςιμα start_out_bfr και επανζρχεται ςτθν πρότερθ κατάςταςι του. Ακόμθ επειδι το input block που παράγει το ςιμα final πριν ολοκλθρωκεί θ επεξεργαςία του τρζχοντοσ μπλοκ ξεκινάει να ειςάγει το επόμενο και «ξεχνάει» τισ ιδιότθτεσ του τρζχοντοσ υπάρχει ζνα D-Flip-Flop για να κρατάει αυτό τθν ιδιότθτα αυτι που χρειάηεται ςαν ςιμα ελζγχου τθσ αλλαγισ κάποιων καταςτάςεων. Ππωσ φαίνεται και ςτο Σχιμα 4.20, όταν θ μθχανι βρίςκεται ςτθν κατάςταςθ key_0 ι message_0 εάν προζρχεται από τθν κατάςταςθ halt πρζπει να περάςει αμζςωσ ςτθν επόμενθ κατάςταςθ χωρίσ να περιμζνει το ςιμα cntr_and. Αυτό επιτυγχάνεται με τθ χριςθ ενόσ D-Flip-Flop το οποίο κζτει θ κατάςταςθ halt και εάν είναι ενεργοποιθμζνθ θ ζξοδόσ του τότε μεταβαίνει κατευκείαν ςτθν επόμενθ κατάςταςθ. Ακολουκεί το ςχιμα με τθν αρχιτεκτονικι του FSM component (Σχιμα 4.19)

99 Σχιμα 4.19: Το εςωτερικό του component FSM. Φαίνονται τα Flip-Flop και θ Finite State Machine.

100 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Οι Καταςτάςεισ τησ FSM Συνολικά ζχει 11 καταςτάςεισ και ειδικότερα: 1 κατάςταςθ ςτάςθσ, 4 καταςτάςεισ για το key, 1 κατάςταςθ για το configuration, 4 καταςτάςεισ για το message και 1 κατάςταςθ για το output. Αναλυτικά για τθν κακεμία: halt: Είναι θ κατάςταςθ θρεμίασ του κυκλϊματοσ, παραμζνει ςε αυτι μζχρι να ζρκει νζο μινυμα οπότε και ανάλογα με το ςιμα sel_mac μεταβαίνει είτε ςτθν key_0 είτε ςτθν message_0. Κακϊσ βρίςκεται ςε αυτιν ενεργοποιείται το ςιμα bypass_cntr_end κακϊσ για λόγουσ ςυγχρονιςμοφ όταν βρεκεί ςε μία από τισ δφο δεν πρζπει να περιμζνει τθν ενεργοποίθςθ αυτοφ του ςιματοσ. key_0: Είναι θ πρϊτθ από μία ςειρά καταςτάςεων για τθν πραγματοποίθςθ του MAC αλγορίκμου. Είναι πανομοιότυπθ με τθν key_2 με τθ μόνθ διαφορά να βρίςκεται ςτο ςιμα του επιλογζα του πολυπλζκτθ κλειδιοφ. Η key_0 επιλζγει για είςοδο τθν τιμι 0 ενϊ θ key_2 επιλζγει για είςοδο το αποτζλεςμα του threefish. key_1: Είναι μία κατάςταςθ θ οποία χρειάηεται μόνο για να μεταβεί το ςιμα start_inp_counter ςτθν τιμι 0 πριν μπορζςει να μεταβεί ςτθν τιμι 1 ςτθν κατάςταςθ key_2. Εάν το κλειδί ζχει μζγεκοσ μικρότερο ι ίςο από 512 bit τότε μεταβαίνει κατευκείαν ςτισ καταςτάςεισ για το configuration. key_2: Είναι μία κατάςταςθ που επαναλαμβάνεται όςεσ φορζσ χρειαςτεί, μαηί με τθν key_3, μζχρι να τελειϊςουν τα μπλοκ κλειδιοφ και να ενεργοποιθκεί το ςιμα last. key_3: Η φπαρξι τθσ οφείλεται ςτον ίδιο λόγο που οφείλεται και τθσ key_1. Υπάρχει για τθν απενεργοποίθςθ του ςιματοσ start_inp_counter. configuration_0: Ο ρόλοσ αυτισ τθσ κατάςταςθσ είναι να ενεργοποιεί το ςιμα start_rounds το οποίο και ενεργοποιεί τον counter για ζνα ακόμθ ςετ γφρων. Ακόμθ ςτθν κατάςταςθ αυτι τίκεται ο πολυπλζκτθσ ειςόδου ςτθν αντίςτοιχθ τιμι για το configuration μπλοκ. Ταυτόχρονα γίνεται επαναφορά του input block και του εςωτερικοφ D-Flip-Flop που ςυγκρατεί το last. message_0: Είναι θ αντίςτοιχθ τθσ key_0 όταν πραγματοποιείται ο απλόσ HASH αλγόρικμοσ. Είναι πανομοιότυπθ με τθν message_2 αλλά και εδϊ θ διαφορά ζγκειται ςτον επιλογζα του πολυπλζκτθ κλειδιοφ ο οποίοσ ειςάγει το ζτοιμο αποτζλεςμα του configuration που προθγείται ςτον αλγόρικμο. message_1: Ππωσ θ key_1 και θ key_3 υπάρχουν για να ςβζνουν το ςιμα start_inp_counter. Αν το μινυμα είναι μικρό ( 512 bit) τότε μεταβαίνει κατευκείαν ςτθν κατάςταςθ output_0. message_2: Είναι θ κατάςταςθ θ οποία επαναλαμβάνεται όςεσ φορζσ χρειαςτεί μαηί με τθν message_3 για να ειςαχκοφν όλα τα μπλοκ μθνφματοσ που απομζνουν. message_3: Η αντίςτοιχθ τθσ message_

101 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ output_0: Αυτι θ κατάςταςθ υπάρχει όπωσ και θ configuration_0 για να ενεργοποιιςει το ςιμα start_rounds και να ξεκινιςει το threefish για το output. Δεν ειςάγονται δεδομζνα από το input block αλλά θ αντίςτοιχθ ςτακερά από τον πολυπλζκτθ ειςόδου. Ακολουκεί το ςχιμα με τισ καταςτάςεισ και τισ μεταβάςεισ από τθ μία ςτθν άλλθ (Σχιμα 4.20)

102 Σχιμα 4.20: Οι καταςτάςεισ και οι μεταβάςεισ από τθ μία ςτθν άλλθ. Σχθματίηονται 2 κφκλοι λειτουργίασ, αυτόσ του MAC και αυτόσ του απλοφ HASH.

103 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Η αρχιτεκτονική του Control Unit Το control unit ζχει ωσ ςκοπό να δθμιουργιςει τα ςιματα ελζγχου τα οποία κα επιτρζψουν ςτο ςυνολικό κφκλωμα να λειτουργιςει και ςτισ υπάρχουςεσ μονάδεσ να ςυνεργαςτοφν αρμονικά και ςυγχρονιςμζνα. Ππωσ είδαμε περιζχει δφο μονάδεσ FSM, μία για κάκε κζςθ μθνφματοσ ι αλλιϊσ slot. Αυτζσ όμωσ δεν ελζγχουν μόνο ανεξάρτθτεσ μονάδεσ αλλά και κοινζσ. Το ρόλο του ςυγχρονιςμοφ αυτϊν των ςθμάτων ελζγχου που παράγουν αυτζσ οι δφο αλλά και τον ζλεγχο των δεδομζνων που τουσ ειςάγονται αναλαμβάνει να εκπλθρϊςει το ίδιο το control unit. Το κάνει αυτό χρθςιμοποιϊντασ πολυπλζκτεσ ι απλζσ πφλεσ or και and κατά περίπτωςθ. Ζτςι για τα ςιματα των επιλογζων των διαφόρων πολυπλεκτϊν που παράγουν και οι δφο FSM (key_sel, block_type, text_sel) χρθςιμοποιοφνται τρείσ πολυπλζκτεσ με ςιμα ελζγχου το λιγότερο ςθμαντικό bit τθσ τιμισ του counter 0. Δθλαδι επιλζγονται διαδοχικά και ςυνεχϊσ τα αποτελζςματα των δφο FSM εναλλάξ. Επιπλζον, παράγεται το ςιμα επιλογισ για το input block το sel_inp (select input) το οποίο δθλϊνει ποιο από τα δφο μθνφματα κα ειςαχκεί. Ζχει τθν τιμι 1 για τουσ γφρουσ 0 ζωσ και 8, τιμι που υποδθλϊνει το δεφτερο μινυμα και 0 για τουσ υπόλοιπουσ. Τα ςιματα start_input και start_output των δφο FSM παράγουν το τελικό αποτζλεςμα απλά με μία or. Δεν υπάρχει λόγοσ να χρθςιμοποιθκεί κάτι επιπλζον και τα ςιματα αυτά αποκλείεται να ενεργοποιθκοφν ταυτόχρονα. Η αρχιτεκτονικι του control unit είναι αρκετά απλι, αφοφ το μόνο που κάνει είναι να ενςωματϊνει τα δφο προαναφερκζντα component και επιπλζον να επαναπροςδιορίηει τον επιλογζα του πολυπλζκτθ ειςόδου. Για τθν παραγωγι του κάκε ςιματοσ text_sel μεςολαβεί ζνα ακόμθ ςτάδιο πριν τον πολυπλζκτθ το οποίο δεν επιτρζπει ςτον επιλογζα να πάρει άλλθ τιμι εκτόσ από το 0 (αντιςτοιχεί ςτο feedback από τθ μονάδα rounds) όταν βρίςκεται ςε οποιοδιποτε γφρο εκτόσ του πρϊτου γφρου (round 0). Αυτό γίνεται με τθ βοικεια των ςθμάτων first_round για το κάκε μινυμα. Πςον αφορά τισ ειςόδουσ, αυτζσ επειδι μερικζσ είναι κοινζσ και για τα δφο slot πρζπει με κάποιο τρόπο να ξεχωρίηουν και να ειςάγονται ςτο ςωςτό FSM. Για να γίνει αυτό χρθςιμοποιικθκε απλά το sel_input για το ςιμα final και οι τιμζσ των counter για το ςιμα start_keygen που προζρχεται από το input block. Ζτςι το ςιμα start_keygen «μεταφράηεται» ςαν start_keygen_0 ι start_keygen_1 εάν και μόνο εάν ο αντίςτοιχοσ counter ζχει τθν τιμι 18 ι 19 (ςτθν τιμι 19 κα παραχκεί το ςιμα start_keygen όταν ο counter είναι ανενεργόσ, ενϊ ςτθν 18 όταν είναι ενεργόσ). Ακολουκεί το ςχιμα με τθν αρχιτεκτονικι του (Σχιμα 4.21)

104 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.21: Το εςωτερικό του Control Unit. Φαίνονται οι δφο FSM και οι πολυπλζκτεσ για τθν επιλογι των ςωςτϊν τιμϊν εξόδου

105 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ 4.4 ΣΟ ΚΤΚΛΨΜΑ ΤΧΗΛΨΝ ΕΠΙΔΟΕΨΝ ΦΨΡΙ ΠΕΡΙΟΡΙΜΟ ΕΙΟΔΟΤ Ειςαγωγό Το κφκλωμα αυτό είναι πανομοιότυπο με το αμζςωσ προθγοφμενο ςτθν αρχι λειτουργίασ και ςτα βαςικά μζρθ που επεξεργάηονται τον αλγόρικμο. Η διαφορά, όπωσ φαίνεται και από τον τίτλο ζγκειται ςτο γεγονόσ πωσ επικυμθτό ιταν να υπάρχει και μία ςχεδίαςθ χωρίσ τον περιοριςμό των bit ειςόδου που υπάρχει ςτισ άλλεσ υλοποιιςεισ και ο οποίοσ ειςάγει μία μείωςθ ςτον ρυκμό ειςόδου τθσ πλθροφορίασ. Ράντωσ δεν πρζπει να υπάρξει θ παρανόθςθ ότι ο ρόλοσ του input block δεν υπάρχει πια. Απλά αλλάηει χάνοντασ μόνο τθν ικανότθτα του padding αλλά διατθρεί όλεσ τισ άλλεσ: παραγωγι ςθμάτων και φιλτράριςμα δεδομζνων. Τζλοσ, αφοφ τα δεδομζνα ειςάγονται κατά 512 bit τθ φορά, για τθν ειςαγωγι τουσ αρκεί ζνασ μόνο παλμόσ ρολογιοφ και τα δεδομζνα για το δεφτερο μινυμα μποροφν να ειςαχκοφν ςτο αμζςωσ επόμενο. Οπότε, χρειάηεται να ακολουκθκεί θ διαδικαςία που περιγράφθκε ςτθν παράγραφο Interface και Βαςικϊ Component Το κφκλωμα, όπωσ και τα προθγοφμενα είναι ςφγχρονο με τθν είςοδο clock να είναι το ρολόι του κυκλϊματοσ και γενικά να ιςχφει ότι ίςχυε και ςτα προθγοφμενα κυκλϊματα. Συνοπτικά, οι είςοδοι/ζξοδοι του κυκλϊματοσ είναι: Είςοδοι Ζξοδοι Συμβολιςμόσ Bit Ρεριγραφι Συμβολιςμόσ Bit Ρεριγραφι msg 512 Μινυμα ειςόδου md 512 Hash τιμι length 10 Χρθςιμοποιοφμενα bit valid 1 Ειδοποίθςθ εγκυρότθτασ new_msg 1 Ειδοποίθςθ ειςόδου κάκε 512 bit last_block 1 Ειδοποίθςθ τελευταίων bit sel_mac 1 Επιλογι HASH ι MAC Πίνακασ 4.6: Είςοδοι/Ζξοδοι του κυκλϊματοσ Η είςοδοσ msg είναι θ κφρια είςοδοσ των δεδομζνων τα οποία ςτθ ςυνζχεια διαμορφϊνονται για να δθμιουργθκεί το απαιτοφμενο από τον αλγόρικμο string των 512 bit. Η είςοδοσ length είναι αυτι που δίνει το ακριβζσ μζγεκοσ του πακζτου των 512 bit. Αυτό γίνεται ςε ςυνεργαςία με τθν είςοδο last_block με τθ διαδικαςία που περιγράφθκε ςτθν γενικι περιγραφι ςτθν αρχι του κεφαλαίου. Η new_msg ενεργοποιεί το κφκλωμα για να δεχτεί το νζο μινυμα και ςτθ ςυνζχεια ειδοποιεί για τα

106 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ νζα πακζτα που ζρχονται. Η είςοδοσ sel_mac όταν βρίςκεται ςτθ ςτάκμθ 0 το κφκλωμα λειτουργεί ςαν απλό hash και όταν βρίςκεται ςτθ ςτάκμθ 1 ςαν MAC. Η ζξοδοσ του κυκλϊματοσ είναι το md το οποίο βγάηει τα δεδομζνα ςε ζνα τμιμα των 512 bit. Και θ valid μεταβαίνει ςε ςτάκμθ 1 για τον παλμό εκείνο που τα δεδομζνα εξζρχονται. Στο Σχιμα 4.22 φαίνονται τα βαςικά component που απαρτίηουν το κφκλωμα και οι μεταξφ τουσ διαςυνδζςεισ. Τα βαςικά από τα οποία είναι: Ονομαςία I/0 Ρεριγραφι Input Block 10/5 Μετατρζπει τα δεδομζνα ειςόδου από 8 πακζτα των 64 bit ςε ζνα των 512 bit και παράγει τα ςιματα first, final, bitpad και position Control Unit 5/18 Συντονίηει όλα τα υπόλοιπα και αςκεί τον ζλεγχο του κυκλϊματοσ Rounds 7/1 Ρεριζχει τα MIX και πραγματοποιεί ζνα γφρο (round) Key 8/1 Ραράγει τθν κατάλλθλθ ςτιγμι τα κατάλλθλα subkey Generator Tweak Generator 5/1 Δθμιουργεί το κατάλλθλο tweak ανάλογα με τθν είςοδο και τθν κατάςταςθ Output Block 2/2 Διαςπά το μινυμα εξόδου ςε τμιματα των 64 bit. Πίνακασ 4.7: Τα component του κυκλϊματοσ Το component input block δεν κάνει πλζον pad τα δεδομζνα ειςόδου αλλά επιτελεί άλλεσ λειτουργίεσ του ςυςτιματοσ και αυτζσ είναι να παράγει τισ εξόδουσ first, final, bitpad, position. Ο αλγόρικμοσ για τθ λειτουργία του χρειάηεται να γνωρίηει εάν το μπλοκ δεδομζνων που επεξεργάηεται είναι το πρϊτο ι το τελευταίο, εάν ζχει γίνει θ διαδικαςία του bitpad, όπωσ περιγράφεται ςτο πρότυπο, και πόςα είναι τα δεδομζνα που ζχουν επεξεργαςτεί μζχρι ςτιγμισ. Ρρζπει να τα γνωρίηει και για τα δφο μθνφματα οπότε και για να επιλζξει ςε ποιο από τα δφο αναφζρεται κάκε φορά υπάρχει το ςιμα sel_inp (select input) του οποίου θ ςτάκμθ 0 αναφζρεται ςτο πρϊτο και όταν είναι 1 ςτο άλλο. Τα ςιματα αυτά χρθςιμοποιοφνται ςαν είςοδοι από το tweak generator. Οι τζςςερεισ αυτζσ ζξοδοι πρζπει να χρθςιμοποιθκοφν μόνο ζνα παλμό ρολογιοφ μετά και τθν είςοδο του πακζτου, δθλαδι 2 παλμοφσ μετά τθν ενεργοποίθςθ τθσ ειςόδου new_msg, και μόνο τότε. Πςο για τθν ζξοδο M512, αυτι είναι το παραγόμενο string για να γίνει hash και παραμζνει μετά τθν δθμιουργία του μζχρι τθν αντικατάςταςι του από το επόμενο string. Η ζξοδοσ start_keygen δεν υπάρχει πια αφοφ τα δεδομζνα ειςάγονται ςε ζνα μόνο παλμό και δεν υπάρχει κακυςτζρθςθ αλλά ο counter εκκινείται από το FSM απευκείασ

107 Σχιμα 4.22: Γενικι τοπολογία του κυκλϊματοσ. Φαίνονται τα component που το απαρτίηουν και οι μεταξφ τουσ διαςυνδζςεισ.

108 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Το rounds είναι το component που υλοποιεί το μεγαλφτερο μζροσ του threefish. Ρεριζχει τα 32 MIX και τα 8 permute κακϊσ και τουσ adder για τον υπολογιςμό του αποτελζςματοσ και των τεςςάρων γφρων ςε κάκε παλμό. Είναι και αυτό ζνα ςφγχρονο κφκλωμα, αφοφ ςτο μζςον του και πριν τθν ζξοδό του R512 υπάρχει από ζνασ register. Ζχει εκτόσ από τθν είςοδο text_in, ειςόδουσ τισ skey0 και skey1 ςτισ οποίεσ και μπαίνουν τα αντίςτοιχα για κάκε μινυμα subkey. Για τθν επιλογι των κατάλλθλων subkey υπάρχουν δφο πολυπλζκτεσ οι οποίοι επιλζγουν διαδοχικά και εναλλάξ το αποτζλεςμα του ςωςτοφ key generator. Το ςιμα επιλογισ τουσ παράγεται κατευκείαν από το control unit και είναι το mux_sel. Το component rounds μαηί με τον multiplexer ειςόδου (512bit MUX 4to1) δθμιουργοφν τον μικρό κφκλο επανάλθψθσ για τουσ 72 γφρουσ. Για να ολοκλθρωκεί όμωσ θ διαδικαςία του threefish πρζπει να γίνει μία ακόμθ πρόςκεςθ subkey και μία XOR του αποτελζςματοσ με το αρχικό μινυμα από τα component 8x64bit Adders και XOR αντίςτοιχα τα οποία και γίνονται μόνο μία φορά για κάκε μπλοκ. Στο component rounds ςχθματίηονται και τα δφο ςτάδια pipeline, ωςτόςο οι επαναλιψεισ γίνονται όχι ανεξάρτθτα του ενόσ ςταδίου από το άλλο αλλά για ζνα μπλοκ δεδομζνων εναλλάςςεται θ βακμίδα ςτθν οποία βρίςκεται. Από εδϊ προκφπτει και ο περιοριςμόσ του άρτιου αρικμοφ των παλμϊν μίασ περιόδου κακϊσ εάν ιταν περιττόσ τότε κα ειςάγονταν ςτθν ίδια βακμίδα όπου και κα βριςκόταν το άλλο μινυμα. Ακολουκεί ο Ρίνακασ 4.5 ςτον οποίο φαίνεται ο ςυςχετιςμόσ των δφο μθνυμάτων και των αντίςτοιχων τιμϊν που δείχνουν οι counter για το κακζνα. Counter value Counter value Message0 I O Message1 I O Πίνακασ 4.8: Στον πίνακα αυτό φαίνεται πότε ειςάγονται και εξάγονται τα αντίςτοιχα μθνφματα (I=input, O=output, =δεν χρθςιμοποιείται) Ο προαναφερκείσ multiplexer ειςόδου (512bit MUX 4to1) ζχει το ρόλο τθσ ειςόδου των νζων δεδομζνων κάκε φορά που ζνασ από τουσ δφο counter δείχνει τθν τιμι 0 και το κλείςιμο του κφκλου (feedback) για τουσ υπόλοιπουσ. Αυτά που ειςάγονται μποροφν να είναι είτε αυτά που παρζχονται εξωτερικά τροποποιθμζνα από τον padder είτε κάποιεσ ςτακερζσ τιμζσ ςτισ περιπτϊςεισ που το μπλοκ που ξεκινάει είναι είτε configuration ( 0x 1334 ) είτε output ( 0x00 ) (οι τιμζσ αυτζσ είναι ίδιεσ και για τα τζςςερα κυκλϊματα και εξθγικθκαν παραπάνω κεφάλαιο 4.2.5). Ζνα άλλο ςθμαντικό component του ςυςτιματοσ είναι το tweak generator το οποίο, δουλειά του είναι να ςυγκεντρϊνει τα ςιματα first, final, bitpad και position από το input block και το ςιμα type από το control unit και να ςχθματίηει το ςωςτό string tweak που ειςάγεται ςτο component key generator. Στισ περιπτϊςεισ που το type του μπλοκ είναι cfg (configuration) ι out (output) τότε οι άλλεσ είςοδοι δεν

109 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ χρθςιμοποιοφνται αλλά παράγονται εςωτερικά κακϊσ είναι πάντα ίδιεσ ςε αυτζσ τισ περιπτϊςεισ. Το key generator, λοιπόν, είναι το component που δθμιουργεί ςειριακά όλα τα subkey που χρειάηονται από το component rounds. Είναι δφο ςτθν περίπτωςι μασ κακϊσ δφο είναι και τα μθνφματα που επεξεργαηόμαςτε ταυτόχρονα. Το component ζχει ςαν ειςόδουσ του τα ςιματα tweak προερχόμενο από το component tweak generator, το key προερχόμενο από τον multiplexer κλειδιοφ (512bit MUX 3to1) και το ςιμα cntr_val (round#) προερχόμενο από το control unit. Τα τρία αυτά ςιματα είναι απαραίτθτα για να γίνει θ παραγωγι των subkey. Ακόμθ ειςάγονται τα ςιματα en_keygen_shr (enable key generator shift registers) και load_keygen_shr (load key generator shift registers) τα οποία και ελζγχουν τθ λειτουργία του κυκλϊματοσ και κα αναλυκοφν διεξοδικά παρακάτω. Χριςιμο κα ιταν να γνωρίηουμε ότι για να αποκθκευτοφν τα δεδομζνα ςτουσ εςωτερικοφσ shift register και να παραχκεί το πρϊτο subkey χρειάηεται ζνασ παλμόσ ρολογιοφ. Φυςικά δεν λείπουν και τα ςιματα clock, enable και reset τα οποία φανερϊνουν ότι και αυτό το component είναι ςφγχρονο. Ο multiplexer κλειδιοφ (512bit MUX 3to1) είναι αυτόσ που μαηί με τα component rounds, 8x64bit Adders, XOR, τον αντίςτοιχο key generator και τουσ πολυπλζκτεσ των subkey κλείνουν το μεγάλο κφκλο δεδομζνων κακϊσ ςχεδόν πάντα το αποτζλεςμα του threefish χρθςιμοποιείται ςαν νζο κλειδί ςτο επόμενο μπλοκ. Δεν χρθςιμοποιείται μόνο ςτισ περιπτϊςεισ που ξεκινάει θ λειτουργία του αλγορίκμου ςε mode MAC οπότε και ειςάγεται θ ςτακερά 0 ( 0x00 ) και όταν ξεκινά ςε mode HASH οπότε και ειςάγεται θ ςτακερά 0x49 33 (επεξθγικθκαν ςτο κεφάλαιο 4.2.9). Ρριν όμωσ το αποτζλεςμα του προθγοφμενου threefish φτάςει ςτον πολυπλζκτθ κλειδιοφ περνά από ζνα register του οποίου ο ρόλοσ είναι απλϊσ να ειςάγει κακυςτζρθςθ ενόσ παλμοφ λόγω τθσ φπαρξθσ του ενόσ παραπάνω παλμοφ που προςτζκθκε ϊςτε να γίνει ο αρικμόσ των παλμϊν άρτιοσ αρικμόσ. Το component output block είναι αυτό που αναλαμβάνει να μεταφζρει τα δεδομζνα εξόδου (X512) ςτθν ζξοδο md (message digest) που είναι και θ τελικι ζξοδοσ του κυκλϊματοσ. Ταυτόχρονα με τθν ζξοδο των δεδομζνων ενεργοποιείται και θ ζξοδοσ valid του component θ οποία είναι και ζξοδοσ του κυκλϊματοσ ειδοποιϊντασ για τθν εγκυρότθτα του αποτελζςματοσ. Οι register που υπάρχουν δίπλα ςτο component rounds είναι αυτοί που κρατοφν αποκθκευμζνα τα αρχικά μθνφματα τα οποία και πρόκειται να γίνουν xor με το αποτζλεςμα τθσ πρόςκεςθσ του τελευταίου subkey. Είναι κετικά ακμοπυροδότθτοι και ελεγχόμενοι αςφγχρονα από το reset και με ςιμα επίτρεψθσ το enable, όπωσ όλα τα ςτοιχεία μνιμθσ του κυκλϊματοσ. Ελζγχονται κατευκείαν από το component control unit και κακζνα από αυτά ενεργοποιείται μόνο ςτον πρϊτο γφρο του αντίςτοιχου μθνφματοσ οπότε και ειςάγονται τα δεδομζνα ςτο component rounds. Για να επιλεχκεί το ςωςτό από αυτά και πάλι υπάρχει ζνασ πολυπλζκτθσ των 512 bit ο οποίοσ ελζγχεται και αυτόσ από το ςιμα mux_sel

110 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Το control unit είναι ο ενορχθςτρωτισ όλου του κυκλϊματοσ. Επιλζχκθκε μία ςυγκεντρωτικι λογικι ελζγχου λόγω τθσ πολυπλοκότθτασ του ςυςτιματοσ και τθσ όχι πάντα άμεςθσ εξάρτθςθσ των ςτοιχείων που τθν απαρτίηουν. Ρεριζχει τον counter υπεφκυνο για τθ λειτουργία του component rounds και για τθν παραγωγι των ςθμάτων cntr_val0 και cntr_val Σο Component Input Block Ραραπάνω παρουςιάςτθκε θ ςυνολικι δομι του κυκλϊματοσ και τα μζρθ από τα οποία αποτελείται. Είναι ίδια με αυτι του δεφτερου κυκλϊματοσ (με τθν περιοριςμζνθ είςοδο) με μοναδικι διαφορά το κφκλωμα ειςόδου και φυςικά τθ λογικι ελζγχου. Στθ ςυνζχεια κα παρουςιαςτοφν μόνο αυτά τα δφο component ξεκινϊντασ από το input block. Ππωσ βλζπουμε το Σχιμα 4.23 κα δοφμε ότι το input block χωρίηεται ςε δφο τμιματα, όςεσ είναι και οι εργαςίεσ που πρζπει να κάνει: (1) να φιλτράρει τα δεδομζνα που ζρχονται και (2) να δθμιουργιςει όλα εκείνα τα ςιματα για τισ ιδιότθτεσ του τρζχοντοσ μπλοκ δεδομζνων (first, final, bitpad, position) και να τισ ςυγκρατιςει και για τα δφο μθνφματα. Το πρϊτο γίνεται ςτα αριςτερά, όπωσ το βλζπουμε, και το δεφτερο ςτα δεξιά. Η διαφορά με τα input block που είχαμε δει μζχρι τϊρα ζγκειται ςτθν απουςία του εςωτερικοφ counter αφοφ τα δεδομζνα ειςάγονται μονομιάσ και δεν υπάρχει λόγοσ φπαρξισ του. Ζτςι λοιπόν ςτο αριςτερό τμιμα εφαρμόηεται φιλτράριςμα του κάκε μθνφματοσ 512 bit που ειςάγεται με δφο ςκοποφσ: να αποκοποφν όλα τα μθ χρθςιμοποιοφμενα bit του τελευταίου μθνφματοσ κάνοντάσ τα 0 και να γίνει 1 το αμζςωσ επόμενο bit από τα χρθςιμοποιοφμενα εάν χρειαςτεί να εφαρμοςτεί bitpad, όπωσ ακριβϊσ λζει θ περιγραφι του αλγορίκμου. Αυτό πετυχαίνεται με δφο μάςκεσ : μία μάςκα που γίνεται λογικό and με τα δεδομζνα και μθδενίηει όπου ζχει 0 τθν είςοδο και μία μάςκα που γίνεται λογικό or και ενεργοποιεί το αντίςτοιχο bit δεδομζνων με αυτό που είναι 1 ςε αυτιν. Αυτζσ ζχουν ονομαςτεί and_mask και or_mask αντίςτοιχα. Για τθ δθμιουργία τθσ and_mask δθμιουργοφνται 2 διαφορετικζσ, οι οποίεσ ζχουν ωσ εξισ: 1. and_mask_1: Είναι αυτι που κάνει τθ βαςικι δουλειά, δθλαδι να αποκόπτει όςα bit είναι αχρθςιμοποίθτα μθδενίηοντάσ τα. Ξεκινάμε από ζνα string των 513 bit το οποίο ζχει όλα του τα bit 0 εκτόσ από αυτό ςτθ κζςθ 512 (το πιο ςθμαντικό). Αυτό το string γίνεται αρικμθτικό shift προσ τα δεξιά (SRA Shift Right Arithmetic) κατά τόςεσ κζςεισ όςα είναι και τα χρθςιμοποιοφμενα bit. Άρα ζτςι από το bit 511 και κάτω ζχουμε τόςουσ άςςουσ όςα και τα bit που πρζπει να περάςουν ανεπθρζαςτα, ενϊ όλα τα άλλα κα μθδενιςτοφν. 2. and_mask_2: Είναι μία μάςκα για τθν περίπτωςθ που το πακζτο δεν είναι το τελευταίο και άρα δεν χρειάηεται κάποια αλλαγι. Οπότε όςο δεν ζχει ενεργοποιθκεί το ςιμα last_block τα bit τθσ είναι όλα 1 και τα δεδομζνα περνάνε αναλλοίωτα

111 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Οι δφο αυτζσ μάςκεσ ςυνδυάηονται μεταξφ τουσ με τθν εξισ λογικι: δθμιουργϊντασ τθν μάςκα θ οποία πρόκειται να γίνει λογικό and με τα δεδομζνα. Δεν χρειάηεται και θ τρίτθ μάςκα όπωσ ςτα input block με τα 64 bit είςοδο γιατί τα δεδομζνα μπαίνουν μονομιάσ και ζτςι δεν τίκεται κζμα αποκλειςμοφ τθσ ειςόδου. Πςο για τθ μάςκα or_mask αυτι δθμιουργείται πιο απλά με τθ χριςθ ενόσ λογικοφ shift δεξιά (SRL Shift Right Logical) ςτον οποίο ειςάγεται ζνα string των 512 bit όπου ανάλογα εάν χρειάηεται να γίνει bitpad ζχει ζνα 1 ι ζνα 0 ςτο bit 511 και όλα τα άλλα είναι 0. Τα δεδομζνα λοιπόν, πριν ειςζλκουν ςτον register ακολουκοφν τθν εξισ διαδρομι. Αρχικά γίνονται bitwise and με τθν and_mask και ζπειτα το αποτζλεςμα γίνεται bitwise or με τθν or_mask. Ζπειτα μπαίνουν ςτο component reverse unit όπου και γίνεται θ περιςτροφι των byte τθσ κάκε λζξθσ κακϊσ ζτςι περιγράφεται ςτο πρότυπο του αλγορίκμου (Ραράγραφοσ 3.4.2). Στο reverse unit αλλάηει θ δφναμθ των byte κακϊσ το πιο ςθμαντικό γίνεται το λιγότερο ςθμαντικό, το δεφτερο πιο ςθμαντικό γίνεται το δεφτερο λιγότερο ςθμαντικό και οφτω κακεξισ. Το reverse unit φυςικά είναι ζνα αςφγχρονο κομμάτι του κυκλϊματοσ το οποίο αποτελείται μόνο από καλϊδια τα οποία αλλάηουν κζςεισ. Μετά τον πρϊτο register τα δεδομζνα περνάνε και από ζναν δεφτερο register ο οποίοσ όμωσ δεν ελζγχεται παρά μόνο από τα τρία κακολικά ςιματα και ςκοπόσ του είναι να ειςάγει κακυςτζρθςθ ενόσ παλμοφ ςτθν ζξοδο των αποτελεςμάτων για λόγουσ ςυγχρονιςμοφ. Δθμιουργείται πρόβλθμα ςτθν περίπτωςθ που ειςαχκεί αμζςωσ το δεφτερο μινυμα για το άλλο slot κακϊσ το component rounds ειςάγει τα δεδομζνα ζνα παλμό πιο μετά από ότι αυτά είναι διακζςιμα από τον πρϊτο register. Στο δεξί τμιμα του ςχιματοσ ζχουμε όπωσ είπαμε τθν παραγωγι των ςθμάτων first, final, bitpad και position. Το position παράγεται με τισ διαδοχικζσ προςκζςεισ του αρικμοφ των ειςαγόμενων bit κάκε φορά. Οπότε ξεκινϊντασ με τον αρικμό 0 αρχίηουμε να προςκζτουμε τον αρικμό 512 με κάκε μινυμα που ειςάγεται εκτόσ εάν είναι το τελευταίο οπότε και προςκζτουμε τον αρικμό των bit που ειςάγεται από το ςιμα msg_len (length εξωτερικά). Ζπειτα δεν προςτίκεται κανζνασ νζοσ αρικμόσ μζχρι να γίνει επαναφορά ολόκλθρου του component μζςω του ςιματοσ reset_input. Για να γίνει αυτό, ζνασ πολυπλζκτθσ επιλζγει εάν κα προςτεκεί θ ςτακερά 512 ι θ τιμι του ςιματοσ msg_len με select ςιμα το last_block το οποίο ενεργοποιείται ταυτόχρονα με τθν είςοδο του μεγζκουσ και των δεδομζνων. Ζπειτα ο register που αποκθκεφει το άκροιςμα απενεργοποιείται μόνιμα μζςω του ςιματοσ last_block_0 ι last_block_1 το οποίο παράγει το αντίςτοιχο Flip-Flop που δθμιουργεί και τθν ζξοδο last. Φυςικά πριν από αυτό ο register δεν λειτουργεί ςυνεχϊσ αλλά μόνο όταν μπαίνουν δεδομζνα ςτο input block

112 Σχιμα 4.23: Το εςωτερικό του Input Block. Τα component που το απαρτίηουν και οι μεταξφ τουσ διαςυνδζςεισ. Φαίνονται και τα ςτοιχεία για το κάκε μινυμα ξεχωριςτά.

113 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Πλα αυτά γίνονται κάκε φορά ςε διαφορετικό register ανάλογα με το ποιο μινυμα ειςάγεται εκείνθ τθ ςτιγμι. Αυτό, όπωσ είπαμε επιλζγεται με το ςιμα sel_inp (select input - sel_inp_block εςωτερικά) και το sel_input_delayed. Ζτςι με τα ςιματα αυτά επιλζγεται ςε ποιόν από τουσ 2 register κα γίνει θ πρόςκεςθ αλλά και ποιανοφ θ τιμι κα εμφανιςτεί ςτθν ζξοδο. Το ςε ποιον κα γίνει θ πρόςκεςθ επιλζγεται μζςα από τα ςιματα enable του κακενόσ register και το ποια τιμι κα είναι αυτι που κα αυξθκεί από ζναν πολυπλζκτθ (ADDMUX: 99bit 2to1), ενϊ για τθν ζξοδο αυτό γίνεται με τθ χριςθ ενόσ άλλου πολυπλζκτθ (OUTMUX: 99bit 2to1). Αφοφ λοιπόν επιλεγεί το άκροιςμα των bit αυτό πρζπει να μετατραπεί από άκροιςμα των bit ςε άκροιςμα των byte όπωσ και χρειάηεται ο αλγόρικμοσ. Αυτό γίνεται με τθ χριςθ ενόσ δεφτερου adder (ADD2) ο οποίοσ όποτε τα bit δεν είναι πολλαπλάςιο του 8, δεν ςχθματίηουν δθλαδι ακζραιο αρικμό από byte τότε προςκζτει μία μονάδα ςτο ςτα 96 πιο ςθμαντικά bit του ακροίςματοσ. Το αποτζλεςμα εξζρχεται μζςω του ςιματοσ position. Εδϊ παράγεται και το ςιμα bitpad το οποίο είναι ουςιαςτικά ο αρικμόσ που προςτίκεται. Πςον αφορά το ςιμα first αυτό παράγεται από ζνα flip-flop (MSG0: 1bit DFF First ι MSG1: 1bit DFF First αντίςτοιχα) το οποίο ξεκινάει από τθν τιμι 1 και όταν το ςιμα get_input_delayed ενεργοποιθκεί και ταυτόχρονα επιτρζπεται να αλλάξει (ζχει επιλεγεί δθλαδι από το sel_inp) αυτό γίνεται 0 ςτον επόμενο παλμό και παραμζνει ζτςι μζχρι να γίνει επαναφορά. Αντίςτοιχα το last παράγεται από ζνα flip-flop (MSG0: 1bit DFF Last ι MSG1: 1bit DFF Last αντίςτοιχα) με αρχικι τιμι 0 και γίνεται 1 όταν ενεργοποιθκεί θ είςοδοσ last_block και επιτραπεί από τον επιλογζα sel_inp. Και οι δφο αυτζσ ζξοδοι επιτρζπεται να ενεργοποιθκοφν μόνο ζνα παλμό μετά το ςιμα get_input μζςω του ςιματοσ get_input_delayed Σο Component Output Block Το component αυτό (Σχιμα 4.24), όπωσ προαναφζρκθκε, αναλαμβάνει να εξάγει τα αποτελζςματα. Αναλαμβάνει, δθλαδι, να επιλζγει το ςωςτό αποτζλεςμα threefish τθ ςωςτι ςτιγμι και να το γνωςτοποιεί ςε μία άλλθ εξωτερικι μονάδα θ οποία περιμζνει το αποτζλεςμα. Αυτό το κάνει με το ςιμα valid το οποίο ενεργοποιείται ταυτόχρονα με τθν ζξοδο των δεδομζνων, αλλά πολφ εφκολα κα μποροφςε να το κάνει αυτό ζναν παλμό νωρίτερα δίνοντασ χρόνο ςτθν μονάδα που «ακοφει» να προετοιμαςτεί για τθ λιψθ. Ζνα παλμό πριν τα δεδομζνα είναι ζτοιμα, παράγεται από το control unit το ςιμα start_output (start_out_bfr) το οποίο και ενεργοποιεί τθ μονάδα αυτι για να δεςμεφςει το αποτζλεςμα ςτον register που διακζτει και ταυτόχρονα να το εξάγει

114 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.24: Το εςωτερικό του Output Block Σο Control Unit Το control unit, όπωσ φανερϊνει και το όνομά του, παράγει όλα τα ςιματα ελζγχου και ςυγχρονιςμοφ των διαφόρων μονάδων. Είναι αυτό που με τθ χριςθ μίασ μθχανισ εςωτερικϊν καταςτάςεων (FSM Finite State Machine) για κάκε μινυμα (ςυνολικά δφο) γνωρίηει τι τφποσ είναι το κάκε μπλοκ που επεξεργάηεται και παράγει τα κατάλλθλα ςιματα (type, text_sel, key_sel κ.α.) Ακόμθ περιζχει και το component counter που ελζγχει το component rounds και παράγει και το αρικμό του τρζχοντοσ γφρου (round #) για κάκε μινυμα Το Component Counter (20 Παλμών) Είναι ο μεγαλφτεροσ counter του κυκλϊματοσ και ςυντονίηει πολλά από τα ςιματα ελζγχου. Ζχει για ειςόδουσ τα βαςικά ςιματα: το ςιμα ρολογιοφ (clock), το αςφγχρονο ςιμα επαναφοράσ (reset) και το ςιμα επίτρεψθσ (enable). Επίςθσ και από ζνα ςιμα ενεργοποίθςθσ (start_counter_0 και start_counter_1) για κάκε μινυμα όπωσ και το ςιμα new_msg (new message) το οποίο ενθμερϊνει για το εάν ηθτικθκε να ειςαχκεί νζο μινυμα. Το interface του φαίνεται ςτο Σχιμα 4.25 και παράγει τα ακόλουκα ςιματα για κάκε ζνα από τα μθνφματα: first_round: Ραίρνει τθν τιμι 1 μόνο όταν βριςκόμαςτε ςτον πρϊτο γφρο (round 0) και χρθςιμοποιείται για τον ζλεγχο του επιλογζα πολυπλζκτθ ειςόδου text_sel. Πταν είναι 0 ο επιλογζασ δεν μπορεί να δείχνει άλλθ τιμι εκτόσ από το feedback Χ512. en_keygen, load_keygen: Είναι τα ςιματα ελζγχου των shift register τθσ μονάδασ key generator. Ππωσ αναλυτικά εξθγικθκε παραπάνω ελζγχουν τθν φόρτωςθ και περιςτροφι των δεδομζνων

115 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.25: Το interface του component counter en_input: Είναι ζνα ςιμα επίτρεψθσ τθσ ειςόδου του ςιματοσ new_msg που ειςάγεται εξωτερικά. Ενεργοποιείται ςτισ εξισ περιπτϊςεισ: o Για το ςιμα en_input_0: όταν οι counter είναι ανενεργοί και ο αντίςτοιχοσ counter ζχει τθν τιμι 19 (είναι θ περίπτωςθ κατάτθν οποία το κφκλωμα βριςκόταν ςυνολικά ςτθν ακινθςία και ζνα μινυμα ηθτά να ξεκινιςει) και όταν οι counter είναι ενεργοί και θ τιμι του αντίςτοιχου counter είναι 17 (είναι θ περίπτωςθ κατά τθν οποία κάποιο μινυμα βρίςκεται υπό επεξεργαςία και απλά ειςάγεται και άλλο ζνα). o Για το ςιμα en_input_1: όταν οι counter δεν είναι ενεργοί και ειςιχκθ ςτον αμζςωσ προθγοφμενο παλμό μινυμα (είναι θ περίπτωςθ κατά τθν οποία οι counter δεν ζχουν ακόμθ προλάβει να εκκινιςουν αλλά πρόκειται να το κάνουν άμεςα) και όταν οι counter είναι ενεργοί και θ τιμι του αντίςτοιχου counter είναι 17 (είναι θ ίδια με τθν δεφτερθ περίπτωςθ για το en_input_0. cntr_end: (counter end) Είναι ζνα ςιμα που ειδοποιεί το component FSM για το επικείμενο τζλοσ του τρζχοντοσ ςετ γφρων. Ενεργοποιείται όταν ο counter ζχει τθν τιμι 17 προκαλϊντασ τθν αλλαγι κατάςταςθσ (όχι πάντα) ςτο FSM και δίνοντασ του το απαραίτθτο χρονικό περικϊριο να αποφαςίςει εάν κα ςυνεχίςει τθ λειτουργία του counter ι εάν κα τθν αφιςει να διακοπεί. en_text_reg: (enable text register) Ελζγχει τον register που αποκθκεφει το αρχικό μινυμα ειςόδου με ςκοπό να γίνει xor με το αποτζλεςμα των επαναλιψεων. Ενεργοποιείται πάντα ςτον πρϊτο γφρο (round 0) όταν και ειςάγεται ζνα νζο μπλοκ ςτο threefish. (Ταυτίηεται με το ςιμα first_round) counter_value: Είναι θ τρζχουςα τιμι του counter και χρθςιμοποιείται από τα component που αναφζρκθκαν πιο πάνω με τον τρόπο που αναφζρκθκε. Και το κοινό ςιμα rounds_reg_en (rounds register enable) το οποίο ελζγχει τον εςωτερικό του component rounds register επιτρζποντάσ του ι μθ τθ λειτουργία. Ραραμζνει ςτθν τιμι 1 για το διάςτθμα που είναι ενεργοί οι counter. Πςον αφορά τθ λειτουργία των counter, οι δφο counter είναι μεταξφ τουσ ςυηευγμζνοι κακϊσ ελζγχονται από το ίδιο ςιμα επίτρεψθσ και ζχουν τα ίδια ςιματα

116 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ ρολογιοφ και επαναφοράσ. Ο ζνασ ξεκινά τθν απαρίκμθςθ από τθν τιμι 19 και ο άλλοσ από τθν τιμι 18 και μετράνε ο κακζνασ μζχρι τθν τιμι 19 μετά τθν οποία επανζρχονται ςτθν τιμι 0. Τα ηεφγθ τιμϊν φαίνονται και ςτον Ρίνακασ 4.5 όπου φαίνεται και πότε ειςάγονται δεδομζνα ςτο rounds. Ξεκινάνε από το ηεφγοσ για να δϊςουν το προβάδιςμα του ενόσ παλμοφ ςτο key generator. Το κάκε slot (κζςθ επεξεργαςίασ) ζχει δικό του T-Flip-Flop που ςυγκρατεί το εάν υπάρχει μινυμα ςτο slot 1 ι ςτο slot 2 και το ςιμα επίτρεψθσ του counter παράγεται από το λογικό or των δφο εξόδων των Flip-Flop αυτϊν. Ζτςι, αρκεί ζνα από τα δφο να είναι ενεργό και οι counter λειτουργοφν κανονικά και εάν απενεργοποιθκοφν ςταματάνε ςτο τζλοσ του αντίςτοιχου counter και ςτον επόμενο παλμό οι counter επανατίκενται ςτθν αρχικι τουσ τιμι (19-18). Αυτό το ςθμείο είναι ιδιαίτερα ςθμαντικό κακϊσ επθρεάηει και τον τρόπο ειςόδου των δεδομζνων. Οπότε το ςφςτθμα ειςάγει κανονικά και ανά δφο τα μθνφματα αλλά όταν αυτά τελειϊςουν και δεν ειςαχκοφν νζα, εάν το τελευταίο που εξιλκε είναι από το slot 2, τότε πρζπει να περιμζνει ζνα παλμό για να επανζλκουν οι counter και ζπειτα να ειςάγει τα καινοφρια Το Component FSM Ραρά τθν ονομαςία του, το component αυτό δεν περιζχει μόνο τθν μθχανι καταςτάςεων αλλά και κάποια άλλα ςτοιχεία (Σχιμα 4.26). Αυτά είναι ζνασ μθχανιςμόσ ελζγχου και ςυγχρονιςμοφ του ςιματοσ εκκίνθςθσ του output block, ζνα D-Flip-Flop για να μετατρζπει τθν ράμπα εξόδου του ςιματοσ start_rounds ςε ςιμα πλάτουσ ενόσ παλμοφ και δφο D-Flip-Flop για να μπορεί να δθμιουργεί μία κακυςτζρθςθ δφο παλμϊν όποτε αυτό χρειαςτεί. Ο μθχανιςμόσ ελζγχου του ςιματοσ εκκίνθςθσ του output block αποτελείται από δφο D-Flip-Flop και ζνα T-Flip-Flop. Η λογικι του είναι απλι: Επειδι οι καταςτάςεισ μπορεί να αλλάηουν χωρίσ απαραίτθτα να ζχει ολοκλθρωκεί ζνα ςετ γφρων εκμεταλλεφεται τθ ςτακερότθτα ςτθν περίοδο του ςιματοσ cntr_end και ζτςι όταν φτάςει ςτθν τελευταία κατάςταςθ ενόσ κφκλου καταςτάςεων ενεργοποιεί το μθχανιςμό αυτό ανεξάρτθτα από το εάν κα παραμείνει ςε αυτιν μζχρι το τζλοσ του μπλοκ. Ο μθχανιςμόσ μόλισ ενεργοποιθκεί το ςιμα cntr_end ενεργοποιεί για ζνα παλμό το ςιμα start_out_bfr και επανζρχεται ςτθν πρότερθ κατάςταςι του. Ακόμθ, επειδι οι καταςτάςεισ μπορεί να παραμείνουν παραπάνω από ζνα παλμό μπορεί το ςιμα start_keygen να ζχει διάρκεια παραπάνω από ζνα παλμό αντίςτοιχα. Ζτςι, είναι ανάγκθ με τθ χριςθ μιασ απλισ λογικισ με ζνα D-Flip-Flop και μία πφλθ and να μετατραποφν όλεσ οι δυνατζσ ζξοδοι ςε απλοφσ παλμοφσ και να παραχκεί το ςιμα start_rounds. Πταν βριςκόμαςτε ςτισ καταςτάςεισ configuration_0 και output_0 ενεργοποιείται το ςιμα start_keygen το οποίο όμωσ πρζπει να απενεργοποιθκεί ζτςι ϊςτε να μπορεί να ενεργοποιθκεί ξανά. Το ρόλο αυτό παίηουν οι καταςτάςεισ

117 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ configuration_1 και output_1 αντίςτοιχα ςτισ οποίεσ μεταβαίνει μετά από μία κακυςτζρθςθ

118 Σχιμα 4.26: Το εςωτερικό του component FSM. Φαίνονται τα Flip-Flop και θ Finite State Machine.

119 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Οι Καταςτάςεισ τησ FSM Συνολικά ζχει 13 καταςτάςεισ και ειδικότερα: 1 κατάςταςθ ςτάςθσ, 4 καταςτάςεισ για το key, 2 καταςτάςεισ για το configuration, 4 καταςτάςεισ για το message και 2 καταςτάςεισ για το output. Αναλυτικά για τθν κακεμία: halt: Είναι θ κατάςταςθ θρεμίασ του κυκλϊματοσ, παραμζνει ςε αυτι μζχρι να ζρκει νζο μινυμα οπότε και ανάλογα με το ςιμα sel_mac μεταβαίνει είτε ςτθν key_0 είτε ςτθν message_0. Κακϊσ βρίςκεται ςε αυτιν ενεργοποιείται το ςιμα bypass_cntr_end κακϊσ για λόγουσ ςυγχρονιςμοφ όταν βρεκεί ςε μία από τισ δφο δεν πρζπει να περιμζνει τθν ενεργοποίθςθ αυτοφ του ςιματοσ. key_0: Είναι θ πρϊτθ από μία ςειρά καταςτάςεων για τθν πραγματοποίθςθ του MAC αλγορίκμου. Είναι πανομοιότυπθ με τθν key_2 με τθ μόνθ διαφορά να βρίςκεται ςτο ςιμα του επιλογζα του πολυπλζκτθ κλειδιοφ. Η key_0 επιλζγει για είςοδο τθν τιμι 0 ενϊ θ key_2 επιλζγει για είςοδο το αποτζλεςμα του threefish. key_1: Είναι μία κατάςταςθ θ οποία χρειάηεται μόνο για να μεταβεί το ςιμα start_inp_counter ςτθν τιμι 0 πριν μπορζςει να μεταβεί ςτθν τιμι 1 ςτθν κατάςταςθ key_2. Εάν το κλειδί ζχει μζγεκοσ μικρότερο ι ίςο από 512 bit τότε μεταβαίνει κατευκείαν ςτισ καταςτάςεισ για το configuration. key_2: Είναι μία κατάςταςθ που επαναλαμβάνεται όςεσ φορζσ χρειαςτεί, μαηί με τθν key_3, μζχρι να τελειϊςουν τα μπλοκ κλειδιοφ και να ενεργοποιθκεί το ςιμα last. key_3: Η φπαρξι τθσ οφείλεται ςτον ίδιο λόγο που οφείλεται και τθσ key_1. Υπάρχει για τθν απενεργοποίθςθ του ςιματοσ start_inp_counter. configuration_0: Ο ρόλοσ αυτισ τθσ κατάςταςθσ είναι να ενεργοποιεί το ςιμα start_rounds το οποίο και ενεργοποιεί τον counter για ζνα ακόμθ ςετ γφρων. Ακόμθ ςτθν κατάςταςθ αυτι τίκεται ο πολυπλζκτθσ ειςόδου ςτθν αντίςτοιχθ τιμι για το configuration μπλοκ. Ταυτόχρονα γίνεται επαναφορά του input block. configuration_1: Στθν κατάςταςθ αυτι απλϊσ απενεργοποιείται το ςιμα start_keygen. message_0: Είναι θ αντίςτοιχθ τθσ key_0 όταν πραγματοποιείται ο απλόσ HASH αλγόρικμοσ. Είναι πανομοιότυπθ με τθν message_2 αλλά και εδϊ θ διαφορά ζγκειται ςτον επιλογζα του πολυπλζκτθ κλειδιοφ ο οποίοσ ειςάγει το ζτοιμο αποτζλεςμα του configuration που προθγείται ςτον αλγόρικμο. message_1: Ππωσ θ key_1 και θ key_3 υπάρχουν για να ςβζνουν το ςιμα start_inp_counter. Αν το μινυμα είναι μικρό ( 512 bit) τότε μεταβαίνει κατευκείαν ςτθν κατάςταςθ output_0. message_2: Είναι θ κατάςταςθ θ οποία επαναλαμβάνεται όςεσ φορζσ χρειαςτεί μαηί με τθν message_3 για να ειςαχκοφν όλα τα μπλοκ μθνφματοσ που απομζνουν. message_3: Η αντίςτοιχθ τθσ message_

120 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ output_0: Αυτι θ κατάςταςθ υπάρχει όπωσ και θ configuration_0 για να ενεργοποιιςει το ςιμα start_rounds και να ξεκινιςει το threefish για το output. Δεν ειςάγονται δεδομζνα από το input block αλλά θ αντίςτοιχθ ςτακερά από τον πολυπλζκτθ ειςόδου. output_1: Σε αυτι τθν κατάςταςθ απλϊσ απενεργοποιείται το ςιμα start_keygen. Ακολουκεί το ςχιμα με τισ καταςτάςεισ και τισ μεταβάςεισ από τθ μία ςτθν άλλθ (Σχιμα 4.27)

121 Σχιμα 4.27: Οι καταςτάςεισ και οι μεταβάςεισ από τθ μία ςτθν άλλθ. Σχθματίηονται 2 κφκλοι λειτουργίασ, αυτόσ του MAC και αυτόσ του απλοφ HASH.

122 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Η αρχιτεκτονική του Control Unit Το control unit ζχει ωσ ςκοπό να δθμιουργιςει τα ςιματα ελζγχου τα οποία κα επιτρζψουν ςτο ςυνολικό κφκλωμα να λειτουργιςει και ςτισ υπάρχουςεσ μονάδεσ να ςυνεργαςτοφν αρμονικά και ςυγχρονιςμζνα. Ππωσ είδαμε περιζχει δφο μονάδεσ FSM, μία για κάκε κζςθ μθνφματοσ ι αλλιϊσ slot. Αυτζσ όμωσ δεν ελζγχουν μόνο ανεξάρτθτεσ μονάδεσ αλλά και κοινζσ. Το ρόλο του ςυγχρονιςμοφ αυτϊν των ςθμάτων ελζγχου που παράγουν αυτζσ οι δφο αλλά και τον ζλεγχο των δεδομζνων που τουσ ειςάγονται αναλαμβάνει να εκπλθρϊςει το ίδιο το control unit. Το κάνει αυτό χρθςιμοποιϊντασ πολυπλζκτεσ ι απλζσ πφλεσ or και and κατά περίπτωςθ. Ζτςι για τα ςιματα των επιλογζων των διαφόρων πολυπλεκτϊν που παράγουν και οι δφο FSM (key_sel, block_type, text_sel) χρθςιμοποιοφνται τρείσ πολυπλζκτεσ με ςιμα ελζγχου το λιγότερο ςθμαντικό bit τθσ τιμισ του counter 0. Δθλαδι επιλζγονται διαδοχικά και ςυνεχϊσ τα αποτελζςματα των δφο FSM εναλλάξ. Επιπλζον, παράγεται το ςιμα επιλογισ για το input block το sel_inp (select input) το οποίο δθλϊνει ποιο από τα δφο μθνφματα κα ειςαχκεί. Ζχει τθν τιμι 1 για το γφρο 19 και εάν οι counter είναι ενεργοί, τιμι που υποδθλϊνει το δεφτερο μινυμα και 0 για τουσ υπόλοιπουσ. Τα ςιματα start_input και start_output των δφο FSM παράγουν το τελικό αποτζλεςμα απλά με μία or. Δεν υπάρχει λόγοσ να χρθςιμοποιθκεί κάτι επιπλζον και τα ςιματα αυτά αποκλείεται να ενεργοποιθκοφν ταυτόχρονα. Η αρχιτεκτονικι του control unit είναι αρκετά απλι, αφοφ το μόνο που κάνει είναι να ενςωματϊνει τα δφο προαναφερκζντα component και επιπλζον να επαναπροςδιορίηει τον επιλογζα του πολυπλζκτθ ειςόδου. Για τθν παραγωγι του κάκε ςιματοσ text_sel μεςολαβεί ζνα ακόμθ ςτάδιο πριν τον πολυπλζκτθ το οποίο δεν επιτρζπει ςτον επιλογζα να πάρει άλλθ τιμι εκτόσ από το 0 (αντιςτοιχεί ςτο feedback από τθ μονάδα rounds) όταν βρίςκεται ςε οποιοδιποτε γφρο εκτόσ του πρϊτου γφρου (round 0). Αυτό γίνεται με τθ βοικεια των ςθμάτων first_round για το κάκε μινυμα. Ακολουκεί το ςχιμα με τθν αρχιτεκτονικι του (Σχιμα 4.28)

123 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.28: Το εςωτερικό του Control Unit. Φαίνονται οι δφο FSM και οι πολυπλζκτεσ για τθν επιλογι των ςωςτϊν τιμϊν εξόδου

124 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ 4.5 ΚΤΚΛΨΜΑ ΦΨΡΙ PIPELINE Ειςαγωγό Το κφκλωμα αυτό είναι μία υλοποίθςθ για ςφγκριςθ με το κφριο κφκλωμα τθσ εργαςίασ. Η διαφορά τουσ ζγκειται ςτθν ζλλειψθ του ςταδίου pipeline του παρόντοσ. Ζτςι κάκε φορά μπορεί να επεξεργαςτεί μόνο ζνα μινυμα και όχι δφο όπωσ ςτο δεφτερο κφκλωμα που περιγράφθκε. Και ςε αυτό χρθςιμοποιικθκε ξετφλιγμα (loop unroll) των 8 από τουσ 72 γφρουσ. Αυτό ζγινε για να είναι το κφκλωμα αυτό ίδιο ςτθν καταςκευι με το κφκλωμα αναφοράσ και μόνθ τουσ διαφορά το pipeline. Υπενκυμίηεται ότι είχαν επιλεγεί 8 γφροι λόγω των ςτακερϊν περιςτροφισ των MIX και των πλεονεκτθμάτων που αυτό προςφζρει. Οπότε και εδϊ ςυνολικά υπάρχουν 4 8=32 MIX. Η διαφορά των δφο κυκλωμάτων αλλάηει τα δεδομζνα και ςτουσ χρόνουσ και τισ περιόδουσ του κυκλϊματοσ. Τϊρα πλζον και οι 8 γφροι γίνονται ςε ζναν παλμό ρολογιοφ και αυτό ςθμαίνει ότι χρειάηονται 9 παλμοί για να επεξεργαςτεί ζνα μινυμα. Οπότε ςυνολικά μία περίοδοσ λειτουργίασ του και άρα περίοδοσ του βαςικοφ counter κα είναι 9+1=10 παλμοφσ. Ο πρόςκετοσ παλμόσ όπωσ και ςτα άλλα κυκλϊματα χρειάηεται για τθν είςοδο και παραγωγι του πρϊτου κλειδιοφ από τθ μονάδα key generator. Ακολουκεί θ περιγραφι του κυκλϊματοσ, το οποίο όπωσ είναι αναμενόμενο ζχει μεγάλεσ ομοιότθτεσ με το κφκλωμα τθσ βαςικισ υλοποίθςθσ και ελάχιςτεσ διαφορζσ. Για το λόγο αυτό αναλφονται τα component που παρουςιάηουν τισ διαφορζσ αυτζσ Interface και Βαςικϊ Component Το κφκλωμα, όπωσ και όλα τα υπόλοιπα, είναι ςφγχρονο με τθν είςοδο clock το ρολόι του κυκλϊματοσ. Πλεσ οι αλλαγζσ κατάςταςθσ και γενικότερα όλεσ οι ενζργειεσ ςυμβαίνουν ςτθν ανερχόμενθ παρυφι του clock. Η είςοδοσ reset είναι αςφγχρονθ και αυτό που κάνει είναι να κζτει το όλο κφκλωμα ςτθν αρχικι του κατάςταςθ για όςο χρόνο ζχει τθν τιμι 1. Η είςοδοσ enable είναι θ είςοδοσ επίτρεψθσ τθσ λειτουργίασ του κυκλϊματοσ. Το κφκλωμα λειτουργεί μόνο και για όςο θ είςοδοσ enable ζχει τθν τιμι 1.Συνοπτικά, οι υπόλοιπεσ είςοδοι/ζξοδοι του κυκλϊματοσ φαίνονται ςτον παρακάτω πίνακα

125 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Είςοδοι Ζξοδοι Συμβολιςμόσ Bit Ρεριγραφι Συμβολιςμόσ Bit Ρεριγραφι msg 64 Μινυμα ειςόδου md 64 Hash τιμι length 7 Χρθςιμοποιοφμενα bit valid 1 Ειδοποίθςθ εγκυρότθτασ new_msg 1 Ειδοποίθςθ ειςόδου κάκε 512 bit last_block 1 Ειδοποίθςθ τελευταίων bit sel_mac 1 Επιλογι HASH ι MAC Πίνακασ 4.9: Είςοδοι/Ζξοδοι του κυκλϊματοσ Η είςοδοσ msg είναι θ κφρια είςοδοσ των δεδομζνων τα οποία ςτθ ςυνζχεια μπαίνουν ςτθν μονάδα pad για να δθμιουργθκεί το απαιτοφμενο από τον αλγόρικμο string των 512 bit. Η είςοδοσ length είναι αυτι που δίνει το ακριβζσ μζγεκοσ του τελευταίου πακζτου των 64 bit. Αυτό γίνεται ςε ςυνεργαςία με τθν είςοδο last_block με τθ διαδικαςία που περιγράφθκε ςτθν γενικι περιγραφι ςτθν αρχι του κεφαλαίου. Η new_msg ενεργοποιεί το κφκλωμα για να δεχτεί το νζο μινυμα και ςτθ ςυνζχεια ειδοποιεί για τα νζα πακζτα που ζρχονται. Η είςοδοσ sel_mac όταν βρίςκεται ςτθ ςτάκμθ 0 το κφκλωμα λειτουργεί ςαν απλό hash και όταν βρίςκεται ςτθ ςτάκμθ 1 ςαν MAC. Η ζξοδοσ του κυκλϊματοσ είναι το md το οποίο βγάηει τα δεδομζνα ςε 8 τμιματα των 64 bit το κακζνα. Και θ valid είναι ςε ςτάκμθ 1 για όςο χρόνο τα δεδομζνα εξζρχονται. Στο Σχιμα 4.29 φαίνονται τα βαςικά component που απαρτίηουν το κφκλωμα και οι μεταξφ τουσ διαςυνδζςεισ. Τα βαςικά από τα οποία είναι: Ονομαςία I/0 Ρεριγραφι Input Block 8/6 Μετατρζπει τα δεδομζνα ειςόδου από 8 πακζτα των 64 bit ςε ζνα των 512 bit και παράγει τα ςιματα first, final, bitpad και position Control Unit 6/11 Συντονίηει όλα τα υπόλοιπα και αςκεί τον ζλεγχο του κυκλϊματοσ Rounds 7/1 Ρεριζχει τα MIX και πραγματοποιεί ζνα γφρο (round) Key 8/2 Ραράγει τθν κατάλλθλθ ςτιγμι τα κατάλλθλα subkey ανά ηεφγθ Generator Tweak Generator Output Block 2/2 Διαςπά το μινυμα εξόδου ςε τμιματα των 64 bit. Πίνακασ 4.10: Τα component του κυκλϊματοσ 5/1 Δθμιουργεί το κατάλλθλο tweak ανάλογα με τθν είςοδο και τθν κατάςταςθ

126 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Το component input block είναι ο padder του ςυςτιματοσ. Εκτόσ από αυτό επιτελεί και άλλεσ λειτουργίεσ του ςυςτιματοσ και αυτζσ είναι να παράγει τισ εξόδουσ first, final, bitpad, position. Ο αλγόρικμοσ για τθ λειτουργία του χρειάηεται να γνωρίηει εάν το μπλοκ δεδομζνων που επεξεργάηεται είναι το πρϊτο ι το τελευταίο, εάν ζχει γίνει θ διαδικαςία του bitpad, όπωσ περιγράφεται ςτο πρότυπο, και πόςα είναι τα δεδομζνα που ζχουν επεξεργαςτεί μζχρι ςτιγμισ. Τα ςιματα αυτά χρθςιμοποιοφνται ςαν είςοδοι από το tweak generator. Οι τζςςερεισ αυτζσ ζξοδοι πρζπει να χρθςιμοποιθκοφν μόνο ζνα παλμό ρολογιοφ μετά και τθν είςοδο του τελευταίου πακζτου, δθλαδι 10 παλμοφσ μετά τθν ενεργοποίθςθ τθσ ειςόδου new_msg, και μόνο τότε. Πςο για τθν ζξοδο M512, αυτι είναι το παραγόμενο string για να γίνει hash και παραμζνει μετά τθν δθμιουργία τθσ μζχρι τθν αντικατάςταςι τθσ από το επόμενο string. Η ζξοδοσ start_keygen ενεργοποιείται κακϊσ μπαίνει και το τελευταίο πακζτο των 64 bit και προκαλεί τθν εκκίνθςθ του εςωτερικοφ counter του control unit. Το rounds είναι το component που υλοποιεί το μεγαλφτερο μζροσ του threefish. Ρεριζχει τα 32 MIX και τα 8 permute κακϊσ και τουσ adder για τον υπολογιςμό του αποτελζςματοσ και των τεςςάρων γφρων ςε κάκε παλμό. Είναι και αυτό ζνα ςφγχρονο κφκλωμα, αφοφ ςτο μζςον του και πριν τθν ζξοδό του R512 υπάρχει από ζνασ register. Ζχει εκτόσ από τθν είςοδο text_in, ειςόδουσ τισ skey0 και skey1 ςτισ οποίεσ και μπαίνουν τα αντίςτοιχα για κάκε μινυμα subkey. Το component rounds μαηί με τον multiplexer ειςόδου (512bit MUX 4to1) δθμιουργοφν τον μικρό κφκλο επανάλθψθσ για τουσ 72 γφρουσ. Για να ολοκλθρωκεί όμωσ θ διαδικαςία του threefish πρζπει να γίνει μία ακόμθ πρόςκεςθ subkey και μία XOR του αποτελζςματοσ με το αρχικό μινυμα από τα component 8x64bit Adders και XOR αντίςτοιχα τα οποία και γίνονται μόνο μία φορά για κάκε μπλοκ. Ο multiplexer ειςόδου (512bit MUX 4to1) ζχει το ρόλο τθσ ειςόδου των νζων δεδομζνων κάκε φορά που ο counter δείχνει τθν τιμι 0 και το κλείςιμο του κφκλου (feedback) για τουσ υπόλοιπουσ. Αυτά που ειςάγονται μποροφν να είναι είτε αυτά που παρζχονται εξωτερικά τροποποιθμζνα από τον padder είτε κάποιεσ ςτακερζσ τιμζσ ςτισ περιπτϊςεισ που το μπλοκ που ξεκινάει είναι είτε configuration ( 0x 1334 ) είτε output ( 0x00 ) (οι τιμζσ αυτζσ είναι ίδιεσ και για τα τζςςερα κυκλϊματα και εξθγικθκαν παραπάνω κεφάλαιο 4.2.5). Ζνα άλλο ςθμαντικό component του ςυςτιματοσ είναι το tweak generator το οποίο, δουλειά του είναι να ςυγκεντρϊνει τα ςιματα first, final, bitpad και position από το input block και το ςιμα type από το control unit και να ςχθματίηει το ςωςτό string tweak που ειςάγεται ςτο component key generator. Στισ περιπτϊςεισ που το type του μπλοκ είναι cfg (configuration) ι out (output) τότε οι άλλεσ είςοδοι δεν χρθςιμοποιοφνται αλλά παράγονται εςωτερικά κακϊσ είναι πάντα ίδιεσ ςε αυτζσ τισ περιπτϊςεισ

127 Σχιμα 4.29: Γενικι τοπολογία του κυκλϊματοσ. Φαίνονται τα component που το απαρτίηουν και οι μεταξφ τουσ διαςυνδζςεισ.

128 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Το key generator, λοιπόν, είναι το component που δθμιουργεί ςειριακά όλα τα subkey που χρειάηονται από το component rounds. Ραράγει ηεφγθ ςτθν περίπτωςι μασ κακϊσ δφο είναι τα subkey που χρειάηονται για να υλοποιθκοφν οι 8 γφροι που επεξεργάηονται ςε κάκε παλμό. Το component ζχει ςαν ειςόδουσ του τα ςιματα tweak προερχόμενο από το component tweak generator, το key προερχόμενο από τον multiplexer κλειδιοφ (512bit MUX 3to1) και το ςιμα cntr_val (counter#) προερχόμενο από το control unit. Τα τρία αυτά ςιματα είναι απαραίτθτα για να γίνει θ παραγωγι των subkey. Ακόμθ ειςάγονται τα ςιματα en_keygen_shr (enable key generator shift registers) και load_keygen_shr (load key generator shift registers) τα οποία και ελζγχουν τθ λειτουργία του κυκλϊματοσ και κα αναλυκοφν διεξοδικά παρακάτω. Χριςιμο κα ιταν να γνωρίηουμε ότι για να αποκθκευτοφν τα δεδομζνα ςτουσ εςωτερικοφσ shift register και να παραχκεί το πρϊτο subkey χρειάηεται ζνασ παλμόσ ρολογιοφ. Φυςικά δεν λείπουν και τα ςιματα clock, enable και reset τα οποία φανερϊνουν ότι και αυτό το component είναι ςφγχρονο. Ο multiplexer κλειδιοφ (512bit MUX 3to1) είναι αυτόσ που μαηί με τα component rounds, 8x64bit Adders, XOR, και το key generator κλείνουν το μεγάλο κφκλο δεδομζνων κακϊσ ςχεδόν πάντα το αποτζλεςμα του threefish χρθςιμοποιείται ςαν νζο κλειδί ςτο επόμενο μπλοκ. Δεν χρθςιμοποιείται μόνο ςτισ περιπτϊςεισ που ξεκινάει θ λειτουργία του αλγορίκμου ςε mode MAC οπότε και ειςάγεται θ ςτακερά 0 ( 0x00 ) και όταν ξεκινά ςε mode HASH οπότε και ειςάγεται θ ςτακερά 0x49 33 (επεξθγικθκαν ςτο κεφάλαιο 4.2.9). Το component output block είναι αυτό που αναλαμβάνει να μετατρζψει τα δεδομζνα εξόδου (X512) από ζνα μεγάλο string των 512 bit ςε 8 μικρότερα των 64 bit και να τα εξάγει διαδοχικά από τθν ζξοδο md (message digest) που είναι και θ τελικι ζξοδοσ του κυκλϊματοσ. Ταυτόχρονα με τθν ζξοδο των δεδομζνων ενεργοποιείται και θ ζξοδοσ valid του component θ οποία είναι και ζξοδοσ του κυκλϊματοσ ειδοποιϊντασ για τθν εγκυρότθτα των αποτελεςμάτων. Ο register που υπάρχει δίπλα ςτο component rounds είναι αυτόσ που κρατά αποκθκευμζνο το αρχικό μινυμα το οποίο και πρόκειται να γίνει xor με το αποτζλεςμα τθσ πρόςκεςθσ του τελευταίου subkey. Είναι κετικά ακμοπυροδότθτοσ και ελεγχόμενοσ αςφγχρονα από το reset και με ςιμα επίτρεψθσ το enable, όπωσ όλα τα ςτοιχεία μνιμθσ του κυκλϊματοσ. Ελζγχεται κατευκείαν από το component control unit και ενεργοποιείται μόνο ςτον πρϊτο γφρο του μθνφματοσ οπότε και ειςάγονται τα δεδομζνα ςτο component rounds. Το control unit είναι ο ενορχθςτρωτισ όλου του κυκλϊματοσ. Επιλζχκθκε μία ςυγκεντρωτικι λογικι ελζγχου λόγω τθσ πολυπλοκότθτασ του ςυςτιματοσ και τθσ όχι πάντα άμεςθσ εξάρτθςθσ των ςτοιχείων που τθν απαρτίηουν. Ρεριζχει τον counter υπεφκυνο για τθ λειτουργία του component rounds και για τθν παραγωγι του cntr_val

129 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σο Component Rounds Το component αυτό είναι θ καρδιά του αλγορίκμου κακϊσ ςε αυτό γίνονται όλεσ οι πράξεισ που απαιτοφνται για τθ διάχυςθ τθσ πλθροφορίασ και τθν παραγωγι του hash αποτελζςματοσ. Ρεριζχει 32 MIX και 8 permute όπωσ και 16 adder των 64 bit για τισ προςκζςεισ των subkey. Το component αυτό που φαίνεται ςτο είναι όμοιο με αυτό του κυκλϊματοσ τθσ παραγράφου 4.3 αλλά διαφζρει ωσ προσ τον ζνα από τουσ δφο register ο οποίοσ εδϊ δεν υπάρχει αφοφ δεν εφαρμόηεται τεχνικι pipeline. Αρχικά όμωσ και πριν περιγράψουμε το component το ίδιο, πρζπει να γίνει θ περιγραφι κάποιων ςθμαντικϊν component που το απαρτίηουν. Αυτά είναι το MIX και το permute Το MIX Το MIX όπωσ και ςτθν περιγραφι του αλγορίκμου είναι πολφ απλό ςτθ υλοποίθςι του. Αυτό γιατί περιζχει μόνο ζναν 64bit adder, μία περιςτροφι (shifter) και μία bitwise XOR. Στθν υλοποίθςθ αυτι όπωσ και ςτισ υπόλοιπεσ οι περιςτροφζσ πραγματοποιοφνται με απλά καλϊδια χωρίσ να επιβαρφνουν με κάποια κακυςτζρθςθ αφοφ είναι πάντα ςτακερζσ. Το MIX ζχει ειςόδουσ τισ X 0, X 1 και εξόδουσ τισ Y 0, Y 1 ςφμφωνα με τουσ ςυμβολιςμοφσ που χρθςιμοποιικθκαν. Το εςωτερικό του φαίνεται ςτο Σχιμα Το permute Το permute είναι απλά ζνα ανακάτεμα των λζξεων 64 bit. Γι αυτό και υλοποιείται απλά από καλϊδια τα οποία μετατάςςουν τισ λζξεισ αυτζσ μζςα ςτο κφκλωμα. Αυτζσ φαίνονται ςτο Σχιμα 4.31 και οι ςτακερζσ μετάκεςθσ ςτον Ρίνακασ 3.3. Σχιμα 4.30: Το εςωτερικό του MIX

130 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.31: Το permute Αρχιτεκτονική του Component Rounds Ζτςι λοιπόν, για το ςχθματιςμό του rounds χρθςιμοποιείται θ διάταξθ που φαίνεται ςτο Σχιμα Οι είςοδοι text και skey0 (subkey) αναλφονται ςε 8 λζξεισ των 64 bit θ κακεμία οι οποίεσ ειςάγονται ανά ηεφγθ ςτουσ adder όπου και γίνεται θ πρόςκεςθ του subkey. Μετά το MIX ακολουκεί το permute το οποίο όπωσ είπαμε κάνει τισ μετακζςεισ των λζξεων ςφμφωνα με τισ ςτακερζσ του αλγορίκμου. Ακολουκοφν άλλα τρία ηεφγθ MIX permute και ζπειτα όλθ θ διαδικαςία επαναλαμβάνεται με μοναδικι διαφορά να είναι ϋτι τϊρα προςτίκεται το skey1. Ζπειτα φτάνουμε ςτον register που είναι και το τελευταίο component πριν τθν ζξοδο. Ο register είναι εφρουσ 512 bit και ελζγχεται εκτόσ από το κακολικό ςιμα reg_en (enable) και από το ςιμα ελζγχου enable_rounds που παράγει το control unit. Φυςικά οι ςτακερζσ περιςτροφισ είναι αυτζσ ςτον Ρίνακασ 3.4.Τζλοσ, τα δεδομζνα βγαίνουν ςυνολικά ςαν μία 512 bit λζξθ και διαχειρίηονται ανάλογα

131 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.32: Το εςωτερικό του component rounds

132 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σο Component Key Generator To component αυτό (Σχιμα 4.33) είναι εκείνο το οποίο παράγει τα ηεφγθ των subkey ςε κάκε γφρο του αλγορίκμου. Τα παράγει ανά δφο ςε κάκε παλμό γιατί ανά δφο χρειάηονται από το component rounds το οποίο εκτελεί 8 γφρουσ του αλγορίκμου ανά παλμό και άρα χρειάηεται δφο subkey κάκε φορά. Η ςχεδίαςθ που επιλζχκθκε είναι θ ίδια με αυτισ τθσ παραγράφου με μόνθ διαφορά ότι οι shift register ζχουν μεταβλθκεί και υπάρχουν οι διπλοί adder από τισ άλλεσ υλοποιιςεισ. Γενικά χρθςιμοποιεί τθν ίδια λογικι ςχεδίαςθσ θ οποία είναι και θ προτεινόμενθ από τον ίδιο τον αλγόρικμο κακϊσ χρθςιμοποιεί ζνα πολφ μικρό και απλό κφκλωμα για τθν καταςκευι των subkey ανά παλμό ρολογιοφ. Για να το κάνει αυτό αξιοποιεί μία ιδιότθτα που ζχουν τα παραγόμενα subkey και αυτι δεν είναι άλλθ από το μεγάλο μζροσ που ζχουν κοινό δφο διαδοχικά subkey. Ζτςι για να παραχκεί ζνα subkey χρειάηεται τα 8 από τα 9 τμιματα του extended key και 2 από τα 3 τμιματα του extended tweak. Τα επιλεγμζνα τμιματα όμωσ χρθςιμοποιοφνται κυκλικά για τα διαδοχικά subkey κάτι που εκμεταλλεφεται το κφκλωμά μασ με τουσ δφο shift register που χρθςιμοποιεί. Ζναν για το extended key μεγζκουσ 576 bit (9 64 ι αλλιϊσ ) και ζναν για το extended tweak μεγζκουσ 192 bit (3 64 ι αλλιϊσ ). Ο τρόποσ λειτουργίασ του είναι ο ακόλουκοσ. Ζνα παλμό πριν ξεκινιςει το component rounds να επεξεργάηεται το μινυμα ειςόδου επιτρζπεται ςτουσ shift register μζςω του ςιματοσ en_shr (enable shift register) να λειτουργιςουν και ταυτόχρονα μζςω του ςιματοσ load_shr δίνεται θ εντολι να φορτϊςουν το extended key και το extended tweak και ζτςι να δθμιουργθκεί το πρϊτο subkey. Το extended key και το extended tweak δεν είναι άλλα από τα key και tweak επαυξθμζνα με το αποτζλεςμα των xor των 8 τμθμάτων και τθσ ςτακεράσ (κεφάλαιο ) για το key και το αποτζλεςμα τθσ xor των 2 τμθμάτων για το tweak. Τα τμιματα αυτά είναι τα k 8 και t 2 αντίςτοιχα και ειςάγονται ςτα λιγότερο ςθμαντικά bit. Για να παραχκεί το πρϊτο κλειδί επιλζγονται από το extended key τα 512 πιο ςθμαντικά bit και από το extended tweak τα 128 πιο ςθμαντικά bit των αποκθκευμζνων string κάκε φορά. Και με μόνο τρείσ προςκζςεισ των 64 bit παράγεται το subkey. Για το δεφτερο επιλζγονται από το extended key τα 512 λιγότερο ςθμαντικά bit και από το extended tweak τα 128 λιγότερο ςθμαντικά bit των αποκθκευμζνων string (ουςιαςτικά πρόκειται για τα μετατοπιςμζνα κατά 64 κζςεισ). Για το επόμενο ηεφγοσ παραμζνουν ενεργοί οι shift register και περιςτρζφουν κατά 128 κζςεισ τα string που ζχουν αποκθκευμζνα αυτι τθ φορά και όχι 64 και ζτςι παράγεται το επόμενο ηεφγοσ subkey. Αυτό επαναλαμβάνεται μζχρι τθ δθμιουργία και των 19 subkey (το εικοςτό που παράγεται δεν χρθςιμοποιείται αφοφ δεν ορίηεται). Ο αρικμόσ των γφρων προκφπτει από τθν τρζχουςα τιμι του counter βάηοντασ ακόμθ ζνα 0 ι ζνα 1 ςτο τζλοσ του για κάκε ζνα από τα δφο subkey αντίςτοιχα. Διευκρινίηεται ότι οι shift register είναι δφο ςφγχρονοι shift register παράλλθλθσ φόρτωςθσ με αλλαγι κατάςταςθσ ςτθν ανερχόμενθ παρυφι του ρολογιοφ και

133 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ αςφγχρονο ςιμα επαναφοράσ (reset). Για οποιαδιποτε ενζργεια απαιτείται το ςιμα επίτρεψθσ (enable) και εάν το ςιμα load_shr είναι ενεργοποιθμζνο πραγματοποιείται παράλλθλθ φόρτωςθ, διαφορετικά περιςτροφι τθσ αποκθκευμζνθσ λζξθσ κατά 128 bit μεταφζροντασ τα πιο ςθμαντικά ςτθ κζςθ των λιγότερο ςθμαντικϊν

134 Σχιμα 4.33: Το component key generator. Φαίνονται οι δφο ομάδεσ από adder και τα δφο subkey που παράγονται.

135 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σο Control Unit Το control unit, όπωσ φανερϊνει και το όνομά του, παράγει όλα τα ςιματα ελζγχου και ςυγχρονιςμοφ των διαφόρων μονάδων. Είναι αυτό που με τθ χριςθ μίασ μθχανισ εςωτερικϊν καταςτάςεων (FSM Finite State Machine) γνωρίηει τι τφποσ είναι το κάκε μπλοκ που επεξεργάηεται και παράγει τα κατάλλθλα ςιματα (type, text_sel, key_sel κ.α.) Ακόμθ περιζχει και τον counter που ελζγχει το component rounds και παράγει και τα διάφορα ςιματα ςυγχρονιςμοφ Ο Counter 10 Παλμών Είναι ο μεγαλφτεροσ counter του κυκλϊματοσ και ςυντονίηει πολλά από τα ςιματα ελζγχου. Ζχει για ειςόδουσ τα τζςςερα βαςικά ςιματα και αυτά δεν είναι άλλα από: το ςιμα εκκίνθςθσ (start_counter), το ςιμα ρολογιοφ (clock), το αςφγχρονο ςιμα επαναφοράσ (reset) και το ςιμα επίτρεψθσ (enable). Ραράγει τα ςιματα: first_round: Ραίρνει τθν τιμι 1 μόνο όταν βριςκόμαςτε ςτον πρϊτο γφρο (round 0) και χρθςιμοποιείται για τον ζλεγχο του επιλογζα πολυπλζκτθ ειςόδου text_sel. en_keygen, load_keygen: Είναι τα ςιματα ελζγχου των shift register τθσ μονάδασ key generator. Ππωσ αναλυτικά εξθγικθκε παραπάνω ελζγχουν τθν φόρτωςθ και περιςτροφι των δεδομζνων. en_input: Είναι ζνα ςιμα επίτρεψθσ τθσ ειςόδου του ςιματοσ new_msg που ειςάγεται εξωτερικά. Ενεργοποιείται κάκε φορά όταν ο counter ζχει τθν τιμι 9 για να δϊςει τον απαραίτθτο χρόνο ςτο input block να ζχει ζτοιμο το νζο μπλοκ ειςόδου. Τότε είναι και θ μοναδικι ςτιγμι κατάτθν οποία μπορεί να ειςαχκεί νζο μπλοκ προσ επεξεργαςία ςτο threefish. cntr_end: (counter end) Είναι ζνα ςιμα που ειδοποιεί το component FSM για το επικείμενο τζλοσ του τρζχοντοσ ςετ γφρων. Ενεργοποιείται όταν ο counter ζχει τθν τιμι 7 προκαλϊντασ τθν αλλαγι κατάςταςθσ (όχι πάντα) ςτο FSM και δίνοντασ του το απαραίτθτο χρονικό περικϊριο να αποφαςίςει εάν κα ςυνεχίςει τθ λειτουργία του counter ι εάν κα τθν αφιςει να διακοπεί. en_text_reg: (enable text register) Ελζγχει τον register που αποκθκεφει το αρχικό μινυμα ειςόδου με ςκοπό να γίνει xor με το αποτζλεςμα των επαναλιψεων. Ενεργοποιείται πάντα ςτον πρϊτο γφρο (round 0) όταν και ειςάγεται ζνα νζο μπλοκ ςτο threefish. (Ταυτίηεται με το ςιμα first_round) rounds_reg_en: (rounds register enable) Ελζγχει τον εςωτερικό του component rounds register επιτρζποντάσ του ι μθ τθ λειτουργία. Ραραμζνει ςτθν τιμι 1 για το διάςτθμα που είναι ενεργόσ ο counter. counter_value: Είναι θ τρζχουςα τιμι του counter και χρθςιμοποιείται από τα component που αναφζρκθκαν πιο πάνω με τον τρόπο που αναφζρκθκε. Ο counter χρθςιμοποιεί τον ίδιο τρόπο ενεργοποίθςθσ με τουσ υπόλοιπουσ και αυτόσ είναι με τθ χριςθ ενόσ T-Flip_Flop για τθν δθμιουργία του ςιματοσ enable του

136 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ counter. Τζλοσ, ο counter ξεκινά τθν απαρίκμθςθ από τθν τιμι 9 για να δϊςει χρόνο ςτθν παραγωγι του πρϊτου subkey από το component key generator. Πταν τελειϊςει θ απαρίκμθςθ και εφόςον δεν ζχει δοκεί εντολι μζςω του ςιματοσ start_counter για τθ ςυνζχιςι τθσ ςταματά και παραμζνει ςτθν τιμι αυτι (9) Το Component FSM Ραρά τθν ονομαςία του, το component αυτό δεν περιζχει μόνο τθν μθχανι καταςτάςεων αλλά και κάποια άλλα ςτοιχεία. Αυτά είναι ζνασ μθχανιςμόσ ελζγχου και ςυγχρονιςμοφ του ςιματοσ εκκίνθςθσ του output block. Ο μθχανιςμόσ ελζγχου του ςιματοσ εκκίνθςθσ του output block αποτελείται από δφο D-Flip-Flop και ζνα T-Flip-Flop. Η λογικι του είναι απλι: Επειδι οι καταςτάςεισ μπορεί να αλλάηουν χωρίσ απαραίτθτα να ζχει ολοκλθρωκεί ζνα ςετ γφρων εκμεταλλεφεται τθ ςτακερότθτα ςτθν περίοδο του ςιματοσ cntr_end και ζτςι όταν φτάςει ςτθν τελευταία κατάςταςθ ενόσ κφκλου καταςτάςεων ενεργοποιεί το μθχανιςμό αυτό ανεξάρτθτα από το εάν κα παραμείνει ςε αυτιν μζχρι το τζλοσ του μπλοκ. Ο μθχανιςμόσ μόλισ ενεργοποιθκεί το ςιμα cntr_end ενεργοποιεί για ζνα παλμό το ςιμα start_out_bfr και επανζρχεται ςτθν πρότερθ κατάςταςι του. Ακολουκεί το ςχιμα με τθν αρχιτεκτονικι του FSM component (Σχιμα 4.34)

137 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.34: Το εςωτερικό του component FSM. Φαίνονται τα Flip-Flop και θ Finite State Machine Οι Καταςτάςεισ τησ FSM Συνολικά ζχει 16 καταςτάςεισ και ειδικότερα: 1 κατάςταςθ ςτάςθσ, 5 καταςτάςεισ για το key, 3 καταςτάςεισ για το configuration, 5 καταςτάςεισ για το message και 2 καταςτάςεισ για το output. Αναλυτικά για τθν κακεμία: halt: Είναι θ κατάςταςθ θρεμίασ του κυκλϊματοσ, παραμζνει ςε αυτι μζχρι να ζρκει νζο μινυμα οπότε και ανάλογα με το ςιμα sel_mac μεταβαίνει είτε ςτθν key_0 είτε ςτθν message_0. key_0: Είναι θ πρϊτθ από μία ςειρά καταςτάςεων για τθν πραγματοποίθςθ του MAC αλγορίκμου. Είναι πανομοιότυπθ με τθν key_2 με τθ μόνθ

138 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ διαφορά να βρίςκεται ςτο ςιμα του επιλογζα του πολυπλζκτθ κλειδιοφ. Η key_0 επιλζγει για είςοδο τθν τιμι 0 ενϊ θ key_2 επιλζγει για είςοδο το αποτζλεςμα του threefish. key_1: Είναι μία κατάςταςθ θ οποία χρειάηεται μόνο για να μεταβεί το ςιμα start_inp_counter ςτθν τιμι 0 πριν μπορζςει να μεταβεί ςτθν τιμι 1 ςτθν κατάςταςθ key_2. Εάν το κλειδί ζχει μζγεκοσ μικρότερο ι ίςο από 512 bit τότε μεταβαίνει κατευκείαν ςτισ καταςτάςεισ για το configuration. key_2: Είναι μία κατάςταςθ που επαναλαμβάνεται όςεσ φορζσ χρειαςτεί, μαηί με τθν key_3, μζχρι να τελειϊςουν τα μπλοκ κλειδιοφ. key_3: Η φπαρξι τθσ οφείλεται ςτον ίδιο λόγο που οφείλεται και τθσ key_1. Υπάρχει για τθν απενεργοποίθςθ του ςιματοσ start_inp_counter. configuration_0: Ο ρόλοσ αυτισ τθσ κατάςταςθσ είναι να ενεργοποιεί το ςιμα start_rounds το οποίο και ενεργοποιεί τον counter για ζνα ακόμθ ςετ γφρων. configuration_1: Στθν κατάςταςθ αυτι τίκεται ο πολυπλζκτθσ ειςόδου ςτθν αντίςτοιχθ τιμι για το configuration μπλοκ. Ταυτόχρονα γίνεται επαναφορά του input block. configuration_2: Είναι μία βοθκθτικι κατάςταςθ και υπάρχει για λόγουσ ςυγχρονιςμοφ. message_0: Είναι θ αντίςτοιχθ τθσ key_0 όταν πραγματοποιείται ο απλόσ HASH αλγόρικμοσ. Είναι πανομοιότυπθ με τθν message_2 αλλά και εδϊ θ διαφορά ζγκειται ςτον επιλογζα του πολυπλζκτθ κλειδιοφ ο οποίοσ ειςάγει το ζτοιμο αποτζλεςμα του configuration που προθγείται ςτον αλγόρικμο. message_1: Ππωσ θ key_1 και θ key_3 υπάρχουν για να ςβζνουν το ςιμα start_inp_counter. Αν το μινυμα είναι μικρό ( 512 bit) τότε μεταβαίνει κατευκείαν ςτθν κατάςταςθ output_0. message_2: Είναι θ κατάςταςθ θ οποία επαναλαμβάνεται όςεσ φορζσ χρειαςτεί μαηί με τθν message_3 για να ειςαχκοφν όλα τα μπλοκ μθνφματοσ που απομζνουν. message_3: Η αντίςτοιχθ τθσ message_1. output_0: Αυτι θ κατάςταςθ υπάρχει όπωσ και θ configuration_0 για να ενεργοποιιςει το ςιμα start_rounds. output_1: Είναι θ δεφτερθ για το μπλοκ εξόδου. Δεν ειςάγονται δεδομζνα από το input block αλλά θ αντίςτοιχθ ςτακερά από τον πολυπλζκτθ ειςόδου. Μετά από αυτιν και ανάλογα εάν κα ςυνεχίςει με νζο μινυμα ειςόδου επιλζγονται οι key_4 ι message_4, αλλιϊσ επανζρχεται ςτθν κατάςταςθ αναμονισ halt. key_4, message_4: Επαναφζρει τον πολυπλζκτθ ειςόδου και ςυνεχίηει το output. Ουςιαςτικά πρόκειται μαηί με τθν message_4 για καταςτάςεισ του output, αλλά επειδι πρζπει να λθφκεί νωρίτερα χρονικά θ απόφαςθ για το ποιο mode κα χρθςιμοποιθκεί διαςπάςτθκε μία ςε δφο ίδιεσ. Ακολουκεί το ςχιμα με τισ καταςτάςεισ και τισ μεταβάςεισ από τθ μία ςτθν άλλθ (Σχιμα 4.35)

139 Σχιμα 4.35: Οι καταςτάςεισ και οι μεταβάςεισ από τθ μία ςτθν άλλθ. Σχθματίηονται 2 κφκλοι λειτουργίασ, αυτόσ του MAC και αυτόσ του απλοφ HASH.

140 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Η αρχιτεκτονική του Control Unit Η αρχιτεκτονικι του control unit είναι αρκετά απλι, αφοφ το μόνο που κάνει είναι να ενςωματϊνει τα δφο προαναφερκζντα component και επιπλζον να επαναπροςδιορίηει τον επιλογζα του πολυπλζκτθ ειςόδου. Αυτό το κάνει με τθ χριςθ δφο πυλϊν and και του ςιματοσ round0 από τον counter. Oι πφλεσ δεν επιτρζπουν ςτον επιλογζα να πάρει άλλθ τιμι εκτόσ από το 0 (αντιςτοιχεί ςτο feedback από τθ μονάδα rounds) όταν βρίςκεται ςε οποιοδιποτε γφρο εκτόσ του πρϊτου (round 0). Ακόμθ υπάρχει και μία πφλθ or θ οποία βρίςκεται για να επιτρζψει και ςτο input block και ςτο FSM να ενεργοποιοφν τον counter. Ακολουκεί το ςχιμα με τθν αρχιτεκτονικι του (Σχιμα 4.36) Σα Τπόλοιπα Component Τα υπόλοιπα component που χρθςιμοποιικθκαν ζχουν αναλυκεί ςτα προθγοφμενα κεφάλαια αφοφ είναι ακριβϊσ τα ίδια και επιτελοφν τισ ίδιεσ εργαςίεσ ςτο κφκλωμα. Συγκεκριμζνα αυτά βρίςκονται: Input block: είναι πανομοιότυπο με αυτό του κυκλϊματοσ τθσ παραγράφου 4.2 και αναλφεται πλιρωσ ςτθν παράγραφο Ρολυπλζκτθσ ειςόδου: είναι πανομοιότυποσ με τουσ υπόλοιπουσ και αναλφεται ςτθν παράγραφο Adder_8x64: αναλφεται ςτθν παράγραφο Register αρχικοφ μθνφματοσ: αναλφεται ςτθν παράγραφο Tweak generator: αναλφεται ςτθν παράγραφο Ρολυπλζκτθσ κλειδιοφ: αναλφεται ςτθν παράγραφο Output block: είναι ίδιο με αυτό του κυκλϊματοσ ςτθν παράγραφο 4.2 και αναλφεται ςτθν παράγραφο

141 ΚΕΦΑΛΑΙΟ 4 ΟΙ ΑΧΙΤΕΚΤΟΝΙΚΕΣ ΤΩΝ ΚΥΚΛΩΜΑΤΩΝ Σχιμα 4.36: Το control unit

142

143 ΚΕΥΑΛΑΙΟ 5 ΑΠΟΣΕΛΕΜΑΣΑ ΤΝΘΕΗ ΚΑΙ ΕΞΟΜΟΙΨΕΨΝ 5.1 ΑΠΟΣΕΛΕΜΑΣΑ ΤΝΘΕΗ Η ςφνκεςθ των κυκλωμάτων ζγινε ςε τρείσ πλατφόρμεσ υλοποίθςθσ: Virtex 2 Virtex 4 Spartan 3 Ακολουκοφν τα ςυγκεντρωτικά αποτελζςματα των ςυνκζςεων όςον αφορά τθν επιφάνεια που καταλαμβάνουν (μετροφμενθ μζςω των δομικϊν ςτοιχείων που απαιτοφνται) και τθν μζγιςτθ ςυχνότθτα που κα είχε εάν υλοποιοφνταν. Τα αποτελζςματα διαχωρίηονται ανά πλατφόρμα υλοποίθςθσ. Τα αποτελζςματα ςτουσ πίνακεσ φαίνονται με τθν εξισ ςειρά: το κφκλωμα μικρισ επιφάνειασ (low area), το βαςικό κφκλωμα με pipeline και είςοδο 64bit (pipeline 64), το κφκλωμα με το pipeline ξανά αλλά χωρίσ περιοριςμζνθ είςοδο και ζξοδο (pipeline 512) και τζλοσ το κφκλωμα χωρίσ pipeline για τθ ςφγκριςθ (no pipeline).

144 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Στον πρϊτο από τουσ τρείσ πίνακεσ για τθν κάκε πλατφόρμα εμφανίηονται τα αποτελζςματα ςε απόλυτοσ αρικμοφσ και ςε παρζνκεςθ το ποςοςτό τουσ ωσ προσ το ςφνολο. Τα ςυνολικά διακζςιμα βρίςκονται ςτθν τελευταία ςτιλθ. Ακολουκεί ο πίνακασ με τουσ χρόνουσ του κυκλϊματοσ και τισ μζγιςτεσ ςυχνότθτεσ λειτουργίασ. Τελευταίοσ ο πίνακασ ςυμπεραςμάτων με τα υπολογιςμζνα από τουσ προθγοφμενουσ πίνακεσ αποτελζςματα των throughput και throughput/area. Για τον υπολογιςμό του throughput εφαρμόςτθκε ο τφποσ: Κατόπιν υπολογίςτθκε και το μζγεκοσ throughput ανά area, όπου για area λιφκθκαν ο αρικμόσ των slices που καταλιφκθκαν και το αποτζλεςμα ζχει μονάδεσ Mbps/slice. Virtex 2: Low area Pipeline 64 Pipeline No pipeline Device 512 Slices 3621 (33) 5898 (54) 6198(57) 4560 (42) Slice Flip Flops 2970 (13) 5394 (25) 5889 (27) 2950 (13) input LUTs 6726 (31) (49) (52) 8786 (40) IOs Bonded IOs 142 (22) 142 (22) 1041 (166) 142 (22) 624 GCLKs 1 (6) 1 (6) 1 (6) 1 (6) 16 Low area Pipeline 64 Pipeline 512 No pipeline Period ns ns ns ns Frequency MHz MHz MHz MHz Input ns ns ns ns Output ns ns ns ns Low area Pipeline 64 Pipeline 512 No pipeline Rounds # Frequency MHz MHz MHz MHz Slices Throughput Gbps Gbps Gbps Gbps Throughput/Area

145 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Virtex 4: Low area Pipeline 64 Pipeline No pipeline Device 512 Slices 3678 (7) 5845 (11) 6165 (12) 4784 (9) Slice Flip Flops 2967 (3) 5388 (5) 5896 (5) 2958 (3) input LUTs 7044 (7) (10) (11) 9209 (9) IOs Bonded IOs 142 (18) 142 (18) 1041 (135) 142 (18) 768 GCLKs 1 (3) 1 (3) 1 (3) 1 (3) 32 Low area Pipeline 64 Pipeline 512 No pipeline Period ns ns ns ns Frequency MHz MHz MHz MHz Input ns ns ns ns Output ns ns ns ns Low area Pipeline 64 Pipeline 512 No pipeline Rounds # Frequency MHz MHz MHz MHz Slices Throughput Gbps Gbps Gbps Gbps Throughput/Area Spartan 3: Low area Pipeline 64 Pipeline 512 No pipeline Device Slices 3672 (11) 5518 (16) 5849(17) 4823 (14) Slice Flip Flops 2966 (4) 5388 (8) 5900 (8) 2960 (4) input LUTs 6511 (9) 9534 (14) (15) 8593 (12) IOs Bonded IOs 142 (22) 142 (22) 1041 (164) 142 (22) 633 GCLKs 1 (12) 1 (12) 1 (12) 1 (12) 8 Low area Pipeline 64 Pipeline 512 No pipeline Period ns ns ns ns Frequency MHz MHz MHz MHz Input ns ns ns ns Output ns ns ns ns

146 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Low area Pipeline 64 Pipeline 512 No pipeline Rounds # Frequency MHz MHz MHz MHz Slices Throughput Gbps Gbps Gbps Gbps Throughput/Area Από τα παραπάνω ςυμπεραίνουμε τα εξισ: Για τθ ςυχνότθτα: Ππωσ ιταν αναμενόμενο, το critical path ξεκινάει από τθν FSM και αμζςωσ περνά από τον πολυπλζκτθ ειςόδου ςτο component rounds. Ανάλογα με τθν υλοποίθςθ και πόςο μεγάλο είναι το τμιμα του path μζςα ςτο rounds ζχουμε και τθν αντίςτοιχθ μζγιςτθ ςυχνότθτα. Ζτςι, ςτο κφκλωμα μικρισ επιφάνειασ, το οποίο υλοποιεί μόνο ζνα γφρο τθ φορά, ςε όλεσ τισ πλατφόρμεσ ζχει τθ μεγαλφτερθ μζγιςτθ ςυχνότθτα (από 120 μζχρι 57 MHz). Ζπειτα, τα κυκλϊματα με το pipeline ζχουν ςχεδόν ίδιεσ ςυχνότθτεσ αφοφ διαφζρουν μόνο ςτο control unit και ςτα input και output block. Τζλοσ, το κφκλωμα χωρίσ το pipeline ζχει τισ μικρότερεσ ςυχνότθτεσ από όλα αφοφ είναι το μόνο που ζχει και τουσ 8 γφρουσ πάνω ςτο critical path (αυτά με το Frequency (MHz) Virtex 2 Virtex 4 Spartan Low area Virtex 4 Virtex 2 Spartan 3 Pipeline 64 Pipeline 512 No pipeline pipeline «κόβουν» το critical path που βρίςκεται ςτο rounds ςτθ μζςθ ςχεδόν). Διάγραμμα 5.1: Η μζγιςτθ ςυχνότθτα των κυκλωμάτων ςυναρτιςει των τεχνολογιϊν πάνω ςτισ οποίεσ υλοποιικθκαν

147 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Για το area: Και όςον αφορά τθν επιφάνεια που καταλαμβάνουν (μετρθμζνθ ςε slices) τα κυκλϊματα δίνουν τα αναμενόμενα αποτελζςματα. Ζτςι το κφκλωμα μικρισ επιφάνειασ είναι και ςτισ τρείσ πλατφόρμεσ το μικρότερο και με ςθμαντικι διαφορά, τα δφο κυκλϊματα με το pipeline είναι τα μεγαλφτερα και ζχουν περίπου τον ίδιο αρικμό από slices. Το κφκλωμα χωρίσ το pipeline είναι αιςκθτά πιο μικρό από τα άλλα δφο γιατί δεν περιζχει τα παραπάνω ςτοιχεία ελζγχου για τθν υλοποίθςθ του pipeline. Slices Virtex 2 Virtex 4 Spartan Low area Virtex 4 Virtex 2 Spartan 3 Pipeline 64 Pipeline 512 No pipeline Διάγραμμα 5.2: Η επιφάνεια που καταλαμβάνει κάκε κφκλωμα μετρθμζνθ ςε slices ςυναρτιςει των τεχνολογιϊν πάνω ςτισ οποίεσ υλοποιικθκαν

148 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Για το throughput: Το μεγαλφτερο δυνατό throughput το πετυχαίνουν όπωσ ιταν αναμενόμενο τα κυκλϊματα με το pipeline (τουλάχιςτον το διπλάςιο) για δφο λόγουσ. Και γιατί ζχουν ζνα όχι πολφ μεγάλο critical path (εν αντικζςει με το κφκλωμα χωρίσ pipeline) και γιατί ςε μικρι περίοδο ειςάγουν τα διπλάςια δεδομζνα από τα άλλα δφο. Ακολουκεί το κφκλωμα χωρίσ pipeline γιατί το κφκλωμα μικρισ επιφάνειασ ζχει το μειονζκτθμα των πάρα πολλϊν επαναλιψεων (73) αντίκετα με τα υπόλοιπα (19 ι 20). Throughput (Gbps) Low area Virtex 4 Virtex 2 Spartan 3 Virtex 2 Virtex 4 Spartan 3 Pipeline 64 Pipeline 512 No pipeline Διάγραμμα 5.3: Το throughput του κάκε κυκλϊματοσ πάνω ςτισ τρείσ πλατφόρμεσ υλοποίθςθσ

149 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Για το throughput/area: Και εδϊ τα πράγματα είναι αρκετά ξεκάκαρα. Τα δφο κυκλϊματα με το pipeline παρά το μεγαλφτερο μζγεκόσ τουσ ζχουν το ξεκάκαρο προβάδιςμα για το μεγαλφτερο throughput ανά επιφάνεια. Αυτό λόγω τθσ μεγάλθσ διαφοράσ ςτο throughput που ζχουν από τα άλλα δφο κυκλϊματα. Throughput/Area Low area Virtex 4 Virtex 2 Spartan 3 Virtex 2 Virtex 4 Spartan 3 Pipeline 64 Pipeline 512 No pipeline Διάγραμμα 5.4: Το throughput ανά επιφάνεια κάκε κυκλϊματοσ για τισ τρείσ πλατφόρμεσ υλικοφ

150 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ 5.2 ΑΠΟΣΕΛΕΜΑΣΑ ΕΞΟΜΟΙΨΕΨΝ Ακολουκοφν κάποιεσ εικόνεσ από τισ εξομοιϊςεισ των κυκλωμάτων οι οποίεσ δείχνουν πωσ λειτουργεί το κφκλωμα για να παράξει ζνα αποτζλεςμα. Επιλζγονται ςε όλα τα κυκλϊματα τα δφο ίδια μθνφματα, προερχόμενα από test vectors (6), τα οποία είναι τα εξισ: Ζχει κλειδί (key) μικουσ 129 byte το οποίο ζχει τιμι: CB 41 F1 70 6C DE C2 D0 EF BA DD F8 47 A0 D3 15 CB 2E 53 FF 8B AC 41 DA E C6 6E 02 D5 F0 DA D3 E9 4C 42 BB 65 F0 D DE CF EF D5 B C1 93 5D F3 06 1F F0 6E 9F BA 11 E5 BB 2C AC C1 C3 70 CB 3D 11 3F EA 5E C1 02 1E B8 75 E5 94 6D 7A 96 AC 69 A1 62 6C B F C9 EE 9B 85 EB 85 2D FC C και κείμενο μικουσ 0 bit το δεφτερο ζχει κλειδί μικουσ 32 byte με τιμι: CB 41 F1 70 6C DE C2 D0 EF BA DD F8 47 A0 D3 15 CB 2E 53 FF 8B AC 41 DA E και κείμενο μικουσ 768 bit με τιμι: D3 09 0C F7 C7 AD 82 A7 0C 2F D3 F6 44 3F E 59 8E AD B1 95 E BA 26 FE DE 2E E F D0 0F C A A 77 E4 17 0C 49 A9 4B 7F DF F4 5F F5 79 A E7 76 6C 35 CA 5A BC 5D FE 2F 63 A1 E7 26 CE 5F BD DB 03 A2 Αυτό φυςικά για τα κυκλϊματα τα οποία μποροφν να επεξεργαςτοφν ταυτόχρονα δφο μθνφματα, ςτα άλλα δφο κυκλϊματα φαίνεται μόνο το πρϊτο μινυμα. Ακόμθ λόγω του μεγζκουσ τουσ οι απεικονίςεισ κα είναι μόνο από κάποια ςθμαντικά ςθμεία

151 5.2.1 Σο Κύκλωμα Μικρόσ Επιφϊνειασ Εικόνα 5.1: Η εκκίνθςθ του κυκλϊματοσ. Διακρίνονται τα 8 πακζτα ειςόδου και θ ζναρξθ του κφριου counter.

152 Εικόνα 5.2: Στθν εικόνα αυτι φαίνεται το ςθμείο ςτο οποίο τελειϊνει το μπλοκ του key και ξεκινάει το μπλοκ του configuration.

153 Εικόνα 5.3: Στθν εικόνα αυτι φαίνεται το αποτζλεςμα το οποίο εξάγεται ςε 8 τμιματα.

154 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Ρρόκειται για το κφκλωμα μικρισ επιφάνειασ και τα test vectors που δίνει ο ςυγγραφζασ του αλγορίκμου. Στθν Εικόνα 5.1 διακρίνονται τα τμιματα τθσ ειςόδου που ειςάγονται μετά το reset του κυκλϊματοσ και δφο ακριβϊσ παλμοφσ μετά το ςιμα new_msg. Στο κάτω μζροσ τθσ εικόνασ διακρίνονται οι καταςτάςεισ και θ τιμι του counter ςτο εςωτερικό του input block. Μόλισ και τα 8 τμιματα ειςαχκοφν ξεκινάει θ λειτουργία του βαςικοφ τμιματοσ rounds (ςιμα rounds_en) κάτι που φαίνεται και από τθν λειτουργία του βαςικοφ counter που αρχίηει να μετράει παλμοφσ. Στθν δεφτερθ εικόνα (Εικόνα 5.2) φαίνεται το ςθμείο κατά το οποίο τελειϊνει το τελευταίο μπλοκ του κλειδιοφ (key) και ξεκινάει θ επεξεργαςία του μπλοκ διαμόρφωςθσ (configuration). Αυτό ςυμβαίνει όταν ο counter από τθν τιμι 71 (47 hex) μεταβαίνει ςτθν τιμι 72 (48 hex). Υπενκυμίηεται ότι με αυτό τον τρόπο δίνεται προβάδιςμα ενόσ παλμοφ ςτο key generator για να παράξει το πρϊτο subkey. Το αποτζλεςμα του μπλοκ του κλειδιοφ είναι ςτο X512 (αποτζλεςμα τθσ XOR) και ζχει τιμι D3A9927C98E5E6D5 (όταν ο counterζχει τιμι 48 hex) κάτι που επιβεβαιϊνεται και από τα test vectors του ςχεδιαςτι του αλγορίκμου. Στθν τρίτθ εικόνα (Εικόνα 5.3) διακρίνεται το τζλοσ τθσ διαδικαςίασ και θ παραγωγι του αποτελζςματοσ θ οποία και αυτι διαρκεί 8 παλμοφσ ρολογιοφ. Ξεκινά τθν εξαγωγι αμζςωσ μόλισ το αποτζλεςμα γίνει διακζςιμο από το τμιμα rounds δθλαδι ςτον επόμενο παλμό από τον 48 hex. Φαίνεται ακόμθ και το πάγωμα του counter ςτθν τιμι 48 μζνοντασ ζτοιμοσ για να εκκινιςει αμζςωσ μόλισ ηθτθκεί. Ακόμθ επιβεβαιϊνεται και το αποτζλεςμα το οποίο είναι 2BA9CF2F2A3DD49B

155 5.2.2 Σο Κύκλωμα Τψηλών Επιδόςεων με Περιοριςμϋνη Εύςοδο Εικόνα 5.4: Η εκκίνθςθ του κυκλϊματοσ. Διακρίνονται τα 8 πακζτα του πρϊτου μθνφματοσ και τα 8 του δεφτερου όπωσ και οι τιμζσ των δφο βαςικϊν counter.

156 Εικόνα 5.5: Στθν εικόνα αυτι φαίνεται το ςθμείο ςτο οποίο το πρϊτο μινυμα αρχίηει ζνα καινοφριο μπλοκ κλειδιοφ που μόλισ ειςιχκθ και το δεφτερο μινυμα μεταβαίνει ςτο ςτάδιο τθσ διαμόρφωςθσ.

157 Εικόνα 5.6: Στθν εικόνα αυτι φαίνεται το τζλοσ και των δφο μθνυμάτων με τα αποτελζςματά τουσ να εξάγονται από το output block ανά 64 bit. Αρχικά τελειϊνει το μινυμα 2 και μετά το μινυμα 1.

158 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Ρρόκειται για τθν κφρια υλοποίθςθ τθσ εργαςίασ και φαίνεται θ επεξεργαςία δφο εκ των ςετ των test vectors που δίνει ο ςυγγραφζασ του αλγορίκμου. Στθν Εικόνα 5.4 διακρίνονται τα τμιματα τθσ ειςόδου που ειςάγονται μετά το reset του κυκλϊματοσ. Αρχικά το πρϊτο μινυμα και ζπειτα το δεφτερο και τα δφο ακριβϊσ δφο παλμοφσ μετά το ςιμα new_msg. Στο κάτω μζροσ τθσ εικόνασ διακρίνονται οι καταςτάςεισ και θ τιμι του counter ςτο εςωτερικό του input block. Μόλισ και τα 8 πρϊτα τμιματα ειςαχκοφν ξεκινάει θ λειτουργία του βαςικοφ τμιματοσ rounds (ςιμα rounds_en) κάτι που φαίνεται και από τθν λειτουργία του βαςικοφ counter που αρχίηει να μετράει παλμοφσ. Στθ ςυνζχεια ειςάγεται και το δεφτερο μινυμα μόλισ ο counter1 δείξει τθν τιμι 19 (13 hex). Στθν δεφτερθ εικόνα (Εικόνα 5.5) φαίνεται το ςθμείο κατά το οποίο τελειϊνει το δεφτερο μπλοκ του κλειδιοφ (key) και ξεκινάει θ επεξεργαςία του τρίτου για το μινυμα 1. Αυτό ςυμβαίνει όταν ο counter0 από τθν τιμι 18 (12 hex) μεταβαίνει ςτθν τιμι 19 (13 hex). Το αποτζλεςμα του μπλοκ του κλειδιοφ είναι ςτο X512 (αποτζλεςμα τθσ XOR) και ζχει τιμι C327ADAD (όταν ο counter0 ζχει τιμι 12 hex) κάτι που επιβεβαιϊνεται και από τα test vectors του ςχεδιαςτι του αλγορίκμου. Για το μινυμα 2 τελειϊνει το πρϊτο και μοναδικό μπλοκ κλειδιοφ και ξεκινά το ςτάδιο τθσ διαμόρφωςθσ (configuration). Αυτό ςυμβαίνει όταν ο counter0 ζχει τθν τιμι 7 και μεταβαίνει ςτθν τιμι 8. Το αποτζλεςμα εδϊ είναι και πάλι ςτο X512 και ζχει τθν τιμι A434B9F3A1035FDF (όταν ο counter0 ζχει τθν τιμι 7) και επιβεβαιϊνεται και αυτό. Στθν τρίτθ εικόνα (Εικόνα 5.6) διακρίνεται το τζλοσ τθσ διαδικαςίασ και θ παραγωγι των δφο αποτελεςμάτων θ οποία και αυτι διαρκεί 8 παλμοφσ ρολογιοφ για το κακζνα. Ξεκινά τθν εξαγωγι αμζςωσ μόλισ το αποτζλεςμα γίνει διακζςιμο από το τμιμα rounds δθλαδι ςτον επόμενο παλμό από τον 12 hex του counter0 για το πρϊτο μινυμα και ςτον επόμενο από τον 7 για το δεφτερο. Τελειϊνει πρϊτα το δεφτερο μινυμα γιατί αυτό ιταν πιο ςφντομο από το πρϊτο (είχε ζνα μπλοκ λιγότερο). Φαίνεται ακόμθ και το πάγωμα του counter ςτθν τιμι 19 του counter0 μζνοντασ ζτοιμοσ για να εκκινιςει αμζςωσ μόλισ ηθτθκεί. Μάλιςτα κα εκκινιςει με το πρϊτο slot αφοφ το πρϊτο μινυμα είναι αυτό που τελείωςε τελευταίο. Ακόμθ επιβεβαιϊνεται και το αποτζλεςμα το οποίο είναι 2BA9CF2F2A3DD49B για το πρϊτο μινυμα και 08AC5518A83B0ED1 για το δεφτερο

159 5.2.3 Σο Κύκλωμα Τψηλών Επιδόςεων Φωρύσ Περιοριςμό Ειςόδου Εικόνα 5.7: Η εκκίνθςθ του κυκλϊματοσ. Διακρίνονται τα 2 μθνφματα όπωσ και οι τιμζσ των δφο βαςικϊν counter.

160 Εικόνα 5.8: Στθν εικόνα αυτι φαίνεται το ςθμείο ςτο οποίο το πρϊτο μινυμα αρχίηει ζνα καινοφριο μπλοκ κλειδιοφ που μόλισ ειςιχκθ και το δεφτερο μινυμα τελειϊνει το ςτάδιο τθσ διαμόρφωςθσ.

161 Εικόνα 5.9: Στθν εικόνα αυτι φαίνεται το τζλοσ και των δφο μθνυμάτων με τα αποτελζςματά τουσ να εξάγονται από το output block ςε ζνα πακζτο των 512 bit. Αρχικά τελειϊνει το μινυμα 2 και μετά το μινυμα 1.

162 ΚΕΦΑΛΑΙΟ 5 ΑΡΟΤΕΛΕΣΜΑΤΑ ΣΥΝΘΕΣΗΣ ΚΑΙ ΕΞΟΜΟΙΩΣΕΩΝ Ρρόκειται για τθν υλοποίθςθ με είςοδο 512 bit και φαίνεται θ επεξεργαςία δφο εκ των ςετ των test vectors που δίνει ο ςυγγραφζασ του αλγορίκμου. Στθν Εικόνα 5.7 διακρίνονται οι δφο είςοδοι που ειςάγονται μετά το reset του κυκλϊματοσ. Αρχικά το πρϊτο μινυμα και ζπειτα το δεφτερο και τα δφο ακριβϊσ ζνα παλμό μετά το ςιμα new_msg το οποίο παραμζνει ενεργό για δφο παλμοφσ αφοφ τόςα είναι και τα μθνφματα που ειςάγονται τα οποία ειςάγονται και άμεςα το ζνα από το άλλο. Στο κάτω μζροσ τθσ εικόνασ διακρίνονται οι καταςτάςεισ των δφο FSM. Μόλισ και το πρϊτο μινυμα ειςαχκεί ξεκινάει θ λειτουργία του βαςικοφ τμιματοσ rounds (ςιμα rounds_en) κάτι που φαίνεται και από τθν λειτουργία του βαςικοφ counter που αρχίηει να μετράει παλμοφσ. Στθ ςυνζχεια ειςάγεται και το δεφτερο μινυμα μόλισ ο counter0 δείξει τθν τιμι 1. Στθν δεφτερθ εικόνα (Εικόνα 5.8) φαίνεται το ςθμείο κατά το οποίο τελειϊνει το δεφτερο μπλοκ του κλειδιοφ (key) και ξεκινάει θ επεξεργαςία του τρίτου για το μινυμα 1. Αυτό ςυμβαίνει όταν ο counter0 από τθν τιμι 18 (12 hex) μεταβαίνει ςτθν τιμι 19 (13 hex). Το αποτζλεςμα του δεφτερου μπλοκ του κλειδιοφ είναι ςτο X512 (αποτζλεςμα τθσ XOR) και ζχει τιμι C327ADAD (όταν ο counter0 ζχει τιμι 12 hex) κάτι που επιβεβαιϊνεται και από τα test vectors του ςχεδιαςτι του αλγορίκμου. Για το μινυμα 2 τελειϊνει το ςτάδιο τθσ διαμόρφωςθσ (configuration) και ξεκινά θ επεξεργαςία του κειμζνου του μθνφματοσ (message). Αυτό ςυμβαίνει όταν ο counter0 ζχει τθν τιμι 19 (13 hex) και μεταβαίνει ςτθν τιμι 0. Το αποτζλεςμα εδϊ είναι και πάλι ςτο X512 και ζχει τθν τιμι FAF E5E53 (όταν ο counter0 ζχει τθν τιμι 13 hex) και επιβεβαιϊνεται και αυτό. Στθν τρίτθ εικόνα (Εικόνα 5.9) διακρίνεται το τζλοσ τθσ διαδικαςίασ και θ παραγωγι των δφο αποτελεςμάτων. Η εξαγωγι γίνεται ςτον αμζςωσ επόμενο παλμό από τθ ςτιγμι που το αποτζλεςμα γίνει διακζςιμο από το τμιμα rounds δθλαδι ςτον επόμενο παλμό από τον 12 hex του counter0 για το πρϊτο μινυμα και ςτον επόμενο από τον 13 hex για το δεφτερο. Τελειϊνει πρϊτα το δεφτερο μινυμα γιατί αυτό ιταν πιο ςφντομο από το πρϊτο (είχε ζνα μπλοκ λιγότερο). Φαίνεται ακόμθ και το πάγωμα του counter ςτθν τιμι 19 του counter0 μζνοντασ ζτοιμοσ για να εκκινιςει αμζςωσ μόλισ ηθτθκεί. Μάλιςτα κα εκκινιςει με το πρϊτο slot αφοφ το πρϊτο μινυμα είναι αυτό που τελείωςε τελευταίο. Ακόμθ επιβεβαιϊνεται και το αποτζλεςμα το οποίο είναι 2BA9CF2F2A3DD49B για το πρϊτο μινυμα και 08AC5518A83B0ED1 για το δεφτερο

163 5.2.4 Σο Κύκλωμα Φωρύσ Pipeline Εικόνα 5.10: : Η εκκίνθςθ του κυκλϊματοσ. Διακρίνονται τα 8 πακζτα ειςόδου όπωσ και οι τιμζσ του βαςικοφ counter.

164 Εικόνα 5.11: Στθν εικόνα αυτι φαίνεται τα ςθμεία ςτα οποία το μινυμα αρχίηει ζνα καινοφριο μπλοκ κλειδιοφ που μόλισ ειςιχκθ και που ξεκινά ζνα μπλοκ διαμόρφωςθσ.

165 Εικόνα 5.12: Στθν εικόνα αυτι φαίνεται το τζλοσ του μθνφματοσ και το αποτζλεςμά του το οποίο εξάγεται από το output block ςε 8 τμιματα.

Αςφάλεια και Προςταςία Δεδομζνων

Αςφάλεια και Προςταςία Δεδομζνων Αςφάλεια και Προςταςία Δεδομζνων Κρυπτογράφθςθ υμμετρικι και Αςφμμετρθ Κρυπτογραφία Αλγόρικμοι El Gamal Diffie - Hellman Σςιρόπουλοσ Γεώργιοσ ΣΙΡΟΠΟΤΛΟ ΓΕΩΡΓΙΟ 1 υμμετρικι Κρυπτογραφία υμμετρικι (Κλαςικι)

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

ΚΡΤΠΣΟΓΡΑΦΙΑ ΚΑΙ ΑΦΑΛΕΙΑ ΤΠΟΛΟΓΙΣΩΝ Δ Εξάμηνο. Αςφμμετρη Κρυπτογράφηςη (Κρυπτογραφία Δημόςιου Κλειδιοφ)

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

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

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V Σ ΤΑΤ Ι Σ Τ Ι Κ Η i Statisticum collegium V Στατιςτική Συμπεραςματολογία Ι Σημειακζσ Εκτιμήςεισ Διαςτήματα Εμπιςτοςφνησ Στατιςτική Συμπεραςματολογία (Statistical Inference) Το πεδίο τθσ Στατιςτικισ Συμπεραςματολογία,

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

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι Λογιςμικό (Software), Πρόγραμμα (Programme ι Program), Προγραμματιςτισ (Programmer), Λειτουργικό Σφςτθμα (Operating

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

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2 Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2 Δρ. Χρήζηος Ηλιούδης Μθ Προςθμαςμζνοι Ακζραιοι Εφαρμογζσ (ςε οποιαδιποτε περίπτωςθ δεν χρειάηονται αρνθτικοί αρικμοί) Καταμζτρθςθ. Διευκυνςιοδότθςθ.

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

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι Τλικό υπολογιςτι (Hardware), Προςωπικόσ Τπολογιςτισ (ΡC), υςκευι ειςόδου, υςκευι εξόδου, Οκόνθ (Screen), Εκτυπωτισ (Printer), αρωτισ

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

ςυςτιματα γραμμικϊν εξιςϊςεων

ςυςτιματα γραμμικϊν εξιςϊςεων κεφάλαιο 7 Α ςυςτιματα γραμμικϊν εξιςϊςεων αςικζσ ζννοιεσ Γραμμικά, λζγονται τα ςυςτιματα εξιςϊςεων ςτα οποία οι άγνωςτοι εμφανίηονται ςτθν πρϊτθ δφναμθ. Σα γραμμικά ςυςτιματα με δφο εξιςϊςεισ και δφο

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

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν: Μζθοδος Simplex Η πλζον γνωςτι και περιςςότερο χρθςιμοποιουμζνθ μζκοδοσ για τθν επίλυςθ ενόσ γενικοφ προβλιματοσ γραμμικοφ προγραμματιςμοφ, είναι θ μζκοδοσ Simplex θ οποία αναπτφχκθκε από τον George Dantzig.

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

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι Παράςταςη κινητήσ υποδιαςτολήσ ςφμφωνα με το πρότυπο ΙΕΕΕ Δρ. Χρήστος Ηλιούδης το πρότυπο ΙΕΕΕ 754 ζχει χρθςιμοποιθκεί ευρζωσ ςε πραγματικοφσ υπολογιςτζσ. Το πρότυπο αυτό κακορίηει δφο βαςικζσ μορφζσ κινθτισ

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

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό. Κωδικοποιητές Ο κωδικοποιθτισ (nor) είναι ζνα κφκλωμα το οποίο διακζτει n γραμμζσ εξόδου και το πολφ μζχρι m = 2 n γραμμζσ ειςόδου και (m 2 n ). Οι ζξοδοι παράγουν τθν κατάλλθλθ λζξθ ενόσ δυαδικοφ κϊδικα

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ ελιδοποίθςθ (1/10) Σόςο θ κατάτμθςθ διαμεριςμάτων ςτακεροφ μεγζκουσ όςο και θ κατάτμθςθ διαμεριςμάτων μεταβλθτοφ και άνιςου μεγζκουσ δεν κάνουν

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

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ Ειρινθ Φιλιοποφλου Ειςαγωγι Ο Παγκόςμιοσ Ιςτόσ (World Wide Web - WWW) ι πιο απλά Ιςτόσ (Web) είναι μία αρχιτεκτονικι για τθν προςπζλαςθ διαςυνδεδεμζνων εγγράφων

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

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ Οδηγός Χρήσης Εφαρμογής Ελέγχου Προσφορών Αφοφ πιςτοποιθκεί ο λογαριαςμόσ που δθμιουργιςατε ςτο πρόγραμμα ωσ Πάροχοσ Προςφορϊν, κα λάβετε ζνα e-mail με

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

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 1

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 1 Τμήμα Μησανικών Πληποφοπικήρ, Τ.Ε.Ι. Ηπείπος Ακαδημαϊκό Έτορ 2016-2017, 6 ο Εξάμηνο Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 1 Διδάςκων Τςιακμάκθσ Κυριάκοσ, Phd MSc in Electronic Physics (Radioelectrology)

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

Ειδικά Θζματα Βάςεων Δεδομζνων

Ειδικά Θζματα Βάςεων Δεδομζνων Ειδικά Θζματα Βάςεων Δεδομζνων Ενότητα 9: Κρυπτογράφηςη δεδομζνων Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικϊν Πλθροφορικισ ΣΕ Άδειεσ Χρήςησ Σο παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χριςθσ Creative

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

Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ

Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ Ειςαγωγό Όπωσ είδαμε, ο χϊροσ εικονικϊν διευκφνςεων μνιμθσ που χρθςιμοποιεί κάκε διεργαςία, είναι αρκετά μεγαλφτεροσ από το χϊρο των φυςικϊν διευκφνςεων.

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

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f.

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f. .. Αντίςτροφθ ςυνάρτθςθ Ζςτω θ ςυνάρτθςθ : A θ οποία είναι " ". Τότε ορίηεται μια νζα ςυνάρτθςθ, θ μζςω τθσ οποίασ το κάκε ιςχφει y. : A με Η νζα αυτι ςυνάρτθςθ λζγεται αντίςτροφθ τθσ. y y A αντιςτοιχίηεται

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

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ Εργονομία, ωςτι ςτάςθ εργαςίασ, Εικονοςτοιχείο (pixel), Ανάλυςθ οκόνθσ (resolution), Μζγεκοσ οκόνθσ Ποιεσ επιπτϊςεισ μπορεί να ζχει θ πολφωρθ χριςθ του υπολογιςτι ςτθν

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

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Παράςταςη ςυμπλήρωμα ωσ προσ 1 Δρ. Χρήστος Ηλιούδης Θζματα διάλεξησ ΣΤ1 Προςθεςη αφαίρεςη ςτο ΣΤ1 2 ή ΣΤ1 Ονομάηουμε ςυμπλιρωμα ωσ προσ μειωμζνθ βάςθ R ενόσ μθ προςθμαςμζνου αρικμοφ Χ = ( Χ θ-1 Χ θ-2... Χ 0 ) R ζναν άλλον αρικμό Χ'

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

3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ

3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ 3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ 1 2 3 4 5 6 7 Παραπάνω φαίνεται θ χαρακτθριςτικι καμπφλθ μετάβαςθσ δυναμικοφ (voltage transfer characteristic) για ζναν αντιςτροφζα,

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

Internet a jeho role v našem životě Το Διαδίκτυο και ο ρόλοσ του ςτθ ηωι μασ

Internet a jeho role v našem životě Το Διαδίκτυο και ο ρόλοσ του ςτθ ηωι μασ Internet a jeho role v našem životě Το Διαδίκτυο και ο ρόλοσ του ςτθ ηωι μασ Διαδίκτυο: μια πόρτα ςτον κόςμο Πϊσ μπορεί κανείσ ςε λίγα λεπτά να μάκει ποιεσ ταινίεσ παίηονται ςτουσ κινθματογράφουσ, να ςτείλει

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

Θεςιακά ςυςτιματα αρίκμθςθσ

Θεςιακά ςυςτιματα αρίκμθςθσ Θεςιακά ςυςτιματα αρίκμθςθσ Δρ. Χρήστος Ηλιούδης αρικμθτικό ςφςτθμα αρίκμθςθσ (Number System) Αξία (value) παράςταςθ Οι αξίεσ (π.χ. το βάροσ μιασ ποςότθτασ μιλων) μποροφν να παραςτακοφν με πολλοφσ τρόπουσ

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

Πωσ δθμιουργώ φακζλουσ;

Πωσ δθμιουργώ φακζλουσ; Πωσ δθμιουργώ φακζλουσ; Για να μπορζςετε να δθμιουργιςετε φακζλουσ ςτο χαρτοφυλάκιό ςασ ςτο Mahara κα πρζπει να μπείτε ςτο ςφςτθμα αφοφ πατιςετε πάνω ςτο ςφνδεςμο Mahara profiles από οποιοδιποτε ςελίδα

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

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

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

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

ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ

ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ ΦΥΣΙΚΗ vs ΒΙΟΛΟΓΙΑ ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ «Προτείνω να αναπτφξουμε πρώτα αυτό που κα μποροφςε να ζχει τον τίτλο: «ιδζεσ ενόσ απλοϊκοφ φυςικοφ για τουσ οργανιςμοφσ». Κοντολογίσ, τισ ιδζεσ που κα μποροφςαν

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

Σφντομεσ Οδθγίεσ Χριςθσ

Σφντομεσ Οδθγίεσ Χριςθσ Σφντομεσ Οδθγίεσ Χριςθσ Περιεχόμενα 1. Επαφζσ... 3 2. Ημερολόγιο Επιςκζψεων... 4 3. Εκκρεμότθτεσ... 5 4. Οικονομικά... 6 5. Το 4doctors ςτο κινθτό ςου... 8 6. Υποςτιριξθ... 8 2 1. Επαφζσ Στισ «Επαφζσ»

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

Ψθφιακά Ηλεκτρονικά. Ενότθτα 7 : Ελαχιςτοποίθςθ και κωδικοποίθςθ καταςτάςεων Φϊτιοσ Βαρτηιϊτθσ

Ψθφιακά Ηλεκτρονικά. Ενότθτα 7 : Ελαχιςτοποίθςθ και κωδικοποίθςθ καταςτάςεων Φϊτιοσ Βαρτηιϊτθσ Ελλθνικι Δθμοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Ψθφιακά Ηλεκτρονικά Ενότθτα 7 : Ελαχιςτοποίθςθ και κωδικοποίθςθ καταςτάςεων Φϊτιοσ Βαρτηιϊτθσ 1 Ανοιχτά Ακαδημαϊκά Μαθήματα ςτο ΤΕΙ Ηπείρου Τμιμα

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

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1 Πολυπλέκτες Ο πολυπλζκτθσ (multipleer - ) είναι ζνα ςυνδυαςτικό κφκλωμα που επιλζγει δυαδικι πλθροφορία μιασ από πολλζσ γραμμζσ ειςόδου και τθν κατευκφνει ςε μια και μοναδικι γραμμι εξόδου. Η επιλογι μιασ

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

Facebook Μία ειςαγωγι

Facebook Μία ειςαγωγι Facebook Μία ειςαγωγι Κοινωνικά δίκτυα Κοινωνικι δικτφωςθ ονομάηεται θ δθμιουργία ομάδων από ανκρϊπουσ με κοινά χαρακτθριςτικά (πχ γείτονεσ, ςυμμακθτζσ). Ενϊ τα κοινωνικά δίκτυα αναπτφςςονται μεταξφ προςϊπων

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

Μετατροπι Αναλογικοφ Σιματοσ ςε Ψθφιακό. Διάλεξθ 10

Μετατροπι Αναλογικοφ Σιματοσ ςε Ψθφιακό. Διάλεξθ 10 Μετατροπι Αναλογικοφ Σιματοσ ςε Ψθφιακό Διάλεξθ 10 Γενικό Σχιμα Μετατροπζασ Αναλογικοφ ςε Ψθφιακό Ψθφιακό Τθλεπικοινωνιακό Κανάλι Μετατροπζασ Ψθφιακοφ ςε Αναλογικό Τα αναλογικά ςιματα μετατρζπονται ςε

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

Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων

Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων Πίνακεσ Διζγερςησ των FF Όπωσ είδαμε κατά τθ μελζτθ των FF, οι χαρακτθριςτικοί πίνακεσ δίνουν τθν τιμι τθσ επόμενθσ κατάςταςθσ κάκε FF ωσ ςυνάρτθςθ τθσ παροφςασ

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

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format. Virtualization Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format. Το virtualization πρόκειται για μια τεχνολογία, θ οποία επιτρζπει το διαχωριςμό

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

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ Αρχείο (File) Φάκελοσ (Folder) Διαχειριςτισ Αρχείων (File Manager) Τφποι Αρχείων Σε τι εξυπθρετεί θ οργάνωςθ των εργαςιϊν μασ ςτουσ υπολογιςτζσ; Πϊσ κα οργανϊςουμε

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

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8 Δείκτεσ Διαχείριςθ Μνιμθσ Βαγγζλθσ Οικονόμου Διάλεξθ 8 Δείκτεσ Κάκε μεταβλθτι ςχετίηεται με μία κζςθ ςτθν κφρια μνιμθ του υπολογιςτι. Κάκε κζςθ ςτθ μνιμθ ζχει τθ δικι τθσ ξεχωριςτι διεφκυνςθ. Με άμεςθ

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

ΕΝΟΤΗΤΑ 3: Χριςθ εργαλείων ζκφραςθσ, επικοινωνίασ, ανακάλυψθσ και δθμιουργίασ. ΚΕΦΑΛΑΙΟ 7: Υπθρεςίεσ Αναηιτθςθσ ςτον Παγκόςμιο Ιςτό

ΕΝΟΤΗΤΑ 3: Χριςθ εργαλείων ζκφραςθσ, επικοινωνίασ, ανακάλυψθσ και δθμιουργίασ. ΚΕΦΑΛΑΙΟ 7: Υπθρεςίεσ Αναηιτθςθσ ςτον Παγκόςμιο Ιςτό ΕΝΟΤΗΤΑ 3: Χριςθ εργαλείων ζκφραςθσ, επικοινωνίασ, ΚΕΦΑΛΑΙΟ 7: Υπθρεςίεσ Αναηιτθςθσ ςτον Παγκόςμιο Ιςτό Αναηιτθςθ πλθροφοριϊν, Διεφκυνςθ Ιςτοςελίδασ (URL), κεματικοί Κατάλογοι, Λζξεισ Κλειδιά, Μθχανζσ

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

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν Τι είναι θ Γραμμι Εντολϊν (1/6) Στουσ πρϊτουσ υπολογιςτζσ, και κυρίωσ από τθ δεκαετία του 60 και μετά, θ αλλθλεπίδραςθ του χριςτθ με τουσ

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

ελ. 11/235, Περιεχόμενα Φακζλου "Σεχνικι Προςφορά"

ελ. 11/235, Περιεχόμενα Φακζλου Σεχνικι Προςφορά υντάκτθσ : Ευάγγελοσ Κρζτςιμοσ χόλιο: ΠΑΡΑΣΗΡΗΗ 1 ελ. 11/235, Περιεχόμενα Φακζλου "Σεχνικι Προςφορά" Για τθν αποφυγι μεγάλου όγκου προςφοράσ και για τθ διευκόλυνςθ του ζργου τθσ επιτροπισ προτείνεται τα

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

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

ΠΟΛΤΣΕΧΝΕΙΟ ΚΡΗΣΗ ΣΜΗΜΑ ΗΛΕΚΣΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΣΡΟΝΙΚΩΝ ΤΠΟΛΟΓΙΣΩΝ ΠΟΛΤΣΕΧΝΕΙΟ ΚΡΗΣΗ ΣΜΗΜΑ ΗΛΕΚΣΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΣΡΟΝΙΚΩΝ ΤΠΟΛΟΓΙΣΩΝ ΣΟΜΕΑ ΗΛΕΚΣΡΟΝΙΚΗ ΚΑΙ ΑΡΧΙΣΕΚΣΟΝΙΚΗ ΤΠΟΛΟΓΙΣΩΝ Τλοποίηςη ςε αναδιαταςςόμενη λογική των πινάκων ουράνιου τόξου (rainbow

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

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ Ω ΕΝΙΑΙΟ ΤΣΗΜΑ. ΚΕΦΑΛΑΙΟ 2: Σο Εςωτερικό του Τπολογιςτι

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ Ω ΕΝΙΑΙΟ ΤΣΗΜΑ. ΚΕΦΑΛΑΙΟ 2: Σο Εςωτερικό του Τπολογιςτι ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ ΚΕΦΑΛΑΙΟ 2: Σο Εςωτερικό του Τπολογιςτι 2.1 Ο Προςωπικόσ Υπολογιςτήσ εςωτερικά Σροφοδοτικό, Μθτρικι πλακζτα (Motherboard), Κεντρικι Μονάδα Επεξεργαςίασ (CPU), Κφρια Μνιμθ

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

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό Βαγγζλθσ Οικονόμου Περιεχόμενα Πλθροφορίεσ Μακιματοσ Δομθμζνοσ Προγραμματιςμόσ (Οριςμοί, Γενικζσ Ζννοιεσ) Αλγόρικμοι και Ψευδοκϊδικασ Γλϊςςα προγραμματιςμοφ C Πλθροφορίεσ

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

Λαμβάνοντασ υπόψη ότι κατά την πρόςθεςη δφο δυαδικϊν ψηφίων ιςχφει: Κρατοφμενο

Λαμβάνοντασ υπόψη ότι κατά την πρόςθεςη δφο δυαδικϊν ψηφίων ιςχφει: Κρατοφμενο Αριθμητικά κυκλώματα Ημιαθροιστής (Half Adder) Ο ημιαθροιςτήσ είναι ζνα κφκλωμα το οποίο προςθζτει δφο δυαδικά ψηφία (bits) και δίνει ωσ αποτζλεςμα το άθροιςμά τουσ και το κρατοφμενο. Με βάςη αυτή την

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

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Ιοφνιοσ 2013 Περιεχόμενα: Ειςαγωγή... 3 1.Εθνικό Τυπογραφείο... 3 1.1. Είςοδοσ... 3 1.2. Αρχική Οθόνη... 4 1.3. Διεκπεραίωςη αίτηςησ...

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

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7) Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων (v.1.0.7) 1 Περίληψη Το ςυγκεκριμζνο εγχειρίδιο δθμιουργικθκε για να βοθκιςει τθν κατανόθςθ τθσ διαδικαςίασ διαχείριςθσ ςτθλών βιβλίου Εςόδων - Εξόδων.

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

Δίκτυα Μεταγωγισ Δεδομζνων

Δίκτυα Μεταγωγισ Δεδομζνων Δίκτυα Μεταγωγισ Δεδομζνων Χ.25 (1/9): Πρόκειται για ζνα πρωτόκολλο τθσ ITU για δίκτυα WAN, το οποίο κακορίηει πωσ ςυνδζονται οι ςυςκευζσ του χριςτθ και του δικτφου. Είναι ανεξάρτθτο από τον τφπο των ςυςτθμάτων

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

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε)

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε) ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε) Γραφικό Περιβάλλον Επικοινωνίασ Περιβάλλον Εντολϊν Γραμμισ (Graphical User Interface/GUI), (Command Line Interface),

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

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα Αυτζσ οι οδθγίεσ ζχουν ςτόχο λοιπόν να βοθκιςουν τουσ εκπαιδευτικοφσ να καταςκευάςουν τισ δικζσ τουσ δραςτθριότθτεσ με το μοντζλο του Άβακα. Παρουςίαςη

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

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

ΕΡΓΑΣΗΡΙΟ ΕΦΑΡΜΟΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ Στο εργαςτιριο αυτό κα δοφμε πωσ μποροφμε να προςομοιϊςουμε μια κίνθςθ χωρίσ τθ χριςθ εξειδικευμζνων εργαλείων, παρά μόνο μζςω ενόσ προγράμματοσ λογιςτικϊν φφλλων, όπωσ είναι το Calc και το Excel. Τα δφο

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

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Πάτρα, 2013 Περιεχόμενα: Ειςαγωγή... 4 1. Επιμελητήριο... Error! Bookmark not defined. 1.1 Διαχειριςτήσ Αιτήςεων Επιμελητηρίου...

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

ΤΙΤΛΟΣ: "SWITCH-ΠΩ ΝΑ ΚΑΣΑΦΕΡΕΙ ΣΗΝ ΑΛΛΑΓΗ ΟΣΑΝ Η ΑΛΛΑΓΗ ΕΙΝΑΙ ΔΤΚΟΛΗ" Σσγγραφείς: Chip Heath & Dan Heath. Εκδόζεις: Κσριάκος Παπαδόποσλος/ΕΕΔΕ

ΤΙΤΛΟΣ: SWITCH-ΠΩ ΝΑ ΚΑΣΑΦΕΡΕΙ ΣΗΝ ΑΛΛΑΓΗ ΟΣΑΝ Η ΑΛΛΑΓΗ ΕΙΝΑΙ ΔΤΚΟΛΗ Σσγγραφείς: Chip Heath & Dan Heath. Εκδόζεις: Κσριάκος Παπαδόποσλος/ΕΕΔΕ ΤΙΤΛΟΣ: "SWITCH-ΠΩ ΝΑ ΚΑΣΑΦΕΡΕΙ ΣΗΝ ΑΛΛΑΓΗ ΟΣΑΝ Η ΑΛΛΑΓΗ ΕΙΝΑΙ ΔΤΚΟΛΗ" Σσγγραφείς: Chip Heath & Dan Heath Εκδόζεις: Κσριάκος Παπαδόποσλος/ΕΕΔΕ www.dimitrazervaki.com Περιεχόμενα ΣΡΕΙ ΑΝΑΠΑΝΣΕΧΕ ΔΙΑΠΙΣΩΕΙ

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

Ιδιότθτεσ πεδίων Γενικζσ.

Ιδιότθτεσ πεδίων Γενικζσ. Οι ιδιότθτεσ των πεδίων διαφζρουν ανάλογα με τον τφπο δεδομζνων που επιλζγουμε. Ορίηονται ςτο κάτω μζροσ του παρακφρου ςχεδίαςθσ του πίνακα, ςτθν καρτζλα Γενικζσ. Ιδιότθτα: Μζγεκοσ πεδίου (Field size)

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

Διαχείριςη Αριθμοδεικτών (v.1.0.7)

Διαχείριςη Αριθμοδεικτών (v.1.0.7) Διαχείριςη Αριθμοδεικτών (v.1.0.7) Περιεχόμενα 1. Μενοφ... 5 1.1 Αρικμοδείκτεσ.... 5 1.1.1 Δθμιουργία Αρικμοδείκτθ... 6 1.1.2 Αντιγραφι Αρικμοδείκτθ... 11 2. Παράμετροι... 12 2.1.1 Κατθγορίεσ Αρικμοδεικτϊν...

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

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

Διαχείριςθ του φακζλου public_html ςτο ΠΣΔ Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ Οι παρακάτω οδθγίεσ αφοροφν το χριςτθ webdipe. Για διαφορετικό λογαριαςμό χρθςιμοποιιςτε κάκε φορά το αντίςτοιχο όνομα χριςτθ. = πατάμε αριςτερό κλικ ςτο Επιςκεφκείτε

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

Καλϊσ Θλκατε ςτο νζο μασ site & e-shop Livardas.gr.

Καλϊσ Θλκατε ςτο νζο μασ site & e-shop Livardas.gr. Καλϊσ Θλκατε ςτο νζο μασ site & e-shop Livardas.gr. Εικόνα 1: Είςοδοσ ςτο e-shop Για να καταχωριςετε παραγγελία ι να βλζπετε τιμζσ & διακεςιμότθτα προϊόντων το πρϊτο βιμα που πρζπει να κάνετε είναι να

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

Η θεωρία τησ ςτατιςτικήσ ςε ερωτήςεισ-απαντήςεισ Μέροσ 1 ον (έωσ ομαδοποίηςη δεδομένων)

Η θεωρία τησ ςτατιςτικήσ ςε ερωτήςεισ-απαντήςεισ Μέροσ 1 ον (έωσ ομαδοποίηςη δεδομένων) 1)Πώσ ορύζεται η Στατιςτικό επιςτόμη; Στατιςτικι είναι ζνα ςφνολο αρχϊν και μεκοδολογιϊν για: το ςχεδιαςμό τθσ διαδικαςίασ ςυλλογισ δεδομζνων τθ ςυνοπτικι και αποτελεςματικι παρουςίαςι τουσ τθν ανάλυςθ

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

Ενδεικτικζσ Λφςεισ Θεμάτων

Ενδεικτικζσ Λφςεισ Θεμάτων c AM (t) x(t) ΤΕΙ Σερρών Τμήμα Πληροφορικής & Επικοινωνιών Σειρά Β Ειςηγητήσ: Δρ Απόςτολοσ Γεωργιάδησ ΕΠΙΚΟΙΝΩΝΙΕΣ Ι Ενδεικτικζσ Λφςεισ Θεμάτων Θζμα 1 ο (1 μον.) Ζςτω περιοδικό ςιμα πλθροφορίασ με περίοδο.

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν Παράλλθλεσ Διεργαςίεσ (1/5) Δφο διεργαςίεσ λζγονται «παράλλθλεσ» (concurrent) όταν υπάρχει ταυτοχρονιςμόσ, δθλαδι οι εκτελζςεισ τουσ επικαλφπτονται

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

Slide 1. Εισαγωγή στη ψυχρομετρία

Slide 1. Εισαγωγή στη ψυχρομετρία Slide 1 Εισαγωγή στη ψυχρομετρία 1 Slide 2 Σφντομη ειςαγωγή ςτη ψυχρομετρία. Διάγραμμα Mollier (πίεςησ-ενθαλπίασ P-H) Σο διάγραμμα Mollier είναι μία γραφικι παράςταςθ ςε ζναν άξονα ςυντεταγμζνων γραμμϊν

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

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox 03 05 ΙΛΤΔΑ ΠΛΗΡΟΦΟΡΙΚΗ Α.Ε. αρμά Ιηαμπζλλα Βαρλάμθσ Νίκοσ Ειςαγωγι... 1 Σι είναι το Databox...... 1 Πότε ανανεϊνεται...... 1 Μπορεί να εφαρμοςτεί

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

ΑΤΣΟΝΟΜΟΙ ΠΡΑΚΣΟΡΕ ΕΡΓΑΙΑ ΕΞΑΜΗΝΟΤ HEARTSTONE ΑΛΕΞΑΝΔΡΟ ΛΟΤΚΟΠΟΤΛΟ ΑΜ:

ΑΤΣΟΝΟΜΟΙ ΠΡΑΚΣΟΡΕ ΕΡΓΑΙΑ ΕΞΑΜΗΝΟΤ HEARTSTONE ΑΛΕΞΑΝΔΡΟ ΛΟΤΚΟΠΟΤΛΟ ΑΜ: ΑΤΣΟΝΟΜΟΙ ΠΡΑΚΣΟΡΕ ΕΡΓΑΙΑ ΕΞΑΜΗΝΟΤ HEARTSTONE ΑΛΕΞΑΝΔΡΟ ΛΟΤΚΟΠΟΤΛΟ ΑΜ: 2008030075 ΕΙΑΓΩΓΗ Το Heartstone είναι ζνα ψθφιακό παιχνίδι καρτϊν που διεξάγιεται πάνω ςτο Battle.net, ζναν διακομιςτι τθσ εταιρίασ

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

Μάρκετινγκ V Κοινωνικό Μάρκετινγκ. Πόπη Σουρμαΐδου. Σεμινάριο: Αναπτφςςοντασ μια κοινωνική επιχείρηςη

Μάρκετινγκ V Κοινωνικό Μάρκετινγκ. Πόπη Σουρμαΐδου. Σεμινάριο: Αναπτφςςοντασ μια κοινωνική επιχείρηςη Μάρκετινγκ V Κοινωνικό Μάρκετινγκ Πόπη Σουρμαΐδου Σεμινάριο: Αναπτφςςοντασ μια κοινωνική επιχείρηςη Σφνοψη Τι είναι το Marketing (βαςικι ειςαγωγι, swot ανάλυςθ, τα παλιά 4P) Τι είναι το Marketing Plan

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

Βάςεισ Δεδομζνων Ι. Ενότητα 12: Κανονικοποίηςη. Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ

Βάςεισ Δεδομζνων Ι. Ενότητα 12: Κανονικοποίηςη. Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ Βάςεισ Δεδομζνων Ι Ενότητα 12: Κανονικοποίηςη Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ Άδειεσ Χρήςησ Το παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χριςθσ Creative Commons. Για εκπαιδευτικό

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

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες) Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες) Ιούνιοσ 2013 Περιεχόμενα: Ειςαγωγή... 3 1. Περιφζρεια... 3 1.1 Διαχειριςτήσ Αιτήςεων Περιφζρειασ... 3 1.1.1. Είςοδοσ... 3 1.1.2. Αρχική

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

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων Ιςοηυγιςμζνα δζντρα και Β- δζντρα Δομζσ Δεδομζνων Περιεχόμενα Ιςοηυγιςμζνα δζντρα Μζκοδοι ιςοηφγιςθσ δζντρων Μονι Περιςτροφι Διπλι Περιςτροφι Β - δζντρα Ιςοηυγιςμζνα δζντρα Η μορφι ενόσ δυαδικοφ δζντρου

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

Σφςτημα Κεντρικήσ Υποςτήριξησ τησ Πρακτικήσ Άςκηςησ Φοιτητών ΑΕΙ

Σφςτημα Κεντρικήσ Υποςτήριξησ τησ Πρακτικήσ Άςκηςησ Φοιτητών ΑΕΙ Σφςτημα Κεντρικήσ Υποςτήριξησ τησ Πρακτικήσ Άςκηςησ Φοιτητών ΑΕΙ Οδηγόσ Χρήςησ Εφαρμογήσ Φορζων Υποδοχήσ Πρακτικήσ Άςκηςησ Αφοφ πιςτοποιθκεί ο λογαριαςμόσ που δθμιουργιςατε ςτο πρόγραμμα «Άτλασ» ωσ Φορζασ

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

ΠΟΛΤΣΕΥΝΕΙΟ ΚΡΗΣΗ Σμήμα Ηλεκτπονικών Μησανικών & Μησανικών Τπολογιστών

ΠΟΛΤΣΕΥΝΕΙΟ ΚΡΗΣΗ Σμήμα Ηλεκτπονικών Μησανικών & Μησανικών Τπολογιστών ΠΟΛΤΣΕΥΝΕΙΟ ΚΡΗΣΗ Σμήμα Ηλεκτπονικών Μησανικών & Μησανικών Τπολογιστών ΔIΠΛΩΜΑΣΙΚΗ ΕΡΓΑΙΑ Κπςπτογπαυική ανάλςση των αλγοπίθμων LM hash, MD5 και SHA-1 με σπήση πινάκων οςπάνιος τόξος σε απσιτεκτονική CUDA

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

Μάκθςθ Κατανομϊν Πικανότθτασ και Ομαδοποίθςθ

Μάκθςθ Κατανομϊν Πικανότθτασ και Ομαδοποίθςθ Μάκθςθ Κατανομϊν Πικανότθτασ και Ομαδοποίθςθ Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ 1 Μάκθςθ κατανομισ πικανότθτασ Σε όλθ τθν ανάλυςθ μζχρι τϊρα ζγινε ςιωπθρά θ παραδοχι ότι γνωρίηουμε

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

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ Για τθν ανάδειξθ του κζματοσ κα λφνουμε κάποια προβλιματα

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

Περιεχόμενα. χολι Χοροφ Αντιγόνθ Βοφτου - Πολιτικι Διαχείριςθσ Cookie 1

Περιεχόμενα. χολι Χοροφ Αντιγόνθ Βοφτου - Πολιτικι Διαχείριςθσ Cookie 1 Περιεχόμενα Περιεχόμενα... 1 1. Ειςαγωγή... 2 1.1 Σχετικά... 2 2. Γενικέσ Πληροφορίεσ για τα Cookies... 2 2.1 Οριςμόσ... 2 2.2 Χρήςη... 3 2.3 Τφποι... 3 2.4 Έλεγχοσ... 3 3. Cookies Σχολήσ... 4 3.1 Ειςαγωγή...

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

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο κεφάλαιο 8 τριγωνομετρία Α βαςικζσ ζννοιεσ τθν τριγωνομετρία χρθςιμοποιοφμε τουσ τριγωνομετρικοφσ αρικμοφσ, οι οποίοι ορίηονται ωσ εξισ: θμω = απζναντι κάκετθ πλευρά υποτείνουςα Γ ςυνω = εφω = προςκείμενθ

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

Aux.Magazine Μπιλμπάο, Βιηκάγια, Ιςπανία www.auxmagazine.com Προςωπικά δεδομζνα

Aux.Magazine Μπιλμπάο, Βιηκάγια, Ιςπανία www.auxmagazine.com Προςωπικά δεδομζνα Προςωπικά δεδομζνα Η Λείρ Ναγιάλα, θ Σίλβια Αντρζσ, θ Χουάνα Γκαλβάν και θ Γερμάν Καςτανζντα δθμιοφργθςαν τθ δικι τουσ εταιρία, τθν AUXILIARTE FACTORIA το 2004. Ζχοντασ και ςυνειδθτοποίθςαν ότι μοιράηονταν

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

Δείκτεσ απόδοςθσ υλικών

Δείκτεσ απόδοςθσ υλικών Δείκτεσ απόδοςθσ υλικών Κάκε ςυνδυαςμόσ λειτουργίασ, περιοριςμϊν και ςτόχων, οδθγεί ςε ζνα μζτρο τθσ απόδοςθσ τθσ λειτουργίασ του εξαρτιματοσ και περιζχει μια ομάδα ιδιοτιτων των υλικϊν. Αυτι θ ομάδα των

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

Πλαγιογώνια Συςτήματα Συντεταγμζνων Γιϊργοσ Καςαπίδθσ

Πλαγιογώνια Συςτήματα Συντεταγμζνων Γιϊργοσ Καςαπίδθσ Πρόλογοσ το άρκρο αυτό κα δοφμε πωσ διαμορφϊνονται κάποιεσ ζννοιεσ όπωσ το εςωτερικό γινόμενο διανυςμάτων, οι ςυνκικεσ κακετότθτασ και παραλλθλίασ διανυςμάτων και ευκειϊν, ο ςυντελεςτισ διευκφνςεωσ διανφςματοσ

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

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

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

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

Εργαςτιριο Βάςεων Δεδομζνων

Εργαςτιριο Βάςεων Δεδομζνων Εργαςτιριο Βάςεων Δεδομζνων 2010-2011 Μάθημα 1 ο 1 Ε. Σςαμούρα Σμήμα Πληροφορικήσ ΑΠΘ Σκοπόσ του 1 ου εργαςτθριακοφ μακιματοσ Σκοπόσ του πρϊτου εργαςτθριακοφ μακιματοσ είναι να μελετιςουμε ερωτιματα επιλογισ

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

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου Ενότητα 1β: Ισότητα - Εξίσωση ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΥΠΗΡΕΣΙΑ ΑΝΑΠΤΥΞΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου Ενότητα 1β: Ισότητα - Εξίσωση Συγγραφή:

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν Τπόβακρο (1/3) τουσ παλαιότερουσ υπολογιςτζσ θ Κεντρικι Μονάδα Επεξεργαςίασ (Κ.Μ.Ε.) μποροφςε κάκε ςτιγμι να εκτελεί μόνο ζνα πρόγραμμα τουσ ςφγχρονουσ

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

ΕΝΟΤΘΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΘ. ΚΕΦΑΛΑΙΟ 8: Πειρατεία Λογιςμικοφ

ΕΝΟΤΘΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΘ. ΚΕΦΑΛΑΙΟ 8: Πειρατεία Λογιςμικοφ ΕΝΟΤΘΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΘ ΚΕΦΑΛΑΙΟ 8: Πειρατεία Λογιςμικοφ Άδεια χριςθσ, Πειρατεία Λογιςμικοφ, Πιςτοποιθτικό Αυκεντικότθτασ, Δωρεάν Λογιςμικό (Freeware), Λογιςμικό Ανοικτοφ Κϊδικα (Open source)

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

Ακολουκιακά Λογικά Κυκλώματα

Ακολουκιακά Λογικά Κυκλώματα Ακολουκιακά Λογικά Κυκλώματα Τα ψθφιακά λογικά κυκλϊματα που μελετιςαμε μζχρι τϊρα ιταν ςυνδυαςτικά κυκλϊματα. Στα ςυνδυαςτικά κυκλϊματα οι ζξοδοι ςε κάκε χρονικι ςτιγμι εξαρτϊνται αποκλειςτικά και μόνο

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

Αςφάλεια και Προςταςία Δεδομζνων

Αςφάλεια και Προςταςία Δεδομζνων Αςφάλεια και Προςταςία Δεδομζνων Μοντζλα Αςφάλειασ Σςιρόπουλοσ Γεϊργιοσ ΣΙΡΟΠΟΤΛΟ ΓΕΩΡΓΙΟ 1 Μοντζλα Αςφάλειασ Οι μθχανιςμοί που είναι απαραίτθτοι για τθν επιβολι μιασ πολιτικισ αςφάλειασ ςυμμορφϊνονται

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

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ Κεφάλαιο 8 Η γλϊςςα Pascal Παράγραφοσ 8.2 Βαςικοί τφποι δεδομζνων Σα δεδομζνα ενόσ προγράμματοσ μπορεί να: είναι αποκθκευμζνα εςωτερικά ςτθν μνιμθ είναι αποκθκευμζνα εξωτερικά

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

ΧΕΔΙΑΜΟ ΠΡΟΪΟΝΣΩΝ ΜΕ Η/Τ

ΧΕΔΙΑΜΟ ΠΡΟΪΟΝΣΩΝ ΜΕ Η/Τ ΧΕΔΙΑΜΟ ΠΡΟΪΟΝΣΩΝ ΜΕ Η/Τ ΚΑΜΠΤΛΕ ΕΛΕΤΘΕΡΗ ΜΟΡΦΗ Χριςιμεσ για τθν περιγραφι ομαλών και ελεφκερων ςχθμάτων Αμάξωμα αυτοκινιτου, πτερφγια αεροςκαφών, ςκελετόσ πλοίου χιματα χαρακτιρων κινουμζνων ςχεδίων Περιγραφι

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΗ. του ΙΑΣΡΟΦΑΡΜΑΚΕΤΣΙΚΟΤ ΦΑΚΕΛΟΤ ΑΘΕΝΩΝ Για τον ΟΙΚΟ ΝΑΤΣΟΤ ΕΡΓΑΣΗΡΙΑΚΟΙ ΓΙΑΣΡΟΙ. iknowhow Πληροφορική A.E

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΗ. του ΙΑΣΡΟΦΑΡΜΑΚΕΤΣΙΚΟΤ ΦΑΚΕΛΟΤ ΑΘΕΝΩΝ Για τον ΟΙΚΟ ΝΑΤΣΟΤ ΕΡΓΑΣΗΡΙΑΚΟΙ ΓΙΑΣΡΟΙ. iknowhow Πληροφορική A.E ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΗ του ΙΑΣΡΟΦΑΡΜΑΚΕΤΣΙΚΟΤ ΦΑΚΕΛΟΤ ΑΘΕΝΩΝ Για τον ΟΙΚΟ ΝΑΤΣΟΤ ΕΡΓΑΣΗΡΙΑΚΟΙ ΓΙΑΣΡΟΙ iknowhow Πληροφορική A.E ΕΡΓΑΣΗΡΙΑΚΟΙ ΓΙΑΣΡΟΙ... 3 Η ΕΦΑΡΜΟΓΗ... 3 ΧΡΗΣΕ... 3 ΠΡΟΒΑΗ ΣΗΝ ΕΦΑΡΜΟΓΗ... 3 ΑΡΧΙΚΗ

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

Τεχνικι Παρουςιάςεων με PowerPoint

Τεχνικι Παρουςιάςεων με PowerPoint Τεχνικι Παρουςιάςεων με PowerPoint Δρ. Παφλοσ Θεοδϊρου Ανϊτατθ Εκκλθςιαςτικι Ακαδθμία Ηρακλείου Κριτθσ Περιεχόμενα Ειςαγωγι Γιατί πρζπει να γίνει παρουςίαςθ τθσ εργαςίασ μου Βαςικι προετοιμαςία Δομι παρουςίαςθσ

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

Αυτόματη δημιουργία στηλών Αντιστοίχηση νέων λογαριασμών ΦΠΑ

Αυτόματη δημιουργία στηλών Αντιστοίχηση νέων λογαριασμών ΦΠΑ Αυτόματη δημιουργία στηλών Αντιστοίχηση νέων λογαριασμών ΦΠΑ 1 Περίληψη Το ςυγκεκριμζνο εγχειρίδιο δημιουργήθηκε για να βοηθήςει την κατανόηςη τησ διαδικαςίασ αυτόματησ δημιουργίασ ςτηλών και αντιςτοίχιςησ

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

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

ΑΔΡΑΝΕΙΑ ΜΑΘΗΣΕ: ΜΑΡΙΑΝΝΑ ΠΑΡΑΘΤΡΑ ΑΝΑΣΑΗ ΠΟΤΛΙΟ ΠΑΝΑΓΙΩΣΗ ΠΡΟΔΡΟΜΟΤ ΑΝΑΣΑΙΑ ΠΟΛΤΧΡΟΝΙΑΔΟΤ ΙΩΑΝΝΑ ΠΕΝΓΚΟΤ ΑΔΡΑΝΕΙΑ ΜΑΘΗΣΕ: ΜΑΡΙΑΝΝΑ ΠΑΡΑΘΤΡΑ ΑΝΑΣΑΗ ΠΟΤΛΙΟ ΠΑΝΑΓΙΩΣΗ ΠΡΟΔΡΟΜΟΤ ΑΝΑΣΑΙΑ ΠΟΛΤΧΡΟΝΙΑΔΟΤ ΙΩΑΝΝΑ ΠΕΝΓΚΟΤ Οριςμόσ: Με τον όρο αδράνεια ςτθ Φυςικι ονομάηεται θ χαρακτθριςτικι ιδιότθτα των ςωμάτων να αντιςτζκονται

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

Μεθολογία αςκιςεων αραίωςησ και ανάμειξησ διαλυμάτων (με τθν ίδια δ. ουςία).

Μεθολογία αςκιςεων αραίωςησ και ανάμειξησ διαλυμάτων (με τθν ίδια δ. ουςία). Μεθολογία αςκιςεων αραίωςησ και ανάμειξησ διαλυμάτων (με τθν ίδια δ. ουςία). Από τθν τράπεηα κεμάτων Α_ΧΘΜ_0_20651 Διακζτουμε υδατικό διάλυμα (Δ1) KOH 0,1 Μ. α)να υπολογίςετε τθν % w/v περιεκτικότθτα του

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

Συςκευζσ τθλεπικοινωνιϊν και δικτφωςθσ:

Συςκευζσ τθλεπικοινωνιϊν και δικτφωςθσ: Συςκευζσ τθλεπικοινωνιϊν και δικτφωςθσ: Σειριακι Θφρα (1/2): Σειριακι Θφρα Σειριακι (2/2): Σειριακι Θφρα Σειριακι Θφρα (1/2): Σειριακι Θφρα Ακροδζκτεσ Σειριακισ Θφρασ Σειριακι Θφρα Dial Up Mo.dem: Mo.dem:

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

Δομζσ Δεδομζνων Πίνακεσ

Δομζσ Δεδομζνων Πίνακεσ Δομζσ Δεδομζνων Πίνακεσ Διάλεξθ 2 Περιεχόμενα Πίνακεσ: Οριςμοί, Γενικζσ ζννοιεσ Αποκικευςθ πινάκων Ειδικζσ μορφζσ πινάκων Αλγόρικμοι Αναηιτθςθσ Σειριακι Αναηιτθςθ Δυαδικι Αναηιτθςθ Οριςμοί, Γενικζσ ζννοιεσ

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

ΕΝΟΣΘΣΑ 1: ΓΝΩΡIΗΩ ΣΟΝ ΤΠΟΛΟΓΙΣΘ Ω ΕΝΙΑΙΟ ΤΣΘΜΑ. ΚΕΦΑΛΑΙΟ 1: Ψθφιακόσ Κόςμοσ

ΕΝΟΣΘΣΑ 1: ΓΝΩΡIΗΩ ΣΟΝ ΤΠΟΛΟΓΙΣΘ Ω ΕΝΙΑΙΟ ΤΣΘΜΑ. ΚΕΦΑΛΑΙΟ 1: Ψθφιακόσ Κόςμοσ ΕΝΟΣΘΣΑ 1: ΓΝΩΡIΗΩ ΣΟΝ ΤΠΟΛΟΓΙΣΘ Αναλογικόσ (Analogue), Δυαδικό Ψθφίο (Binary digit, bit), Byte, Ψθφιακόσ (Digital), υςτιματα αρίκμθςθσ υχνά λζγεται ότι ηοφμε ςτθν ψθφιακι εποχι. Πολλζσ από τισ ςυςκευζσ

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

Δίκτυα Υπολογιςτϊν 2-Rooftop Networking Project

Δίκτυα Υπολογιςτϊν 2-Rooftop Networking Project Ονοματεπώνυμα και Α.Μ. μελών ομάδασ Κοφινάσ Νίκοσ ΑΜ:2007030111 Πζρροσ Ιωακείμ ΑΜ:2007030085 Site survey Τα κτιρια τθσ επιλογισ μασ αποτελοφν το κτιριο επιςτθμϊν και το κτιριο ςτο οποίο ςτεγάηεται θ λζςχθ

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

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων Δρ. Θεοδώρου Παύλοσ theodorou@uoc.gr Περιεχόμενα Τι είναι οι Βάςεισ Δεδομζνων (DataBases) Τι είναι Σφςτθμα Διαχείριςθσ Βάςεων Δεδομζνων (DBMS) Οι Στόχοι

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

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων Πανελλόνιεσ εξετϊςεισ Γ Τϊξησ 2011 Ανϊπτυξη Εφαρμογών ςε Προγραμματιςτικό Περιβϊλλον ΘΕΜΑ Α Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων Α1. Σ/Λ 1. Σωςτι 2. Σωςτι 3. Λάκοσ 4. Λάκοσ 5. Λάκοσ Α2. Σ/Λ 1. Σωςτι 2.

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

Ερωτιςεισ & απαντιςεισ για τα ξφλινα πνευςτά

Ερωτιςεισ & απαντιςεισ για τα ξφλινα πνευςτά Τα νύλιμα! ΧΟΡΗΓΟΣ Ερωτιςεισ & απαντιςεισ για τα ξφλινα πνευςτά τα ξφλινα! 1. Γιατί τα λζμε ξφλινα πνευςτά; Πνευςτά ονομάηονται τα όργανα ςτα οποία ο ιχοσ παράγεται μζςα ςε ζνα ςωλινα απ όπου περνάει ο

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

Ονοματεπϊνυμο.. ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ

Ονοματεπϊνυμο.. ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ Ονοματεπϊνυμο.. ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΘΕΜΑ 1 Ο Α) Ερωτισεις τφπου ωστοφ-λάκους 1. Κάκε βρόχος Για μπορεί να μετατραπεί σε Όσο 2. Κάκε βρόχος που υλοποιείται με τθν εντολι Όσο...επανάλαβε μπορεί να γραφεί και

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

Εγχειρίδιο Χριςθσ: Εφαρμογι Αιτιςεων για τα Εκπαιδευτικά Προγράμματα του Προςωπικοφ των Επιχειριςεων Τροφίμων

Εγχειρίδιο Χριςθσ: Εφαρμογι Αιτιςεων για τα Εκπαιδευτικά Προγράμματα του Προςωπικοφ των Επιχειριςεων Τροφίμων Εγχειρίδιο Χριςθσ: Εφαρμογι Αιτιςεων για τα Εκπαιδευτικά Προγράμματα του Προςωπικοφ των Επιχειριςεων ΕΚΔΟΣΗ 1.0 Περιεχόμενα Εφαρμογι Αιτιςεων για τα Εκπαιδευτικά Προγράμματα του Προςωπικοφ των Επιχειριςεων...

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

Συγγραφι επιςτθμονικισ εργαςίασ. Η κορφφωςθ τθσ προςπάκειάσ μασ

Συγγραφι επιςτθμονικισ εργαςίασ. Η κορφφωςθ τθσ προςπάκειάσ μασ Συγγραφι επιςτθμονικισ εργαςίασ Η κορφφωςθ τθσ προςπάκειάσ μασ Περίγραμμα Ειςήγηςησ Στάδια υλοποίθςθσ τθσ επιςτθμονικισ εργαςίασ Δομι επιςτθμονικισ / πτυχιακισ εργαςίασ Ζθτιματα ερευνθτικισ και ακαδθμαϊκισ

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

ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΙΣΟΤΣΟ ΚΤΠΡΟΤ Πρόγραμμα Επιμόρυωσης Τποψηυίων Καθηγητών Σεχνολογίας. Ηλεκτρονικά ΙΙ

ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΙΣΟΤΣΟ ΚΤΠΡΟΤ Πρόγραμμα Επιμόρυωσης Τποψηυίων Καθηγητών Σεχνολογίας. Ηλεκτρονικά ΙΙ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΙΣΟΤΣΟ ΚΤΠΡΟΤ Πρόγραμμα Επιμόρυωσης Τποψηυίων Καθηγητών Σεχνολογίας Ηλεκτρονικά ΙΙ Πέμπτη 3/3/2011 Διδάζκων: Γιώργος Χαηζηιωάννοσ Τηλέθωνο: 99653828 Ε-mail: georghios.h@cytanet.com.cy Ώρες

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

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΡΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 7: Ρροςταςία Λογιςμικοφ - Ιοί

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΡΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 7: Ρροςταςία Λογιςμικοφ - Ιοί ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΡΟΛΟΓΙΣΤΗ ΚΕΦΑΛΑΙΟ 7: Ρροςταςία Λογιςμικοφ - Ιοί Ρρόγραμμα-ιόσ (virus), Αντιϊικό πρόγραμμα (antivirus), Αντίγραφα αςφαλείασ (backup), Χάκερ (hacker) Είναι οι αποκθκευμζνεσ

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

ΘΕΜΑ Α /25 (A1)Χαρακτηρίςτε τισ παρακάτω προτάςεισ ωσ (Σ)ωςτζσ ή (Λ)άθοσ

ΘΕΜΑ Α /25 (A1)Χαρακτηρίςτε τισ παρακάτω προτάςεισ ωσ (Σ)ωςτζσ ή (Λ)άθοσ Μάθημα: ΔΙΚΣΤΑ Τάξη Γ Λυκείου, ΕΠΑΛ Καθηγητήσ : ιαφάκασ Γιϊργοσ Ημερομηνία : 21/02/2016 Διάρκεια: 3 ϊρεσ ΘΕΜΑ Α /25 (A1)Χαρακτηρίςτε τισ παρακάτω προτάςεισ ωσ (Σ)ωςτζσ ή (Λ)άθοσ 1. Σο πρωτόκολλο RARP μετατρζπει

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