# Eine Rechenaufgabe statt eines CAPTCHA-Dienstes

> Wie privymail.eu automatisch angelegte Konten bremst, ohne Besucherdaten an Dritte zu geben, und was eine Rechenaufgabe nicht leistet.

Das Formular, über das bei privymail.eu ein Konto entsteht, zeigt kein Bilderrätsel und bindet keinen fremden Dienst ein. Stattdessen löst der Browser eine Rechenaufgabe, die unser eigener Dienst stellt und prüft. Das Verfahren heißt ALTCHA.

## Der übliche Türsteher schaut mit

Ein Formular im Netz zieht Programme an, die es massenhaft absenden. Bei einem Maildienst ist das mehr als lästig: Massenhaft angelegte Postfächer dienen dem Spamversand, und der schadet der Zustellung aller anderen.

Die übliche Abwehr ist der CAPTCHA-Dienst eines Dritten, eine Prüfung, die Menschen von Programmen unterscheiden will. Dafür lädt der Browser Programmcode von dessen Servern. Der Dritte erfährt dabei mindestens die IP-Adresse und die Seite, auf der das Formular steht; manche dieser Dienste werten zusätzlich aus, wie sich jemand im Browser verhält. privymail.eu bindet deshalb keinen fremden CAPTCHA-Dienst ein. Eine Telefonnummer als Nachweis verlangen wir ebenfalls nicht; das begründet der Beitrag [Warum es bei uns keine SMS-Codes gibt](https://privymail.eu/blog/no-sms.md).

## Arbeit statt Auskunft

ALTCHA verlangt vom Browser keine Auskunft über die Person davor, sondern Arbeit. Der Ablauf hat vier Schritte:

1. **Aufgabe holen.** Der Browser fragt unseren Dienst nach einer Aufgabe. Sie ist mit einem Schlüssel des Dienstes signiert, läuft nach kurzer Zeit ab und gilt nur für diesen einen Zweck.
2. **Rechnen.** Der Browser probiert Zahl um Zahl durch und führt mit jeder eine absichtlich aufwendige Berechnung aus, bis das Ergebnis den vorgegebenen Anfang hat. Für ein einzelnes Formular ist das eine kurze Wartezeit, für sehr viele Formulare eine Rechnung, die jemand bezahlen muss.
3. **Lösung mitschicken.** Die Lösung geht zusammen mit dem Formular an unseren Dienst.
4. **Prüfen und entwerten.** Der Dienst prüft Signatur, Zweck, Ablauf und Lösung und vermerkt die Aufgabe als verbraucht. Eine Lösung gilt genau einmal.

Die Reihenfolge der Prüfungen ist Absicht. Bevor der Dienst eine Lösung entwertet, prüft er die Schreibweise der Adresse; ein Tippfehler kostet so keine gelöste Aufgabe. Ob eine Adresse schon vergeben ist, erfährt dagegen nur, wer eine Aufgabe gelöst hat. So wird das Formular nicht zum billigen Werkzeug, um Adressen durchzuprobieren.

Was dabei nicht geschieht: Die Seite spricht mit keinem fremden Server. Aufgabe, Prüfung und das kleine Programm, das rechnet, kommen von uns. Zu einer gelösten Aufgabe merkt sich der Dienst nur deren Signatur, und nur, bis die Aufgabe abgelaufen wäre. Ein Bezug zu einer Person steckt darin nicht.

Das Programm ist das offizielle ALTCHA-Widget, freie Software unter MIT-Lizenz. In seiner Voreinstellung zeichnet es Zeigerbewegungen, Tastendrücke und Fokuswechsel auf und sendet sie, wenn ein Dienst darum bittet. Unser Dienst bittet nie darum, und unsere Einbindung schaltet die Aufzeichnung zusätzlich ab.

## Was es kostet

- **Wartezeit.** Die Rechnung kostet Zeit, auf langsamen Geräten mehr als auf schnellen.
- **JavaScript.** Die Rechenaufgabe braucht Programmcode im Browser. Diese [Website kommt ohne JavaScript aus](https://privymail.eu/blog/no-javascript.md), das Formular nicht.
- **Fremder Code in eigener Obhut.** Das Widget ist freie Software eines Projekts mit einem einzigen Maintainer, also einer Person, die es pflegt. Wir liefern die Datei selbst aus und halten Version und Prüfsumme fest.
- **Ein Schlüssel mehr.** Der Dienst signiert jede Aufgabe. Wer den Signierschlüssel hätte, könnte sich Aufgaben selbst ausstellen; dann bremsten nur noch die Limits.

## Was es nicht löst

- **Es beweist keinen Menschen.** Die Aufgabe löst jeder Rechner, auch ein ferngesteuerter Browser. Sie macht Masse teuer, nicht unmöglich: Wer genug Rechenzeit bezahlt, kommt durch.
- **Es bremst das Anlegen, nicht den Missbrauch danach.** Was ein bestehendes Konto anrichtet, hält keine Rechenaufgabe auf. Dafür braucht es andere Mittel.
- **Es ersetzt keine Limits.** Die Rechenaufgabe steht neben den Begrenzungen je Herkunft, nicht an ihrer Stelle.
- **Es bestimmt nicht, was der Browser tut.** Unsere Seite ruft keine fremden Server auf. Was ein Browser von sich aus nebenher tut, etwa Verbindungen zu seinem Hersteller, liegt nicht in der Hand der Website.

## Weiterlesen

- [Was in unseren Protokollen steht, und was nicht](https://privymail.eu/blog/what-we-log.md): welche Daten der Dienst festhält und wie lange.
- [Ein Passwort, das Ihr Gerät nicht verlässt](https://privymail.eu/blog/password-never-leaves.md): was nach der Rechenaufgabe mit dem Passwort geschieht.
- [Datenschutz](https://privymail.eu/privacy.md): die Datenverarbeitung im Überblick.
- [Open Source](https://privymail.eu/open-source.md): die Software, auf die wir bauen.
- [Roadmap](https://privymail.eu/roadmap.md): die Bausteine und ihre Reihenfolge.

---

- Diese Seite als HTML: https://privymail.eu/blog/captcha-without-tracking/
- English version: https://privymail.eu/en/blog/captcha-without-tracking.md
