Sebab kebanyakan idea kripto berasaskan lokasi dari 2020 mati secara senyap ialah ia mempercayai GPS. GPS ialah isyarat siaran yang boleh didengar oleh mana-mana penerima, dan penerima boleh diarahkan untuk berbohong tentang apa yang didengarnya. Alat untuk melakukannya berharga kira-kira tiga puluh dolar di Amazon dan sudah begitu sejak 2015. Mana-mana protokol yang membayar dompet kerana berdiri di sesuatu koordinat, dan mengesahkannya dengan GPS sahaja, akan kerugian wang kepada dompet palsu yang duduk di atas sofa. Ia bukan serangan yang sukar mahupun bijak.

Proof of location ialah lapisan yang membaikinya. Frasa ini lebih kerap digunakan daripada ditakrifkan, jadi mari kita mulakan dengan takrifan. Proof of location ialah dakwaan, yang boleh disahkan oleh pihak yang tidak hadir, bahawa sesebuah peranti tertentu berada di koordinat tertentu dalam tempoh masa tertentu. Ia dakwaan tentang kehadiran, bukan tentang koordinat. Perbezaan itulah tempat kebanyakan kerja kejuruteraan berada.

Model ancaman. Kami tidak bertahan daripada sebuah negara; kes had tertinggi itu dibincangkan di hujung. Kami bertahan daripada penyerang biasa dengan telefon, komputer riba dan satu petang. Penyerang itu boleh memalsukan GPS dengan alat sedia ada, menjalankan aplikasi dalam emulator, dan mencipta dompet dengan satu baris kod. Mana-mana kawalan tunggal boleh dikalahkan oleh penyerang itu. Matlamat kejuruteraannya ialah menjadikan kos mengalahkan kesemuanya serentak lebih tinggi daripada ganjaran di drop itu.

Artikel ini meliputi apa yang dilakukan Seek hari ini, dalam bahasa mudah, dan apa yang akan datang. Ia sengaja lebih pendek dari sisi pemasaran dan lebih panjang tentang mekaniknya.

Lapisan satu, semasa tangkapan: pengesahan peranti. Setiap permintaan tangkapan membawa kenyataan bertandatangan daripada sistem pengendalian. Di iOS ia Apple App Attest, di Android ia Google Play Integrity. Seek mengesahkan kedua-duanya di pelayan. Pengesahan menyatakan tiga perkara dalam satu tandatangan: ini peranti sebenar, binari aplikasi tidak diusik, dan pemanggil memegang kunci yang dicipta pada peranti ini untuk aplikasi kami. Telefon yang di-root gagal. Emulator gagal. Aplikasi yang dibungkus semula untuk melangkau semakan lokasi gagal. Pengesahan tidak membuktikan di mana telefon itu; ia membuktikan telefon itu tidak berbohong tentang menjadi telefon. Itulah yang menjadikan isyarat lain berbaloi untuk dibaca.

Lapisan dua, semasa tangkapan: jarak dengan tempoh kelonggaran. Klien hanya membenarkan anda mengetik butang tangkap apabila anda berada dalam jejari kutipan spawn. Pelayan menyemak secara bebas koordinat yang anda hantar berbanding koordinat spawn, dan menerima jarak sehingga tujuh puluh lima meter. Jurang antara jejari butang dan jejari pelayan disengajakan. Ketidakstabilan GPS pada telefon yang bersandar di dinding boleh beralih beberapa meter atas sebab yang bukan salah anda, dan menolak tangkapan dalam julat itu terasa sewenang-wenangnya. Melebihi tujuh puluh lima meter, permintaan terus ditolak, tanpa pemarkahan dan tanpa rayuan di lapisan itu.

Lapisan dua, bersambung: had kadar dan had setiap spawn. Dua permintaan kutipan yang kurang lima saat jaraknya mendapat 429 daripada get berasaskan Postgres yang kekal merentasi isolat tanpa pelayan. Satu spawn menerima paling banyak dua cubaan daripada akaun yang sama, dengan cubaan kedua bernilai 65 peratus daripada yang pertama. Had ini bukan untuk mengesan penipuan; ia wujud supaya bot yang sudah mengalahkan lapisan lain tidak boleh melombong titik akhir lebih pantas daripada manusia bermain.

Lapisan tiga, semasa tangkapan: isyarat persekitaran, direkodkan tetapi tidak dikuatkuasakan. Setiap tangkapan juga membawa bendera: sama ada permintaan datang daripada simulator, sama ada Android melaporkan kedudukan datang daripada penyedia lokasi palsu, dan ketepatan GPS yang dilaporkan dalam meter. Ini direkodkan dan tidak pernah digunakan untuk menolak tangkapan itu sendiri. Klien yang berbohong tentangnya ialah klien yang anda tidak mahu membuat keputusan, jadi keputusan dibuat di tempat lain. Ia penting pada lapisan empat.

Lapisan empat, semasa pembayaran: get penipuan. Pengeluaran melalui fungsi pelayan yang membaca tangkapan sembilan puluh hari terakhir akaun itu. Jika mana-mana tangkapan itu datang daripada simulator, atau Android melaporkan penyedia palsu, atau akaun itu membuat dua tangkapan berjaya kurang sepuluh saat jaraknya, atau akaun itu bergerak antara dua koordinat tangkapan lebih pantas daripada yang mampu dilakukan manusia, atau akaun lain telah membuat pengeluaran daripada cap jari peranti yang sama, pengeluaran itu dihantar untuk semakan manusia dan bukannya diluluskan secara automatik. Pengguna tidak diberitahu isyarat mana yang tercetus, dan akaunnya terus bermain seperti biasa. Pengesanan ialah keputusan perniagaan tentang pembayaran, bukan hukuman.

Sebab memisahkan tangkapan dan pembayaran ialah kedua-duanya melindungi perkara berbeza. Lapisan tangkapan melindungi permainan. Jika tangkapan itu palsu, ia menjadi mata wang permainan yang tidak pernah keluar dari aplikasi, dan itu tidak berkos apa-apa. Lapisan pembayaran melindungi wang sebenar. Setiap dolar yang keluar dari sistem melalui semakan sembilan puluh hari tentang apa yang membawa kepada baki itu, dan satu isyarat mencurigakan dalam tempoh itu sudah cukup untuk menyerahkan keputusan kepada manusia. Bersama-sama, kedua-dua lapisan bermakna pemain sah tidak pernah menghadapi halangan pada saat tangkapan, dan penyerang yang berjaya meloloskan tangkapan palsu tidak pernah melihat wangnya.

Lapisan lima, semasa tangkapan: jejak pergerakan. Setiap telefon mempunyai meter pecutan dan giroskop pada cip yang sama yang berkomunikasi dengan GPS. Seek kini merekodkan tetingkap pergerakan yang pendek untuk beberapa saat sebelum tangkapan, mengira satu set kecil statistik (varians magnitud, aktiviti putaran, bilangan bingkai pegun), dan menghantar ringkasan itu bersama permintaan kutipan. Telefon yang berjalan ke spawn mempunyai tandatangan pergerakan yang berbeza daripada telefon yang terletak di atas meja dengan simulator GPS berjalan. Tandatangan itu tidak dikuatkuasakan pada lapisan tangkapan hari ini, atas sebab yang sama bendera persekitaran tidak dikuatkuasakan: klien yang diubah suai boleh berbohong. Ia masuk ke get penipuan sembilan puluh hari, bersama isyarat simulator dan penyedia palsu, dan jejak pergerakan yang rata dalam rekod ialah satu lagi isyarat yang menghantar pengeluaran ke semakan manusia.

Satu contoh. Seorang penguji menjalankan pemalsu GPS, menetapkan koordinat ke drop Seek di seberang bandar, dan mengetik tangkap. Semakan jarak lulus kerana koordinat palsu itu sepadan. Pengesahan peranti lulus kerana aplikasi tidak diubah suai. Tangkapan didaftarkan. Dua jam kemudian penguji yang sama membuat tiga lagi tangkapan, satu daripadanya dari koordinat lain sepuluh kilometer jauhnya. Jejak pergerakan pada keempat-empatnya rata (telefon tidak pernah bergerak), dan semakan pergerakan mustahil tercetus pada dua koordinat yang tidak mungkin dicapai dengan berjalan kaki dalam dua jam. Akaun itu terus bermain, terus mengutip, dan tidak tahu ada yang tidak kena. Apabila penguji meminta pembayaran, permintaan itu sampai ke meja semakan manusia dengan bendera pergerakan mustahil dan jejak pergerakan rata dilampirkan. Penyemak menolaknya. Baki empat puluh dolar yang dikutip penguji itu tidak akan pernah bernilai di luar aplikasi.

Rangka ekonomi. Yang penting bukanlah memalsukan tangkapan itu mustahil; tetapi get pembayaran menyemak semula segala yang dilakukan akaun itu untuk sampai kepada bakinya. Drop bernilai dua euro yang dilindungi oleh pengesahan peranti dan jarak murah untuk diserang sekali dan sia-sia untuk diserang berulang kali, kerana semakan pengeluaran mengesan corak itu sebelum corak itu menjadi wang. Drop bernilai sepuluh ribu euro memerlukan rangka yang lebih kukuh pada lapisan tangkapan, dan itulah yang dibincangkan dalam peta jalan di bawah.

Apa yang ada dalam peta jalan. Beacon sandaran untuk drop dalam bangunan ialah kawalan seterusnya yang akan tiba. Bagi spawn yang diletakkan di dalam bangunan di mana GPS tidak bermakna, beacon Bluetooth kecil yang didaftarkan pada drop itu membolehkan aplikasi membuktikan kehadiran tanpa bergantung pada kedudukan satelit langsung. Penguatkuasaan pengesahan peranti ialah landasan kedua: hari ini permintaan tanpa pengesahan dilog tetapi masih diterima, supaya kami boleh mengukur kadar penolakan palsu terhadap peranti sah sebelum menghidupkan suis dan menolaknya terus. Kedua-duanya tiba sebagai tambahan kecil, membosankan dan boleh disahkan kepada corak tangkapan dan pembayaran yang sama yang sudah digunakan.

Apa yang masih belum berfungsi dengan baik. GPS dalam bangunan tersasar sepuluh hingga lima belas meter di pusat beli-belah, dan tiada kebijaksanaan di pelayan yang boleh membaikinya; beacon ialah jawapan sebenar, sebab itu ia dalam peta jalan. Kependaman kurang sesaat tiada dan mungkin tidak akan ada, kerana get penipuan membaca sejarah dan bukan satu permintaan. Peranti boleh pakai mempunyai sensor yang lebih sedikit berbanding telefon, jadi reka bentuk proof of location yang dilaraskan untuk telefon tidak berpindah dengan mudah ke cermin mata. Dan sebuah negara dengan sebuah trak peralatan RF boleh mengalahkan mana-mana pengesah telefon mudah alih hari ini; mana-mana protokol yang mendakwa sebaliknya tidak jujur dengan anda. Protokol kami tidak akan berbuat begitu.

Prinsip reka bentuk yang patut dinyatakan dengan lantang. Pengesah patut jujur tentang apa yang boleh dan tidak boleh dibuktikannya. Membentangkan skor kebarangkalian sebagai ya atau tidak yang mutlak lebih teruk daripada membentangkan ya atau tidak yang mutlak berdasarkan peraturan ketat, kerana skor mewujudkan peluncur, dan mana-mana peluncur akan ditolak ke arah menerima lebih banyak tuntutan apabila sasaran penglibatan ketinggalan. Lapisan tangkapan kami tiada peluncur. Ia sama ada lulus semakan atau tidak. Lapisan penipuan ada peluncur, dan peluncur itu dipegang oleh manusia, bukan dalam kod.

Inilah bahagian di bawah Seek yang menjadikan aset tertambat dan airdrop yang disahkan lokasi berbaloi dilakukan. Penerbit meletakkan token bernilai wang sebenar di sesuatu koordinat kerana orang yang akhirnya memilikinya berada di koordinat itu dengan peranti yang disahkan, dan kerana get pembayaran akan menyemak semula sejarah akaun sebelum wang bergerak. Kertas putih mengandungi spesifikasi penuh. Artikel ini ialah versi bahasa mudah tentang apa yang berlaku di dalam aplikasi.

Versi ringkasnya. Kehadiran bukan koordinat. Satu isyarat tidak membuktikan kehadiran. Seek mengesahkan kehadiran dalam dua lapisan: pengesahan peranti, jarak dan jejak pergerakan pada saat tangkapan, dan get penipuan sembilan puluh hari pada saat pembayaran. Yang masih terbuka, beacon sandaran untuk drop dalam bangunan, menutup kes koordinat terakhir yang tidak dapat ditangani oleh GPS sahaja. Itulah sebenarnya proof of location dalam Seek hari ini, dan sebab lapisan itu lebih penting daripada mana-mana perkara menarik yang dimungkinkannya.