tweaks

ECH: Η κρυπτογράφηση που κλείνει την τελευταία τρύπα του browser σας

Γιατί το DoH δεν αρκεί για πλήρη ιδιωτικότητα και πώς το Encrypted Client Hello κρύβει τα sites που επισκέπτεστε από τον πάροχο.

browser hole

Κρυπτογραφούμε την κίνηση με HTTPS, κρυπτογραφούμε και τα DNS queries με DoH ή DoT. Κι όμως, ο πάροχος δικτύου μπορεί ακόμα να δει ποια sites επισκέπτεστε. Η τελευταία διαρροή βρίσκεται μέσα στην ίδια τη σύνδεση TLS, στο πεδίο SNI, και το Encrypted Client Hello (ECH) είναι η πρόταση που τη σφραγίζει. Ας δούμε τι ακριβώς διαρρέει, γιατί τα κρυπτογραφημένα DNS δεν αρκούν, και πού βρίσκεται σήμερα η υιοθέτηση.lock

Το μονοπάτι μιας επίσκεψης, και πού διαρρέει το όνομα

Όταν ανοίγετε ένα site, συμβαίνουν τρία πράγματα όπου μπορεί να εκτεθεί το domain:

  • DNS: ο browser ρωτά «ποια είναι η IP του example.com;». Χωρίς κρυπτογράφηση, η ερώτηση ταξιδεύει σε καθαρό κείμενο.
  • TLS handshake: ο browser ξεκινά την κρυπτογραφημένη σύνδεση. Στο πρώτο μήνυμα, το Client Hello, περιλαμβάνει το SNI (Server Name Indication): το όνομα του site, σε καθαρό κείμενο, ώστε ένας server που φιλοξενεί πολλά sites στην ίδια IP να ξέρει ποιο πιστοποιητικό να στείλει.
  • Το ίδιο το πιστοποιητικό του server: παλιότερα ταξίδευε κι αυτό ακρυπτογράφητο. Στο TLS 1.3 πλέον κρυπτογραφείται.

Το DoH/DoT κλείνει το πρώτο σημείο. Το TLS 1.3 κλείνει το τρίτο. Μένει το SNI, και είναι αρκετό: όποιος παρακολουθεί το δίκτυο διαβάζει το όνομα κάθε site που ανοίγετε, ακόμη κι αν δεν βλέπει τίποτα από το περιεχόμενο.

Γιατί τα κρυπτογραφημένα DNS δεν αρκούν

Υπάρχει μια διαδεδομένη παρανόηση ότι το DoH «κρύβει τα sites». Κρύβει μόνο το DNS query. Ακόμη κι αν η επίλυση ονόματος γίνει αόρατη, το SNI στο επόμενο βήμα αποκαλύπτει το domain. Επιπλέον, η IP προορισμού είναι ορατή ούτως ή άλλως· σε έναν μικρό server με ένα site, η IP ισοδυναμεί με το domain. Το ECH αποδίδει το μέγιστο ακριβώς εκεί που πολλά sites μοιράζονται την ίδια υποδομή, όπως πίσω από ένα μεγάλο CDN.

Πώς λειτουργεί το ECH

Το ECH κρυπτογραφεί το «ευαίσθητο» εσωτερικό Client Hello, μαζί με το πραγματικό SNI, χρησιμοποιώντας ένα δημόσιο κλειδί που ο browser παίρνει εκ των προτέρων. Τρία στοιχεία συνεργάζονται:

  • Η διανομή του κλειδιού μέσω DNS: το δημόσιο κλειδί ECH δημοσιεύεται σε μια εγγραφή HTTPS (τύπου RR 65) στο DNS. Παλιότερα ο Firefox απαιτούσε ενεργό DoH για να λειτουργήσει το ECH· από τον Firefox 129 και μετά μπορεί να πάρει το ECHConfig και μέσω του DNS resolver του λειτουργικού, οπότε το ECH δουλεύει σε περισσότερες περιπτώσεις. Σε κάθε περίπτωση, κρυπτογραφημένο DNS (DoH/DoT) παραμένει η ασφαλής επιλογή: αν η ανάκτηση του κλειδιού γίνει σε καθαρό DNS, ο παρατηρητής βλέπει ξανά ποιο domain ζητήσατε.
  • Το εξωτερικό, «δημόσιο» όνομα: ο browser στέλνει ένα Client Hello με ένα κοινό, μη ευαίσθητο SNI (για παράδειγμα το όνομα του ίδιου του CDN), και μέσα του, κρυπτογραφημένο, το πραγματικό εσωτερικό Client Hello.
  • Το «κρυφό πλήθος»: ο παρατηρητής βλέπει μόνο το δημόσιο όνομα. Όλοι οι επισκέπτες χιλιάδων sites πίσω από το ίδιο CDN μοιράζονται το ίδιο εξωτερικό όνομα, οπότε το ποιο ακριβώς site ανοίξατε χάνεται μέσα στο πλήθος.

Αυτό το «πλήθος» είναι και ο λόγος που το ECH δουλεύει καλύτερα σε μεγάλους παρόχους: όσο περισσότερα sites μοιράζονται ένα front, τόσο ισχυρότερη η ανωνυμία.

Η κατάσταση σήμερα

  • Firefox: υποστηρίζει ECH από την έκδοση 98. Ελέγχεται στο about:config με το κλειδί dns.echconfig.enabled (και network.dns.http3_echconfig.enabled για HTTP/3). Από τον Firefox 129 δεν προϋποθέτει πλέον υποχρεωτικά ενεργό DoH.
  • Chrome και βασισμένοι σε Chromium: υποστήριξη ECH, με DoH ενεργό (Secure DNS).
  • Cloudflare: έχει ηγηθεί της ανάπτυξης του ECH, και το προσφέρει ευρέως. Άλλοι μεγάλοι πάροχοι βρίσκονται σε διάφορα στάδια.

Πρακτικά: για να επωφεληθείτε, χρειάζεστε browser με ECH, ενεργό DoH, και sites που εξυπηρετούνται από υποδομή που δημοσιεύει ECH config. Αν λείπει ένα από αυτά, γίνεται fallback στην κλασική, εκτεθειμένη συμπεριφορά.

Έλεγχος και όρια

Για να δείτε αν δουλεύει, ανοίξτε τη σελίδα https://crypto.cloudflare.com/cdn-cgi/trace και διαβάστε τη γραμμή sni: με ενεργό ECH γράφει sni=encrypted, αλλιώς sni=plaintext. (Η παλιά σελίδα cloudflare.com/ssl/encrypted-sni/ εξακολουθεί να υπάρχει.) Σε ένα capture με Wireshark, με ενεργό ECH το SNI στο Client Hello δεν περιέχει πια το πραγματικό domain. Προσοχή: αν χρησιμοποιείτε το WARP της Cloudflare, η ίδια η Cloudflare απενεργοποιεί το ECH στις δικές της σελίδες, οπότε ο έλεγχος μπορεί να δείξει plaintext ενώ το ECH δουλεύει αλλού.

Τα όριά του, για να έχετε ρεαλιστικές προσδοκίες:

  • Η IP προορισμού παραμένει ορατή. Το ECH κρύβει το όνομα, όχι το ότι μιλάτε με ένα συγκεκριμένο CDN.
  • Το traffic analysis παραμένει δυνατό. Τα μεγέθη και ο ρυθμός των πακέτων μπορούν, σε ορισμένες περιπτώσεις, να «μαντέψουν» το site, ανεξάρτητα από το ECH.
  • Εξαρτάται από την υιοθέτηση και από τη μη παρεμβολή. Κάποια δίκτυα έχουν στο παρελθόν μπλοκάρει νεότερες εκδόσεις TLS. Το ECH είναι τόσο ισχυρό όσο του επιτρέπει το δίκτυο ανάμεσα.

Ένα προχωρημένο σημείο: GREASE και fallback

Δύο λεπτομέρειες που αξίζουν προσοχή. Πρώτον, το ECH GREASE: ακόμη και όταν ένα site δεν υποστηρίζει ECH, ο browser μπορεί να στέλνει ένα «εικονικό» ECH extension, ώστε ο παρατηρητής να μη διακρίνει ποιος χρησιμοποιεί πραγματικά ECH και ποιος όχι. Δεύτερον, το fallback: αν το ECHConfig είναι λάθος ή ξεπερασμένο, ο Firefox μπορεί να επαναλάβει τη σύνδεση χωρίς ECH (σφάλμα SSL_ERROR_ECH_RETRY_WITHOUT_ECH), οπότε μια «πετυχημένη» φόρτωση σελίδας δεν εγγυάται ότι το SNI κρυπτογραφήθηκε. Γι’ αυτό ο πραγματικός έλεγχος γίνεται στο sni= και όχι στο αν απλώς άνοιξε το site.

Για συζήτηση στο /forum

  1. Έχετε ενεργοποιήσει ECH, και τι έδειξε ο έλεγχος της Cloudflare ή ένα δικό σας capture;
  2. Πόσο σημαντικό θεωρείτε το ECH για τον μέσο χρήστη, δεδομένου ότι η IP προορισμού μένει ορατή;
  3. Σας ανησυχεί η συγκέντρωση: η καλύτερη προστασία ECH προκύπτει πίσω από λίγους μεγάλους παρόχους. Είναι αποδεκτός αυτός ο συμβιβασμός;

0 σχόλια

iGuRu.gr
Μέλος του forum; Συμμετέχετε στη συζήτηση στο forum. Συζήτηση στο forum →

Συμμετέχετε στη συζήτηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Το μήνυμα σας δεν θα δημοσιευτεί εάν:

  1. Περιέχει υβριστικά, συκοφαντικά, ρατσιστικά, προσβλητικά ή ανάρμοστα σχόλια.
  2. Προκαλεί βλάβη σε ανηλίκους.
  3. Παρενοχλεί την ιδιωτική ζωή και τα ατομικά και κοινωνικά δικαιώματα άλλων χρηστών.
  4. Διαφημίζει προϊόντα ή υπηρεσίες ή διαδικτυακούς τόπους.
  5. Περιέχει προσωπικές πληροφορίες (διεύθυνση, τηλέφωνο κλπ).