Caputchin
فهم Caputchin

مكافحة الغش في الألعاب

اللعبة التي يلعبها زائر بضع ثوانٍ هي الجزء الذي تراه. تحتها منظومة مكافحة الغش التي تجعل اللعبة تُحسَب دليلًا على إنسان. يستعير Caputchin خطّة اللعب التي تستخدمها ألعاب اللاعبين المتعدّدين التنافسية ضدّ الغشّاشين: الخادم موثوق على كل جولة، واللعبة تعمل في عزل محكَم، وتُعاد اشتقاق الحصيلة بإعادة تشغيل مُدخَلات اللاعب. اللعبة يمكن لعبها، لا تزييفها.

هذه بوّابة التحقّق الثالثة، مرصوصةً مع proof of work والرصد. تُعَدّ لكل مفتاح على صفحة الأمان.

دورة الحياة

تمرّ الجولة بثلاث مراحل: الإعداد على الخادم قبل اللعب، والتشغيل معزولةً في المتصفّح أثناء اللعب، وإعادة التحقّق على الخادم بعد اللعب.

قبل الجولة: إعداد موثوق من الخادم

كل ما يقرّر ما الجولة يحدث على الخادم، لا في المتصفّح أبدًا. هذا مبدأ "لا تثق بالعميل أبدًا" من مكافحة غش اللاعبين المتعدّدين: العميل يرسل النيّة، والخادم يقرّر الواقع.

  • تذكرة موقّعة للاستخدام مرة واحدة تسكّ الجولة. قصيرة العمر ولا يمكن صرفها إلا مرة. تذكرة ملتقَطة لا يمكن إعادة تشغيلها لاجتياز ثانٍ.
  • اللعبة وبذرتها العشوائية تُختاران على الخادم وتُحمَلان في التذكرة. لا يستطيع المتصفّح اختيار لعبة أسهل أو بذرة أودّ، لأنه لا يتّخذ ذلك الخيار أبدًا.
  • لعبة مختلفة من المجمّع المؤهَّل في كل مرة. لا يعرف حلّال أبدًا أي لعبة سيواجه، فلا يستطيع التدرّب مسبقًا على هدف ساكن واحد. يستطيع المشغّلون تضييق التناوب، لكن الخادم يختار دائمًا من المجموعة المسموحة. المجمّع نفسه يحتوي فقط ألعابًا اجتازت فحص مطابقة وقت الفهرسة. انظر ابنِ لعبة المتجر.

أثناء الجولة: لعبة معزولة

تعمل اللعبة في متصفّح الزائر، لكن داخل حدّ يحمي موقع الزائر وسلامة الجولة معًا.

يركّب <caputchin-game> كل لعبة في إطار iframe معزول بلا وصول من المصدر نفسه، فللّعبة أصل معتم ولا تستطيع بلوغ كوكيز الصفحة المضيفة، أو تخزينها، أو DOM خاصتها، أو شبكتها من المصدر نفسه. سياسة المحتوى الأمنية المضمَّنة خاصتها تثبّت السكربت على حزمة اللعبة بالضبط وتحجب نداءات الشبكة الصادرة، وتُفحَص الحزمة مقابل تجزئة معروفة قبل تشغيلها (عدم التطابق يفشل مغلقًا). سياسة أمان الصفحة المضيفة نفسها دون مسّ. شكل العزل والسياسة الدقيق موثَّق في كيف يعزل Caputchin الألعاب.

الخلاصة: اللعبة غير موثوقة افتراضيًّا ومحتواة. لا تستطيع تسريب أي شيء، ولا تستطيع العبث بالصفحة المُضمَّنة فيها.

بعد الجولة: إعادة تشغيل حتمية

حين ينتهي الزائر، يرسل المتصفّح أثر المُدخَلات المسجَّل. لا يأخذ الخادم بكلام المتصفّح عن النتيجة. يعيد تشغيل الأثر.

  • تُعاد محاكاة الجولة على الخادم تحت البذرة المشتقّة من الخادم نفسها، في عازل مختوم بلا وصول شبكة وميزانية زمن صارمة. هذه الخاصية نفسها التي تعتمد عليها الخطوة المتزامنة الحتمية في ألعاب الإستراتيجية: بذرة متطابقة إضافةً إلى مُدخَلات متطابقة تُنتج لعبًا متطابقًا. أثر لم يجتز اللعبة فعلًا لا يُنتج حصيلة ناجحة.
  • النجاح أو الفشل يؤخَذ من تلك الإعادة، لا من عدد بلّغه المتصفّح أبدًا. لا يستطيع عميل ادّعاء نتيجة لم يكسبها.
  • يُصدَر رمز موقّع فقط إن أكّدت الإعادة اللعب. ذلك الرمز نفسه للاستخدام مرة واحدة حين يؤكّده خادمك الخلفي لاحقًا وقت التحقّق.

ما الذي لا يفعله Caputchin

معظم CAPTCHA الألعاب والتفاعلية تتّكئ على إشارات سلوكية: إنتروبيا مسار الفأرة، وتوقيت اللمس، وقياس الجهاز عن بعد يُغذّى مصنّفًا يخمّن روبوت-أم-إنسان. Caputchin عمدًا لا يفعل. لا يجمع ملفًّا سلوكيًّا للّاعب. بدل تخمين كيف أُنتِجت المُدخَلات، يعيد اشتقاق ما إذا كانت تجتاز اللعبة فعلًا من المبادئ الأولى. هذا موقف خصوصية وأمان معًا: لا نموذج سلوكي ليُخدَع، بل فيزياء لتُعاد.

حدّ صادق

البوّابة بقوّة اللعبة فقط. آلية مكافحة الغش تثبت أن جولة لُعِبت فعلًا ولم تُزيَّف، لكنها لا تستطيع جعل لعبة سهلة صعبةً. لعبة تافهة (لوحة ساكنة، أو الحركة الفائزة مقروءة في DOM، أو "انقر النقطة الحمراء كي تمرّ") رخيصة على سكربت ليحلّها، وإعادة التشغيل الحتمية ستؤكّد بأمانة أن تلك المُدخَلات المكتوبة بسكربت تفوز، لأنها تفوز. المقاومة للروبوتات تأتي من كون اللعبة نفسها صعبة الحلّ برمجيًّا: ردود أفعال سريعة، حسّية، في جزء من الثانية، بلا حلّ جالس في DOM. طبقة مكافحة الغش تضمن أن اللعب كان حقيقيًّا؛ وتصميم اللعبة يقرّر ما إذا كان اللعب الحقيقي صعب الأتمتة. اختر وابنِ ألعابًا بذلك في الذهن، انظر ابنِ لعبة المتجر.

النجاح أو الفشل يقرّره منطق كل لعبة الخاص؛ يعيد الخادم بأمانة تشغيل ذلك المنطق لكنه لا يخمّن ما تعتبره لعبة بعينها فوزًا. مكافحة الغش في الألعاب أقوى مركّبةً مع proof of work، والرصد، وبقية إعدادات أمان المفتاح.

في هذه الصفحة