Πώς πραγματοποιείται η κρυπτογράφηση μηνυμάτων μεταξύ browser και διακομιστή;
sobes.tech AI
Απάντηση από AI
Ο κρυπτογραφικός αλγόριθμος μεταξύ του προγράμματος περιήγησης και του διακομιστή πραγματοποιείται μέσω του πρωτοκόλλου HTTPS, το οποίο αποτελεί μια επιπλέον στρώση πάνω από το HTTP χρησιμοποιώντας τα πρωτόκολλα SSL/TLS (Secure Sockets Layer / Transport Layer Security).
Η διαδικασία εγκατάστασης μιας ασφαλούς σύνδεσης (Handshake):
- Client Hello: Ο περιηγητής στέλνει στον διακομιστή ένα μήνυμα που περιέχει τις υποστηριζόμενες εκδόσεις SSL/TLS, τη λίστα των cipher suites, τους αλγόριθμους συμπίεσης και έναν τυχαίο αριθμό (από τον πελάτη).
- Server Hello: Ο διακομιστής επιλέγει την καλύτερη έκδοση πρωτοκόλλου, το σύνολο cipher και τον αλγόριθμο συμπίεσης από αυτά που προτάθηκαν από τον περιηγητή, παράγει επίσης τον δικό του τυχαίο αριθμό (από τον διακομιστή) και τον στέλνει μαζί με το πιστοποιητικό SSL/TLS στον περιηγητή.
- Αυθεντικοποίηση: Ο περιηγητής επαληθεύει το πιστοποιητικό του διακομιστή:
- Την εμπιστευτικότητα της ρίζας CA (Root CA).
- Την εγκυρότητα του πιστοποιητικού.
- Τη συμφωνία του ονόματος τομέα στο πιστοποιητικό με τη διεύθυνση της ιστοσελίδας.
- Την απουσία ακύρωσης του πιστοποιητικού στη λίστα (CRL ή OCSP).
- Premaster Secret: Ο περιηγητής δημιουργεί έναν τυχαίο αριθμό (premaster secret), τον κρυπτογραφεί με το δημόσιο κλειδί του διακομιστή (από το πιστοποιητικό) και τον στέλνει στον διακομιστή.
- Γεννήτρια κλειδιού συνεδρίας: Τόσο ο περιηγητής όσο και ο διακομιστής χρησιμοποιούν τους τυχαίους αριθμούς του πελάτη (Client Random), του διακομιστή (Server Random) και το premaster secret για να δημιουργήσουν ένα συμμετρικό κλειδί συνεδρίας.
- Change Cipher Spec: Ο περιηγητής στέλνει στον διακομιστή ένα μήνυμα που ενημερώνει για τη μετάβαση στη χρήση του δημιουργημένου κλειδιού συνεδρίας για μελλοντική επικοινωνία.
- Finished: Ο περιηγητής στέλνει στον διακομιστή ένα hash όλων των προηγούμενων μηνυμάτων του handshake, κρυπτογραφημένο με το κλειδί συνεδρίας. Αυτό το μήνυμα επαληθεύει την ορθότητα του handshake.
- Change Cipher Spec: Ο διακομιστής στέλνει στον περιηγητή ένα μήνυμα που δηλώνει τη μετάβαση σε κρυπτογραφημένη σύνδεση.
- Finished: Ο διακομιστής στέλνει στον περιηγητή ένα hash όλων των προηγούμενων μηνυμάτων του handshake, κρυπτογραφημένο με το κλειδί συνεδρίας.
Μετά την επιτυχή ολοκλήρωση του handshake, όλη η μετάδοση δεδομένων μεταξύ του προγράμματος περιήγησης και του διακομιστή πραγματοποιείται με χρήση συμμετρικής κρυπτογράφησης βάσει του δημιουργημένου κλειδιού συνεδρίας. Η συμμετρική κρυπτογράφηση είναι πολύ πιο αποδοτική από την ασυμμετρική, καθιστώντας την κατάλληλη για την κρυπτογράφηση μεγάλων όγκων δεδομένων.
Οι αλγόριθμοι που χρησιμοποιούνται (παραδείγματα):
- Ασυμμετρική κρυπτογράφηση (για την ανταλλαγή του κλειδιού συνεδρίας): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
- Συμμετρική κρυπτογράφηση (για την κρυπτογράφηση δεδομένων): AES, 3DES, ChaCha20.
- Hashing (για τον έλεγχο της ακεραιότητας των μηνυμάτων): SHA-256, SHA-384.