Arsyeja pse shumica e ideve kripto të bazuara në vendndodhje nga 2020 vdiqën në heshtje është se i besuan GPS-it. GPS është një sinjal i transmetuar që çdo marrës mund ta dëgjojë, dhe një marrësi mund t'i thuhet të gënjejë për atë që dëgjoi. Mjetet për ta bërë këtë kushtojnë rreth tridhjetë dollarë në Amazon dhe kështu ka qenë që nga 2015. Çdo protokoll që paguan një portofol për të qëndruar në një koordinatë, dhe e verifikon qëndrimin vetëm me GPS, humb para nga portofola të rremë që qëndrojnë mbi divane. Nuk është as sulm i vështirë, as i zgjuar.
Prova e vendndodhjes është shtresa që e rregullon këtë. Shprehja përdoret më shumë sesa përkufizohet, prandaj le të fillojmë me një përkufizim. Prova e vendndodhjes është një pretendim, i verifikueshëm nga një palë që nuk ishte e pranishme, se një pajisje specifike ishte në një koordinatë specifike brenda një dritareje specifike kohore. Është një pretendim për praninë, jo për koordinatën. Ky dallim është aty ku ndodhet shumica e inxhinierisë.
Modeli i kërcënimit. Nuk po mbrohemi nga një shtet; ai rast ekstrem vjen në fund. Po mbrohemi nga sulmuesi mesatar me një telefon, një laptop dhe një pasdite. Ai sulmues mund ta falsifikojë GPS-in me një mjet të gatshëm, ta ekzekutojë aplikacionin në një emulator dhe të krijojë një portofol me një rresht kodi. Çdo kontroll i vetëm mund të mposhtet nga ai sulmues. Qëllimi inxhinierik është që kostoja e mposhtjes së të gjithëve bashkë të jetë më e lartë se shpërblimi në drop.
Ky shkrim mbulon atë që bën Seek sot, me fjalë të thjeshta, dhe atë që po vjen. Është qëllimisht më i shkurtër në anën e marketingut dhe më i gjatë në mekanikë.
Shtresa e parë, në momentin e kapjes: vërtetimi i pajisjes. Çdo kërkesë kapjeje mban një deklaratë të nënshkruar nga sistemi operativ. Në iOS kjo është Apple App Attest, në Android Google Play Integrity. Seek i verifikon të dyja në server. Vërtetimi thotë tri gjëra me një nënshkrim: kjo është një pajisje reale, skedari binar i aplikacionit nuk është ndryshuar dhe thirrësi mban një çelës që u krijua në këtë pajisje për paketën tonë. Një telefon me root dështon. Një emulator dështon. Një aplikacion i ripaketuar që anashkaloi kontrollin e vendndodhjes dështon. Vërtetimi nuk provon ku është telefoni; provon që telefoni nuk po gënjen se është telefon. Kjo është ajo që i bën sinjalet e tjera të vlejnë të lexohen.
Shtresa e dytë, në momentin e kapjes: distanca me një dritare tolerance. Klienti të lejon të prekësh butonin e kapjes vetëm kur je brenda rrezes së mbledhjes së spawn-it. Serveri kontrollon në mënyrë të pavarur koordinatat që dërgove kundrejt koordinatave të spawn-it dhe pranon deri në shtatëdhjetë e pesë metra ndarje. Hendeku mes rrezes së butonit dhe rrezes së serverit është i qëllimshëm. Lëkundja e GPS-it te një telefon i mbështetur në mur mund të zhvendoset disa metra për arsye që nuk janë faji yt, dhe refuzimi i kapjeve brenda asaj lëkundjeje duket arbitrar. Përtej shtatëdhjetë e pesë metrave kërkesa refuzohet menjëherë, pa vlerësim dhe pa ankesë në atë shtresë.
Shtresa e dytë, vazhdim: kufijtë e shpejtësisë dhe kufijtë për spawn. Dy kërkesa mbledhjeje me më pak se pesë sekonda ndërmjet marrin një 429 nga një portë e mbështetur në Postgres që u mbijeton izolateve serverless. Një spawn i vetëm pranon më së shumti dy përpjekje nga e njëjta llogari, me përpjekjen e dytë që vlen 65 përqind të së parës. Këta kufij nuk janë për zbulimin e mashtrimit; janë aty që një bot që i ka mposhtur tashmë shtresat e tjera të mos e shfrytëzojë endpoint-in më shpejt se sa mund të luajë një person.
Shtresa e tretë, në momentin e kapjes: sinjalet e mjedisit, të regjistruara por jo të zbatuara. Çdo kapje mban gjithashtu flamuj: nëse kërkesa erdhi nga një simulator, nëse Android raportoi që pozicioni vinte nga një ofrues vendndodhjeje i rremë, dhe saktësinë e raportuar të GPS në metra. Këto regjistrohen dhe nuk përdoren kurrë për të refuzuar vetë kapjen. Një klient që gënjen për to është pikërisht klienti që nuk dëshiron ta lësh të marrë vendimin, prandaj vendimi merret gjetkë. Ato kanë rëndësi në shtresën e katërt.
Shtresa e katërt, në momentin e pagesës: porta e mashtrimit. Tërheqjet kalojnë përmes një funksioni në server që lexon nëntëdhjetë ditët e fundit të kapjeve të llogarisë. Nëse ndonjë nga ato kapje erdhi nga një simulator, ose Android raportoi një ofrues të rremë, ose llogaria bëri dy kapje të suksesshme me më pak se dhjetë sekonda ndërmjet, ose llogaria lëvizi mes dy koordinatave të kapjes më shpejt se sa mund të udhëtojë një person, ose një llogari tjetër ka tërhequr nga e njëjta gjurmë pajisjeje, tërheqja dërgohet për shqyrtim njerëzor në vend që të miratohet automatikisht. Përdoruesit nuk i thuhet cili tel u prek, dhe llogaria e tij vazhdon të luajë normalisht. Zbulimi është një vendim biznesi për pagesat, jo ndëshkim.
Arsyeja për ndarjen e kapjes nga pagesa është se ato mbrojnë gjëra të ndryshme. Shtresa e kapjes mbron lojën. Nëse kapja ishte mashtruese, ajo kthehet në monedhë loje që nuk del kurrë nga aplikacioni, gjë që nuk kushton asgjë. Shtresa e pagesës mbron paratë reale. Çdo dollar që del nga sistemi kalon përmes shqyrtimit nëntëdhjetëditor të asaj që çoi te bilanci, dhe një sinjal i vetëm i dyshimtë në atë dritare mjafton për t'ia kaluar vendimin një njeriu. Të dyja shtresat bashkë do të thonë që një lojtar legjitim nuk has kurrë pengesa në momentin e kapjes, dhe një sulmues që arriti të kalojë një kapje të keqe nuk i sheh kurrë paratë.
Shtresa e pestë, në momentin e kapjes: gjurma e lëvizjes. Çdo telefon ka një akselerometër dhe një xhiroskop në të njëjtin çip që komunikon me GPS-in. Seek tani regjistron një dritare të shkurtër lëvizjeje për sekondat para një kapjeje, llogarit një grup të vogël statistikash (variancën e madhësisë, aktivitetin rrotullues, numrin e kuadrove të palëvizshme) dhe e dërgon atë përmbledhje me kërkesën e mbledhjes. Një telefon që eci deri te një spawn ka një nënshkrim lëvizjeje të ndryshëm nga një telefon që rri mbi një tavolinë me një simulator GPS në punë. Nënshkrimi nuk zbatohet sot në shtresën e kapjes, për të njëjtën arsye si flamujt e mjedisit: një klient i modifikuar mund të gënjejë. Ai shkon në portën nëntëdhjetëditore të mashtrimit, bashkë me sinjalet e simulatorit dhe të ofruesit të rremë, dhe një gjurmë lëvizjeje e sheshtë në regjistër është edhe një tel që ia kalon një tërheqje shqyrtimit njerëzor.
Një shembull praktik. Një testues ekzekuton një falsifikues GPS, e vendos koordinatën te një drop Seek në anën tjetër të qytetit dhe prek kapjen. Kontrolli i distancës kalon sepse koordinata e falsifikuar përputhet. Vërtetimi kalon sepse aplikacioni nuk është modifikuar. Kapja regjistrohet. Dy orë më vonë i njëjti testues bën edhe tri kapje, njëra prej tyre nga një koordinatë dhjetë kilometra larg. Gjurma e lëvizjes në të katra është e sheshtë (telefoni nuk lëvizi kurrë), dhe kontrolli i lëvizjes së pamundur aktivizohet për dy koordinatat që nuk mund të arriheshin në këmbë brenda dy orësh. Llogaria vazhdon të luajë, vazhdon të mbledhë dhe nuk e di që diçka nuk shkon. Kur testuesi kërkon një pagesë, ajo përfundon në tavolinën e shqyrtimit njerëzor me flamurin e lëvizjes së pamundur dhe gjurmën e sheshtë të lëvizjes bashkëngjitur. Shqyrtuesi e refuzon. Dyzet dollarët e bilancit të mbledhur të testuesit nuk vlejnë kurrë asgjë jashtë aplikacionit.
Korniza ekonomike. Ajo që ka rëndësi nuk është që falsifikimi i vetë kapjes të jetë i pamundur; është që porta e pagesës lexon mbrapsht gjithçka që bëri llogaria për të arritur te bilanci. Një drop me vlerë dy euro i mbrojtur nga vërtetimi dhe distanca është i lirë për t'u sulmuar një herë dhe i pakuptimtë për t'u sulmuar vazhdimisht, sepse kontrolli i tërheqjes e kap modelin para se modeli të bëhet para. Një drop me vlerë dhjetë mijë euro ka nevojë për një kornizë më të fortë në shtresën e kapjes, për të cilën flet harta e rrugës më poshtë.
Çfarë është në hartën e rrugës. Kontrolli i ardhshëm që vjen është beacon-i rezervë për drop-et në ambiente të brendshme. Për një spawn të vendosur brenda një ndërtese ku GPS-i nuk ka kuptim, një beacon i vogël Bluetooth i regjistruar për drop-in i lejon aplikacionit të provojë praninë pa u varur fare nga pozicioni satelitor. Zbatimi i vërtetimit është rruga e dytë: sot kërkesat pa vërtetim regjistrohen por pranohen ende, që të mund të matim shkallën e refuzimeve të gabuara kundrejt pajisjeve legjitime para se ta ndezim çelësin dhe t'i refuzojmë menjëherë. Të dyja vijnë si shtesa të vogla, të mërzitshme dhe të verifikueshme në të njëjtin model kapjeje dhe pagese që është tashmë në përdorim.
Çfarë ende nuk funksionon mirë. GPS-i në ambiente të brendshme gabon me dhjetë deri në pesëmbëdhjetë metra në një qendër tregtare, dhe asnjë zgjuarsi në server nuk e rregullon këtë; përgjigjja e vërtetë është një beacon, prandaj është në hartën e rrugës. Vonesa nën një sekondë nuk është aty dhe ndoshta nuk do të jetë, sepse porta e mashtrimit lexon historinë dhe jo një kërkesë të vetme. Pajisjet e veshshme kanë një grup më të vogël sensorësh se telefonat, kështu që një dizajn i provës së vendndodhjes i akorduar për telefona nuk kalon pa probleme te syzet. Dhe një shtet me një kamion pajisjesh RF mund ta mposhtë sot çdo verifikues telefonash mobilë; çdo protokoll që pretendon ndryshe nuk është i sinqertë me ty. I yni nuk do ta pretendojë.
Parimi i dizajnit që ia vlen të thuhet me zë të lartë. Një verifikues duhet të jetë i sinqertë për atë që mund dhe nuk mund të provojë. Paraqitja e një rezultati probabilistik si një po ose jo absolute është më e keqe se paraqitja e një po ose jo absolute nga rregulla strikte, sepse një rezultat krijon një rrëshqitës, dhe çdo rrëshqitës shtyhet drejt pranimit të më shumë kërkesave kur objektivat e angazhimit mbeten pas. Shtresa jonë e kapjes nuk ka rrëshqitës. Ose i kalon kontrollet, ose jo. Shtresa e mashtrimit ka një rrëshqitës, dhe ai rrëshqitës është në dorën e një njeriu, jo në kod.
Kjo është pjesa nën Seek që i bën asetet e ankoruara dhe airdrop-et me vendndodhje të verifikuar të vlejnë. Një publikues vendos një token me vlerë reale në një koordinatë sepse personi që e merr në fund ishte në atë koordinatë me një pajisje të vërtetuar, dhe sepse porta e pagesës do të lexojë historinë e llogarisë para se paratë të lëvizin. Whitepaper ka specifikimin e plotë. Ky shkrim është versioni në gjuhë të thjeshtë i asaj që ndodh brenda aplikacionit.
Shkurt. Prania nuk është një koordinatë. Një sinjal i vetëm nuk e provon praninë. Seek e verifikon praninë në dy shtresa: vërtetimi, distanca dhe një gjurmë lëvizjeje në momentin e kapjes, dhe një portë mashtrimi nëntëdhjetëditore në momentin e pagesës. E vetmja çështje ende e hapur, beacon-i rezervë për drop-et në ambiente të brendshme, mbyll rastin e fundit të koordinatës që GPS-i vetëm nuk mundet. Kjo është ajo që është vërtet prova e vendndodhjes brenda Seek sot, dhe është arsyeja pse shtresa ka më shumë rëndësi se çdo gjë më e shndritshme që ajo mundëson.


