Caputchin
فهم Caputchin

الرصد

يثبت proof of work أن جهدًا بُذِل. ولا يثبت ما الذي بذله. مهاجم عازم بمزرعة متصفّحات حقيقية يستطيع طحن الألغاز بثمن بخس. الرصد هو الطبقة الثانية التي تسدّ تلك الفجوة: يثبت أن العمل حدث داخل متصفّح أصيل.

كيف يعمل

على كل طلب، يولّد Caputchin برنامج JavaScript طازجًا لمرة واحدة ويشغّله في متصفّح الزائر. يمارس البرنامج آلية لا يملكها سوى متصفّح حقيقي، ويبلّغ بما رصده:

  • مجسّات API المتصفّح التي تفحص أن وظائف المتصفّح الأصيلة حاضرة وتتصرّف صحيحًا.
  • سلاسل حوسبة من عمليات أعداد صحيحة على مستوى البتّات.
  • حساب DOM يبني أشجار عناصر، ويقرأ القيم التي يحسبها محرّك التخطيط لها، ويهدمها مجدّدًا.

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

Content-Security-Policy

ولأن البرنامج يشغّل eval في متصفّح الزائر، فيجب أن تسمح الصفحة التي تضمّن أداتك بـ 'unsafe-eval' في script-src خاصتها بـ Content-Security-Policy. لا ارتداد لهذا: إن حُجب 'unsafe-eval'، لا يستطيع البرنامج العمل ويفشل التحقّق. إن كانت سياستك لا تستطيع السماح به، أطفئ الرصد للمفتاح على صفحة الأمان خاصته، فيُسقَط المتطلّب بكلفة رصد المتصفّحات المؤتمتة (ويظلّ proof of work وأي لعبة مشترَطة عاملَين). انظر عزل اللعبة لسياسة الصفحة المضيفة كاملةً.

لماذا يقترن بـ proof of work

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

التعمية

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

حدّ صادق

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

في هذه الصفحة