Blinde Signatur: So schützen wir das Wahlgeheimnis | METIS Italia Zum Inhalt springen

Sicherheit der Abstimmung

Die blinde Signatur: das Wahlgeheimnis mathematisch garantiert

Eine Online-Wahl muss drei Dinge vereinen, die sich zu widersprechen scheinen: Nur Berechtigte stimmen ab, jeder nur einmal, und niemand kann wissen, wie jemand gewählt hat. Mit der blinden Signatur prüft das System die Wahlberechtigung und nimmt den Stimmzettel an, ohne beides jemals miteinander verknüpfen zu können. Auf dieser Seite erklären wir, wie das geht: zuerst in einfachen Worten, dann im technischen Detail.

Die Idee in einem Umschlag

Stellen Sie sich vor, Sie stecken Ihren ausgefüllten Stimmzettel in einen mit Kohlepapier ausgekleideten Umschlag und gehen damit ins Wahllokal.

Der Wahlhelfer prüft Ihren Ausweis, sieht nach, ob Sie auf der Liste stehen und noch nicht gewählt haben, und unterschreibt dann außen auf dem verschlossenen Umschlag. Dank des Kohlepapiers drückt sich die Unterschrift auf den Stimmzettel durch, doch der Wahlhelfer hat ihn nie gesehen.

Sie gehen ein Stück weiter, nehmen den Umschlag ab und werfen den unterschriebenen Stimmzettel zu denen aller anderen in die Wahlurne. Wer die Urne öffnet, sieht, dass die Unterschrift echt und der Stimmzettel damit gültig ist, kann aber nicht wissen, in welchem Umschlag er steckte.

Die blinde Signatur macht dasselbe mit Mathematik: Der "Umschlag" ist eine Zufallszahl, die nur Ihr Browser kennt.

Die Abstimmung Schritt für Schritt

  1. Persönlichen Link öffnen

    Der per E-Mail erhaltene Link gilt nur einmal und nur für diese Abstimmung. Die Seite lädt den öffentlichen Schlüssel der Abstimmung: Jede Abstimmung hat ihren eigenen.

  2. Wählen und bestätigen

    Sie wählen die Kandidaten aus und bestätigen die Zusammenfassung. Bis hierhin wurde nichts gesendet.

  3. Der Browser bereitet den Token vor

    Ihr Browser erzeugt einen zufälligen Token und "maskiert" ihn, indem er ihn mit einer geheimen Zahl multipliziert, die nur auf Ihrem Gerät bleibt.

  4. Erste Anfrage: die Signatur

    Der Browser sendet den maskierten Token zusammen mit Ihrem persönlichen Link. Der Server prüft, ob die Abstimmung offen ist und Sie noch nicht abgestimmt haben, vermerkt "hat abgestimmt" nur mit dem Tag und signiert den maskierten Token. Er erhält Ihre Auswahl nicht und sieht den Token nicht.

  5. Der Browser entfernt die Maske

    Mit seiner geheimen Zahl erhält der Browser die gültige Signatur für den echten Token und prüft sie selbst: Hätte der Server falsch signiert, würde die Abstimmung hier abbrechen.

  6. Zufällige Wartezeit

    Der Browser wartet zufällig zwischen 5 und 20 Sekunden, um die beiden Anfragen zeitlich zu trennen.

  7. Zweite Anfrage: der Stimmzettel

    Der Browser sendet Token, Signatur und Auswahl mit einer anonymen Anfrage: kein persönlicher Link, keine Cookies, keine Sitzung. Der Server prüft die Signatur, stellt sicher, dass der Token noch nicht verwendet wurde, und legt den Stimmzettel in die Wahlurne.

  8. Ihr Beleg

    Sie erhalten einen Belegcode, der nur Ihnen angezeigt wird, und sehen die beiden gerade gespeicherten Datensätze, direkt aus der Datenbank gelesen: das Register mit Ihrem Namen ohne Auswahl, den Stimmzettel mit Auswahl ohne Namen.

Wer weiß was

Das sieht der Server bei jeder der beiden Anfragen. Keine enthält zugleich, wer Sie sind und wie Sie gewählt haben.

Erste Anfrage (Signatur) Zweite Anfrage (Stimmzettel)
Wer Sie sind ja, über den persönlichen Link nein
Der Token nein, nur maskiert ja
Ihre Auswahl nein ja
Cookies und Sitzung ja nein

Der maskierte Wert und die Signatur der ersten Anfrage bleiben nur deshalb bei Ihrem Namen gespeichert, damit eine unterbrochene Abstimmung abgeschlossen werden kann: Ohne die geheime Zahl Ihres Browsers führen sie weder zum Token noch zum Stimmzettel.

Die Garantien

Eine Stimme pro Wähler

Der Server signiert für jeden persönlichen Link nur einmal, und jeder signierte Token gilt nur für einen Stimmzettel.

Keine gefälschten Stimmzettel

Ein Stimmzettel ohne gültige Signatur oder mit einem Token aus einer anderen Abstimmung wird abgelehnt.

Verknüpfung unmöglich

Der Server sieht den Token nie neben Ihrem Namen: Das Geheimnis hängt nicht von dem Versprechen ab, etwas nicht zu speichern.

Integrität der Ergebnisse

Nach Ende der Abstimmung prüft das System, dass es genauso viele Stimmzettel wie verwendete Token gibt, nie mehr als Wähler, und dass die Summen mit der Wahlurne übereinstimmen.

Was Sie selbst prüfen können

  • Direkt nach der Abstimmung sehen Sie die tatsächlich gespeicherten Datensätze: bei Ihrem Namen keine Auswahl, auf dem Stimmzettel kein Name.
  • Mit dem Belegcode prüfen Sie auf der Ergebnisseite, ob Ihr Stimmzettel gezählt wurde. Normalerweise (verstärktes Wahlgeheimnis) bestätigt der Code nur, dass der Stimmzettel vorhanden ist, und zeigt Ihre Auswahl nicht: So kann niemand Sie zwingen nachzuweisen, wie Sie gewählt haben. Der Organisator kann stattdessen die überprüfbare Abstimmung wählen: Dann zeigt der Code auch Ihre Auswahl und sollte von Ihnen geheim gehalten werden.
  • Nach Ende der Abstimmung ist die Wahlurne bei mindestens 5 Stimmzetteln ohne Namen öffentlich: Sie können alle Stimmzettel nachzählen und mit der Rangliste vergleichen.
  • Der Browser-Code, der den Token maskiert, ist öffentlich und lesbar (js/AN05_blind.js): Eine Fachperson Ihres Vertrauens kann ihn prüfen.

Siehe auch: was wir speichern, Feld für Feld →

Details für Fachleute

  • RSA-Signatur mit 2048 Bit und eigenem Schlüssel für jede Abstimmung, Schema RSA-FDH: Der Token aus 32 Zufallsbytes wird mit MGF1-SHA256 auf die Länge des Moduls erweitert, zusammen mit einem Kontext, der ihn an die Abstimmung bindet.
  • Maskierung im Browser mit BigInt-Arithmetik: b = m · r^e mod n, mit r zufällig und teilerfremd zu n; der Browser entfernt die Maske mit r^-1 und prüft s^e mod n = m, bevor er den Stimmzettel sendet.
  • Der private Schlüssel jeder Abstimmung wird verschlüsselt (AES-256) mit einer geheimen Passphrase gespeichert, die nicht in der Datenbank liegt: Wer nur die Datenbank liest, kann keine Token signieren.
  • Der Server signiert nur Werte, die genau die Länge des Moduls haben und kleiner als der Modul sind; verwendete Token werden als SHA-256-Fingerabdruck aufbewahrt, ohne Datum und ohne Bezug zum Wähler.
  • Die Anfrage mit dem Stimmzettel wird ohne Anmeldedaten gesendet (keine Cookies, kein Referrer-Header), und der Endpunkt öffnet keine Sitzung.
  • Fortsetzen: Bis zur Abgabe bleiben Token, Maske und Signatur nur im Browser des Wählers; wird die Seite geschlossen, schließt das erneute Öffnen des Links auf demselben Gerät die Abstimmung mit demselben Beleg ab.

Die Grenzen, offen gesagt

Internetadresse
Wir speichern sie nicht in unseren Tabellen, aber die technischen Protokolle des Hosting-Anbieters bewahren sie auf. Wer aus demselben Netz abstimmt, aus dem er signiert hat, hinterlässt zwei Anfragen von derselben Adresse.
Zeitliche Nähe
Signatur und Stimmzettel kommen wenige Sekunden nacheinander an. Die zufällige Wartezeit schwächt das ab, vor allem wenn viele Personen zur selben Zeit abstimmen.
Ihr Gerät
Ist der Computer oder das Smartphone des Wählers durch Schadsoftware kompromittiert, kann kein Online-Abstimmungssystem schützen, was auf diesem Gerät geschieht.
Die Wählerliste
Wer abstimmen darf, entscheidet der Organisator: Die Zahl der Wahlberechtigten und der Abstimmenden wird in den Ergebnissen veröffentlicht, damit jeder sie prüfen kann.
Nicht abgeschlossene Stimmen
Schließt ein Wähler die Seite nach der Signatur und öffnet sie nie wieder auf demselben Gerät, gilt sein Stimmrecht als verbraucht, aber der Stimmzettel kommt nicht an. Die Ergebnisse weisen dies als "nicht abgeschlossene Stimme" aus.

Häufige Fragen zur blinden Signatur

Muss ich zum Abstimmen etwas Besonderes tun?

Nein. Sie wählen, bestätigen und warten einige Sekunden, während der Stimmzettel abgegeben wird: Alles Weitere erledigt der Browser.

Was passiert, wenn ich die Seite vor dem Beleg schließe?

Öffnen Sie Ihren persönlichen Link erneut auf demselben Gerät: Die Abstimmung wird automatisch mit demselben Beleg abgeschlossen. Von einem anderen Gerät aus geht das nicht, weil die geheime Zahl auf dem ersten geblieben ist.

Verrät der Belegcode meine Stimme?

Normalerweise nicht: In der Wahlurne liegt nur sein Fingerabdruck, und die Prüfung antwortet nur "Stimmzettel vorhanden und gezählt". Nur wenn der Organisator die überprüfbare Abstimmung gewählt hat (das steht auf dem Stimmzettel), zeigt der Code jedem, der ihn eingibt, Ihre Auswahl: In diesem Fall behalten Sie ihn für sich.

Verwenden alle Abstimmungen die blinde Signatur?

Ja, alle, die nach ihrer Einführung erstellt wurden. Frühere Abstimmungen behalten das System, das bei ihrer Erstellung verwendet wurde; auch dieses trennt in den gespeicherten Daten Namen und Auswahl.

Probieren Sie es bei Ihrer nächsten Abstimmung aus