Το Transport Layer Security (TLS) είναι η τελευταία έκδοση του πρωτοκόλλου Secure Socket Layer (SSL). Και τα δύο πρωτόκολλα διασφαλίζουν το απόρρητο και την αυθεντικότητα των δεδομένων σιο Διαδίκτυο. Παρέχουν ασφάλεια end-to-end εφαρμόζοντας κρυπτογράφηση στην επικοινωνία μέσω του web. Ωστόσο, παρά τις ομοιότητες τους τα δύο πρωτόκολλα TLS και SSL, έχουν και σημαντικές διαφορές.
Παρακάτω θα δούμε πώς λειτουργούν τα δύο πρωτόκολλα κρυπτογράφησης TLS και SSL, τη σημασία τους, πώς διαφέρουν και γιατί είναι η κατάλληλη στιγμή για μετάβαση στο πρωτόκολλο TLS.
Table of Contents
Το ιστορικό υπόβαθρο των TLS και SSL
Η Ομάδα Εργασίας Μηχανικών Διαδικτύου (IETF από το Internet Engineering Task Force), ένας οργανισμός που είναι υπεύθυνος για την ανάπτυξη προτύπων Διαδικτύου, δημοσίευσε το 1984 ένα αίτημα (RFC-1984) για συζήτηση, αναγνωρίζοντας τη σημασία της προστασίας των προσωπικών δεδομένων στο αναπτυσσόμενο Διαδίκτυο και η Netscape Communication Corporation ανέπτυξε για πρώτη φορά το SSL για ασφαλή διαδικτυακή επικοινωνία, το οποία υποβλήθηκε σε πάρα πολλές αναβαθμίσεις.
Η έκδοση SSL 1.0 δεν κυκλοφόρησε ποτέ λόγω ελαττωμάτων ασφαλείας και το SSL 2.0 ήταν η πρώτη δημόσια έκδοση από την Netscape το 1995. Ωστόσο, λόγω τρωτών σημείων, αντικαταστάθηκε “γρήγορα” από την έκδοση SSL 3.0 τον Νοέμβριο του 1996.
Η τελευταία έκδοση του SSL δεν χρησιμοποιείται πια από τον Οκτώβριο του 2014, λόγω της αδυναμίας του σε επιθέσεις POODLE και καταργήθηκε επίσημα τον Ιούνιο του 2015.
Το TLS κυκλοφόρησε το 1999 σαν ένα ανεξάρτητο πρωτόκολλο, με μια αναβάθμιση στην έκδοση SSL 3.0 που έγινε από την IETF. Η ιδέα ήταν να εφαρμοστεί το TLS μέσω TCP για την κρυπτογράφηση εφαρμογών χρησιμοποιώντας πρωτόκολλα FTP, IMAP, SMTP και HTTP. Για παράδειγμα, το HTTPS είναι μια ασφαλής έκδοση του HTTP καθώς εφαρμόζει το πρωτόκολλο TLS για την ασφαλή παράδοση δεδομένων αποφεύγοντας αλλαγές περιεχομένου και υποκλοπές.
Βασική λειτουργία των πρωτοκόλλων TLS και SSL
Η επικοινωνία μεταξύ των δύο ή περισσοτέρων μερών (π.χ. το πρόγραμμα περιήγησης του υπολογιστή σας και ένας ιστότοπος ή client-server) ξεκινά προσδιορίζοντας εάν χρησιμοποιείται κάποιο από τα πρωτόκολλα TLS/SSL ή όχι, έτσι ώστε τα δύο μέρη να μπορούν να καθορίσουν τη χρήση της κρυπτογράφησης με:
- Τον καθορισμό της θύρας που υποστηρίζει την κρυπτογράφηση επικοινωνίας SSL
- ή τον τρόπο δημιουργίας μιας σύνδεσης μέσω του πρωτοκόλλου TLS
Ωστόσο, οι ιστότοποι απαιτούν ένα πιστοποιητικό TLS/SSL εγκατεστημένο στον διακομιστή φιλοξενίας τους για να μπορούν να χρησιμοποιήσουν το πρωτόκολλο. Ένα αξιόπιστο τρίτο μέρος εκδίδει ένα πιστοποιητικό και διαθέτει ένα δημόσιο κλειδί στο domain που έχει και το αντίστοιχο ιδιωτικό κλειδί που του επιτρέπει να κρυπτογραφήσει και να αποκρυπτογραφήσει την κάθε επικοινωνία.
Αφού τα δύο μέρη (client-server) συμφωνήσουν στη χρήση TLS ή SSL για την επικοινωνία τους, προχωρούν σε μια “χειραψία” ή “handshake”. Η handshake καθορίζει τις προδιαγραφές που απαιτούνται για την ανταλλαγή μηνυμάτων. Ας δούμε περιληπτικά την σειρά ανταλλαγών των πληροφοριών για την ενεργοποίηση μιας σύνδεσης TLS/SSL:
- Τα δύο μέρη συμφωνούν για την έκδοση του πρωτοκόλλου που θα χρησιμοποιήσουν
- Στη συνέχεια, αποφασίζουν για τους κρυπτογραφικούς αλγόριθμους ή τη σουίτα κρυπτογράφησης
- Μετά ελέγχουν την ταυτότητα των μερών που επικοινωνούν με το δημόσιο κλειδί τους και τις ψηφιακές υπογραφές της αρχής έκδοσης του πιστοποιητικού
- Ανταλλάσσουν κλειδιά συνεδρίας που θα χρησιμοποιήσουν κατά την επερχόμενη επικοινωνία. Και τα δύο πρωτόκολλα TLS και SSL χρησιμοποιούν ασύμμετρη κρυπτογραφία για τη δημιουργία δημόσιων και ιδιωτικών κλειδιών.
Εάν το πρόγραμμα περιήγησης δεν μπορεί να επικυρώσει το πιστοποιητικό TLS/SSL, επιστρέφει το σφάλμα “Η σύνδεση δεν είναι ιδιωτική”.
Έτσι τα πρωτόκολλα επιτυγχάνουν τρεις θεμελιώδεις στόχους για την ασφάλεια:
Εμπιστευτικότητα: Κρυπτογραφούν δεδομένα για να τα κρύψουν από τρίτα μέρη. Έτσι μόνο ένας αναμενόμενος παραλήπτης μπορεί να δει το περιεχόμενο.
Ακεραιότητα: Χρησιμοποιούν τον κωδικό ελέγχου ταυτότητας για την επαλήθευση του κρυπτογραφημένου περιεχομένου μηνυμάτων.
Έλεγχος ταυτότητας: Επαληθεύουν την ταυτότητα των client-server με τη βοήθεια ενός πιστοποιητικού για να διασφαλίσουν ότι τα δύο μέρη που ανταλλάσσουν πληροφορίες είναι πραγματικά αυτά που ισχυρίζονται ότι είναι.
Ποια είναι η διαφορά μεταξύ TLS και SSL;
Όπως αναφέραμε πριν, η κύρια διαφορά μεταξύ των δύο πρωτοκόλλων είναι ο τρόπος με τον οποίο δημιουργούν συνδέσεις. Το TLS handshake χρησιμοποιεί ένα σιωπηρό τρόπο δημιουργίας μιας σύνδεσης μέσω πρωτοκόλλου, ενώ το SSL handshake κάνει ρητές συνδέσεις με μια θύρα.
Ανεξάρτητα από όλες τις διαφορές, το βασικό χαρακτηριστικό που διαφοροποιεί και τις δύο συνδέσεις TLS/SSL είναι η χρήση μιας σουίτας κρυπτογράφησης που αποφασίζει την συνολική ασφάλεια της σύνδεσης.
Για μια σύνδεση TLS/SSL θα πρέπει να συμφωνηθεί η χρήση μιας σουίτας κρυπτογράφησης που ορίζει ένα σύνολο αλγορίθμων για την ανταλλαγή κλειδιών, τον έλεγχο ταυτότητας, την μαζική κρυπτογράφηση και έναν κωδικό ελέγχου ταυτότητας που χρησιμοποιεί HMAC (hash-based message authentication code) ή αλγόριθμους κωδικών ελέγχου ταυτότητας μηνυμάτων κ.λπ. για μια συγκεκριμένη συνεδρία.
Κάθε έκδοση TLS/SSL υποστηρίζει διαφορετικές σειρές κρυπτογράφησης για τη συνεδρία μιας επικοινωνίας. Έτσι κάθε σουίτα κρυπτογράφησης υποστηρίζει τους δικούς της αλγόριθμους που βελτιώνουν την ασφάλεια και τη συνολική απόδοση μιας σύνδεσης.
SSL | TLS |
---|---|
SSL είναι ένα πολύπλοκο πρωτόκολλο | TLS είναι απλούστερο |
SSL έχει τρεις εκδόσεις, εκ των οποίων η SSL 3.0 i είναι η τελευταία | TLS έχει τέσσερις εκδόσεις, εκ των οποίων η έκδοση TLS 1.3 είναι η τελευταία |
SSL Όλες οι εκδόσεις είναι ευάλωτες σε επιθέσεις | TLS προσφέρει υψηλότερη ασφάλεια |
SSL χρησιμοποιεί ένα message authentication code (MAC) μετά την κρυπτογράφηση μηνύματος για την ακεραιότητα των δεδομένων | TLS χρησιμοποιεί ένα hash-based κωδικό ελέγχου ταυτότητας |
SSL χρησιμοποιεί σύνοψη μηνυμάτων για να δημιουργήσει ένα master secret. | TLS χρησιμοποιεί μια ψευδοτυχαία συνάρτηση για τη δημιουργία ενός master secret. |
Γιατί το TLS αντικατέστησε το SSL;
Η κρυπτογράφηση TLS είναι πλέον μια τυπική πρακτική για την προστασία web εφαρμογών ή δεδομένων. Δεν μπορούμε να πούμε ότι το TLS εντελώς ασφαλές πρωτόκολλο, καθώς υπήρξαν επιθέσεις όπως την Heartbleed το 2012 και το 2014, αλλά διαθέτει πολλές βελτιώσεις στην απόδοση και την ασφάλεια.
Το TLS αντικατέστησε το SSL αφού σχεδόν όλες οι εκδόσεις του SSL έχουν καταργηθεί λόγω γνωστών ευπαθειών. Ο Google Chrome είναι ένα τέτοιο παράδειγμα που σταμάτησε να χρησιμοποιεί την έκδοση SSL 3.0 το 2014. Σήμερα τα περισσότερα σύγχρονα προγράμματα περιήγησης δεν υποστηρίζουν καθόλου το SSL.
Χρησιμοποιήστε το TLS για κρυπτογραφημένη επικοινωνία
Το TLS βοηθά στην ασφάλεια κατά τη μεταφορά ευαίσθητων πληροφοριών, όπως στοιχεία πιστωτικής κάρτας, email, voice over IP (VOIP), μεταφορά αρχείων και κωδικούς πρόσβασης. Παρόλο που και τα δύο πιστοποιητικά κρυπτογραφούν δεδομένα κατά τη μεταφορά, διαφέρουν στη λειτουργικότητα.
Είναι σημαντικό να αναφέρουμε ότι το TLS αναφέρεται ακόμα σαν SSL μόνο επειδή το SSL είναι η πιο συχνά χρησιμοποιούμενη ορολογία. Επιπλέον, δεν χρειάζεται να ανησυχείτε για την χρήση πιστοποιητικών SSL ή TLS, καθώς το μόνο που χρειάζεται να κάνετε είναι να εγκαταστήσετε κάποιο πιστοποιητικό στον διακομιστή σας. Αυτό υποστηρίζει και τα δύο πρωτόκολλα και αποφασίζει ποιο θα χρησιμοποιήσει.