eVoting bei den Piraten?

Logo des PiVote ProgrammeseVoting geniesst bei vielen Netzbewohnern ein eher zweifelhaftes Ansehen. Nicht das Abstimmungen und Demokratie im Internet grundsätzlich unbeliebt wären: Kleine nicht repräsentative Umfragen in Foren oder Newsseiten erfreuen sich grosser Beliebtheit und verschiedene Organisationen nutzen mehr oder weniger transparente demokratische Verfahren um Entscheidungen übers Internet zu treffen.

Eher schlechte Erfahrungen wurden bisher aber mit Wahlmaschinen gemacht. Die kommerziellen Geräte waren, aus Angst vor Industriespionage oder aufgrund von Patenten der eingesetzten Technologien als sogenannte Closed Source Software entwickelt. Das heisst, das niemand ausser dem Hersteller genau weiss wie diese Apparate funktionieren. Bei Wahlen ist aber gerade das Vertrauen wichtig und wie soll man einer Box vertrauen, bei der (fast) niemand weiss wie sie funktioniert?

Auch wir Piraten wollten Entscheidungen demokratisch treffen und als Netzbewohner wäre es natürlich auch toll, wenn man dazu nicht allzu weit herumreisen müsste. Daher haben wir eine Arbeitsgruppe (AG) e-Voting gebildet und uns auf die Suche nach einem für uns geeigneten Verfahren gemacht. Das Ergebnis unserer Bemühungen ist mittlerweile fertig, wurde an der letzten Versammlung von den Mitgliedern bestätigt und steht nun kurz vor der ersten Bewährungsprobe: PiVote, das eVoting der Schweizer Piratenpartei.

Bei eVoting-Verfahren hat man grob gesagt drei miteinander Konkurrierende Ansprüche: Sicherheit (Zuverlässigkeit, Schutz vor Manipulation), Transparenz (Überprüfbarkeit) und Anonymität (Wahrung der Privatsphäre der Abstimmenden). Wir haben uns viele verschiedene eingesetzte Verfahren angesehen und miteinander verglichen.

Die bereits erwähnten kommerziellen Produkte wurden einerseits oft gehackt und dadurch als unsicher blossgestellt. Selbst im Idealfall wären sie zwar Sicher und Anonym, aber nie Transparent, da Ihre kommerzielle Natur die Wahrung der Geschäftsgeheimnisse stets über die Offenlegung Ihrer Funktion stellt.

Anfangs war ich in unserer Arbeitsgruppe ein Befürworter einer einfachen Webapplikation, ähnlich wie sie z.B. in Internetforen oder auf Newsseiten zum Einsatz kommen. Mit einer Anbindung an unsere Mitgliederdatenbank im LDAP-Verzeichnis hätte man einfach noch sicherstellen müssen, dass nur Piraten an den Abstimmungen teilnehmen. Die Schwächen liegen hier jedoch bei der Sicherheit: Jeder Administrator mit Zugriff auf die Datenbank hätte die Abstimmungsresultate einfach manipulieren können. Ausserdem hätte man hier zwischen Anonymität und Transparenz wählen müssen. Die anderen AG-Mitglieder überstimmten und überzeugten mich, dass wir Piraten höhere Ansprüche an ein eVoting haben.

Zu guter Letzt haben wir uns klassische kryptographische Verfahren angesehen. Ein bekannter Vertreter aus dieser Gattung ist das Verfahren wie es die Entwickler von Debian für Ihre Wahlen verwenden. Es setzt auf dem OpenPGP-Verfahren zur Signierung der Stimmen auf. Jeder Entwickler besitzt ein Schlüsselpaar, dessen öffentlicher Teil in Form eines Schlüsselbundes veröffentlicht ist. Es wird für die Wahl eine Mailingliste eröffnet. Abgestimmt wird, indem jeder Teilnehmer eine E-Mail mit seinem Stimmzettel als Inhalt erstellt, diese Mail signiert und an die Mailingliste sendet. Selbst Aussenstehende können nun mit dem öffentlichen Schlüsselbund jedes Mail in der Mailingliste auf Gültigkeit prüfen und die gültigen Stimmen auszählen. Das Verfahren ist Sicher und Transparent, nur leider nicht Anonym.

Schlussendlich blieben uns noch zwei Verfahren die versprachen, alle obigen Bedingungen zu erfüllen. Das waren Helios Voting und Adder. Helios erfordert leider aus Transparenz, dass einige mathematische Operationen von Hand durchgeführt werden, was uns zu umständlich erschien. Adder gefiel uns gut, aber wir brauchten noch einige zusätzliche Funktionen (Mehrsprachigkeit, Unterstützung für Windows und MacOS und mehrteilige Abstimmungsfragen). Da Adder nicht mehr weiterentwickelt wird und bei uns keiner genug C++ sprach, um das Projekt in Eigenregie weiterentwickeln zu können, entschlossen wir uns zu einem Nachbau des Verfahrens. Exception und Apophis hatten genug mathematisches Knowhow um die Algorithmen die im wissenschatlichen Paper beschrieben waren zu implementieren. Da beide C# sprachen, wurde diese Programmiersprache für das Projekt gewählt. Als Webentwickler konnte ich nun nicht mehr viel beitragen, erst gegen Ende der Entwicklung konnte ich bei den Alphatests auf Linux helfen und zwei erklärende Graphiken (siehe unten für eine davon) beitragen. Das Logo (siehe oben) wurde von Apophis gestaltet. Die Software läuft nun auf verschiedenen Betriebssystemen (Linux, Windows, MacOS), der Quelltext steht unter einer BSD-ähnlichen Lizenz.

PiVote nutzt ähnlich wie das oben beschriebene Debian-Verfahren Zertifikate um die Stimmen zu signieren. Zusätzlich sind die Stimmen aber homomorph verschlüsselt. Der Clou an diesem Verfahren ist, dass man die Stimmen so auszählen kann, ohne das die einzelnen Stimmen je entschlüsselt werden müssen. Alle einzelnen, verschlüsselten Stimmen werden miteinander zu einem verschlüsselten Resultat verrechnet. Erst dieses kann dann von den Abstimmungsauthoritäten (welche auch den öffentlichen Schlüssel jeder einzelnen Abstimmung generieren) entschlüsselt werden. Damit nicht alles an einer einzelnen Person hängt, ist der private Schlüssel der Abstimmung auf fünf Abstimmungsauthoritäten verteilt. Davon werden vier benötigt um das Abstimmungsresultat entschlüsseln zu können.

Der Lebenslauf eines Zertifikates in PiVoteDie Anonymität versuchen wir über mehrere Stufen sicherzustellen. Um ein Zertifikat zu erhalten, muss man seine Identität durch drei Abstimmungsautoritäten verifizieren lassen. Dann reicht man seinen Antrag an den Aktuar ein, der noch die Mitgliedschaft prüft und das Zertifikat dann aktiviert. Nach einigen Jahren, beim Austritt oder auf Antrag (z.B. bei Verlust) wird das Zertifikat dann ungültig und muss erneuert werden.

Jeder Abstimmende kann überprüfen ob seine Stimme ausgezählt wurde, ob die Stimmen von den Abstimmungsautoritäten richtig zusammengezählt wurden und ob er zum selben Resultat wie diese gelangt. Eine Geschäftsprüfungskommission sollte regelmässig mit Stichproben prüfen ob alles mit rechten Dingen zugeht. Die Abstimmungsautoritäten setzen sich aus zwei Vertretern des Vorstandes, zwei Piraten ohne sonstige Ämter und einem Mitglied der Geschäftsprüfungskommission zusammen.

Exception und ich hatten die Gelegenheit, das Projekt im Sommer an der Cosin 2010, dem Jahrestreffen des Schweizer CCCs vorzustellen (eVoting mit der Adder-Implementation PiVote). Diesen Vortrag haben wir etwas gekürzt an der letzten Piratenversammlung in Olten wiederholt (Urabstimmungen mit PiVote). Im Forum der Piratenpartei Schweiz haben wir einen FAQ-Bereich für Fragen eingerichtet. Und gerade aktuell läuft nun die erste Testabstimmung auf dem produktiven Server an.

Folgende Schwachstellen sind uns bei PiVote bekannt:

  • Wenn nur zwei Personen an einer Abstimmung teilnehmen, kann jeweils eine Person die Stimme der anderen anhand des Resultates bestimmen. Grundsätzlich sind Abstimmungen mit nur wenigen Personen, je nachdem wie gut sich die Abstimmenden kennen, durchschaubar.
  • Wenn sich vier der fünf Abstimmungsautoritäten verschwören, können Sie einzelne Stimmen auszählen. Da aber nur der Aktuar die Zuordnung zwischen Mitgliedern und Zertifikaten machen kann, sollte die Anonymität trotzdem sichergestellt sein.
  • Sabotieren (ausser Betrieb setzen) lässt sich das System direkt durch Manipulationen der Abstimmungsauthoritäten und des Aktuars. Indirekt durch Überlastung des Servers (DoS- oder DDoS-Attacken) durch jeden Internetbenutzer mit entsprechendem Knowhow.
  • Wenn sich drei Abstimmungsauthoritäten verschwören, können Sie gefälschte Zertifikatsanträge im Namen von Mitgliedern an den Aktuar einreichen. Das funktioniert nur, wenn das Mitglied sein Zertifikat nicht benutzt, da ihm sonst auffallen würde, das dieses nicht mehr gültig ist.
  • Wird einem Mitglied das Zertifikat gestohlen und ist dieses nicht mit einem Passwort geschützt, kann damit in seinem Namen abgestimmt werden.
  • Wir verlassen uns auf die Zuverlässigkeit bestimmter kryptographischer Algorithmen und der Existenz von gutem Zufall im Computer. Algorithmen können noch nicht entdeckte Schwachstellen besitzen und Computer fälschlicherweise mit vorhersagbarem Zufall arbeiten.

Abgesehen von den oben aufgezählten Schwachstellen gibt es bei eVoting auch noch die grundsätzliche Kritik, dass jedes in Software implementierte Verfahren für einen gewissen Teil der Benutzer nicht transparent ist. Nicht jeder kann programmieren oder die verwendeten mathematischen Verfahren verstehen. Diese Benutzer müssen sich darauf verlassen können, dass genug Fachleute das jeweilige eVoting-Verfahren prüfen und allfällige Schwachstellen aufdecken.

Andererseits ist auch bei den klassischen Papierwahlen sehr viel Vertrauen im Spiel. Diese wären nicht innert nützlicher Zeit durchführbar, wenn jeder einzelne Wähler alle Stimmen selber auszählen würde oder die Abgabe jeder Stimme selber prüfen wollte. Stimmenzähler haben zudem Einblick in die Stimmzettel, die Anonymität ist hier also auch nicht immer gewahrt.

Egal wie man Demokratie implementiert: Es sind immer Manipulationen möglich, man vertraut in jedem Fall einem bestimmten System. Und insbesondere bei knappen Resultaten, geringer Wahlbeteiligung oder Repräsentationssystemen ist die Legitimation des Resultats oft fragwürdig. Also immer schön kritisch bleiben und das System regelmässig prüfen. Auch eVoting ist nicht nur eine Software, sondern nur ein Baustein in einem komplexen System.