Γράφει ο Βύρων Καβαλίνης*

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

Σκοπός του άρθρου αυτού είναι να παρουσιάσει τεχνικά πώς λειτουργεί ένα SSL. Μπορείτε να διαβάσετε περισσότερες πληροφορίες για τα πιστοποιητικά στο άρθρο του Γιάννη Κωνσταντινίδη.

Το SSL είναι ένα παγκόσμιο πρωτόκολλο το οποίο αναπτύχθηκε ώστε να παρέχει ασφάλεια στην μετάδοση των δεδομένων στο διαδίκτυο. Το SSL βεβαιώνει ότι τα δεδομένα που θα ανταλλαχθούν μεταξύ δύο συστημάτων (client, server) είναι αδύνατον να διαβαστούν από κάποιον τρίτο μη εξουσιοδοτημένο χρήστη.

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

Ουσιαστικά αυτό που κάνει το πιστοποιητικό είναι να κρυπτογραφεί τις πληροφορίες που λαμβάνει από τις εφαρμογές υψηλού επιπέδου και στη συνέχεια να τις μεταδίδει.

Η Netscape το 1996 κυκλοφόρησε την έκδοση 3.0 του SSL το οποίο αποτέλεσε και τη βάση για την ανάπτυξη του πρωτοκόλλου TLS το οποίο πλέον έχει αντικαταστήσει το SSL ενώ συνεχίζουμε και το αναφέρουμε σαν απλό SSL.

Πώς λειτουργεί το πιστοποιητικό

Όπως αναφέραμε και παραπάνω το πιστοποιητικό δημιουργεί μια ασφαλή σύνδεση μεταξύ δύο συστημάτων και κρυπτογραφεί τα δεδομένα ώστε να μην μπορούν να “διαβαστούν” από κάποιο τρίτο μη εξουσιοδοτημένο χρήστη. Για να γίνει η σύνδεση αυτή χρησιμοποιούνται η συμμετρική και ασύμμετρη κρυπτογράφηση.

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

Συμμετρική Κρυπτογράφηση

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

Στην περίπτωση των υπολογιστών το κλειδί είναι ένας αριθμητικός κωδικός, το μέγεθος του οποίου ορίζεται από το πόσα bits τον αποτελούν.Ο πρώτος σημαντικός αλγόριθμος για κρυπτογράφηση δεδομένων μέσω υπολογιστή ήταν ο Data Encryption Stantard (DES) που αναπτύχθηκε από την IBM στις ΗΠΑ και εγκρίθηκε για χρήση το 1970. Ο DES χρησιμοποιεί κλειδί μήκους 56-bit, που διαθέτει πάνω από 72 τετράκις εκατομμύρια πιθανούς συνδυασμούς (72.057.594.037.927.936, για την ακρίβεια).

Πλέον, ο DES έχει αντικατασταθεί από τον αλγόριθμο Advanced Encryption Standard (AES), που χρησιμοποιεί κλειδιά 128, 192 ή 256-bit. Με την αύξηση των bit και οι πιθανοί συνδυασμοί έχουν αυξηθεί υπερβολικά πολύ. Ένα κλειδί 128-bit μπορεί να έχει πάνω από 300.000.000.000.000.000.000.000.000.000.000.000 πιθανούς συνδυασμούς. Ο μεγαλύτερος υπερυπολογιστής αυτή τη στιγμή στον κόσμο θα μπορούσε θεωρητικά να σπάσει τον DES σε 2 δευτερόλεπτα ενώ θα χρειαζόταν περίπου 250 δισεκατομμύρια χρόνια για να ελέγξει όλους τους συνδυασμούς του AES-128.

Άλλοι γνωστοί αλγόριθμοι είναι οι RC4, 3DES, IDEA, CAST5, Twofish, Serpent, Blowfish.

Ασύμμετρη κρυπτογράφηση

Ένα πρόβλημα της συμμετρικής κρυπτογράφησης είναι ότι αν κάποιος θέλει να στείλει κάτι κρυπτογραφημένο θα χρειαστεί με κάποιο τρόπο να μας στείλει και ένα αντίγραφο του κλειδιού του για να μπορέσουμε να το αποκρυπτογραφήσουμε.

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

Αυτό το πρόβλημα λύνει η ασύμμετρη κρυπτογράφηση. Στην ασύμμετρη κρυπτογράφηση χρησιμοποιείται ένα public key το οποίο μπορεί μόνο να κρυπτογραφήσει την επικοινωνία η οποία μπορεί να αποκρυπτογραφηθεί μόνο με το αντίστοιχο private key το οποίο είναι αποθηκευμένο και κρυφό. Με αυτό το τρόπο μόνο ο σωστός χρήστης μπορεί να αποκρυπτογραφήσει την πληροφορία που έχει λάβει. Η συγκεκριμένη κρυπτογράφηση είναι πιο ασφαλής αλλά απαιτεί μεγαλύτερη υπολογιστική ισχύ.

Συνοπτικά χρησιμοποιούνται δύο κλειδιά:
– Το Public key, που είναι δημόσιο και μπορεί να χρησιμοποιηθεί από οποιδήποτε για την κρυπτογράφηση δεδομένων.
– Το Private key, το οποίο είναι μυστικό και συνδέεται μαθηματικά με το Public key και είναι απαραίτητο για την αποκρυπτογράφηση.

Η διαδικασία ασφαλούς σύνδεσης

Όπως αναφέραμε παραπάνω, το TLS είναι το πρωτόκολλο κρυπτογράφησης του Internet και είναι ο διάδοχος του SSL (αλλά αναφέρεται ακόμα και σήμερα σαν SSL) και υπαγορεύει τα βήματα που πρέπει να ακολουθηθούν για να πραγματοποιηθεί μια ασφαλής σύνδεση.

Τα βήματα αυτά συμπεριλαμβάνουν, μεταξύ άλλων:
– ποια στοιχεία χρειάζεται να ανταλλάξουν ο υπολογιστής μας και ο server πριν δημιουργηθεί η ασφαλής σύνδεση
– ποιος αλγόριθμος Public/Asymmetric key θα χρησιμοποιηθεί και για την κρυπτογράφηση ποιων δεδομένων
– ποιος αλγόριθμος θα χρησιμοποιηθεί για το Symmetric key
– πόσο διάστημα θα διαρκέσει η σύνδεση (session) πριν χρειαστεί να ανανεωθεί

Για να δημιουργηθεί μια κρυπτογραφημένη επικοινωνία γίνεται χρήση τόσο της ασύμμετρης κρυπτογράφησης όσο και της συμμετρικής. Αρχικά και αφού έχει γίνει η αρχική επικοινωνία του browser με τον server και έγινε η επιβεβαίωση της ύπαρξης ενεργού πιστοποιητικού ξεκινάει η ασύμμετρη κρυπτογράφηση ενώ ακολουθεί η συμμετρική.

1. Ο browser στέλνει τα στοιχεία του στο server: ποιες εκδόσεις SSL και TLS υποστηρίζει, ποιους αλγόριθμους για την κρυπτογράφηση δεδομένων, στοιχεία που αφορούν το session (πχ ημερομηνία και ώρα έναρξης) και γενικά όσα στοιχεία χρειάζεται για να γίνει η σύνδεση.
2. Ο web server της σελίδας στέλνει τα αντίστοιχα στοιχεία του όσον αφορά το SSL/TLS, τους αλγόριθμους, το session κλπ. Επίσης στέλνει το digital certificate του.
3. Ο browser ελέγχει τρία πράγματα:
α) Αν το digital certificate προέρχεται από μια πιστοποιημένη Certificate Authority,
β) αν ισχύει ακόμα και
γ) αν συνδέεται με το site που έχουμε μπει.
4. Εφόσον είναι όλα καλά ο server στέλνει ένα αντίγραφο του ασύμμετρου δημόσιου κλειδιού του (public key). Με το κλειδί αυτό μπορεί να κρυπτογραφηθεί μόνο η πληροφορία ενώ για την αποκρυπτογράφηση της χρειάζεται το private key του server που είναι κρυμμένο και ασφαλές.
5. Με το public key του server, ο client δημιουργεί ένα συμμετρικό session key το οποίο κρυπτογραφεί με αυτό και το στέλνει σε αυτόν.
6. Ο server στη συνέχεια αποκρυπτογραφεί τα δεδομένα που του έχει στείλει ο client με το private key του κι έτσι έχει πλέον το συμμετρικό session key του client.
7. Πλέον ο client και o server κρυπτογραφούν και αποκρυπτογραφούν τα δεδομένα που στέλνουν και λαμβάνουν με τη χρήση του session key που έχουν και οι δύο πλέον. Αυτό επιτρέπει ένα ασφαλές κανάλι επειδή μόνο ο client και ο server γνωρίζουν το συμμετρικό session key και μόνο γι αυτή την περίοδο σύνδεσης. Αν ο περιηγητής χρειαστεί να συνδεθεί με τον server κάποια άλλη στιγμή τότε θα δημιουργηθεί νέο session key με τον παραπάνω τρόπο.

Το πιστοποιητικό SSL θεωρείται πλέον αναπόσπαστο κομμάτι μιας σελίδας. Η Google είχε ανακοινώσει ότι όσα sites δεν διαθέτουν ενεργό πιστοποιητικό δεν θα εμφανίζονται με προτεραιότητα στις αναζητήσεις των χρηστών, μια αλλαγή ιδιαίτερα σημαντική.

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

Μπορείτε να δείτε απλά βήματα ώστε να επιβεβαιώσετε ότι το πιστοποιητικό σας λειτουργεί κανονικά εδώ.

*Ο Βύρωνας είναι απόφοιτος του τμήματος Εφαρμοσμένης Πληροφορικής και Πολυμέσων του ΤΕΙ Ηρακλείου. Εργάζεται σε εταιρεία, η οποία δραστηριοποιείται στο χώρο του Web hosting και των domain names. Ασχολείται με την ανάπτυξη ιστοσελίδων και την ασφάλεια. Στο παρελθόν, έχει ασχοληθεί με τα πιστοποιητικά SSL.