website/content/blog/10-20-mcaptcha-net/index.md

74 lines
3.4 KiB
Markdown

---
title: "Introducing mCaptcha net"
description: "A network of mCaptcha instances sharing PoW stats to make mCaptcha more efficient and accessible"
date: 2023-10-19
lastmod: 2023-10-19
draft: false
weight: 50
images: ["icon.png"]
contributors: ["Aravinth Manivannan"]
---
mCaptcha uses a Proof-of-Work (PoW) based algorithm to offer
Denial-of-Service protection, because of [its excellent accessibility
characteristics](https://www.w3.org/TR/turingtest/#proof-of-work). PoW
within mCaptcha is configuration --- webmasters can configure
[difficulty factors](/docs/terminology/difficulty-factor) for their
installations, which determines waiting time for visitors. But PoW can
become inaccessible if webmasters choose a very high difficulty factor.
So they have to maintain a balance which imposes sufficient load on DDoS
attackers while also being accessible to common folk.
{{< alert icon="⭐" text=" mCaptcha installation: integration of the mCaptcha widget to a service." >}}
To help webmasters correctly configure difficult factors, we are
building a feedback loop which would gather performance statistics from
voluntary mCaptcha installations and make them available to other
mCaptcha installations. The performance statistics can be used by all
mCaptcha instances to automatically optimize an installation. We are
calling this the mCaptcha net.
## Participation is optional
Participation in the mCaptcha net is disabled by default and is
optional as it has privacy implications: it will reveal the
existence of an mCaptcha instance.
The admins of mCaptcha instances can choose to upload truly anonymous
PoW performance statistics to a number of [mCaptcha/survey](https://git.batsense.net/mCaptcha/survey) instances.
The data uploaded is public and so is accessible to all mCaptcha
instances.
We also offer opt-in controls at installation level:
{{% img src="installation-level-opt-in.png" alt="A screenshot of the 'add sitekey' form on the mCaptcha dashboard with a checkbox for anonymously publishing performance statistics. It is not checked by default." caption="Add sitekey form on the mCaptcha dashboard with a checkbox for anonymously publishing performance statistics. It is not checked by default." %}}
## Ensuring anonymity
mCaptcha doesn't fingerprint its users. Performance parameters include:
1. Time taken to generate PoW
2. The difficulty factor for which the PoW was computed
3. Type of client library used.
```json
"time":14,
"difficulty_factor":50000,
"worker_type":"wasm"
```
This doesn't include the usual fingerprinting parameters like
User-Agent, cookies, and IP address. Additionally, we use pseudo IDs
at both mCaptcha/mCaptcha and mCaptcha/survey to avoid exposing installations.
{{% img src="working-rpc.png" alt="A screenshot of a tmux window with logs of mCaptcha/mCaptcha and mCapctha/survey showing both of them talking to eachother" caption="mCaptcha/mCaptcha uploading performance statistics to a mCaptcha/survey instance" %}}
## Status
We now have performance statistics uploads to mCaptcha/survey instances
working. Pull request [mCaptcha/mCaptcha#92](https://github.com/mCaptcha/mCaptcha/pull/92)
added abilities to mCaptcha to upload statistics to mCaptcha/survey instances and
[mCaptcha/survey#40](https://git.batsense.net/mCaptcha/survey/pulls/17) enable survey to process the uploaded data. We will soon build a
self-tuning algorithm within mCaptcha to use this data and optimize
installations automatically.