Διπλωματική Εργασία Γεώργιου Γκίτσα Μάρτιος 2014
Η σχεδίαση και υλοποίηση ενός ενσωματωμένου συστήματος που να λειτουργεί ως δικτυακό σύστημα παρέχοντας υποστήριξη του IPsec Μικτή σχεδίαση σε υλικό/λογισμικό σε FPGA
Η σουίτα πρωτοκόλλων IPsec Αρχιτεκτονική του συστήματος Το Υλικό Το Λογισμικό Μετρήσεις Δυσκολίες
AH, ESP, IPsec modes, SA, SPD
To IPSec είναι ένα πρωτόκολλο ασφαλείας, τοποθετημένο στο επίπεδο Δικτύου της στοίβας TCP/IP Λειτουργεί σε συνεργασία με τα πρωτόκολλα IPv4, IPv6 και ICMP Παρέχει δύο δικά του πρωτόκολλα, το ΑΗ και το ESP Κάθε πρωτόκολλο του έχει δύο modes λειτουργίας (Transport, Tunnel) Δημιουργεί συνδέσεις μεταξύ των μερών που επικοινωνούν (conection oriented protocol)
Standard: Πιστοποίηση Αποστολέα (Data Origin Authentication) Παρέχεται από το AH και το ESP Ακεραιότητα Δεδομένων (Data Integrity) Παρέχεται από το AH και το ESP Εμπιστευτικότητα (Data Confidentiality - Encryption) Παρέχεται από το μόνο ESP Προαιρετικά: Anti-Replay Συμπίεση Δεδομένων x MAC Αλγόριθμοι Encryption Αλγόριθμοι
Transport Mode: Προστασία απ άκρο εις άκρο
Tunnel Mode: Προστασία μεταξύ Security Gateways
Κεφαλίδα AH TCP, UDP SA Identifier Anti-replay MAC Κεφαλίδα ESP Initialization Ve ctor
Μία δομή δεδομένων που κρατάει τις παραμέτρους ασφαλείας κάθε σύνδεσης Μονόδρομη σύνδεση (απαιτούνται δύο SA για αμφίδρομη) Αποθηκεύονται στην SADB (SA Database) Διαγράφονται στο τέλος της σύνδεσης (μόνο στο ΙΚΕ) Μέλη της δομής: SPI, Seq#, Anti-Replay window, IPsec Mode κ.α. AH authentication algorithm, key, κτλ. ESP encryption algorithm, key, mode, IV κτλ. ESP integrity algorithm, key κτλ. ESP combined mode algorithms, key(s) κτλ. Διαχείριση Key Management Protocols (πχ IKE) Χειροκίνητα
Κάθε πολιτική ορίζει έναν κανόνα για μία κίνηση με συγκεκριμένα χαρακτηριστικά Ορίζονται από τον διαχειριστή του συστήματος Επιλογή κίνησης με κριτήρια (Source/Dest IP address, NetMask, Protocol, Port κτλ) Ενέργεια για αυτή την κίνηση PROTECT (by IPsec) BYPASS DISCARD Στην περίπτωση του PROTECT παρέχει το, είδος της προστασίας (AH/ESP, Transport/Tunnel) Το SA που αντιστοιχεί (αν υπάρχει) Αποθηκεύονται στην SPD (SP Database) Ελέγχονται για κάθε κίνηση του συστήματος, εισερχόμενη και εξερχόμενη
Custom Software, lwip, Custom Hardware, IPCores
SADB Software SPD Software AH/ESP Header Processing Software Οι κρυπτογραφικοί αλγόριθμοι αποτελούν το bottleneck του συστήματος CBC-AES-128 Hardware (+Driver στο Software) HMAC-SHA1-96 Hardware (+Driver στο Software)
Επεξεργαστής MicroBlaze (100MHz) Περιφερειακά DDR2 Controller ipcore Ethernet ipcore Timer ipcore Interrupt Controller ipcore Κρυπτογραφικοί Αλγόριθμοι custom CBC-AES-128 HMAC-SHA1-96 Interrupt Controller Timer UART Controller PLB DDR2 SDRAM Ethernet Controller CBC-AES-128 HMAC-SHA1-96
Μέρη TCP/IP/Ethernet Stack lwip IPsec custom Drivers για τα custom περιφερειακά custom Χαρακτηριστικά Χωρίς Λειτουργικό Σύστημα (bare metal) Single Packet Processing Παραμετροποιήσιμο ως προς τους κρυπτογραφικούς αλγορίθμους
Memory Mapped I/O Μεταφορά δεδομένων μεταξύ μνήμης και περιφερειακών Microblaze ( Single Packet Processing) x DMA x Bus Master Peripherals Control των περιφερειακών Polling ( Single Packet Processing) x Interrupts
CBC-AES-128 και HMAC-SHA1-96
Αλγόριθμος: Block αλγόριθμος Επαναληπτικός 10 γύρων Μέγεθος block = 128bit Μέγεθος κλειδιού = 128bit Mode (CBC, ECB, CTR) CBC
Κρυπτογράφηση SubBytes Αντικατάσταση των bytes της κατάστασης. Μετασχηματισμός στο πεδίο Galois GF(8). ShiftRows Shift κάθε σειρά MixColumns Πολλαπλασιασμός κάθε στήλης της κατάστασης με έναν πίνακα AddRoundKey Bitwise XOR της κατάστασης με το κλειδί του γύρου
Αποκρυπτογράφηση InvSubBytes Αντίστροφος μετασχηματισμός του SubBytes InvShiftRows Αντίστροφο Shift των σειρών InvMixColumns Πολλαπλασιασμός με τον αντίστροφο πίνακα του MixColumns AddRoundKey XOR με το κλειδί του γύρου
Είσοδοι Μπλοκ μηνύματος - 128 bit Initialization Vector (IV) - 128 bit Κλειδί 128 bit Σήματα ελέγχου (control signals) Έξοδοι Κρυπτογραφημένο μπλοκ 128 bit Σήματα κατάστασης (status signals) Σχεδιαστικές επιλογές Αναδιπλωμένη υλοποίηση ενός γύρου ( Single Packet Processing) Κοινή μονάδα κρυπτογράφησης-αποκρυπτογράφησης ( Single Packet Processing)
Σήματα Ελέγχου reset Encryption start_new Καινούριο μήνυμα next_block Επόμενο block του ίδιου μηνύματος EncDec Κρυπτογράφηση /Αποκρυπτογράφηση Decryption
HMAC Γενικευμένος αλγόριθμος Είσοδοι Μήνυμα σε blocks Κλειδί Παράμετροι Hash αλγόριθμος HMAC-SHA1-96 Μέγεθος block = 512bit Μέγεθος κλειδιού = 512bit Μέγεθος εξόδου = 96 bit Εκτελείται ο SHA1 δύο φορές
Είσοδοι Μπλοκ μηνύματος 512 bit Κλειδί 512 bit Σήματα ελέγχου (control signals) Έξοδοι Message Authentication Code (MAC) 96 bit Σήματα κατάστασης (status signals) Σχεδιαστικές επιλογές Padding του μηνύματος στον driver Παραλήφθηκε το hashing του κλειδιού Αναδιπλωμένη υλοποίηση του SHA1
Σήματα Ελέγχου reset Νέο μήνυμα Hashing blocks msg_done Τέλος μηνύματος next_block Επόμενο block του ίδιου μηνύματος waiting_next_block Εσωτερικό σήμα (το παράγει ο SHA1) Finalizing
lwip, Custom Ipsec, Custom Drivers
Lightweight IP (lwip) Στοίβα TCP/IP με υποστήριξη βασικών πρωτοκόλλων (ARP, IP, ICMP, TCP, UDP κτλ) Ανοικτό λογισμικό Σχεδιασμένο για απαιτήσεις ενσωματωμένων συστημάτων Οι βιβλιοθήκες του IPsec Ενσωμάτωση στον κώδικα του lwip Ευέλικτη διασύνδεση με κρυπτογραφικούς αλγορίθμους Διασύνδεση για την διαχείριση SA και SP Χωρίς IKE (μεγάλο και περίπλοκο) Drivers Χαμηλού επιπέδου λογισμικό Υλοποίηση του πρωτοκόλλου επικοινωνίας των περιφερειακών (FSM) Data transfer Απόκρυψη από το software των λεπτομερειών του hardware
Διεπαφή του Ipsec ipsec_input ipsec_output Διεπαφή του AH ah_input ah_output Διεπαφή του ESP esp_input esp_output Διεπαφή της SADB sa_add sa_delete sa_lookup Διεπαφή της SPD spd_add spd_delete spd_lookup Γενική διεπαφή για κρυπτογραφικούς αλγορίθμους Έλεγχος της SPD Δημιουργία/ Επεξεργασία του Mode Κλήση ah/esp input/output Δημιουργία/ Επεξεργασία κεφαλίδας AH Δημιουργία/ Επιβεβαίωση του MAC Δημιουργία/ Επεξεργασία κεφαλίδας + trailer ESP Δημιουργία/ Επιβεβαίωση του MAC Κρυπτο/Αποκρυπτογράφηση του πακέτου
Ενσωμάτωση επεξεργασίας εισερχομένων πακέτων στην ip_input
Ενσωμάτωση επεξεργασίας εξερχομένων πακέτων στην ip_output
Μέγεθος payload (bytes) CBC-AES-128-Enc HMAC-SHA1-96 ESP Ipsec 3 10 100 500 1000 Επεξεργασία Εξερχομένων EPS Header Processing Ipsec Header Processing SW 543519 269921 867940 871315 54500 3375 HW 17600 44479 117063 120437 54984 3374 Speedup 30.88176136 6.068504238 7.414298 7.234612 - - SW 813759 267691 1137568 1140943 56118 3375 HW 17587 44484 116538 119899 54467 3361 Speedup 46.27048388 6.017691754 9.761348 9.515868 - - SW 2165365 312021 2534846 2538223 57460 3377 HW 59585 58280 175613 178991 57748 3378 Speedup 36.34077368 5.353826356 14.43427 14.18073 - - SW 8911300 582429 9560500 9563879 66771 3379 HW 234655 127235 429579 432952 67689 3373 Speedup 37.97617779 4.577584784 22.25551 22.08993 - - SW 17275837 943116 18296571 18299937 77618 3366 HW 451705 221543 751779 755145 78531 3366 Speedup 38.24583965 4.257033623 24.3377 24.23367 - -
Επεξεργασία Εισερχομένων Μέγεθος payload (bytes) CBC-AES-128-Dec HMAC-SHA1-96 ESP Ipsec 3 10 100 500 1000 EPS Header Processing Ipsec Header Processing SW 772693 279229 1054804 1057353 2882 2549 HW 17625 49741 70174 72724 2808 2550 Speedup 43.84073759 5.613658752 15.03127 14.53926 SW 771658 279396 1053938 1056474 2884 2536 HW 17598 49697 70104 72640 2809 2536 Speedup 43.84918741 5.621989255 15.03392 14.54397 SW 3062302 316804 3381984 3384517 2878 2533 HW 59600 63569 125973 128503 2804 2530 Speedup 51.38090604 4.983624094 26.8469 26.33804 SW 12619006 589613 13211500 13214036 2881 2536 HW 234658 132484 369958 372492 2816 2534 Speedup 53.77615935 4.450446846 35.71081 35.47468 SW 24467280 947749 25417904 25420434 2875 2530 HW 451749 226794 681356 683890 2813 2534 Speedup 54.1612267 4.178898031 37.30488 37.17035
Ρυθμός απόδοσης (Kb\s) Throughput του συστήματος Throughput (Kb/s) Εξερχόμενη Εισερχόμενη #bits HW SW HW SW 3 19.92743 2.754457 33.00149 2.269819 10 66.72283 7.011744 110.1322 7.572359 100 446.9498 31.51811 622.5536 23.63705 500 923.8899 41.82403 1073.849 30.27084 1000 1059.399 442.6245 1169.779 31.47075 1400 1200 1000 800 600 400 200 0 Σύγκριση Ρυθμού Απόδοσης Εξερχόμενη-HW Εξερχόμενη-SW Εισερχόμενη-HW Εισερχόμενη-SW 3 10 100 500 1000 Μέγεθος του payload
Hardware Κρυπτογραφικά Περιφερειακά 100MHz Edge triggered σήματα ελέγχου Software Memory managment Βελτιστοποιήσεις του compiler
ΠΑΡΑΤΗΡΗΣΕΙΣ - ΕΡΩΤΗΣΕΙΣ