Wie dieser Dienst gebaut ist
Geschrieben für die Person, die dafür vor einem Vorstand geradestehen muss. Jede Aussage hier können Sie auf einem Bildschirm oder im Quellcode nachprüfen.
Namen und Stimmen liegen nie am selben Ort
Das ist der Kern der Konstruktion. Ihr Verzeichnis und Ihre Wahlurne sind zwei getrennte Bestände, und in keinem von beiden gibt es eine Spalte, die sie verbinden könnte — es ist keine Berechtigung, die man erteilen, und keine Einstellung, die man ändern könnte. Die Verknüpfung existiert nicht.
Das Verzeichnis
- Name
- E-Mail oder Anschrift
- Sprache
- Ob der Code verwendet wurde
Ihre Wahlverantwortlichen können dies einsehen. So wissen sie, wer stimmberechtigt ist und wer noch nicht gewählt hat.
Die Wahlurne
- Eine zufällige Stimmzettel-Referenz
- Die Auswahl
- Die Stunde der Aufzeichnung
- Wer ihn abgegeben hat
Vor Schließung der Wahl kann dies niemand einsehen, danach nur als Summen. Es gibt keinen Bildschirm, keinen Export und keine Abfrage, die den Stimmzettel einer Person zeigt.
Warum so gebaut und nicht nur abgesperrt
Eine Berechtigung kann von einer entschlossenen Administratorin, durch eine gerichtliche Anordnung oder aus Versehen erteilt werden. Eine Spalte, die nie angelegt wurde, kann das nicht. Stähle heute Nacht jemand die gesamte Datenbank, hielte er die Namen Ihrer Mitglieder und einen Stapel nicht zuordenbarer Stimmzettel in Händen, und kein Aufwand brächte sie zusammen.
Was geschieht, wenn ein Mitglied wählt
- Es öffnet seinen Link oder tippt seinen Code ein. Wir prüfen ihn gegen einen schlüsselbasierten Hash — der Code selbst wird nicht gespeichert, es gibt also nichts nachzuschlagen und nichts preiszugeben.
- Das Verzeichnis hält fest, dass der Code dieses Mitglieds verwendet wurde. Über seine Auswahl hält es nichts fest.
- Der Stimmzettel geht unter einer neuen zufälligen Referenz in die Wahlurne, mit auf die Stunde gerundeter Zeit, damit die Reihenfolge der Stimmabgaben nicht mit der Reihenfolge der Codenutzung abgeglichen werden kann.
- Beide Schreibvorgänge geschehen gemeinsam, und nirgends verbindet sie etwas. Dem Mitglied wird seine Referenz einmal gezeigt, und es wird keine Kopie aufbewahrt.
Was verschlüsselt ist, und wie
Benannte Verfahren statt des Wortes „verschlüsselt“, denn „verschlüsselt“ allein sagt nichts aus.
| Was | Wie | |
|---|---|---|
| Alles auf dem Transportweg | HTTPS (TLS) auf jeder Seite und in jedem Formular, mit HSTS. Die Verbindung zur Datenbank läuft über das private Netz des Hosters und ist auf dem Transportweg verschlüsselt. | |
| Die Wahlcodes | Werden nie gespeichert. Wir bewahren zu jedem Code einen HMAC-SHA-256 unter einem geheimen Pepper auf, der in der Umgebung der Anwendung liegt und nicht in der Datenbank — eine gestohlene Datenbank liefert also keine brauchbaren Codes. Jeder Code besteht aus zwei unabhängigen Zufallsgeheimnissen: 128 Bit hinter dem Link, 80 Bit hinter dem eingetippten Code. | |
| Die Passwörter der Wahlverantwortlichen | scrypt mit N=32768, r=8, p=1 und einem Salt je Passwort. Dazu bei jeder Anmeldung ein sechsstelliger Code aus Ihrer Authenticator-App. | |
| Gespeicherte Dienstgeheimnisse | AES-256-GCM mit einem per HKDF aus einem Bereitstellungsgeheimnis abgeleiteten Schlüssel. Das betrifft Token von Mailanbietern und Zugangsdaten, die Ihr Verein hinterlegt. | |
| Die Aufzeichnung dessen, was getan wurde | Eine SHA-256-Hashkette: Jedes Ereignis trägt den Hash des vorherigen, sodass Ändern oder Entfernen eines Eintrags alle nachfolgenden Hashes zerstört. Die Kette wird auf dem Bildschirm geprüft und ihr Kopf mit dem Ergebnis veröffentlicht. |
Ruhende Daten liegen auf dem verschlüsselten verwalteten PostgreSQL des Hosters, und jede Sicherung davon bleibt in derselben Region.
Wo es läuft
Anwendung und Datenbank laufen beide in Frankfurt, in der Europäischen Union. Es gibt keine andere Region, kein Replikat anderswo und auf keiner Seite einen Analyse- oder Werbedienst — es verlässt also keine Anfrage aus dem Browser einer wählenden Person die EU.
Versendet Ihr Verein die Codes per E-Mail über diesen Dienst, werden die Nachrichten einem Mailanbieter zur Zustellung übergeben; wenn Sie das lieber vermeiden möchten, wählen Sie bei der Einrichtung gedruckte Briefe oder Ihren eigenen Mailserver.
Zwei Verantwortliche, sonst nichts
Die entscheidenden Kontrollen setzt die Datenbank durch, nicht ein Bildschirm. Eine Person beantragt, eine andere stimmt zu. Die Datenbank verweigert es, wenn es dieselbe Person ist, und jeder Antrag und jede Zustimmung wird mit der angegebenen Begründung in die Hashkette geschrieben.
Eine Wahl starten, sie vorzeitig schließen, das Ergebnis veröffentlichen, den verlorenen Code eines Mitglieds ersetzen, eine Liste gültiger Codes erzeugen und Daten löschen — jedes davon erfordert zwei.
Was wir nicht erheben
Nicht „was wir nicht verwenden“ — es wird gar nicht erst erhoben, und in den meisten Fällen ist es baulich unmöglich zu erheben.
- Zu keinem Stimmzettel wird eine IP-Adresse oder ein Browser-Fingerabdruck gespeichert. Die Ratenbegrenzung nutzt einen kurzlebigen schlüsselbasierten Hash, der nie mit einem Stimmzettel verknüpft wird.
- Kein Öffnungs- oder Klick-Tracking in E-Mails. Ein Klickzähler würde die Wahlcodes Ihrer Mitglieder durch das Weiterleitungsprotokoll eines Dritten schleusen.
- Keine Web-Analyse, keine Werbung, keine Sitzungsaufzeichnung, keine fremden Skripte oder Schriften. Die Sicherheitsrichtlinie der Seite verbietet das Laden von irgendetwas Fremdem, das kann also nicht versehentlich hinzukommen.
- Auf dem Wahlweg keine Cookies außer einem Token, das das Formular schützt, und — bei einem Sprachwechsel — der gewählten Sprache. Keines von beidem identifiziert jemanden.
- Nach dem Versand keine Wahlcodes im Klartext — nicht in der Datenbank, nicht in Protokollen, nicht in Exporten. Ein Test prüft das.
Datenschutz
Ihr Verein ist der Verantwortliche im Sinne der DSGVO: Er entscheidet, wer im Verzeichnis steht und warum, und er unterhält die Beziehung zu Ihren Mitgliedern. Dieser Dienst ist Auftragsverarbeiter nach Ihren Weisungen und verarbeitet personenbezogene Daten nur, um die von Ihnen eingerichteten Wahlen durchzuführen. Ihre Datenschutzerklärung muss Ihren Verein als Verantwortlichen benennen und angeben, wo die Daten liegen.
Die Rechte Ihrer Mitglieder
- Auskunft, Berichtigung und Löschung beziehen sich auf das Verzeichnis — ein Mitglied kann bei Ihren Wahlverantwortlichen erfragen, was über es gespeichert ist, und es berichtigen oder löschen lassen.
- Auf einen abgegebenen Stimmzettel können sie sich nicht beziehen, denn kein Stimmzettel ist mit einer Person verbunden. Das gehört in Ihre Datenschutzerklärung: Es ist eine Schutzwirkung, und es nimmt einer Anfrage vorweg, die nie erfüllt werden könnte.
- Ein Mitglied kann jederzeit mit der ihm angezeigten Referenz prüfen, dass sein eigener Stimmzettel gezählt wurde, ohne irgendjemandem zu verraten, wie es gewählt hat.
Wie lange etwas aufbewahrt wird
Nichts wird automatisch gelöscht. Ihr Verein legt seine Aufbewahrungsfristen fest und setzt sie um — und das ist richtig so: Es steht uns nicht zu, Ihre Wahlunterlagen nach einem Zeitplan still zu vernichten. Dies ist, was es aufzubewahren oder zu löschen gibt.
| Was | Wie lange |
|---|---|
| Wahlcodes im Klartext | Werden überhaupt nicht gespeichert. Sie bestehen nur in der Nachricht oder dem Brief, der gerade erzeugt wird. |
| Druckpakete und Serienbriefdateien | Werden auf Ihre Anforderung hin auf die Festplatte geschrieben und sind nach dem Versand von Ihnen zu löschen. Jedem liegt ein entsprechender Hinweis bei. |
| Das Verzeichnis: Namen und Kontaktdaten | Bleibt, bis Ihr Verein es löscht. Löschen Sie es, sobald die Anfechtungsfrist verstrichen ist; Ihre Satzung oder Datenschutzerklärung sollte das Datum festlegen. |
| Anonyme Stimmzettel und das versiegelte Ergebnis | Bleiben als Wahlunterlagen Ihres Vereins. Sie enthalten keine personenbezogenen Daten, es gibt also meist keinen Grund, sie zu löschen. |
| Das Prüfprotokoll | Bleibt so lange wie die Wahlunterlagen. Es nennt die Wahlverantwortlichen und ihre Handlungen, nie das Wahlverhalten einer Person. |
Auch das Löschen der Unterlagen einer Wahl erfordert zwei Verantwortliche: Niemand kann allein und unbemerkt die Spuren einer Wahl beseitigen.
Wovor dies Sie nicht schützt
Gibt ein Mitglied seinen Code weiter, kann die andere Person an seiner Stelle wählen. Ein Code ist ein Geheimnis in der Post oder im Postfach — das ist der Preis dafür, dass Mitglieder keine Konten führen müssen.
Ist der Rechner oder das Postfach einer verantwortlichen Person kompromittiert, sieht ein Angreifer Ihr Verzeichnis. Er kann weiterhin nicht sehen, wie gewählt wurde, und er kann nicht allein handeln: Alles Wesentliche erfordert eine zweite Person.
Dieser Dienst wurde keiner externen Sicherheitsprüfung unterzogen. Veröffentlicht wird das, worauf ein Ergebnis beruht: jeder anonyme Stimmzettel, die Dateihashes und das unabhängige Nachzählwerkzeug samt Anleitung — damit Sie oder jemand Ihres Vertrauens jedes Ergebnis selbst prüfen können, auch ohne Einblick in den Quellcode.
Wir können Ihnen niemals sagen, wie ein bestimmtes Mitglied gewählt hat — gleich wie die Frage gestellt wird und von wem. Das ist keine Richtlinie, die wir uns anders überlegen könnten.
Noch eine Frage?
Die häufigsten, für Mitglieder wie für Vorstände, stehen auf einer Seite.