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

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

Download "Διπλωματική Εργασία. του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΣΧΕΔΙΑΣΜΟΥ ΟΛΟΚΛΗΡΩΜΕΝΩΝ ΚΥΚΛΩΜΑΤΩΝ ΜΕΓΑΛΗΣ ΚΛΙΜΑΚΑΣ (VLSI DESIGN) ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ HΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΣΧΕΔΙΑΣΜΟΥ ΟΛΟΚΛΗΡΩΜΕΝΩΝ ΚΥΚΛΩΜΑΤΩΝ ΜΕΓΑΛΗΣ ΚΛΙΜΑΚΑΣ (VLSI DESIGN) Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Γκίτσα Γεώργιου Αριθμός Μητρώου: 6732 Θέμα Συ-σχεδίαση Υλικού/Λογισμικού και Υλοποίηση σε πλατφόρμα FPGA του πρωτοκόλλου ασφαλείας IPsec για το Internet Protocol version 6 (IPv6) Επιβλέπων: Επίκουρος Καθηγητής Γεώργιος Θεοδωρίδης Αριθμός Διπλωματικής Εργασίας: Πάτρα, 31 Μαρτίου 2014

2

3 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα Συ-σχεδίαση Υλικού/Λογισμικού και Υλοποίηση σε πλατφόρμα FPGA του πρωτοκόλλου ασφαλείας IPsec για το Internet Protocol version 6 (IPv6) του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Γκίτσα Γεώργιου Αριθμός Μητρώου: 6732 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις.../.../... Ο επιβλέπων Θεοδωρίδης Γεώργιος Επίκουρος Καθηγητής Ο Διευθυντής του Τομέα Χούσος Ευθύμιος Καθηγητής

4

5 Eυχαριστίες Θέλω να ευχαριστήσω των επιβλέποντα της διπλωματικής εργασίας, κ. Θεοδωρίδη Γεώργιο και τον διδακτορικό Γιώργο Αθανασίου για την βοήθεια και την καθοδήγησή τους κατά την διάρκεια εκπόνησης αυτής της εργασίας.

6 ii

7 Αριθμός Διπλωματικής Εργασίας: Θέμα: Συ-σχεδίαση Υλικού/Λογισμικού και Υλοποίηση σε πλατφόρμα FPGA του πρωτοκόλλου ασφαλείας IPsec για το Internet Protocol version 6 (IPv6). Φοιτητής: Γκίτσας Γεώργιος, του Χρήστου Επιβλέπων: Δρ.-Μηχ. Θεοδωρίδης Γεώργιος, Επίκουρος Καθηγητής Περίληψη Τις τελευταίες δεκαετίες η ασφάλεια υπολογιστών και δικτύων έχει τραβήξει το ενδιαφέρον τόσο των ερευνητών όσο και της βιομηχανίας. Το ενδιαφέρον αυτό συνεχίζει να αυξάνεται με εκθετικό ρυθμό τα τελευταία χρόνια λόγω των συνεχώς αυξανόμενων επιθέσεων, της συνεχούς μεγέθυνσης των εταιρικών και κυβερνητικών δικτύων καθώς και την ολοένα αυξανόμενη χρήση και αξιοποίηση των υπολογιστικών συστημάτων σε κάθε πτυχή της ανθρώπινης δραστηριότητας. Στο πολύ ενεργό αυτό πεδίο, προκύπτουν συνέχεια νέα προβλήματα και παρουσιάζονται συνεχώς νέες ιδέες για την επίλυσή τους. Μία από τις πιο υποσχόμενες είναι η σουίτα IPsec, η οποία προστατεύει την κίνηση των δικτύων στο επίπεδο IP της στοίβας πρωτοκόλλων του Internet, TCP/IP. Η εφαρμογή του έχει ήδη ξεκινήσει τα τελευταία χρόνια, σε μικρή κλίμακα, αλλά με την μετάβαση που προβλέπεται να γίνει από το IPv4 στο IPv6, η υλοποίηση του IPsec θα είναι υποχρεωτικό να υπάρχει σε κάθε δικτυακό σύστημα με την προοπτική της ενδυνάμωσης της ασφάλειας στο Internet. Ακόμα, η ανάπτυξη υπολογιστικών συστημάτων ειδικών εφαρμογών έχει καταφύγει τα τελευταία χρόνια στην μορφή των ενσωματωμένων συστημάτων (embedded systems). Για την σχεδίαση και πιστοποίηση της ορθής λειτουργίας αυτών των συστημάτων είναι σύνηθες να χρησιμοποιούνται FPGA (Field Programmable Gated Array) chip ενώ η τελική μορφή του συστήματος είναι συνήθως υλοποιημένη σε ASIC (Application Specific Integrated Circuit) διότι δίνει τα πλεονεκτήματα μεγαλύτερης ταχύτητας και μικρότερης κατανάλωσης ενέργειας σε σχέση με τα FPGA. Στην παρούσα διπλωματική εργασία σχεδιάστηκε το πρωτόκολλο IPsec ως ένα ενσωματωμένο σύστημα υλικού-λογισμικού και υλοποιήθηκε στην πλατφόρμα FPGA Virtex 5 της εταιρείας Xilinx. Το ενσωματωμένο σύστημα εμπεριέχει έναν επεξεργαστή Microblaze και επιταγχυντές υλικού (hardware accelerators). Η υλοποίηση έγινε με αποδοτική συσχεδίαση υλικού και λογισμικού ώστε να γίνεται αξιοποίηση των πλεονεκτημάτων και των δύο. Συγκεκριμένα, σε υλικό σχεδιάστηκαν οι, απαιτητικοί σε χρόνο, κρυπτογραφικοί πυρήνες του συστήματος, CBC-AES-128 και HMAC-SHA1-96, ενώ το υπόλοιπο τμήμα του IPsec σχεδιάστηκε σε λογισμικό. Για την σχεδίαση και υλοποίηση του ακολουθήθηκαν οι προδιαγραφές που δίνονται στα αντίστοιχα Data-Sheets και RFCs (Request For Comments) και έγινε προσπάθεια να υλοποιηθεί όσο το δυνατόν μεγαλύτερο μέρος αυτών και με όση το δυνατόν ακρίβεια. Τέλος, έγινε on-chip πιστοποίηση ορθής λειτουργίας του συστήματος στην αναπτυξιακή πλακέτα ML507 (Virtex-5) με σύνδεση της σε ένα δίκτυο υπολογιστών και κρυπτογράφηση/αποκρυπτογράφηση πραγματικών πακέτων δεδομένων. iii

8 iv

9 Title: Hardware/Software CoDesign and FPGA implementation of security protocol IPsec for the Internet Protocol version 6 (IPv6) Undergraduate student: George Gkitsas Supervisor: Dr. George Theodoridis, Ass. Professor Abstract Computer and network security have been of great interest within the research and the industrial community for the last decades. This interest still grows exponentially due to continually growing attacks in number and scale, the growth of corporative and government networks and the increasing use and trust of computer systems in every aspect of life. Many new problems and many new ideas and solutions have occurred in this active field. One of the most promising is the IPsec protocol suite, which protects network traffic in the IP level of the internet protocol stack, TCP/IP. Its usage begun a few years ago, in small scale, but with the foreseeing transition from IPv4 to IPv6, it will be mandatory for every networking system to have an IPsec implementation, with the perspective of strengthening Internet security. Moreover, development of application specific systems turned to embedded system solutions. For the development and verification process of embedded systems, it s usual the usage of FPGA (Field Programmable Gate Array) chips, while the final form of the system is, in most cases, an ASIC (Application Specific Integrated Circuit) system because of the advantages in speed and low power consumption. The current diploma thesis deals with the design and implementation of IPsec protocol suite in the form of a hardware-software embedded system, using the Virtex 5 FPGA platform, product of the company Xilinx. It uses a Microblaze processor and hardware accelerators. The system is designed with hardware/software co-design, utilizing efficiently their advantages. Specifically, the most time consuming cryptographic components, CBC-AES-128 and HMAC- SHA1-96, are implemented in hardware, while the rest of the IPsec is implemented in software. The implementation followed the corresponding Data-Sheets and RFC (Request For Comments) specifications as much as possible in the manner of features and implementation accuracy. Finally, the system was interconnected as part of a computer network and was verified with processing of real packets. v

10 vi

11 vii Περιεχόμενα 1. Εισαγωγή Ενσωματωμένα Συστήματα FPGA s Δίκτυα Υπολογιστών Στοίβα Πρωτοκόλλων Ασφάλεια Δικτύων Κρυπτογραφία Πρωτόκολλα Ασφαλείας Κρυπτογραφικοί Αλγόριθμοι Συμμετρική Κρυπτογράφηση Ασύμμετρη Κρυπτογράφηση Αλγόριθμοι Κατακερματισμού Κατακερματισμός με Κλειδί Γεννήτριες Ψευδοτυχαίων Αριθμών Διαχείριση Κλειδιών (Key Management) Ενδυνάμωση των Αλγορίθμων Επέκταση Δεδομένων - Padding Salt Διανύσματα Αρχικοποίησης Η Σουίτα Ασφαλείας IPsec Γενικά Επεξεργασία εξερχόμενης κίνησης Επεξεργασία εισερχόμενης κίνησης Transport και Tunnel Mode Συσχετίσεις Ασφαλείας( Security Associations SA) Βάση Δεδομένων Πολιτικών Ασφαλείας (Security Policy Database SPD) Το πρωτόκολλο AH (Authentication Header) Επεξεργασία Εξερχομένων Πακέτων Επεξεργασία Εισερχομένων Πακέτων Το πρωτόκολλο ESP (Encapsulation Security Payload) Επεξεργασία Εξερχομένων Πακέτων... 30

12 3.5.2 Επεξεργασία Εισερχομένων Πακέτων Διαχείριση Κλειδιών Γενική Περιγραφή του Συστήματος Απαιτήσεις του Συστήματος Σχεδιαστικές Επιλογές Native Implementation Διαχωρισμός υλικού και λογισμικού Υλικό του Συστήματος (Hardware) Αρχιτεκτονική Custom IP Cores CBC-AES HMAC-SHA Διεπαφή του υλικού (hardware side interface) Λογισμικό (Software) lwip IPsec IPsec AH και ESP SADB και SPD Ενσωμάτωση με το lwip Διεπαφή του λογισμικού (software side interface) Υλοποίηση Συστήματος στο board και On-Chip Έλεγχος Ορθής Λειτουργίας Εργαλεία που χρησιμοποιήθηκαν Xilinx Suite & Modelsim Wireshark Scapy Linux ipsec-tools Τελικό σύστημα και υλοποίηση στο board On-Chip έλεγχος ορθής λειτουργίας Μετρήσεις Δυσκολίες που Αντιμετωπίστηκαν viii

13 9. Βιβλιογραφία Κατάλογος σχημάτων Σχήμα 1.1: Εσωτερική δομή ενός Configurable Logic Block (CLB) του Virtex Σχήμα 1.2: Αριστερά: Η στοίβα OSI, Δεξιά: Η στοίβα TCP/IP Σχήμα 1.3: Μετασχηματισμός του πακέτου... 7 Σχήμα 2.1: Συμμετρική Κρυπτογράφηση Σχήμα 2.2: Κρυπτογράφηση και Αποκρυπτογράφηση με τον CBC Σχήμα 2.3: Κρυπτογράφηση Δημοσίου Κλειδιού Σχήμα 2.4: Πιστοποίηση Δημοσίου Κλειδιού Σχήμα 2.5: Λειτουργία των Αλγορίθμων Κατακερματισμού Σχήμα 2.6: Τρόπος λειτουργίας των αλγορίθμων HMAC Σχήμα 3.1: Η θέση του IPsec στην στοίβα πρωτοκόλλων Σχήμα 3.2: Host-to-Host (Transport Mode) Σχήμα 3.3: Network-to-Host (Tunnel Mode) Σχήμα 3.4: Network-to-Network (Tunnel Mode) Σχήμα 3.5: Διαδικασία Επεξεργασία Εξερχόμενων πακέτων στο IPsec Σχήμα3.6: Διαδικασία Επεξεργασία Εισερχόμενων πακέτων στο IPsec Σχήμα 3.7: Μορφή του πακέτου για AH και ESP Transport Mode Σχήμα 3.8: Μορφή του πακέτου για AH και ESP Tunnel Mode Σχήμα 3.9: Κεφαλίδα του πρωτοκόλλου AH Σχήμα 3.10: Κεφαλίδα του πρωτοκόλλου ESP Σχήμα 5.1: Αρχιτεκτονική του συστήματος Σχήμα 5.2: Αριστερά: Αλγόριθμος κρυπτογράφησης του AES. Δεξιά: Αλγόριθμος αποκρυπτογράφησης του AES Σχήμα 5.3: Block εισόδου, κατάστασης και εξόδου Σχήμα 5.4: Αντίστροφος Πολλαπλασιασμού GF(28)(Multiplicative Inverse GF(28)) Σχήμα 5.5: Ο πίνακας Rcon Σχήμα 5.6: Η πράξη RotWord Σχήμα 5.7: Συμπαγής υλοποίηση των SBOX και InvSBOX Σχήμα 5.8: Κοινή υλοποίηση των SubBytes και InvSubBytes Σχήμα 5.9: Κοινή υλοποίηση των MixColumns και InvMixColumns Σχήμα 5.10: Υλοποίηση της MixOneColumn Σχήμα 5.11: Η μονάδα XTimes Σχήμα 5.12: Η μονάδα XTimes Σχήμα 5.13: Η μονάδα υπολογισμού ενός γύρου του AES-128, AES Round Σχήμα 5.14: Η μονάδα υπολογισμού ενός γύρου του KeyScheduler, KeyScheduleRound Σχήμα 5.15: Υλοποίηση του KeyScheduler για τον AES Σχήμα 5.16: Υλοποίηση του CBC-AES Σχήμα 5.17: FSM του κυκλώματος ελέγχου του CBC-AES Σχήμα 5.18: Ο αλγόριθμος HMAC Σχήμα 5. 19: SHA1 message schedule ix

14 Σχήμα 5.20: Υλοποίηση της μονάδας sha1_core Σχήμα 5.21: Υλοποίηση της μονάδας sha Σχήμα 5.22: sha1 control FSM Σχήμα 5.23: Υλοποίηση της μονάδας hmac_sha1_ Σχήμα 5.24: FSM της μονάδας ελέγχου της hmac_sha1_ Σχήμα 6.1: Διάγραμμα σχεδίασης της βιβλιοθήκης IPsec Σχήμα 6.2: Ενσωμάτωση της επεξεργασίας εισερχομένων πακέτων του IPsec στο lwip Σχήμα 6.3: Ενσωμάτωση της επεξεργασίας εξερχομένων πακέτων του IPsec στο lwip Σχήμα 7.1: Τελικό Σύστημα Σχήμα 7.2: ECHO server σε Transport Mode x

15 ΚΕΦΑΛΑΙΟ 1 Εισαγωγή Περιεχόμενα 1.1 Ενσωματωμένα Συστήματα FPGA s Δίκτυα Υπολογιστών Στοίβα Πρωτοκόλλων Ασφάλεια Δικτύων Ενσωματωμένα Συστήματα Ενσωματωμένο σύστημα είναι ένα σύστημα ειδικού σκοπού το οποίο επιτελεί μια προκαθορισμένη εργασία και έχει ως βασικά χαρακτηριστικά του την ύπαρξη στο βασικό σώμα της αρχιτεκτονικής του ενός τουλάχιστον μικροελεγκτή, το μικρό φυσικό του μέγεθος, το χαμηλό κόστος και την ικανοποίηση διαφόρων ειδών αυστηρών περιορισμών, κυρίως χρονικών. Ο πυρήνας ενός ενσωματωμένου συστήματος αποτελείται από έναν τουλάχιστον μικροεπεξεργαστή ή μικροελεγκτή ο οποίος είναι προγραμματισμένος έτσι ώστε να τρέχει μια συγκεκριμένη software εφαρμογή με την κατάλληλη παραμετροποίηση. Αυτή η «εξειδίκευση» των ενσωματωμένων συστημάτων δίνει τη δυνατότητα στους σχεδιαστές τους να τα βελτιστοποιήσουν έτσι ώστε να ικανοποιούνται οι προδιαγραφές τους, ενώ ταυτόχρονα να υπάρχουν κέρδη σε επίπεδο μεγέθους, κόστους, χρόνου εκτέλεσης ή κατανάλωσης ισχύος. Επίσης πολλές φορές υπάρχουν και οι λεγόμενοι περιορισμοί πραγματικού χρόνου(real time). Η γενική λοιπόν λογική πίσω από αυτά τα συστήματα είναι να εκτελούν σωστά και αποδοτικά την εφαρμογή για την οποία έχουν σχεδιαστεί. Όσον αφορά τώρα τις αρχιτεκτονικές οι οποίες χρησιμοποιούνται στο σχεδιασμό ενσωματωμένων συστημάτων, ενδεικτικά αναφέρεται ότι ορισμένες από αυτές είναι οι: ARM, MIPS, PowerPC, Microblaze και X86. Σήμερα τα ενσωματωμένα συστήματα χρησιμοποιούνται σε κινητά τηλέφωνα, mp3s, πλυντήρια, αυτοκίνητα, βιομηχανικές εφαρμογές κ.α. Η κύρια διαφορά ενός ενσωματωμένου συστήματος με έναν υπολογιστή δεν είναι το μέγεθος, καθώς θα μπορούσε να είναι είτε απλούστερο (ένας μικροεπεξεργαστής με μικρό αριθμό περιφερειακών) είτε πιο πολύπλοκο (ένα πολύ μεγάλο σύστημα ενσωματωμένο σε αεροπλάνο). Αντίθετα η διαφορά έγκειται στο γεγονός ότι κάθε ενσωματωμένο σύστημα είναι σχεδιασμένο για να εκτελεί μια πολύ συγκεκριμένη και προκαθορισμένη εργασία. 1.2 FPGA s Το FPGA (Field Programmable Gate Array) είναι τύπος προγραμματιζόμενου ολοκληρωμένου κυκλώματος γενικής χρήσης το οποίο διαθέτει πληθώρα διασυνδεδεμένων Look-up Tables (LuTs) καθώς επίσης και έναν πολύ μεγάλο αριθμό τυποποιημένων πυλών και άλλων ψηφιακών λειτουργιών όπως απαριθμητές, καταχωρητές μνήμης, γεννήτριες PLL κα. Σε ορισμένα από αυτά ενσωματώνονται και αναλογικές λειτουργίες. Κατά τον προγραμματισμό του FPGA ενεργοποιούνται οι επιθυμιτές μονάδες και οι διασυνδέσεις μεταξύ τους έτσι ώστε να συμπεριφέρεται ως ολοκληρωμένο κύκλωμα με την επιθυμητή λειτουργία. 1

16 Βασική δομική μονάδα ενός FPGA είναι το Λογικό Μπλοκ (Logic Block). Ένα FPGA διαθέτει χιλιάδες λογικά μπλοκ τα οποία συνδέονται μεταξύ τους μέσω σταθερών καλωδιώσεων ή/και μέσω διακλαδωτές καλωδίων (switch matrices) οι οποίοι δίνουν επιπλέον δυνατότητες σύνδεσης. Ακόμη, υπάρχουν μπλοκ τα οποία είναι υπεύθυνα μόνο για την είσοδο/έξοδο του FPGA (I/O Blocks). Κατά τον προγραμματισμό ενός FPGA, το κάθε μπλοκ (και κατ επέκταση οι εσωτερικές μονάδες του) «προγραμματίζονται» να εκτελούν συγκεκριμένες λειτουργίες με βάση τον σχεδιασμό τον οποίο στοχεύει ο σχεδιαστής. Επίσης, γίνονται οι κατάλληλες συνδέσεις (ή αποσυνδέσεις) των καλωδίων ανάμεσα τους, ώστε τα δεδομένα να ακολουθούν την επιθυμητή διαδρομή επεξεργασίας. Έτσι, επιτυγχάνεται από το FPGA η επιθυμητή συμπεριφορά του σχεδιασμού. Στην περίπτωση των FPGAs της Xilinx τα λογικά μπλοκ ονομάζονται CLB (Configurable Logic Block) και χωρίζονται σε μικρότερες δομές, τα λεγόμενα slices. Ανάλογα με την οικογένεια του FPGA, κάθε CLB μπορεί να περιέχει 2, 4 ή και 6 slices. Με την σειρά τους, τα slices περιέχουν LuTs και ενδεχομένως τυποποιημένα τμήματα λογικής που εκτελούν βασικές πράξεις (όπως για παράδειγμα μικρούς πολυπλέκτες, πύλες λογική υπολογισμού πρόσθεσης με κρατούμενο κτλ.). Ανάλογα με την οικογένεια FPGA τα LuTs μπορεί να είναι (4 εισόδων/1 εξόδου) ή (6 εισόδων/2 εξόδων), ενώ διαφοροποιούνται και ενσωματωμένα τυποποιημένα λογικά τμήματα (περισσότερες πύλες ή λογική για DSP εφαρμογές κτλ.). Σχήμα 1.1: Εσωτερική δομή ενός Configurable Logic Block (CLB) του Virtex-5 Τα FPGA μπορούν να αγοραστούν αυτά κάθε αυτά ως chip και να τοποθετηθούν σε κάποια πλακέτα από τον αγοραστή. Εναλλακτικά προσφέρονται τοποθετημένα είδη σε πλακέτα (board) ως μια πιο ολοκληρωμένη λύση. Οι πλακέτες αυτές έχουν έτοιμο ένα σύστημα προγραμματισμού του FPGA, παρέχουν διεπαφές για διάφορα standard όπως π.χ. σειριακή θύρα (UART), Ethernet κτλ, διεπαφές για εξωτερικές μνήμες, σκληρούς δίσκους κ.α. Κάποια από τα βασικά πλεονεκτήματα των FPGA σε σχέση με τις συμβατικές υλοποιήσεις σχεδιασμού είναι: Δίνουν την δυνατότητα στο χρήστη να δουλεύει ανεξάρτητα από τις εταιρείες παραγωγής και διανομής εξαρτημάτων καθώς η χρηστικότητά τους δεν προκύπτει από την συσκευή αυτή καθ εαυτή αλλά από τον τρόπο που ο κάθε σχεδιαστής διαμορφώνει τη λειτουργία της(configuration). Η διαμόρφωση αυτή μπορεί να γίνει με τέτοιο τρόπο που να είναι δυνατή η φορητότητα της σχεδίασης μεταξύ διαφορετικών FPGAs χωρίς περαιτέρω προσαρμογή. 2

17 Με την αύξηση της χρήσης τους, η ανάπτυξη νέων πρωτότυπων και πρωτοποριακών κομματιών hardware αυξάνεται σημαντικά καθώς ένα μεγάλο κομμάτι της ανάπτυξης «περνάει» στην σχεδίαση των λεγόμενων IP cores (intellectual property cores). Επί της ουσίας πρόκειται για έτοιμα κομμάτια hardware τα οποία επιτελούν έναν συγκεκριμένο σκοπό π.χ. θύρα usb, UART 232, TFT και παρέχονται από την εταιρεία που αναπτύσσει το FPGA για καλύτερη λειτουργία και γρηγορότερη ανάπτυξη του σχεδιασμού. Οι σύνθετες εργασίες συχνά διεκπεραιώνονται μέσω εφαρμογών λογισμικού σε συνδυασμό με επεξεργαστές υψηλών επιδόσεων. Και σε αυτή την περίπτωση τα FPGAs παρέχουν μια ανταγωνιστική εναλλακτική λύση, η οποία μέσω του κατάλληλου customization για το συγκεκριμένο έργο δημιουργεί ακόμα ένα επιπλέον κέρδος στην συνολική απόδοση του σχεδιασμού μας. Είναι καταλληλότερα για τις εφαρμογές στις οποίες το software υλοποιήσεις δεν είναι αρκετά γρήγορες και ταυτόχρονα η επιλογή τεχνολογίας ASIC θεωρείται ακριβή. Είναι δηλαδή μια μέση λύση ανάμεσα στο software και τα ASICs. Ακόμη, δίνουν τη δυνατότητα για συσχεδίαση υλικού/λογισμικού. 1.3 Δίκτυα Υπολογιστών Ως δίκτυο υπολογιστών ορίζεται ένα σύνολο από διασυνδεδεμένους υπολογιστές με σκοπό την μεταξύ τους επικοινωνία. Υπάρχουν πολλά είδη δικτύων και το κάθε ένα προσφέρεται για συγκεκριμένους σκοπούς. Εκτός από τους υπολογιστές, δυνατότητες δικτύωσης έχουν πολλές ακόμη συσκευές όπως τα κινητά τηλέφωνα, εκτυπωτές, διάφορα ενσωματωμένα συστήματα κτλ. Το Internet είναι το μεγαλύτερο δίκτυο υπολογιστών και άλλων συσκευών με την δυνατότητα δικτύωσης. Για την διασύνδεση των συσκευών σε ένα δίκτυο, υπάρχουν πολλές διαφορετικές τεχνολογίες όπως π.χ. καλώδιο Ethernet, οπτικές ίνες ή ακόμα και ασύρματα μέσω ηλεκτρομαγνητικών κυμάτων, όπως τα μικροκύματα κτλ. Κάθε τεχνολογία επιλέγεται με βάση κάποια κριτήρια, με τα πιο σημαντικά να είναι η απόδοση και το κόστος. Πέρα από την φυσική διασύνδεση των συστημάτων, πρέπει να τεθούν και κάποιοι συγκεκριμένοι κανόνες-συμπεριφορές επικοινωνίας οι οποίες θα πρέπει να ακολουθούνται από όλα τα συμμετέχοντα συστήματα για να υπάρξει μια επιτυχής επικοινωνία. Αυτοί οι τρόποισυμπεριφορές ονομάζονται πρωτόκολλα επικοινωνίας, και είναι η βάση της εξέλιξης και της ποικιλίας των εφαρμογών των δικτύων. Ένα άλλο σημαντικό χαρακτηριστικό των δικτύων είναι ότι συνήθως η πληροφορίες μεταφέρονται σε πακέτα, με κάθε πακέτο να περιέχει ολόκληρη ή κομμάτι της πληροφορίας που θέλουμε να αποσταλεί. Κάθε πακέτο, εκτός από την χρήσιμη πληροφορία (payload), περιλαμβάνει μία ή περισσότερες κεφαλίδες οι οποίες περιέχουν πληροφορίες χρήσιμες για την μετάδοση του πακέτου. Τα ενδιάμεσα συστήματα από τα οποία περνάει ένα πακέτο χρησιμοποιούν αυτές τις πληροφορίες, ενώ το payload χρησιμοποιείται μόνο από τον τελικό παραλήπτη Στοίβα Πρωτοκόλλων Τα δίκτυα βασίζονται στην αρχή της τμηματοποίησης (modularity), δηλαδή ολόκληρη η λειτουργία τους χωρίζεται σε επιμέρους και όσο το δυνατόν ανεξάρτητες λειτουργίες. Έτσι αντιμετωπίζουμε την πολυπλοκότητα αυτών των συστημάτων και ακόμη, γίνονται πιο 3

18 ευέλικτα, αφού αν χρειαστεί να γίνει κάποια αλλαγή δεν χρειάζεται να επεξεργαστούμε ολόκληρη την υλοποίηση, αλλά μόνο το κομμάτι που μας ενδιαφέρει. Η στοίβα πρωτοκόλλων, είναι μια σειρά από στρώματα-επίπεδα επεξεργασίας της προς μετάδοση/λήψη πληροφορίας. Αυτή η επεξεργασία έχει σκοπό την επιτυχή μετάδοση/λήψη της πληροφορίας από το ένα σύστημα (host) στο άλλο, και για μια επιτυχή επικοινωνία η στοίβα πρέπει να είναι υλοποιημένη σε κάθε άκρο της επικοινωνίας. Κάθε ένα στρώμα αναλαμβάνει μια συγκεκριμένη λειτουργία και παρέχει υπηρεσίες στο αμέσως υψηλότερο επίπεδο της στοίβας. Όταν αποστέλλονται πληροφορίες, η επεξεργασία τους ξεκινάει από το υψηλότερο επίπεδο προς το χαμηλότερο, με τελευταία λειτουργία την αποστολή των δεδομένων, ενώ κατά την λήψη ακολουθείται η ανάποδη διαδρομή μέχρι την παραλαβή της πληροφορίας.. Η δομή της στοίβας πρωτοκόλλων έχει προτυποποιηθεί με το πρότυπο OSI (Open Systems Interconnection). Το πρότυπο OSI βασίζεται σε μια πρόταση που αναπτύχθηκε από το Διεθνή Οργανισμό Τυποποίησης(International Standards Organization ή ISO) ως ένα πρώτο βήμα για την διεθνή τυποποίηση των πρωτοκόλλων που χρησιμοποιούνται στα διάφορα επίπεδα των δικτύων. Ορίζει με αφαιρετικό τρόπο τα επίπεδα, τις λειτουργίες τους και την μεταξύ τους διασύνδεση. Δεν ορίζει τα πρωτόκολλα που χρησιμοποιούνται σε κάθε επίπεδο, απλώς περιγράφει τις λειτουργίες που θα πρέπει να πραγματοποιούνται σε κάθε επίπεδο. Έτσι υπάρχουν πολλά διαφορετικά πρωτόκολλα για κάθε επίπεδο, με το κάθε ένα να χρησιμοποιείται για διαφορετικούς σκοπούς και να καλύπτει διαφορετικές ανάγκες. Τα επίπεδα αυτά και οι βασικές λειτουργίες τους είναι: Φυσικό Επίπεδο (Physical Layer) Είναι το επίπεδο που αναλαμβάνει την αποστολή των δεδομένων στο κανάλι επικοινωνίας. Η βασική του λειτουργία είναι η από/κωδικοποίηση των δεδομένων στον κώδικα του καναλιού (π.χ. ηλεκτρικοί παλμοί 0-5V για μετάδοση μέσω καλωδίου, οπτικοί παλμοί για μετάδοση μέσω οπτικών ινών κτλ.). Ο στόχος αυτού του επιπέδου είναι να εξασφαλίσει το ότι όταν μια πλευρά στέλνει το bit 1, αυτό θα λαμβάνεται από την άλλη πλευρά ως bit 1 και όχι ως bit 0. Επίπεδο Συνδέσμου Μετάδοσης Δεδομένων (Data Link Layer) Αναλαμβάνει τον έλεγχο για την επιτυχή αποστολή των δεδομένων από το φυσικό επίπεδο. Η λειτουργία αυτού του επιπέδου είναι η εξασφάλιση της επιτυχίας αποστολής των δεδομένων, μέσω διαφόρων μηχανισμών ελέγχου, διόρθωσης και ανάκαμψης. Για να το πετύχει αυτό, τεμαχίζει τα προς αποστολή δεδομένα σε πλαίσια δεδομένων πριν την αποστολή τους και κατά την λήψη γίνεται έλεγχος λαθών στο κάθε πλαίσιο. Συχνά περιλαμβάνει και έναν μηχανισμό ρύθμισης της κυκλοφορίας, έτσι ώστε να αποτρέπεται ένας γρήγορος αποστολέας από το να κατακλείσει έναν αργό παραλήπτη. Επίπεδο Δικτύου (Network Layer) Μέχρι και πριν το επίπεδο δικτύου, η αποστολή των δεδομένων γίνεται ανάμεσα σε δύο συστήματα άμεσα συνδεδεμένα. Όταν δύο συστήματα που δεν είναι άμεσα συνδεδεμένα θέλουν να επικοινωνήσουν, (με τη έννοια ότι ανήκουν σε διαφορετικά τοπικά δίκτυα), τότε οι πληροφορίες θα πρέπει να περάσουν από ενδιάμεσα συστήματα, δημιουργώντας έναν δρόμο μέσω του/των δικτύου/ων. 4

19 Η δρομολόγηση της πληροφορίας στα δίκτυα είναι η λειτουργία του επιπέδου δικτύου. Επίπεδο μεταφοράς (Transport Layer) Οι υπολογιστές, κατά κύριο λόγο, έχουν παραπάνω από μία εφαρμογές και ίσως παραπάνω από έναν χρήστες που θέλουν να χρησιμοποιήσουν το δίκτυο. Έτσι, όταν μια πληροφορία φτάνει σε ένα σύστημα, υπάρχει η ανάγκη να βρεθεί ο συγκεκριμένος παραλήπτης αυτής της πληροφορίας (end-to-end). Το επίπεδο μεταφοράς αναλαμβάνει αυτή την πολύπλεξη-απόπλεξη. Επίπεδο Συνδιάλεξης (Session Layer) Αυτό το επίπεδο επιτρέπει σε χρήστες διαφορετικών μηχανών να εγκαθιδρύουν συνδιαλέξεις μεταξύ τους. Οι συνδιαλέξεις προσφέρουν διάφορες υπηρεσίες, στις οποίες περιλαμβάνονται ο έλεγχος διαλόγου, η διαχείριση σκυτάλης (η αποτροπή των δύο πλευρών από το να επιχειρήσουν ταυτόχρονα την εκτέλεση της ίδιας κρίσιμης λειτουργίας) και ο συγχρονισμός. Επίπεδο Παρουσίασης (Presentation Layer) Σε αντίθεση με τα κατώτερα επίπεδα που ασχολούνται κυρίως με την μετάδοση bit,το επίπεδο παρουσίασης ασχολείται με τη σύνταξη και τη σημασιολογία των μεταδιδομένων πληροφοριών. Για να είναι εφικτή η επικοινωνία μεταξύ υπολογιστών που χρησιμοποιούν διαφορετικές αναπαραστάσεις δεδομένων, μπορούν να οριστούν με αφαιρετικό τρόπο οι δομές δεδομένων που θα ανταλλάσσονται, μαζί με μια τυποποιημένη κωδικοποίηση που θα χρησιμοποιείται «μέσα στο καλώδιο». Το επίπεδο παρουσίασης διαχειρίζεται αυτές τις αφαιρετικές δομές δεδομένων και επιτρέπει τον ορισμό και την ανταλλαγή δομών δεδομένων υψηλού επιπέδου (για παράδειγμα, τραπεζικών εγγράφων). Επίπεδο Εφαρμογών (Application Layer) Το επίπεδο εφαρμογών περιέχει μια ποικιλία πρωτοκόλλων που απαιτούνται συχνά από τους χρήστες για διάφορες λειτουργίες, όπως η μεταφορά αρχείων, το ηλεκτρονικό ταχυδρομείο και η παρουσίαση σελίδων του Παγκόσμιου Ιστού. Σε αυτό το επίπεδο δημιουργούνται/φτάνουν τα δεδομένα προς αποστολή/λήψη. 5

20 Σχήμα 1.2: Αριστερά: Η στοίβα OSI, Δεξιά: Η στοίβα TCP/IP. Η στοίβα πρωτοκόλλων που χρησιμοποιείται στο Internet ονομάζεται στοίβα TCP/IP, λόγω των δύο κυριότερων πρωτοκόλλων που την απαρτίζουν, το TCP και το IP. Αυτή η στοίβα ακολουθεί το πρότυπο OSI, αλλά διαφέρει από αυτό κυρίως στο ότι θεωρεί τα επίπεδα μεταφοράς και συνδιάλεξης συγχωνευμένα στο επίπεδο εφαρμογής. Ακόμη, συνήθως τα δύο κατώτερα επίπεδα (φυσικό και σύζευξης δεδομένων) είναι στενά συσχετιζόμενα με το είδος του καναλιού επικοινωνίας, και υλοποιούνται μαζί για αυτή την τεχνολογία επικοινωνίας. Έτσι θεωρούνται ένα επίπεδο και αποτελούν την διασύνδεση μεταξύ του δικτύου και του συστήματος(network interface). Υπάρχουν και άλλες διαφορές μεταξύ του OSI και του TCP/IP, που είναι αρκετά τεχνικές και δεν χρειάζεται να αναφερθούν εδώ. Στο σχήμα 1.2 παρουσιάζονται οι στοίβες OSI και TCP/IP και διακρίνονται οι ομοιότητες και διαφορές τους. Κατά την αποστολή, τα δεδομένα ξεκινάνε από το επίπεδο εφαρμογής και κατεβαίνουν την στοίβα μέχρι να φτάσουν στο φυσικό επίπεδο από όπου και θα αποσταλούν. Κάθε επίπεδο παίρνει τα δεδομένα του αμέσως υψηλότερου επιπέδου και προσθέτει σε αυτά μια κατάλληλη κεφαλίδα(header) και μερικές φορές προστίθενται δεδομένα και στην «ουρά» του πακέτου(trailer footer). Έτσι η αρχική πληροφορία συνενώνεται με τα επιπρόσθετα δεδομένα του κάθε επιπέδου, και η δομή αυτή δίνεται στο επόμενο επίπεδο το οποίο θα προσθέσει τα δικά του δεδομένα κ.ο.κ. Η διαδικασία αυτή ονομάζεται ενθυλάκωση. Κατά την λήψη, τα δεδομένα φτάνουν στο φυσικό επίπεδο, και κάθε επίπεδο επεξεργάζεται και αφαιρεί την κεφαλίδα του, δίνοντας το υπόλοιπο κομμάτι του πακέτου στο επόμενο επίπεδο, μέχρι να φτάσουμε να δώσουμε στο επίπεδο εφαρμογής την «καθαρή» πληροφορία που αποστάλθηκε. Η μορφή του πακέτου σε κάθε επίπεδο φαίνεται αφαιρετικά στο Σχήμα

21 Σχήμα 1.3: Μετασχηματισμός του πακέτου Ασφάλεια Δικτύων Ο τομέας της ασφάλειας δικτύων ασχολείται με την ασφαλή επικοινωνία μεταξύ δικτυακών συστημάτων, με τον έλεγχο πρόσβασης σε υπηρεσίες και πόρους του δικτύου καθώς και με την προστασία και εξασφάλιση της σωστής λειτουργίας των επιμέρους συστημάτων και του δικτύου στο σύνολο του. Ανήκει στον κλάδο της ασφάλειας της πληροφορίας και εφαρμόζει τις βασικές έννοιες του, όπως η εμπιστευτικότητα και η πιστοποίηση, στον τομέα των δικτύων. Βασικό κομμάτι της ασφαλείας δικτύων είναι ο σχεδιασμός, η ανάλυση και η υλοποίηση πρωτοκόλλων ασφαλείας. Ξεκινώντας από τον σχεδιασμό, αρχικά θέτονται οι στόχοι και οι υπηρεσίες που θα παρέχει το πρωτόκολλο, και έπειτα ορίζονται οι λεπτομέρειες του πρωτοκόλλου, όπως η μορφή των κεφαλίδων των πακέτων, τα αιτήματα και το σύνολο των απαντήσεων τους (request-response), ο τρόπος χρήσης αλγορίθμων και άλλων πρωτοκόλλων κ.α. Ακόμη, κατά τον σχεδιασμό ορίζονται και εξετάζονται τα σενάρια υπό τα οποία θα λειτουργεί το, προς υλοποίηση, πρωτόκολλο. Στην συνέχεια, προχωράμε στην ανάλυση, όπου εκτιμάται το κατά πόσο ο σχεδιασμός πληροί τους στόχους, γίνεται αναζήτηση τυχών λαθών ή και παραλήψεων κτλ. Από την ανάλυση μπορεί να προκύψει ανάγκη για αλλαγή ή και επέκταση του σχεδιασμού του πρωτοκόλλου, οπότε και ξαναγυρνάμε στον επανασχεδιασμό του. Αυτή η ανατροφοδότηση συνεχίζεται μέχρι να δοθούν ικανοποιητικά αποτελέσματα. Έπειτα, ακολουθεί η υλοποίηση του πρωτόκολλου, όπου θέτονται ζητήματα απόδοσης, επιλογής του τρόπου υλοποίησης (υλικό ή λογισμικό, γλώσσα προγραμματισμού κτλ.), και επαλήθευσης της. Σε αυτό το σημείο θα πρέπει να δοθεί ιδιαίτερη προσοχή στην ασφαλή υλοποίηση του πρωτοκόλλου. Η ασφαλής υλοποίηση δεν αφορά την ασφάλεια του πρωτοκόλλου αυτού καθεαυτού, αλλά την αποφυγή τεχνικών λαθών τα οποία μπορεί να δημιουργήσουν «τρύπες ασφαλείας». Έτσι, ένα πρωτόκολλο μπορεί να παρέχει σημαντικό βαθμό ασφαλείας, αλλά η υλοποίηση του να καθιστά ευάλωτο το σύστημα σε άλλου είδους επιθέσεις από αυτές για τις οποίες σχεδιάστηκε να το προστατεύει. Ο ασφαλής 7

22 προγραμματισμός, η ασφαλής υλοποίηση σε υλικό καθώς και η φυσική τοποθέτηση και οι τρόποι φυσικής πρόσβασης του συστήματος είναι θέματα που ανήκουν στην ασφαλή υλοποίηση. Η κρυπτογραφία, παίζει σημαντικό ρόλο στην ασφάλεια των δικτύων, καθώς της παρέχει τα βασικά εργαλεία και μηχανισμούς. Έτσι, η ασφάλεια των δικτύων, και γενικά η ασφάλεια της πληροφορίας, εξαρτάται από το πόσο ασφαλείς είναι οι κρυπτογραφικοί αλγόριθμοι που χρησιμοποιούνται, και κατά πόσο χρησιμοποιούνται με σωστό τρόπο. Συνήθεις στόχοι στην ασφάλεια των δικτύων είναι η εμπιστευτικότητα και ακεραιότητα των δεδομένων, η πιστοποίηση, η διαθεσιμότητα των πόρων και υπηρεσιών καθώς και τρόποι πρόληψης και σενάρια ανάκαμψης επιθέσεων ή και δυσλειτουργιών, έννοιες που θα επεξηγηθούν σε επόμενο κεφάλαιο. 8

23 ΚΕΦΑΛΑΙΟ 2 Κρυπτογραφία Πρωτόκολλα Ασφαλείας Περιεχόμενα 2.1. Κρυπτογραφικοί Αλγόριθμοι Συμμετρική Κρυπτογράφηση Ασύμμετρη Κρυπτογράφηση Αλγόριθμοι Κατακερματισμού Κατακερματισμός με Κλειδί Γεννήτριες Ψευδοτυχαίων Αριθμών Διαχείριση Κλειδιών (Key Management) Ενδυνάμωση των Αλγορίθμων Επέκταση Δεδομένων - Padding Salt Διανύσματα Αρχικοποίησης Η Κρυπτογραφία είναι ο επιστημονικός κλάδος που ασχολείται με την μελέτη, ανάπτυξη και χρήση τεχνικών με σκοπό την ασφαλή επικοινωνία μεταξύ συνομιλητών, ενώ ταυτόχρονα υπάρχουν τρίτοι ενδιαφερόμενοι («αντίπαλοι» - adversaries) για τα περιεχόμενα αυτής της επικοινωνίας, οι οποίοι πρέπει να αποκλειστούν από το να αποκτήσουν αυτά τα περιεχόμενα. Πρακτικά, ασχολείται με την δημιουργία και ανάλυση αλγορίθμων και πρωτοκόλλων τα οποία υπερνικούν την επιρροή των «αντιπάλων» και τα οποία έχουν στόχο την παροχή διαφόρων εννοιών του κλάδου της ασφάλειας της πληροφορίας, όπως η εμπιστευτικότητα, η ακεραιότητα των δεδομένων, η πιστοποίηση και η μη-απάρνηση. Η μοντέρνα κρυπτογραφία έχει στενή σχέση με τους κλάδους των μαθηματικών, της επιστήμης των υπολογιστών και της ηλεκτρολογίας (electrical engineering). Βασικές έννοιες αυτού του κλάδου είναι: Εμπιστευτικότητα (Confidentiality), κατά την οποία εξασφαλίζεται ότι περιορισμένες και σαφώς καθορισμένες οντότητες μπορούν να έχουν πρόσβαση σε ένα σύνολο πληροφοριών, και καμία άλλη. Πιστοποίηση (Authentication) είναι η διαδικασία κατά την οποία εξασφαλίζεται η αληθινή ταυτότητα ή κάποια άλλη ιδιότητα μίας οντότητας. Ακεραιότητα Δεδομένων (Data Integrity), κατά την οποία εξασφαλίζεται ότι το υπό εξέταση σύνολο δεδομένων δεν έχει παραποιηθεί από μη εξουσιοδοτημένες οντότητες, και ότι κάθε παραποίηση τους θα γίνει αντιληπτή. Πρωτόκολλο επικοινωνίας είναι ένα σύστημα μορφών και κανόνων μηνυμάτων, τα οποία πρόκειται να ανταλλαχθούν μεταξύ υπολογιστικών και τηλεπικοινωνιακών συστημάτων. Ένα πρωτόκολλο ορίζει το συντακτικό, την σημασιολογία και τον συγχρονισμό αυτής της επικοινωνίας. Ορίζει την συμπεριφορά των επιμέρους συστημάτων, ανεξάρτητα από τον τρόπο υλοποίησής της. Έτσι ένα πρωτόκολλο μπορεί να υλοποιηθεί είτε σε υλικό είτε σε 9

24 λογισμικό. Για μια επιτυχή επικοινωνία, όλοι οι συμμετέχοντες θα πρέπει να έχουν συμφωνήσει εκ των προτέρων στα πρωτόκολλα τα οποία πρόκειται χρησιμοποιηθούν. Ένα πρωτόκολλο ασφαλείας ή κρυπτογραφικό πρωτόκολλο είναι ένα πρωτόκολλο το οποίο εφαρμόζει λειτουργίες προστασίας της επικοινωνίας και χρησιμοποιεί κρυπτογραφικές μεθόδους. Οι πιο βασικές υπηρεσίες που προσφέρονται συνήθως είναι η πιστοποίηση των συνομιλητών, η ακεραιότητα των δεδομένων και η εμπιστευτικότητα. Άλλες υπηρεσίες είναι η μη-απάρνηση (non-repudiation), η διαθεσιμότητα του συστήματος (αντοχή σε denial-of-service επιθέσεις) κ.α. Σε αυτή την κατηγορία, εκτός από τα πρωτόκολλα τα οποία προστατεύουν άμεσα τα δεδομένα, ανήκουν και τα πρωτόκολλα που αναλαμβάνουν την ανταλλαγή κλειδιών, την διαπραγμάτευση των παραμέτρων της ασφαλούς επικοινωνίας και άλλα πρωτόκολλα που βοηθούν έμμεσα την διαδικασία της προστασίας της επικοινωνίας. Παραδείγματα τέτοιων πρωτοκόλλων είναι το Transport Layer Security (TLS) το οποίο χρησιμοποιείται κυρίως στην ασφάλιση HTTP κίνησης, η ανταλλαγή κλειδιών Diffie-Hellman που δημιουργεί ένα κοινό μυστικό σε ένα μη ασφαλές κανάλι επικοινωνίας μεταξύ δύο συστημάτων και το IPsec το οποίο προσφέρει προστασία επικοινωνίας στο επίπεδο δικτύου της στοίβας TCP/IP Κρυπτογραφικοί Αλγόριθμοι Οι κρυπτογραφικοί αλγόριθμοι, είναι αλγόριθμοι οι οποίοι παρέχουν κάποια/ες από τις βασικές έννοιες της κρυπτογραφίας. Αποτελούν την βάση κάθε ασφαλούς συστήματος και για αυτό θα πρέπει να δίνεται ιδιαίτερη προσοχή στην αποτελεσματικότητα τους, τόσο στον σχεδιασμό, όσο και στην υλοποίηση και την διασύνδεση τους με άλλους αλγορίθμους, πρωτόκολλα και συστήματα. Υπάρχουν διαφόρων ειδών κρυπτογραφικοί αλγόριθμοι, όπως αλγόριθμοι που παρέχουν κρυπτογράφηση δεδομένων (encryption), κατακερματισμού(hash) τους, απόκρυψης του γεγονότος ότι υπάρχουν εμπιστευτικά δεδομένα (plausible deniability, deniable encryption) και στεγανογραφίας (steganography), δηλαδή απόκρυψης και ενσωμάτωσης των σημαντικών δεδομένων σε άλλα, ασήμαντα και άσχετα Συμμετρική Κρυπτογράφηση Η κρυπτογράφηση είναι ένας μετασχηματισμός ενός συνόλου δεδομένων σε ένα άλλο, με στόχο την ασφάλιση αυτών των δεδομένων από την πρόσβαση τρίτων σε αυτά, δηλαδή με στόχο την παροχή εμπιστευτικότητας. Το αρχικά δεδομένα ονομάζονται καθαρό κείμενο (plaintext) ενώ τα δεδομένα που προκύπτουν μετά από την κρυπτογράφηση καλούνται κρυπτογραφημένο κείμενο (ciphertext). Ο ανάποδος μετασχηματισμός, ονομάζεται αποκρυπτογράφηση. Η μοντέρνα κρυπτογραφία χρησιμοποιεί κλειδιά (cryptographic keys) για την από/κρυπτογράφηση. Τα κλειδιά είναι ένας τρόπος παραμετροποίησης του αλγόριθμου κρυπτογράφησης και είναι απαραίτητα για να μπορεί να αποκρυπτογραφηθεί το μήνυμα. Με αυτόν τον τρόπο, η ασφάλεια των δεδομένων δεν εξαρτάται από το πόσο καλά κρατήθηκε κρυφός ο αλγόριθμος, και ακόμη, δεν υπάρχει ανάγκη εύρεσης καινούριου αλγορίθμου, όταν ο είδη χρησιμοποιούμενος γίνει γνωστός από τρίτους, και αρκεί μόνο η προστασία των κλειδιών. Υπάρχουν δύο βασικά είδη κρυπτογράφησης, η συμμετρική (symmetric encryption) και η ασύμμετρη (public key encryption). Στην συμμετρική κρυπτογράφηση, χρησιμοποιείται ένα κλειδί για την κρυπτογράφηση και την αποκρυπτογράφηση. O αποστολέας κρυπτογραφεί με 10

25 την χρήση του κλειδιού, το οποίο και παρέχει με κάποιον ασφαλή τρόπο στους επιθυμητούς παραλήπτες, οι οποίοι με την σειρά τους το χρησιμοποιούν για να αποκρυπτογραφήσουν. Στο σχήμα 2.1 παρουσιάζεται σχηματικά το μοντέλο της συμμετρικής κρυπτογράφησης. Στην συμμετρική κρυπτογράφηση υπάρχουν δύο κατηγορίες αλγορίθμων, οι αλγόριθμοι δέσμης (block ciphers) και οι αλγόριθμοι ροής (stream ciphers). Οι αλγόριθμοι της πρώτης κατηγορίας απo/κρυπτογραφούν το μήνυμα σε ισομεγέθη κομμάτια (blocks) ενώ της δεύτερης bit προς bit ή byte προς byte. Έτσι οι πρώτοι μπορούν να εφαρμοστούν όταν έχουμε όλα τα δεδομένα διαθέσιμα εκ των προτέρων, ενώ οι δεύτεροι χρησιμοποιούνται όταν τα δεδομένα πρέπει να κρυπτογραφηθούν την στιγμή που παράγονται (on-the-fly). Σχήμα 2.1: Συμμετρική Κρυπτογράφηση Για τους αλγόριθμους δέσμης ορίζονται τρόποι λειτουργίας (operation modes), οι οποίοι περιγράφουν τον τρόπο της επαναλαμβανόμενης εφαρμογής ενός block αλγορίθμου σε δεδομένα εισόδου μεγαλύτερα από το μέγεθος του block. Όταν η είσοδος δεν είναι ακέραιο πολλαπλάσιο του μεγέθους του block που ορίζει ο αλγόριθμος, τότε πρέπει να χρησιμοποιηθεί «γέμισμα» της εισόδου (padding), ώστε να φτάσει στο κατάλληλο μέγεθος, και έπειτα το επεκταμένο κείμενο δίνεται ως είσοδος στον αλγόριθμο. Ο τρόπος και τα περιεχόμενα της διαδικασίας του «γεμίσματος» δίνονται συνήθως στην προδιαγραφή (specification) του αλγορίθμου. Πολλοί τρόποι λειτουργίας block αλγορίθμων έχουν οριστεί, όπως οι ECB,CBC και CFB. Στο σχήμα 2.2 παρουσιάζεται ο CBC(Cipher-block Chaining). 11

26 Σχήμα 2.2: Κρυπτογράφηση και Αποκρυπτογράφηση με τον CBC Ασύμμετρη Κρυπτογράφηση Στην ασύμμετρη κρυπτογράφηση(asymmetric cryptography, public-key cryptography), χρησιμοποιούνται δύο κλειδιά από κάθε οντότητα, ένα δημόσιο (public key) και ένα ιδιωτικό (private key). Το δημόσιο κλειδί διατίθεται σε οποιονδήποτε ενώ το ιδιωτικό πρέπει να κρατηθεί κρυφό. Αυτά τα κλειδιά έχουν την ιδιότητα να μπορούν να αποκρυπτογραφήσουν ότι έχει κρυπτογραφηθεί με το άλλο κλειδί, αμοιβαία. Ακόμη, έχουν την ιδιότητα ότι δεδομένου του δημόσιου κλειδιού, είναι πρακτικά αδύνατο να βρεθεί το ιδιωτικό. Οι ασύμμετροι αλγόριθμοι έχουν δύο βασικούς τρόπους χρήσης. Ο ένας παρέχει εμπιστευτικότητα ενώ ο άλλος πιστοποίηση. Όταν μια οντότητα θέλει να χρησιμοποιήσει εμπιστευτικότητα με μια άλλη, χρησιμοποιεί το δημόσιο κλειδί της δεύτερης για την κρυπτογράφηση των δεδομένων. Οπότε, η μόνη οντότητα που μπορεί να έχει πρόσβαση στο καθαρό κείμενο είναι αυτή που κατέχει το αντίστοιχο ιδιωτικό κλειδί, δηλαδή η δεύτερη (ιδανικά). Η διαδικασία φαίνεται στο σχήμα

27 Σχήμα 2.3: Κρυπτογράφηση Δημοσίου Κλειδιού Για την επίτευξη πιστοποίησης, ο δημιουργός ή αποστολέας της πληροφορίας, χρησιμοποιεί το ιδιωτικό του κλειδί στα δεδομένα, και παράγει μία έξοδο, η οποία ονομάζεται υπογραφή (signature), η οποία είναι πολύ δύσκολο να πλαστογραφηθεί. Όταν τα δεδομένα φτάσουν σε κάποιον παραλήπτη, αυτός μπορεί να ελέγξει την υπογραφή χρησιμοποιώντας το δημόσιο κλειδί του αποστολέα. Όταν τα δεδομένα φτάσουν σε κάποιον παραλήπτη, αυτός μπορεί να ελέγξει την υπογραφή χρησιμοποιώντας το δημόσιο κλειδί του αποστολέα. Η διαδικασία παρουσιάζεται στο σχήμα 2.4. Σχήμα 2.4: Πιστοποίηση Δημοσίου Κλειδιού 13

28 Οι ασύμμετροι αλγόριθμοι χρησιμοποιούνται εφαρμογές όπως ψηφιακά πιστοποιητικά, σε πρωτόκολλα ασφαλούς ανταλλαγής κλειδιών (πχ Diffie-Hellman) στο πρωτόκολλο TLS( Transport Layer Security) κ.α Αλγόριθμοι Κατακερματισμού Αλγόριθμος κατακερματισμού (hash algorithm) είναι ένας ντετερμινιστικός αλγόριθμος ο οποίος αντιστοιχεί δεδομένα μεταβλητού μεγέθους σε δεδομένα προκαθορισμένου μεγέθους (hash, digest). Λόγω του περιορισμένου αριθμού πιθανών εξόδων σε σχέση με τον απεριόριστο αριθμό πιθανών εισόδων, οι αλγόριθμοι κατακερματισμού έχουν συγκρούσεις (collisions), δηλαδή υπάρχουν παραπάνω από μία είσοδοι που παράγουν την ίδια έξοδο. Σχήμα 2.5: Λειτουργία των Αλγορίθμων Κατακερματισμού Στην κρυπτογραφία χρησιμοποιούνται οι κρυπτογραφικοί αλγόριθμοι κατακερματισμού (cryptographic hash functions). Οι αλγόριθμοι αυτού του είδους έχουν επιπρόσθετες απαιτήσεις: Δυσκολία εύρεσης μιας εισόδου που παράγει συγκεκριμένη έξοδο Δυσκολία αλλαγής της εισόδου, με την έξοδο να παραμένει ίδια Δυσκολία εύρεσης δύο εισόδων που να παράγουν την ίδια έξοδο Όσο μεγαλύτερος είναι ο βαθμός των παραπάνω δυσκολιών, τόσο πιο ασφαλής είναι ο αλγόριθμος. Οι κρυπτογραφικοί αλγόριθμοι κατακερματισμού χρησιμοποιούνται κυρίως για πιστοποίηση και ακεραιότητα των δεδομένων. Γνωστά παραδείγματα είναι οι MD5, RIPEMD και SHA Κατακερματισμός με Κλειδί Για την διασφάλιση ακεραιότητας και πιστοποίησης, χρησιμοποιούνται συχνά οι κώδικες πιστοποίησης μηνυμάτων (Message Authentication Code MAC). Οι MAC είναι ένα μικρό κομμάτι πληροφορίας, το οποίο στέλνεται μαζί με το μήνυμα που θέλουμε να προστατέψουμε, ώστε να ελεγχθεί κατά την παραλαβή του. Για την παραγωγή MAC, 14

29 χρησιμοποιούνται πολύ συχνά κρυπτογραφικοί αλγόριθμοι κατακερματισμού σε συνδυασμό με ένα κλειδί (Hashed-based MAC HMAC), το οποίο είναι στην κατοχή μόνο των δύο άκρων της επικοινωνίας. Οποιοσδήποτε κρυπτογραφικός αλγόριθμος κατακερματισμού, όπως οι SHA-1 και MD5, μπορεί να χρησιμοποιηθεί για τον υπολογισμό ενός HMAC, και ο προκύπτων αλγόριθμος ονομάζεται HMAC-MD5 και HMAC-SHA-1 αντίστοιχα. Η διαδικασία παρουσιάζεται στο σχήμα 2.6. Σχήμα 2.6: Τρόπος λειτουργίας των αλγορίθμων HMAC Γεννήτριες Ψευδοτυχαίων Αριθμών Οι γεννήτριες παραγωγής ψευδοτυχαίων αριθμών (Random Number Generator RNG) είναι αλγόριθμοι που παράγουν ακολουθίες αριθμών, οι οποίες φαίνονται να είναι τυχαίες. Στην πραγματικότητα οι ακολουθίες δεν είναι τυχαίες αλλά προκύπτουν πρότυπα και επαναλήψεις των ακολουθιών. Συνήθως αυτοί οι αλγόριθμοι δέχονται και μια ακόμη είσοδο που ονομάζεται «σπόρος» (seed), και αποτελεί μια παραμετροποίηση των ακολουθιών εξόδου της γεννήτριας. Οι RNG χρησιμοποιούνται στην κρυπτογραφία, όταν χρειάζεται τυχαιότητα για να εξασφαλιστεί ή να ενισχυθεί η ασφάλεια ενός συστήματος. Παραδείγματα είναι η δημιουργία κρυπτογραφικών κλειδιών, διανυσμάτων αρχικοποίησης κ.α Διαχείριση Κλειδιών (Key Management) Η διαχείριση κλειδιών περιλαμβάνει την δημιουργία, τον διαμοιρασμό-ανταλλαγή τους, την αποθήκευση τους και την αντικατάσταση τους. Η διαχείριση των κλειδιών είναι μία κρίσιμη διαδικασία για την ασφάλεια του συστήματος, και στην πράξη η πιο δύσκολη στην εφαρμογή 15

30 της, αφού περιλαμβάνει θέματα πολιτικών (policies) και διαφόρων άλλων εξωτερικών παραγόντων. Πριν ξεκινήσει μια ασφαλής επικοινωνία, οι οντότητες θα πρέπει πρώτα να ορίσουν τις παραμέτρους της επικοινωνίας αυτής. Κάποιες φορές απαιτείται η ανταλλαγή κλειδιών. Στην περίπτωση της ασύμμετρης κρυπτογραφίας, διανέμεται το δημόσιο κλειδί ελεύθερα. Στην επικοινωνία με συμμετρική κρυπτογράφηση όμως, χρειάζεται να διανεμηθούν τα κρυφά κλειδιά. Επειδή η γνώση ενός κρυφού κλειδιού εκθέτει την ασφάλεια της επικοινωνίας, αυτά τα κλειδιά θα πρέπει να διανεμηθούν μέσω ενός ασφαλούς καναλιού επικοινωνίας. Για αυτό τον λόγο έχουν αναπτυχθεί διάφορα πρωτόκολλα ασφαλούς ανταλλαγής κλειδιών, με πιο γνωστό την ανταλλαγή Diffie-Hellman. Τα κλειδιά πρέπει να έχουν κύκλο ζωής, δηλαδή να αντικαθιστούνται περιοδικά. Αυτό γιατί μπορεί να υπάρξει διαρροή των κλειδιών είτε να είναι αποτέλεσμα κρυπτανάλυσης. Η περιοδική αντικατάσταση τους, ελαχιστοποιεί το μέγεθος των επιπτώσεων, αφού ακόμα και να γίνει γνωστό ένα κλειδί, δεν αρκεί για να αποκρυπτογραφηθεί ολόκληρη η επικοινωνία. Επιπρόσθετα, βάζει ακόμα έναν βαθμό δυσκολίας στους κακόβουλους χρήστες του καναλιού, αφού περιορίζει το μέγεθος της κίνησης που κρυπτογραφήθηκε με το ίδιο κλειδί, μειώνοντας έτσι τα διαθέσιμα δεδομένα για κρυπτανάλυση Ενδυνάμωση των Αλγορίθμων Η πιο σημαντική παράμετρος στην ασφάλεια είναι τα μεγέθη των κλειδιών. Όσο μεγαλώνει το μέγεθος μεγαλώνει και η ασφάλεια. Για τους αλγόριθμους κρυπτογράφησης υπάρχουν δύο ιδιότητες που εκτιμούν την αποτελεσματικότητα τους, η σύγχυση και η διάχυση. Οι κρυπτογραφικοί αλγόριθμοι κατακερματισμού θα πρέπει να έχουν δύσκολα εντοπίσιμες συγκρούσεις. Μια καλή γεννήτρια ψευδοτυχαίων θα πρέπει να δημιουργεί ακολουθίες με όσο το δυνατών μεγαλύτερο μήκος, πριν την επανάληψή τους. Εκτός από τα παραπάνω, τα οποία αποτελούν ιδιότητες των αλγορίθμων, χρησιμοποιούνται και πρόσθετες τεχνικές ενδυνάμωσης τους Επέκταση Δεδομένων - Padding Εκτός από την διαμόρφωση κατάλληλου μεγέθους της εισόδου των block αλγορίθμων, η επέκταση των δεδομένων βοηθάει και στην απόκρυψη του πραγματικού μεγέθους των δεδομένων-πακέτου. Έτσι, μπορεί να χρησιμοποιηθεί παραπάνω επέκταση από την αναγκαία, με κόστος στο throughput Salt Ο όρος salt χρησιμοποιείται για να δηλώσει πρόσθετα δεδομένα στην είσοδο των αλγορίθμων κατακερματισμού. Βάζοντας salt στην είσοδο έχει ως αποτέλεσμα διαφορετική έξοδο του αλγορίθμου, ακόμα και με ίδια καθαρή είσοδο Διανύσματα Αρχικοποίησης Διάνυσμα Αρχικοποίησης (Initialization Vector IV), είναι τυχαία δεδομένα, στο μέγεθος ενός block, τα οποία τοποθετούνται στην αρχή των καθαρών δεδομένων, με σκοπό την περαιτέρω ενδυνάμωση της ασφάλειας των block αλγορίθμων. Εισάγουν τυχαιότητα στην διαδικασία της κρυπτογράφησης αφού, για την κρυπτογράφηση του ίδιου κειμένου με το ίδιο 16

31 κλειδί, το αποτέλεσμα εξαρτάται από το διάνυσμα αρχικοποίησης. Βασική προϋπόθεση είναι τα διανύσματα αρχικοποίησης να είναι απρόβλεπτα. 17

32 18

33 ΚΕΦΑΛΑΙΟ 3 Η Σουίτα Ασφαλείας IPsec Περιεχόμενα 3.1 Γενικά Επεξεργασία εξερχόμενης κίνησης Επεξεργασία εισερχόμενης κίνησης Transport και Tunnel Mode Συσχετίσεις Ασφαλείας( Security Associations SA) Βάση Δεδομένων Πολιτικών Ασφαλείας (Security Policy Database SPD) Το πρωτόκολλο AH (Authentication Header) Επεξεργασία Εξερχομένων Πακέτων Επεξεργασία Εισερχομένων Πακέτων Το πρωτόκολλο ESP (Encapsulation Security Payload) Επεξεργασία Εξερχομένων Πακέτων Επεξεργασία Εισερχομένων Πακέτων Διαχείριση Κλειδιών Γενικά Το IPsec (Internet Protocol Security) είναι μια σουίτα πρωτοκόλλων που παρέχει ασφάλεια σε επικοινωνίες που χρησιμοποιούν το IP (Internet Protocol) και στις δύο εκδόσεις του (στο IPv4 προαιρετικά, στο IPv6 υποχρεωτικά). Αυτό το πετυχαίνει παρέχοντας υπηρεσίες πιστοποίησης του αποστολέα (authentication) ή/και κρυπτογράφησης (encryption) κάθε πακέτου IP μίας συνεδρίας επικοινωνίας (communication session). Ακόμη, το IPsec περιλαμβάνει πρωτόκολλα για την δημιουργία αμοιβαίας πιστοποίησης (mutual authentication) μεταξύ δύο άκρων στην αρχή της συνεδρίας και πρωτόκολλα διαπραγμάτευσης των κρυπτογραφικών κλειδιών που θα χρησιμοποιηθούν κατά την συνεδρία. Προαιρετικά μπορεί να παρέχει και προστασία παρεμβολής πακέτων (anti-replay). Τα χαρακτηριστικά του ορίζονται από αρκετά RFC (Request for Comments) που προσδιορίζουν τις λεπτομέρειες για τα διαφορετικά τμήματα του πρωτοκόλλου, καθώς και πώς αυτά αλληλεπιδρούν μεταξύ τους Το IPsec είναι ένα απ άκρου-εις-άκρον (end-to-end) σύστημα ασφάλειας που λειτουργεί στο επίπεδο Δικτύου της στοίβας TCP/IP. Μπορεί να χρησιμοποιηθεί για ην προστασία της επικοινωνίας μεταξύ ενός ζεύγους συνομιλητών (Host-to-Host), μεταξύ ενός ζεύγους από Security Gateways (SW) (Network-to-Network) ή μεταξύ ενός άκρου και ενός SW (Network-to- Host). Το γεγονός ότι λειτουργεί σε επίπεδο Δικτύου του επιτρέπει να παρέχει τις παραπάνω υπηρεσίες ανεξάρτητα από τα πρωτόκολλα που χρησιμοποιούνται σε παραπάνω επίπεδα. Ακόμη, προστατεύει όλα τα παραπάνω επίπεδα της στοίβας και, αν επιλεγεί, και το επίπεδο IP. 19

34 Σχήμα 3.1: Η θέση του IPsec στην στοίβα πρωτοκόλλων. Το IPsec ορίζει δύο πρωτόκολλα, το Authentication Header(AH) και το Encapsulating Security Protocol(ESP). Κάθε ένα αποσκοπεί σε διαφορετικές ιδιότητες ασφαλείας και χρησιμοποιεί τα κατάλληλα είδη κρυπτογραφικών αλγορίθμων για αυτό τον σκοπό. Το AH παρέχει data integrity, data origin authentication και προαιρετικά anti-replay προστασία, και το ESP παρέχει ότι και το AH και επιπλέον data confidentiality. Οι ποιο συνήθεις κρυπτογραφικοί αλγόριθμοι είναι οι HMAC-SHA1 και HMAC-MD5 για integrity και authentication και οι AES και 3DES για confidentiality. Μπορεί βεβαίως, να χρησιμοποιηθεί οποιοσδήποτε κρυπτογραφικός αλγόριθμος επιθυμείται. Στο IPsec ορίζονται δύο τρόποι επικοινωνίας (modes), ο Transport και ο Tunnel mode. Στον Transport η επικοινωνία που αναλαμβάνει να προστατέψει το IPsec είναι απ άκρου εις άκρου(host-to-host). Το Tunnel mode αναλαμβάνει τις περιπτώσεις Network-to-Network και Network-to-Host. Στα σχήματα 3.2, 3.3 και 3.4 παρουσιάζονται οι τρεις τρόποι επικοινωνίας. Με την πράσινη γραμμή συμβολίζεται το μέρος της διαδρομής που ασφαλίζει ο κάθε τρόπος. Σχήμα 3.2: Host-to-Host (Transport Mode) Σχήμα 3.3: Network-to-Host (Tunnel Mode) 20

35 Σχήμα 3.4: Network-to-Network (Tunnel Mode) Πριν την έναρξη οποιασδήποτε ασφαλούς επικοινωνίας, θα πρέπει πρώτα να οριστούν - συμφωνηθούν οι παράμετροι της, όπως οι κρυπτογραφικοί αλγόριθμοι που θα χρησιμοποιηθούν, τα κλειδιά, το πρωτόκολλο που θα εφαρμοστεί (AH ή ESP) κτλ. Αυτοί οι παράμετροι ασφαλείας αποτελούν μια Συσχέτιση Ασφαλείας (Security Association SA). Για κάθε καινούρια ασφαλή συνδιάλεξη θα πρέπει να δημιουργηθεί ένα SA και στα δύο άκρα της επικοινωνίας. Η δημιουργία των SA στο IPsec μπορεί να είναι είτε χειροκίνητη είτε αυτοματοποιημένη. Στην χειροκίνητη, ο χρήστης πρέπει να ορίσει τις επιθυμητές παραμέτρους και στα δύο άκρα της επικοινωνίας, και στα ενδιάμεσα Security Gateways αν αυτά παίρνουν μέρος. Η χειροκίνητη δημιουργία έχει πολλά μειονεκτήματα, όπως το κόστος συντήρησης, η επιρρέπεια σε ανθρώπινα λάθη κ.α. Για αυτό στην πράξη προτιμάται ο αυτοματοποιημένος τρόπος. Το Internet Key Exchange Protocol (IKE) είναι το πρωτόκολλο που αναλαμβάνει τον διακανονισμό των παραμέτρων, την ασφαλή ανταλλαγή κλειδιών μεταξύ των συστημάτων και την συντήρηση τους. Είναι ένα αρκετά περίπλοκο πρωτόκολλο, το οποίο βασίζεται στα πρωτόκολλα Oakley και ISAKMP (Internet Security Association and Key Management Protocol). Οι συσχετίσεις ασφαλείας περιέχουν τις παραμέτρους για μια ασφαλή επικοινωνία. Όμως δεν γνωρίζουν αν τα δύο άκρα είναι θεμιτό να επικοινωνούν μέσω του IPsec. Το ποιος θα επικοινωνεί με ποιόν και το αν σε αυτή την επικοινωνία θα χρησιμοποιηθεί το IPsec, ορίζεται μέσω του μηχανισμού των Πολιτικών Ασφαλείας (Security Policy - SP). Οι πολιτικές ασφαλείας αποτελούν έναν μηχανισμό διαχείρισης του IPsec για τους χρήστες. Έτσι ο χρήστης του συστήματος ορίζει σε ποιο υψηλό επίπεδο, την φύση της επικοινωνίας με άλλα συστήματα, χωρίς να τον ενδιαφέρουν οι χαμηλού επιπέδου λεπτομέρειες (αλγόριθμοι, κλειδιά κτλ). Οι ενέργειες που ορίζονται στις πολιτικές του IPsec είναι τρεις: Προστασία (Apply IPsec, Protect) της κίνησης, Παράκαμψη IPsec (Bypass) της ή Απόρριψη (Discard, Drop) της. Οι πολιτικές ασφαλείας έχουν ένα σύνολο από «επιλογείς» (selectors), με τους οποίους φιλτράρεται η κίνηση, για να αποφασιστεί σε ποία πολιτική ανήκει. Οι επιλογές για την θέση υλοποίησης του IPsec στην στοίβα είναι οι εξής: «Native»: To IPsec ενσωματώνεται στην στοίβα πρωτοκόλλων. Για να μπορεί να ενσωματωθεί θα πρέπει να έχουμε πρόσβαση στον κώδικα της στοίβας. «Bump-in-the-stack» (BITS): Το IPsec υλοποιείται «κάτω» από μία είδη υλοποιημένη έκδοση του επιπέδου IP, δηλαδή ανάμεσα στο επίπεδο δικτύου και της διεπαφής δικτύου. Εδώ δεν απαιτείται πρόσβαση στον πηγαίο κώδικα. Η υλοποίηση αυτή προτιμάται όταν πρόκειται να χρησιμοποιηθούν εμπορικά προϊόντα κλειστού κώδικα. 21

36 «Bump-in-the-Wire» (BITW): Η υλοποίηση γίνεται σε εξωτερική συσκευή και όχι στα συστήματα τα οποία θέλουν να κάνουν χρήση του IPsec. Αυτός ο τρόπος είναι συνήθης σε στρατιωτικές και μερικές εμπορικές εφαρμογές. Η συσκευή-ενσωματωμένο σύστημα λειτουργεί ως «βοηθός» των συστημάτων και πολλές φορές έχει δική του IP διεύθυνση Επεξεργασία εξερχόμενης κίνησης Τα βήματα που ακολουθεί το IPsec κατά την επεξεργασία των εξερχομένων πακέτων είναι: Αρχικά, οι πληροφορίες της κεφαλίδας του εξερχομένου πακέτου χρησιμοποιούνται για να βρεθεί πολιτική που έχει οριστεί να εφαρμόζεται σε αυτή την κίνηση. Αν δεν βρεθεί καμία πολιτική που να ταιριάζει, το πακέτο απορρίπτεται (Discard). Αν έχει βρεθεί κάποια πολιτική, τότε εφαρμόζεται. Στην περίπτωση της παράκαμψης δεν χρειάζεται κάποια άλλη ενέργεια από το IPsec, το πακέτο συνεχίζει την πορεία του στην στοίβα. Στην περίπτωση της απόρριψης, απορρίπτεται. Στην περίπτωση της προστασίας, βρίσκουμε το SA που αντιστοιχεί στην πολιτική και εφαρμόζουμε την προστασία που ορίζει το SA. Αν δεν υπάρχει SA, τότε (αν υποστηρίζεται ) ξεκινάει η διαδικασία δημιουργίας ενός SA με την χρήση του διαχειριστή κλειδιών (πχ ΙΚΕ). Τέλος, το πακέτο (αν δεν έχει απορριφθεί) αποστέλλεται. Η παραπάνω διαδικασία παρουσιάζεται σε μορφή διαγράμματος ροής στο σχήμα

37 Εξερχόμενο Πακέτο Εύρεση πολιτικής Δεν βρέθηκε DISCARD Εφαρμογή πολιτικής Protect Bypass Discard BYPASS Αποτυχία IKE Εύρεση SA Δεν βρέθηκε IKE Εφαρμογή προστασίας Προώθηση του πακέτου στο επόμενο επίπεδο της στοίβας Σχήμα 3.5: Διαδικασία Επεξεργασία Εξερχόμενων πακέτων στο IPsec Επεξεργασία εισερχόμενης κίνησης Για την εισερχόμενη κίνηση, η διαδικασία είναι η εξής: Αρχικά, οι πληροφορίες της κεφαλίδας του εισερχομένου πακέτου χρησιμοποιούνται για να βρεθεί πολιτική που έχει οριστεί να εφαρμόζεται σε αυτή την κίνηση. Αν δεν βρεθεί καμία πολιτική που να ταιριάζει, το πακέτο απορρίπτεται (Discard).Αν η πολιτική είναι Bypass ή Discard, γίνονται οι αντίστοιχες ενέργειες. Στην περίπτωση που η πολιτική είναι Protect, βρίσκουμε το αντίστοιχο SA με χρήση ενός δείκτη (ένας αριθμός, μοναδικός για κάθε SA) που υπάρχει στο εισερχόμενο 23

38 πακέτο (SPI Security Parameter Index). Έπειτα εφαρμόζουμε την προστασία που ορίζει το SA. Αν δεν βρεθεί SA, το πακέτο απορρίπτεται (σε αντίθεση με την εξερχόμενη κίνηση, όπου δημιουργείται ένα SA). Μετά την εφαρμογή της προστασίας, ελέγχεται το επεξεργασμένο πακέτο με την αντίστοιχη πολιτική του, για να επαληθευτεί η σωστή προστασία του. Η παραπάνω διαδικασία παρουσιάζεται σε μορφή διαγράμματος ροής στο σχήμα 3.6. Εισερχόμενο Πακέτο Εύρεση πολιτικής Δεν βρέθηκε DISCARD Εφαρμογή πολιτικής Bypass Discard BYPASS Protect Εύρεση SA Εφαρμογή προστασίας Δεν είναι συνεπές Έλεγχος συνέπειας πολιτικής και πακέτου Προώθηση του πακέτου στο επόμενο επίπεδο της στοίβας Σχήμα3.6: Διαδικασία Επεξεργασία Εισερχόμενων πακέτων στο IPsec Transport και Tunnel Mode Όπως έχει αναφερθεί και προηγουμένως, τα πρωτόκολλα του IPsec μπορούν να χρησιμοποιηθούν είτε σε Transport είτε σε Tunnel mode. Η διαφορά τους έγκειται στο ποιο μέρος του πακέτου IP θεωρείται «φορτίο» (payload) του πρωτοκόλλου. Στο transport mode ως payload θεωρούνται τα δεδομένα του ανωτέρου επιπέδου μόνο, ενώ στο tunnel, προστίθεται 24

39 και η κεφαλίδα IP στο payload. Τα σχήματα 3.7 και 3.8 δείχνουν την μορφή του πακέτου για transport και tunnel mode αντίστοιχα, και για τα δύο πρωτόκολλα του IPsec (ΑΗ,ESP). Σχήμα 3.7: Μορφή του πακέτου για AH και ESP Transport Mode. Στο transport mode, μόνο οι hosts εκτελούν το IPsec και μετά την εκτέλεση του, λαμβάνουν τα δεδομένα του ανωτέρου επιπέδου. Αρχικά στο πακέτο εφαρμόζεται η κατάλληλη προστασία από τον αποστολέα, στα δεδομένα του ανωτέρου πρωτοκόλλου προστίθεται η αντίστοιχη κεφαλίδα, έπειτα προστίθεται και η κεφαλίδα IP και τέλος το πακέτο αποστέλλετε με την διεύθυνση του τελικού παραλήπτη. Όταν φτάσει στον παραλήπτη, γίνεται η επεξεργασία του πακέτου από το IPsec, και το προκύπτον payload δίνεται στο κατάλληλο πρωτόκολλο ανωτέρου επιπέδου. Σχήμα 3.8: Μορφή του πακέτου για AH και ESP Tunnel Mode. Στο tunnel mode συμμετέχουν και ένα ή δύο Security Gateways. Στην περίπτωση network-to-network χρησιμοποιούνται δύο SG και η διαδικασία έχει ως εξής. Αρχικά, το πακέτο αποστέλλεται κανονικά από τον αποστολέα, και φτάνει στο τοπικό Security Gateway. Εδώ εφαρμόζεται η προστασία του IPsec σε ολόκληρο το πακέτο IP. Στη συνέχεια προστίθεται η κεφαλίδα του πρωτοκόλλου ασφαλείας, μετά την αρχική κεφαλίδα IP. Μετά προστίθεται μια νέα κεφαλίδα IP, στην οποία δίνονται η διεύθυνση του τοπικού και του απομακρυσμένου Security Gateway, και ακολουθεί η αποστολή του. Όταν το πακέτο φτάσει στο απομακρυσμένο SG, αυτό το επεξεργάζεται με το IPsec, και προκύπτει το αρχικό πακέτο IP( κεφαλίδα και 25

40 δεδομένα ανωτέρου επιπέδου). Στη συνέχεια, το IP πακέτο αποστέλλεται ως έχει στο τοπικό δίκτυο ώστε να φτάσει στον τελικό παραλήπτη του. Όταν χρησιμοποιείται ένα SG (network-to-host), αλλάζουν δύο πράγματα στην επεξεργασία του πακέτου από την περίπτωση network-to-network. Πρώτον, στο άκρο που δεν υπάρχει SG, ο host αναλαμβάνει την επεξεργασία του SG κατά την αποστολή. Δηλαδή ο host δρα ως SG του εαυτού του. Δεύτερον, κατά την αποστολή πακέτου από το άκρο με SG, το SG μόνο δρομολογεί το πακέτο, αφού σε αυτό δεν εφαρμόζεται tunnel mode. Δηλαδή στην περίπτωση network-to-host, έχουμε tunnel mode από τον host στο SG, και transport mode από το άκρο με SG προς τον host. 3.2 Συσχετίσεις Ασφαλείας( Security Associations SA) Μια Συσχέτιση Ασφαλείας, τις προαναφέρθηκε, είναι μια δομή δεδομένων, η οποία κρατάει πληροφορίες σχετικά με τις παραμέτρους που εφαρμόζονται σε μια συνεδρία ασφαλείας. Στο IPsec, τα SA κρατούν παραμέτρους για κάθε μονόδρομη συνεδρία. Έτσι, αμφίδρομη συνεδρία, που είναι και το σύνηθες, χρησιμοποιούνται δύο SA σε κάθε σύστημα, ένα για την είσοδο και ένα για την έξοδο. Τα SA αποθηκεύονται σε μια βάση δεδομένων, την SADB (Security Association Database). Κάθε SA έχει έναν μοναδικό δείκτη για να μπορούμε να ξεχωρίζουμε και να αναζητούμε τα SA. Τις ο δείκτης ονομάζεται Security Parameter Index (SPI). Τα πακέτα έχουν ένα ειδικό πεδίο στην κεφαλίδα τις (AH και ESP) που κρατά την τιμή του SPI του αντίστοιχου SA. Οι βασικότερες πληροφορίες που κρατάει κάθε SA είναι: Ποιο πρωτόκολλο ασφαλείας χρησιμοποιείται (AH ή ESP) Ποιο mode χρησιμοποιείται (Transport ή Tunnel) Σειριακός Αριθμός για το Anti-Replay (Sequence Number) Αλγόριθμος πιστοποίησης του AH, το κλειδί του κτλ. Αλγόριθμος κρυπτογράφησης του ESP, mode του αλγορίθμου, κλειδί, διάνυσμα αρχικοποίησης κτλ. Αλγόριθμος ακεραιότητας δεδομένων του ESP, κλειδί κτλ. Τα SA μπορούν να οριστούν είτε χειρονακτικά από τον χρήστη του συστήματος είτε αυτοματοποιημένα μέσω κάποιου πρωτοκόλλου διαπραγμάτευσης. Ακόμη, έχουν όριο ζωής, δηλαδή να καταργούνται μετά από κάποιο χρονικό διάστημα και να πρέπει γίνει διαπραγμάτευση από την αρχή. 3.3 Βάση Δεδομένων Πολιτικών Ασφαλείας (Security Policy Database SPD) Σε αυτή την βάση δεδομένων κρατούνται οι πολιτικές που έχουν οριστεί. Εδώ γίνεται η αναζήτηση τις κατάλληλης πολιτικής για κάποιο πακέτο. Η σειρά με την οποία είναι αποθηκευμένες οι πολιτικές στην SPD, ορίζει και την προτεραιότητα εφαρμογής τις. Κάθε 26

41 πολιτική ασφαλείας είναι μια δομή δεδομένων, η οποία κρατάει πληροφορίες χρήσιμες για το φιλτράρισμα τις κίνησης και τις λειτουργίες που πρέπει να εφαρμοστούν σε αυτή. Ακόμη, κάθε πολιτική περιέχει και κάποιον/ους επιλογέα/εις ( selectors). Οι τιμές τις χρησιμοποιούνται κατά την αναζήτηση μιας πολιτικής. Πιθανοί selectors είναι: Λίστα από τοπικές διευθύνσεις IP Λίστα απομακρυσμένες διευθύνσεις IP. Πρωτόκολλο ανωτέρου επιπέδου Τοπική θύρα (port) Απομακρυσμένη θύρα. Κάθε υλοποίηση μπορεί να παρέχει κάποιους, όλους ή και επιπρόσθετους selectors, αναλόγως με τις ανάγκες που προσπαθεί να καλύψει. Οι βασικότερες πληροφορίες που κρατάει μια πολιτική είναι: Το είδος τις πολιτικής που θα εφαρμοστεί. Οι τρείς πιθανές τιμές είναι Protect, Bypass και Discard. Οι παρακάτω πληροφορίες υπάρχουν σε μια πολιτική μόνο στην περίπτωση του Protect IPsec mode (δηλ Transport ή Tunnel) (για Tunnel Mode) Τοπική και Απομακρυσμένη διεύθυνση IP του Tunnel. Το πρωτόκολλο ασφαλείας που εφαρμόζεται (δηλ AH ή ESP). Λίστα αλγορίθμων που μπορούν να χρησιμοποιηθούν, με σειρά προτεραιότητας. Αυτή η πληροφορία είναι χρήσιμη κατά την διαπραγμάτευση του ποιος αλγόριθμος θα χρησιμοποιηθεί. Τις δείκτης τις το SA που πιθανώς χρησιμοποιεί αυτή η πολιτική. 3.4 Το πρωτόκολλο AH (Authentication Header) Το πρωτόκολλο AH παρέχει πιστοποίηση, ακεραιότητα δεδομένων και προαιρετικά Anti-Replay προστασία σε πακέτα IP. Η προστασία παρέχεται για όσο το δυνατόν μεγαλύτερο μέρος του πακέτου IP καθώς και των δεδομένων του πρωτοκόλλου ανωτέρου επιπέδου. Επειδή όμως κάποια πεδία της κεφαλίδας IP αλλάζουν κατά την μεταφορά του, οι τιμές τους δεν μπορούν να είναι προβλέψιμες κατά την άφιξη του στον παραλήπτη. Αυτά τα πεδία δεν προστατεύονται από το AH. Αυτό το πρωτόκολλο ορίζει μια κεφαλίδα, η οποία παρέχει πληροφορίες στο IPsec για την προστασία του πακέτου. Η μορφή τις κεφαλίδας φαίνεται στο σχήμα Παρακάτω εξηγείται η λειτουργία του κάθε πεδίου: Next Header: Ο προτυποποιημένος αριθμός 8 bit (IANA) του πρωτοκόλλου που ακολουθεί το AH. Σε tunnel mode μπορεί να πάρει τις τιμές 4 (IPv4) ή 41 (IPv6). Payload length: 8μπιτο πεδίο που περιέχει το μέγεθος όλου του πακέτου AH, ως πολλαπλάσιο 32bit, πλην 2. Reserved: Κρατείται για μελλοντική χρήση. Πρέπει να τεθεί στο 0 από τον αποστολέα, και ο παραλήπτης δεν χρειάζεται να το ελέγξει. 27

42 Security Parameter Index (SPI): Είναι μια 32μπιτη τιμή που χρησιμοποιείται από τον παραλήπτη για να βρει το SA που αντιστοιχεί στο πακέτο. Sequence Number: Περιέχει έναν μη-προσημασμένο 32μπιτο ακέραιο, ο οποίος δηλώνει τον αύξων αριθμό του πακέτου στην συνεδρία κάθε SA, και χρησιμοποιείται στον μηχανισμό Anti-Replay. Το πεδίο είναι υποχρεωτικό, ακόμα και όταν δεν χρησιμοποιείται το Anti-Replay. Authentication Data (ή Integrity Check Value ICV): Είναι ένα μεταβλητού μεγέθους πεδίο, το οποίο περιέχει το αποτέλεσμα του αλγορίθμου ακεραιότηταςπιστοποίησης. Αυτό το πεδίο πρέπει να είναι ακέραιο πολλαπλάσιο των 32bit. Αν χρειάζεται, χρησιμοποιείται padding για την σωστή ευθυγράμμιση (alignment) του πακέτου στα 32bit. Σχήμα 3.9: Κεφαλίδα του πρωτοκόλλου AH Επεξεργασία Εξερχομένων Πακέτων Εύρεση SA: Το πρωτόκολλο AH εφαρμόζεται όταν το SA που αντιστοιχεί σε αυτή την κίνηση το καθορίζει ως πρωτόκολλο. Υπολογισμός του Sequence Number: Ο αποστολέας ξεκινάει τον μετρητή του Sequence Number από το 0, και αυξάνει κατά 1 για κάθε επόμενο εξερχόμενο πακέτο. Η τιμή του αποθηκεύεται στο SA. Στην περίπτωση της αυτόματης δημιουργίας των SA, όταν ο μετρητής γυρίσει στο 0 αφού έχει διανύσει όλες τις τιμές, το SA «λήγει» και θα πρέπει να δημιουργηθεί καινούριο. Αν η διαχείριση των SA είναι χειροκίνητη τότε ο μετρητής ξεκινάει πάλι από το 0. Υπολογισμός του ICV: Για τον υπολογισμό του ICV, λαμβάνονται υπ όψιν το payload, η κεφαλίδα του AΗ και ένα κομμάτι της εξωτερικής κεφαλίδας IP. Το πεδίο Authentication Data του AH πρέπει να περιέχει μηδενικά κατά τον υπολογισμό αυτό. Από την κεφαλίδα IP επιλέγονται μόνο τα πεδία τα οποία παραμένουν σταθερά στην διαδρομή του πακέτου (immutable). Τα υπόλοιπα (mutable) θέτονται στο 0. Τα μεταβλητά πεδία της κεφαλίδας IPv4 είναι: TOS, Flags, Fragment Offset, TTL και Header Checksum. Για το IPv6 είναι: TOS, Flow Label και Hop Limit. Μετά τον υπολογισμό του ICV, αυτό τοποθετείται στο πεδίο Authentication Data Padding: Τέλος, αν χρειάζεται, χρησιμοποιείται padding στο ICV, έτσι ώστε ολόκληρο το πακέτο να είναι πολλαπλάσιο 32bit στο IPv4 και 64bit στο IPv6. Το padding ίσως να χρειάζεται για να κάνουμε το μέγεθος του πακέτου πολλαπλάσιο ενός block αλγορίθμου που χρησιμοποιείται για πιστοποίηση-ακεραιότητα. 28

43 3.4.2 Επεξεργασία Εισερχομένων Πακέτων Αναζήτηση SA: Αρχικά, με χρήση του SPI που βρίσκεται στην κεφαλίδα AH του εισερχόμενου πακέτου, γίνεται αναζήτηση για αντίστοιχο SA. Αν δεν βρεθεί, το πακέτο απορρίπτεται. Anti-Replay: Αν η Anti-Replay προστασία είναι ενεργοποιημένη, ελέγχεται ο Sequence Number. Αν είναι ο αναμενόμενος, τότε η επεξεργασία συνεχίζεται, αλλιώς το πακέτο απορρίπτεται. Έλεγχος του ICV: Ο παραλήπτης υπολογίζει το ICV, με τον ίδιο τρόπο που γίνεται και στον αποστολέα και έπειτα ελέγχει αν αυτό είναι ίδιο με το ICV που περιέχεται στο πακέτο. Αν δεν είναι, αυτό σημαίνει ότι έγινε κάποια αλλαγή κατά την μεταφορά του πακέτου, και ο πακέτο απορρίπτεται. 3.5 Το πρωτόκολλο ESP (Encapsulation Security Payload) Το πρωτόκολλο ESP παρέχει πιστοποίηση, ακεραιότητα δεδομένων, εμπιστευτικότητα και προαιρετικά Anti-Replay προστασία. Το σύνολο των υπηρεσιών που θα παρέχει, ορίζεται κάθε φορά από το αντίστοιχο SA. Η πιστοποίηση και η ακεραιότητα παρέχονται πάντα μαζί, ενώ η εμπιστευτικότητα ανεξάρτητα. Έτσι, υπάρχουν τρεις συνδυασμοί υπηρεσιών: Μόνο εμπιστευτικότητα Μόνο πιστοποίηση-ακεραιότητα Εμπιστευτικότητα και πιστοποίηση-ακεραιότητα To ESP χρησιμοποιεί και κεφαλίδα και «ουρά» (footer, trailer) πακέτου. Η μορφή ενός πακέτου ESP φαίνεται στο σχήμα Τα πεδία είναι τα εξής: SPI: Όπως και πριν, αυτός είναι ο δείκτης για το αντίστοιχο SA. Sequence Number: Όπως και πριν, ο αύξων αριθμός για την Anti-Replay προστασία IV (Initialization Vector): Το πεδίο αυτό είναι προαιρετικό. Χρησιμοποιείται όταν απαιτείται διάνυσμα αρχικοποίησης από τον αλγόριθμο κρυπτογράφησης. Padding: Το πεδίο αυτό χρησιμοποιείται για δύο λόγους. Αν χρησιμοποιείται bock αλγόριθμος κρυπτογράφησης, ευθυγραμμίζει το πακέτο στο μέγεθος του block. Αλλιώς ευθυγραμμίζει το πακέτο σε πολλαπλάσιο των 32bit. Τα περιεχόμενα των byte του padding ορίζονται είτε από τον αλγόριθμο κρυπτογράφησης, αλλιώς χρησιμοποιείται η προκαθορισμένη διαδικασία padding. Αυτή η διαδικασία «γεμίζει» το πεδίο padding με μια μονοτονικά αύξουσα ακολουθία ξεκινώντας από το 1 (δηλ. 1,2,3 ). Pad Length: Το πεδίο αυτό κρατάει το μήκος του πεδίου padding σε byte. Next Header: Ο αριθμός IANA του ανωτέρου πρωτοκόλλου Authentication Data: Είναι ένα μεταβλητού μεγέθους πεδίο, το οποίο περιέχει το αποτέλεσμα του αλγορίθμου ακεραιότητας-πιστοποίησης. Το μέγεθος αυτού του πεδίου ορίζεται από τον συγκεκριμένο αλγόριθμο πιστοποίησηςακεραιότητας. 29

44 Σχήμα 3.10: Κεφαλίδα του πρωτοκόλλου ESP Επεξεργασία Εξερχομένων Πακέτων Αφού βρεθεί το SA που αντιστοιχεί στο εξερχόμενο πακέτο, και το SA ορίζει χρήση του πρωτοκόλλου ESP, ακολουθούν οι παρακάτω ενέργειες: Αρχικά χρησιμοποιείται padding στο payload, έτσι ώστε το μέγεθος του πακέτου να γίνει πολλαπλάσιο των 32 ή 64 bit (IPv4 και IPv6 αντίστοιχα), ή έτσι ώστε να γίνει πολλαπλάσιο του μεγέθους block του αλγόριθμου κρυπτογράφησης. Ακόμη τοποθετούνται και τα πεδία Payload Length και Next Header. Έπειτα, εκτελείται ο αλγόριθμος κρυπτογράφησης στο payload, αν έχει οριστεί χρήση της εμπιστευτικότητας. Το κλειδί και το διάνυσμα αρχικοποίησης (IV) αν χρησιμοποιείται, παρέχονται από το SA. Αν χρησιμοποιείται IV, τοποθετείται στην αρχή του payload, μετά από την κεφαλίδα του ESP. Ακολουθεί ο υπολογισμός του Sequence Number και η τοποθέτηση της κεφαλίδας του ESP. Τέλος, αν έχει οριστεί πιστοποίηση-ακεραιότητα, υπολογίζεται το ICV επί της κεφαλίδας και του payload του πακέτου, και το αποτέλεσμα τοποθετείται στο trailer (πεδίο Authentication Data). Το κλειδί και άλλα πιθανά δεδομένα που χρειάζεται ο αλγόριθμος παρέχονται από το SA Επεξεργασία Εισερχομένων Πακέτων Για να ξεκινήσει η επεξεργασία ενός εισερχόμενου πακέτου με το ESP, θα πρέπει πρώτα να έχει βρεθεί το αντίστοιχο SA, και να ορίζει επεξεργασία με το ESP. Αν δεν βρεθεί SA, το πακέτο απορρίπτεται. Αλλιώς, γίνονται τα παρακάτω: Αρχικά, αν χρησιμοποιείται Anti-Replay προστασία, ελέγχεται η τιμή του Sequence Number και αν βρεθεί σωστή τότε η επεξεργασία του πακέτου συνεχίζεται. Σε αντίθετη περίπτωση το πακέτο απορρίπτεται. 30

45 Αν χρησιμοποιείται πιστοποίηση-ακεραιότητα, υπολογίζεται το ICV του πακέτου και συγκρίνεται με αυτό που υπάρχει είδη στο πακέτο. Το κλειδί παρέχεται από το SA. Αν βρεθούν ίδια, τότε το πακέτο πέρασε τον έλεγχο πιστοποίησης-ακεραιότητας, αλλιώς απορρίπτεται. Στη συνέχεια, αν χρησιμοποιείται εμπιστευτικότητα, εκτελείται ο αλγόριθμος αποκρυπτογράφησης, με χρήση του κλειδιού που παρέχει το SA, και του IV που περιέχει το πακέτο, αν υπάρχει. Τέλος, αφαιρείται το padding, και προκύπτει το καθαρό payload. 3.6 Διαχείριση Κλειδιών Στο IPsec, η διαχείριση κλειδιών γίνεται με το πρωτόκολλο IKE (Internet Key Exchange). Το IKE είναι ένα περίπλοκο πρωτόκολλο, το οποίο βασίζεται στα πρωτόκολλα Oakley και ISAKMP. Ο σκοπός του IKE είναι η αυτοματοποιημένη δημιουργία και διαχείριση των SA. Οι βασικές του αρμοδιότητες είναι: Η δημιουργία καινούριων SA. Αυτό το πετυχαίνει με μια σειρά από διαπραγματεύσεις με το άλλο άκρο, ως προς τις παραμέτρους της επικοινωνίας, όπως π.χ. αλγόριθμοι πιστοποίησης και κρυπτογράφησης, κλειδιά κτλ. Η έλεγχος λήξης των SA και η επαναδιαπραγμάτευση τους. Η λειτουργία του IKE, γίνεται σε δύο φάσεις. Πρώτα χρησιμοποιείται το ISAKMP, και δημιουργείται ένα ISAKMP Security Association, διαδικασία που δημιουργεί ένα ασφαλές κανάλι επικοινωνίας. Έπειτα, χρησιμοποιείται αυτό το ασφαλές κανάλι για την διαπραγμάτευση των IPsec SA (ένα ζευγάρι από SA). Η πρώτη φάση έχει διάφορους τρόπους εκτέλεσης, που ονομάζονται modes, και είναι: Main Mode, Aggressive Mode και Base Mode. Κάθε mode ορίζεται ως μια σειρά μηνυμάτων, τα οποία αποτελούνται από διάφορες κεφαλίδες και φορτία. Η φάση δύο έχει μόνο ένα mode, το Quick Mode. Ακόμη υπάρχουν και άλλες ανταλλαγές μηνυμάτων για διάφορες λειτουργίες του IKE, οι οποίες δεν ανήκουν στις δύο φάσεις, όπως π.χ. New Groups Mode, Unacknowledged Notification exchanges και Acknowledged Notification exchanges. Πριν από την έναρξη του IKE, θα πρέπει να γίνει η πιστοποίηση των ταυτοτήτων των δύο άκρων. Το ΙΚΕ χρησιμοποιεί τρεις τρόπους για την πιστοποίηση: κοινό μυστικό (pre-shared secret key), ψηφιακές υπογραφές (digital signatures) και ασύμμετρη κρυπτογράφηση (public key encryption). 31

46 32

47 ΚΕΦΑΛΑΙΟ 4 Γενική Περιγραφή του Συστήματος Περιεχόμενα 4.1. Απαιτήσεις του Συστήματος Σχεδιαστικές Επιλογές Native Implementation Διαχωρισμός υλικού και λογισμικού Απαιτήσεις του Συστήματος Η παρούσα διπλωματική εργασία, περιγράφει μια υλοποίηση του IPsec με συ-σχεδίαση υλικού και λογισμικού σε FPGA. Η πλακέτα που χρησιμοποιήθηκε είναι η Virtex-5 ML505- ML509 Revision A, που περιέχει τον FPGA Virtex-5 XC5VFX70T. Για την εκτέλεση του software χρησιμοποιήθηκε ο soft-core επεξεργαστής Microblaze. Ακόμη το σύστημα χρειάζεται μια διεπαφή με δικτύου Ethernet, η οποία παρέχεται από την πλακέτα μαζί με τους κατάλληλους drivers, που παρέχονται από την Xilinx. Τέλος χρησιμοποιήθηκε και μία μνήμη DDR2 SDRAM για να μπορεί να αποθηκευτεί και να εκτελεστεί το software. Να σημειωθεί ότι το σύστημα μπορεί να υλοποιηθεί σε οποιοδήποτε board και επεξεργαστή, αρκεί να παρέχεται διεπαφή Ethernet, αρκετή επιφάνεια στον FPGA, και αρκετή μνήμη για την εκτέλεση του software. Για το software, χρησιμοποιήθηκε το lwip, το οποίο είναι μια υλοποίηση ανοικτού λογισμικού, της στοίβας TCP/IP για ενσωματωμένα συστήματα. Το λογισμικό αυτό παρέχεται από την Xilinx για τα συστήματα της, και σε αυτό έγιναν τροποποιήσεις και προσθήκες ώστε να ενσωματωθεί ο κώδικας του IPsec. Για τον προγραμματισμό και την αποσφαλμάτωση του συστήματος χρησιμοποιήθηκε ένα PC με εγκατεστημένη την σουίτα ISE της Xilinx. Ο προγραμματισμός γίνεται μέσω ενός καλωδίου JTAG-to-USB, και η αποσφαλμάτωση μέσω της σειριακής θύρας του board με καλώδιο UART-to-USB. Ακόμα, χρησιμοποιήθηκε ένας υπολογιστής, με λειτουργικό σύστημα Linux, στο οποίο ήταν εγκατεστημένο το λογισμικό ipsec-tools, το οποίο είναι μια υλοποίηση του IPsec για Linux. Ο υπολογιστής αυτός ήταν συνδεδεμένος μέσω Ethernet με το board του FPGA και τα δύο συστήματα ήταν ρυθμισμένα να επικοινωνούν με IPsec. Έτσι μπορούσαμε να παρακολουθούμε τα εισερχόμενα και εξερχόμενα πακέτα, και ταυτόχρονα να ελέγχουμε την απόκριση του συστήματος μας με ένα έτοιμο σύστημα ώστε να συμπεραίνουμε την ορθότητα της λειτουργίας του Σχεδιαστικές Επιλογές Το σύστημα μας υλοποιήθηκε ως ενσωματωμένο σύστημα, σε FPGA. Αυτό το περιβάλλον υλοποίησης έχει διάφορους περιορισμούς αλλά και πλεονεκτήματα. Κάποιοι από τους περιορισμούς που πρέπει να ληφθούν υπ όψιν είναι η επιφάνεια του hardware που θα χρησιμοποιηθεί στον FPGA, τα περιφερειακά που παρέχονται, και η ταχύτητα εκτέλεσης του software στον soft-core επεξεργαστή Microblaze. Τα βασικά πλεονεκτήματα είναι η γρήγορη ανάπτυξη, υλοποίηση και δοκιμή τμημάτων hardware. 33

48 Παίρνοντας υπ όψιν τα παραπάνω, έγιναν διάφορες σχεδιαστικές επιλογές με σκοπό την όσο το δυνατόν καλύτερη εκμετάλλευση των ιδιοτήτων του περιβάλλοντος υλοποίησης. Αυτές οι επιλογές εξηγούνται στα επόμενα υποκεφάλαια Native Implementation Όπως αναφέρεται στο κεφάλαιο 3.1, η υλοποίηση του IPsec μπορεί να γίνει με τρεις τρόπους. Ο τρόπος που επιλέχθηκε σε αυτή την υλοποίηση είναι ο «Native». Αυτό διότι υπήρχε διαθέσιμο ένα πακέτο software, το lwip (lightweight IP), το οποίο αποτελεί μια ολοκληρωμένη υλοποίηση της στοίβας TCP/IP για ενσωματωμένα συστήματα. Ακόμη αυτό το πακέτο αποτελεί ανοικτό λογισμικό, δίνοντας μας την επιλογή να επέμβουμε απ ευθείας στον πηγαίο κώδικα. Έχοντας έτοιμη μια υλοποίηση της στοίβας, απαλλαχθήκαμε από την πρόσθετη εργασία της υλοποίησης των απαραίτητων πρωτοκόλλων, για την λειτουργία του συστήματος ως δικτυακού συστήματος. Όμως, χρειάστηκε σε βάθος μελέτη του κώδικα και της προδιαγραφής του lwip, έτσι ώστε το σύστημά μας να εκμεταλλευτεί τις δυνατότητες του, και να γίνει σωστή διασύνδεση των δύο συστημάτων (lwip και IPsec) Διαχωρισμός υλικού και λογισμικού Το περιβάλλον ανάπτυξης του παρόντος συστήματος, μας δίνει την δυνατότητα υλοποίησης και hardware και software. Έτσι κάποιες μονάδες μπορούν να υλοποιηθούν σε hardware ενώ κάποιες άλλες να εκτελούνται σε software και οι υπομονάδες αυτές να λειτουργούν συνεργατικά (hardware-software co-design) αξιοποιώντας έτσι τα πλεονεκτήματα και των δύο, και ελαχιστοποιώντας τα μειονεκτήματά τους. Στη παρούσα διπλωματική, υλοποιήθηκαν τα βασικά μέρη του IPsec. Υλοποιήθηκαν και τα δύο πρωτόκολλα, το AH και το ESP. Περιλαμβάνονται και οι δύο τρόποι επικοινωνίας, transport και tunnel, και για τα δύο πρωτόκολλα. Το σύστημα μπορεί να λειτουργεί και ως host αλλά και ως Security Gateway. Ακόμη, υλοποιήθηκε η βασική λειτουργία των SADB και SPD, δίνοντας τα κυριότερα χαρακτηριστικά που πρέπει να έχουν. Η επεξεργασία των κεφαλίδων AH και ESP και οι βάσεις SPD και SADB υλοποιήθηκαν σε software ως μέρος του τροποποιημένου lwip στον Microblaze. Η ανάπτυξη του σε software έδειξε τα πλεονεκτήματα της πιο γρήγορης και εύκολης ανάπτυξης και αποσφαλμάτωσης αυτών των μερών και βοήθησε στην καλύτερη ενσωμάτωση του IPSec με το lwip. Στο σύστημα περιλαμβάνονται και οι κρυπτογραφικοί αλγόριθμοι CBC-AES-128 και HMAC-SHA-1-96 υλοποιοιμένοι σε hardware. Η επιλογή αυτών των τμημάτων για υλοποίηση σε υλικό έγινε διότι αποτελούν αρκετά χρονοβόρο κομμάτι του συστήματος. Η διαχείριση των SA υποστηρίζεται μόνο με τον χειροκίνητο τρόπο. Αυτό έγινε διότι, το πρωτόκολλο IKE είναι μεγάλο και περίπλοκο, και περιλαμβάνει αρκετά δύσκολα σημεία. Επιπρόσθετα χαρακτηριστικά του συστήματος είναι υποστήριξη και για Anti-Replay προστασία και μία εύελικτη διεπαφή ως προς τους κρυπτογραφικούς αλγόριθμους, ώστε να είναι εύκολο να συμπεριληφθούν και άλλοι αλγόριθμοι. 34

49 ΚΕΦΑΛΑΙΟ 5 Υλικό του Συστήματος (Hardware) Περιεχόμενα 5.1. Αρχιτεκτονική Custom IP Cores CBC-AES HMAC-SHA Διεπαφή του υλικού (hardware side interface) Αρχιτεκτονική Το σύστημα αποτελείται από έναν επεξεργαστή Microblaze, μια μνήμη DDR2 SDRAM, περιφερειακά συστήματα για την διεπαφή Ethernet, UART καθώς και τις μονάδες των κρυπτογραφικών αλγορίθμων. Όλα τα υποσυστήματα συνδέονται με τον επεξεργαστή μέσω ενός bus, του PLB (Processor Local Bus). Πρόσθετα περιφερειακά που χρειάστηκαν κατά την σχεδίαση είναι ένας διαχειριστής διακοπών (Interrupt Controller) και ένας χρονιστής (timer). Ο διαχειριστής διακοπών διαχειρίζεται τις διακοπές του Ethernet, του UART και του timer. Ο timer απαιτείται από το lwip για διάφορα χρονόμετρα. Η αρχιτεκτονική του συστήματος φαίνεται στο σχήμα 5.1. Interrupt Controller Timer UART Controller PLB DDR2 SDRAM Ethernet Controller CBC-AES-128 HMAC-SHA1-96 Σχήμα 5.1: Αρχιτεκτονική του συστήματος. Κάθε περιφερειακό σύστημα έχει το δικό του εύρος διευθύνσεων (address range) για την ενσωμάτωση του στην διευθυνσιοδότηση του Microblaze (Address Mapped IO). Την μεταφορά των δεδομένων από και προς την μνήμη των περιφερειακών των κρυπτογραφικών αλγορίθμων την αναλαμβάνει ο Microblaze, (δηλ. δεν υπάρχει Direct Memory Access - DMA σύστημα). Αυτό διότι το σύστημα μας δεν λειτουργεί σε multipacket mode, δηλαδή δεν είναι ικανό να επεξεργάζεται ταυτόχρονα παραπάνω από ένα πακέτα. Το τελευταίο οφείλεται στο γεγονός ότι η lwip δεν λειτουργεί με νήματα(threads) από μόνη της αλλά χρειάζεται κάποιο λειτουργικό σύστημα (πχ Linux ή XilKernel) ή αλλαγές στον κώδικα του για την διαχείριση νημάτων. 35

50 5.2. Custom IP Cores CBC-AES-128 Περιγραφή του αλγορίθμου Ο CBC-AES-128 αποτελείται από τον block συμμετρικό αλγόριθμο κρυπτογράφησης AES-128 σε CBC mode (βλ. Σχήμα 2.2). Ο αριθμός 128 είναι δηλωτικός του μεγέθους του κλειδιού σε bits (υπάρχουν αντίστοιχα AES-196 και AES-256). Ως είσοδο παίρνει block μεγέθους 128bits και εξάγει κρυπτογραφημένα blocks των 128bits. Ο αλγόριθμος αποτελείται από δύο λειτουργίες, την κρυπτογράφηση της εισόδου και την παραγωγή εσωτερικών κλειδιών τα οποία χρησιμοποιούνται για την κρυπτογράφηση της εισόδου. Η κρυπτογράφηση αποτελείται από μία επεξεργασία που επαναλαμβάνεται 10 φόρες (10 γύροι) όταν το κλειδί είναι μεγέθους 128 bits (12 για 196bits και 14 για 256bits). Αντίστοιχα και η παραγωγή των κλειδιών αποτελείται από μία επεξεργασία που επαναλαμβάνεται σε 10 γύρους. PLAINTEXT PLAINTEXT AddRoundKey AddRoundKey 9 ROUNDS ENCRYPTION ROUND LAST ROUND SubBytes ShiftRows MixColumns AddRoundKey SubBytes ShiftRows LAST ROUND DECRYPTION ROUND InvSubBytes InvShiftRows InvMixColumns AddRoundKey InvSubBytes invshiftrows 9 ROUNDS AddRoundKey AddRoundKey CIPHERTEXT CIPHERTEXT Σχήμα 5.2: Αριστερά: Αλγόριθμος κρυπτογράφησης του AES. Δεξιά: Αλγόριθμος αποκρυπτογράφησης του AES. 36

51 Ο AES αποτελείται από τέσσερις υπολειτουργίες οι οποίες είναι: Για την κρυπτογράφηση SubBytes ShiftRows MixColumns AddRoundKey Για την αποκρυπτογράφηση InvSubBytes InvShiftRows InvMixColumn InvAddRoundKey Για να επεξηγηθούν αυτές οι λειτουργίες πρέπει πρώτα να αναφέρουμε μια σύμβαση. Η είσοδος του αλγορίθμου είναι ένα block των 128bits, το οποίο αφού περάσει από μετασχηματισμούς καταλήγει στην έξοδο. Κατά την διάρκεια των μετασχηματισμών το block αναφέρεται ως «κατάσταση» (state). Σχήμα 5.3: Block εισόδου, κατάστασης και εξόδου. Οι δείκτες στο παραπάνω σχήμα δηλώνουν την θέση του byte στο block. Οι λέξεις «γραμμή» και «στήλη» παρακάτω αναφέρονται σε αυτήν την σύμβαση. Η λειτουργία SubBytes αντικαθιστά την τιμή του κάθε byte του block με μία άλλη τιμή. Η αντιστοίχιση των τιμών γίνεται μέσω της μαθηματικής διαδικασίας που περιγράφεται παρακάτω. Ο υπολογισμός του μετασχηματισμού περιέχει δύο μέρη. Το πρώτο είναι ο υπολογισμός του αντίστροφου του πολλαπλασιασμού στο πεδίο GF(2 8 ) (Multiplicative Inverse GF(2 8 )) και το δεύτερο ο υπολογισμός του αντίστροφου μετασχηματισμού ομοιότητας (Inverse Affine Transformation). Ο υπολογισμός του Multiplicative Inverse παρουσιάζεται στο σχήμα 5.4. Οι επιμέρους πράξεις είναι: 37

52 , [ ] [ ] [ ], [ ] [ ] [ ] Σχήμα 5.4: Αντίστροφος Πολλαπλασιασμού GF(28)(Multiplicative Inverse GF(28)) [ ], [ ], Ακόμη, οι εξισώσεις του πολλαπλασιασμού είναι: [ ], Τέλος έχουμε τον αντίστροφο πολλαπλασιασμού στο GF(2 4 ):,,,,,,,,, 38

53 ,,, Ο υπολογισμός του Inverse Affine Transformation παίρνει είσοδο ένα byte και υπολογίζει την παρακάτω εξίσωση: [ ] [ ] [ ] όπου xn το n-οστό bit του byte εισόδου. Η ShiftRows εκτελεί rotate κατά 1 byte της 2 ης γραμμής, κατά 2 της 3 ης και κατά 3 της 4 ης. Η MixColumns πολλαπλασιάζει κάθε στήλη με τον πίνακα: ( ) και το αποτέλεσμα αντικαθιστά την αρχική στήλη. Τέλος η AddRoundKey εκτελεί bitwise xor του block και του round key. Οι λειτουργίες της αποκρυπτογράφησης εκτελούν την αντίστροφη διαδικασία. Έτσι η InvSubBytes κάνει την αντίστροφη αντικατάσταση της τιμής του κάθε byte. Για να υπολογιστεί η αντίστροφη τιμή, το byte πρώτα περνάει από έναν μετασχηματισμό ομοιότητας (Affine Transformation): [ ] [ ] [ ] και έπειτα από έναν αντίστροφο πολλαπλασιασμού στο GF(2 8 ), ο οποίος εξηγήθηκε παραπάνω. Η InvShiftRows κάνει τα ίδια rotate με αντίθετη φορά (δεξιά), η InvMixColumns πολλαπλασιάζει με τον αντίστροφο πίνακα της MixColumns, ο οποίος είναι: ( ) και η InvAddRoundKey είναι ίδια με την AddRoundKey. Στην διαδικασία της παραγωγής των κλειδιών συμμετέχει ένας πίνακας σταθερών τιμών, ο Rcon ο οποίος παρουσιάζεται παρακάτω: 39

54 Σχήμα 5.5: Ο πίνακας Rcon Η κάθε στήλη αυτού του πίνακα συμμετέχει στο αντίστοιχο γύρω παραγωγής κλειδιού. (η 1 η στον 1 ο γύρο, η 2 η στον 2 ο κτλ). Η διαδικασία της παραγωγής των κλειδιών έχει ως εξής: Για την παραγωγή της πρώτης στήλης του νέου κλειδιού επιλέγεται η τελευταία στήλη του προηγούμενου κλειδιού και εκτελείται ένα RotWord, το οποίο φαίνεται παρακάτω: Σχήμα 5.6: Η πράξη RotWord Έπειτα κάθε byte της στήλης περνάει από την διαδικασία SubBytes και στο τέλος, η στήλη αυτή μαζί με την πρώτη στήλη του προηγούμενου κλειδιού και την αντίστοιχη στήλη του πίνακα Rcon γίνονται bitwise XOR. Η προκύπτουσα στήλη είναι η πρώτη στήλη του νέου κλειδιού. Η τιμή της 2 ης στήλης είναι το αποτέλεσμα της bitwise XOR της 2 ης στήλης του προηγούμενου κλειδιού με την 1 η του νέου, της 3 ης το αποτέλεσμα της bitwise XOR της 3 ης στήλης του προηγούμενου κλειδιού με την 2 η του νέου και της 4 ης το αποτέλεσμα της bitwise XOR της 4 ης στήλης του προηγούμενου κλειδιού με την 3 η του νέου. Η διαδικασία γίνεται 10 φορές, έτσι ώστε να παραχθούν 10 κλειδιά, ένα για κάθε γύρο κρυπτογράφησης. Τα κλειδιά που παράγονται δίνονται στην AddRoundKey του αντίστοιχου γύρου. Εδώ να τονιστεί ότι στην αποκρυπτογράφηση τα κλειδιά δίνονται με την ανάποδη σειρά από ότι στην κρυπτογράφηση. Σχεδιαστικές επιλογές Προτού ξεκινήσει η σχεδίαση και η υλοποίηση του περιφερειακού, έπρεπε πρώτα να ληφθούν υπ όψιν διάφορες παράμετροι. Επειδή το περιφερειακό πρόκειται να λειτουργήσει ως slave ενός επεξεργαστή, θα πρέπει να οριστούν οι διεπαφές μεταξύ τους, το πρωτόκολλο επικοινωνίας και οι επιμέρους τεχνικές λεπτομέρειες. Γνωρίζουμε ότι σε ένα επεξεργαστικό σύστημα, ο επεξεργαστής αναλαμβάνει διάφορες εργασίες. Ως εκ τούτου, τα περιφερειακά θα πρέπει να είναι σχεδιασμένα να λειτουργούν με καταστάσεις αναμονής. Έτσι στην περίπτωση του CBC-AES-128 το περιφερειακό θα πρέπει να βρίσκεται σε αναμονή μέχρι ο επεξεργαστής να του δώσει επόμενη είσοδο ή επόμενη εντολή 40

55 λειτουργίας. Ακόμη, όταν τελειώσει μία λειτουργία και έχει έτοιμη έξοδο για τον επεξεργαστή, το περιφερειακό θα πρέπει να ειδοποιεί τον επεξεργαστή με κάποιον τρόπο και να αναμένει. Για το πρωτόκολλο επικοινωνίας, χρειαζόμαστε σήματα ελέγχου του περιφερειακού από τον επεξεργαστή, καθώς και σήματα ενημέρωσης του επεξεργαστή από το περιφερειακό. Στον CBC-AES-128 σχεδιάστηκαν αυτά τα σήματα και ορίστηκε η συμπεριφορά τους, έτσι ώστε να είναι βολική η σχεδίαση τους σε υλικό και ταυτόχρονα εύχρηστη η διαχείριση τους από την πλευρά του λογισμικού. Μια σημαντική σχεδιαστική επιλογή που έπρεπε να γίνει είναι ο τρόπος μεταφοράς των δεδομένων μεταξύ του περιφερειακού και της μνήμης. Εδώ υπάρχουν πολλές επιλογές, όπως DMA ή περιφερειακό σε λειτουργία master & slave του κυρίως bus ή ακόμα και άμεση προσπέλαση καταχωρητών του επεξεργαστή (το τελευταίο είναι χαρακτηριστικό του επεξεργαστή Microblaze και δίνεται από την Xilinx, ονομάζεται FSL, Fast Simplex Link). Τελικά λόγω του γεγονότος ότι το σύστημα δεν είναι multipacket, ο επεξεργαστής δεν έχει πολλά πακέτα ταυτόχρονα, και οπότε δεν υπάρχει λόγος να αναλάβει κάποιος άλλος την μεταφορά δεδομένων, αφού κατά την διάρκεια της μεταφοράς τους από τρίτο σύστημα ο επεξεργαστής θα είναι σε αδράνεια. Έτσι η μεταφορά των δεδομένων γίνεται από τον επεξεργαστή. Τέλος, για τον τρόπο με τον οποίο ειδοποιείται ο επεξεργαστής από το περιφερειακό υπάρχουν οι επιλογές του polling και των interrupts. Υλοποιήθηκε η μέθοδος polling αφού και πάλι ο επεξεργαστής θα ήταν σε αδράνεια μέχρι να παρουσιαστεί το interrupt. Περιγραφή του υλικού Τα μέρη στα οποία χωρίστηκε η σχεδίαση του υλικού είναι οι εσωτερικές λειτουργίες του AES (ShiftRows, SubBytes, MixColumns, AddRoundKey) με τις οποίες δημιουργήθηκε μία μονάδα υπολογισμού ενός γύρου του AES, μία μονάδα υπολογισμού ενός γύρου της παραγωγής κλειδιών με χρήση της οποίας δημιουργήθηκε η τελική μονάδα υπολογισμού των κλειδιών και τέλος αυτά χρησιμοποιήθηκαν για την υλοποίηση του ολοκληρωμένου AES σε CBC mode. Παρακάτω επεξηγούνται οι σχεδιάσεις εκ των κάτω προς τα άνω. Η υλοποίηση των ShiftRows και InvShiftRows είναι απλώς μια αντιμετάθεση των byte εισόδου. Η υλοποίηση των SBOX και των αντίστροφων SBOX (InvSBOX) έγινε σε μία μονάδα, η οποία παίρνει ένα σήμα EncDec για να δηλώσει αν η μονάδα θα λειτουργεί για κρυπτογράφηση ή αποκρυπτογράφηση. Αυτή η σχεδιαστική επιλογή έγινε για εξοικονόμηση χώρου αφού και οι δύο χρησιμοποιούν τον αντίστροφο πολλαπλασιασμού GF(2 8 ). Η υλοποίηση των Affine Transform, Inverse Affine Transform και Multiplicative Inverse έγιναν με πύλες όπως περιγράφονται από τις εξισώσεις τους. Στο σχήμα 5.7 παρουσιάζεται το μπλοκ διάγραμμα της μονάδας. Ως συνέπεια κοινής υλοποίησης των SBOX και InvSBOX, η υλοποίηση των SubBytes και InvSubBytes έγινε σε μία μονάδα, η οποία δέχεται το σήμα EncDec για να το παραχωρήσει σε αυτά. Η μονάδα των SubBytes και InvSubBytes παρουσιάζεται στο σχήμα

56 Σχήμα 5.7: Συμπαγής υλοποίηση των SBOX και InvSBOX. 42

57 EncDec Block_In byte 0 byte 1 byte n byte EncDec EncDec EncDec EncDec SBOX SBOX SBOX byte 0 byte 1 byte n byte 15 Block_Out Σχήμα 5.8: Κοινή υλοποίηση των SubBytes και InvSubBytes. Οι λειτουργίες MixColumns και InvMixColumns υλοποιήθηκαν και αυτές σε μία κοινή μονάδα. Η επιλογή της λειτουργίας της γίνεται και εδώ με το σήμα EncDec. Επειδή η επεξεργασία της κάθε στήλης είναι ανεξάρτητη από των άλλων στηλών, υλοποιήθηκαν 4 υπομονάδες επεξεργασίας στήλης για να γίνει εκμετάλλευση της παραλληλίας. Οι υπομονάδες αυτές ονομάζονται MixOneColumn. Το μπλοκ διάγραμμα της μονάδας MixColumns-InvMixColumns παρουσιάζεται στο σχήμα 5.9. EncDec Block_In column 0 column 1 column 2 column 3 EncDec EncDec EncDec EncDec MixOneColumn MixOneColumn MixOneColumn MixOneColumn column 0 column 1 column 2 column 3 Block_Out Σχήμα 5.9: Κοινή υλοποίηση των MixColumns και InvMixColumns. Σε κάθε MixOneColumn πρέπει να γίνει ο πολλαπλασιασμός της στήλης με τον πίνακα ( ) για την κρυπτογράφηση και με τον πίνακα 43

58 ( ) για την αποκρυπτογράφηση. Παρατηρούμε ότι κάθε byte της στήλης πρέπει να πολλαπλασιαστεί με τα 02 και 03 για την κρυπτογράφηση και με τα 14,11,13,09 για την αποκρυπτογράφηση. Έτσι δημιουργήθηκε μια μονάδα, η XTimes η οποία παίρνει ένα byte στην είσοδο και μας δίνει στις εξόδους του τα πολλαπλάσια του κατά 2,3,9,11,13 και 14. Έπειτα πρέπει να γίνουν οι κατάλληλες προσθέσεις και τα τελικά αποτελέσματα να τοποθετηθούν στα αντίστοιχα byte της στήλης εξόδου. Η υλοποίηση της MixOneColumn παρουσιάζεται στο σχήμα Σε αυτό το σχήμα, για να διαχωριστούν μεταξύ τους οι έξοδοι των XTimes, χρησιμοποιήθηκε επίθεμα ο αριθμός του byte. Έτσι το σήμα x2_0 σημαίνει το διπλάσιο του byte0, το x14_3 το 14-πλάσιο του byte3 κ.ο.κ. Σχήμα 5.10: Υλοποίηση της MixOneColumn. Η υλοποίηση του XTimes παρουσιάζεται στο σχήμα Οι επιμέρους πράξεις χαρακτηρίζονται από τις παρακάτω εξισώσεις:,,,,,, 44

59 ,,. Byte_In XTimes2 XTimes2 x4 x10 x2 XTimes2 x8 + + x12 x2 + x1 + x1 x8 + x1 + x2 + x2 x3 x9 x11 x13 x14 Σχήμα 5.11: Η μονάδα XTimes. Στο σχήμα 5.12 φαίνεται η μονάδα υπολογισμού του διπλασίου(xtimes2). Η πράξη αυτή γίνεται στο πεδίο GF(2 8 ) και ορίζεται ως εξής: Στο byte εισόδου πρώτα εκτελείται μία αριστερή ολίσθηση (left shift). Αν το MSB bit του byte εισόδου είναι 0 τότε το shift δεν έχει υπερχειλίσει και η έξοδος δίνεται από το ολισθημένο byte. Στην άλλη περίπτωση υπάρχει υπερχείλιση και στο ολισθημένο byte πρέπει να προστεθεί (με XOR) η τιμή [1B]16. 45

60 Byte_In bit6 bit5 bit4 bit3 bit2 bit1 bit0 0 bit7 + 1B 0 1 x2 Σχήμα 5.12: Η μονάδα XTimes2. Η τελευταία μονάδα ενός round του AES είναι η AddRoundKey η οποία είναι απλώς μία bitwise XOR του block με το κλειδί του τρέχοντος γύρου. Το κλειδί δίνεται ως είσοδος και τελικά η AddRoundKey είναι μια bitwise XOR των 128bits. Τελικά, από τις παραπάνω μονάδες, υλοποιήθηκε μια μονάδα υπολογισμού ενός γύρου του AES-128. Οι είσοδοι της είναι το block εισόδου, το κλειδί του γύρου που βρισκόμαστε, το σήμα EncDec για την επιλογή λειτουργίας μεταξύ κρυπτογράφησης ή αποκρυπτογράφησης και ένα σήμα LastRound το οποίο δηλώνει αν βρισκόμαστε στον τελευταίο γύρο. Το LastRound χρειάζεται διότι ο τελευταίος γύρος του AES-128 διαφοροποιείται από τους υπόλοιπους 9. Η έξοδος της μονάδας είναι το επεξεργασμένο block. Το μπλοκ διάγραμμα της σχεδίασης παρουσιάζεται στο σχήμα Η διαφορές της κρυπτογράφησης και αποκρυπτογράφησης είναι (όπως φαίνονται και από το σχήμα 5.2): Εκτέλεση της ShiftRows ή InvShiftRows Εκτέλεση της SubBytes ή InvSubBytes Εκτέλεση της MixColumns ή InvMixColumns Εκτέλεση της AddRoundKey μετά της MixColumns στην κρυπτογράφηση, και ανάποδα για την αποκρυπτογράφηση. Η πρώτη διαφορά υλοποιήθηκε με έναν MUX, που επιλέγει την έξοδο της ShiftRows ή InvShiftRows αναλόγως με το σήμα EncDec. Η δεύτερη και η τρίτη είναι είδη υλοποιημένες στις κοινές μονάδες των SubBytes και MixColumns αντίστοιχα. Η τέταρτη διαφορά υλοποιήθηκε με χρήση δύο μονάδων AddRoundKey, μία πριν την MixColumns και μία μετά. Όταν βρισκόμαστε σε λειτουργία κρυπτογράφησης, η πρώτη AddRoundKey παρακάμπτεται με έναν MUX και χρησιμοποιείται η δεύτερη. Στην αποκρυπτογράφηση παρακάμπτουμε με έναν MUX την δεύτερη και χρησιμοποιούμε την πρώτη. Η διαφορά των τελευταίων γύρων της κρυπτογράφησης και της αποκρυπτογράφησης από τους υπόλοιπους 9 είναι (όπως φαίνονται και από το σχήμα 5.2) ότι δεν εκτελούνται οι πράξεις MixColumns και InvMixColumns αντίστοιχα. Επειδή αυτές οι δύο πράξεις είναι μία μονάδα στον σχεδιασμό μας, χρειάστηκε μόνο ένας MUX παράκαμψης αυτής της μονάδας, με σήμα επιλογής το LastRound. 46

61 Σχήμα 5.13: Η μονάδα υπολογισμού ενός γύρου του AES-128, AES Round. Για τον υπολογισμό των παραγόμενων κλειδιών κάθε γύρου, πρώτα υλοποιήθηκε μια μονάδα υπολογισμού παραγωγής του επόμενου κλειδιού, η KeyScheduleRound. Ο υπολογισμός των κλειδιών για την κρυπτογράφηση και αποκρυπτογράφηση είναι ο ίδιος και η μόνη διαφορά είναι ότι τα κλειδιά κατά την αποκρυπτογράφηση, παρέχονται στους γύρους του AES με ανάποδη σειρά από την σειρά που υπολογίζονται. Αυτή την διαφορά την διαχειριζόμαστε σε πιο υψηλό επίπεδο της σχεδίασης. Παρακάτω ακολουθεί το μπλοκ διάγραμμα του KeyScheduleRound και η επεξήγησή του. Η μονάδα KeyScheduleRound παίρνει εισόδους το κλειδί του προηγούμενου γύρου και την τιμή Rcon που αντιστοιχεί στον γύρο που βρισκόμαστε και δίνει έξοδο το κλειδί που 47

62 παράχθηκε για αυτόν τον γύρο. Στην σχεδίαση χρησιμοποιούνται 4 μονάδες SBOX για τα 4 byte της τελευταίας στήλης του κλειδιού εισόδου. Επειδή δεν χρειάζεται η αντίστροφη λειτουργία InvSBOX, υλοποιήθηκε ξεχωριστή μονάδα SBOX η οποία εκτελεί μόνο τους υπολογισμούς Multiplicative Inverse και Inverse Affine Transform, για να αποφευχθεί άσκοπη κατανάλωση επιφάνειας του FPGA. Rcon InputKey byte 0 byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7 byte 8 byte 9 byte 10 byte 11 byte 12 byte 13 byte 14 byte 15 S-Box S-Box S-Box S-Box Rcon + + column 0 column 1 + column 2 + column 3 OutputKey Σχήμα 5.14: Η μονάδα υπολογισμού ενός γύρου του KeyScheduler, KeyScheduleRound. Οι υπολογισμοί που εκτελούνται είναι, πρώτα η αντικατάσταση μέσω των SBOX της τελευταίας στήλης του κλειδιού εισόδου, στο αποτέλεσμα της οποίας εκτελείται μία RotWord, που είναι απλώς μια αντιμετάθεση των byte. Μετά την RotWord, εκτελείται μια bitwise XOR με την τιμή του Rcon. Στο σχήμα 5.5 παρατηρούμε ότι τα 3 τελευταία byte κάθε στήλης του Rcon είναι μηδέν, και οπότε δεν επηρεάζουν την bitwise XOR. Έτσι χρειαζόμαστε μόνο το πρώτο byte του Rcon στην είσοδο, και μια bitwise XOR των 8bits αντί μία των 32bits. Η πρώτη στήλη του κλειδιού εξόδου είναι η επεξεργασμένη τελευταία στήλη εισόδου. Η δεύτερη στήλη εξόδου υπολογίζεται με μία bitwise XOR μεταξύ της πρώτης στήλης εισόδου και της επεξεργασμένης τελευταίας στήλης εισόδου, η τρίτη με bitwise XOR της δεύτερης στήλης εξόδου με την δεύτερη στήλη εισόδου, και η τέταρτη με την τρίτη της εξόδου και την τρίτη της εισόδου. Με χρήση του KeyScheduleRound υλοποιήθηκε η μονάδα υπολογισμού όλων των κλειδιών, η KeyScheduler. Το μπλοκ διάγραμμα του παρουσιάζεται στο σχήμα Οι είσοδοι είναι το αρχικό κλειδί, ένας μετρητής του γύρου στον οποίο βρισκόμαστε και το σήμα 48

63 FirstRound το οποίο δηλώνει ότι βρισκόμαστε στο πρώτο γύρο. Στην έξοδο δίνεται κάθε φορά το κλειδί του γύρου που βρισκόμαστε. Η μονάδα περιέχει μια υπομονάδα KeyScheduleRound και μία μονάδα Rcon η οποία παίρνει είσοδο τον μετρητή του γύρου και δίνει στην έξοδο το πρώτο byte της αντίστοιχης στήλης του Rcon(αφού τα υπόλοιπα είναι 00 ) και τροφοδοτεί το KeyScheduleRound με αυτή την τιμή. rst clk Key FirstRound round 0 1 Key Schedule Round Rcon Feedback Register clk rst RoundKey Σχήμα 5.15: Υλοποίηση του KeyScheduler για τον AES-128. Για την παραγωγή του πρώτου παραγόμενου κλειδιού χρειαζόμαστε το αρχικό κλειδί στην είσοδο, ενώ μετά χρειαζόμαστε το ακριβώς προηγούμενο παραγόμενο κλειδί. Εδώ είναι που χρειαζόμαστε το σήμα FirstRound, με το οποίο επιλέγεται το αρχικό κλειδί ή το προηγούμενο που έρχεται μέσω ανατροφοδότησης, ως είσοδο στην μονάδα KeyScheduleRound. Τέλος υλοποιήθηκε το περιφερειακό του CBC-AES-128 το οποίο παρουσιάζεται στο σχήμα Οι είσοδοί του είναι το μπλοκ του μηνύματος, το IV (Initialization Vector), το κλειδί, δύο σήματα ελέγχου Start_new και Next_Block τα οποία δηλώνουν νέα από/κρυπτογράφηση και έτοιμο επόμενο μπλοκ εισόδου αντίστοιχα, ένα σήμα επιλογής λειτουργίας κρυπτογράφησης/αποκρυπτογράφησης EncDec και τα σήματα ρολογιού και επαναφοράς. Στην έξοδο δίνει το μπλοκ εξόδου και το σήμα ready που δηλώνει το τέλος της επεξεργασίας του μπλοκ, δηλαδή ότι είναι έτοιμο το μπλοκ εξόδου. Το αριστερό χρωματισμένο μέρος υλοποιεί την λειτουργία του CBC, το κεντρικό την λειτουργία του AES και το δεξί την λειτουργία της παραγωγής κλειδιών. Κάτω δεξιά παρουσιάζεται το κύκλωμα ελέγχου με τα σήματα που δέχεται και δίνει. 49

64 Ξεκινώντας από το CBC, έχουν τοποθετηθεί δύο bitwise XOR, μία πριν και μία μετά τον AES. Η πρώτη επιλέγεται από έναν MUX όταν είμαστε σε λειτουργία κρυπτογράφησης και η δεύτερη σε λειτουργία αποκρυπτογράφησης. Οι δεύτερες είσοδοι σε αυτές της XOR, όταν βρισκόμαστε στο 1 ο μπλοκ δίνονται από το IV της εισόδου, ενώ για τα επόμενα μπλοκ δίνεται από το προηγούμενο μπλοκ εξόδου του AES για την κρυπτογράφηση και από το προηγούμενο μπλοκ εισόδου για την αποκρυπτογράφηση. Για τις παραπάνω λειτουργίες έχουν τοποθετηθεί κατάλληλοι καταχωρητές, MUX και σήματα ελέγχου των MUX από το κύκλωμα ελέγχου. IV clk reset Block_In Key EncDec Start_new Next_block Block Register Key Register IV CBC Key Schedule iv_enc + input_block iv_xor_enc Enc Dec EncDec Key AES set_iv round_feedback aes_input AddRoundKey first_add_round_key RAM 1 IV IV register reg_aes_round_out Feedback Register AES Round FirstRound aes_round_input EncDec round_key EncDec Round counter RAM 9 RAM 1 Key Scheduler LastRound EncDec Start_new Next_block IV CBC iv_dec_new iv_dec + iv_xor_dec Dec Enc aes_round_out EncDec set_iv LastRound FirstRound Control Logic set_iv aes_output Block Register Round counter Block_Out Σχήμα 5.16: Υλοποίηση του CBC-AES-128. ready Το κύκλωμα του AES εκτελεί μία AddRoundKey πριν ξεκινήσει την επεξεργασία των 10 γύρων, όπως φαίνεται και στο σχήμα 5.2. Έπειτα ακολουθεί η μονάδα AES Round στην οποία ανατροφοδοτείται η έξοδος στην είσοδο της, υλοποιώντας τους 10 γύρους του AES. Με το σήμα FirstRound επιλέγεται αν θα δοθεί στον AES Round το αποτέλεσμα της AddRoundKey ή η ανατροφοδότηση. Στην παραγωγή κλειδιών υπάρχει μια μονάδα KeyScheduler. Όταν βρισκόμαστε σε λειτουργία κρυπτογράφησης τα κλειδιά πρέπει να δίνονται με την σειρά που παράγονται, έτσι σε αυτή την λειτουργία ο KeyScheduler δίνει απευθείας την έξοδο του στο AES Round και στο αρχικό AddRoundKey δίνεται το αρχικό κλειδί από την είσοδο. Στην λειτουργία 50

65 αποκρυπτογράφησης τα κλειδιά πρέπει να δίνονται ανάποδα από ότι παράγονται, και στην είσοδο του αρχικού AddRoundKey πρέπει να δοθεί το τελευταίο κλειδί. Έτσι αναγκαζόμαστε να προϋπολογίσουμε τα κλειδιά και να τα αποθηκεύσουμε. Εδώ χρησιμοποιούνται 11 καταχωρητές ως RAM των κλειδιών. Η RAM εγγράφεται από το KeyScheduler με την ανάποδη σειρά (δηλ ξεκινώντας από τον τελευταίο καταχωρητή) ώστε να τοποθετηθούν τα κλειδιά με την ανάποδη σειρά, και έπειτα γίνεται ανάγνωσή της από τον πρώτο register. Στον τελευταίο καταχωρητή εγγράφεται το αρχικό κλειδί εισόδου, έτσι ώστε να δοθεί τελευταίο. Οι υπόλοιποι 10 καταχωρητές είναι αυτοί στους οποίους θα εγγράψει ο KeyScheduler. Τέλος ο πρώτος καταχωρητής συνδέεται με την αρχική AddRoundKey για να της δώσει το τελευταίο κλειδί, και οι υπόλοιποι καταχωρητές συνδέονται σε έναν MUX που τους επιλέγει με βάση τον μετρητή του γύρου για να δώσει την τιμή στον AES Round. Το κύκλωμα ελέγχου δέχεται τα σήματα Start_new και Next_Block και δίνει το σήμα εξόδου ready και τα εσωτερικά σήματα ελέγχου set_iv (για επιλογή του IV), LastRound, FirstRound και Round_counter ο οποίος είναι ο μετρητής που δείχνει σε ποιον γύρο βρισκόμαστε. Το κύκλωμα ελέγχου ακολουθεί την παρακάτω FSM: reset Start start_new & EncDec= 0' Enc_10 next_block or (start_new & EncDec= 0') Round_counter = 1001 start_new & EncDec= 1' start_new & EncDec= 1' Enc_wait start_new & EncDec= 0' Dec_key_10 start_new & EncDec= 1' Round_counter = 0000 Dec_10 Round_counter = 1001 Dec_wait next_block Σχήμα 5.17: FSM του κυκλώματος ελέγχου του CBC-AES-128. Με κάθε reset μεταβαίνουμε στην αρχική κατάσταση Start. Εδώ περιμένουμε σήμα start_new και αναλόγως την τιμή του σήματος EncDec μεταβαίνουμε σε κατάσταση 51

66 κρυπτογράφησης (EncDec= 0 ) ή αποκρυπτογράφησης (EncDec= 1 ). Πριν δοθεί το σήμα start_new θα πρέπει να έχουν τοποθετηθεί το κλειδί, το IV και το πρώτο μπλοκ του μηνύματος. Στην κατάσταση κρυπτογράφησης έχουμε δύο καταστάσεις. Η Enc_10 εκτελεί τους 10 γύρους κρυπτογράφησης του AES και η Enc_Wait είναι η αναμονή μετά τους 10 γύρους. Στην αναμονή περνάμε όταν τελειώσουν οι 10 γύροι, δηλαδή όταν ο μετρητής Round_Counter πάρει την τιμή «1001» (η μέτρηση ξεκινάει από το 0 οπότε συνολικά μετράει 10 γύρους). Στην αναμονή μπορεί να μας έρθει το επόμενο μπλοκ του ίδιου μηνύματος, το οποίο δηλώνεται με το σήμα next_block και μεταβαίνουμε στην Enc_10. Άλλη περίπτωση είναι να μας έρθει το start_new το οποίο αν συνοδεύεται με EncDec= 0 πηγαίνουμε στην κατάσταση Enc_10 αλλά αυτή την φορά για κρυπτογράφηση νέου μηνύματος και όχι του επόμενου μπλοκ του ίδιου μηνύματος (άλλωστε αυτό δηλώνει το σήμα start_new), ενώ αν συνοδεύεται από EncDec= 1 πηγαίνουμε στην αρχή της λειτουργίας της αποκρυπτογράφησης, στην κατάσταση Dec_Key_10. Στην κατάσταση αποκρυπτογράφησης έχουμε τρεις καταστάσεις, την Dec_key_10 όπου παράγονται και αποθηκεύονται τα κλειδιά, την Dec_10 όπου εκτελούνται οι 10 γύροι αποκρυπτογράφησης του AES και την Dec_wait η οποία είναι κατάσταση αναμονής. Σε αποκρυπτογράφηση κάθε νέου μηνύματος πρέπει να παραχθούν πρώτα τα κλειδιά, οπότε βρισκόμαστε στην Dec_key_10. Όταν όμως μας δίνεται επόμενο μπλοκ ενός μηνύματος, το αρχικό κλειδί και κατά συνέπεια και τα παραγόμενα κλειδιά παραμένουν ίδια, οπότε δεν χρειάζεται να παραχθούν από την αρχή. Στην Dec_key_10 ο μετρητής Round_counter ξεκινάει από την τιμή «1001» και αυτό για να επιλέξουμε τους κατάλληλους καταχωρητές της RAM (με ανάποδη σειρά). Όταν ο μετρητής φτάσει την τιμή 0 είμαστε έτοιμοι να αποκρυπτογραφήσουμε και προχωράμε στην κατάσταση Dec_10, η οποία ξεκινάει με Round_counter = Όταν εκτελεστούν 10 γύροι, όταν δηλαδή έχουμε Round_counter = 1001 τότε περνάμε σε κατάσταση αναμονής. Από την κατάσταση αναμονής υπάρχει η επιλογή να δοθεί επόμενο μπλοκ του ίδιου μηνύματος με το σήμα next_block οπότε επιστρέφουμε στην κατάσταση Dec_10 ( και όχι στην Dec_Key_10 αφού τα κλειδιά παραμένουν ίδια όσο βρισκόμαστε στο ίδιο μήνυμα). Άλλη επιλογή είναι να ξεκινήσει αποκρυπτογράφηση νέου μηνύματος με τον συνδυασμό start_new και EncDec= 1 οπότε μεταβαίνουμε στην Dec_key_10 (πρέπει να παραχθούν τα νέα κλειδιά). Τελευταία επιλογή είναι να μεταβούμε σε λειτουργία κρυπτογράφησης με τον συνδυασμό start_new και EncDec= 0 και οπότε μεταβαίνουμε στην Enc_ HMAC-SHA1-96 Περιγραφή του αλγορίθμου Ο HMAC-SHA1-96 είναι ένας MAC αλγόριθμος που χρησιμοποιεί τον κρυπτογραφικό hash αλγόριθμο SHA1. Ο αριθμός 96 στο όνομα δηλώνει πόσα bits από την έξοδο λαμβάνονται υπόψη. Η μαθηματική διατύπωση του HMAC είναι : όπου: ( ) text το κείμενο εισόδου, Η η συνάρτηση κατακερματισμού που χρησιμοποιείται (στην δική μας περίπτωση ο SHA1), 52

67 Κ το κλειδί, Κο το κλειδί μετά από την προεπεξεργασία του Κ ipad είναι η επανάληψη του byte [36]16, συνολικού μεγέθους ίσου με το μέγεθος block της συνάρτησης κατακερματισμού opad είναι η επανάληψη του byte [5C]16, συνολικού μεγέθους ίσου με το μέγεθος block της συνάρτησης κατακερματισμού δηλώνει συνένωση (concatenation), t το μέγεθος της ληφθείσας εξόδου. Στο σχήμα 5.18 παρουσιάζεται ο HMAC σχηματικά. Σχήμα 5.18: Ο αλγόριθμος HMAC Η προεπεξεργασία του κλειδιού Κ για να παραχθεί το Κο έχει ως εξής: 53

68 Αν το μέγεθος του K είναι ίσο με το μέγεθος του block του H τότε το Κο είναι το Κ Αν το μέγεθος του είναι μικρότερο τότε χρησιμοποιείται γέμισμα με το bit 0 Aν είναι μεγαλύτερο τότε περνάει από τον Η και η τιμή που παράγεται είναι το Κο Ο αλγόριθμος SHA1 είναι ένας αλγόριθμος κατακερματισμού με μέγεθος εξόδου 160 bits. Η είσοδος του χωρίζεται σε blocks μεγέθους 512bits. Αν η είσοδος δεν είναι ακέραιο πολλαπλάσιο των 512bits τότε χρησιμοποιείται γέμισμα της εισόδου. Η εσωτερική λειτουργία του αποτελείται από 80 επαναλήψεις. Ο αλγόριθμος σε μορφή ψευδοκώδικα είναι: Initialize : For i = 1 to N: { 1. Prepare the message schedule, {Wt}: { 2. Initialize the five working variables, a, b, c, d, and e, with the (i-1) st hash value: 3. For t = 0 to 79: { 54

69 } 4. Compute the intermediate hash value : } όπου: N το πλήθος των block της εισόδου, είναι το ι-στο block της εισόδου, ή πράξη της αριστερής περιστροφής κατά n bits, Η ορίζεται ως: Η ορίζεται ως: { { Το αποτέλεσμα του αλγορίθμου είναι: όπου δηλώνει συνένωση. Η είσοδος του SHA1 πρέπει να είναι πολλαπλάσιο των 512bits, και για αυτό τον λόγω χρησιμοποιείται όπως προείπαμε padding. Το pad έχει δύο σταθερά πεδία, το πρώτο bit το οποίο πρέπει να είναι 1 και τα τελευταία 64bits τα οποία περιέχουν το μέγεθος του αρχικού μηνύματος σε bits σε δυαδική αναπαράσταση. Τα υπόλοιπα bits είναι 0. Το πλήθος των 0 πρέπει να ικανοποιεί την συνθήκη ότι το αρχικό μήνυμα μαζί με το pad να είναι πολλαπλάσιο των 512bits. Σχεδιαστικές επιλογές Οι σχεδιαστικές επιλογές για το περιφερειακό HMAC-SAH1-96 είναι ίδιες με αυτές για το CBC-AES-128. Περιγραφή του υλικού 55

70 Ο παραπάνω αλγόριθμος υλοποιήθηκε σε υλικό (hardware) με χρήση της VHDL. Αρχικά σχεδιάστηκε και υλοποιήθηκε η μονάδα sha1_core η οποία αναλαμβάνει την επεξεργασία των 80 επαναλήψεων του SHA1 για ένα block. Με χρήση αυτής της μονάδας σχεδιάστηκε η μονάδα sha1, η οποία εξάγει το SHA1 hash ενός μηνύματος εισόδου. Τέλος, με την χρήση της τελευταίας μονάδας υλοποιήθηκε ο αλγόριθμος HMAC-SHA1-96. Η υλοποίηση έχει ως σύμβαση ότι η είσοδος είναι πολλαπλάσιο των 512bits και το pad, αν χρειάστηκε, έχει προστεθεί εκ των προτέρων. Ακόμη θεωρείται ότι οποιαδήποτε προεπεξεργασία του κλειδιού, αν ήταν αναγκαία έχει είδη γίνει. Παρακάτω επεξηγούνται όλες οι μονάδες αναλυτικά. W t R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r R e g i s t e r W ROTL 1 W t-3 W t-8 + W t-16 W t-14 Σχήμα 5. 19: SHA1 message schedule Για τον υπολογισμό του υλοποιήθηκε η υπομονάδα που φαίνεται στο σχήμα Η έξοδος παίρνεται από την κεφαλή των εν σειρά καταχωρητών. Αρχικά οι 16 καταχωρητές παίρνουν τιμές τα αντίστοιχα μέρη του block εισόδου ( ο δεξιά το 1 ο, ο προηγούμενος το 2 ο κτλ). Έτσι για τους πρώτους 16 κύκλους η υπομονάδα δίνει στην έξοδο τα μέρη του block εισόδου. Για τον υπολογισμό του επόμενου χρησιμοποιείται μια bitwise XOR των και το αποτέλεσμα της περιστρέφεται αριστερά κατά 1bit. Η νέα τιμή του τοποθετείται στην ουρά των εν σειρά καταχωρητών. Έτσι από τον 17 κύκλο και μετά στην έξοδο έχουμε το υπολογισμένο σύμφωνα με τον 2 ο κλάδο της εξίσωσης: { Η υλοποίηση της μονάδας sha1_core φαίνεται στο παρακάτω σχήμα. Οι είσοδοι της είναι το block εισόδου, οι τιμές και τα σήματα ρολογιού(clk) και επαναφοράς(rst). Οι τιμές χρειάζονται στην είσοδο διότι, αν παρατηρήσουμε τον ψευδοκώδικα παραπάνω, οι νέες τιμές υπολογίζονται χρησιμοποιώντας τις προηγούμενες. Έτσι, όπως θα φανεί και στην επεξήγηση της μονάδας sha1, δημιουργείται μια ανατροφοδότηση αυτών των τιμών από την έξοδο του sha1_core στα. Στην έξοδο έχουμε την υπολογισμένη τιμή hash του block εισόδου και ένα σήμα hash_rd το οποίο ειδοποιεί ότι η επεξεργασία αυτού του block έχει τελειώσει. 56

71 Inputs clk rst block h0 h1 h2 h3 h4 t W-Schedule 5a ed9eba1 8f1bbcdc K t W t + T init a_reg a init init init init b_reg b c_reg d_reg ROTL 30 c d e_reg e ca62c1d6 ROTL 15 (b c) ( b d) t f t b c d (b c) (b d) (c d) b c d h0 a h1 b h2 c h3 d h4 e t Control logic Outputs hash hash_rd Σχήμα 5.20: Υλοποίηση της μονάδας sha1_core. Στο παραπάνω σχήμα, το αντιστοιχεί στον μετρητή της επανάληψης στην οποία βρισκόμαστε. Οι 5 καταχωρητές συνδεδεμένοι σε σειρά υλοποιούν τις αναθέσεις:, Για τον υπολογισμό του έχουμε: ο υπολογισμός του γίνεται μέσω τεσσάρων τμημάτων ψηφιακής λογικής και έναν επιλογέα μεταξύ αυτών των τεσσάρων. Η επιλογή γίνεται με βάση το. Το σήμα παίρνει μία από τις τέσσερις σταθερές τιμές αναλόγως με το στο οποίο βρισκόμαστε. Το το υπολογίζει η μονάδα W-Schedule. Τέλος υπολογίζεται το και όλα τα παραπάνω μαζί με το δίνονται σε μία μονάδα άθροισης, της οποίας το αποτέλεσμα είναι το. Αυτό τροφοδοτείται στον a_reg έτσι ώστε να υλοποιηθεί και η τελευταία ανάθεση. Η τελική τιμή της εξόδου υπολογίζεται από τις σχέσεις: 57

72 οι οποίες είναι υλοποιημένες με μονάδες άθροισης μεταξύ των, και των αντίστοιχα. Η τελική έξοδος είναι η συνένωση αυτών των αθροισμάτων. Στην λογική ελέγχου (control logic), περιέχεται ένας μετρητής (counter) ο οποίος με κάθε rst αρχικοποιείται στην τιμή 0 και ως ανώτατο όριο έχει την τιμή 79 όπου και παραμένει μέχρι να δοθεί νέο σήμα rst. Η τιμή του είναι η τιμή αυτού του counter. Ακόμη, η λογική ελέγχου ανεβάζει το σήμα εξόδου hash_rd όταν ο μετρητής φτάσει την τιμή 79 για να ειδοποιήσει ότι εκτελέστηκαν όλες οι επαναλήψεις. Σχήμα 5.21: Υλοποίηση της μονάδας sha1. Η μονάδα sha1, παίρνει είσοδο το εκάστοτε block του μηνύματος, ένα σήμα ελέγχου, το next_block_ready, το οποίο ειδοποιεί την μονάδα ότι ένα καινούριο block έχει δοθεί στην είσοδο του, και τα σήματα ρολογιού (clk) και επαναφοράς (rst). Στην έξοδο του έχει το αποτέλεσμα του κατακερματισμού hash, το σήμα hash_rd το οποίο δηλώνει το τέλος του υπολογισμού του hash για το παρόν block, και ένα σήμα waiting_next_block το οποίο δηλώνει ότι η μονάδα είναι έτοιμη να δεχθεί ένα νέο block στην είσοδο της. Το σχηματικό διάγραμμα της υλοποίησης φαίνεται στο σχήμα Η σχεδίαση αποτελείται από έναν sha1_core, δύο registers και ένα control unit. Ο input register του σχήματος αποτελεί έναν buffer που κρατάει το block εισόδου, έτσι ώστε να μπορεί να τοποθετηθεί ένα νέο block στην είσοδο της μονάδας χωρίς να επηρεαστεί η λειτουργία που εκτελείται εκείνη την στιγμή. Ο H register χρησιμοποιείται για την ανατροφοδότηση των 58

73 στην επεξεργασία του επόμενου block, δηλαδή ο καταχωρητής ανατροφοδότησης υλοποιεί τις αναθέσεις: reset Init next_ block_ ready Pass Next Values Hash next Waiting next_block_ready & hash_rd Σχήμα 5.22: sha1 control FSM Η λειτουργία της μονάδας ελέγχου εκφράζεται μέσω διαγράμματος στο σχήμα Ο τρόπος που χρησιμοποιούμε αυτή την μονάδα έχει ως εξής: για κάθε νέο υπολογισμό κατακερματισμού ενός μηνύματος, ξεκινάμε με ένα reset, και οπότε βρισκόμαστε στην κατάσταση Init. Σε αυτή την κατάσταση ο H register παίρνει τις αρχικές τιμές των : και αρχικοποιείται η μονάδα sha1_core με το εσωτερικό σήμα Init_core. Εδώ περιμένουμε να ανέβει το σήμα waiting_next_block. Μόλις ανέβει, ανεβάζουμε το σήμα next_block_ready, αφού έχουμε τοποθετήσει το πρώτο block στην είσοδο, οπότε το σύστημα περνάει στην κατάσταση Waiting όπου και εκτελούνται οι 80 επαναλήψεις για το πρώτο block. Στην κατάσταση αυτή η μονάδα ελέγχου περιμένει τον sha1_core να τελειώσει την επεξεργασία, το οποίο δηλώνεται από το σήμα hash_rd, και να δοθεί το σήμα next_block_ready (αφού έχουμε τοποθετήσει το επόμενο block στην είσοδο). Όταν ικανοποιηθούν οι δύο συνθήκες περνάμε στην κατάσταση Pass Next Values όπου και δημιουργείται παλμός στο εσωτερικό σήμα feed_next_block έτσι ώστε να δοθούν στην είσοδο του sha1_core οι νέες τιμές των και το επόμενο block. Στον αμέσως επόμενο κύκλο περνάμε στην κατάσταση Hash next, όπου εδώ ο sha1_core έχει πάρει τις νέες τιμές στις εισόδους του, και έπειτα περνάμε στην κατάσταση Waiting όπου εκτελούνται οι 80 επαναλήψεις για το παρόν block.. Η διαδικασία επαναλαμβάνεται μέχρι να δοθούν όλα τα block. 59

74 Η τελευταία μονάδα που υλοποιήθηκε είναι η hmac_sha1_96, της οποίας το μπλοκ διάγραμμα φαίνεται στο σχήμα Στην είσοδο της δέχεται το κλειδί key, ένα block του μηνύματος msg_block, τα σήματα ελέγχου next_block και msg_done και τα σήματα ρολογιού και επαναφοράς. Το σήμα next_block χρησιμοποιείται για να δηλώσουμε ότι το επόμενο block βρίσκεται στην είσοδο msg_block και το σήμα msg_done για να δηλώσουμε ότι δίνουμε το τελευταίο block του μηνύματος. Ως εξόδους έχει την έξοδο MAC του αλγορίθμου και τα σήματα waiting_nxt και ready. Το σήμα waiting_nxt δηλώνει ότι η μονάδα είναι έτοιμη να δεχθεί ένα νέο block στην είσοδό της και το ready για να δηλώσει το τέλος του υπολογισμού του MAC. Inputs key msg_block next_block msg_done clk rst rst_core clk rst ipad opad 5c5c5c.. + Key_ipad Key_opad clk rst Control sha1_input block next block ready SHA1 waiting next block clk rst clk hash save_hash en Save hash register clk rst 96 first bits hashed_ipad rst clk Outputs waiting_nxt ready mac Σχήμα 5.23: Υλοποίηση της μονάδας hmac_sha1_96. Η μονάδα αποτελείται από της δύο σταθερές ipad και opad, δύο bitwise XOR αυτών των σταθερών με το κλειδί, μία μονάδα sha1, έναν καταχωρητή για την αποθήκευση του υπολογισμού ( ) και μία μονάδα ελέγχου. Η μονάδα ελέγχου αναλαμβάνει να τοποθετήσει την κατάλληλη είσοδο κάθε στιγμή στην μονάδα sha1 για αυτό και στο σχήμα 5.23 οι τιμές των,, και φαίνονται να δίνονται στο control unit. Η μηχανή πεπερασμένων καταστάσεων (FSM) της μονάδας ελέγχου παρουσιάζεται στο σχήμα Για κάθε νέο υπολογισμό HMAC-SHA1-96 αρχικοποιούμε την μονάδα με ένα reset το οποίο μας οδηγεί στην κατάσταση Start. Σε αυτή την κατάσταση αρχικοποιείται η μονάδα sha1 μέσω ενός παλμού στο εσωτερικό σήμα rst_core και το σήμα waiting_nxt είναι ενεργό για να δηλώνει ότι είμαστε έτοιμοι να δεχθούμε το πρώτο block. Αφού το πρώτο block δωθεί στην είσοδο και ακόμα δωθεί και το σήμα next_block, η FSM μεταβαίνει στην κατάσταση Hash(key ipad), όπου δίνεται το πρώτο block του μηνύματος, δηλαδή το στην μονάδα sha1. Μόλις τελειώσει ο υπολογισμός το σήμα waiting_next_block της μονάδας sha1 ανέρχεται, και προχωράμε στην κατάσταση Hash 1 st block όπου δίνεται στην sha1 το πρώτο block του μηνύματος. Αφού τελειώσει και αυτός ο υπολογισμός περνάμε στον βρόγχο καταστάσεων Wait Next Block και Hash Next Block. Στην κατάσταση Wait Next Block η μονάδα περιμένει για δοθεί το επόμενο block, και μόλις δοθεί προχωράει στην κατάσταση Hash Next Block για να γίνει ο επόμενος υπολογισμός με το νέο block. Όταν τελειώσει ο υπολογισμός 60

75 επιστρέφει στην κατάσταση Wait Next Block περιμένοντας το επόμενο block. Η διαδικασία συνεχίζεται μέχρις ότου να δοθεί το σήμα msg_done το οποίο δηλώνει ότι έχουν δοθεί όλα τα block του μηνύματος και συνεπώς στην έξοδο της μονάδας sha1 υπάρχει η ποσότητα ( ). Με το σήμα msg_done μεταβαίνουμε στην κατάσταση Save Hash όπου η τιμή ( ) αποθηκεύεται στον Save Hash Register μέσω του σήματος save_hash. Στον επόμενο κύκλο περνάμε στην κατάσταση Reset Core όπου ετοιμάζουμε τον sha1 για νέο υπολογισμό. Αφού ετοιμαστεί ο sha1 ξεκινάει ο υπολογισμός ( ). Στην κατάσταση Hash(key opad) δίνεται στον sha1 το block. Όταν τελειώσει ο υπολογισμός ( δηλ. waiting_next_block= 1 ) δίνουμε και το 2 ο block του μηνύματος, ( ). Μόλις τελειώσει και αυτός ο υπολογισμός, στην έξοδο του sha1 βρίσκεται ο MAC. Εδώ το σύστημα προχωράει στην κατάσταση Done όπου και σηκώνει το σήμα ready για να δηλώσει ότι ο MAC είναι έτοιμος. Στην έξοδο του hmac_sha1_96 λαμβάνουμε τα πρώτα 96 bits του αποτελέσματος του sha1. reset Hash Next Block Start next_block next_block waiting_next_block Hash (key ipad) waiting_next_block Hash 1 st block waiting_next_block Wait Next Block msg_done Hash (key opad) Αναμονή 2 Clk για να ετοιμαστεί ο SHA1_Core μετά το reset Reset Core Save Hash waiting_next_block Hash saved hash waiting_next_block Done Σχήμα 5.24: FSM της μονάδας ελέγχου της hmac_sha1_96. 61

76 5.3 Διεπαφή του υλικού (hardware side interface) Οι διεπαφές των δύο περιφερειακών συστημάτων που υλοποιήθηκαν (CBC-AES-128 και HMAC-SHA1-96), δεν είναι πλήρως κατάλληλες για απευθείας σύνδεση με το bus του επεξεργαστή. Θα ήταν πιο βολικό για την διασύνδεση του με το λογισμικό, η αντιπροσώπευση των εισόδων και εξόδων του με καταχωρητές που αντιστοιχούν σε θέσεις μνήμης του συνόλου διευθύνσεων του επεξεργαστή (memory mapped IO). Στο toolset της Xilinx υπάρχει μία διαδικασία για την δημιουργία και σύνδεση περιφερειακών συστημάτων που σχεδιάστηκαν εξολοκλήρου και δεν αποτελούν προϊόν κάποιου τρίτου σχεδιαστή. Αυτό το είδος των περιφερειακών η Xilinx το ονομάζει custom IPcore. Μέσω της διαδικασίας, ορίστηκαν τα περιφερειακά μας και η διεπαφή τους. Στην περίπτωση του CBC-AES-128 η διεπαφή αποτελείται από 17 καταχωρητές των 32bits, εκ των οποίων 4 αποτελούν το μπλοκ εισόδου, 4 το μπλοκ εξόδου, 4 για το κλειδί, 4 για το IV και ο τελευταίος αποτελεί έναν καταχωρητή command/status. Ο τελευταίος καταχωρητής όταν διαβάζεται από τον επεξεργαστή δίνει τα σήματα ειδοποίησης του περιφερειακού, ενώ όταν γράφεται θέτονται τα σήματα εντολών του περιφερειακού από τον επεξεργαστή. Εδώ να σημειωθεί ότι οι 4 καταχωρητές του μπλοκ εξόδου θα μπορούσαν να επικαλύπτουν κάποιους από τους άλλους καταχωρητές εισόδου, αφού οι πρώτοι χρησιμοποιούντα μόνο για εγγραφή και οι τελευταίοι μόνο για ανάγνωση. Η επιλογή να διαχωριστούν έγινε για να είναι πιο «καθαρή» η σχεδίαση. Για το HMAC-SHA1-96 οι καταχωρητές είναι συνολικά 36 των 32bits. 16 αφιερώνονται στο μπλοκ εισόδου, 16 στο κλειδί, 3 στην έξοδό του (MAC των 96bits) και ένας αποτελεί τον command/status register. Επειδή στους καταχωρητές command/status υπήρχαν πολλά αχρησιμοποίητα bit, τοποθετήθηκαν κάποια σήματα για debugging της λειτουργίας των περιφερειακών. 62

77 ΚΕΦΑΛΑΙΟ 6 Λογισμικό (Software) Περιεχόμενα 6.1. lwip IPsec IPsec AH και ESP SADB και SPD Ενσωμάτωση με το lwip Διεπαφή του λογισμικού (software side interface) lwip Το lwip (lightweight IP) όπως αναφέρθηκε είναι μια υλοποίηση ανοικτού λογισμικού της στοίβας TCP/IP για ενσωματωμένα συστήματα. Πιο συγκεκριμένα περιλαμβάνει τα πρωτόκολλα Ethernet, ARP, IP, TCP και UDP. Με την χρήση του μπορούμε να υλοποιήσουμε εφαρμογές χρήστη με απαιτήσεις δικτύωσης σε ενσωματωμένα συστήματα. Η πιο βασική δομή δεδομένων του lwip είναι η p_buf (packet buffer). Το p_buf χρησιμοποιείται για την οργάνωση των πακέτων και την αποθήκευση τους στην μνήμη και χρησιμοποιείται σε όλα τα επίπεδα της στοίβας. Περιέχει τις κεφαλίδες και τα δεδομένα του πακέτου και επιπρόσθετες πληροφορίες όπως το μέγεθος του. Μαζί με την δομή p_buf παρέχονται και συναρτήσεις επεξεργασίας του, όπως η δημιουργία ή διαγραφή του, η επέκταση του κ.α. Η διαδρομή ενός εισερχόμενου πακέτου ξεκινάει με την παραλαβή του. Εδώ ειδοποιείται ο επεξεργαστής μέσω μιας διακοπής(interrupt) του Ethernet Controller για την άφιξη ενός νέου πακέτου. Όταν ο επεξεργαστής είναι διαθέσιμος, παραλαμβάνει το πακέτο από την ουρά εισερχομένων του Ethernet Controller και δημιουργεί ένα νέο p_buf με τα περιεχόμενα του, και τις πρόσθετες πληροφορίες. Στην συνέχεια, το p_buf μεταδίδεται από επίπεδο σε επίπεδο. Το κάθε επίπεδο εκτελεί τις κατάλληλες διεργασίες επί του πακέτου, αφαιρεί την κεφαλίδα του και το δίνει στο επόμενο επίπεδο. Αν σε κάποιο επίπεδο αποφασίσει ότι το πακέτο δεν πρέπει να συνεχίσει την διαδρομή του (π.χ. δεν πέρασε τους απαραίτητους ελέγχους ή έφτασε στο τελευταίο επίπεδο επεξεργασίας του), τότε αποδεσμεύεται από την μνήμη. Τα εξερχόμενα πακέτα ακολουθούν την ανάστροφη διαδρομή. Κάθε επίπεδο έχει μία διεπαφή, ώστε να μπορεί να καλείται από κάποιο άλλο επίπεδο. Η διεπαφή αύτη στην ουσία αποτελείται από την παραλαβή και την αποστολή ενός πακέτου, και κάποιες ακόμα λειτουργίες, πιο ειδικές για κάθε επίπεδο. Για παράδειγμα η διεπαφή του επιπέδου IP είναι: struct netif * ip_route(struct ip_addr *dest); err_t ip_input(struct pbuf *p, struct netif *inp); err_t ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, u8_t ttl, u8_t tos, u8_t proto); 63

78 err_t ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, u8_t ttl, u8_t tos, u8_t proto, struct netif *netif); Όπως παρατηρούμε η διεπαφή αποτελείται από συναρτήσεις εισόδου και εξόδου, και μία ειδική συνάρτηση του IP για την δρομολόγηση (ip_route). Τέλος υπάρχουν πολλές παράμετροι για κάθε πρωτόκολλο που μπορούν να ρυθμιστούν από τον σχεδιαστή, όπως το tcp timeout, το μέγιστο μέγεθος πακέτων κτλ IPsec Το λογισμικό του IPsec, όπως αναφέρθηκε και στο κεφάλαιο 4.2.2, ενσωματώθηκε στον υπάρχων κώδικα του lwip. Έτσι, η ανάπτυξη του λογισμικού χωρίζεται σε δύο μέρη. Το πρώτο είναι η δημιουργία μίας βιβλιοθήκης λογισμικού που παρέχει την λειτουργικότητα του IPsec και η δεύτερη είναι η διασύνδεση αυτής της βιβλιοθήκης με το lwip. Τα μέρη της βιβλιοθήκης και η μεταξύ τους σχέση παρουσιάζονται στο σχήμα 6.1. Σχήμα 6.1: Διάγραμμα σχεδίασης της βιβλιοθήκης IPsec Παρακάτω επεξηγούνται τα επιμέρους κομμάτια της βιβλιοθήκης που δημιουργήθηκαν για τις διάφορες λειτουργίες του IPsec και ο τρόπος ενσωμάτωσης με το lwip IPsec 64

79 Η βιβλιοθήκη που υλοποιήθηκε για το IPsec παρέχει δύο συναρτήσεις, μία για την επεξεργασία της εισερχόμενης και μία για την επεξεργασία της εξερχόμενης κίνησης. Η συνάρτηση της εισερχόμενης κίνησης καλείται από την ip_input του IP αφού πρώτα γίνει επεξεργασία του πακέτου από το IP. H συνάρτηση εξόδου καλείται από την ip_output_if στην αρχή της, έτσι ώστε να γίνει επεξεργασία κάθε εξερχόμενου πακέτου πρώτα από το IPsec, και επιστρέφει έναν κωδικό στην ip_output_if για να μπορεί η τελευταία να επιλέξει τις λειτουργίες που θα εκτελέσει. Τα πρότυπα τους είναι: void ipsec_input(struct pbuf *p, struct netif *inp); u8_t ipsec_output(struct pbuf *p, struct pbuf **p_new, struct ip_addr *src, struct ip_addr *dest, u8_t ttl, u8_t tos, u8_t proto, struct netif *netif); Η συνάρτηση εισόδου δέχεται το pbuf του εισερχομένου πακέτου και το Ethernet interface στο οποίο έγινε η άφιξη. Αρχικά εξάγει τις τιμές των πεδίων του πακέτου, και κάνει αναζήτηση στην SADB. Αν το πακέτο δεν αντιστοιχηθεί με κανένα SA απορρίπτεται. Αν έχουμε αντιστοίχιση τότε με βάση το πρωτόκολλο το οποίο αναφέρεται στο SA καλείται η esp_input ή η ah_input. Αφού τελειώσουν την επεξεργασία του πακέτου αυτές οι συναρτήσεις και δεν προέκυψαν συνθήκες για απόρριψη του πακέτου, ελέγχεται η SPD για να εξασφαλιστεί ότι το πακέτο ανταποκρίνεται στα στοιχεία της πολιτικής. Αν το πακέτο περάσει και τον έλεγχο της SPD τότε προωθείται στην ip_input, ως καθαρά πακέτο IP για να συνεχίσει την πορεία του στην TCP/IP stack. Η συνάρτηση εξόδου δέχεται το pbuf του εξερχομένου πακέτου, ένα pbuf στο οποίο θα δοθεί το επεξεργασμένο πακέτο, ως αποτέλεσμα της ipsec_output, τις IP διευθύνσεις του αποστολέα και του παραλήπτη, τις τιμές TTL και TOS που θα έχει το πακέτο και το Ethernet interface το οποίο θα κάνει την αποστολή. Η συνάρτηση επιστρέφει έναν κωδικό, οι τιμές του οποίου αντιστοιχούν RET_IPSEC_ERROR αν προέκυψαν σφάλματα, RET_IPSEC_BYPASS αν πρόκειται για κίνηση με πολιτική BYPASS RET_IPSEC_APPLY αν πρόκειται για κίνηση με πολιτική PROTECT RET_IPSEC_DISCARD αν πρόκειται για κίνηση με πολιτική DISCARD Η ipsec_output αρχικά κάνει αναζήτηση στην SPD. Αν δεν βρεθεί πολιτική το πακέτο απορρίπτεται. Αν βρεθεί τότε, αν είναι DISCARD η συνάρτηση απλώς επιστρέφει κωδικό RET_IPSEC_DISCARD. Αν πρόκειται για κίνηση BYPASS, δεν εκτελείται καμία επεξεργασία στο πακέτο και η συνάρτηση επιστρέφει με κωδικό RET_IPSEC_BYPASS. Αν πρόκειται για PROTECT τότε αναλόγως με το πρωτόκολλο που ορίζει το SA της πολιτικής το πακέτο δίνεται σε μία από τις ah_output, esp_output. Αν επιστρέψουν χωρίς σφάλματα τότε η συνάρτηση επιστρέφει με κωδικό RET_IPSEC_APPLY αλλιώς με κωδικό RET_IPSEC_ERROR. Αν προκύψει σφάλμα σε κάποιο σημείο της ipsec_output τότε επιστρέφει με κωδικό RET_IPSEC_ERROR. Η ipsec_output επιστρέφει στην ip_output_if, η οποία έχει τροποποιηθεί κατάλληλα ώστε να ερμηνεύει την τιμή επιστροφής της ipsec_output. Έτσι όταν πρόκειται για κωδικό RET_IPSEC_ERROR απορρίπτει το πακέτο και αναφέρει σφάλμα, όταν πρόκειται για κωδικό RET_IPSEC_BYPASS τότε εκτελείται η κανονική επεξεργασία του IP. Αν επιστρέψει κωδικό RET_IPSEC_APPLY τότε το πακέτο είναι ένα έτοιμο IP πακέτο για αποστολή λόγω της 65

80 επεξεργασίας από την ah_output ή esp_output και οπότε αποστέλλεται χωρίς περαιτέρω επεξεργασία. Τέλος αν επιστρέψει κωδικό RET_IPSEC_DISCARD, η ip_output_if απορρίπτει το πακέτο και το αποδεσμεύει την μνήμη AH και ESP Η κυρίως επεξεργασία των πακέτων στο IPsec γίνεται από τα πρωτόκολλα AH και ESP. Εδώ τοποθετούνται οι επιπλέον κεφαλίδες, δίνονται τιμές στα πεδία τους και τα πακέτα περνάνε από κρυπτογραφικούς μετασχηματισμούς όταν πρόκειται για εξερχόμενη κίνηση, και ελέγχονται τα πεδία των κεφαλίδων και περνάνε από αντίστροφους κρυπτογραφικούς μετασχηματισμούς και ελέγχους όταν πρόκειται για εισερχόμενη κίνηση. Για την εισερχόμενη κίνηση οι βιβλιοθήκες των AH και ESP που υλοποιήθηκαν παρέχουν μία συνάρτηση εισόδου ah_input και esp_input αντίστοιχα. Αυτές οι συναρτήσεις καλούνται από την ipsec_input, με ορίσματα το pbuf του πακέτου και το SA που του αντιστοιχεί. Αρχικά και οι δύο συναρτήσεις ελέγχουν τον Sequence Number. Έπειτα ακολουθεί ο έλεγχος αυθεντικοποίησης και ακεραιότητας, ο οποίος είναι υποχρεωτικός για το AH και προαιρετικός για το ESP. Στη συνέχεια, μόνο για το ESP, ακολουθεί η αποκρυπτογράφηση του πακέτου. Οι παράμετροι για όλες τις παραπάνω λειτουργίες βρίσκονται στο SA. Τέλος και οι δύο συναρτήσεις συμβουλέυονται το SA ως προς το mode με το οποίο πρέπει να επεξεργαστούν το πακέτο. Στην περίπτωση του Transport, αφαιρείται η κεφαλίδα του IPsec, και μετακινείται η κεφαλίδα IP ακριβώς πάνω από το payload. Για Tunnel mode, αφαιρείται η εξωτερική κεφαλίδα και η κεφαλίδα του IPsec και αφήνεται ως έχει η εσωτερική κεφαλίδα. Τώρα το πακέτο είναι ένα καθαρά IP πακέτο, και ως τέτοιο προωθείται στην ip_input. int ah_input(struct pbuf* p, struct sa_entry* sa); int esp_input(struct pbuf* p, struct sa_entry* sa); Για την εξερχόμενη κίνηση παρέχονται οι συναρτήσεις ah_output και esp_output, οι οποίες καλούνται από την ipsec_output. Τα ορίσματά τους είναι το pbuf του πακέτου, ένα νέο pbuf στο οποίο θα τοποθετηθεί το επεξεργασμένο πακέτο, η εγγραφή της πολιτικής που βρέθηκε από την ipsec_output και ακόμη δίνονται οι διευθύνσεις IP του αποστολέα και του παραλλήπτη, οι τιμές των TTL και TOS καθώς και το interface από το οποίο θα γίνει η αποστολή του πακέτου. Οι τελευταίες τιμές δίνονται από τα πρωτόκολλα του Transport Layer, και παρέχονται στις ah_output και esp_output διότι θα πρέπει να κατασκευάσουν την εσωτερική και αν πρόκειται για tunnel mode κίνηση και την εξωτερική κεφαλίδα IP. err_t ah_output(struct pbuf *p, struct pbuf **p_new, struct spd_entry* spdentry, struct ip_addr *src, struct ip_addr *dest, u8_t ttl, u8_t tos, u8_t proto, struct netif *netif); err_t esp_output(struct pbuf *p, struct pbuf **p_new, struct spd_entry* spdentry, struct ip_addr *src, struct ip_addr *dest, u8_t ttl, u8_t tos, u8_t proto, struct netif *netif); Η επεξεργασία του πακέτου ξεκινάει με την τοποθέτηση της εσωτερικής κεφαλίδας IP αν πρόκειται για tunnel mode κίνηση. Έπειτα, αν βρισκόμαστε στην ah_output τοποθετείται η κεφαλίδα AH, η εξωτερική κεφαλίδα IP και τέλος το πακέτο περνάει από τον αλγόριθμο 66

81 ακεραιότητας και αυθεντικοποίησης και τοποθετείται η τιμή του icv στο κατάλληλο πεδίο, πριν δωθεί πίσω στην ipsec_output. Στην esp_output, μετά την πιθανή τοποθέτηση της εσωτερικής κεφαλίδας IP ακολουθεί η τοποθέτηση του padding και του IV, ακολουθεί η κρυπτογράφηση όλων των παραπάνω μαζί με το payload, έπειτα τοποθετείται η κεφαλίδα ESP και το πακέτο περνάει από τον αλγόριθμο ακεραιότητας αν χρησιμοποιείται. Το ICV του αλγορίθμου ακεραιότητας τοποθετείται στο τέλος του πακέτου και τέλος προστίθεται η εξωτερική κεφαλίδα IP. Με την επιστροφή της esp_output στην ipsec_output, παραχωρείται το επεξεργασμένο πακέτο για να συνεχιστεί η αποστολή του SADB και SPD Η SADB υλοποιήθηκε ως μια μονόδρομα συνδεδεμένη λίστα. Κάθε εγγραφή της SADB αποτελεί ένα SA. Η δομή που υλοποιήθηκε για να αντιπροσωπεύει ένα SA περιέχει: τον αριθμό SPI τον αριθμό IANA του πρωτοκόλλου το mode που αντιστοιχεί στην κίνηση (transport ή tunnel) τον αριθμό ακολουθίας των πακέτων (Sequence Number) Τον αλγόριθμο αυθεντικοποίησης που χρησιμοποιεί το AH (αν υπάρχει, δηλ. αν χρησιμοποιούμε το πρωτόκολλο AH για αυτή την κίνηση) Αν υπάρχει ο προηγούμενος, τότε κρατείται και το κλειδί του Τον αλγόριθμο αυθεντικοποίησης που χρησιμοποιεί το ESP (αν υπάρχει, δηλ. αν χρησιμοποιούμε το πρωτόκολλο ESP και ταυτόχρονα χρησιμοποιούμε αυθεντικοποίηση για αυτή την κίνηση) Αν υπάρχει ο προηγούμενος, τότε κρατείται και το κλειδί του Τον αλγόριθμο κρυπτογράφησης του ESP ( αν χρησιμοποιούμε ESP είναι υποχρεωτικός). Αν υπάρχει ο προηγούμενος, τότε κρατείται και το κλειδί του Έναν δείκτη στην επόμενη εγγραφή της SADB ώστε να έχουμε μονόδρομη συνδεδεμένη λίστα. Ο ορισμός της δομής είναι: struct sa_entry { u32_t spi; u8_t protocol; u8_t mode; // Transport or Tunnel /* Current Connection */ u32_t seqnum; /* Algorithms */ struct auth_algo* ah_auth_algo; u8_t* ah_auth_key; struct enc_algo* esp_enc_algo; u8_t* esp_enc_key; 67

82 struct auth_algo* esp_integrity_algo; u8_t* esp_integrity_key; /* Linked entries*/ struct sa_entry *next; } attribute ((packed)); Οι δομές auth_algo και enc_algo δημιουργήθηκαν για να προστεθεί ευελιξία στο σύστημα ως προς τους κρυπτογραφικούς αλγόριθμους. Αποτελούν ένα ενδιάμεσο επίπεδο μεταξύ του IPsec και των διεπαφών των αλγορίθμων. Αν χρειαστεί να χρησιμοποιήσουμε στο σύστημα μας έναν νέο κρυπτογραφικό αλγόριθμο, αρκεί να δημιουργήσουμε μία δομή auth_algo ή enc_algo (αναλόγως το είδος του αλγορίθμου) για να μπορεί να χρησιμοποιηθεί απευθείας από την συγκεκριμένη υλοποίηση του IPsec. Η βιβλιοθήκη της SADB παρέχει συναρτήσεις για δημιουργία και προσθήκη ενός νέου SA στην βάση και για την αναζήτηση ενός SA με κριτήρια τις τιμές των SPI και αριθμού πρωτοκόλλου. Η συνάρτηση αναζήτησης επιστρέφει την εγγραφή, αν βρέθηκε. Τα signatures αυτών των συναρτήσεων είναι: struct sa_entry *sa_lookup(u32_t spi, u8_t proto); struct sa_entry* sa_add(u32_t spi, u8_t protocol, u8_t mode, struct auth_algo* ah_auth_algo, u8_t* ah_auth_key, struct enc_algo* esp_enc_algo, u8_t* esp_enc_key, struct auth_algo* esp_integrity_algo, u8_t* esp_integrity_key); Όπως η SADB έτσι και η SPD υλοποιήθηκε ως μονόδρομη συνδεδεμένη λίστα. Κάθε εγγραφή της λίστας αποτελεί μία πολιτική (policy) και περιέχει: Την IP του αποστολέα Την μάσκα υποδικτύου του αποστολέα Την IP του παραλήπτη Την μάσκα υποδικτύου του παραλήπτη Τον αριθμό IANA του πρωτοκόλλου Το είδος της πολιτικής (PROTECT, BYPASS, DISCARD) Την διεύθυνση της κίνησης (IN ή OUT) Το πρωτόκολλο του IPsec που χρησιμοποιείται στην περίπτωση της PROTECT πολιτικής (AH ή ESP) Το mode (Transport ή Tunnel) Την IP του αποστολέα του tunnel Την IP του παραλήπτη του tunnel Το SA που χαρακτηρίζει την κίνηση της πολιτικής Έναν δείκτη προς την επόμενη εγγραφή της SPD για να υλοποιηθεί η μονόδρομη συνδεδεμένη λίστα Η ορισμός της δομής είναι: 68

83 struct spd_entry{ struct ip_addr* src ; /**< IP source address */ u32_t src_netaddr ; /**< net mask for source address */ struct ip_addr* dest ; /**< IP destination address */ u32_t dest_netaddr ; /**< net mask for the destination address */ u8_t protocol ; /**< the transport layer protocol */ u8_t policy ; /**< defines how this packet must be processed*/ u8_t direction; /**< defines IN or OUT traffic direction */ u8_t ipsec_proto; /**< AH or ESP processing */ u8_t ipsec_mode; /**< Transport or Tunnel mode */ struct ip_addr* tunnel_src; /**< IP tunnel source */ struct ip_addr * tunnel_dest; /**< IP tunnel destination */ } struct sa_entry* sa ; /**< pointer to the associated SA */ struct spd_entry* next ; /**< pointer to the next table entry*/ Η βιβλιοθήκη της SPD παρέχει συναρτήσεις για δημιουργία και προσθήκη μιας νέας πολιτικής στην βάση και για την αναζήτηση μιας πολιτικής με κριτήρια τις τιμές των IP και μάσκας υποδικτύου του αποστολέα και του παραλήπτη και τον αριθμό πρωτοκόλλου. Η συνάρτηση αναζήτησης επιστρέφει την εγγραφή, αν βρέθηκε. Τα signatures αυτών των συναρτήσεων είναι: struct spd_entry* spd_lookup(struct ip_addr *src, u32_t src_netaddr, struct ip_addr *dest, u32_t dest_netaddr, u8_t proto); void spd_add(struct ip_addr *src, struct ip_addr *dest, u8_t proto, u8_t policy, u8_t direction, u8_t ipsec_proto, u8_t ipsec_mode, struct ip_addr *tunnel_src, struct ip_addr *tunnel_dest, struct sa_entry* sa); 6.3 Ενσωμάτωση με το lwip Η διεπαφή του λογισμικού του IPsec που υλοποιήθηκε αποτελείται από δύο συναρτήσεις, μία για την επεξεργασία των εισερχομένων πακέτων και μία για την επεξεργασία των εξερχομένων πακέτων. Η παρέμβαση στο lwip έγινε στο σημείο του IP αφού το IPsec είναι πρωτόκολλο αυτού του επιπέδου. Για την εισερχόμενη κίνηση, το πακέτο πρέπει να περάσει από το IPsec, αφού 69

84 πρώτα το έχει επεξεργαστεί το IP. Έτσι τροποποιήθηκε η συνάρτηση ip_input ώστε να δίνει τον έλεγχο στην ρουτίνα εισόδου του IPsec. Ποιο συγκεκριμένα, η ip_input πρώτα κάνει την απαραίτητη επεξεργασία στο πακέτο, και όταν τελειώσει αποφασίζει σε ποιό πρωτόκολλο θα δώσει το payload του πακέτου. Εδώ εισήχθη και η επιλογή του IPsec για τα πρωτόκολλα AH και ESP. Στο σχήμα 6.2 παρουσιάζεται η δομή του κώδικα πριν και μετά την τροποποίηση για την εισερχόμενη κίνηση. Σχήμα 6.2: Ενσωμάτωση της επεξεργασίας εισερχομένων πακέτων του IPsec στο lwip. Η συνάρτηση ipsec_input αποτελεί την διεπαφή εισερχομένων πακέτων του IPsec. Αν η επόμενη επιλογή μετά το IP είναι το IPsec τότε το πακέτο παρέχεται σε αυτό μέσω της ipsec_input και ξεκινάει η επεξεργασία του πακέτου. Στο τέλος της επεξεργασίας, αν το πακέτο ανήκει σε κίνηση transport mode, προωθείται στο κατάλληλο πρωτόκολλο του Transport Layer. Αν το πακέτο ανήκει σε κίνηση tunnel mode τότε, το πακέτο δίνεται ξανά στο IP για να γίνει επεξεργασία της εσωτερικής κεφαλίδας IP και στην συνέχεια προωθείται σε ένα από τα πρωτόκολλα του Transport Layer. Για την εξερχόμενη κίνηση, το πακέτο πρέπει πρώτα να δοθεί στο IPsec και αν περάσει τους ελέγχους δίνεται στο IP για αποσταλεί. Σε αυτή την περίπτωση έγιναν αλλαγές στην συνάρτηση ip_output_if. Εδώ έγιναν πολύ περισσότερες παρεμβάσεις από ότι στην ip_input, αφού έπρεπε να εκτελεστεί αρκετός κώδικας του IPsec πριν την μεταβίβαση του πακέτου στο IP, όπως η αναζήτηση στην SPD και η δημιουργία της κεφαλίδας του IPsec. 70

85 Σχήμα 6.3: Ενσωμάτωση της επεξεργασίας εξερχομένων πακέτων του IPsec στο lwip. Τα διαγράμματα ροής για την εξερχόμενη κίνηση του lwip και του τροποποιημένου lwip φαίνονται στο σχήμα 6.3. Όταν ένα πακέτο προωθείται από κάποιο από τα πρωτόκολλα του transport layer στο IP, καλείται η συνάρτηση ip_output ή η ip_output_if. Κατά την εκτέλεση της στην τροποποιημένη lwip, το πακέτο το επεξεργάζεται πρώτα το IPsec και έπειτα το IP. Στην επεξεργασία του IPsec έχουμε δύο περιπτώσεις, η πρώτη είναι το πακέτο να ανήκει σε κίνηση σε tunnel mode, όπου πρώτα τοποθετείται η εσωτερική κεφαλίδα IP και μετά τοποθετείται η κεφαλίδα IPsec, και η δεύτερη είναι να βρισκόμαστε σε transport mode κίνηση, οπότε τοποθετείται η κεφαλίδα του IPsec μόνο. 6.4 Διεπαφή του λογισμικού (software side interface) Από την πλευρά του λογισμικού, δημιουργήθηκαν drivers για τα δύο περιφερειακά, έτσι ώστε να επιτευχθεί αφαιρετικότητα των τεχνικών λεπτομερειών του χειρισμού του υλικού από το υπόλοιπο λογισμικό. Πιο συγκεκριμένα οι drivers αυτοί αναλαμβάνουν την μετακίνηση των δεδομένων μεταξύ μνήμης και περιφερειακών και χρησιμοποιούν το πρωτόκολλο επικοινωνίας του περιφερειακού για να ελέγχουν την λειτουργία του. Τελικά, διαθέτουν στο υπόλοιπο 71

86 λογισμικό του συστήματος κάποιες συναρτήσεις οι οποίες εκτελούν λειτουργίες με χρήση των περιφερειακών. Για το περιφερειακό CBC-AES-128, ο driver διαθέτει δύο συνάρτησης, μια για την κρυπτογράφηση ενός μηνύματος και μία για την αποκρυπτογράφηση. Οι είσοδοι τους είναι η θέση μνήμης από την οποία ξεκινάει το μήνυμα, το μέγεθος του μηνύματος, η θέση μνήμης από την οποία ξεκινάει το κλειδί και η θέση μνήμης από την οποία ξεκινάει το IV. Αρχικά αντιγράφονται από την μνήμη στους κατάλληλους καταχωρητές του περιφερειακού το κλειδί, το IV και το πρώτο μπλοκ του μηνύματος. Έπειτα δίνεται σήμα start_new συνοδευόμενο από κατάλληλη τιμή του σήματος EncDce ( 0 για κρυπτογράφηση, 1 για αποκρυπτογράφηση) για να ειδοποιήσει το περιφερειακό ότι ξεκινάει ένας υπολογισμός σε καινούριο μήνυμα. Έπειτα αναμένει για να ανέβει το σήμα ready του περιφερειακού. Μόλις έχουμε ready, αντιγράφει το αποτέλεσμα στις θέσεις μνήμης που βρισκόταν το αρχικό μπλοκ, αντιγράφει το επόμενο μπλοκ και δίνει σήμα next_block. Έπειτα αναμένει πάλι για σήμα ready, αντιγράφει το αποτέλεσμα στην μνήμη και δίνει το επόμενο μπλοκ. Η διαδικασία επαναλαμβάνεται μέχρις ότου να τελειώσουν όλα τα μπλοκ εισόδου. Εδώ να σημειωθεί ότι η χρήση του CBC-AES-128 με το ESP απαλλάσσει τον driver από την λειτουργία του padding, αφού το μήνυμα-πακέτο περιέχει ήδη padding από την επεξεργασία του ESP. Παρακάτω δίνονται τα πρότυπα (signatures) των συναρτήσεων και περιγράφεται η λειτουργία τους με χρήση ψευδοκώδικα: void AES128_CBC_encrypt(void* data, u32_t length, void* key, void* iv) { Αντιγραφή των πρώτων 128 bit του data στο περιφερειακό Αντιγραφή του key στο περιφεερειακό Αντιγραφή του iv στο περιφερειακό Αποστολή start_new= 1 και EncDec = 0 Αναμονή μέχρι ready= 1 Αντιγραφή του αποτελεσματος στα πρώτα 128bits του data Για κάθε επόμενο μπλοκ των 128bits του data: Αντιγραφή των επόμενων 128bits του data Αποστολή next_block Αναμονή μέχρι ready= 1 Αντιγραφή του αποτελέσματος στα 128bits του data } void AES128_CBC_decrypt(void* data, u32_t length, void* key, void* iv) { Αντιγραφή των πρώτων 128 bit του data στο περιφερειακό Αντιγραφή του key στο περιφερειακό Αντιγραφή του iv στο περιφερειακό Αποστολή start_new= 1 και EncDec = 1 Αναμονή μέχρι ready= 1 Αντιγραφή του αποτελέσματος στα πρώτα 128bits του data 72

87 Για κάθε επόμενο μπλοκ των 128bits του data: Αντιγραφή των επόμενων 128bits του data Αποστολή next_block Αναμονή μέχρι ready= 1 Αντιγραφή του αποτελέσματος στα 128bits του data } Για το περιφερειακό HMAC-SHA1-96 ο driver διαθέτει δύο συναρτήσεις, μία για την παραγωγή του MAC ενός μηνύματος και μία για την σύγκριση ενός δοθέντος MAC με το MAC ενός μηνύματος. Και οι δύο συναρτήσεις εκτελούν τον hmac-sha1-96 στο μήνυμα και η μόνη διαφορά τους είναι ότι η πρώτη αντιγράφει το αποτέλεσμα MAC σε κάποια περιοχή της μνήμης ενώ η δεύτερη συγκρίνει το αποτέλεσμα MAC με κάποιο άλλο MAC και επιστρέφει το αποτέλεσμα της σύγκρισης. Έτσι η πρώτη χρησιμοποιείται από το IPsec για να δημιουργηθεί ο MAC ενός νέου πακέτου και να τοποθετηθεί στο κατάλληλο πεδίο του, ενώ η δεύτερη για να αυθεντικοποιηθεί ένα εισερχόμενο πακέτο. Η διαδικασία χειρισμού του περιφερειακού HMAC-SHA1-96 έχει ως εξής: αρχικά, για κάθε νέο μήνυμα (πακέτο) δίνεται ένα σήμα επαναφοράς. Έπειτα ο driver αντιγράφει το κλειδί και το πρώτο μπλοκ του μηνύματος από την μνήμη στους κατάλληλους καταχωρητές του περιφερειακού και δίνει σήμα next_block. Στη συνέχεια ο driver περιμένει το σήμα waiting_nxt για να τοποθετήσει το επόμενο μπλοκ και να δώσει ξανά σήμα next_block. Η διαδικασία συνεχίζεται για όλα τα μπλοκ και μόλις τελειώσουν τα μπλοκ του μηνύματος δίνεται σήμα msg_done και έπειτα αναμένεται το σήμα ready. Τέλος, μόλις ανέβει το σήμα ready, αν βρισκόμαστε στην συνάρτηση παραγωγής του MAC, το αποτέλεσμα αντιγράφεται στην μνήμη ενώ αν βρισκόμαστε στην συνάρτηση σύγκρισης το αποτέλεσμα συγκρίνεται με τον δοθέντα MAC και επιστρέφει το αποτέλεσμα της σύγκρισης. Να σημειωθεί ότι το padding του μπλοκ υπολογίζεται στις συναρτήσεις του driver και ότι το μέγεθος του κλειδιού είναι ακριβώς 160bits, οπότε δεν χρειάζεται προεπεξεργασία. Παρακάτω δίνονται τα πρότυπα (signatures) των συναρτήσεων και περιγράφεται η λειτουργία τους με χρήση ψευδοκώδικα: int HMAC_SHA1_96_authenticate(void* data, u32_t datalength, void* key, u32_t keylength, void* icv) { Εκτέλεση του padding, Αποστολή rst Για κάθε μπλοκ των 512bits του μηνύματος: Αντιγραφή των πρώτων 512bits του μηνύματος Αποστολή next_block= 1 Αναμονή για waiting_nxt Αποστολή msg_done Αναμονή για ready= 1 73

88 Αν icv == αποτέλεσμα του περιφερειακού Επιστρέφει 1 Αλλιώς Επιστρέφει 0 } void HMAC_SHA1_96_calculate(void* data, u32_t datalength, void* key, u32_t keylength, void* icv) { Εκτέλεση του padding, Αποστολή rst Για κάθε μπλοκ των 512bits του μηνύματος: Αντιγραφή των πρώτων 512bits του μηνύματος Αποστολή next_block= 1 Αναμονή για waiting_nxt } Αποστολή msg_done Αναμονή για ready= 1 Αντιγραφή του αποτελέσματος του περιφερειακού στο icv 74

89 ΚΕΦΑΛΑΙΟ 7 Υλοποίηση Συστήματος στο board και On-Chip Έλεγχος Ορθής Λειτουργίας Περιεχόμενα 7.1. Εργαλεία που χρησιμοποιήθηκαν Xilinx Suite & Modelsim Wireshark Scapy Linux ipsec-tools Τελικό σύστημα και υλοποίηση στο board On-Chip έλεγχος ορθής λειτουργίας Μετρήσεις Εργαλεία που χρησιμοποιήθηκαν Xilinx Suite & Modelsim Για την σχεδίαση του συστήματος, τον προγραμματισμό του Microblaze, την υλοποίηση του custom hardware και τον προγραμματισμό του board, χρησιμοποιήθηκε η σουίτα εργαλείων της Xilinx, το Xilinx ISE Design Suite Για την προσομοίωση του σχεδιασμού προτιμήθηκε ο προσομοιωτής Modelsim, λόγω των δυνατοτήτων του και της άμεσης ενσωμάτωσης του με τα εργαλεία της Xilinx. Το ISE είναι μία σουίτα εργαλείων της Xilinx τα οποία αλληλεπιδρούν και δίνουν την δυνατότητα στον σχεδιαστή να εκτελέσει όλη τη ροή σχεδίασης, από την συγγραφή και σύνθεση ενός κώδικα HDL εώς τον «προγραμματισμό» μιας πλακέτας FPGA. Στο ISE περιλαμβάνεται ένα εργαλείο για την σύνθεση υλικού σε VHDL ή Verilog. Δίνει την δυνατότητα συγγραφής της γλώσσας περιγραφής υλικού, του συντακτικού ελέγχου του, της άμεσης προσομοίωσης με τον επιλεγμένο προσομοιωτή και τέλος της σύνθεσης του υλικού ώστε να γίνει έπειτα ο προγραμματισμός του FPGA. Με αυτό το toolset υλοποιήθηκαν οι κρυπτογραφικοί αλγόριθμοι που χρησιμοποιούνται στο σύστημα μας. Ένα πολύ σημαντικό εργαλείο του ISE είναι το EDK (Embedded Development Kit ) το οποίο βοηθάει στον σχεδιασμό συστήματος, δίνοντας επιλογές για τον/τους επεξεργαστή/ες και μια πληθώρα περιφερειακών για τον επεξεργαστή. Εδώ μπορούν να γίνουν διάφορες παραμετροποιήσεις του υλικού, π.χ. μέγεθος cache του επεξεργαστή, διευθυνσιοδότηση των περιφερειακών, δημιουργία bus και διασύνδεση με τους επεξεργαστές και τα περιφερειακά κ.α. Ακόμη, σε αυτό το εργαλείο εισάγονται στο σύστημα και τα τυχών custom IP Cores που έχουν δημιουργηθεί. Με το EDK ορίστηκε το σύστημα μας, προστέθηκαν τα κατάλληλα περιφερειακά (Ethernet, UART και DDR2) και προστέθηκαν τα custom IP cores AES-128 και HMAC-SHA1-96. Ακόμη ένα πολύ σημαντικό εργαλείο είναι το SDK (Software Development Kit). Με αυτό διαχειριζόμαστε το λογισμικό του συστήματος μας, από την υλοποίηση μια απλής ρουτίνας μέχρι την φόρτωση λειτουργικού συστήματος στον/στους επεξεργαστές (π.χ. Xilkernel, embedded Linux). Μας παρέχει την δυνατότητα προγραμματισμού του επεξεργαστή 75

90 σε C,C++ ή ακόμα και στην assembly του επεξεργαστή. Ακόμα παρέχει έτοιμα για χρήση συστήματα λογισμικού όπως την στοίβα πρωτοκόλλων lwip και το λειτουργικό σύστημα Xilkernel. Από αυτό το εργαλείο γίνεται το «κατέβασμα» και η έναρξη της εκτέλεσης του λογισμικού στο ήδη «κατεβασμένο» σύστημα μας, καθώς και η αποσφαλμάτωση του. Τέλος διαθέτει παρακολούθηση μιας σειριακής θύρας, ώστε να λαμβάνουμε τα τυχόν μηνύματα του προγράμματος μέσω του STDIO(standard input-output). Σε αυτό το εργαλείο αναπτύχθηκε ο κώδικας του IPsec και ενσωματώθηκε στον κώδικα του lwip. Το Modelsim είναι ένας από τους πιο ευρέως χρησιμοποιούμενους προσομοιωτές. Έχει άμεση διασύνδεση με το ISE, έτσι ώστε να μην χρειάζεται να περιλάβουμε χειροκίνητα τις βιβλιοθήκες της Xilinx. Ακόμη παρέχει ένα σύστημα αυτοματοποίησης της προσομοίωσης, βασισμένο στην γλώσσα tcl, δίνοντας ευελιξία στον σχεδιαστή κατά την αποσφαλμάτωση και τον έλεγχο του design. Για παράδειγμα, κατά τον έλεγχο του CBC-AES-128, χρησιμοποιήθηκε η tcl για να κάνει αυτόματα την προσομοίωση και τον έλεγχο ορθότητας του σχεδιασμού σύμφωνα με τα test vectors της FIPS. Έτσι, μετά από κάθε αλλαγή της υλοποίησης, το μόνο που χρειαζόταν ήταν η εκτέλεση αυτού του script Wireshark Το wireshark είναι ένας από τους πιο διάσημους αναλυτές κίνησης (traffic analyzer). Η βασική λειτουργία του είναι να παρακολουθεί ένα interface (π.χ. Ethernet, Wi-Fi κτλ.) και να παρουσιάζει τα πακέτα τα οποία κινούνται σε αυτό (sniffer). Χρησιμοποιήθηκε κατά κόρον στην φάση της υλοποίησης του IPsec ως βοήθεια στην αποσφαλμάτωση του λογισμικού. Το wireshark παρουσιάζει με πολύ βολικό τρόπο τα πακέτα. Αναγνωρίζει μια τεράστια γκάμα πρωτοκόλλων, και παρουσιάζει όλα τα πεδία του κάθε πρωτοκόλλου με δομημένο τρόπο. Ακόμη τα πακέτα μπορούν να εμφανιστούν και στην «ωμή» (Raw) μορφή τους, δηλαδή σε δυαδική ή δεκαεξαδική απεικόνιση, δυνατότητα που βοήθησε στην αποσφαλμάτωση των κρυπτογραφικών αλγορίθμων. Για τα πρωτόκολλα AH και ESP παρέχει την δυνατότητα αυτόματου ελέγχου ακεραιότητας και αποκρυπτογράφησης δίνοντας του το SA για την συγκεκριμένη κίνηση. Τέλος παρέχει ένα φίλτρο με μεγάλο αριθμό επιλογών, ώστε να μας παρουσιάζονται μόνο τα πακέτα που μας ενδιαφέρουν Scapy Το Scapy είναι ένα εργαλείο βασισμένο στην γλώσσα προγραμματισμού Python. Σκοπός του είναι η δημιουργία πακέτων οποιουδήποτε επιπέδου της στοίβας μέσω μιας γλώσσας εντολών που παρέχει, η αποστολή τους, και η λήψη των απαντήσεων. Με το Scapy μπορούν να δημιουργηθούν πακέτα IP,TCP,UDP κτλ., ή ακόμη και πακέτα από την δεκαεξαδική μορφή τους (Raw). Το Scapy χρησιμοποιήθηκε στον έλεγχο και την αποσφαλμάτωση του κώδικα που εκτελείται κατά την λήψη πακέτων. Έχοντας συνδεδεμένο ένα PC με τον FPGA που τρέχει το IPsec, μπορούσαμε να στείλουμε πακέτα που χτίστηκαν με το Scapy και έτσι να ελεγχθεί η συμπεριφορά του κώδικα εισόδου του IPsec Linux ipsec-tools Το ipsec-tools είναι η υλοποίηση του IPsec για το λειτουργικό σύστημα Linux. Μας δίνει την δυνατότητα να ορίσουμε τις πολιτικές του IPsec (Security Policies), και ακόμα να ορίσουμε είτε χειροκίνητα είτε χρησιμοποιώντας το IKE, τα SA(Security Association). 76

91 Το ipsec-tools χρησιμοποιήθηκε στην τελευταία φάση υλοποίησης του IPsec, ως ένα σύστημα αναφοράς για τον τελικό έλεγχο ορθής λειτουργίας της υλοποίησης. Πιο συγκεκριμένα, το ipsec-tools εγκαταστάθηκε σε έναν υπολογιστή ο οποίος συνδέεται με τον FPGA που τρέχει το IPsec. Έπειτα ορίστηκαν οι πολιτικές και τα κατάλληλα SA (χειροκίνητα αφού δεν υπάρχει υλοποίηση του IKE στο σύστημα του FPGA) και στον υπολογιστή και στον FPGA έτσι ώστε να επικοινωνούν μέσω του IPsec. Έτσι η υλοποίηση πέρασε από έναν έλεγχο με ένα πραγματικό σύστημα που τρέχει IPsec και επαληθεύτηκε η σωστή λειτουργία του. Εδώ να αναφερθεί ότι ενώ φαίνεται πλεονασμός η χρήση του Scapy στην αποσφαλμάτωση αφού το σύστημα μπορούσε να περνάει από έλεγχο μόνο με χρήση του ipsec-tools, στην πραγματικότητα ήταν αρκετά βοηθητικό αφού ο έλεγχος με το Scapy γινόταν τμηματικά και έχοντας πρόσβαση σε κάθε λεπτομέρεια που χρειαζόταν (fine grain), ενώ με το ipsec-tools ο έλεγχος θα έπρεπε να γίνει αφού υλοποιηθεί ένα μεγάλο κομμάτι ώστε να μπορεί να επικοινωνήσει με το σύστημα μας. Δυστυχώς το Scapy μπορούσε να χρησιμοποιηθεί μόνο για τον έλεγχο της εισόδου του IPsec, ενώ η έξοδος ελέγχθηκε με το ipsec-tools Τελικό σύστημα και υλοποίηση στο board Στο σχήμα 7.1 παρουσιάζεται ένα διάγραμμα του τελικού συστήματος. Σε αυτό το σχήμα φαίνεται πια μέρη υλοποιούνται στο chip του FPGA και πια μέρη βρίσκονται στο board του. Στο chip βρίσκονται ο Microblaze, τα περιφερειακά του και μια τοπική μνήμη. Ο Microblaze συνδέεται με τα περιφερειακά του μέσω του PLB bus. Όλα τα περιφερειακά είναι memory mapped. Στα περιφερειακά CBC-AES-128 και HMAC-SHA1-96 παρουσιάζεται η διεπαφή τους με τον Microblaze, δηλαδή οι registers στους οποίους γράφει και από τους οποίους διαβάζει. Στο board βρίσκονται η μνήμη RAM, το chip και η διεπαφή της σειριακής θύρας (UART) και το chip και η διεπαφή του Ethernet. Όταν ένα εισερχόμενο πακέτο παραλαμβάνεται από την διεπαφή του Ethernet, το chip του Ethernet το τοποθετεί σε μια FIFO. Όταν είναι έτοιμο να εξέλθει από την FIFO και ο είναι έτοιμος και ο Ethernet Controller να δεχθεί, τότε μεταφέρεται στον δεύτερο, ο οποίος έπειτα ενημερώνει τον Microblaze μέσω ενός interrupt. Ο Microblaze διακόπτει την λειτουργία του, και εκτελεί τον κώδικα του Ethernet του lwip που είναι υπεύθυνος για τα εισερχόμενα παέτα. Αυτός αναλαμβάνει να αποθηκεύσει το νέο πακέτο στην RAM, να επεξεργαστεί το Ethernet πακέτο, και έπειτα να δώσει τον έλεγχο της εκτέλεσης στο πρωτόκολλο που περιέχει το πακέτο Ethernet. Στην περίπτωση που πρόκειτα για πακέτο IP, εκτελείται η ip_input όπου και γίνεται επεξεργασία του ip πακέτου. Αν πρόκειται για κίνηση IPsec τότε, το payload του ip πακέτου δίνεται στην ipsec_input η οποία ελέγχει τις βάσεις SPD και SADB, ξεχωρίζει αν είναι πακέτο AH ή ESP και εκτελεί την κατάλληλη συνάρτηση. Όταν φτάσει στο σημείο της αυθεντικοποίησης ή/και της αποκρυπτογράφησης η εκτέλεση πηγαίνει στον αντίστοιχο driver, ο οποίος ξεκιναεί αντιγραφές block του payload από την μνήμη RAM στο περιφερειακό,δίνει τις κατάλληλες εντολές, περιμένει απάντηση από το περιφερειακό και αντιγράφει το αποτέλεσμα πίσω στην μνήμη RAM, στο ίδιο σημείο. Όταν τελειώσει το IPsec, το payload του πακέτου του δίνεται στο κατάλληλο πρωτόκολλο ανωτέρου επιπέδου. Η διαδιακασία επεξεργασίας των εξερχομένων πακέτων είναι σχεδόν η αντίστροφη, ξεκινώντας από ένα πακέτο ανωτέρου επιπέδου και καταλήγοντας στην FIFO εξόδου και τελικά στην αποστολή του από την διεπαφή Ethernet. Τέλος, κατά την διάρκεια εκτέλεσης του IPsec, δημιουργούνται και debugging μηνύματα, τα οποία στέλνονται από την διεπαφή της UART σε ένα PC ώστε να τυπωθούν. 77

92 FPGA chip BRAM FPGA board lmb dmb INTR Interrupt Controller Block Key Ethernet Controller HMAC- SHA1-96 MAC Control/ Status Block PLB UART Controller UART Key CBC-AES-128 IV Out DDR2 Controller DDR2 SDRAM Control/ Status Timer Σχήμα 7.1: Τελικό Σύστημα 7.3. On-Chip έλεγχος ορθής λειτουργίας Ως παράδειγμα λειτουργίας του συστήματος χρησιμοποιήθηκε ένας ECHO-server. Το πρωτόκολλο ECHO (αντήχηση) δέχεται αιτήσεις (requests) που μεταφέρουν κάποιο μήνυμα κα δίνει απαντήσεις (responses) στον αιτούντα που περιλαμβάνουν το ίδιο μήνυμα. Ο server τοποθετήθηκε στον FPGA. Ως client χρησιμοποιήθηκε ένα script πρόγραμμα σε Ruby, το οποίο δημιουργεί μια σύνδεση με τον server και έπειτα στέλνει αιτήσεις ECHO. Ο κώδικας που φαίνεται παρακάτω ως παράδειγμα ενός client, συνδέεται με τον ECHO-server και έπειτα στέλνει 1000 μηνύματα τυχαίου μεγέθους που κυμαίνεται από 5 μέχρι 50 τυχαίων κεφαλαίων χαρακτήρων. Αν προκύψει ανισότητα μεταξύ αίτησης και απάντησης τότε σταμάτάει η αποστολή. Στο τέλος κλείνει η σύνδεση: require socket cl=tcpsocket.new(server_ip, 7) for i in random_message = (0..(rand(50)+5).map{ (65+rand(26)).chr }.join cl.puts random_message if cl.gets!= random_message then puts Unexpected Response break end end cl.close 78

93 Σχήμα 7.2: ECHO server σε Transport Mode Αφού έγιναν οι κατάλληλες ρυθμίσεις των πολιτικών στις SPD και των SA στις SADB των εμπλεκόμενων συστημάτων, έτρεξε το σύστημα, έχοντας ενεργό το Wireshark ώστε να συλλέξουμε τα πακέτα της επικοινωνίας. Το σύστημα δοκιμάστηκε και για τα δυό πρωτόκολλα (AH και ESP) χρησιμοποιώντας μεγάλο πλήθος πακέτων. Ενδεικτικά και για λόγους εξοικονόμησης χώρου, παρουσιάζονται και αναλύονται τα πακέτα ενός μόνο παραδείγματος αίτησης-απάντησης για κάθε περίπτωση. Τα πακέτα που παραλείπονται ακολουθούν την ίδια λογική. ESP με CBC-AES-128 και HMAC-SHA1-96 σε Transport Mode Αρχικά στέλνεται ένα ECHO Request με μήνυμα abc από τον client στον server που βρίσκεται στον FPGA.Το κρυπτογραφημένο πακέτο ESP παρουσιάζεται παρακάτω. Τα χρωματισμένα πεδία με την σειρά που εμφανίζονται είναι: Κεφαλίδα Ethernet Κεφαλίδα IP SPI Sequence Number IV Payload ICV Παρακάτω φαίνεται το αποκρυπτογραφημένο payload. Το πρώτο πεδίο είναι το TCP πακέτο, το οποίο όπως φαίνεται σημειωμένο στον ASCII περιέχει το μήνυμα abc του ECHO. Ακολουθεί το padding, pad length και next header στο δεύτερο πεδίο. Το τελευταίο πεδίο είναι το ICV, όπως και στο προηγούμενο σχήμα. 79

94 Στη συνέχεια, ο ECHO-server στον FPGA απαντάει με το παρακάτω πακέτο: Παρατηρούμε την ύπαρξη των πεδίων SPI, Sequence Number, IV, του κρυπτογραφημένου payload και του ICV. Το αποκρυπτογραφημένο πακέτο της απάντησης είναι: Παρατηρούμε ότι στο αποκρυπτογραφημένο payload υπάρχει το αρχικό μήνυμα της αίτησης abc. AH με HMAC-SHA1-96 σε Transport Mode Αρχικά στέλνεται ένα ECHO Request με μήνυμα abc από τον client στον server που βρίσκεται στον FPGA.Το πακέτο ΑΗ παρουσιάζεται παρακάτω. Τα χρωματισμένα πεδία με την σειρά που εμφανίζονται είναι: Κεφαλίδα Ethernet Κεφαλίδα IP Next Header AH Length Reserved SPI Sequence Number ICV TCP Payload ECHO Payload Το RESPONSE του FPGA είναι: 80

95 Παρατηρούμε την ύπαρξη των πεδίων της κεφαλίδας AH, καθώς και το σωστό περιεχόμενο στο ECHO payload Μετρήσεις Μετά τον έλεγχο σωστής λειτουργίας του συστήματος, ακολούθησε η συλλογή μετρήσεων. Σκοπός αυτών των μετρήσεων είναι εκτίμηση της απόδοσης του καθώς και η σύγκριση του συστήματος με τους κρυπτογραφικούς αλγορίθμους σε υλικό και σε λογισμικό. Η ποσότητα που μετράται είναι οι κύκλοι ρολογιού που απαιτούνται για την επεξεργασία ενός πακέτου από την στιγμή που εισέρχεται στο μονοπάτι επεξεργασίας που θέλουμε να μετρήσουμε. Για την μέτρηση των κύκλων ρολογιού χρησιμοποιήθηκε ένας timer. Όταν ξεκινάει η επεξεργασία του IPsec, ο timer αρχικοποιήται και ενεργοποιήται. Μετά την ενεργοποίηση του, ο timer αυξάνει την τιμή του μετρητή του σε κάθε κύκλο ρολογιού. Όταν θέλουμε να μετρήσουμε τον χρόνο επεξεργασίας κάποιου μονοπατιού, αποθηκεύουμε την τιμή του timer στην αρχή του και στο τέλος του και αφαιρώντας τις δύο αυτές ποσότητες προκύπτει ο αριθμός των κύκλων ρολογιού που χρειάστηκε το συγκεκριμένο μονοπάτι. Για τις συγκριτικές μετρήσεις, υλοποιήθηκε το ίδιο σύστημα, με την διαφορά ότι οι κρυπτογραφικοί αλγόριθμοι εκτελόυνται σε λογισμικό. Η υλοποίηση των αλγορίθμων έγινε με βάση την υπάρχουσα υλοποίηση τους στο πακέτο OpenSSL, με κατάλληλη προσαρμογή του κώδικα ώστε να μπορεί να εκτελεστεί από το σύστημά μας. Η επιλογή αυτή έγινε διότι η υλοποίηση των αλγορίθμων στο OpenSSL είναι βελτιστοποιημένη, γεγονός που βοηθάει στην ορθή σύγκριση μεταξύ των υλοποιήσεων. Αν η υλοποίηση σε λογισμικό ήταν πιο αργή, οι μετρήσεις θα ήταν προκατειλημένες και τα αποτελέσματα της σύγκρισης θα επωφελούσαν την υλοποίηση του υλικού. Οι μετρήσεις έγιναν για το πρωτόκολλο ESP, αφού περιέχει και τους δύο κρυπτογραφικούς αλγορίθμου. Χωρίστηκαν σε δυό μέρη, ένα για την επεξεργασία των εισερχομένων πακέτων και ένα για των εξερχομένων. Ακόμη, χρησιμοποιήθηκαν διάφορα μεγέθη payload των πακέτων, για να υπάρχει πλήρη εικόνα της απόδοσης, διότι υπάρχουν σημεία του συστήματος, ο χρόνος επεξεργασίας των οποίων εξαρτάται από το μέγεθος του πακέτου. Τα μονοπάτια που μετρήθηκαν είναι η συνολική επεξεργασία του IPsec, η επεξεργασία του ESP και οι κρυπτογραφικοί αλγόριθμοι. Να τονιστεί ότι στην μέτρηση του IPsec περιλαμβάνεται η επεξεργασία του ESP, και στου ESP περιλαμβάνονται οι κρυπτογραφικοί. Παρακάτω παρουσιάζονται δύο πίνακες μετρήσεων, ένας για την μέτρηση εισερχομένων και ένας για των εξερχομένων. Οι ποσότητες που παρουσιάζονται είναι ο αριθμός των κύκλων ρολογιού που μετρήθηκαν. Στους πίνακες προστέθηκε η γραμμή Speedup η οποία δηλώνει πόσες φορές πιο γρήγορη η υλοποίηση με υλικό, του μέρους που μετράται. Ο υπολογισμός αυτός είναι η διαίρεση του αριθμού κύκλων ρολογιού της υλοποίησης σε λογισμικό προς αυτών της υλοποίησης σε υλικό. Ακόμη προστέθηκαν οι δύο τελευταίες στήλες. Η πρώτη αναφέρεται στην επεξεργασία μόνο της κεφαλίδας ESP, δηλαδή χωρίς τους κρυπτογραφικούς αλγορίθμους. Η δεύτερη αναφέρεται στην επεξεργασία που γίνεται από το IPsec χωρίς την επεξεργασία του ESP, 81

96 δηλαδή περιλαμβάνει την επεξεργασία της κεφαλίδας IPsec και τις αναζητήσεις στις SPD και SADB. Μέγεθος payload (bytes) CBC-AES-128- Dec Επεξεργασία Εισερχομένων HMAC-SHA1-96 ESP Ipsec EPS Header Processing Ipsec Header Processing SW HW Speedup SW HW Speedup SW HW Speedup SW HW Speedup SW HW Speedup Πίνακας 7.1 Επεξεργασία Εξερχομένων Μέγεθος payload (bytes) CBC-AES-128- Enc HMAC-SHA1-96 ESP Ipsec EPS Header Processing Ipsec Header Processing SW HW Speedup SW HW Speedup SW HW Speedup SW HW Speedup SW HW Speedup Πίνακας

97 Αρχικά παρατηρούμε ότι το σύστημα επωφελείται από την υλοποίηση των κρυπτογραφικών αλγορίθμων σε υλικό και στην εισερχόμενη και στην εξερχόμενη κίνηση για κάθε μέγεθος πακέτου. Αυτό γίνεται εμφανές από το Speedup της στήλης IPsec. Ακόμα παρατηρούμε ότι το Speedup του IPsec αυξάνεται όσο μεγαλώνει το μέγεθος του πακέτων. Αναλύοντας περισσότερο τις μετρήσεις βλέπουμε ότι το μέρος που κυριαρχεί στο speedup του συστήματος είναι ο CBC-AES-128. Ο HMAC-SHA1-96 συμμετέχει στο speedup αλλα σε αρκετά μικρότερο βαθμό. Ακόμα η τάση να μεγαλώνει το speedup στα μεγαλύτερα πακέτα είναι προκύπτει και πάλι από τον CBC-AES-128. Ο HMAC-SHA1-96 αντίθετα δείχνει να μειώνει στο speedup του όσο μεγαλώνουν τα πακέτα, αλλά αυτή η τάση είναι μικρότερη από αυτήν του CBC-AES-128 και δεν επηρεάζει πολύ ολόκληρο το σύστημα. Τέλος γίνεται εμφανές ότι καθαρά η επεξεργασία των κεφαλίδων και οι αναζητήσεις στις SPD και SADB παραμένουν ίδιες, όπως και αναμενόταν διότι παραμένουν ίδιες και στην υλοποίηση. Μια μικρή απόκλιση που παρουσιάζεται μεταξύ τους οφείλειται σε διάφορους παράγοντες όπως για παράδειγμα ο χρόνος αναζήτησης στις βάσεις, που δεν είναι ποτέ ίδιος. Τέλος, συγκρίνοντας τις μετρήσεις των εισερχομένων με των εξερχομένων παρουσιάζεται μία διαφορά στην επεξεργασία της κεφαλίδας ESP. Αυτό οφείλεται στο γεγονός ότι κατά την δημιουργία της κεφαλίδας όταν έχουμε εξερχόμενη κίνηση δημιουργούμε ένα τυχαίο IV και το padding του πακέτου, διαδικασίες που δεν υπάρχουν στην επξεργασία εισερχόμενης κίνησης, και εκτελούνται περισσότερες αντιγραφές στην μνήμη από ότι στην επεξεργασία εισερχόμενης κίνησης. Από τις παραπάνω μετρήσεις μπορεί εύκολα να προκύψει ο ρυθμός επεξεργασίας(throughput) του συστήματος με τον εξής υπολογισμό: όπου #bits εκφράζει τον πλήθος bits που επεξεργάζονται σε χρόνο time. Έχοντας τους κύκλους ρολογιού και την συχνότητα λειτουργίας του συστήματος μπορούμε να βρούμε πόσο χρόνο χρειάζεται η επεξεργασία ενός πακέτου: Όπου f = 100MHz η συχνότητα λειτουργίας και #clk το πλήθος των κύκλων ρολογιού. Οπότε έχουμε: Με τον παραπάνω τύπο μπορούμε να υπολογίσουμε το throughput του συστήματος μας για κάθε μέγεθος πακέτου. Εδώ να αναφερθεί ότι το #bits αντιπροσωπεύει το μέγεθος του payload του πακέτου, χωρίς κεφαλίδα, padding, IV και trailer. Στον παρακάτω πίνακα παρουσιάζονται οι υπολογισμοί του throughput για τα παραπάνω μεγέθη payload για την εισερχόμενη και εξερχόμενη κίνηση: 83

98 Ρυθμός απόδοσης (Kb\s) Throughput (Kb/s) Εξερχόμενη Εισερχόμενη #bits HW SW HW SW Πίνακας 7.3 Τα παραπάνω συνοψίζονται στην επόμενη γραφική παράσταση. Παρατηρούμε σημαντική βελτίωση με χρήση των κρυπτογραφικών αλγορίθμων σε υλικό, ιδιαίτερα στα μέτρια προς μεγάλα πακέτα. Ακόμη παρατηρούμε ότι η τάση του throughput είναι ανοδική καθώς μεγαλώνουν τα πακέτα Σύγκριση Ρυθμού Απόδοσης Εξερχόμενη-HW Εξερχόμενη-SW Εισερχόμενη-HW Εισερχόμενη-SW Μέγεθος του payload Σύγκριση ρυθμού επεξεργασίας Ακόμη, μετρήθηκε η επιφάνεια του FPGA που καλύπτει το σύστημα, καθώς και η επιφάνεια των περιφερειακών. Ο παρακάτω πίνακας συνοψίζει τα αποτελέσματα. Τα ποσοστά αναφέρονται στην επιφάνεια του περιφερειακού προς την επιφάνεια του συστήματος. Μετρήσεις Επιφάνειας Δείκτες CBC-AES- 128 % HMAC-SHA1-96 % Ολόκληρο το σύστημα Καταχωρητές LUTs Slices

99 ΚΕΦΑΛΑΙΟ 8 Δυσκολίες που Αντιμετωπίστηκαν Κατά την διάρκεια εκπόνησης της παρούσας εργασίας, αντιμετωπίστηκαν διάφορες δυσκολίες σε όλες τις φάσεις ανάπτυξης του συστήματος. Εδώ αναφέρονται συνοπτικά οι πιο σημαντικές. Διαχείρηση μνήμης του lwip Το lwip διαθέτει δική του βιβλιοθήκη διαχείρησης της μνήμης. Η συνάρτηση με την οποία δεσμεύεται ένα μπλοκ μνήμης είναι η mem_malloc. Αυτή η συνάρτηση χρησιμοποιείται από το lwip σε οποιαδήποτε δέσμευση μνήμης. Για παράδειγμα η pbuf_alloc η οποία δεσμεύει μνήμη για ένα νέο pbuf χρησιμοποιεί την mem_malloc. Στην αρχική φάση υλοποίησης του λογισμικού του IPsec, δημιουργήθηκε μία ξεχωριστή βιβλιοθήκη διαχείρησης της μνήμης. Όμως η δέσμευση μνήμης από την διαχείρηση μνήμης του IPsec δεν μπορούσε να συνυπάρξει με την διαχείρηση μνήμης του lwip αφού προέκυπταν συγκρούσεις και επικαλύψεις στην μνήμη. Αυτό γινόταν διότι δεν υπήρχε συνενόηση μεταξύ των δύο διαχειριστών μνήμης για το πια κομμάτια μνήμης είναι δεσμευμένα. Έτσι, για παράδειγμα, ένα pbuf το οποίο είχε δεσμευτεί στην μνήμη από το lwip χανόνταν ή αλοιώνονταν όταν γινόταν μια δέσμευση μνήμης από το IPsec, η οποία συνέπεφτε στο pbuf. Το γεγονός αυτό προκάλεσε σύγχυση στην διαδικασία της υλοποίησης, αφού όταν προέκυπτε κάποιο λάθος στην λειτουργία δεν φαινόταν άμεσα ότι η αιτία ήταν η διπλή διαχείρηση της μνήμης. Το πρόβλημα λύθηκε με την κατάλληλη τροποποίηση της διαχείρησης μνήμης του IPsec, ώστε να χρησιμοποιεί την mem_malloc η οποία ενημερώνει τον διαχεριστή μνημης του lwip για τις δεσμέυσεις μνήμης που κάνει το IPsec. Σχεδίαση και υλοποίηση του υλικού Πολλές φορές, στην φάση της υλοποίησης του υλικού, ο σχεδιασμός λειτουργεί τέλεια στις πρωσομοιώσεις αλλά όταν καταλήγει στο FPGA chip, δείχνει να λειτουργεί αναπάντεχα. Κατά την διάρκεια της υλοποίησης των δύο περιφερειακών CBC-AES-128 και HMAC- SHA1-96, συναντήθηκε πολλές φορές η παραπάνω δυσκολία που οδήγησε σε επανεξέταση της σχεδίασης αρκετές φορές. Ως παράδειγμα, στο σχήμα 9.1 ακολουθεί η πρώτη σχεδίαση του AES_Round. Η σχεδίαση αυτή είναι ορθή ως λογική και περνάει επιτυχώς τις προσωμοιώσεις. Η λειτουργία της έχει ως εξής: όταν έχουμε σήμα Enc, το μπλοκ εισόδου περνάει από τα ShiftRows, SubBytes, MixColumns (παραλείπεται όταν έχουμε LastRound) και AddRoundKey. Όταν έχουμε Dec, περνάει από τα InvShiftRows, SubBytes, AddRoundKey και MixColumns (παραλείπεται όταν έχουμε LastRound). Ενώ φαίνεται και από την ανάλυση και από τις προσωμοιώσεις ότι είναι μια πλήρως λειτουργική μονάδα, τα αποτελέσματα που δίνει, όταν «κατέβει» στον FPGA, φαίνονται να είναι τυχαία. Το πρόβλημα βρίσκεται στο ότι θεωρήσαμε το σήμα EncDec έχει σταθερή τιμή σε όλες της μονάδες, από όταν έρθει το μπλοκ εισόδου μέχρι να τελειώσει η επεξεργασία του. Όμως τα σήματα στην πραγματικότητα δεν είναι ιδανικά, αλλά πάσχουν από καθυστερήσεις και glitches. 85

100 Block_In AES Round ShiftRows InvShiftRows EncDec SubBytes RoundKey Dec Enc Last_from_mixcols Dec Enc Last Round AddRoundKey MixColumns LastRound Enc Dec Block_Out Σχήμα 7.2: Αρχικός σχεδιασμός του AES_Round Για παράδειγμα, το σήμα EncDec είναι σήμα επιλογής στον MUX πριν το AddRoundKey, στον MUX πριν το MixColumns και στον MUX πριν την έξοδο. Στην προσομοίωση, δεν λαμβάνονται υπ όψιν οι καθυστερήσεις που προκύπτουν (λόγω καλωδίωσης,fanout κτλ), και έτσι το σήμα EncDec θεωρείται ότι φτάνει ταυτόχρονα στους MUX. Στην πραγματικότητα όμως υπάρχει μια διαφορά χρόνου στην άφιξη του, έχοντας για κάποιο χρονικό διάστημα διαφορετικές επιλογές στους MUX και οπότε τα δεδομένα ακολουθούν λανθασμένη διαδρομή επεξεργασίας. Ένα ακόμα παράδειγμα είναι η δημιουργία glitch στο σήμα EncDec κατά την διάρκεια επεξεργασίας των δεδομένων, το οποίο μπορεί να προκληθεί λόγω καθυστερήσεων σε σήματα που συμετέχουν στην λογική που δημιουργεί το σήμα ΕncDec. Όταν δημιουργηθεί το glitch, θα αλλάξει στιγμιαία η επιλογή των MUX και οπότε θα περάσουν λανθασμένα δεδομένα στις μονάδες που οδηγούν αυτοί προκαλώντας πιθανώς λανθασμένα αποτελέσματα και στην έξοδο της μονάδας. Ο synthesizer που δημιουργεί το κύκλωμα, προσπαθεί να τηρήσει τους περιορισμούς καθυστερήσεων που χρειάζεται το κύκλωμα για να λειτουργεί σωστά, όμως η παρουσία 86

Διπλωματική Εργασία. Γεώργιου Γκίτσα

Διπλωματική Εργασία. Γεώργιου Γκίτσα Διπλωματική Εργασία Γεώργιου Γκίτσα Μάρτιος 2014 Η σχεδίαση και υλοποίηση ενός ενσωματωμένου συστήματος που να λειτουργεί ως δικτυακό σύστημα παρέχοντας υποστήριξη του IPsec Μικτή σχεδίαση σε υλικό/λογισμικό

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ

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

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

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

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

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

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

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

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

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρωτόκολλα και Αρχιτεκτονική Δικτύου Για να ανταλλάξουν δεδομένα δύο σταθμοί, εκτός από την ύπαρξη διαδρομής μεταξύ

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

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

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

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

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

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

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

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

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά Πρωτόκολλα Ασφάλειας Επιπέδου Internet (sec) Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά Το μοντέλο του Internet 2/37 Σχέσεις πρωτοκόλλων ασφαλείας και / στοίβας PGP. SET........ SSL

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

Σχεδιασμός Εικονικών Δικτύων Ενότητα 4β: VPN on IPSec (Μέρος 2ο)

Σχεδιασμός Εικονικών Δικτύων Ενότητα 4β: VPN on IPSec (Μέρος 2ο) Σχεδιασμός Εικονικών Δικτύων Ενότητα 4β: VPN on IPSec (Μέρος 2ο) Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

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

Δίκτυα Υπολογιστών I

Δίκτυα Υπολογιστών I Δίκτυα Υπολογιστών I Σχεδίαση και Αρχιτεκτονική Δικτύων Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) MYY703: Δίκτυα Υπολογιστών I 1 / 19 Διάρθρωση

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

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

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

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

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

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

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

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

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

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

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

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

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

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

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. 5.1 Γενικά Τα πρώτα δίκτυα χαρακτηρίζονταν από την «κλειστή» αρχιτεκτονική τους με την έννοια ότι αυτή ήταν γνωστή μόνο στην εταιρία που την είχε σχεδιάσει. Με τον

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

Σχεδιασμός Εικονικών Δικτύων Ενότητα 4α: VPN on IPSec

Σχεδιασμός Εικονικών Δικτύων Ενότητα 4α: VPN on IPSec Σχεδιασμός Εικονικών Δικτύων Ενότητα 4α: VPN on IPSec Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

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

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

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

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα 1.7 - Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Πρωτόκολλο είναι ένα σύνολο κανόνων που πρέπει να ακολουθήσουν όλοι οι σταθμοί εργασίας σε ένα δίκτυο ώστε να μπορούν

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

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα επικοινωνίας Ορισμός Σύνολα προσυμφωνημένων κανόνων που απαιτούνται για τον καθορισμό του τρόπου με τον οποίο επιτυγχάνεται η ανταλλαγή δεδομένων, και επομένως

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

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ Ενότητα 1 Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ Εύρος Ζώνης και Ταχύτητα Μετάδοσης Η ταχύτητα µετάδοσης [εύρος ζώνης (banwidth)] των δεδοµένων αποτελεί ένα δείκτη επίδοσης των δικτύων και συνήθως

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

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

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

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2017-2018 Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD ΗΥ220 - Γιώργος Καλοκαιρινός & Βασίλης Παπαευσταθίου 1 Transistor: Δομική μονάδα κυκλωμάτων Τα

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

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

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

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

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας Δίκτυα Υπολογιστών Firewalls Χάρης Μανιφάβας 1 Επικοινωνία Βασίζεται στη μεταβίβαση μηνυμάτων (λόγω απουσίας διαμοιραζόμενης μνήμης) Απαιτείται συμφωνία φόρμας μηνυμάτων Πρότυπο Στόχος τυποποίησης = Συνεργασία

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

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

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

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

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου ΚΕΦΑΛΑΙΟ 1.7 Πρωτόκολλα και Αρχιτεκτονική Δικτύου Επικοινωνία δύο σταθμών Ύπαρξη διαδρομής Αποκατάσταση σύνδεσης Ο σταθμός-πηγή πρέπει να ξέρει πότε ο σταθμός-προορισμός είναι έτοιμος να λάβει δεδομένα.

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2018-2019 Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD ΗΥ220 - Βασίλης Παπαευσταθίου 1 Transistor: Δομική μονάδα κυκλωμάτων Τα ολοκληρωμένα κυκλώματα

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

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

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

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

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

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

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

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

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

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

ΔΙΚΤΥΑ (15-17) Π. Φουληράς

ΔΙΚΤΥΑ (15-17) Π. Φουληράς ΔΙΚΤΥΑ (15-17) Π. Φουληράς Χαρακτηριστικά Δικτύου: Ιδιοκτησία, Υπόδειγμα Υπηρεσίας, και Απόδοση Ιδιωτικά Δίκτυα Κλασσικό Παράδειγμα τα LAN Μεγάλες εταιρείες όμως και σε επίπεδο WAN Αγοράζουν υλικό διασύνδεσης

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

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

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

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

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

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

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

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

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

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

Cryptography and Network Security Chapter 19

Cryptography and Network Security Chapter 19 Cryptography and Network Security Chapter 19 Fifth Edition by William Stallings Lecture slides by Lawrie Brown Chapter 19 IP Security If a secret piece of news is divulged by a spy before the time is ripe,

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

Κεφάλαιο 22. Πρωτόκολλα και πρότυπα ασφαλείας του Διαδικτύου

Κεφάλαιο 22. Πρωτόκολλα και πρότυπα ασφαλείας του Διαδικτύου Κεφάλαιο 22 Πρωτόκολλα και πρότυπα ασφαλείας του Διαδικτύου MIME και S/MIME MIME S/MIME Επέκταση της παλαιάς προδιαγραφής RFC 822 η οποία αφορά τη μορφή του ταχυδρομείου Διαδικτύου Ασφαλείς Γενικές Επεκτάσεις

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

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας Πανεπιστήμιο Πειραιά To Μοντέλο OSI pdemest@unipi.gr ιάρθρωση Το μοντέλο αναφοράς OSI Επίπεδα Πρωτόκολλα, κατανομή πρωτοκόλλων σε στοιχεία δικτύου Αντιστοιχία τστοχα μοντέλων OSI και Internet Ανάλυση Επιπέδων

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

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

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

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

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Σελ. 9-50 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-b.ggia.info/ Creative Commons License 3.0 Share-Alike Σύνδεση από σημείο

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

Κυκλωμάτων» Χειμερινό εξάμηνο

Κυκλωμάτων» Χειμερινό εξάμηνο «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Εισαγωγή στα Συστήματα Ολοκληρωμένων Κυκλωμάτων Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής http://diceslab.cied.teiwest.gr E-mail: pkitsos@teimes.gr

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

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

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

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

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

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

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

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

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

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

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

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

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

Φύλλο Κατανόησης 1.8

Φύλλο Κατανόησης 1.8 Σχολικό Έτος : 2012-2013 Τάξη : B Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι - Θεωρία Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya1 Φύλλο Κατανόησης 1.8 1.8. Το μοντέλο OSI Ερωτήσεις

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

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

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

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

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

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

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

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης Δίκτυα Υπολογιστών Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή Κ. Βασιλάκης Περίγραμμα Τι είναι το διαδίκτυο Στοιχεία που το συνθέτουν Τρόποι παροχής υπηρεσιών Τι είναι τα πρωτόκολλα Τα άκρα του δικτύου

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Α ) Ενσωματωμένα Συστήματα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

Μάθημα 6: Αρχιτεκτονική TCP/IP

Μάθημα 6: Αρχιτεκτονική TCP/IP Μάθημα 6: Αρχιτεκτονική TCP/IP 6.1 Συσχέτιση OSI και TCP/IP Η αρχιτεκτονική TCP/IP ακολουθεί ένα πρότυπο διαστρωμάτωσης παρόμοιο με το μοντέλο OSI. Η αντιστοιχία φαίνεται στο σχήμα 6.1. Η ονομασία της

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

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

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

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

1.2.1 Το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI) 1 / 19

1.2.1 Το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI) 1 / 19 1.2.1 Το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI) 1 / 19 2 / 19 Το Φυσικό Επίπεδο Το Φυσικό Επίπεδο ή στρώμα (Physical layer) ασχολείται με τη μετάδοση των bit (1 0) που απαρτίζουν

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

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) TEI Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) Ανάλυση Πρωτοκόλλων Τομέας Τηλεπικοινωνιών και Δικτύων Δρ. Αναστάσιος Πολίτης Καθηγητής Εφαρμογών anpol@teiser.gr

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

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

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

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

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

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

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

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

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

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

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

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

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

Νέες Επικοινωνιακές Τεχνολογίες

Νέες Επικοινωνιακές Τεχνολογίες Νέες Επικοινωνιακές Τεχνολογίες Λύσεις Θεμάτων http://nop33.wordpress.com Τι ορίζουμε ως Τοπικό Δίκτυο Υπολογιστών; Ποια είναι τα βασικά χαρακτηριστικά των Τοπικών Δικτύων; Ποιες οι βασικές τοπολογίες

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

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων SSL/TLS

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων SSL/TLS Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων SSL/TLS Fysarakis Konstantinos, PhD kfysarakis@staff.teicrete.gr » Το SSL (Secure Sockets Layer) αναπτύχθηκε από την εταιρεία Netscape. Η έκδοση 1.0 δεν παρουσιάστηκε

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

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

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

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

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

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

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο)

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

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

ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ Τμήμα Μηχανικών Η/Υ & Πληροφορικής Computer Engineering & Informatics Department (CEID) www.ceid.upatras.gr ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ Ακαδημαϊκό Έτος 2017-18 (Τελευταία Ανανέωση: 20/11/2017) Ερευνητική Ομάδα

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

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

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

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

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Μ.Στεφανιδάκης Κατανεμημένα συστήματα ελέγχου Α Β διασυνδετικό δίκτυο Γ Δ Ε π.χ. οι επιμέρους

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

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

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

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

Κεφάλαιο 2. Υπολογιστές και Τεχνολογία Επικοινωνιών Παρελθόν - Παρόν - Μέλλον

Κεφάλαιο 2. Υπολογιστές και Τεχνολογία Επικοινωνιών Παρελθόν - Παρόν - Μέλλον Κεφάλαιο 2 Υπολογιστές και Τεχνολογία Επικοινωνιών Παρελθόν - Παρόν - Μέλλον Εισαγωγή Μέσα αποθήκευσης Δίκτυα υπολογιστών Βάσεις δεδομένων Δίκτυα Υπολογιστών Σύνολο από υπολογιστές ή συσκευές διασυνδεδεμένες

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

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

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

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

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ Δίκτυα Μετάδοσης Δεδομένων Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές Γενικά Διδάσκουσα: Ελένη Αικατερίνη Λελίγκου Γραφείο ΖΑ202. Ε-mail:

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

Δίκτυα Θεωρία

Δίκτυα Θεωρία Δίκτυα Θεωρία 2016-17 Κεφάλαιο 1 1. Ποια είναι τα επίπεδα που χρησιμοποιεί το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI); i. Φυσικό Επίπεδο ii. επίπεδο Ζεύξης ή Σύνδεσης Δεδομένων iii.

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

Κεφάλαια 2&21. Συναρτήσεις κατακερματισμού Πιστοποίηση ταυτότητας μηνυμάτων

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

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

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

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

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

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

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

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

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

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

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης Δίκτυα Υπολογιστών Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή Κ. Βασιλάκης Περίγραμμα Τι είναι το διαδίκτυο Στοιχεία που το συνθέτουν Τρόποι παροχής υπηρεσιών Τι είναι τα πρωτόκολλα Τα άκρα του δικτύου

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

Πρωτόκολλα Διαδικτύου

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Μέρος 1ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Εισαγωγή στην Τεχνολογία TCP/IP To TCP/IP σημαίνει Transmission Control Protocol / Internet Protocol και θα μπορούσε να θεωρηθεί ότι πρόκειται

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

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

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

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

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας Ινστιτούτα Επαγγελματική Κατάρτισης ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι Σημειώσεις Θεωρίας Επιμέλεια: Ματθές Δημήτριος Αθήνα 2017 Μάθημα 1: Βασικές Έννοιες στα Δίκτυα Υπολογιστών 1.1 Δίκτυο Υπολογιστών Ένα δίκτυο είναι

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

Εργαστήριο «Δίκτυα Υπολογιστών Ι»

Εργαστήριο «Δίκτυα Υπολογιστών Ι» 1 Εργαστήριο «Δίκτυα Υπολογιστών Ι» Άσκηση 1 η Τμήμα Mηχ. Πληροφορικής & Υπολογιστών Παν. Δυτικής Αττικής Ημερομηνία έκδοσης: 3/10/2018 Επιμέλεια: Ιωάννης Ξυδάς, Αντώνης Μπόγρης Υλοποίηση ενός Τοπικού

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

Επίπεδο δικτύου IP Forwading κτλ

Επίπεδο δικτύου IP Forwading κτλ Επίπεδο δικτύου IP Forwading κτλ (IP για που το έβαλες) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο δικτύου (Network layer) Επίπεδο εφαρμογής (Application layer):

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

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

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

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

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

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

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ Δίκτυα Υπολογιστών Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές Γενικά Διδάσκουσα: Ελένη Αικατερίνη Λελίγκου Γραφείο ΖΑ202. Ε-mail: e.leligkou@puas.gr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 5ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 5ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 5ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 14. Ποιος είναι ο ρόλος των καρτών δικτύου (Network Interface Card, NIC); Απάντηση: Οι κάρτες δικτύου χρησιμοποιούνται για να συνδέσουν

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών 1 ίκτυα μικρά και μεγάλα Ένα δίκτυο υπολογιστών (computer network) είναι ένας συνδυασμός συστημάτων (δηλαδή, υπολογιστών),

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

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο Συσκευές Τηλεπικοινωνιών και Δικτύωσης Επικοινωνίες Δεδομένων Μάθημα 9 ο Εισαγωγή Ένα δίκτυο αποτελείται από ενεργά και παθητικά στοιχεία. Στα παθητικά στοιχεία εντάσσονται τα καλώδια και τα εξαρτήματα

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