Ασφάλεια στο WWW SSL/TLS Τμήμα Μηχ. Πληροφορικής ΤΕΙ Κρήτης Ασφάλεια στο WWW - SSL/TLS 1
Ασφάλεια στο Web Στα πρώτα βήματα των διαδικτυακών καταστημάτων οι συναλλαγές γινόταν μέσω τράπεζας (εμβάσματα, καταθέσεις κλπ) ή με αντικαταβολή μέσω ταχυδρομείων Το σύστημα αυτό αν και πρόσφερε ασφάλεια στις συναλλαγές εντούτοις ήταν χρονοβόρο Καθυστέρηση στις πληρωμές - σε συναλλαγές μέσω τράπεζας έπρεπε πρώτα να κατατεθούν τα χρήματα και μετά να σταλεί το προϊόν και υπήρχε περίπτωση να μην μπορεί να γίνει κάποια συναλλαγή λόγω διαφόρων δυσκολιών Τη λύση στα παραπάνω προβλήματα την έδωσε η χρησιμοποίηση πιστωτικών καρτών (πλαστικό χρήμα) που είναι αποδεκτές από όλες τις χώρες του κόσμου και στις περισσότερες επιχειρήσεις Η χρησιμοποίηση όμως των πιστωτικών καρτών έφερε στην επιφάνεια ένα άλλο πρόβλημα, το πρόβλημα της ασφάλειας μεταφοράς δεδομένων, γιατί ο χρήστης θα πρέπει να εισάγει τα στοιχεία της κάρτας και τα προσωπικά του στοιχεία στο σύστημα Κανείς χρήστης δε θα ήθελε κάποιος να του υποκλέψει αυτά τα στοιχεία και να τα χρησιμοποιεί για δικές του αγορές Ασφάλεια στο WWW - SSL/TLS 2
Ασφάλεια στο Web Το Web χρησιμοποιείται ευρέως σήμερα από ιδιώτες, επιχειρήσεις και κυβερνήσεις Όμως το Internet και το Web είναι ευάλωτα από άποψη ασφάλειας Οι απειλές μεταξύ άλλων έχουν να κάνουν με Αυθεντικότητα χρηστών Εμπιστευτικότητα της διακινούμενης πληροφορίας Ακεραιότητα της διακινούμενης πληροφορίας Παρεμπόδιση ομαλής παροχής υπηρεσιών Ασφάλεια στο WWW - SSL/TLS 3
Ασφάλεια στο Web Ηλεκτρονικό εμπόριο Ένας πελάτης δεν επιθυμεί να διακινδυνεύσει τη χρήση της πιστωτικής του κάρτας σε μία on-line συναλλαγή όταν η ασφάλεια που παρέχεται δεν είναι ικανοποιητική Συνήθως η κρυπτογράφηση των δεδομένων που διακινούνται (π.χ. ο αριθμός της πιστωτικής κάρτας) μεταξύ του πωλητή και του αγοραστή είναι αρκετή Ο πελάτης, επιπλέον πρέπει να είναι σίγουρος ότι επικοινωνεί με τον συγκεκριμένο πωλητή γιατί κάποιος επιτιθέμενος είναι δυνατό να παρουσιαστεί ως μία νόμιμη επιχείρηση Η πιστοποίηση της ταυτότητας του πωλητή λύνει σε ένα βαθμό αυτό το ζήτημα Στην πράξη, λόγω της μη ευρείας χρήσης ψηφιακών πιστοποιητικών από απλούς χρήστες, αυτοί πιστοποιούνται μόνο με τη χρήση passwords Ασφάλεια στο WWW - SSL/TLS 4
SSL & TLS Ιστορία To SSL (Secure Socket Layer) σχεδιάστηκε αρχικά από την Netscape το 1994 Η έκδοση 3 σχεδιάστηκε με την βοήθεια και άλλων ειδικών και δημοσιεύθηκε το 1996 H τεχνολογία υιοθετήθηκε σαν Internet Standard από την IETF με την ονομασία TLS (Transport Layer Security) H πρώτη έκδοση του οποίου μπορεί να θεωρηθεί ότι είναι το SSL v3.1 (RFC 2246) Στην πράξη χρησιμοποιείται σε client-server συνδέσεις σε εφαρμογές ηλεκτρονικού εμπορίου Ασφάλεια στο WWW - SSL/TLS 5
SSL & TLS Ασφάλεια στο WWW - SSL/TLS 6
Ασφάλεια στη στοίβα του TCP/IP Socket layer application transport network User OS link physical NIC Ασφάλεια στο WWW - SSL/TLS 7
SSL & TLS To SSL παρέχει end-to-end ασφάλεια σε συνδέσεις όταν αυτό απαιτείται από την εφαρμογή Χρησιμοποιεί το TCP για να παρέχει αξιόπιστες end-to-end υπηρεσίες Επιτρέπει την ασφαλή επικοινωνία μεταξύ δύο μερών με την προϋπόθεση ότι τουλάχιστον τον ένα μέρος έχει στην κατοχή του ένα ψηφιακό πιστοποιητικό το οποίο είναι αποδεκτό από το άλλο μέρος Οι υπηρεσίες ασφάλειας που προσφέρει είναι: Πιστοποίηση της ταυτότητας των δύο μερών με τη χρήση ασύμμετρων κλειδιών Πιστοποίηση server (υποχρεωτικό) Πιστοποίηση client (προαιρετικό) Εμπιστευτικότητα δεδομένων με τη χρήση συμμετρικής κρυπτογράφησης Η σύνδεση κρυπτογραφείται διαφανώς μετά από μία αρχική χειραψία και την ανταλλαγή ενός συμμετρικού κλειδιού. Ακεραιότητα δεδομένων με τη χρήση MAC Τα μηνύματα αυθεντικοποιούνται διαφανώς και ελέγχονται ως προς την ακεραιότητά τους κατά τη μετάδοση με χρήση MACs Ασφάλεια στο WWW - SSL/TLS 8
SSL & TLS Το σημαντικότερο πλεονέκτημα του SSL είναι η ανεξαρτησία από την εφαρμογή ηλαδή, η παροχή ασφάλειας διαφανώς σε οποιαδήποτε TCP/IP εφαρμογή Οι προγραμματιστές εφαρμογών δεν είναι αναγκαίο να γνωρίζουν πώς να προγραμματίζουν κρυπτογραφικούς μηχανισμούς Η ασφάλεια παρέχεται από το πρωτόκολλο SSL Το SSL αποτελείται από τέσσερα υπό-πρωτόκολλα τα οποία τρέχουν σε δύο επίπεδα Ασφάλεια στο WWW - SSL/TLS 9
Αρχιτεκτονική του SSL Ασφάλεια στο WWW - SSL/TLS 10
Αρχιτεκτονική του SSL Στην πράξη, για να χρησιμοποιηθεί το SSL πρέπει τόσο ο Server όσο και ο Client να γνωρίζουν ότι η άλλη πλευρά χρησιμοποιεί υπηρεσίες SSL Έτσι έχουν δεσμευτεί και καθοριστεί ξεχωριστοί αριθμοί θυρών για κάθε πρωτόκολλο εφαρμογής με υποστήριξη SSL Ασφάλεια στο WWW - SSL/TLS 11
Αρχιτεκτονική του SSL Ασφάλεια στο WWW - SSL/TLS 12
SSL Handshake Protocol To πιο πολύπλοκο τμήμα του SSL Τρέχει πριν την έναρξη μετάδοσης δεδομένων της εφαρμογής του χρήστη Ουσιαστικά διαπραγματεύεται, αρχικοποιεί και συγχρονίζει τις παραμέτρους ασφάλειας στα δύο άκρα της σύνδεσης Επιτρέπει στον server και στον client να εξακριβώσει ο ένας την ταυτότητα του άλλου Η αυθεντικοποίηση του server είναι υποχρεωτική Η αυθεντικοποίηση του client είναι προαιρετική Γίνεται με τη χρήση ψηφιακών πιστοποιητικών Επιπλέον, τους επιτρέπει να διαπραγματευτούν τους αλγόριθμους και τα κρυπτογραφικά κλειδιά που πρόκειται να χρησιμοποιήσουν Έκδοση του πρωτόκολλου Συμμετρικοί και ασύμμετροι αλγόριθμοι Είδος και μέγεθος κλειδιών Μέθοδος συμπίεσης Ασφάλεια στο WWW - SSL/TLS 20
SSL Handshake Protocol Ασφάλεια στο WWW - SSL/TLS 21
SSL Handshake Protocol Ασφάλεια στο WWW - SSL/TLS 22
SSL Handshake Protocol Ασφάλεια στο WWW - SSL/TLS 23
SSL Handshake Protocol Ασφάλεια στο WWW - SSL/TLS 24
SSL Handshake Protocol Client Hello message Version Η νεότερη έκδοση του πρωτοκόλλου που o client μπορεί να υποστηρίξει Random Number Ένας 32-bit τυχαίος αριθμός που θα χρησιμοποιηθεί στους κρυπτογραφικούς υπολογισμούς ως σπόρος (seed)και μία τιμή ClientHello.random των28 bytes SessionID Αναγνωρίζει μοναδικά τη συγκεκριμένη SSL σύνοδο Cipher Suites & Compression Methods Μία λίστα με τις κρυπτογραφικές παραμέτρους και τις μεθόδους συμπίεσης που ο client μπορεί να υποστηρίξει Ασφάλεια στο WWW - SSL/TLS 25
SSL Handshake Protocol Server Hello message Version Αναγνωρίζει την έκδοση του SSL πρωτοκόλλου που θα χρησιμοποιηθεί Random Number Ένας 32-bit αριθμός που θα χρησιμοποιηθεί στους κρυπτογραφικούς υπολογισμούς ως σπόρος (seed)και μία τιμή ServerHello.randomτων 28 bytes Session ID Αναγνωρίζει μοναδικά τη συγκεκριμένη SSL σύνοδο Cipher Suites & Compression Methods Οι κρυπτογραφικές παράμετροι και οι μέθοδοι συμπίεσης που θα χρησιμοποιηθούν Ασφάλεια στο WWW - SSL/TLS 26
SSL Handshake Protocol Certificate Aν απαιτείται πιστοποίηση του εξυπηρέτη O εξυπηρέτης αποστέλλει το πιστοποιητικό του στον εξυπηρετούμενο Το πιστοποιητικό περιέχει το δημόσιο κλειδί του εξυπηρέτη Ο εξυπηρετούμενος διακριβώνει την ταυτότητα του εξυπηρέτη Certificate request Προαιρετικό, αν απαιτείται πιστοποίηση του εξυπηρετούμενου Ο εξυπηρέτης αποστέλλει ένα μήνυμα με το οποίο ζητά το πιστοποιητικό του εξυπηρετούμενου Server Hello Done Ο εξυπηρέτης υποδεικνύει ότι έχει τελειώσει την προκαταρκτική φάση εγκαθίδρυσης της συνόδου Ασφάλεια στο WWW - SSL/TLS 27
SSL Handshake Protocol Client Key Exchange message Ο client δημιουργεί μια pre-master secret τιμή 48-bytes την οποία κρυπτογραφεί με το δημόσιο κλειδί του server, το οποίο περιέχεται στο πιστοποιητικό που ο server έστειλε προηγουμένως Ο server θα αποκρυπτογραφήσει την pre-master secret τιμή χρησιμοποιώντας το ιδιωτικό του κλειδί Αργότερα και τα δύο μέρη θα μετατρέψουν το pre-master secret σε master secret, υπολογίζοντας μία σειρά από συνόψεις (hashes) χρησιμοποιώντας τόσο το pre-master secret όσο και τις δύο τυχαίες τιμές ClientHello.random και ServerHello.random που περιέχονται στα hello μηνύματα Ασφάλεια στο WWW - SSL/TLS 28
SSL Handshake Protocol Certificate Verify message Στέλνοντας ο client το δικό του certificate,δε σημαίνει αυτομάτως ότι έχει αυθεντικοποιηθεί Πρέπει επίσης να αποδείξει ότι κατέχει το ιδιωτικό κλειδί που αντιστοιχεί στο δημόσιο κλειδί που περιέχεται στο πιστοποιητικόπου έστειλε στο server Το μήνυμα περιέχει ψηφιακά υπογεγραμμένη σύνοψη (hash) των πληροφοριών που είναι διαθέσιμες και στα δύο μέρη (key info + messages contents) Ασφάλεια στο WWW - SSL/TLS 29
SSL Handshake Protocol Change cipher spec Ο εξυπηρετούμενος είναι έτοιμος να μεταβεί σε ασφαλή επικοινωνία Finished Ο εξυπηρετούμενος τελείωσε το δικό του τμήμα της χειραψίας Change cipher spec Ο εξυπηρέτης είναι έτοιμος να μεταβεί σε ασφαλή επικοινωνία Finished Ο εξυπηρέτης έχει τελειώσει το δικό του τμήμα της χειραψίας Ασφάλεια στο WWW - SSL/TLS 30
SSL Handshake Protocol Server log Ασφάλεια στο WWW - SSL/TLS 31
Αρχιτεκτονική του SSL SSL session ιασύνδεση μεταξύ client & server ημιουργείται από το Handshake Protocol Ορίζει ένα σύνολο από κρυπτογραφικές παραμέτρους Τα χαρακτηριστικά αυτά μπορεί να είναι κοινά σε πολλαπλές συνδέσεις SSL connection Παροδική σύνδεση μεταξύ client & server Αντιστοιχεί σε ένα SSL session Ασφάλεια στο WWW - SSL/TLS 32
Επανάληψη Προηγούμενης SSL Συνόδου Ασφάλεια στο WWW - SSL/TLS 33
Επανάληψη Προηγούμενης SSL Συνόδου Τα δύο Hello μηνύματα εξετάζουν αν η σύνοδος μπορεί να επαναληφθεί Η τελική απόφαση είναι του server Αν ο client επιθυμεί να χρησιμοποιήσει τις παραμέτρους ασφάλειας μιας προηγουμένης συνόδου, τότε τοποθετεί το session ID της στο δικό του Hello Message, προτείνοντάς την προς το server Αν ο server συμφωνεί και έχει αποθηκευμένες (cashed) τις παραμέτρους αυτής της σύνδεσης, τότε επιστρέφει το ίδιο session ID στο δικό του Hello Σε διαφορετική περίπτωση δημιουργεί ένα νέο (fresh) Ασφάλεια στο WWW - SSL/TLS 34
SSL Change Cipher Spec Protocol Είναι το τελευταίο μήνυμα που ανταλλάσσεται πριν αρχίσει η μετάδοση πραγματική δεδομένων Μόνο ένα μήνυμα Ενημερώνει τον παραλήπτη του μηνύματος ότι τα επόμενα μηνύματα θα είναι προστατευμένα σύμφωνα με τις παραμέτρους που έχουν συμφωνηθεί CipherSuite Parameters (algorithms, key sizes, etc) Επίσης, χρησιμοποιείται για την αλλαγή των παραμέτρων κατά τη διάρκεια μιας σύνδεσης Ασφάλεια στο WWW - SSL/TLS 28
SSL Alert Protocol Μεταφέρει προειδοποιητικά μηνύματα ή λάθη στην άλλη πλευρά παραθέτοντας την σοβαρότητα του προβλήματος Είδη συναγερμών unexpected message illegal parameter bad record mac decompression failure handshake failure no certificate bad certificate unsupported certificate certificate revoked certificate expired certificate unknown close notify Συμπιέζεται και κρυπτογραφείται όπως και τα υπόλοιπα δεδομένα Ασφάλεια στο WWW - SSL/TLS 19
SSL Record Protocol Λειτουργεί σε ένα επίπεδο χαμηλότερα από τα υπόλοιπα πρωτόκολλα του SSL Παρέχει Εμπιστευτικότητα Χρησιμοποιεί συμμετρική κρυπτογραφία IDEA, RC2-40, DES-40, DES, 3DES, Fortezza, RC4-40, RC4-128, κ.τ.λ. Το προσωρινό συμμετρικό κλειδί ορίζεται κατά τη διάρκεια του Handshake Ακεραιότητα Χρησιμοποιεί MAC με ένα κοινό μυστικό κλειδί Προστασία από επιθέσεις τύπου επανεκπομπής(replay attacks) Ασφάλεια στο WWW - SSL/TLS 30
SSL Record Protocol Το SSL Record πρωτόκολλο λαμβάνει δεδομένα από πρωτόκολλα υψηλότερων επιπέδων και ασχολείται με την κατάτμηση, τη συμπίεση και την κρυπτογράφηση δεδομένων Κατάτμηση Το πρωτόκολλο δέχεται ως είσοδο ένα block δεδομένων αυθαίρετου μήκους και παράγει ως έξοδο μία σειρά από SSL εγγραφές με μέγιστο μήκος 16.383 bytes η καθεμία Συμπίεση Το μήνυμα συμπιέζεται προαιρετικά Η συμπίεση κρυπτογραφημένων δεδομένων δεν είναι αποτελεσματική Για αυτό το λόγο η συμπίεση γίνεται πριν από την κωδικοποίηση Γενικά, επειδή η συμπίεση κρύβει την δομή των δεδομένων, η αποκρυπτογράφηση συμπιεσμένων δεδομένων είναι πιο δύσκολη Ασφάλεια στο WWW - SSL/TLS 31
SSL Record Protocol Ασφάλεια στο WWW - SSL/TLS 32
SSL Record Protocol Κάθε εγγραφή SSL περιέχει τις ακόλουθες πληροφορίες Τύπο περιεχομένου (Content Type), ο οποίος καθορίζει το πρωτόκολλο υψηλότερου επιπέδου που θα χρησιμοποιηθεί Αριθμό έκδοσης πρωτοκόλλου (v.3) Μήκος Ωφέλιμο φορτίο δεδομένων (data payload), το οποίο είναι προαιρετικά συμπιεσμένο και κρυπτογραφημένο, σύμφωνα με αυτά που συμφωνήθηκαν κατά τη φάση Handshake Κώδικα αυθεντικοποίησης(mac), ο οποίος προστίθεται πριν κρυπτογραφηθεί το ωφέλιμο φορτίο δεδομένων Ασφάλεια στο WWW - SSL/TLS 33
TLS (Transport Layer Security) Ορίζεται στο RFC 2246 Είναι παρόμοιο με το SSL v3 με διαφορές στα παρακάτω σημεία version number message authentication code pseudorandom function alert codes cipher suites client certificate types certificate_verify and finished message cryptographic computations padding Ασφάλεια στο WWW - SSL/TLS 35
Παράδειγμα Μια ιστοσελίδα μπορεί να έχει δημόσια και προστατευμένα τμήματα Όταν κάποιος χρήστης/πελάτης επισκέπτεται μια τέτοια ιστοσελίδα και θέλει να έχει πρόσβαση στα προστατευμένα/ασφαλή τμήματα της ιστοσελίδας ο διακομιστής θα ξεκινήσει τη διαδικασία χρήσης του SSL για να προστατεύσει αυτά τα τμήματα της προστατευμένης ιστοσελίδας Το SSL διατηρεί το κανάλι επικοινωνίας ανοιχτό μέχρι μια από τις δύο οντότητες να αιτηθεί τερματισμό της επικοινωνίας Αυτό που γίνεται συνήθως είναι ο πελάτης να επισκεφτεί κάποια άλλη ιστοσελίδα ή να κλείσει το παράθυρο του browser Σε μια τέτοια περίπτωση η σύνοδος τερματίζεται Ο χρήστης μπορεί να επαληθεύσει μια προστατευμένη από το SSL επικοινωνία εξετάζοντας το URL το οποίο θα πρέπει να ξεκινά με την ακολουθία https:// αντί του http:// Ένας άλλος τρόπος είναι από την ύπαρξη κλειδαριάς ή ενός κλειδιού στον browser τα οποία υποδηλώνουν την προστασία των δεδομένων Ασφάλεια στο WWW - SSL/TLS 36
Παράδειγμα σύνδεσης SSL Ασφάλεια στο WWW - SSL/TLS 39
Παράδειγμα σύνδεσης SSL Ασφάλεια στο WWW - SSL/TLS 41
Παράδειγμα σύνδεσης SSL Ασφάλεια στο WWW - SSL/TLS 42
Παράδειγμα σύνδεσης SSL Ασφάλεια στο WWW - SSL/TLS 43
Παράδειγμα σύνδεσης SSL Ασφάλεια στο WWW - SSL/TLS 44
Πλεονεκτήματα του SSL Επιθέσεις Brute Force Η συμμετρική κρυπτογράφηση με κλειδί μεγέθους 128 bits θεωρείται ασφαλής μακροπρόθεσμα Επιθέσεις Replay Το SSL χρησιμοποιεί μεγάλους αριθμούς μοναδικούς για κάθε σύνδεση Επιθέσεις Man-In-the-Middle Το SSL χρησιμοποιεί ψηφιακά πιστοποιητικά για την εξακρίβωση της ταυτότητας του server Τα πιστοποιητικά αυτά πρέπει να είναι υπογεγραμμένα από γνωστούς παρόχους ανάλογων υπηρεσιών Ασφάλεια στο WWW - SSL/TLS 45
Προβλήματα με το SSL Ψηφιακά πιστοποιητικά Περιορισμένη εξάπλωση της χρήσης ψηφιακών πιστοποιητικών Οι χρήστες δεν ελέγχουν τα πιστοποιητικά Πιστοποιητικό όχι υπογεγραμμένο από έμπιστο Πάροχο Πιστοποίησης Ληγμένα πιστοποιητικά Οι Λίστες Ακυρωμένων Πιστοποιητικών δεν ελέγχονται Λανθασμένες υλοποιήσεις του SSL Αρκετά παραδείγματα στο παρελθόν Ασφάλεια στο WWW - SSL/TLS 46
Προβλήματα με το SSL Ασφάλεια στο WWW - SSL/TLS 47
Προβλήματα με το SSL Ψηφιακά πιστοποιητικά Το Paypal είναι μία υπηρεσία που επιτρέπει σε χρήστες να στέλνουν χρήματα σε άλλους χρήστες ή σε ηλεκτρονικά καταστήματα Κάποιοι κατοχύρωσαν το domain paypai.com και πήραν ένα πιστοποιητικό SSL από τη Verisign για αυτό το όνομα Με το i κεφαλαίο, σε κάποια fonts, to paypai μοιάζει με το paypal Κατόπιν έγινε αποστολή email σε χρήστες για να ελέγξουν το account τους Τα passwords που συγκεντρώθηκαν στο paypai.com, χρησιμοποιήθηκαν από τους κακούς για να μεταφέρουν χρήματα στους λογαριασμούς τους Ασφάλεια στο WWW - SSL/TLS 48
Προβλήματα με το SSL Ασφάλεια στο WWW - SSL/TLS 49
Προβλήματα στις ασφαλείς συνδέσεις Η ασφάλεια σε μία σύνδεση client-server δεν σχετίζεται μόνο με το SSL Κενά στην ασφάλεια της πλατφόρμας του server worms, malicious code, rootkits, Συνήθως δεν υπάρχουν εγγυήσεις για την τύχη των δεδομένων του χρήστη (π.χ. αριθμός πιστωτικής κάρτας) μετά τη λήξη της σύνδεσης Κενά στην ασφάλεια της πλατφόρμας του χρήστη keystroke loggers, malware, Ελλιπείς γνώσεις και μη επίγνωση των κινδύνων Ασφάλεια στο WWW - SSL/TLS 50
SSL A (mis)quote from Eugene Spafford: Using encryption on the Internet is the equivalent of arranging an armored car to deliver credit-card information from someone living in a cardboard box to someone living on a park bench. Ασφάλεια στο WWW - SSL/TLS 51