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

Διαχώρισε το βήμα της αγοράς από το βήμα της συνεδρίας

Η αρχιτεκτονική Privacy Pass στο RFC 9576 δίνει το λεξιλόγιο: πελάτης, βεβαιωτής, εκδότης και προορισμός. Ο πελάτης αποδεικνύει κάποια ιδιότητα στον εκδότη και λαμβάνει διακριτικά· αργότερα παρουσιάζει ένα στον προορισμό, ο οποίος αποφασίζει αν θα το εξυπηρετήσει. Εφαρμοσμένη σε ένα VPN, η ιδιότητα που βεβαιώνεται θα μπορούσε να είναι μία μονάδα πρόσβασης.

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

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

Απόφασισε τι εξουσιοδοτεί ένα διακριτικό

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

Reuse ruleWhat it buysWhat it leaks
Single use per connectionStrongest unlinkability between sessionsFrequent reissuance, more purchase-to-use timing pairs
Bounded time windowFewer tokens, reconnects workActivity inside the window is linkable
Long-lived grantOperationally simpleBehaves like an account reference with extra steps

Διάλεξε ένα συνειδητά και γράψε δίπλα τη συμπεριφορά αστοχίας. Ένας πελάτης που δοκιμάζει ξανά με νέο δικαίωμα μετά τη λήξη του χρόνου καταναλώνει άλλη μια μονάδα, κάτι που είναι ταυτόχρονα έκπληξη στη χρέωση και σήμα ιδιωτικότητας.

Γράψε την πολιτική επαναχρησιμοποίησης και ανάκλησης

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

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

sudo grep -rIl --include='*.log' -e 'Bearer ' -e 'account_id' /var/log/vpn/

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

Όρισε επίσης τι κρατά η πύλη μετά το τέλος μιας συνεδρίας. Διάρκεια, byte και τελικό σημείο είναι χρήσιμα για τη λειτουργία, και καθένα είναι ένα κομμάτι του παζλ που θα ήθελε να έχει ένας παρατηρητής. Κράτησε σύντομη τη διάρκεια διατήρησης και σύντομη τη λίστα πεδίων, και μετά έλεγξε και τα δύο όταν μια αλλαγή αποσφαλμάτωσης προσθέσει στήλη. Κανείς δεν προσέχει ένα νέο πεδίο καταγραφής πριν μείνει εκεί έναν χρόνο.

Διατύπωσε τον ισχυρισμό και μετά τις παρατηρήσεις που μένουν

Γράψε τον ισχυρισμό ιδιωτικότητας σε μία πρόταση με τις παραδοχές του: ποιο μέρος πρέπει να είναι ανίκανο να συνδέσει ποια περιβάλλοντα, και τι συμβαίνει αν ο εκδότης και η πύλη συγκρίνουν σημειώσεις. Ένας σχεδιασμός που επιβιώνει από αυτή την πρόταση είναι αναθεωρήσιμος· ένας που περιγράφεται μόνο ως «μηδενική γνώση» δεν είναι.

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

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

Σχετικά άρθρα