Ασφάλεια στο Internet: Πρωτόκολλα Ασφάλειας Επιπέδου Μεταφοράς Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά
Το μοντέλο του Internet t 2/31
Σχέσεις πρωτοκόλλων ασφαλείας και TCP/IP στοίβας PGP. SET........ SSL TCP TCP TCP TCP AH ESP IP IP IP Επίπεδο ικτύου Επίπεδο Μεταφοράς Επίπεδο Εφαρμογής Πάνω από το επίπεδο Εφαρμογής 3/31
Secure Shell SSH (1/2) Το SSH είναι ένα σχετικά απλό πρόγραμμα το οποίο μπορεί να χρησιμοποιηθεί: - Για να συνδεθεί μια οντότητα ασφαλώς με μια άλλη η οποία είναι απομακρυσμένη - Να εκτελεί εντολές σε εκείνη - Να μεταφέρει αρχεία από μια μηχανή σε μια άλλη Αρχικά προοριζόταν για αντικατάσταση εργαλείων του Unix (rlogin, telnet) 4/31
Secure Shell SSH (2/2) To SSH χρησιμοποιεί ένα γενικό πρωτόκολλο ασφαλείας επιπέδου μεταφοράς Όταν χρησιμοποιείται πάνω από το TCP Ο εξυπηρέτης ακούει για συνδέσεις SSH στη θύρα 22 Το SSH παρέχει υποστήριξη για αμοιβαία αυθεντικοποίηση, συμπίεση δεδομένων, εμπιστευτικότητα και ακεραιότητα δεδομένων 5/31
Εκτέλεση πρωτοκόλλου SSH (1/2) Αίτηση αυθεντικοποίησης Host Key + Server Key (Τυπικά RSA κλειδιά 1024 & 768 bits) Κρυπτογραφημένο κλειδί συνόδου OK Το κλειδί συνόδου δημιουργείται από τον client Session_Key = ((256_bits_random_number) Host_Key ) Server_key 6/31
Εκτέλεση πρωτοκόλλου SSH (2/2) Σε ορισμένες περιπτώσεις απαιτείται η πιστοποίηση της ταυτότητας του χρήστη που αιτείται σύνδεσης Αρχικά ο client, αποστέλλει μια αίτηση πιστοποίησης ταυτότητας στο server Η αίτηση περιέχει το όνομα του χρήση που πρόκειται νασυνδεθεί δθί Για παράδειγμα, στην έκδοση 1.0 του F-Secure SSH υποστηρίζονται δύο μέθοδοι αυθεντικοποίησης: - Με συνθηματικό (μεταφέρεται κρυπτογραφημένο) - Με RSA (Challenge Response) 7/31
Αλγόριθμοι Συμπίεσης και Κρυπτογράφησης SSH 2.0 Αλγόριθμοι Συμπίεσης None Χωρίς συμπίεση Υποχρεωτική Zlib GNU ZLIB συμπίεση στο επίπεδο Προαιρετική Αλγόριθμοι Κρυπτογράφησης None Χωρίς κρυπτογράφηση Προαιρετική 3des-CBC Three key Triple-DES σε CBC mode Υποχρεωτική idea-cbc IDEA σε CBC mode Προαιρετική Arcfour ARCFOUR stream cipher Προαιρετική Blowfish- Blowfish σε CBC mode Προαιρετική CBC 8/31
Μέθοδοι Αυθεντικοποίησης ης χρηστών στο SSH 2.0 Μέθοδοι Αυθεντικοποίησης password Password Αυθεντικοποίηση Secured SecurID αυθεντικοποίηση Sey S/Key one-time password αυθεντικοποίηση Oie OPIE one-time password αυθεντικοποίηση publickey Κατοχή του Ιδιωτικού κλειδιού hostbased Ταυτότητα του host πελάτη και του χρήστη kerberos4 Kerberos V4 αυθεντικοποίηση kerberos5 Kerberos V5 αυθεντικοποίηση kerberos-afs AFS Kerberos αυθεντικοποίηση 9/31
Διαδικασία αυθεντικοποίησης Το πρωτόκολλο αυθεντικοποίησης εκτελείται πάνω από το πρωτόκολλο μεταφοράς SSH για να παρέχει αυθεντικοποίηση ηχρήστη Ο client δηλώνει το όνομα της υπηρεσίας και το όνομα του χρήστη ο οποίος επιθυμεί να έχει πρόσβαση σ αυτή Ο server απαντά με το σύνολο των μεθόδων αυθεντικοποίησης για τη συγκεκριμένη υπηρεσία Ο client επιστρέφει μια αντίστοιχη αίτηση αυθεντικοποίησης στο server Ο διάλογος συνεχίζεται ανάλογα με τη μέθοδο, έως ότου η πρόσβαση επιτραπεί ή απορριφθεί 10/31
SSL: Τοποθέτηση στην αρχιτεκτονική TCP/IP Client Server Application Application SSL Handshake SSL Record SSL Handshake SSL Record TCP/IP TCP/IP 11/31
To SSL και οι εφαρμογές Το SSL στρωματοποιείται στην κορυφή ρφή μιας αξιόπιστης υπηρεσίας μεταφοράς (TCP) HTTP NNTP FTP Είναι σε θέση να παρέχει υπηρεσίες ασφαλείας για αυθαίρετες TCP/IP εφαρμογές. Πλεονέκτημα του SSL, η ανεξαρτησία ξρη από την εφαρμογή Μπορεί να χρησιμοποιηθεί για να παρέχει ρχ ασφάλεια διαφανώς σε οποιαδήποτε TCP/IP εφαρμογή. SSL TCP IP 12/31
Οι υπηρεσίες ασφάλειας του SSL Αμοιβαία αυθεντικοποίηση χρησιμοποιώντας κρυπτογραφία δημόσιου κλειδιού Εμπιστευτικότητα των δεδομένων Η σύνδεση κρυπτογραφείται διαφανώς εκτός από την αρχική χειραψία και τον καθορισμό ενός συμμετρικού κλειδιού Προστατεύεται η ακεραιότητα των δεδομένων Τα μηνύματα αυθεντικοποιούνται διαφανώς και ελέγχονται ως προς την ακεραιότητα τους κατά τη μετάδοση με χρήση MACs Σημειώνεται πως δεν παρέχεται ρχ προστασία από επιθέσεις ανάλυσης κυκλοφορίας (traffic analysis attacks) 13/31
SSL, Εφαρμογές και Θύρες Για να χρησιμοποιηθεί το SSL, πρέπει Server και Client να γνωρίζουν ότι η άλλη πλευρά χρησιμοποιεί υπηρεσίες SSL. Έχουν καθοριστεί ξεχωριστοί αριθμοί θυρών για κάθε πρωτόκολλο εφαρμογής με υποστήριξη SSL Keyword Port Description https 443 HTTP με υποστήριξη SSL Ssmtp 465 SMTP με υποστήριξη SSL Snntp (news) 563 NNTP με υποστήριξη SSL sldap 636 LDAP με υποστήριξη SSL spop3 995 POP3 με υποστήριξη SSL 14/31
Τα επιμέρους μρ πρωτόκολλα του SSL Το πρωτόκολλο SSL αποτελείται βασικά από δύο επιμέρους πρωτόκολλα: Το SSL Record πρωτόκολλο, το οποίο παρέχει υπηρεσίες αυθεντικοποίησης, εμπιστευτικότητας και ακεραιότητας δεδομένων, καθώς και προστασία από επιθέσεις επανεκπομπής (anti-replay), σε μια προσανατολισμένη στη σύνδεση αξιόπιστη υπηρεσία μεταφοράς (TCP) Το SSL Handshake πρωτόκολλο που παρέχει υπηρεσίες αυθεντικοποίησης των δύο μερών και ανταλλαγής κλειδιών. Ουσιαστικά διαπραγματεύεται, αρχικοποιεί και συγχρονίζει τις παραμέτρους ασφαλείας στα δύο άκρα της σύνδεσης 15/31
SSL Record πρωτόκολλο Το SSL Record πρωτόκολλο Λαμβάνει δεδομένα από τα πρωτόκολλα υψηλότερων επιπέδων Υλοποιεί κατακερματισμό Εφαρμόζει συμπίεση και στα δεδομένα κρυπτογράφηση Δέχεται ως είσοδο ένα μπλοκ δεδομένων αυθαίρετου μήκους Παράγει ως έξοδο μια σειρά από SSL εγγραφές με μέγιστο μήκος 16.383 bytes η καθεμία Data Fragment Κατάτμηση SSL Plaintext Συμπίεση SSL Compressed SSL CipherText Κρυπτογράφηση 16/31
Η μορφή του SSL Record πρωτοκόλλου Κάθε εγγραφή SSL Record περιέχει τις ακόλουθες πληροφορίες Τύπο περιεχομένου (Content Type). Καθορίζει το πρωτόκολλο υψηλότερου επιπέδου που θα χρησιμοποιηθεί Αριθμό έκδοσης πρωτοκόλλου (v.2/v.3) Μήκος Ωφέλιμο φορτίο δεδομένων (data payload), το οποίο είναι προαιρετικά συμπιεσμένο και κρυπτογραφημένο, σύμφωνα με αυτά που συμφωνήθηκαν κατά τη φάση Handshake Κώδικα αυθεντικοποίησης μηνυμάτων (MAC), ο οποίος προστίθεται πριν κρυπτογραφηθεί το ωφέλιμο φορτίο δεδομένων 17/31
SSL Handshake πρωτόκολλο (1/5) SSL Hand dshake πρωτ τόκολλ λο 1 6 7 8 9 Client Client Hello Certificate Client Key Exch ange Certificate Verify Change Cipher Spec + Finished Server Hello Certificate Certificate Request Server Hello Done Change Cipher Spec + Finished Server 2 3 4 5 10 18/31
SSL Handshake πρωτόκολλο (2/5) Client Hello message Version: Η μεγαλύτερη έκδοση του πρωτοκόλλου που oclient μπορεί να υποστηρίξει Random Number: Ένας 32-bit τυχαίος αριθμός που θα χρησιμοποιηθεί στους κρυπτογραφικούς υπολογισμούς ως σπόρος (seed) και μία τυχαία τιμή 28 bytes δημιουργημένη από έναν PRNG Session ID: Αναγνωρίζει μοναδικά τη συγκεκριμένη SSL σύνοδο (κενό για νέα σύνοδο) Cipher Suites & Compression Methods: Μια λίστα με τις κρυπτογραφικές παραμέτρους ρ και τις μεθόδους συμπίεσης που ο client μπορεί να υποστηρίξει (first choice first) 19/31
SSL Handshake πρωτόκολλο (3/5) Server Hello message Version: Αναγνωρίζει την έκδοση του SSL πρωτοκόλλου που θα χρησιμοποιηθεί Random Number: Ένας 32-bit αριθμός που θα χρησιμοποιηθεί στους κρυπτογραφικούς υπολογισμούς ως σπόρος (seed) και μία τυχαία τιμή 28 bytes δημιουργημένη από έναν PRNG Session ID: Αναγνωρίζει μοναδικά τη συγκεκριμένη SSL σύνοδο, με αναζήτηση στη session cache Cipher Suites & Compression Methods: Οι κρυπτογραφικές παράμετροι και οι μέθοδοι συμπίεσης που θα χρησιμοποιηθούν 20/31
SSL Handshake πρωτόκολλο (4/5) Client key exchange Message Ο client δημιουργεί μια pre-master secret τιμή των 48-bytes Την κρυπτογραφεί με το δημόσιο κλειδί του server (το τελευταίο περιέχεται στο πιστοποιητικό που ο server έστειλε προηγουμένως) Ο server αποκρυπτογραφεί την pre-master secret τιμή χρησιμοποιώντας το ιδιωτικό του κλειδί Τα δύο μέρη θα μετατρέψουν το pre-master secret key σε master secret key υπολογίζοντας μια σειρά από συνόψεις (hashes) χρησιμοποιώντας τόσο το pre-master secret, όσο και τις δύο τυχαίες τιμές που περιέχονται στα δύο hello μηνύματα μ 21/31
SSL Handshake πρωτόκολλο (5/5) Certificate Verify Message Στέλνοντας ο client το δικό του certificate δε σημαίνει αυτόματα ότι αυτός έχει αυθεντικοποιηθεί Πρέπει να αποδείξει ότι κατέχει το ιδιωτικό κλειδί που αντιστοιχεί στο δημόσιο κλειδί που περιέχεται στο certificate t που έστειλε στο server Το μήνυμα περιέχει μία ψηφιακά υπογεγραμμένη σύνοψη (hash) των πληροφοριών που είναι διαθέσιμες και στα δύο μέρη (key info + messages contents) 22/31
Δημιουργία Ομάδας Κλειδιών (1/3) Στις φάσεις ClientHello και ServerHello του SSL Handshake protocol δημιουργούνται δύο τυχαία 28 bytes από PRNG (ClientHello.random και ServerHello.random) Στη φάση ClientKeyExchange o client δημιουργεί με τυχαίο τρόπο ένα pre-master secret key 48 bytes Το pre-master secret key στέλνεται από τον client στον Server, κρυπτογραφημένο με το δημόσιο-κλειδί του Server 23/31
Δημιουργία Ομάδας Κλειδιών (2/3) Το master-secret t key 48 bytes (3*128bits) δημιουργείται στον εξυπηρετούμενο και στον εξυπηρέτη ως εξής: master-secret key = MD5(pre-master secret key + SHA('A' + pre-master secret key + ClientHello.random + ServerHello.random)) random)) + MD5(pre-master secret key + SHA('BB' + pre-master secret key + ClientHello.random + ServerHello.random)) + MD5(pre-master secret key + SHA('CCC' + pre-master secret key + ClientHello.random + ServerHello.random)) Τα απαιτούμενα κλειδιά για τις κρυπτογραφικές διαδικασίες προκύπτουν ως εξής: key-block = MD5(master-secret key + SHA('A' + master secret key + ServerHello.random + ClientHello.random)) + MD5(master-secret key + SHA('BB' + master secret key + ServerHello.random + ClientHello.random)) + MD5(master-secret key + SHA('CCC' + master secret key + ServerHello.random + ClientHello.random)) + 24/31
Δημιουργία Ομάδας Κλειδιών (3/3) Η ομάδακλειδιών, δ που τελικά χρησιμοποιείται, είναι: client_write_mac_secret key server_write_mac_secret key client_write_key OR final_client_write_key = MD5(client_write_key + ClientHello.random + ServerHello.random) server_write_key OR final_server_write_key = MD5(server_write_key + ServerHello.random + ClientHello.random) Το MAC παράγεται από την HMAC(M) = h 1 (K(EXOR)opad(=64times 0x5C), h 2 (K(EXOR)ipad(=64 times 0x36), M)) 25/31
Επανάληψη μιας Προηγούμενης SSL Συνόδου (1/2) Client Server 1 Client Hello Server Hello 2 Change Cipher Spec +Fi Finishedi 3 4 Change Cipher Spec + Finished 26/31
Επανάληψη μιας προηγούμενης SSL συνόδου (2/2) Τα δύο Hello μηνύματα δηλώνουν αν η σύνοδος μπορεί να επαναληφθεί (η τελική απόφαση είναι του server) Αν ο client επιθυμεί να χρησιμοποιήσει τις παραμέτρους ασφαλείας μιας προηγουμένης συνόδου Τοποθετεί το session ID εκείνης είνηςτης συνόδου, στο δικό του Hello Message Αν ο server συμφωνεί και έχει αποθηκευμένες (cashed) τις παραμέτρους αυτής της σύνδεσης, Επιστρέφει το ίδιο session ID στο δικό του Hello. Σε διαφορετική περίπτωση δημιουργεί ένα νέο (fresh) 27/31
Διαφορές μεταξύ SSL v.3.0 και TLS v.1.0 SSL v.3.0 Protocol version in messages 3.0 3.1 TLS v.1.0 Alert protocol message types 12 23 Message authentication ad hoc Standard Key material generation ad hoc PRF CertificateVerify Complex Simple Finished ad hoc PRF Baseline cipher suites Includes Fortezza No Fortezza PRF = Pseudo Random Function 28/31
Σύνοψη Το πρωτόκολλο SSL μπορεί να χρησιμοποιηθεί διαφανώς για την εγκαθίδρυση ασφαλών συνδέσεων μεταξύ εξυπηρετούμενων και εξυπηρετών Αυθεντικοποιεί πάντοτε τον εξυπηρέτη και προαιρετικά τον εξυπηρετούμενο Εκτελεί ανταλλαγή κλειδιών και παρέχει αυθεντικοποίηση μηνυμάτων Παρέχει υπηρεσίες εμπιστευτικότητας και ακεραιότητας δεδομένων για αυθαίρετες TCP/IP εφαρμογές 29/31
Ερωτήσεις Πρωτόκολλα Ασφαλείας Επιπέδου Μεταφοράς (SSH, SSL) 30/31