Επιθε σεις ενδια μεσου στο πρωτο κολλο TLS

Σχετικά έγγραφα
Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων SSL/TLS

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών;

Οι απειλές. Απόρρητο επικοινωνίας. Αρχές ασφάλειας δεδομένων. Απόρρητο (privacy) Μέσω κρυπτογράφησης

Δίκτυα Υπολογιστών Ενότητα 6: Secure Sockets Layer - SSL

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Ασφάλεια Δεδομένων.

Ασφάλεια Υπολογιστικών Συστημάτων

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας

ΣΕΜΙΝΑΡΙΟ. ΠΑΡΟΥΣΙΑΣΗ 19/5/11 Αµφιθέατρο

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά

Ασφάλεια Πληροφοριακών Συστημάτων Ασφάλεια στο WWW

Ασφάλεια Υπολογιστικών Συστημάτων

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 11η Διάλεξη: Ασφάλεια στο Web

Ασφάλεια στο WWW SSL/TLS

Cryptography and Network Security Chapter 16. Fifth Edition by William Stallings

Ρ ΓΑ Σ Τ Ή Ρ Ι Ο 8 Α Σ Φ Ά Λ Ε Ι Α Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Ώ Ν Σ Υ Σ Τ Η Μ ΆΤ Ω Ν

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα

Κεφάλαιο 22. Πρωτόκολλα και πρότυπα ασφαλείας του Διαδικτύου

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

Σχεδιασμός Εικονικών Δικτύων Ενότητα 4β: VPN on IPSec (Μέρος 2ο)

Π Α Ν Ε Π Ι Σ Τ Η Μ Ι Ο Π ΑΤ Ρ Ω Ν

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ ΣΤΗΝ ΕΕ

Εισαγωγή στην Κρυπτολογία 3. Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Κωδικός DIΤ114 Σταύρος ΝΙΚΟΛΟΠΟΥΛΟΣ

6.2 Υπηρεσίες Διαδικτύου

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο

Ασφάλεια Υπολογιστικών Συστηµάτων

Εισαγωγή στην επιστήμη της Πληροφορικής και των. Aσφάλεια

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές

Τεχνική Ανάλυση των η-υπογραφών & των η-πιστοποιητικών

Περιεχόµενα. Ασφάλεια σε επίπεδο µεταφοράς και εφαρµογών SSL / TLS SSH. Ασφάλεια ικτύων, Τµήµα Πληροφορικής, Ο.Π.Α., ρ. Ι.

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

Freedom of Speech. Κρυπτογραφία και ασφαλής ανταλλαγή πληροφοριών στο Internet

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy)

ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Βασικά Θέματα Κρυπτογραφίας Συμμετρική & Ασύμμετρη Κρυπτογραφία-Ακεραιότητα)

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ

Σχεδιασμός Εικονικών Δικτύων Ενότητα 6: Εικονικά Ιδιωτικά Δίκτυα Επιπέδου Μεταφοράς - Secure Sockets Layer (SSL) / Transport Layer Security (TLS)

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο

CVE the SSL Heartbleed bug. SSL Renegotiation Attack

Ανάλυση Δικτυακής Κίνησης Πρωτοκόλλων Υπηρεσιών. Ασφάλεια Δικτύων. (4 η άσκηση) Διαχείριση Δικτύων - Ευφυή Δίκτυα, 9 ο Εξάμηνο,

ΗΜΕΡΟΛΟΓΙΟ ΓΛΩΣΣΑΡΙ ΔΙΑΔΙΚΤΥΟΥ

Κρυπτογραφία: HTTPS και web κρυπτογραφία

Κεφάλαιο 21. Κρυπτογραφία δημόσιου κλειδιού και πιστοποίηση ταυτότητας μηνυμάτων

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση Ασφαλείας (Ι) Απειλές Ασφαλείας Συμμετρική & Μη-Συμμετρική Κρυπτογραφία

Κεφάλαια 2&21. Συναρτήσεις κατακερματισμού Πιστοποίηση ταυτότητας μηνυμάτων

Β. Μάγκλαρης 30/11/2015

Πρωτόκολλα Ασφάλειας IΙ

Εγκατάσταση & Παραµετροποίηση Εξυπηρετητή Πιστοποίησης Χρηστών (Radius Server)

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ. Οδηγίες προς τις Συνεργαζόμενες Τράπεζες

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού

ρ. Κ. Σ. Χειλάς, ίκτυα Η/Υ ΙΙΙ, Τ.Ε.Ι. Σερρών, 2007

Κεφάλαιο 2. Κρυπτογραφικά εργαλεία

Πληροφορική Ι. Μάθημα 10 ο Ασφάλεια. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Δρ. Γκόγκος Χρήστος

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά

Ασφάλεια Πληροφοριακών Συστημάτων

Cryptography and Network Security Chapter 14. Fifth Edition by William Stallings

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο. Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ. ΔΙΑΧΕΙΡΙΣΗ ΑΣΦΑΛΕΙΑΣ: SSL/TLS, , Firewalls, IDS. Β. Μάγκλαρης

Ζητήµατα ασφάλειας Kerberos Υπηρεσία πιστοποίησης X.509 Προτεινόµενα αναγνώσµατα και ιστοσελίδες. Giannis F. Marias 2

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης

Λειτουργικά Συστήματα (ΗΥ321)

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Πρόγραμμα Μεταπτυχιακών Σπουδών (Π.Μ.Σ.) Ασφάλεια Δικτύων. Δρ. Κωνσταντίνος Παπαπαναγιώτου

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό

Κρυπτογραφία. Κεφάλαιο 1 Γενική επισκόπηση

Ασφάλεια Υπολογιστικών Συστημάτων

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Εισαγωγή. Χρήστος Ξενάκης

Πρακτικά όλα τα προβλήματα ασφαλείας οφείλονται σε λάθη στον κώδικα

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

Ασφάλεια στο Ηλεκτρονικό Επιχειρείν. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης

Αλγόριθµοι δηµόσιου κλειδιού

Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών

Αννα Νταγιου ΑΕΜ: 432. Εξαμηνο 8. Ερώτηση 1. Πληκτρολογήστε την εντολή: openssl help Παρατηρήστε τις πληροφορίες που λαµβάνετε.

Εισαγωγή στην Κρυπτογραφία και τις Ψηφιακές Υπογραφές

Σύστημα Άυλων Τίτλων - Οδηγίες παραμετροποίησης client συστήματος

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΛΟΓΑΡΙΑΣΜΩΝ ΗΛΕΚΤΡΟΝΙΚΗΣ ΑΛΛΗΛΟΓΡΑΦΙΑΣ ( accounts)

Κρυπτογραφία. MAC - Γνησιότητα/Ακεραιότητα μηνύματος. Πέτρος Ποτίκας

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

3/27/2010. Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών. Περιεχόμενα. ΑΑΑ εισαγωγή /1 IEEE

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΤΟ ΣΥΣΤΗΜΑ «ΕΡΜΗΣ» ΤΟΥ ΧΡΗΜΑΤΙΣΤΗΡΙΟΥ ΑΘΗΝΩΝ (ΧΑ) ΚΑΙ ΟΙ ΥΠΗΡΕΣΙΕΣ ΨΗΦΙΑΚΗΣ ΠΙΣΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΣΥΚ Α.Ε.

Κρυπτογραφία. Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι)

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 10 : Ασφάλεια. Δρ. Γκόγκος Χρήστος

Αναβάθμιση ασφάλειας πρωτοκόλλου κρυπτογράφησης διακινούμενων δεδομένων αποκλειστικά σε TLS 1.2 στις διαδικτυακές υπηρεσίες της ΗΔΙΚΑ

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

Αυθεντικότητα Μηνυμάτων Συναρτήσεις Hash/MAC

Transcript:

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Επιθε σεις ενδια μεσου στο πρωτο κολλο TLS Δημήτρης Σ. Μωραϊτης Επιβλε ποντες: Άγγελος Κιαγια ς, Επίκουρος Καθηγητής ΑΘΗΝΑ Μα ρτιος 2012

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Επιθέσεις ενδιάμεσου στο πρωτόκολλο TLS Δημήτρης Σ. Μωραϊτης Α.Μ.: 1134 ΕΠΙΒΛΕΠΟΝΤΕΣ: Άγγελος Κιαγια ς, Επίκουρος Καθηγητής

ΠΕΡΙΛΗΨΗ Το TLS και ο πρόγονος του, το SSL, είναι τα κυρια κρυπτογραφικά πρωτόκολλα που χρησιμοποιουνται στο διαδίκτυο. Στόχος αυτής της εργασίας είναι η μελέτη των πιθανων επιθέσεων ενδιάμεσου (man-in-the-middle) σε συνδέσεις TLS, καθως και η ανάπτυξη εκπαιδευτικων εργαλείων λογισμικου που διευκολυνουν τέτοιου τυπου επιθέσεις. ΘΕΜΑΤΙΚΗ ΠΕΡΙΟΧΗ: Ασφάλεια συστημάτων ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ: ασφάλεια στο διαδίκτυο, επιθέσεις ενδιάμεσου, κρυπτογραφία, TLS, SSL, HTTPS

ΠΕΡΙΕΧΟΜΕΝΑ ΠΡΟΛΟΓΟΣ... 7 1.ΤΟ ΠΡΩΤΟΚΟΛΛΟ TLS... 9 1.1 Περιγραφή... 9 1.2 Ιστορία... 10 1.2.1 Secure Network Programming API... 10 1.2.2 SSL 1.0, 2.0 & 3.0... 11 1.2.3 TLS 1.0 (SSL 3.1)... 11 1.2.4 TLS 1.1 (SSL 3.2)... 11 1.2.5 TLS 1.2 (SSL 3.3)... 11 1.3 Εφαρμογές... 12 1.4 Ασφάλεια... 13 1.4.1 Ευπα θειες... 13 1.5 Δομή... 16 1.5.1 Πρωτόκολλο εφαρμογής... 21 1.6 Χειραψία TLS... 22 1.6.1 Απλή χειραψία... 22 1.6.2 Χειραψία με αυθεντικοποίηση πελα τη...23 1.6.3 Σύντομη χειραψία... 25 1.7 Υλοποιήσεις... 26 1.8 Πρότυπα... 27 2.X.509...31 2.1 Περιγραφή... 31 2.2 Πιστοποιητικά... 32 2.3 Ασφάλεια... 35 3.ΕΠΙΘΕΣΕΙΣ MAN-IN-THE-MIDDLE ΣΤΟ SSL/TLS...39 3.1 Self signed certificate attack... 39

3.2 Compelled certificate creation attack... 39 3.3 Short Chosen-Prefix collisions for MD5 and the creation of a rogue CA certificate...41 3.4 SSLSniff... 42 3.4.1 Null prefix attack... 42 3.4.2 OSCP attack... 43 3.5 SSLstrip... 44 3.6 Renegotiation attack... 44 3.7 Cipher Block Chaining attacks & BEAST... 47 4.ΚΡΙΤΙΚΗ ΚΑΙ ΠΡΟΤΑΣΕΙΣ ΒΕΛΤΊ ΩΣΗΣ... 49 4.1 Certificate Pinning... 50 4.2 DNSSec... 51 4.3 Trust Agility - Perspectives & Convergence.io...51 4.4 Sovereign Keys... 54 4.5 Certificate Authority Transparency and Auditability...56 4.6 Monkeysphere... 56 4.7 Identity based encryption... 57 4.8 Άλλα... 57 5.ΕΡΓΑΛΕΙΑ ΠΟΥ ΑΝΑΠΤΥΧΘΗΚΑΝ... 59 5.1 TwistedEve... 59 5.1.1 Εγκατα σταση... 59 5.1.2 Χρήση... 59 5.1.2.1 Χειροκίνητη παρεμβαση σε μη κρυπτογραφημένες συνδέσεις... 59 5.1.2.2 Αυτόματη παρέμβαση σε μη κρυπτογραφημένες συνδέσεις...61 5.1.2.3 Παρέμβαση σε συνδέσεις TLS... 62 5.1.2.4 Πληροφορίες για συνδέσεις TLS... 63 5.2 TLSLite... 64

6.ΣΥΜΠΕΡΑΣΜΑΤΑ... 65 ΠΙΝΑΚΑΣ ΟΡΟΛΟΓΙΑΣ...67 7.ΣΥΝΤΜΗΣΕΙΣ ΑΡΚΤΙΚΟΛΕΞΑ ΑΚΡΩΝΥΜΙΑ...69 8.ΠΑΡΑΡΤΗΜΑ Ι... 71 9.ΠΑΡΑΡΤΗΜΑ ΙΙ... 111 ΑΝΑΦΟΡΕΣ... 133

ΠΡΟΛΟΓΟΣ Το διαδίκτυο διευρυνει συνεχως τον ρόλο που επιτελεί σε όλο και περισσότερες πλευρές της ανθρωπινης δραστηριότητας. Αυτή η τάση καθιστά επιτακτικότερη την ανάγκη για κρυπτογραφικά πρωτόκολλα ανθεκτικά σε απόπειρες υποκλοπής και μεταβολής του περιεχομένου της επικοινωνίας. Το πιο διαδεδομένο τέτοιο πρωτόκολλο στο διαδίκτυο σήμερα είναι το TLS και ο πρόγονός του, τo SSL. Ενα πρωτόκολλο επικοινωνίας για να θεωρείται ασφαλές πρέπει να παρέχει ι) μυστικότητα της επικοινωνίας ιι) ακεραιότητα των δεδομένων και ιιι) αυθεντικοποίηση των συμμετεχόντων. Τα τελευταία χρόνια γινόμαστε μάρτυρες συνεχων επιθέσεων σε κρυπτογραφημένες συνδέσεις TLS, που πραγματοποιουνται από ιδιωτες, εταιρείες, αλλά και κυβερνήσεις κρατων όπως η Κίνα, το Ιράν και η Συρία, που συχνά λειτουργουν σαν ενδιάμεσοι σε συνδέσεις πολιτων με κρυπτογραφημένες υπηρεσίες στο διαδίκτυο. Στόχοι των επιθέσεων αυτων είναι η παρακολουθηση, ή παρεμπόδιση της επικοινωνίας, ή η μεταβολή του περιεχομένου της. Στην εργασία αυτή θα μελετήσουμε την ασφάλεια του πρωτοκόλλου TLS και τις γνωστές επιθέσεις ενδιάμεσου που το αφορουν. Θα δουμε πως εξελίχθηκε το TLS/SSL για να ξεπεράσει τις πραγματικές και θεωρητικές επιθέσεις που δημοσιευτηκαν και θα αποπειραθουμε αξιολογήσουμε τις κυριες τρέχουσες αδυναμίες του και τις πιθανές λυσεις που έχουν προταθεί, κάποιες από τις οποίες μόλις τους τελευταίους μήνες. Τέλος, θα παρουσιάσουμε το TwistedEve, ένα εξειδικευμένο εργαλείο λογισμικου που αναπτυχθηκε στα πλαίσια αυτής της μελέτης και διευκολυνει ορισμένους τυπους επιθέσεων ενδιάμεσου. Προορίζεται για εκπαιδευτική χρήση και θα χρησιμοποιηθεί στα πλαίσια εργασίας του μαθήματος Προστασία και Ασφάλεια Υπολογιστικων Συστημάτων που διδάσκεται στο τμήμα Πληροφορικής και Τηλεπικοινωνιων του ΕΚΠΑ. Διδάσκων του μαθήματος και επιβλέπων της παρουσης εργασίας είναι ο επίκουρος καθηγητής Αγγελος Κιαγιάς. Τον ευχαριστω θερμά για τη βοήθεια του, την υπομονή που έδειξε μέχρι να ολοκληρωσω τη μελέτη αυτή εν μέσω πολλαπλων παράλληλων υποχρεωσεων και κυρίως για την ευκαιρία που μου έδωσε να ασχοληθω σε βάθος με ένα θέμα τόσο φλέγον για την ασφάλεια του διαδικτυου που όχι μόνο αφορά άμεσα τη δουλειά μου, αλλά έχει και σημαντικές κοινωνικές προεκτάσεις.

Επίσης, θα ήθελα να ευχαριστήσω τους συναδέλφους και συνεταίρους μου στην unweb.me για την υπομονή που έδειξαν όταν παραμελουσα τις εκεί υποχρεωσεις μου για να ασχοληθω με αυτή την εργασία και κυρίως τον Μάρκο Γωγουλο, για την ενθάρρυνση και τις ιδέες του γυρω από το θέμα. Τέλος, δεν μπορω να μην ευχαριστήσω τους γονείς μου, που με στήριξαν με πολλους τρόπους από την αρχή της φοιτητικής μου σταδιοδρομίας.

1. Το πρωτο κολλο TLS 1.1 Περιγραφή Το TLS είναι ένα κρυπτογραφικό πρωτόκολλο που έχει σαν πρωτευοντες στόχους την ιδιωτικότητα και την ακεραιότητα των δεδομένων κατά την επικοινωνία ανάμεσα σε μια εφαρμογή πελάτη (client) και σε μια εφαρμογή εξυπηρετητή (server). Πιο συγκεκριμένα, οι στόχοι του TLS σε σειρά προτεραιότητας είναι οι εξής: 1. Κρυπτογραφική ασφάλεια 2. Διαλειτουργικότητα 3. Επεκτασιμότητα 4. Σχετική αποδοτικότητα To TLS χρησιμοποιείται ως ενδιάμεσο πρωτόκολλο μεταξυ του επιπέδου εφαρμογων και του επιπέδου μεταφοράς. Χρησιμοποιεί ασυμμετρη κρυπτογραφία για ανταλλαγή κλειδιων, συμμετρική κρυπτογραφία για ιδιωτικότητα και κωδικες επαλήθευσης αυθεντικοποίησης μηνυμάτων (Message Authentication Codes) για επαλήθευση της ακεραιότητας των δεδομένων. Το TLS είναι πρότυπο του IETF, με τελευταία ανανέωση στο RFC5246 και βασίζεται στις προδιαγραφές του παλαιότερου πρωτοκόλλου SSL που αναπτυχθηκε από τη Netscape Communications. Αρκετές εκδόσεις του πρωτοκόλλου χρησιμοποιουνται ευρέως σε εφαρμογές όπως ο παγκόσμιος ιστός (www), η ηλεκτρονική αλληλογραφία (email), η διαδικτυακή τηλεφωνία (VoIP), κ.α. Καθως τα περισσότερα από τα παραπάνω πρωτόκολλα μπορουν να χρησιμοποιηθουν τόσο χωρίς, όσο και με το TLS, είναι απαραίτητο η εφαρμογή εξυπηρετητή να δηλωσει αν υποστηρίζει το TLS. Αυτό μπορεί να γίνει με δυο τρόπους. Ο πρωτος είναι να διατεθεί μια ξεχωριστή πόρτα επικοινωνίας που θα υποστηρίζει χρήση του TLS. Για παράδειγμα το HTTPS που είναι HTTP πάνω από TLS, συνήθως χρησιμοποιεί την πόρτα 443 αντί για την πόρτα 80 που χρησιμοποιεί παραδοσιακά το απλό HTTP. Ο δευτερος τρόπος είναι να χρησιμοποιηθεί η ίδια πόρτα με την υπηρεσία χωρίς TLS αλλά να δοθεί η δυνατότητα στην εφαρμογή πελάτη να μετατρέψει τη συνδεσή σε TLS στέλνοντας μια ειδική εντολή στα πλαίσια του αρχικου Δημήτρης Μωραϊτης 9

πρωτοκόλλου. Ενα τέτοιο παράδειγμα είναι η εντολή STARTTLS στα πρωτόκολλα SMTP, IMAP & POP. Οταν ο πελάτης και ο εξυπηρετητής αποφασίσουν να ξεκινήσουν μια συνδεση TLS, καταρχήν διαπραγματευονται τις παραμέτρους της επικοινωνίας μέσα από μια διαδικασία χειραψίας (TLS Handshake). 1. Η χειραψία ξεκινά με τον πελάτη να ζητάει μια ασφαλή συνδεση, στέλνοντας τη λίστα με τις σουίτες κρυπταλγορίθμων (cipher suite = κρυπταλγόριθμος + συνάρτηση κατακερματισμου) που υποστηρίζει 2. O εξυπηρετητής επιλέγει από τη λίστα αυτή το ισχυρότερο από τα cipher suites που υποστηρίζει ο ίδιος και ενημερωνει τον πελάτη για την απόφαση 3. Ο εξυπηρετητής στέλνει την ταυτότητά του στη μορφή ενός ψηφιακου πιστοποιητικου Χ.509. Το πιστοποιητικό περιέχει το όνομα του εξυπηρετητή, την αρχή πιστοποίησης και το δημόσιο κλειδί του εξυπηρετητή. 4. Ο πελάτης επαληθευει την εγκυρότητα του πιστοποιητικου, ενδεχομένως επικοινωνωντας με την αρχή πιστοποίησης 5. Προκειμένου να παραχθουν τα κλειδιά συνεδρίας (session keys), ο πελάτης κρυπτογραφεί έναν τυχαίο αριθμό με το δημόσιο κλειδί του εξυπηρετητή και στέλνει το αποτέλεσμα. Ο εξυπηρετητής είναι ο μόνος που μπορεί να αποκρυπτογραφήσει το μήνυμα, με τη βοήθεια του ιδιωτικου κλειδιου του 6. Με βάση τον αριθμό αυτό, τόσο ο πελάτης όσο και ο εξυπηρετητής παράγουν τα κλειδιά συνεδρίας για κρυπτογράφηση και αποκρυπτογράφηση του περιεχομένου Μετά από αυτά τα βήματα ξεκινά η ασφαλής συνδεση, τα περιεχόμενα της οποίας κρυπτογραφουνται μέχρι το τέλος της συνδεσης. Αν αποτυχει κάποιο από τα παραπάνω βήματα η χειραψία αποτυγχάνει και δεν ξεκινά ασφαλής συνδεση. 1.2 Ιστορία 1.2.1 Secure Network Programming API Πρωιμες ερευνητικές προσπάθεις στην ασφάλεια επιπέδου μεταφοράς (Transport Layer Security) περιελάμβαναν το Secure Network Programming (SNP) API, που το 1993 διερευνησε την προσέγγιση ενός ασφαλους επιπέδου μεταφοράς που προσομοιάζει Δημήτρης Μωραϊτης 10

Berkeley Sockets προκειμένου να διευκολυνει την προσαρμογή προυπαρχόντων εφαρμογων. 1.2.2 SSL 1.0, 2.0 & 3.0 Το πρωτόκολλο SSL αναπτυχθηκε αρχικά από την Netscape και κατά κυριο λόγο από τον μηχανικό Kipp Hickman. Η έκδοση 1.0 δε δημοσιευτηκε ποτέ. Η έκδοση 2.0 κυκλοφόρησε το Φεβρουάριο του 1995 αλλά είχε μια σειρά από προβλήματα ασφαλείας που τελικά οδήγησαν στη σχεδίαση του SSL 3.0. Το SSL 3.0 κυκλοφόρησε το 1996 και ήταν ένας πλήρης ανασχεδιασμός του πρωτοκόλλου που έγινε από τον Paul Kocher σε συνεργασία με τους μηχανικους της Netscape, Phil Karlton & Alan Freir. Οι επόμενες εκδόσεις του SSL/TLS βασίζονται στο SSL v3.0 1.2.3 TLS 1.0 (SSL 3.1) To TLS 1.0 ορίστηκε καταρχήν στο RFC 2246 τον Ιανουάριο του 1999 σαν μια αναβάθμιση του SSL Version 3.0. Οι αλλαγές ανάμεσα στο TLS 1.0 και το SSL 3.0 δεν είναι μεγάλες, αλλά είναι αρκετές ωστε μην υπάρχει διαλειτουργικότητα ανάμεσα στα 2 πρωτόκολλα. Το TLS 1.0 περιλαμβάνει ένα μηχανισμό για την υποβάθμιση του πρωτοκόλλου επικοινωνίας σε SSL 3.0. 1.2.4 TLS 1.1 (SSL 3.2) To TLS 1.1 ορίστηκε στο RFC 4346 τον Απρίλη του 2006. Είναι μια αναβάθμιση από την έκδοση 1.0. Οι βασικές αλλαγές σε αυτή την έκδοση είναι οι παρακάτω: Προσθήκη προστασίας ενάντια σε επιθέσεις Cipher block chaining (CBC). Ο υπονοουμενος Πίνακας Αρχικοποίησης (Initialization Vector) αντικαταστάθηκε από ένα ρητό IV. Αλλαγές στη διαχείριση padding errors. Υποστήριξη για καταχωρηση παραμέτρου στο IANA. 1.2.5 TLS 1.2 (SSL 3.3) Το TLS 1.2 ορίστηκε στο RFC 5246 τον Αυγουστο του 2008. Βασίζεται στο TLS 1.1 με κυριες διαφορές τις παρακάτω: Ο συνδυασμός MD5-SHA-1 στην ψευδοτυχαία συνάρτηση (PRF) αντικαταστάθηκε από τον SHA-256, με δυνατότητα χρήσης PRF οριζόμενο από την cipher-suite. Δημήτρης Μωραϊτης 11

Ο συνδυασμός MD5-SHA-1 στο hash του μηνυματος Finished αντικαταστάθηκε από τον SHA-256, με δυνατήτητα χρήσης διαφορετικων αλγοριθμων ανάλογα με το cipher-suite. Ο συνδυασμός MD5-SHA-1 στο ψηφιακά υπογραγραμμένο στοιχείο αντικαταστάθηκε με ένα μοναδικό hash που ορίζεται κατά τη διάρκεια της χειραψίας με προεπιλογή το SHA- 1. Βελτιωσεις στις δυνατότητες του πελάτη και του εξυπηρερητή να ορίζουν ποιους αλγορίθμους αποδέχονται για hashing και ψηφιακές υπογραφές. Επέκταση της υποστήριξης κρυπταλγορίθμων για αυθεντικοποιημένη κρυπτογραφία Προστέθηκε ορισμός των επεκτάσεων του TLS, καθως και Advanced Encryption Standard ciphersuites. To TLS 1.2 βελτιωθηκε περαιτέρω στο RFC 6176 το Μάρτιο του 2011, με την αφαίρεση της προς τα πίσω συμβατότητας που επιτρέπει την υποβάθμιση του πρωτοκόλλου σε SSL 2.0. 1.3 Εφαρμογε ς Κατά τη σχεδίαση εφαρμογων, το ΤLS συνήθως υλοποιείται πάνω από οποιοδήποτε πρωτόκολλο επιπέδου μεταφοράς (ΟSI level 4), ενθυλακωνοντας πρωτόκολλα εφαρμογων όπως τα ΗTTP, FTP, SMTP, NNMP & XMMP. Κατά κυριο λόγω έχει χρησιμοποιηθεί πάνω από αξιόπιστα πρωτόκολλα μεταφοράς όπως το TCP, αλλά υπάρχουν και υλοποιήσεις με datagram oriented πρωτόκολλα όπως τα UDP & DCCP/DTLS. Εξέχουσα εφαρμογή του TLS είναι η χρήση του για την διασφάλιση επικοινωνιων στον παγκόσμιο ιστό με το πρωτόκολλο HTTPS που είναι η ενθυλάκωση του πρωτοκόλλου HTTP από το TLS. Το HTTPS είναι απαραίτητο σε εφαρμογές ηλεκτρονικου εμπορίου και ηλεκτρονικής τραπεζικής. Το πρωτόκολλο SMTP για την αποστολή ηλεκτρονικου ταχυδρομείου προστατευεται όλο και συχνότερα από το TLS. Οι εφαρμογές αυτές χρησιμοποιουν ψηφιακά πιστοποιητικά για να ταυτοποιήσουν τα εμπλεκόμενα μέλη. Το TLS μπορεί επίσης να χρησιμοποιηθεί για την ενθυλάκωση μιας ολόκληρης στοίβας δικτυακων πρωτοκόλλων, επιτρέποντας έτσι τη δημιουργία ιδεατων εικονικων δικτυων (VPN), με παράδειγμα την περίπτωση του OpenVPN. Σε συγκριση με παραδοσιακές Δημήτρης Μωραϊτης 12

τεχνολογίες VPN με βάση το IPsec, το TLS προσφέρει πλεονεκτήματα στη διασχιση firewall και δικτυων με NAT. Το TLS είναι ο κυριος τρόπος προστασίας για το πρωτόκολλο SIP που χρησιμοποιείται σε εφαρμογές δικτυακής τηλεφωνίας VoIP. 1.4 Ασφα λεια Το TLS περιλαμβάνει μια σειρά από μέτρα ασφαλείας: Προστασία από την υποβάθμιση του πρωτοκόλλου σε προηγουμενη (λιγότερο ασφαλή) έκδοση ή πιο αδυναμο cipher suite Αρίθμηση των μηνυμάτων εφαρμογής με αριθμό σειράς που χρησιμοποιείται από κωδικες αυθεντικοποίησης μηνυμάτων (MACs) Χρήση συνοψης μηνυμάτων (message digest) με κλειδί, ωστε μόνο κάποιος που έχει το κλειδί να μπορεί να ελέγξει το MAC. Το μήνυμα που ολοκληρωνει τη χειραψία ("Finished") στέλνει ένα hash όλων των μηνυμάτων χειραψίας που έχουν δει και τα δυο μέλη Η ψευδοτυχαία συνάρτηση χωρίζει τα δεδομένα εισόδου στα δυο και επεξεργάζεται κάθε ένα με διαφορετικό αλγόριθμο κατακερματισμου (MD5 & SHA-1) και στη συνέχεια εκτελεί πράξη XOR για να κατασκευάσει το MAC. Αυτό παρέχει προστασία ακόμα και αν ένας από τους αλγορίθμους είναι ευάλωτος - Μόνο στο TLS To SSL 3.0 βελτιωνει το SSL 2.0 προσθέτοντας ciphers βασισμένους στον SHA-1 και υποστήριξη ταυτοποίησης πιστοποιητικων Από πλευράς ασφαλείας, το SSL 3.0 πρέπει να θεωρείται λιγότερο επιθυμητό από το TLS 1.0. Τα cipher suites του SSL 3.0 έχουν λιγότερη ασφαλή διαδικασία παραγωγής κλειδιου. Το μισό κλειδί εξαρτάται απόλυτα από τη συνάρτηση κατακερματισμου MD5 που δεν είναι ανθεκτική σε συγκρουσεις, οπότε δε θεωρείται ασφαλής. Στο TLS 1.0, το κυριο κλειδί που παράγεται εξαρτάται τόσο από τον MD5 όσο και από τον SHA-1, οπότε η διαδικασία παραγωγής του δε θεωρείται αδυναμη. Για αυτό το λόγο οι υλοποιήσεις του SSL 3.0 δεν μπορουν να πιστοποιηθουν κάτω από το FIPS 140-2. 1.4.1 Ευπα θειες Μια αδυναμία στη διαδικασία επαναδιαπραγμάτευσης που ανακαλυφτηκε τον Αυγουστο του 2009 επιτρέπει την εισαγωγή απλου κειμένου στις συνεδρίες SSL 3.0 & TLS 1.0. Για Δημήτρης Μωραϊτης 13

παράδειγμα, επιτρέπει σε έναν επιτιθέμενο που μπορεί να υποκλέψει μια https συνδεση, να προσθέσει τις δικές του αιτήσεις στην αρχή της συνομιλίας του πελάτη με τον εξυπηρετητή. Ο επιτιθέμενος δεν μπορεί όμως να αποκρυπτογραφήσει τα δεδομένα της επικοινωνίας πελάτη - εξυπηρετητή οπότε δεν πρόκειται για μια τυπική επίθεση ενδιάμεσου. Αν ο χρήστης δεν προσέχει τη σχετική ένδειξη της εφαρμογής πελάτη για ασφαλείς συνδέσεις, τότε η επίθεση αυτή μπορεί να μετατραπεί σε πραγματική επίθεση ενδιάμεσου. Ενα βραχυπρόθεσμο μέτρο διόρθωσης είναι για τους εξυπηρετητές να σταματήσουν να επιτρέπουν τη διαδικασία επαναδιαπραγμάτευσης, το οποίο δε δημιουργεί προβλήματα όταν δεν χρησιμοποιείται αυθεντικοποίηση και του πελάτη με πιστοποιητικό. Για τη διόρθωση του προβλήματος έχει προταθεί μια επέκταση του TLS. Απαιτεί από τον πελάτη και τον εξυπηρετητή να περιλάβουν και να επαληθευσουν πληροφορίες για τις προηγουμενες χειραψίες σε κάθε χειραψία επαναδιαπραγμάτευσης. Η επέκταση αυτή είναι προτεινόμενο πρότυπο με τον αριθμό RFC 5746 και έχει ήδη υλοποιηθεί από την OpenSSL και άλλες βιβλιοθήκες. Πέρα από επιθέσεις στο ίδιο το πρωτόκολλο, υπάρχουν και μια σειρά από επιθέσεις σε υλοποιήσεις του: Σε παλιότερες υλοποιήσεις, κάποιες αρχές πιστοποίησης δεν όριζαν ρητά την παράμετρο basicconstraints CA=FALSE στα πιστοποιητικά που υπέγραφαν για κόμβους φυλλα. Σαν αποτέλεσμα τα πιστοποιητικά αυτά μπορουσαν να χρησιμοποιηθουν για να υπογραφουν πλαστά πιστοποιητικά. Επιπλέον, κάποιες πρωιμες εφαρμογές πελάτη (π.χ. Microsoft Internet Explorer 6) δεν έλεγχαν καν το σχετικό πεδίο, πράγμα που μπορεί να χρησιμοποιηθεί για επιθέσεις ενδιάμεσου σε όλες τις πιθανές συνδέσεις SSL Κάποιες υλοποιήσεις, ανάμεσα στις οποίες παλιότερες εκδόσεις του Microsoft Cryptographic API, του Network Security Services και του GnuTLS, σταματουν την ανάγνωση χαρακτήρων μετά τον χαρακτήρα null στο πεδίο ονόματος του πιστοποιητικου, πράγμα που μπορεί να χρησιμοποιηθεί για να ξεγελαστεί η εφαρμογή πελάτη, πιστευοντας ότι το πιστοποιητικό προήλθε από τον πραγματικό εξυπηρετητή. π.χ. το paypal.com\0.badguy.com θα θεωρουσαν ότι προέρχεται από το paypal.com αντί για το badguy.com Οι εφαρμογές πελάτη (π.χ. web browsers) υλοποίησαν μηχανισμους υποβάθμισης της έκδοσης του πρωτοκόλλου SSL/TLS σε προηγουμενες εκδόσεις για λόγους συμβατότητας. Η προστασία που προσφέρει το SSL/TLS Δημήτρης Μωραϊτης 14

ενάντια στην υποβάθμιση της έκδοσης του πρωτοκόλλου από μία ενεργή επίθεση ενδιάμεσου μπορεί να καταστεί άχρηστη από τέτοιους μηχανισμους Το SSL 2.0 είναι ελλιπές με αρκετους τρόπους: Τα ίδια κρυπτογραφικά κλειδιά χρησιμοποιουνται για την αυθεντικοποίηση των μηνυμάτων και την κρυπτογράφηση Το SSL 2.0 έχει μια αδυναμη κατασκευή MAC που χρησιμοποιεί τη συνάρτηση κατακερματισμου MD5 με ένα μυστικό πρόθεμα, που το καθιστά ευάλωτο σε επιθέσεις επέκτασης μήκους Το SSL 2.0 δεν προστατευει την χειραψία, πράγμα που σημαίνει ότι μια επίθεση υποβάθμισης της έκδοσης μπορεί να μη γίνει καν αντιληπτή Το SSL 2.0 κλείνει την TCP συνδεση για να σηματοδοτήσει το τέλος των δεδομένων. Αυτό σημαίνει ότι είναι εφικτές επιθέσεις περικοπής: Ο επιτιθέμενος απλά πλαστογραφεί ένα TCP FIN και ο παραλήπτης δεν μπορεί να ξέρει ότι το μήνυμα δεδομένων δε μεταφέρθηκε ολόκληρο. Το SSL 3.0 διορθωνει αυτό το πρόβλημα με μια ρητή προειδοποίηση κλεισίματος Το SSL 2.0 υποθέτει μια μόνο υπηρεσία και ένα πιστοποιητικό για συγκεκριμένο όνομα δικτυακου τόπου, πράγμα που συγκρουεται με το στανταρ του virtual hosting στου web servers. Αυτό σημαίνει ότι πολλές ιστοσελίδες είναι πρακτικά αδυνατο να χρησιμοποιήσουν SSL. Το SSL 2.0 είναι απενεργοποιημένο στους Internet Explorer 7 η μεγαλυτερο, Mozilla Firefox 2 η μεγαλυτερο, Opera 9.5 ή μεγαλυτερο και Safari. Ο Mozilla Firefox, αν στείλει ένα TLS ClientHello και δει ότι ο εξυπηρετητής δε μπορεί να ολοκληρωσει τη χειραψία, τότε θα προσπαθήσει να υποβαθμίσει το πρωτόκολλο σε SSL 3.0 με ένα ClientHello σε φορμά SSL 2.0 προκειμένου να μεγιστοποιήσει την πιθανότητα επιτυχους χειραψίας με παλιότερους εξυπηρετητές. Τροποποιήσεις του αρχικου πρωτοκόλλου όπως το False Start που υιοθετεί ο Google Chrome ή το Snap Start, έχει αναφερθεί ότι εισάγουν περιορισμένες επιθέσεις υποβάθμισης της έκδοσης του πρωτοκόλλου, η ότι επιτρέπουν παρεμβάσεις στη λίστα με τα cipher suite που στέλνονται από τον πελάτη στον εξυπηρετητή. Ενας επιτιθέμενος μπορεί να επηρεάσει την επιλογή του cipher suite προκειμένου να υποβαθμίσει την ασφάλειά του, επιλέγοντας είτε ένα πιο αδυναμο συμμετρικό αλγόριθμο κρυπτογράφησης ή μια πιο αδυναμη ανταλλαγή κλειδιων. Δημήτρης Μωραϊτης 15

1.5 Δομή To TLS ανταλλάσει έγγραφα (records) που ενθυλακωνουν τα δεδομένα που ανταλλάσονται. Τα πακέτα μπορεί να είναι συμπιεσμένα, παραγεμισμένα (padded), κρυπτογραφημένα, ή και να περιέχουν κωδικες αυθεντικοποίησης μηνυμάτων (MAC), ανάλογα με την κατάσταση της συνδεσης. Κάθε έγγραφο έχει ένα πεδίου τυπου περιεχομένου (Content type) που ορίζει τον τυπο του εγγράφου, ένα πεδίο μήκους και ένα πεδίο έκδοσης του TLS. Πρωτο κολλο εγγρα φων Στον παρακάτω πίνακα φαίνεται η γενική δομή όλων των εγγράφων του ΤLS. Θε ση Περιεχο μενο Μήκος σε bytes 0 Τυπος μηνυματος 1 1 Εκδοση (major, minor) 2 3 Μήκος 2 5 Μήνυμα(τα) πρωτοκόλλου m 5+m MAC (προαιρετικά) n 5+m+n Παραγέμισμα (μόνο σε block ciphers) p Τύπος μηνύματος Το πεδίο αυτό καθορίζει τον τυπο του εγγράφου όπου βασίζεται το μήνυμα και μπορεί να πάρει μία τιμή από τις παρακάτω. Hex Dec Type 0x14 20 ChangeCipherSpec 0x15 21 Alert 0x16 22 Handshake 0x17 23 Application Έκδοση Το πεδίο αυτό καθορίζει την κυρια και δευτερευουσα έκδοση του TLS για το μεταδιδόμενο μήνυμα. Δημήτρης Μωραϊτης 16

Κύρια ε κδοση M Δευτερεύουσα ε κδοση M Έκδοση SSL/TLS V 3 0 SSL 3.0 3 1 TLS 1.0 3 2 TLS 1.1 3 3 TLS 1.2 Μήκος Το μήκος του μηνυματος πρωτοκόλλου, όχι πάνω από 2 14 bytes (16 KiB). Μηνύμα(τα) πρωτοκο λλου Ενα ή περισσότερα μηνυματα πρωτοκόλλου. Το πεδίο αυτό μπορεί να είναι κρυπτογραφημένο, ανάλογα με την κατάσταση της συνδεσης. MAC & Παραγε μισμα (padding) Κωδικας αυθεντικοποίησης μηνυματος, υπολογισμένος από το μήνυμα πρωτοκόλλου, με επιπλέον υλικό κλειδιου. Το πεδίο αυτό μπορεί να είναι κρυπτογραφημένο, ή να λείπει τελείως, ανάλογα με την κατάσταση της συνδεσης. Κανένα MAC ή Padding δεν μπορεί να βρίσκεται στο τέλος των εγγράφων TLS πριν να ολοκληρωθεί η διαπραγμάτευση όλων των κρυπταλγόριθμων και παραμέτρων με την αποστολή ενός εγγράφου CipherStateChange (δείτε παρακάτω). Πρωτο κολλο χειραψίας Τα περισσότερα μηνυματα που ανταλλάσσονται κατά την εγκαθίδρυση μιας TLS συνεδρίας βασίζονται σε αυτό το έγγραφο, εκτός αν συμβεί κάποιο σφάλμα ή προειδοποίηση από το Alert protocol (δείτε παρακάτω). Πολλαπλά μηνυματα χειραψίας μπορουν να συνυπάρχουν στο ίδιο έγγραφο. Θε ση Περιεχο μενο Μήκος σε bytes 0 22 1 1 Εκδοση (major, minor) 2 3 Μήκος 2 5 Τυπος μηνυματος 1 Δημήτρης Μωραϊτης 17

6 Μήκος δεδομένων χειραψίας 3 9 Δεδομένα μηνυματος χειραψίας n 9+n Τυπος μηνυματος 1 10+n Μήκος δεδομένων χειραψίας 3 13+n Δεδομένα μηνυματος χειραψίας m 13+n+m... Τύπος μηνύματος Το πεδίο αυτό καθορίζει τον τυπο του μηνυματος και μπορεί να πάρει μία τιμή από τις παρακάτω. Τιμή Τύπος 0 HelloRequest 1 ClientHello 2 ServerHello 11 Certificate 12 ServerKeyExchange 13 CertificateRequest 14 ServerHelloDone 15 CertificateVerify 16 ClientKeyExchange 20 Finished Μήκος δεδομε νων χειραψίας Πεδίο τριων byte που ορίζει το μήκος των δεδομένων της χειραψίας, χωρίς να υπολογίζεται η κεφαλίδα. Πρωτο κολλο ειδοποιήσεων Κατά τη διάρκεια μιας τυπικής συνδεσης δεν ανταλλάσσονται έγγραφα του πρωτοκόλλου ειδοποιήσεων. Οποιαδήποτε όμως στιγμή, από την έναρξη της χειραψίας έως το κλείσιμο της συνεδρίας μπορεί να σταλεί μήνυμα με βάση το παρακάτω έγγραφο. Στην περίπτωση που το επίπεδο ειδοποίησης (alert level) είναι ορισμένο ως Δημήτρης Μωραϊτης 18

τερματικό σφάλμα (fatal error), η συνδεση διακόπτεται αμέσως μετά την αποστολή του εγγράφου ειδοποίησης. Στην περίπτωση που το επίπεδο ειδοποίησης είναι απλή προειδοποίηση (warning), η άλλη πλευρά μπορεί να επιλέξει είτε να συνεχίσει κανονικά, είτε να κλείσει τη συνεδρία αν αποφασίσει ότι δεν είναι πλέον αρκετά αξιόπιστη, με προαιρετική αποστολή σχετικου μηνυματος. Θε ση Περιεχο μενο Μήκος σε bytes 0 21 1 1 Εκδοση (major, minor) 2 3 Μήκος 2 5 Επίπεδο ειδοποίησης 1 6 Περιγραφή 1 7 MAC (προαιρετικά) n 7+n Παραγέμισμα (μόνο σε block ciphers) p Επίπεδο ειδοποίησης Κωδικο ς Επίπεδο Κατα σταση σύνδεσης 1 προειδοποίηση Η συνδεση ή η ασφάλεια ίσως είναι ασταθής 2 σφάλμα Η συνδεση ή η ασφάλεια έχει εκτεθεί, ή έχει συμβεί ανεπανόρθωτο σφάλμα Περιγραφή Κωδικο ς Περιγραφή Επίπεδο Σημείωση 0 Ειδοποίηση διακοπής προειδοποίηση/ σφάλμα 10 Απρόσμενο μήνυμα σφάλμα 20 Λανθασμένο MAC εγγράφου 21 Αποτυχία αποκρυπτογράφησης σφάλμα σφάλμα 22 Υπερχείλιση εγγράφου σφάλμα TLS only 30 Αποτυχία αποσυμπίεσης σφάλμα Λάθος υλοποίηση SSL/TLS ή αλλοιωμένο περιεχόμενο μηνυματος. TLS only, reserved Δημήτρης Μωραϊτης 19

40 Αποτυχία χειραψίας σφάλμα 41 Χωρίς πιστοποιητικό προειδοποίηση/ σφάλμα 42 Κακό πιστοποιητικό προειδοποίηση/ σφάλμα 43 Μη υποστηριζόμενο πιστοποιητικό 44 Ανακληθέν πιστοποιητικό προειδοποίηση/ σφάλμα προειδοποίηση/ σφάλμα 45 Ληγμένο πιστοποιητικό προειδοποίηση/ σφάλμα 46 Αγνωστο πιστοποιητικό προειδοποίηση/ σφάλμα 47 Λάθος παράμετρος σφάλμα 48 Αγνωστη αρχή πιστοποίησης 49 Απαγόρευση πρόσβασης 50 Σφάλμα αποκωδικοποίησης 51 Σφάλμα αποκρυπτογράφησης σφάλμα σφάλμα σφάλμα προειδοποίηση/ σφάλμα SSL 3.0 only, reserved π.χ. το πιστοποιητικό έχει ενεργοποιημένη μόνο τη χρήση αυθεντικοποίησης εξυπηρετητή ενω παρουσιάζεται ως πιστοποιητικό πελάτη TLS only TLS only TLS only TLS only 60 Περιορισμός εξαγωγής σφάλμα TLS only, reserved 70 Εκδοση πρωτοκόλλου σφάλμα TLS only 71 Ανεπαρκής ασφάλεια σφάλμα TLS only 80 Εσωτερικό σφάλμα σφάλμα TLS only 90 Ακυρωση από το χρήστη 100 Χωρίς επαναδιαπραγμάτευση 110 Μη υποστηριζόμενη επέκταση 111 Αδυναμία λήψης πιστοποιητικου 112 Μη αναγνωρισμένο όνομα 113 Κακή απάντηση κατάστασης πιστοποιητικου σφάλμα προειδοποίηση προειδοποίηση προειδοποίηση προειδοποίηση σφάλμα TLS only TLS only TLS only TLS only TLS only. Το όνομα εξυπηρετητή που έχει οριστεί δεν υποστηρίζεται από τον εξυπηρετητή TLS only Δημήτρης Μωραϊτης 20

114 Λάθος τιμή κατακερματισμου πιστοποιητικου 115 Αγνωστη ταυτότητα PSK (χρησιμοποιείται στο TLS-PSK & TLS- SRP) σφάλμα σφάλμα TLS only TLS only Πρωτο κολλο ChangeCipherSpec Θε ση Περιεχο μενο Μήκος σε bytes 0 20 1 1 Εκδοση (major, minor) 2 3 Μήκος 2 5 Τυπος πρωτοκόλλου CCS 1 Τύπος πρωτοκο λλου CCS Για μελλοντική χρήση. Για την ωρα υπάρχει μόνο ένα πρωτόκολλο ChangeCipherSpec. 1.5.1 Πρωτο κολλο εφαρμογής Θε ση Περιεχο μενο Μήκος σε bytes 0 23 1 1 Εκδοση (major, minor) 2 3 Μήκος 2 5 Τυπος πρωτοκόλλου CCS 1 Μήκος Μήκος των δεδομένων εφαρμογής, χωρίς να υπολογίζεται η κεφαλίδα του πρωτοκόλλου και με συνυπολογισμό του MAC και του παραγεμίσματος MAC 20 bytes για HMAC βασισμένο στον SHA-1, 16 bytes για HMAC βασισμένο στον MD5 Παραγε μισμα Μεταβλητό μήκος. Το τελευταίο byte περιλαμβάνει το μήκος του παραγεμίσματος. Δημήτρης Μωραϊτης 21

1.6 Χειραψία TLS Παρακάτω θα εξετάσουμε αναλυτικά 3 σενάρια χειραψίας TLS. Το πιο συνηθες είναι αυτό της απλής χειραψίας, όπου ο εξυπηρετητής (αλλά όχι ο πελάτης) αυθεντικοποιείται με χρήση πιστοποιητικου. Στο δευτερο σενάριο ο πελάτης αυθεντικοποιείται και αυτός με πιστοποιητικό Χ.509. Το τρίτο σενάριο αφορά συνδέσεις TLS όπου έχει ήδη γίνει μια φορά η διαπραγμάτευση της συνδεσης και η παραγωγή κλειδιων, οπότε μια νέα συνδεση μπορεί να επαναχρησιμοποιήσει τον κωδικό και τις παραμέτρους της προηγουμενης συνεδρίας εφόσον και οι δυο πλευρές έχουν το κυριο μυστικό κλειδί (master secret). Το TLS προβλέπει και χειραψίες χωρίς καθόλου αυθεντικοποίηση όπου τα κλειδιά κρυπτογράφησης αποφασίζονται από κοινου με βάση τον αλγόριθμο Diffie Hellman (DH-ANON). Αυτου του τυπου οι συνεδρίες δεν είναι ανθεκτικές σε επιθέσεις ενδιάμεσου και δεν υποστηρίζονται από τους περισσότερους εξυπηρετητές. 1.6.1 Απλή χειραψία 1. Φάση διαπραγμάτευσης Ο πελάτης στέλνει ένα μήνυμα ClientHello ορίζοντας τη μέγιστη έκδοση του TLS που υποστηρίζει, έναν τυχαίο αριθμό, καθως και μια λίστα με υποστηριζόμενες σουίτες κρυπταλγορίθμων και μεθόδους συμπίεσης. Ο εξυπηρετητής απαντά με ένα μήνυμα ServerHello που περιλαμβάνει την επιλεγμένη έκδοση του TLS, έναν τυχαίο αριθμό, την επιλεγμένη σουίτα κρυπταλγορίθμων και μέθοδο συμπίεσης, από τις επιλογές που προσέφερε ο πελάτης. Η έκδοση του TLS που επιλέγεται θα πρέπει να είναι η μεγαλυτερη δυνατή που υποστηρίζεται και από τον πελάτη και από τον εξυπηρετητή. Ο εξυπηρετητής στέλνει ένα μήνυμα Certificate που περιλαμβάνει το X.509 πιστοποιητικό του Ο πελάτης απαντά με ένα μήνυμα ClientKeyExchange που μπορεί να περιέχει ένα PreMasterSecret, ένα δημόσιο κλειδί, ή και τίποτα, ανάλογα με τον επιλεγμένο κρυπταλγόριθμο. Το PreMasterSecret κρυπτογραφείται με το δημόσιο κλειδί του πιστοποιητικου εξυπηρετητή. Ο πελάτης και ο εξυπηρετητής χρησιμοποιουν τις τυχαίες τιμές και το PreMasterSecret για να υπολογίσουν από κοινου ένα κυριο μυστικό κλειδί Δημήτρης Μωραϊτης 22

(master secret). Ολα τα υπόλοιπα δεδομένα κλειδιου που θα παραχθουν κατά τη διάρκεια της συνδεσης βασίζονται σε αυτό το κυριο μυστικό το οποίο τροφοδοτείται σε προσεκτικά σχεδιασμένες ψευδοτυχαίες συναρτήσεις. 2. Ο πελάτης στέλνει τωρα ένα έγγραφο ChangeCipherSpec που ουσιαστικά ενημερωνει τον εξυπηρετητή πως οτιδήποτε του πει ο πελάτης από εκείνη τη στιγμή και έπειτα θα είναι αυθεντικοποιημένο και κρυπτογραφημένο, εφόσον το πιστοποιητικό εξυπηρετητή περιλαμβάνει παραμέτρους κρυπτογράφησης. Ο πελάτης στέλνει ένα κρυπτογραφημένο μήνυμα Finished που περιλαμβάνει μια τιμή κατακερματισμου και ένα MAC για όλα τα προηγουμενα μηνυματα χειραψίας. Ο εξυπηρετητής θα αποπειραθεί να αποκρυπτογραφήσει το μήνυμα του πελάτη και να επαληθευσει την τιμή κατακερματισμου και το MAC. Αν η επαλήθευση αποτυχει, η διαπραγμάτευση θεωρείται αποτυχημένη και η συνδεση διακόπτεται. 3. Ο εξυπηρετητής στέλνει ένα έγγραφο ChangeCipherSpec που ουσιαστικά ενημερωνει τον πελάτη πως οτιδήποτε του πει από αυτό το σημείο και έπειτα θα είναι αυθεντικοποιημένο και κρυπτογραφημένο εφόσον έχουν διαπραγματευτεί κρυπτογράφηση. Ο εξυπηρετητής στέλνει το δικό του αυθεντικοποιημένο και κρυπτογραφημένο μήνυμα Finished. Ο πελάτης πραγματοποιεί την ίδια αποκρυπτογράφηση και επαλήθευση με παραπάνω. 4. Φάση εφαρμογής: η χειραψία ολοκληρωνεται και ενεργοποιείται το πρωτόκολλο εφαρμογής. Τα μηνυματα εφαρμογής που ανταλλάσσονται ανάμεσα στον πελάτη και τον εξυπηρετητή θα είναι επίσης αυθεντικοποιημένα και πιθανως κρυπτογραφημένα ακριβως όπως το μήνυμα Finished. 1.6.2 Χειραψία με αυθεντικοποίηση πελα τη 1. Φάση διαπραγμάτευσης Ο πελάτης στέλνει ένα μήνυμα ClientHello ορίζοντας τη μέγιστη έκδοση του TLS που υποστηρίζει, έναν τυχαίο αριθμό, καθως και μια λίστα με υποστηριζόμενες σουίτες κρυπταλγορίθμων και μεθόδους συμπίεσης. Δημήτρης Μωραϊτης 23

Ο εξυπηρετητής απαντά με ένα μήνυμα ServerHello που περιλαμβάνει την επιλεγμένη έκδοση του TLS, έναν τυχαίο αριθμό, την επιλεγμένη σουίτα κρυπταλγορίθμων και μέθοδο συμπίεσης, από τις επιλογές που προσέφερε ο πελάτης. Η έκδοση του TLS που επιλέγεται θα πρέπει να είναι η μεγαλυτερη δυνατή που υποστηρίζεται και από τον πελάτη και από τον εξυπηρετητή. Ο εξυπηρετητής στέλνει ένα μήνυμα Certificate που περιλαμβάνει το X.509 πιστοποιητικό του. Ο εξυπηρετητής ζητά ένα πιστοποιητικό από τον πελάτη με ένα μήνυμα CertificateRequest. Ο εξυπηρετητής στέλνει ένα μήνυμα ServerHelloDone ενημερωνοντας ότι έχει ολοκληρωσει τη διαπραγμάτευση χειραψίας. Ο πελάτης απαντά με ένα μήνυμα Certificate που περιλαμβάνει το X.509 πιστοποιητικό του. Ο πελάτης στέλνει ένα μήνυμα ClientKeyExchange που μπορεί να περιέχει ένα PreMasterSecret, ένα δημόσιο κλειδί, ή και τίποτα, ανάλογα με τον επιλεγμένο κρυπταλγόριθμο. Το PreMasterSecret κρυπτογραφείται με το δημόσιο κλειδί του πιστοποιητικου εξυπηρετητή. Ο πελάτης στέλνει ένα μήνυμα CertificateVerify που είναι μια υπογραφή των προηγουμενων μηνυμάτων χειραψίας χρησιμοποιωντας το ιδιωτικό κλειδί του πιστοποιητικου πελάτη. Η υπογραφή μπορεί να επαληθευτεί με το δημόσιο κλειδί του πιστοποιητικου πελάτη. Με τον τρόπο αυτό ο εξυπηρετητής επαληθευει ότι το πιστοποιητικό ανήκει όντως στον πελάτη, από τη στιγμή που ο τελευταίος έχει πρόσβαση στο ιδιωτικό κλειδί του πιστοποιητικου. Ο πελάτης και ο εξυπηρετητής χρησιμοποιουν τις τυχαίες τιμές και το PreMasterSecret για να υπολογίσουν από κοινου ένα κυριο μυστικό κλειδί (master secret). Ολα τα υπόλοιπα δεδομένα κλειδιου που θα παραχθουν κατά τη διάρκεια της συνδεσης βασίζονται σε αυτό το κυριο μυστικό το οποίο τροφοδοτείται σε προσεκτικά σχεδιασμένες ψευδοτυχαίες συναρτήσεις. 2. Ο πελάτης στέλνει τωρα ένα έγγραφο ChangeCipherSpec που ουσιαστικά ενημερωνει τον εξυπηρετητή πως οτιδήποτε του πει ο πελάτης από εκείνη τη Δημήτρης Μωραϊτης 24