Razlog, da je večina kripto zamisli na podlagi lokacije iz leta 2020 tiho zamrla, je, da so zaupale GPS. GPS je oddajani signal, ki ga lahko posluša vsak sprejemnik, sprejemniku pa je mogoče naročiti, naj laže o tem, kar je slišal. Orodja za to stanejo na Amazonu približno trideset dolarjev in jih je mogoče kupiti od leta 2015. Vsak protokol, ki denarnici plača za stanje na koordinati in to stanje preveri samo z GPS, izgublja denar z lažnimi denarnicami, ki stojijo na kavčih. To ni ne težak ne zvit napad.
Dokaz lokacije je plast, ki to popravi. Izraz se uporablja pogosteje, kot se opredeli, zato začnimo z opredelitvijo. Dokaz lokacije je trditev, ki jo lahko preveri stran, ki ni bila prisotna, da je bila določena naprava v določenem časovnem oknu na določeni koordinati. To je trditev o prisotnosti, ne o koordinati. V tej razliki tiči večina inženirskega dela.
Model groženj. Ne branimo se pred državo; ta skrajni primer pride na koncu. Branimo se pred povprečnim napadalcem s telefonom, prenosnikom in popoldnevom časa. Ta napadalec lahko z orodjem s police ponaredi GPS, aplikacijo zažene v emulatorju in denarnico ustvari z eno vrstico kode. Vsak posamezen nadzor lahko ta napadalec premaga. Inženirski cilj je, da je strošek, da jih premaga vse skupaj, višji od nagrade v dropu.
Ta članek v preprostem jeziku opisuje, kaj Seek počne danes, in kaj prihaja. Namenoma je krajši pri trženju in daljši pri mehaniki.
Prva plast, ob ulovu: potrditev naprave. Vsaka zahteva za ulov vsebuje podpisano izjavo operacijskega sistema. Na iOS je to Apple App Attest, na Androidu Google Play Integrity. Seek obe preveri na strežniku. Potrditev z enim podpisom pove tri stvari: to je resnična naprava, binarna datoteka aplikacije ni bila spremenjena, klicatelj pa ima ključ, ki je bil na tej napravi ustvarjen za naš paket. Rootan telefon pade. Emulator pade. Predelana aplikacija, ki je preskočila preverjanje lokacije, pade. Potrditev ne dokaže, kje je telefon; dokaže, da telefon ne laže o tem, da je telefon. Zato je druge signale sploh vredno brati.
Druga plast, ob ulovu: razdalja z oknom tolerance. Odjemalec ti gumb za ulov pusti tapniti samo, ko si znotraj polmera zbiranja spawna. Strežnik neodvisno preveri koordinate, ki si jih poslal, glede na koordinate spawna in sprejme do petinsedemdeset metrov razlike. Razlika med polmerom gumba in polmerom strežnika je namerna. Tresenje GPS pri telefonu, naslonjenem na steno, se lahko premakne za nekaj metrov iz razlogov, za katere nisi kriv, zavračanje ulovov znotraj tega tresenja pa se zdi samovoljno. Nad petinsedemdesetimi metri je zahteva takoj zavrnjena, brez točkovanja in brez pritožbe na tej plasti.
Druga plast, nadaljevanje: omejitve hitrosti in omejitve na spawn. Dve zahtevi za zbiranje z manj kot petimi sekundami razmika dobita odgovor 429 od vrat, podprtih s Postgres, ki preživijo med izolati brez strežnika. En spawn sprejme največ dva poskusa istega računa, drugi pa je vreden 65 odstotkov prvega. Te omejitve niso za zaznavanje goljufij; tu so zato, da bot, ki je že premagal druge plasti, ne more izkoriščati končne točke hitreje, kot lahko igra človek.
Tretja plast, ob ulovu: okoljski signali, zabeleženi, a ne uveljavljeni. Vsak ulov nosi tudi zastavice: ali je zahteva prišla iz simulatorja, ali je Android sporočil, da položaj prihaja od lažnega ponudnika lokacije, in sporočeno natančnost GPS v metrih. Te se beležijo in se nikoli ne uporabijo za zavrnitev samega ulova. Odjemalec, ki o njih laže, je prav tisti, ki mu ne želiš prepustiti odločitve, zato se odločitev sprejme drugje. Pomembni so na četrti plasti.
Četrta plast, ob izplačilu: vrata za goljufije. Dvigi gredo skozi strežniško funkcijo, ki prebere zadnjih devetdeset dni ulovov računa. Če je kateri od teh ulovov prišel iz simulatorja, ali je Android sporočil lažnega ponudnika, ali je račun opravil dva uspešna ulova z manj kot desetimi sekundami razmika, ali se je račun med dvema koordinatama ulova premaknil hitreje, kot lahko potuje človek, ali pa je drug račun dvigoval z istim prstnim odtisom naprave, gre dvig v človeški pregled, namesto da bi bil samodejno odobren. Uporabniku ne povemo, katera žica se je sprožila, njegov račun pa igra normalno naprej. Zaznavanje je poslovna odločitev o izplačilih, ne kazen.
Ulov in izplačilo sta ločena, ker branita različni stvari. Plast ulova brani igro. Če je bil ulov goljufiv, postane igralna valuta, ki nikoli ne zapusti aplikacije, kar ne stane nič. Plast izplačila brani resničen denar. Vsak dolar, ki zapusti sistem, gre skozi devetdesetdnevni pregled tega, kar je vodilo do stanja, en sam sumljiv signal v tem oknu pa zadošča, da odločitev prevzame človek. Skupaj obe plasti pomenita, da legitimen igralec v trenutku ulova nikoli ne naleti na oviro, napadalec, ki mu je uspelo spraviti slab ulov skozi, pa nikoli ne vidi denarja.
Peta plast, ob ulovu: sled gibanja. Vsak telefon ima merilnik pospeška in žiroskop na istem čipu, ki komunicira z GPS. Seek zdaj beleži kratko okno gibanja v sekundah pred ulovom, izračuna majhen nabor statistik (varianco jakosti, rotacijsko dejavnost, število mirujočih sličic) in ta povzetek pošlje z zahtevo za zbiranje. Telefon, ki je hodil do spawna, ima drugačen podpis gibanja kot telefon, ki leži na mizi z zagnanim simulatorjem GPS. Podpis se danes na plasti ulova ne uveljavlja, iz istega razloga kot okoljske zastavice: popravljen odjemalec lahko laže. Gre v devetdesetdnevna vrata za goljufije, skupaj s signali simulatorja in lažnega ponudnika, ploska sled gibanja v zapisu pa je še ena žica, ki dvig preda v človeški pregled.
Primer iz prakse. Preizkuševalec zažene ponarejevalnik GPS, koordinato nastavi na drop Seek na drugem koncu mesta in tapne ulov. Preverjanje razdalje uspe, ker se ponarejena koordinata ujema. Potrditev uspe, ker aplikacija ni spremenjena. Ulov se zabeleži. Dve uri pozneje isti preizkuševalec opravi še tri ulove, enega s koordinate deset kilometrov stran. Sled gibanja je pri vseh štirih ploska (telefon se ni nikoli premaknil), preverjanje nemogočega premika pa se sproži pri koordinatah, ki ju peš v dveh urah ni bilo mogoče doseči. Račun igra naprej, zbira naprej in ne ve, da je kaj narobe. Ko preizkuševalec zahteva izplačilo, to pristane na mizi za človeški pregled z zastavico nemogočega premika in ploskim zapisom gibanja. Pregledovalec ga zavrne. Štirideset dolarjev zbranega stanja zunaj aplikacije nikoli nič ne velja.
Ekonomski okvir. Pomembno ni, da je ponarejanje samega ulova nemogoče; pomembno je, da vrata za izplačilo preberejo nazaj vse, kar je račun naredil, da je prišel do stanja. Drop, vreden dva evra, zaščiten s potrditvijo naprave in razdaljo, je poceni napasti enkrat in nesmiselno napadati večkrat, ker preverjanje dviga ujame vzorec, preden vzorec postane denar. Drop, vreden deset tisoč evrov, potrebuje močnejši okvir na plasti ulova, o čemer govori spodnji načrt razvoja.
Kaj je v načrtu razvoja. Naslednji nadzor, ki pride, je rezervni svetilnik za drope v zaprtih prostorih. Pri spawnu v stavbi, kjer je GPS brez pomena, majhen svetilnik Bluetooth, registriran na drop, aplikaciji omogoči, da dokaže prisotnost, ne da bi bila sploh odvisna od satelitskega položaja. Uveljavljanje potrditve naprave je druga smer: danes se zahteve brez potrditve beležijo, a še vedno sprejmejo, da lahko izmerimo delež napačnih zavrnitev legitimnih naprav, preden preklopimo stikalo in jih takoj zavrnemo. Obe prideta kot majhna, dolgočasna, preverljiva dodatka k istemu vzorcu ulova in izplačila, ki je že v uporabi.
Kaj še vedno ne deluje dobro. GPS v zaprtih prostorih se v nakupovalnem središču zmoti za deset do petnajst metrov, in nobena strežniška zvitost tega ne popravi; pravi odgovor je svetilnik, zato je v načrtu. Zakasnitve pod eno sekundo ni in je verjetno tudi ne bo, ker vrata za goljufije berejo zgodovino in ne ene same zahteve. Nosljive naprave imajo manjši nabor senzorjev kot telefoni, zato se zasnova dokaza lokacije, uglašena za telefone, ne prenese gladko na očala. In država s tovornjakom radijske opreme lahko danes premaga vsakega preverjevalca mobilnih telefonov; vsak protokol, ki trdi drugače, ni iskren s tabo. Naš ne bo tega trdil.
Načelo zasnove, ki ga je vredno izreči na glas. Preverjevalec bi moral biti iskren glede tega, kaj lahko dokaže in česa ne. Predstavljanje verjetnostne ocene kot absolutnega da ali ne je slabše od predstavljanja absolutnega da ali ne po strogih pravilih, ker ocena ustvari drsnik, vsak drsnik pa se potisne proti sprejemanju več zahtevkov, ko cilji angažiranosti zaostajajo. Naša plast ulova nima drsnika. Preverjanja bodisi prestane bodisi ne. Plast goljufij ima drsnik, in ta drsnik je v rokah človeka, ne v kodi.
To je del pod Seekom, zaradi katerega se zasidrana sredstva in airdropi s preverjeno lokacijo splačajo. Izdajatelj postavi žeton z resnično vrednostjo na koordinato, ker je bila oseba, ki ga na koncu dobi, na tej koordinati s potrjeno napravo, in ker bodo vrata za izplačilo prebrala zgodovino računa, preden se denar premakne. Bela knjiga vsebuje celotno specifikacijo. Ta članek je razlaga v preprostem jeziku tega, kar se dogaja v aplikaciji.
Na kratko. Prisotnost ni koordinata. En sam signal ne dokaže prisotnosti. Seek prisotnost preverja v dveh plasteh: potrditev naprave, razdalja in sled gibanja v trenutku ulova ter devetdesetdnevna vrata za goljufije v trenutku izplačila. Edini še odprt primer, rezervni svetilnik za drope v zaprtih prostorih, zapre zadnji primer koordinate, ki ga GPS sam ne more. To je dokaz lokacije v Seeku danes, in zato je ta plast pomembnejša od vseh bleščečih stvari, ki jih omogoča.


