Διαχείριση Δικτύων - Ευφυή Δίκτυα, ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ - ΕΜΠ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧ. ΥΠΟΛΟΓΙΣΤΩΝ Τομέας Επικοινωνιών, Ηλεκτρονικής & Συστημάτων Πληροφορικής Εργαστήριο Διαχείρισης & Βελτίστου Σχεδιασμού Δικτύων Τηλεματικής - NETMODE Ανάλυση Δικτυακής Κίνησης – Πρωτοκόλλων – Υπηρεσιών Ασφάλεια Δικτύων (4η άσκηση) Διαχείριση Δικτύων - Ευφυή Δίκτυα, 9ο Εξάμηνο, 2017-2018
Ανάλυση Δικτυακής Κίνησης Πρωτοκόλλων & Υπηρεσιών Ανάλυση Δικτυακής Κίνησης Πρωτοκόλλων & Υπηρεσιών
TCP/IP stack Based on: Barr, Michael. "TCP/IP or Not TCP/IP?," Embedded Systems Programming, April 2000 , pp. 49-52
Επίπεδο Μεταφοράς στο Internet Το Επίπεδο Μεταφοράς είναι υπεύθυνο για: Την άκρο με άκρο επικοινωνία κόμβων στο δίκτυο Παράδοση των δεδομένων στη διεργασία που τα ζητά TCP (Transmission Control Protocol) Connection Oriented Congestion Control Reliable Delivery UDP (User Datagram Protocol) Connectionless No Congestion Control Unreliable Delivery
Επίπεδο Μεταφοράς στο Internet TCP Connection – 3-way Handshake SYN SYN+ACK ACK Termination FIN (normal termination) RST (abnormal termination) UDP Connectionless Request - Reply
Επίπεδο Μεταφοράς στο Internet Παράδοση Δεδομένων Κάθε πρόγραμμα (διεργασία) περιμένει τα δεδομένα της σε μια «πόρτα» (TCP – UDP port). Κάθε πακέτο περιλαμβάνει πόρτα αποστολέα και παραλήπτη (source – destination port). Well Known Ports Βασικές Υπηρεσίες ακούν σε συγκεκριμένες πόρτες: FTP 21 HTTP 80 SSH 22 Γενικά /etc/services Οι απαντήσεις επιστρέφονται σε τυχαία επιλεγμένη πόρτα.
Source: Richard Stevens, G. Gabrani. "TCP/IP Illustrated Vol Source: Richard Stevens, G. Gabrani. "TCP/IP Illustrated Vol. I : The Protocols“, Pearson, 2006
Εργαλεία Tcpdump Wireshark nmap Command line packet capture (sniffer) utility Wireshark Window based packet capture utility nmap Port Scanning Utility Εξετάζει αν σε κάποιες TCP ή UDP πόρτες απαντά κάποιο πρόγραμμα
Ασφάλεια Δικτύων
Ιδιότητες Ασφαλούς Επικοινωνίας Εμπιστευτικότητα (Privacy) Μόνο ο αποστολέας και ο δέκτης μπορούν να κατανοήσουν το περιεχόμενο της συνομιλίας Κρυπτογραφία (Encryption) Πιστοποίηση (Authentication) Κάθε μέρος μιας συνομιλίας είναι σε θέση να επιβεβαιώσει την ταυτότητα του άλλου μέρους. Χρήση ιδιωτικού κλειδιού και πιστοποιητικών Ακεραιότητα (Integrity) Τα περιεχόμενα της επικοινωνίας δεν έχουν τροποποιηθεί κατά τη μετάδοση. Αλγόριθμοι κατακερματισμού (hash functions) Μη Αποκήρυξη (Non Repudiation) Ο χρήστης δεν μπορεί να απαρνηθεί ότι ο ίδιος έχει υπογράψει ή κρυπτογραφήσει ένα πακέτο, από τη στιγμή που αυτό έχει σταλεί
Εμπιστευτικότητα - Είδη Κρυπτογραφίας Συμμετρική Κρυπτογραφία Συμμετρική (Ιδιωτικού Κλειδιού, Private Key Cryptography) Χρήση μοναδικού κλειδιού και από τα δύο μέρη Κρυπτογράφηση με συγκεκριμένου μήκους κομμάτια κειμένου (block cipher) ή ανά bit σε συνεχή ροή δεδομένων (stream cipher) Αλγόριθμοι κρυπτογράφησης: DES, triple DES, RC2, RC4, RC5, IDEA, AES Γρήγορη άλλα έχει προβλήματα στην ασφάλεια διανομής του κλειδιού Έχει πολλαπλή χρήση: Encryption, authentication, non-repudiation
Εμπιστευτικότητα - Είδη Κρυπτογραφίας Συμμετρική Κρυπτογραφία key Παραλήπτη Αποστολέας Enctrypt Internet Encrypted data Παραλήπτης Dectrypt Encrypted data key Παραλήπτη
Εμπιστευτικότητα - Είδη Κρυπτογραφίας Ασύμμετρη Κρυπτογραφία –Δημοσίου Κλειδιού Ασύμμετρη (Δημόσιου Κλειδιού, Public Key Cryptography) Κάθε μέρος έχει ιδιωτικό και δημόσιο κλειδί. Διανέμει το δημόσιο ελεύθερα Αλγόριθμοι κρυπτογράφησης: RSA, Diffie-Hellman Ισχυρά σημεία: Δεν διανέμονται ιδιωτικά κλειδιά – μόνο τα δημόσια κλειδιά Αδύνατα σημεία: Αργή στην εκτέλεση Αμφισβήτηση εμπιστοσύνης στα δημόσια κλειδιά: γι' αυτό συνιστάται η εγκατάσταση Αρχών Πιστοποίησης (Certification Authorities, CA) και οργανωμένων υποδομών Δημοσίου Κλειδιού (Public Key Infrastructures, PKI) Έχει πολλαπλή χρήση: Encryption, authentication, non-repudiation
Ασύμμετρη Κρυπτογραφία - Κρυπτογραφία Δημόσιου Κλειδιού Αποστολέας και Παραλήπτης έχουν ανταλλάξει Δημόσια κλειδιά Κρυπτογράφηση: Με το δημόσιο κλειδί του Παραλήπτη Αποκρυπτογράφηση: Με το ιδιωτικό κλειδί του Παραλήπτη Δημόσιο κλειδί Παραλήπτη Internet Encrypt Decrypt Encrypted data Αποστολέας Παραλήπτης Ιδιωτικό Κλειδί Παραλήπτη
Κατακερματισμού (Hashing Algorithm) ΚΡΥΠΤΟΓΡΑΦΙΑ ΔΗΜΟΣΙΟΥ ΚΛΕΙΔΙΟΥ Sender Authentication / Non Repudiation – Message Integrity Οι Αποστολέας Α και Παραλήπτης Π κατέχουν ζεύγη Δημοσίου & Ιδιωτικού Κλειδιού και έχουν αμοιβαία γνώση των Δημοσίων Κλειδιών & αλγορίθμων κρυπτογράφησης - κατακερματισμού Ο Αποστολέας Α προσθέτει Ψηφιακή Υπογραφή (Digital Signature) στο μήνυμα με κρυπτογράφηση με το Ιδιωτικό του κλειδί περίληψης (hash) του μηνύματος που προκύπτει με αλγόριθμο κατακερματισμού (hashing algorithm) Ο Παραλήπτης Π επιβεβαιώνει (authenticate) την ταυτότητα του Α, χωρίς δυνατότητά του Α άρνησης της αποστολής (non-repudiation) & επιβεβαιώνει την μη αλλοίωση του μηνύματος (message integrity) με βάση την σύγκριση: Ψηφιακής Υπογραφής, αποκρυπτογραφημένης στον Π με το γνωστό Δημόσιο Κλειδί του Α Νέας περίληψης του ληφθέντος (μη κρυπτογραφημένου) κυρίως μηνύματος που δημιουργεί ο Π με τον ίδιο γνωστό αλγόριθμο κατακερματισμού Αλγόριθμος Κατακερματισμού Αποστολέας Α Παραλήπτης Π Εξήγηση για την "επαλληλία" των κλειδιών (ιδιωτικού και δημόσιου) μεταξύ τους Να γίνει κάποιο σχήμα Περίληψη Μηνύματος (Hash) Μήνυμα Αλγόριθμος Κρυπτογραφίας Σύγκριση Μετάδοση Αλγόριθμος Κατακερματισμού (Hashing Algorithm) Digital Signature Ιδιωτικό Κλειδί Α Δημόσιο Κλειδί Α
ΚΡΥΠΤΟΓΡΑΦΙΑ ΔΗΜΟΣΙΟΥ ΚΛΕΙΔΙΟΥ Sender Authentication / Non Repudiation – Message Integrity Επιγραμματικά τα Στάδια Υπογραφής του μηνύματος Ένα μήνυμα υπογράφεται ως εξής: Ο Αποστολέας περνά το μήνυμα από ένα Hash Function που δίνει αποτέλεσμα μια σειρά χαρακτήρων Α (message digest), που είναι πάντα ίδιου μήκους ασχέτως με το μήκος του μηνύματος. Η σειρά χαρακτήρων Α κρυπτογραφείται με το Ιδιωτικό κλειδί του Αποστολέα σε Α’. Το Α’ (η Ψηφιακή Υπογραφή) στέλνεται μαζί με το μήνυμα (χωρίς το σώμα του μηνύματος να είναι αναγκαστικά κρυπτογραφημένο). Ο Παραλήπτης παίρνει το μήνυμα μαζί με την Ψηφιακή υπογραφή Α’. Περνά το μήνυμα από την ίδια Hash Function με αποτέλεσμα μια σειρά χαρακτήρων Β. Με το Δημόσιο κλειδί του Αποστολέα αποκρυπτογραφεί την Α’ σε Α. Αν τα Α και Β είναι τα ίδια το μήνυμα δεν έχει αλλοιωθεί.
Ψηφιακά Πιστοποιητικά (1) Βεβαιώνουν την ακεραιότητα του Δημόσιου κλειδιού Βεβαιώνουν τη σύνδεση ενός δημόσιου κλειδιού με ένα άτομο ή οργανισμό μέσω της Έμπιστης Τρίτης Οντότητας (Trusted Third Party, TTP) – Αρχή Πιστοποίησης (Certification Authority, CA) στο πλαίσιο σχήματος Υποδομής Δημοσίου Κλειδιού (Public Key Infrastructure, PKI) Ανάλογα με την Αρχή Πιστοποίησης το πιστοποιητικό έχει και διαφορετικό εύρος αναγνώρισης Συνήθως υπάρχει ιεραρχία πιστοποίησης που ορίζεται από το πρότυπο X.509 της ITU-T.
Ψηφιακά Πιστοποιητικά (2) Από τι αποτελείται ένα ψηφιακό πιστοποιητικό (Πρότυπο X.509): Κάποια πληροφοριακά στοιχεία για το χρήστη του Country Name (2 letter code) []:GR State or Province Name (full name) []:Attica Locality Name (eg, city) []:Athens Organization Name (eg, company) []:NTUA Organizational Unit Name (eg, section) []:NETMODE Common Name (eg, fully qualified host name) []:John Smith Email Address []:jsmith@netmode.ntua.gr Το δημόσιο κλειδί του χρήστη Το όνομα μιας Αρχής Πιστοποίησης (CA Name) Την ψηφιακή υπογραφή της Αρχής Πιστοποίησης (CA Digital Signature)
Ψηφιακά Πιστοποιητικά (3) Υπογραφή ενός ψηφιακού πιστοποιητικού με το ιδιωτικό κλειδί της Αρχής Πιστοποίησης (CA) Η CA υπογράφει ένα ψηφιακό πιστοποιητικό με το Ιδιωτικό Κλειδί της. Το Δημόσιο Κλειδί της (ανώτερης) CA πρέπει να είναι γνωστό στους παραλήπτες (π.χ. ενσωματωμένο στον Web browser) ή αποδεκτό λόγω σχέσης εμπιστοσύνης (π.χ. σε περιπτώσεις Self-Signed CA)
ΜΕΙΚΤΟ ΣΥΣΤΗΜΑ ΑΣΦΑΛΟΥΣ ΠΡΟΣΒΑΣΗΣ (SSL/TLS - Secure Sockets Layer / Transport Layer Security) 1η Φάση: Handshaking Ο χρήστης (User) U λαμβάνει γνώση του Δημοσίου Κλειδιού του εξυπηρετητή (Server) S με Ψηφιακό Πιστοποιητικό από Certification Authority CA self-signed ή υπογραμμένο από 3ης έμπιστη οντότητα – Third Trusted Party TTP, στα πλαίσια αρχιτεκτονικής Public Key Infrastructure PKI Ο U δημιουργεί Κοινό Συμμετρικό Κλειδί με τυχαίο αλγόριθμο και το κοινοποιεί στον S κρυπτογραφημένο με το Δημόσιο Κλειδί του S 2η Φάση: Κρυπτογραφημένος Διάλογος με Κοινό Συμμετρικό Κλειδί Γρήγορη συμμετρική κρυπτογραφία σε Secure Channel μεταξύ S – U (το Συμμετρικό Κλειδί ισχύει μόνο για το συγκεκριμένο session) ΠΑΡΑΤΗΡΗΣΗ: Ο U δεν απαιτείται να έχει Πιστοποιητικό με Δημόσιο Κλειδί (ψηφιακή υπογραφή), μόνο ο S έχει Πιστοποίηση μέσω TTP ή self-signed (Server Based Authentication) Αν απαιτείται Ταυτοποίηση – Εξουσιοδότηση του U από τον S (Client & Server Based Authentication) απαιτείται μετάδοση από το secure channel Digital Identity του Client (συνήθως User_Name/Password ή Client Certificates αν υπάρχουν) έλεγχος στον S σε Βάση Δεδομένων Χρηστών (με πρωτόκολλο LDAP - TCP π.χ. για εφαρμογές Web, Mail… και με πρωτόκολλο RADIUS – UDP αν μεσολαβεί Remote Access Server π.χ. για πρόσβαση σε υπηρεσία DSL, WiFi roaming…)
Επισκόπηση λειτουργίας SSL/TLS 1. Client Hello Πληροφορίες που ο server πρέπει να ανταλλάξει με τον client χρησιμοποιώντας SSL. Όπως είναι αριθμός έκδοσης SSL, ρυθμίσεις κρυπτογράφησης (cipher settings), τα δεδομένα για το συγκεκριμένο session. 2. Server Hello Πληροφορίες που ο server πρέπει να επικοινωνήσει με τον client χρησιμοποιώντας SSL. Όπως είναι αριθμός έκδοσης SSL, ρυθμίσεις κρυπτογράφησης (cipher settings), τα δεδομένα για τo συγκεκριμένο session. 3. Authentication and Pre-Master Secret Ο client επικυρώνει το πιστοποιητικό του server (όνομα, ημ/νια, κάτοχος), δημιουργεί το pre-master secret, το κρυπτογραφεί με το δημόσιο κλειδί του server και στέλνει το κρυπτογραφημένο pre-master secret στον server 4. Decryption and Master Secret Ο server χρησιμοποιεί το ιδιωτικό κλειδί του για να αποκρυπτογραφήσει το pre- master secret. Και ο server και ο client κάνουν generate το master secret με το συμφωνημένο ήδη μεταξύ τους cipher 5. Encryption with Session Key Client και server ανταλλάσσουν μηνύματα για να επιβεβαιώσουν ότι όλα τα μηνύματα στο μέλλον θα είναι κρυπτογραφημένα
Επισκόπηση λειτουργίας SSL/TLS
Application Phase Message Authentication Code (MAC): παράγεται από τη σύνοψη των μηνυμάτων της φάσης hand-shake και του συμμετρικού κλειδιού Αποφυγή Man-in-the-Middle επιθέσεων κατά τη φάση του hand-shake
Openssl -keyform PEM -out <my_file.csr> Δημιουργία ιδιωτικού κλειδιού openssl genrsa –out <my_file.key> Δημιουργία αίτησης για υπογραφή πιστοποιητικού (Certificate Signing Request – CSR) openssl req -new -key <my_file.key> -keyform PEM -out <my_file.csr> Υπογραφή πιστοποιητικού από CA (Certification Authority) openssl ca -in <my_file.csr> -out <my_file.crt>