Caputchin
Memahami Caputchin

Anti-curang gaming

Game yang dimainkan pengunjung selama beberapa detik adalah bagian yang kamu lihat. Di bawahnya adalah sistem anti-curang yang membuat game berlaku sebagai bukti seorang manusia. Caputchin meminjam buku-pedoman yang dipakai game multipemain kompetitif terhadap pecurang: server otoritatif atas tiap ronde, game berjalan di sandbox terkunci, dan hasilnya diturunkan-ulang dengan memutar-ulang input pemain. Game bisa dimainkan, tak bisa dipalsukan.

Ini adalah gerbang verifikasi ketiga, ditumpuk dengan proof of work dan instrumentasi. Ia dikonfigurasi per key di halaman Keamanan.

Siklus hidup

Sebuah ronde bergerak lewat tiga fase: disiapkan di server sebelum bermain, dijalankan ber-sandbox di peramban selama bermain, dan diverifikasi-ulang di server setelah bermain.

Sebelum ronde: penyiapan server-otoritatif

Semua yang memutuskan ronde itu apa terjadi di server, tak pernah di peramban. Ini prinsip "jangan pernah percayai klien" dari anti-curang multipemain: klien mengirim niat, server memutuskan kenyataan.

  • Sebuah tiket sekali-pakai bertanda tangan mencetak ronde. Ia berumur pendek dan hanya bisa dipakai sekali. Tiket yang ditangkap tak bisa diputar-ulang menjadi pass kedua.
  • Game dan seed acaknya dipilih di sisi-server dan dibawa di tiket. Peramban tak bisa memilih game yang lebih mudah atau seed yang lebih ramah, karena ia tak pernah membuat pilihan itu.
  • Game berbeda dari kumpulan yang layak tiap kali. Seorang pemecah tak pernah tahu game mana yang akan ia hadapi, jadi ia tak bisa berlatih-awal pada satu target statis. Operator bisa mempersempit rotasi, tapi server selalu memilih dari set yang diizinkan. Kumpulan itu sendiri hanya berisi game yang lolos pemeriksaan kesesuaian saat-indeks. Lihat bangun game marketplace.

Selama ronde: game ber-sandbox

Game berjalan di peramban pengunjung, tapi di dalam batas yang melindungi baik situs pengunjung maupun integritas ronde.

<caputchin-game> memasang tiap game di iframe terisolasi tanpa akses sama-origin, jadi game punya origin opaque dan tak bisa menjangkau cookie, penyimpanan, DOM, atau jaringan sama-origin halaman host. Content-security-policy inline-nya memin skrip ke persis bundel game dan memblokir panggilan jaringan keluar, dan bundel diperiksa terhadap hash yang dikenal sebelum ia berjalan (ketaksamaan gagal tertutup). Kebijakan keamanan halaman host sendiri tak tersentuh. Bentuk sandbox dan kebijakan persisnya didokumentasikan di bagaimana Caputchin men-sandbox game.

Pesan utamanya: game tak-dipercaya-secara-baku dan terkurung. Ia tak bisa mengeksfiltrasi apa pun, dan ia tak bisa merusak halaman tempat ia disematkan.

Setelah ronde: putar-ulang deterministik

Saat pengunjung selesai, peramban mengirim trace input yang terekam. Server tak menerima begitu saja kata peramban untuk hasilnya. Ia menjalankan-ulang trace.

  • Ronde disimulasikan-ulang di server di bawah seed yang sama yang diturunkan-server, di isolate tersegel tanpa akses jaringan dan anggaran waktu keras. Ini properti yang sama yang diandalkan lockstep deterministik di game strategi: seed identik plus input identik mereproduksi permainan identik. Sebuah trace yang tak benar-benar menuntaskan game tak mereproduksi hasil lolos.
  • Lolos atau gagal diambil dari putar-ulang itu, tak pernah dari angka yang dilaporkan peramban. Sebuah klien tak bisa mengklaim skor yang tak ia dapatkan.
  • Token bertanda tangan diterbitkan hanya jika putar-ulang memastikan permainan. Token itu sendiri sekali-pakai saat backend-mu nanti memastikannya saat waktu verifikasi.

Apa yang tak dilakukan Caputchin

Kebanyakan CAPTCHA game dan interaktif bersandar pada sinyal perilaku: entropi jalur-tetikus, waktu ketukan, telemetri perangkat yang disuapkan ke pengklasifikasi yang menebak bot-lawan-manusia. Caputchin sengaja tidak. Ia tak mengumpulkan profil perilaku pemain. Alih-alih menebak bagaimana input dihasilkan, ia menurunkan-ulang apakah mereka sungguh menuntaskan game dari prinsip pertama. Ini baik sikap privasi maupun keamanan: tak ada model perilaku untuk diakali, hanya fisika untuk direproduksi.

Sebuah batas yang jujur

Gerbang hanya sekuat game-nya. Mesin anti-curang membuktikan sebuah ronde sungguh dimainkan dan tak dipalsukan, tapi ia tak bisa membuat game mudah jadi sulit. Sebuah game sepele (papan statis, langkah menang yang terbaca di DOM, "klik titik merah untuk lolos") murah bagi skrip untuk dipecahkan, dan putar-ulang deterministik akan setia memastikan input berskrip itu menang, karena memang menang. Resistansi terhadap bot datang dari game itu sendiri sulit dipecahkan secara terprogram: reaksi cepat, sensorik, sepersekian-detik, tanpa solusi yang duduk di DOM. Lapis anti-curang menjamin permainannya nyata; rancangan game memutuskan apakah permainan nyata sulit diotomasi. Pilih dan bangun game dengan itu dalam benak, lihat bangun game marketplace.

Lolos atau gagal diputuskan oleh logika tiap game sendiri; server setia menjalankan-ulang logika itu tapi tak menebak-ulang apa yang game tertentu anggap sebagai menang. Anti-curang gaming terkuat saat disusun dengan proof of work, instrumentasi, dan sisa pengaturan keamanan sebuah key.

Di halaman ini