السبب في أن معظم أفكار العملات المشفرة القائمة على الموقع من 2020 ماتت بصمت هو أنها وثقت بـ GPS. الـ GPS إشارة مُذاعة يستطيع أي مستقبِل الاستماع إليها، ويمكن إقناع المستقبِل بالكذب بشأن ما سمعه. أدوات فعل ذلك تكلّف نحو ثلاثين دولارًا على Amazon ومنذ 2015. أي بروتوكول يدفع لمحفظة مقابل الوقوف عند إحداثية، ويتحقق من الوقوف بـ GPS وحده، يخسر المال لصالح محافظ مزيفة تقف على الأرائك. ليس هجومًا صعبًا ولا ذكيًا.
إثبات الموقع هو الطبقة التي تصلح ذلك. تُستخدم العبارة أكثر مما تُعرَّف، فلنبدأ بتعريف. إثبات الموقع ادعاء، يمكن لطرف لم يكن حاضرًا التحقق منه، بأن جهازًا محددًا كان عند إحداثية محددة خلال نافذة زمنية محددة. إنه ادعاء عن الحضور، لا عن الإحداثية. وفي هذا التمييز يكمن معظم العمل الهندسي.
نموذج التهديد. نحن لا ندافع ضد دولة؛ هذه الحالة القصوى تأتي في النهاية. ندافع ضد المهاجم المتوسط الذي يملك هاتفًا وحاسوبًا محمولًا وفترة بعد ظهر. هذا المهاجم يستطيع تزييف GPS بأداة جاهزة، وتشغيل التطبيق في محاكي، وإنشاء محفظة بسطر واحد من الشيفرة. أي ضابط منفرد يمكن لهذا المهاجم هزيمته. الهدف الهندسي أن تكون تكلفة هزيمتها مجتمعة أعلى من المكافأة في الإسقاط.
يغطي هذا المقال ما يفعله Seek اليوم، بعبارات بسيطة، وما هو قادم. وهو مقتضب عمدًا في الجانب التسويقي ومسهب في الآليات.
الطبقة الأولى، لحظة الالتقاط: توثيق الجهاز. كل طلب التقاط يحمل بيانًا موقّعًا من نظام التشغيل. على iOS هو Apple App Attest، وعلى Android هو Google Play Integrity. يتحقق Seek من كليهما على الخادم. يقول التوثيق ثلاثة أشياء في توقيع واحد: هذا جهاز حقيقي، وملف التطبيق لم يُعبث به، والمتصل يملك مفتاحًا أُنشئ على هذا الجهاز لحزمتنا. الهاتف المكسور الحماية يفشل. المحاكي يفشل. التطبيق المُعاد تغليفه الذي تخطى فحص الموقع يفشل. التوثيق لا يثبت مكان الهاتف؛ بل يثبت أن الهاتف لا يكذب بشأن كونه هاتفًا. وهذا ما يجعل الإشارات الأخرى تستحق القراءة.
الطبقة الثانية، لحظة الالتقاط: المسافة مع هامش سماح. لا يسمح لك العميل بالضغط على زر الالتقاط إلا حين تكون داخل نصف قطر الجمع للظهور. ويتحقق الخادم بشكل مستقل من الإحداثيات التي أرسلتها مقابل إحداثيات الظهور، ويقبل فرقًا يصل إلى خمسة وسبعين مترًا. الفجوة بين نصف قطر الزر ونصف قطر الخادم مقصودة. تذبذب GPS على هاتف مستند إلى جدار قد ينحرف بضعة أمتار لأسباب ليست خطأك، ورفض الالتقاطات ضمن هذا التذبذب يبدو اعتباطيًا. وأبعد من خمسة وسبعين مترًا يُرفض الطلب مباشرة، دون تقييم ودون استئناف في تلك الطبقة.
الطبقة الثانية، تتمة: حدود المعدل وسقوف كل ظهور. طلبا جمع بفارق أقل من خمس ثوانٍ يتلقيان 429 من بوابة مدعومة بـ Postgres تصمد عبر نسخ الخوادم عديمة الحالة. الظهور الواحد يقبل محاولتين كحد أقصى من الحساب نفسه، والمحاولة الثانية تساوي 65 بالمئة من الأولى. هذه السقوف ليست لكشف الاحتيال؛ بل موجودة لكي لا يستطيع روبوت تجاوز الطبقات الأخرى أن يستنزف نقطة الوصول أسرع مما يستطيع إنسان اللعب.
الطبقة الثالثة، لحظة الالتقاط: إشارات البيئة، تُسجَّل ولا تُفرض. كل التقاط يحمل أيضًا مؤشرات: ما إذا كان الطلب قد جاء من محاكي، وما إذا أبلغ Android أن الموقع صادر عن مزوّد موقع وهمي، ودقة GPS المُبلَّغ عنها بالأمتار. تُسجَّل هذه ولا تُستخدم أبدًا لرفض الالتقاط نفسه. العميل الذي يكذب بشأنها هو بالضبط العميل الذي لا تريده أن يتخذ القرار، لذا يُتخذ القرار في مكان آخر. وأهميتها تظهر في الطبقة الرابعة.
الطبقة الرابعة، لحظة الصرف: بوابة الاحتيال. تمر عمليات السحب عبر دالة على الخادم تقرأ التقاطات الحساب خلال آخر تسعين يومًا. إذا جاء أي من تلك الالتقاطات من محاكي، أو أبلغ Android عن مزوّد وهمي، أو قام الحساب بالتقاطين ناجحين بفارق أقل من عشر ثوانٍ، أو انتقل الحساب بين إحداثيتي التقاط أسرع مما يستطيع إنسان التنقل، أو سحب حساب آخر من بصمة الجهاز نفسها، يُحوَّل السحب إلى مراجعة بشرية بدل الموافقة التلقائية. لا يُخبَر المستخدم أي إنذار انطلق، ويواصل حسابه اللعب بشكل طبيعي. الكشف قرار تجاري بشأن الصرف، لا عقوبة.
سبب الفصل بين الالتقاط والصرف أنهما يدافعان عن أشياء مختلفة. طبقة الالتقاط تدافع عن اللعبة. إذا كان الالتقاط احتياليًا فإنه يتحول إلى عملة لعبة لا تغادر التطبيق أبدًا، وهذا لا يكلّف شيئًا. أما طبقة الصرف فتدافع عن المال الحقيقي. كل دولار يغادر النظام يمر عبر مراجعة التسعين يومًا لما أدى إلى الرصيد، وإشارة مشبوهة واحدة في تلك النافذة تكفي لتسليم القرار إلى إنسان. الطبقتان معًا تعنيان أن اللاعب الشرعي لا يرى أي احتكاك لحظة الالتقاط، وأن المهاجم الذي مرّر التقاطًا سيئًا لا يرى المال أبدًا.
الطبقة الخامسة، لحظة الالتقاط: أثر الحركة. كل هاتف فيه مقياس تسارع وجيروسكوب على الشريحة نفسها التي تتواصل مع GPS. يسجّل Seek الآن نافذة قصيرة من الحركة للثواني التي تسبق الالتقاط، ويحسب مجموعة صغيرة من الإحصاءات (تباين المقدار، والنشاط الدوراني، وعدد الإطارات الساكنة)، ويرسل هذا الملخص مع طلب الجمع. الهاتف الذي مشى إلى ظهور له بصمة حركة مختلفة عن هاتف موضوع على مكتب مع محاكي GPS يعمل. البصمة لا تُفرض في طبقة الالتقاط اليوم، للسبب نفسه الذي لا تُفرض به مؤشرات البيئة: العميل المُعدَّل يستطيع الكذب. إنها تدخل في بوابة الاحتيال ذات التسعين يومًا، إلى جانب إشارات المحاكي والمزوّد الوهمي، وأثر حركة مسطح في السجل إنذار آخر يسلّم السحب إلى مراجعة بشرية.
مثال تطبيقي. مختبِر يشغّل مزيّف GPS، ويضبط الإحداثية على إسقاط Seek في الطرف الآخر من المدينة، ويضغط التقاط. يمر فحص المسافة لأن الإحداثية المزيفة مطابقة. ويمر التوثيق لأن التطبيق غير معدَّل. يُسجَّل الالتقاط. بعد ساعتين يقوم المختبِر نفسه بثلاثة التقاطات أخرى، أحدها من إحداثية مختلفة على بُعد عشرة كيلومترات. أثر الحركة في الأربعة مسطح (الهاتف لم يتحرك قط)، وينطلق فحص الحركة المستحيلة على الإحداثيتين اللتين لا يمكن الوصول إليهما مشيًا في ساعتين. يواصل الحساب اللعب، ويواصل الجمع، ولا يعرف أن هناك خطأ. وحين يطلب المختبِر الصرف، يصل الطلب إلى مكتب مراجعة بشرية مرفقًا بمؤشر الحركة المستحيلة وأثر الحركة المسطح. يرفضه المراجع. ورصيد المختبِر المجموع البالغ أربعين دولارًا لا يساوي شيئًا أبدًا خارج التطبيق.
الإطار الاقتصادي. المهم ليس أن تزييف الالتقاط نفسه مستحيل؛ بل أن بوابة الصرف تعود لتقرأ كل ما فعله الحساب ليصل إلى الرصيد. الإسقاط الذي قيمته يوروان والمحمي بالتوثيق والمسافة رخيص الهجوم مرة واحدة وعديم الجدوى تكرارًا، لأن فحص السحب يكشف النمط قبل أن يتحول النمط إلى مال. أما الإسقاط الذي قيمته عشرة آلاف يورو فيحتاج إلى إطار أقوى في طبقة الالتقاط، وهذا ما تتناوله خارطة الطريق أدناه.
ما على خارطة الطريق. البديل عبر المنارات للإسقاطات الداخلية هو الضابط التالي القادم. لظهور موضوع داخل مبنى حيث يكون GPS بلا معنى، تتيح منارة Bluetooth صغيرة مسجّلة للإسقاط للتطبيق إثبات الحضور دون الاعتماد على تحديد الموقع بالأقمار الصناعية إطلاقًا. فرض التوثيق هو المسار الثاني: اليوم تُسجَّل الطلبات غير الموثّقة لكنها تُقبل مع ذلك، حتى نقيس معدل الرفض الخاطئ للأجهزة الشرعية قبل تفعيل المفتاح ورفضها مباشرة. كلاهما يأتي كإضافة صغيرة ومملة وقابلة للتحقق إلى نمط الالتقاط والصرف المستخدم أصلًا.
ما لا يزال لا يعمل جيدًا. GPS داخل مركز تسوق يخطئ بعشرة إلى خمسة عشر مترًا، ولا يصلح ذلك أي قدر من الذكاء على الخادم؛ المنارة هي الجواب الحقيقي، ولهذا هي على خارطة الطريق. زمن الاستجابة دون الثانية غير متحقق وعلى الأرجح لن يتحقق، لأن بوابة الاحتيال تقرأ التاريخ لا طلبًا واحدًا. والأجهزة القابلة للارتداء فيها مستشعرات أقل من الهواتف، لذا فتصميم إثبات الموقع المضبوط للهواتف لا ينتقل بسلاسة إلى النظارات. ودولة تملك شاحنة من معدات الترددات اللاسلكية تستطيع هزيمة أي متحقق على الهاتف المحمول اليوم؛ وأي بروتوكول يدّعي خلاف ذلك ليس صادقًا معك. بروتوكولنا لن يفعل.
مبدأ التصميم الذي يستحق أن يُقال بصوت عالٍ. ينبغي للمتحقق أن يكون صادقًا بشأن ما يستطيع إثباته وما لا يستطيع. عرض درجة احتمالية كنعم أو لا مطلقة أسوأ من عرض نعم أو لا مطلقة ناتجة عن قواعد صارمة، لأن الدرجة تصنع منزلقًا، وأي منزلق يُدفع نحو قبول مزيد من المطالبات حين تتأخر أهداف التفاعل. طبقة الالتقاط لدينا بلا منزلق. إما أن تجتاز الفحوصات أو لا. أما طبقة الاحتيال فلها منزلق، وهذا المنزلق بيد إنسان، لا في الشيفرة.
هذه هي القطعة تحت Seek التي تجعل الأصول المثبّتة والإسقاطات المُتحقَّق من موقعها تستحق العناء. يضع الناشر رمزًا قيمته مال حقيقي عند إحداثية لأن من سينتهي به الأمر إلى امتلاكه كان عند تلك الإحداثية على جهاز موثّق، ولأن بوابة الصرف ستعود لتقرأ تاريخ الحساب قبل أن يتحرك المال. في الورقة البيضاء المواصفات الكاملة. وهذا المقال هو النسخة المبسّطة لما يحدث داخل التطبيق.
باختصار. الحضور ليس إحداثية. الإشارة الواحدة لا تثبت الحضور. يتحقق Seek من الحضور في طبقتين: التوثيق والمسافة وأثر الحركة لحظة الالتقاط، وبوابة احتيال تغطي تسعين يومًا لحظة الصرف. والمسألة الوحيدة التي ما زالت مفتوحة، البديل عبر المنارات للإسقاطات الداخلية، تغلق آخر حالة إحداثيات لا يستطيع GPS وحده حلها. هذا ما هو إثبات الموقع فعلًا داخل Seek اليوم، ولهذا فهذه الطبقة أهم من أي من الأشياء الأكثر بريقًا التي تتيحها.


