Ο λόγος που οι περισσότερες crypto ιδέες βασισμένες στην τοποθεσία του 2020 πέθαναν αθόρυβα είναι ότι εμπιστεύτηκαν το GPS. Το GPS είναι ένα σήμα εκπομπής που μπορεί να ακούσει κάθε δέκτης, και ένας δέκτης μπορεί να πειστεί να πει ψέματα για το τι άκουσε. Τα εργαλεία για να γίνει αυτό κοστίζουν περίπου τριάντα δολάρια στο Amazon και κοστίζουν τόσο από το 2015. Κάθε πρωτόκολλο που πληρώνει ένα πορτοφόλι επειδή στέκεται σε μια συντεταγμένη, και επαληθεύει αυτή την παρουσία μόνο με GPS, χάνει χρήματα σε ψεύτικα πορτοφόλια που στέκονται σε καναπέδες. Δεν είναι ούτε δύσκολη ούτε έξυπνη επίθεση.
Η απόδειξη τοποθεσίας είναι το επίπεδο που το διορθώνει. Η φράση χρησιμοποιείται περισσότερο από όσο ορίζεται, οπότε ας ξεκινήσουμε με έναν ορισμό. Απόδειξη τοποθεσίας είναι ένας ισχυρισμός, επαληθεύσιμος από κάποιον που δεν ήταν παρών, ότι μια συγκεκριμένη συσκευή βρισκόταν σε μια συγκεκριμένη συντεταγμένη μέσα σε ένα συγκεκριμένο χρονικό παράθυρο. Είναι ισχυρισμός για την παρουσία, όχι για τη συντεταγμένη. Σε αυτή τη διάκριση βρίσκεται το μεγαλύτερο μέρος της μηχανικής.
Το μοντέλο απειλών. Δεν αμυνόμαστε απέναντι σε ένα κράτος· αυτή η ακραία περίπτωση έρχεται στο τέλος. Αμυνόμαστε απέναντι στον μέσο επιτιθέμενο με ένα κινητό, ένα laptop και ένα απόγευμα. Αυτός ο επιτιθέμενος μπορεί να παραποιήσει το GPS με ένα έτοιμο εργαλείο, να τρέξει την εφαρμογή σε emulator και να φτιάξει ένα πορτοφόλι με μία γραμμή κώδικα. Κάθε μεμονωμένος έλεγχος μπορεί να νικηθεί από αυτόν τον επιτιθέμενο. Ο μηχανικός στόχος είναι το κόστος του να τους νικήσει όλους μαζί να είναι μεγαλύτερο από την ανταμοιβή στο drop.
Αυτό το κείμενο καλύπτει τι κάνει σήμερα το Seek, με απλά λόγια, και τι έρχεται. Είναι σκόπιμα πιο σύντομο στο κομμάτι του marketing και πιο μεγάλο στη μηχανική.
Επίπεδο ένα, τη στιγμή του πιασίματος: πιστοποίηση συσκευής. Κάθε αίτημα πιασίματος φέρει μια υπογεγραμμένη δήλωση από το λειτουργικό σύστημα. Στο iOS αυτό είναι το Apple App Attest, στο Android το Google Play Integrity. Το Seek επαληθεύει και τα δύο στον server. Η πιστοποίηση λέει τρία πράγματα σε μία υπογραφή: αυτή είναι πραγματική συσκευή, το εκτελέσιμο της εφαρμογής δεν έχει παραποιηθεί και αυτός που καλεί κατέχει ένα κλειδί που δημιουργήθηκε σε αυτή τη συσκευή για το δικό μας bundle. Ένα κινητό με root αποτυγχάνει. Ένας emulator αποτυγχάνει. Μια ξαναπακεταρισμένη εφαρμογή που παρέκαμψε τον έλεγχο τοποθεσίας αποτυγχάνει. Η πιστοποίηση δεν αποδεικνύει πού είναι το κινητό· αποδεικνύει ότι το κινητό δεν λέει ψέματα ότι είναι κινητό. Αυτό είναι που κάνει τα άλλα σήματα να αξίζουν να διαβαστούν.
Επίπεδο δύο, τη στιγμή του πιασίματος: απόσταση με περιθώριο ανοχής. Ο client σε αφήνει να πατήσεις το κουμπί πιασίματος μόνο όταν είσαι μέσα στην ακτίνα συλλογής του spawn. Ο server ελέγχει ανεξάρτητα τις συντεταγμένες που έστειλες σε σχέση με τις συντεταγμένες του spawn και δέχεται απόσταση έως εβδομήντα πέντε μέτρα. Το κενό ανάμεσα στην ακτίνα του κουμπιού και στην ακτίνα του server είναι σκόπιμο. Η διακύμανση του GPS σε ένα κινητό που ακουμπά σε έναν τοίχο μπορεί να μετακινηθεί μερικά μέτρα για λόγους που δεν φταις εσύ, και η απόρριψη πιασιμάτων μέσα σε αυτή τη διακύμανση μοιάζει αυθαίρετη. Πέρα από τα εβδομήντα πέντε μέτρα το αίτημα απορρίπτεται κατευθείαν, χωρίς βαθμολόγηση και χωρίς έφεση σε αυτό το επίπεδο.
Επίπεδο δύο, συνέχεια: όρια ρυθμού και ανώτατα όρια ανά spawn. Δύο αιτήματα συλλογής με διαφορά μικρότερη από πέντε δευτερόλεπτα παίρνουν 429 από μια πύλη που στηρίζεται στην Postgres και επιβιώνει ανάμεσα σε serverless isolates. Ένα spawn δέχεται το πολύ δύο προσπάθειες από τον ίδιο λογαριασμό, με τη δεύτερη να αξίζει το 65 τοις εκατό της πρώτης. Αυτά τα όρια δεν υπάρχουν για τον εντοπισμό απάτης· υπάρχουν ώστε ένα bot που έχει ήδη νικήσει τα άλλα επίπεδα να μην μπορεί να εξορύσσει το endpoint πιο γρήγορα από όσο μπορεί να παίξει ένας άνθρωπος.
Επίπεδο τρία, τη στιγμή του πιασίματος: σήματα περιβάλλοντος, που καταγράφονται αλλά δεν επιβάλλονται. Κάθε πιάσιμο φέρει επίσης σημαίες: αν το αίτημα ήρθε από προσομοιωτή, αν το Android ανέφερε ότι η θέση ήρθε από πάροχο ψεύτικης τοποθεσίας και την αναφερόμενη ακρίβεια του GPS σε μέτρα. Αυτά καταγράφονται και δεν χρησιμοποιούνται ποτέ για να απορριφθεί το ίδιο το πιάσιμο. Ένας client που λέει ψέματα γι' αυτά είναι ακριβώς ο client που δεν θέλεις να παίρνει την απόφαση, οπότε η απόφαση παίρνεται αλλού. Μετράνε στο επίπεδο τέσσερα.
Επίπεδο τέσσερα, τη στιγμή της πληρωμής: η πύλη απάτης. Οι αναλήψεις περνούν από μια συνάρτηση στον server που διαβάζει τα πιασίματα των τελευταίων ενενήντα ημερών του λογαριασμού. Αν κάποιο από αυτά ήρθε από προσομοιωτή, ή το Android ανέφερε πάροχο ψεύτικης τοποθεσίας, ή ο λογαριασμός έκανε δύο επιτυχημένα πιασίματα με διαφορά μικρότερη από δέκα δευτερόλεπτα, ή ο λογαριασμός μετακινήθηκε ανάμεσα σε δύο συντεταγμένες πιασίματος πιο γρήγορα από όσο μπορεί να ταξιδέψει ένας άνθρωπος, ή ένας άλλος λογαριασμός έχει κάνει ανάληψη από το ίδιο αποτύπωμα συσκευής, η ανάληψη πηγαίνει σε ανθρώπινο έλεγχο αντί να εγκριθεί αυτόματα. Ο χρήστης δεν μαθαίνει ποιο συρματάκι ενεργοποιήθηκε και ο λογαριασμός του συνεχίζει να παίζει κανονικά. Ο εντοπισμός είναι επιχειρηματική απόφαση για τις πληρωμές, όχι τιμωρία.
Ο λόγος που χωρίζονται πιάσιμο και πληρωμή είναι ότι προστατεύουν διαφορετικά πράγματα. Το επίπεδο του πιασίματος προστατεύει το παιχνίδι. Αν το πιάσιμο ήταν δόλιο, γίνεται νόμισμα παιχνιδιού που δεν φεύγει ποτέ από την εφαρμογή, κάτι που δεν κοστίζει τίποτα. Το επίπεδο της πληρωμής προστατεύει πραγματικά χρήματα. Κάθε δολάριο που φεύγει από το σύστημα περνά από τον έλεγχο ενενήντα ημερών όσων οδήγησαν στο υπόλοιπο, και ένα μόνο ύποπτο σήμα σε αυτό το παράθυρο αρκεί για να δοθεί η απόφαση σε άνθρωπο. Τα δύο επίπεδα μαζί σημαίνουν ότι ένας νόμιμος παίκτης δεν βλέπει ποτέ τριβή τη στιγμή του πιασίματος, και ένας επιτιθέμενος που πέρασε ένα κακό πιάσιμο δεν βλέπει ποτέ τα χρήματα.
Επίπεδο πέντε, τη στιγμή του πιασίματος: ίχνος κίνησης. Κάθε κινητό έχει ένα επιταχυνσιόμετρο και ένα γυροσκόπιο στο ίδιο chip που μιλάει με το GPS. Το Seek καταγράφει πλέον ένα σύντομο παράθυρο κίνησης για τα δευτερόλεπτα πριν από ένα πιάσιμο, υπολογίζει ένα μικρό σύνολο στατιστικών (διακύμανση μεγέθους, περιστροφική δραστηριότητα, αριθμός ακίνητων καρέ) και στέλνει αυτή τη σύνοψη μαζί με το αίτημα συλλογής. Ένα κινητό που περπάτησε ως ένα spawn έχει διαφορετική υπογραφή κίνησης από ένα κινητό που κάθεται σε ένα γραφείο με έναν προσομοιωτή GPS να τρέχει. Η υπογραφή δεν επιβάλλεται σήμερα στο επίπεδο του πιασίματος, για τον ίδιο λόγο που δεν επιβάλλονται οι σημαίες περιβάλλοντος: ένας τροποποιημένος client μπορεί να πει ψέματα. Μπαίνει στην πύλη απάτης των ενενήντα ημερών, δίπλα στα σήματα προσομοιωτή και ψεύτικης τοποθεσίας, και ένα επίπεδο ίχνος κίνησης στο αρχείο είναι άλλο ένα συρματάκι που στέλνει μια ανάληψη σε ανθρώπινο έλεγχο.
Ένα παράδειγμα βήμα βήμα. Ένας δοκιμαστής τρέχει ένα εργαλείο παραποίησης GPS, ορίζει τη συντεταγμένη σε ένα drop του Seek στην άλλη άκρη της πόλης και πατά πιάσιμο. Ο έλεγχος απόστασης περνά γιατί η παραποιημένη συντεταγμένη ταιριάζει. Η πιστοποίηση περνά γιατί η εφαρμογή δεν έχει τροποποιηθεί. Το πιάσιμο καταγράφεται. Δύο ώρες αργότερα ο ίδιος δοκιμαστής κάνει άλλα τρία πιασίματα, ένα από αυτά από διαφορετική συντεταγμένη δέκα χιλιόμετρα μακριά. Το ίχνος κίνησης και στα τέσσερα είναι επίπεδο (το κινητό δεν κουνήθηκε ποτέ) και ο έλεγχος αδύνατης μετακίνησης ενεργοποιείται για τις δύο συντεταγμένες που δεν θα μπορούσαν να προσεγγιστούν με τα πόδια σε δύο ώρες. Ο λογαριασμός συνεχίζει να παίζει, συνεχίζει να μαζεύει και δεν ξέρει ότι κάτι δεν πάει καλά. Όταν ο δοκιμαστής ζητά πληρωμή, αυτή φτάνει σε ένα γραφείο ανθρώπινου ελέγχου με επισυναπτόμενες τη σημαία αδύνατης μετακίνησης και το επίπεδο ίχνος κίνησης. Ο ελεγκτής την απορρίπτει. Τα σαράντα δολάρια μαζεμένου υπολοίπου του δοκιμαστή δεν αξίζουν ποτέ τίποτα έξω από την εφαρμογή.
Το οικονομικό πλαίσιο. Αυτό που μετράει δεν είναι ότι η παραποίηση του ίδιου του πιασίματος είναι αδύνατη· είναι ότι η πύλη πληρωμής ξαναδιαβάζει όλα όσα έκανε ο λογαριασμός για να φτάσει στο υπόλοιπο. Ένα drop αξίας δύο ευρώ που προστατεύεται από πιστοποίηση και απόσταση είναι φτηνό να δεχτεί επίθεση μία φορά και άσκοπο να δέχεται επανειλημμένα, γιατί ο έλεγχος ανάληψης πιάνει το μοτίβο πριν το μοτίβο γίνει χρήμα. Ένα drop αξίας δέκα χιλιάδων ευρώ χρειάζεται ισχυρότερο πλαίσιο στο επίπεδο του πιασίματος, και γι' αυτό μιλάει το roadmap παρακάτω.
Τι είναι στο roadmap. Η εναλλακτική λύση με beacon για drops σε εσωτερικούς χώρους είναι ο επόμενος έλεγχος που έρχεται. Για ένα spawn μέσα σε ένα κτίριο όπου το GPS δεν έχει νόημα, ένα μικρό beacon Bluetooth καταχωρημένο στο drop επιτρέπει στην εφαρμογή να αποδείξει την παρουσία χωρίς να εξαρτάται καθόλου από τη θέση του δορυφόρου. Η επιβολή της πιστοποίησης είναι το δεύτερο μέτωπο: σήμερα τα αιτήματα χωρίς πιστοποίηση καταγράφονται αλλά γίνονται ακόμα δεκτά, ώστε να μετρήσουμε το ποσοστό λανθασμένων απορρίψεων σε νόμιμες συσκευές πριν γυρίσουμε τον διακόπτη και τα απορρίψουμε κατευθείαν. Και τα δύο έρχονται ως μικρές, βαρετές, επαληθεύσιμες προσθήκες στο ίδιο μοτίβο πιασίματος και πληρωμής που ήδη χρησιμοποιείται.
Τι ακόμα δεν λειτουργεί καλά. Το GPS σε εσωτερικούς χώρους αποκλίνει δέκα έως δεκαπέντε μέτρα σε ένα εμπορικό κέντρο, και καμία εξυπνάδα στον server δεν το διορθώνει· η πραγματική απάντηση είναι ένα beacon, γι' αυτό είναι στο roadmap. Καθυστέρηση κάτω από ένα δευτερόλεπτο δεν υπάρχει και μάλλον δεν θα υπάρξει, γιατί η πύλη απάτης διαβάζει ιστορικό και όχι ένα μεμονωμένο αίτημα. Τα wearables έχουν μικρότερη στοίβα αισθητήρων από τα κινητά, οπότε ένας σχεδιασμός απόδειξης τοποθεσίας ρυθμισμένος για κινητά δεν μεταφέρεται καθαρά σε γυαλιά. Και ένα κράτος με ένα φορτηγό εξοπλισμό ραδιοσυχνοτήτων μπορεί να νικήσει σήμερα οποιονδήποτε επαληθευτή για κινητά· όποιο πρωτόκολλο ισχυρίζεται το αντίθετο δεν είναι ειλικρινές μαζί σου. Το δικό μας δεν θα το κάνει.
Η αρχή σχεδιασμού που αξίζει να ειπωθεί φωναχτά. Ένας επαληθευτής πρέπει να είναι ειλικρινής για το τι μπορεί και τι δεν μπορεί να αποδείξει. Το να παρουσιάζεις έναν πιθανοτικό βαθμό ως απόλυτο ναι ή όχι είναι χειρότερο από το να παρουσιάζεις ένα απόλυτο ναι ή όχι από αυστηρούς κανόνες, γιατί ένας βαθμός δημιουργεί έναν ρυθμιστή, και κάθε ρυθμιστής σπρώχνεται προς την αποδοχή περισσότερων διεκδικήσεων όταν οι στόχοι συμμετοχής μένουν πίσω. Το επίπεδο του πιασίματος δεν έχει ρυθμιστή. Είτε περνά τους ελέγχους είτε όχι. Το επίπεδο της απάτης έχει ρυθμιστή, και αυτός ο ρυθμιστής βρίσκεται στα χέρια ενός ανθρώπου, όχι στον κώδικα.
Αυτό είναι το κομμάτι κάτω από το Seek που κάνει τα αγκυρωμένα αντικείμενα και τα airdrop με επαλήθευση τοποθεσίας να αξίζουν τον κόπο. Ένας εκδότης τοποθετεί ένα token με πραγματική αξία σε μια συντεταγμένη επειδή αυτός που θα καταλήξει να το έχει βρισκόταν σε εκείνη τη συντεταγμένη με μια πιστοποιημένη συσκευή, και επειδή η πύλη πληρωμής θα ξαναδιαβάσει το ιστορικό του λογαριασμού πριν μετακινηθούν τα χρήματα. Το whitepaper έχει την πλήρη προδιαγραφή. Αυτό το κείμενο είναι η εκδοχή σε απλή γλώσσα του τι συμβαίνει μέσα στην εφαρμογή.
Με λίγα λόγια. Η παρουσία δεν είναι συντεταγμένη. Ένα μόνο σήμα δεν αποδεικνύει παρουσία. Το Seek επαληθεύει την παρουσία σε δύο επίπεδα: πιστοποίηση, απόσταση και ίχνος κίνησης τη στιγμή του πιασίματος, και μια πύλη απάτης ενενήντα ημερών τη στιγμή της πληρωμής. Αυτό που μένει ανοιχτό, η εναλλακτική με beacon για drops σε εσωτερικούς χώρους, κλείνει την τελευταία περίπτωση συντεταγμένης που το GPS μόνο του δεν μπορεί. Αυτό είναι στην πραγματικότητα η απόδειξη τοποθεσίας μέσα στο Seek σήμερα, και γι' αυτό αυτό το επίπεδο μετράει περισσότερο από οποιοδήποτε από τα πιο εντυπωσιακά πράγματα που επιτρέπει.


