Α–ΣΦΑΛΕΙΑ ΣΤΟ ΔΙΚΤΥΟ (H)


(ΣΥΝΕΧΕΙΑ ΑΠΟ  28/03/17)

5.3 Secure Socket Layer (SSL)

5.3.1 Γενικά

Το πρωτόκολλο SSL αναπτύχθηκε από την Netscape Communications Corporation για την ασφαλή επικοινωνία ευαίσθητων πληροφοριών όπως προσωπικά στοιχεία και αριθμούς πιστωτικών καρτών. Η πρώτη σχεδίαση του πρωτοκόλλου έγινε τον Ιούλιο του 1994 και αποτελούσε την πρώτη έκδοση (version 1.0) και τον Οκτώβριο του ίδιου χρόνου δημοσιοποιήθηκε υπό την μορφή RFC (Request For Comments). Τον Δεκέμβριο του 1994 εκδίδεται μια επαναθεώρηση του πρωτοκόλλου, η δεύτερη έκδοση του (version 2.0). Η παρούσα έκδοση του SSL, version 3.0, παρουσιάσθηκε στο κοινό στα τέλη του 1995, ενώ από τα μέσα του 1995 είχε αρχίσει να εφαρμόζεται σε προϊόντα της εταιρίας, όπως τον Netscape Navigator.

Επειδή η Netscape επιθυμούσε την παγκόσμια υιοθέτηση του πρωτοκόλλου γεγονός που ερχόταν σε σύγκρουση με τους νόμους των Ηνωμένων Πολιτειών περί εξαγωγή κρυπτογραφικών αλγορίθμων, αναγκάστηκε να επιτρέψει την χρήση ασθενών αλγορίθμων στις εξαγόμενες εφαρμογές. Πιο συγκεκριμένα, δημιούργησε παραλλαγές των αλγόριθμων RC4-128 και RC2-128που στην πραγματικότητα χρησιμοποιούν κλειδιά των 40 bits.

5.3.2 Εισαγωγή στο SSL

Το πρωτόκολλο SSL έχει σχεδιαστεί για να παρέχει απόρρητη επικοινωνία μεταξύ δύο συστημάτων, από τα οποία το ένα λειτουργεί σαν client και το άλλο σαν server. Η εξασφάλιση του απορρήτου γίνεται με την κρυπτογράφηση όλων των μηνυμάτων στο επίπεδο SSL Record Protocol. Παρέχει, επιπλέον, υποχρεωτική πιστοποίηση της ταυτότητας του server και προαιρετικά της ταυτότητας του client, μέσω έγκυρων πιστοποιητικών από έμπιστες Αρχές Έκδοσης Πιστοποιητικών (Certificates Authorities). Υποστηρίζει πληθώρα μηχανισμών κρυπτογράφησης και ψηφιακών υπογραφών για αντιμετώπιση όλων των διαφορετικών αναγκών. Τέλος, εξασφαλίζει την ακεραιότητα των δεδομένων, εφαρμόζοντας την τεχνική των Message Authentication Codes (MACs), ώστε κανείς να μην μπορεί να αλλοιώσει την πληροφορία χωρίς να γίνει αντιληπτός. Όλα τα παραπάνω γίνονται με τρόπο διαφανές και απλό.

Η έκδοση 3 του πρωτοκόλλου κάλυψε πολλές αδυναμίες της δεύτερης. Οι σημαντικότερες αλλαγές έχουν να με την μείωση των απαραίτητων μηνυμάτων κατά το handshake για την εγκαθίδρυση της σύνδεσης, την επιλογή των αλγόριθμων συμπίεσης και κρυπτογράφησης από τον server και την εκ νέου διαπραγμάτευση του master-key και session-id. Ακόμα αυξάνονται οι διαθέσιμοι αλγόριθμοι και προστίθενται νέες τεχνικές για την διαχείριση των κλειδιών.

Συμπερασματικά μπορούμε να πούμε πως η έκδοση 3 του SSL είναι πιο ολοκληρωμένη σχεδιαστικά, με μεγαλύτερο εύρος υποστήριξης εφαρμογών και λιγότερες ατέλειες. Παρ’ όλο που είναι συμβατή με την δεύτερη έκδοση, η χρήση της τελευταίας δεν πρέπει να προτιμάται.

Το SSL μπορεί να τοποθετηθεί στην κορυφή οποιουδήποτε πρωτοκόλλου μεταφοράς, δεν εξαρτάται από την ύπαρξη του TCP/IP και τρέχει κάτω από πρωτόκολλα εφαρμογών όπως το HTTP, FTP και TELNET. Μια αναπαράσταση του πρωτοκόλλου SSL βλέπουμε παρακάτω.

image

5.3.3 Υποστηριζόμενοι Αλγόριθμοι

Οι αλγόριθμοι κρυπτογράφησης χωρίζονται στους stream ciphers και στους block ciphers. Στους stream ciphers ανήκουν οι RC4 με κλειδιά 40 bits και 128 bits. Στους block ciphersανήκουν οι RC2 με κλειδιά 40 και 128 bits, οι DES, DES40, Triple DES και οι IDEA και Fortezza.

Οι αλγόριθμοι για την παραγωγή των hash και digest values για τα MACs είναι ο MD5 (128-bit hash) και ο SHA (160-bit hash).

Οι τεχνικές διαχείρισης των κλειδιών (key management) διακρίνονται στους: την ασύμμετρη κρυπτογραφία με RSA, την τεχνική Diffie-Hellman. Τα πιστοποιητικά είναι της μορφής Χ.509. Ο RSA μαζί με τον DSS και τον Fortezza μπορούν να χρησιμοποιηθούν για την ψηφιακή υπογραφή των κλειδιών κρυπτογράφησης.

Προσφέρεται και η δυνατότητα επιλογής ανασφάλιστης επικοινωνίας, αλλά δεν συνιστάται.

5.3.4 Το SSL και το OSI μοντέλο

image

Είναι σημαντικό κάθε νέο πρωτόκολλο επικοινωνίας να συμμορφώνεται με το OSI μοντέλο, έτσι ώστε να μπορεί εύκολα να αντικαταστήσει κάποιο υπάρχον πρωτόκολλο ή να ενσωματωθεί στην υπάρχουσα δομή πρωτοκόλλων.

Το SSL χωρίζεται σε δύο μέρη, το SSL Handshake Protocol (SSLHP) και το SSL Record Protocol (SSLRP). Το SSLHP διαπραγματεύεται τους αλγόριθμους κρυπτογράφησης που θα χρησιμοποιηθούν και πραγματοποιεί την πιστοποίηση της ταυτότητας του server και εάν ζητηθεί και του client. Το SSLRP συλλέγει τα δεδομένα σε πακέτα και αφού τα κρυπτογραφήσει τα μεταδίδει και αποκρυπτογραφεί τα παραλαμβανόμενα πακέτα.

Βλέπουμε πως το SSL λειτουργεί επιπρόσθετα της υπάρχουσας δομής του OSI και όχι σαν πρωτόκολλο αντικατάστασης. Επίσης είναι πασιφανές ότι η χρήση του SSL δεν αποκλείει την χρήσης άλλου μηχανισμού ασφαλείας που λειτουργεί σε υψηλότερο επίπεδο, για παράδειγμα το S/HTTP που εφαρμόζεται στο επίπεδο Εφαρμογών, πάνω από το SSL.

5.3.5 Λειτουργία του SSL

SSL Record Protocol

image

Ένα πακέτο SSL αποτελείται από δύο μέρη, την επικεφαλίδα και τα δεδομένα. Η επικεφαλίδα μπορεί να είναι είτε 3 bytes είτε 2 bytes, από τις οποίες περιπτώσεις η δεύτερη χρησιμοποιείται όταν τα δεδομένα χρειάζονται συμπλήρωμα (padding). Το πεδίο escape-bit στην περίπτωση των 3 bytes υπάρχει μόνο σε εκδόσεις μετά την δεύτερη του πρωτοκόλλου και προβλέπεται για ρύθμιση πληροφοριών out-of-band. Για την επικεφαλίδα των 2 bytes το μέγεθος του πακέτου είναι 32767 bytes, ενώ για την επικεφαλίδα των 3 bytes το μέγεθος είναι 16383 bytes.

Το κομμάτι των δεδομένων αποτελείται από ένα Message Authentication Code (MAC), τα πραγματικά δεδομένα και δεδομένα συμπλήρωσης, εάν χρειάζονται. Αυτό το κομμάτι είναι που κρυπτογραφείται κατά την μετάδοση. Τα συμπληρωματική δεδομένα απαιτούνται όταν οι αλγόριθμοι κρυπτογράφησης εν χρήση είναι τύπου block ciphers και ο ρόλος τους είναι να συμπληρώνουν τα πραγματικά δεδομένα ώστε το μέγεθος τους είναι πολλαπλάσιου του μεγέθους που δέχεται σαν είσοδο ο block cipher. Εάν χρησιμοποιούνται stream ciphers τότε δεν απαιτείται συμπλήρωμα και μπορεί αν χρησιμοποιηθεί η επικεφαλίδα των 2 bytes.

Το MAC είναι η digest ή hash value των secret-write key (βλέπε παρακάτω) του αποστολέα του πακέτου, των πραγματικών δεδομένων, των συμπληρωματικών δεδομένων και ενός αριθμού ακολουθίας, στην σειρά που δίνονται.

Προβλέπεται και η συμπίεση των δεδομένων (data compression) με κατάλληλους μηχανισμούς που επιλέγονται κατά το handshake, ενώ δεν αποκλείεται να χρειαστεί και τεμαχισμός της πληροφορίας σε πολλά πακέτα (fragmentation).

SSL Handshake Protocol

Το πρωτόκολλο SSL Handshake διαχωρίζεται σε δύο επιμέρους φάσεις: η πρώτη φάση αφορά την επιλογή των αλγόριθμων, την ανταλλαγή ενός master key και την πιστοποίηση της ταυτότητας του server. Η δεύτερη φάση διαχειρίζεται την πιστοποίηση της ταυτότητας του client (εάν ζητηθεί) και ολοκληρώνει την διαδικασία του handshaking. Όταν το ολοκληρωθούν και οι δύο φάσεις, το στάδιο του handshake τελειώνει και η μεταφορά μεταξύ των δύο άκρων αρχίζει. Όλα τα μηνύματα κατά την διάρκεια του handshaking και μετά στέλνονται σύμφωνα με το SSL Record Protocol.

Το πακέτο των αλγορίθμων κρυπτογράφησης (Cipher Suite) περιλαμβάνει την μέθοδο για την ανταλλαγή των κλειδιών, τον αλγόριθμο κρυπτογράφησης και τον μηχανισμό για την παραγωγή του MAC.

Παρακάτω θα δούμε τρεις διαφορετικές περιπτώσεις επικοινωνίας.

1. Πρώτα θα εξετάσουμε την περίπτωση της αρχικής σύνδεσης, χωρίς πιστοποίηση ταυτότητας του client. Χρησιμοποιείται η σύμβαση “{data}key” για να υποδηλώσουμε κρυπτογραφημένα δεδομένα με το κλειδί “key”.

Ας δούμε βήμα προς βήμα την ακολουθία μηνυμάτων.

image

Με το μήνυμα client-hello στέλνει ο client στον server μια λίστα με τους αλγόριθμους που υποστηρίζει και τα challenge-data που θα χρησιμοποιηθούν αργότερα για την πιστοποίηση της ταυτότητας του.

Το μήνυμα server-hello επιστρέφει στον client ένα αναγνωριστικό της σύνδεσης (connection-id), την επιλογή του server όσον αναφορά πακέτο των αλγόριθμων κρυπτογράφησης και συμπίεσης (που και οι δύο υποστηρίζουν) και το πιστοποιητικό του server που θα χρησιμοποιηθεί από τον client για την απόκτηση της δημόσιας κλείδας του server. Στην τελευταία έκδοση του

Το client-master-key και το master-key, που ανάλογα με το που βρίσκεται κάθε υπολογιστής, μπορεί να έχει δυο διαφορετικές μορφές. Για SSL εφαρμογές έξω από τις Ηνωμένες Πολιτείες, τα 88 bits του master-key μεταδίδονται μη κρυπτογραφημένα και κρυπτογραφούνται τα υπόλοιπα 40 bits με την δημόσια κλείδα του server. Αντίθετα για SSL εφαρμογές εντός των Ηνωμένων Πολιτειών, κρυπτογραφείται όλο το master-key και το clear-master-key είναι άδειο.

Από αυτό το σημείο και μετά όλα τα μηνύματα κρυπτογραφούνται στο επίπεδο του SSL Record Protocol. Το master-key δεν χρησιμοποιείται άμεσα για κρυπτογράφηση, αλλά για την παραγωγή δύο ζευγάρια κλειδιών. Το ένα ζευγάρι ανήκει στον client και αποτελείται από το client-write-key που χρησιμοποιεί ο client για να κρυπτογραφήσει τα μηνύματα προς τον server και το client-read-key για να αποκρυπτογραφήσει ότι λαμβάνει από αυτόν. Το δεύτερο ζευγάρι ανήκει στον server και αποτελείται από το server-write-key για κρυπτογράφηση μηνυμάτων προς τον client και το server-read-key για αποκρυπτογράφηση των παραληφθέντων. Για την ακρίβεια, το client-write-key είναι το ίδιο με το server-read-key και το client-read-key είναι το ίδιο με το server-write-key.

Το client-finish περιέχει το αναγνωριστικό της σύνδεσης που αρχικά είχε σταλεί από τον server κρυπτογραφημένο με το client-write-key.

Το server-verify περιέχει τα challenge-data που είχε στείλει ο client στον server κατά την αρχή της σύνδεσης, κρυπτογραφημένα με το server-write-key. Η παραλαβή και αποκρυπτογράφηση αυτού του μηνύματος είναι το τελικό στάδιο για την επιβεβαίωση της ταυτότητας του server καθ’ ότι μόνο ο αληθινός server θα μπορούσε να αποκρυπτογραφήσει με την ιδιωτική του κλείδα το master-key.

Τέλος, το μήνυμα server-finish τερματίζει το handshake. Περιέχει το session-id που χρησιμοποιείται σε επόμενες διαδικασίες handshake για την αποφυγή επανάληψης της φάσης επιλογής αλγορίθμων και ανταλλαγής του master-key. Το session-id αποθηκεύεται και από τους δύο και η προτεινόμενη διάρκεια ζωής είναι 100 δευτερόλεπτα. Έπειτα, αχρηστεύεται.

2. Όταν ένα προηγούμενο session-id από τον client χρησιμοποιείται για να επαναεγκαταστήσει την σύνδεση, το handshake γίνεται ως εξής:

image

Αλλάζει το client-hello που περιέχει επιπλέον το session-id και χρησιμοποιείται από τον server για να καθορίσει τους αλγόριθμους και το master-key. Η λίστα με τους αλγόριθμους στέλνεται ξανά για την περίπτωση όπου έχει λήξει το session-id.

Το server-hello στέλνεται μόνο όταν το session-id ισχύει ακόμα.

3. Όταν ζητείται πιστοποίηση της ταυτότητας του client και έχει προηγουμένως εκδοθεί session-id, η ακολουθία των μηνυμάτων του handshaking γίνεται:

image

Παρατηρούμε ότι τα προστίθονται δύο νέα μηνύματα στην προηγούμενη ακολουθία.

Το request-certificate στέλνεται από τον server και περιέχει μια δήλωση για την συνάρτηση που θα χρησιμοποιήσει ο client για την παραγωγή της digest value και τον τύπο της συμμετρική κρυπτογράφησης (auth-type). Επίσης, αποστέλλονται και δεδομένα που θα υπογράψει ο client για να αποδείξει την ταυτότητα του (cert-chal-data).

Το client-certificate επιστρέφει στον server το πιστοποιητικό του client, μαζί με μια δήλωση του τύπου αυτού (cert-type )και την υπογραφή των δεδομένων cert-chal-data. Ο server θα χρησιμοποιήσει την δημόσια κλείδα που περιέχεται στο πιστοποιητικό του client για να αποκρυπτογραφήσει την υπογραφή. Έπειτα, θα υπολογίσει το message digest των cert-chal-data και θα το συγκρίνει με το message digest που προήλθε από την αποκρυπτογράφηση της υπογραφής.

Κατά την διάρκεια όλων των παραπάνω ανταλλαγών μηνυμάτων, μηνύματα λάθους μπορούν να σταλούν σαν απάντηση σε μηνύματα που δεν βγάζουν νόημα. Η διαδικασία αναγνώρισης λάθους και αποστολή του κατάλληλου μηνύματος αναλαμβάνεται από το πρωτόκολλο SSL Alert Protocol και είναι μέρος του SSL Handshake Protocol. Έτσι, το μήνυμα no-cipher-errorστέλνεται όταν ο server δεν υποστηρίζει κανένα από τους αλγόριθμους που προτείνει ο client, το μήνυμα no-certificate-error όταν δεν είναι διαθέσιμο το ζητηθέν πιστοποιητικό, το μήνυμα bad-certificate αν το πιστοποιητικό είναι άκυρο και τέλος το unsupported-certificate-type-error, όταν ο τύπος ενός πιστοποιητικού δεν υποστηρίζεται από κανέναν.

5.3.6 Αντοχή του SSL σε Γνωστές Επιθέσεις

Dictionary Attack

Αυτό το είδος της επίθεσης λειτουργεί όταν ένα μέρος του μη κρυπτογραφημένου κειμένου είναι στην κατοχή του ανέντιμων προσώπων. Το μέρος αυτό κρυπτογραφείται με χρήση κάθε πιθανού κλειδιού και έπειτα ερευνάται ολόκληρο το κρυπτογραφημένο μήνυμα μέχρι να βρεθεί κομμάτι του που να ταιριάζει με κάποιο από τα προϋπολογισμένα. Σε περίπτωση που η έρευνα έχει επιτυχία, τότε το κλειδί που χρησιμοποιήθηκε για την κρυπτογράφηση ολόκληρου του μηνύματος έχει βρεθεί.

Το SSL δεν απειλείται από αυτήν την επίθεση αφού τα κλειδιά των αλγορίθμων του είναι πολύ μεγάλα των 128 bit. Ακόμα και οι αλγόριθμοι σε εξαγόμενα προϊόντα, υποστηρίζουν 128 bit κλειδιά και παρ’ όλο που τα 88 bit αυτών μεταδίδονται ανασφάλιστα, ο υπολογισμός 240 διαφορετικών ακολουθιών κάνει την επίθεση αδύνατο να επιτύχει.

Brute Force Attack

Η επίθεση αυτή πραγματοποιείται με την χρήση όλων των πιθανών κλειδιών για την αποκρυπτογράφηση των μηνυμάτων. Όσο πιο μεγάλα σε μήκος είναι τα χρησιμοποιούμενα κλειδιά, τόσο πιο πολλά είναι τα πιθανά κλειδιά. Τέτοια επίθεση σε αλγορίθμους που χρησιμοποιούν κλειδιά των 128 bits είναι τελείως ανούσια. Μόνο ο DES56 bit cipher είναι ευαίσθητος σε αυτήν την επίθεση, αλλά η χρήση του δεν συνιστάται.

Replay Attack

Όταν ένας τρίτος καταγράφει την ανταλλαγή μηνυμάτων μεταξύ client και server και προσπαθεί να ξανά χρησιμοποιήσει τα μηνύματα του client για να αποκτήσει πρόσβαση στον server, έχουμε την επίθεση replay attack. Όμως το SSL κάνει χρήση του connection-id, το οποίο παράγεται από τον server με τυχαίο τρόπο και διαφέρει για κάθε σύνδεση. Έτσι δεν είναι δυνατόν πότε να υπάρχουν δυο ίδια connection-id και το σύνολο των είδη χρησιμοποιημένων μηνυμάτων δεν γίνονται δεκτά από τον server. Το connection-id έχει μέγεθος 128 bit για πρόσθετη ασφάλεια.

Man-In-The-Middle-Attack

Η επίθεση Man-In-The-Middle συμβαίνει όταν ένας τρίτος είναι σε θέση να παρεμβάλλεται στην επικοινωνία μεταξύ του server και του client. Αφού επεξεργαστεί τα μηνύματα του client και τροποποιήσει όπως αυτός επιθυμεί, τα προωθεί στον server. Ομοίως πράττει για τα μηνύματα που προέρχονται από τον server. Δηλαδή, προσποιείται στον client ότι είναι ο server και αντίστροφα.

Το SSL υποχρεώνει τον server να αποδεικνύει την ταυτότητα του με την χρήση έγκυρου πιστοποιητικού του οποίου η τροποποίηση είναι αδύνατον. Μην ξεχνάμε την δυνατότητα επικοινωνίας των κλειδιών υπογεγραμμένα.

5.3.7 Αδυναμίες του SSL

Brute Force Attack Εναντίον Αδύναμων Αλγορίθμων

Η μεγαλύτερη αδυναμία του πρωτοκόλλου είναι η ευαισθησία των αλγόριθμων που χρησιμοποιούν μικρά κλειδιά. Συγκεκριμένα, οι RC4-40, RC2-40 και DES-56 εισάγουν σοβαρά προβλήματα ασφαλείας και θα πρέπει να αποφεύγονται.

Renegotiation of Session Keys (μόνο στην 2 έκδοση)

Από την στιγμή που μία σύνδεση δημιουργηθεί, το ίδιο master key χρησιμοποιείται καθ’ όλη την διάρκεια της. Όταν το SSL χρησιμοποιείται πάνω από μια μακρόχρονη σύνδεση (π.χ. μιας TELNET εφαρμογής), η αδυναμία αλλαγής του master key γίνεται επικίνδυνη. Η καλύτερη μέθοδος επίλυσης αυτού του προβλήματος είναι η επαναδιαπραγμάτευση του κλειδιού σε τακτά χρονικά διαστήματα, μειώνοντας έτσι την πιθανότητα μιας επιτυχής Brute Force Attack.

5.3.8 Χρήσεις του SSL

Η πιο κοινή του εφαρμογή είναι για την διασφάλιση HTTP επικοινωνιών μεταξύ του browser και του web server. Η ασφαλή έκδοση του HTTP χρησιμοποιεί URLs που ξεκινούν με “https” αντί του κανονικού “http” και διαφορετική πόρτα (port) που είναι η προκαθορισμένη στην 443. Ο browser αποθηκεύει τα ιδιωτικά κλειδιά του χρήστη και με κατάλληλο τρόπο υποδεικνύει την διενέργεια ασφαλών συνδέσεων.

Παρ’ όλο που μπορεί κανείς να γράψει μια εφαρμογή του SSL ακολουθώντας τα Internet drafts και RFCs, είναι προτιμότερο να χρησιμοποιήσει μία από τις υπάρχοντες βιβλιοθήκες εργαλείων του SSL (SSL toolkit Libraries). Τέτοιες βιβλιοθήκες περιέχούν ρουτίνες για κρυπτογράφηση, digestion, και διαχείριση πιστοποιητικών και διακρίνονται στις ακόλουθες:

  • SSLRef
  • SSLPlus
  • SSLava
  • SSLeay

5.3.9 Περαιτέρω Πληροφορίες

Στις ηλεκτρονικές σελίδες που ακολουθούν, αποτελούν την πηγή της παρούσας παρουσίασης. Η τελευταία από αυτές περιέχει το draft του SSL και περιλαμβάνει όλες τις λεπτομέρειες του πρωτοκόλλου.

Introducing SSL and Certificates — http://www.ultranet.com/~fhirsch/Papers/cook/ssl_intro.html#intrο

SSLP Project – The Secure Sockets Layer http://www.cs.bris.ac.uk/~bradley/publish/SSLP/chapter4.html

SSLP Project – Contents Page — http://www.cs.bris.ac.uk/~bradley/publish/SSLP/contents.html

SSL Protocol V. 3.0 — http://home.netscape.com/eng/ssl3/ssl-toc.html

Advertisements

About sooteris kyritsis

Job title: (f)PHELLOW OF SOPHIA Profession: RESEARCHER Company: ANTHROOPISMOS Favorite quote: "ITS TIME FOR KOSMOPOLITANS(=HELLINES) TO FLY IN SPACE." Interested in: Activity Partners, Friends Fashion: Classic Humor: Friendly Places lived: EN THE HIGHLANDS OF KOSMOS THROUGH THE DARKNESS OF AMENTHE
This entry was posted in Computers and Internet and tagged , , , , , , , , . Bookmark the permalink.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.