Το Transport Layer Security (TLS) και ο προκάτοχός του, το Secure Sockets Layer (SSL), τα οποία συχνά αναφέρονται ως απλά "SSL", είναι Πρωτόκολλα Κρυπτογράφησης τα οποία παρέχουν Ασφάλεια Επικοινωνίας πάνω από ένα Δίκτυο Υπολογιστών[1]. Αρκετές από τις εκδόσεις του πρωτοκόλλου χρησιμοποιούνται σε εφαρμογές όπως η περιήγηση στον ιστό, το Ηλεκτρονικό ταχυδρομείο, η αποστολή τηλεομοιότυπων, τα Άμεσα Μηνύματα, καθώς και οι κλήσεις μέσω IP (VoIP). Οι ιστοσελίδες χρησιμοποιούν TLS για να διασφαλίσουν όλη την επικοινωνία μεταξύ των εξυπηρετητών τους και των περιηγητών ιστού.
Το πρωτόκολλο Transport Layer Security στοχεύει στο να προσφέρει ιδιωτικότητα και ακεραιότητα δεδομένων μεταξύ δύο εφαρμογών ηλεκτρονικών υπολογιστών που επικοινωνούν μεταξύ τους[1]. Όταν χρησιμοποιείται σε μία σύνδεση ανάμεσα σε έναν πελάτη (π.χ. έναν περιηγητή ιστού) και έναν εξυπηρετητή (π.χ. το wikipedia.org), η σύνδεση αυτή έχει μία ή περισσότερες ιδιότητες:
Επιπλέον των παραπάνω ιδιοτήτων, προσεκτική παραμετροποίηση του TLS μπορεί να παρέχει επιπλέον ιδιότητες σχετικές με την ιδιωτικότητα, όπως Forward Secrecy, παρέχοντας την εγγύηση πως οποιαδήποτε μελλοντική κλοπή κρυπτογραφικών κλειδιών δεν μπορεί να βοηθήσει στην αποκρυπτογράφηση οποιασδήποτε προηγούμενης επικοινωνίας ασφαλισμένης με TLS από το παρελθόν[2].
Το TLS υποστηρίζει πολλές διαφορετικές μεθόδους ανταλλαγής κλειδιών, κρυπτογράφησης δεδομένων, και αυθεντικοποίησης ακεραιότητας μηνυμάτων (βλ. Αλγόριθμος παρακάτω). Ως αποτέλεσμα, μια ασφαλής παραμετροποίηση του TLS περιλαμβάνει την επιλογή μεταξύ πολλών παραμέτρων, κάποιες εκ των οποίων μόνο παρέχουν όλες τις σχετικές ιδιότητες ιδιωτικότητας και περιγράφονται στον πίνακα αυθεντικοποίησης και ανταλλαγής κλειδιών, στον πίνακα ασφαλείας κρυπτογραφημάτων, και στον πίνακα ακεραιότητας δεδομένων).
Προσπάθειες που έχουν γίνει για την παραβίαση ορισμένων ιδιοτήτων της ασφάλειας των επικοινωνίων που παρέχει το TLS, έχουν οδηγήσει σε αλλαγές στο ίδιο το πρωτόκολλο για την προστασία απέναντι σε τέτοιες επιθέσεις (βλ. Ασφάλεια). Οι προγραμματιστές των περιηγητών ιστού έχουν επίσης τροποποιήσει τα προϊόντα τους για να αμυνθούν απέναντι σε πιθανά κενά ασφαλείας αφού αυτά εντοπίστηκαν (βλ. Υποστήριξη SSL/TLS σε περιηγητές ιστού).
Το πρωτόκολλο TLS αποτελείται από δύο επίπεδα, το Πρωτόκολλο Καταγραφής TLS, και το πρωτόκολλο χειραψίας TLS.
Το TLS είναι ένα προτεινόμενο Πρότυπο Ίντερνετ από το Internet Engineering Task Force (IETF), και πρώτα ορίστηκε το 1999 και έπειτα ανανεώθηκε στο RFC 5246 (Αύγουστος 2008), και στο RFC 6176 (Μάρτιος 2011). Βασίζεται πάνω στις προηγούμενες δημοσιευμένες προδιαγραφές του SSL (1994, 1995, 1996) που αναπτύχθηκε από την Netscape Communications[3] για την προσθήκη του πρωτοκόλλου HTTPS στο περιηγητή τους, Netscape Navigator.
Εφαρμογές που ακολουθούν το Μοντέλο πελάτη-διακομιστή χρησιμοποιούν το πρωτόκολλο TLS για να επικοινωνήσουν μέσω ενός δικτύου αποφεύγοντας υποκλοπή των μηνυμάτων και την τροποποίηση τους από τρίτους.
Από την στιγμή που τα πρωτόκολλα μπορούν να λειτουργήσουν είτε με την χρήση, είτε χωρίς TLS (ή SSL), είναι απαραίτητο ο πελάτης να ειδοποιήσει τον διακομιστή για το ξεκίνημα μιας συνεδρίας TLS. Υπάρχουν δύο βασικοί τρόποι για να γίνει αυτό. Ο πρώτος είναι η χρήση μιας διαφορετικής πόρτας για τις συνδέσεις TLS, όπως για παράδειγμα η 443 για το HTTPS. Ο άλλος τρόπος είναι ο πελάτης να χρησιμοποιήσει έναν μηχανισμό που υποστηρίζει το ίδιο το πρωτόκολλο επικοινωνίας, όπως για παράδειγμα το STARTTLS στο ηλεκτρονικό ταχυδρομείο, και να ζητήσει από τον διακομιστή να μεταχειριστεί την σύνδεση ως TLS.
Μόλις ο πελάτης και ο διακομιστής συμφωνήσουν να χρησιμοποιήσουν TLS, συμφωνούν σε μία σύνδεση με πολλαπλές καταστάσεις, χρησιμοποιώντας την διαδικασία χειραψίας[4]. Κατά την διάρκεια της χειραψίας, ο πελάτης και ο διακομιστής συμφωνούν σε διάφορες παραμέτρους που θα χρησιμοποιηθούν για να επιβεβαιωθεί η ασφάλεια της σύνδεσης:
Σε αυτό το σημείο τελειώνει η χειραψία και αρχίζει η ασφαλής σύνδεση, της οποίας τα δεδομένα κρυπτογραφούνται και αποκρυπτογραφούνται με το κλειδί συνεδρίας μέχρι να τερματιστεί η σύνδεση. Αν οποιοδήποτε από τα παραπάνω βήματα αποτύχει, η χειραψία TLS αποτυγχάνει, και η σύνδεση δεν δημιουργείται.
Ορίστηκε | |
---|---|
Πρωτόκολλο | Έτος |
SSL 1.0 | Δ/Δ |
SSL 2.0 | 1995 |
SSL 3.0 | 1996 |
TLS 1.0 | 1999 |
TLS 1.1 | 2006 |
TLS 1.2 | 2008 |
TLS 1.3 | 2018 |
Αρχικές έρευνες σχετικά με την ασφάλεια συνδέσεων δικτύου περιείχαν το API για Ασφαλή Προγραμματισμό Δικτύου (Secure Network Programming / SNP), και το 1993 εξερεύνησαν την πιθανότητα να υπάρχει ένα API για ασφαλείς μεταφορές μέσω δικτύου, πολύ κοντινό με αυτό των Berkeley sockets, με σκοπό την ευκολότερη χρήση του σε ήδη υπάρχουσες εφαρμογές με ανάγκες σε ασφάλεια[5].
Η Netscape Communications ανέπτυξε την αρχική έκδοση των πρωτοκόλλων SSL[6]. Η έκδοση 1.0 δεν δημοσιεύτηκε ποτέ λόγω πολύ μεγάλων κενών ασφαλείας στο πρωτόκολλο. Η έκδοση 2.0 όμως, δημοσιεύτηκε τον Φεβρουάριο του 1995, και "περιείχε πληθώρα κενών ασφαλείας που εν τέλη οδήγησαν στον σχεδιασμό του SSL 3.0"[7]. Δημοσιευμένο το 1996, το SSLv3 ήταν το επανασχεδιασμένο πρωτόκολλο του μηχανικού Paul Kocher, ο οποίος δούλεψε μαζί με του μηχανικούς της Netscape Communications Phil Karlton και Alan Freier, και είχε μια πρώτυπη υλοποίηση από τον Christopher Allen και τον Tim Dierks της Consensus Development. Οι νεότερες εκδόσεις του SSL/TLS είναι βασισμένες στο SSL v3.0. Το πρόχειρο προσδιοριστικό έγγραφο του 1996, δημοσιεύτηκε από το IETF σαν ιστορικό ντοκουμέντο στο RFC 6101.
Ο Δρ. Taher Elgamal, επικεφαλής επιστήμονας στην Netscape Communications από το 1995 μέχρι το 1998, είναι γνωστός ως ο "πατέρας του SSL"[8][9].
Από το 2014, η έκδοση 3.0 του SSL δεν θεωρείται ασφαλής καθώς είναι ευπαθής στην επίθεση POODLE που επηρεάζει όλους τους Κρυπτογραφικούς Αλγόριθμους Δέσμης στο SSL, και το RC4, τον μόνο μη κρυπτογραφικό αλγόριθμο δέσμης που υποστηρίζει το SSL 3.0[10].
Το SSL 2.0 απαγορεύτηκε και θεωρήθηκε μη-ασφαλές το 2011, στο RFC 6176.
Το SSL 3.0 θεωρήθηκε μη-ασφαλές τον Ιούνιο του 2015, με το RFC 7568.
Το TLS 1.0 πρώτα ορίστηκε στο RFC 2246 τον Ιανουάριο του 1999 ως μια αναβάθμιση του SSL 3.0, και γράφτηκε από τον Christopher Allen και τον Tim Dierks της Consensus Development. Σύμφωνα με τον ορισμό του στο RFC, "οι διαφορές μεταξύ αυτού του πρωτοκόλλου και του SSL 3.0 δεν είναι πολύ μεγάλες, αλλά είναι αρκετά σημαντικές για να σταματήσει η διαλειτουργικότητα μεταξύ του TLS 1.0 και του SSL 3.0". Το TLS 1.0 περιλαμβάνει έναν μηχανισμό με τον οποίο μια σύνδεση μπορεί να υποβαθμιστεί σε SSL 3.0, μειώνοντας έτσι την ασφάλεια που παρέχει[11].
Το TLS 1.1 ορίστηκε στο RFC 4346 τον Απρίλιο του 2006[12]. Είναι η αναβάθμιση της έκδοσης 1.0 του TLS. Οι μεγαλύτερες αλλαγές σε αυτήν την έκδοση περιλαμβάνουν:
Το TLS 1.2 ορίστηκε με το RFC 5246 τον Αύγουστο του 2008. Βασίζεται στην προηγούμενη έκδοση, TLS 1.1. Οι μεγαλύτερες διαφορές περιλαμβάνουν:
![]() |
Αυτό το λήμμα σχετικά με την Πληροφορική χρειάζεται επέκταση. Μπορείτε να βοηθήσετε την Βικιπαίδεια επεκτείνοντάς το. |