Index by title

PiVote FAQ

Wir möchten in diesem Thread Fragen und Antworten zu PiVote sammeln. Fragen könnt Ihr einfach als Antwort auf diesen Beitrag stellen, unsere Antworten werden dann in diesem Beitrag hinzugefügt. Dies soll eine interaktive Ergänzung und Einleitung zu den Texten über PiVote im Wiki sein.

Wo finde ich Informationen über dieses Team und PiVote?

Wir haben eine (nicht immer ganz aktuelle) Übersichtsseite im Wiki. Die anderen beiden wichtigen Links sind sicher die Wiki-Seiten über [url=http://wiki.piratenpartei.ch/wiki/PiVote]PiVote[/url] und der Überblick zu PiVotes Sicherheit. An der Cosin 2010 hatten wir Gelegenheit PiVote vorstellen zu dürfen. Von jenem Vortrag existieren Folien, die auf den letzten beiden Seiten verschiedene der weiter unten beschriebenen Verfahren in hübsche Graphiken zusammenfassen.

Was genau ist der Zweck von PiVote?

PiVote soll uns Piraten erlauben, sichere, transparente und trotzdem anonyme Abstimmungen durchzuführen. Da das Paranoia-Niveau bei uns Piraten recht hoch ist, wollten wir uns mit nichts Geringerem zufrieden geben. Entscheidungen über Foren-Polls (beschränkt transparent und anonym, nicht sicher) oder nach dem Debian-Mailinglisten-Wahlschema (sicher und transparent, aber nicht anonym) zu treffen, kam daher genauso wenig in Frage wie ein kommerzielles Blackbox-Wahlmaschinen-System (angeblich sicher und anonym, aber völlig intransparent).

Was für Entscheidungen möchte die Piratenpartei mit Hilfe von PiVote treffen können?

Die Urabstimmung, der Artikel 15 unserer Parteistatuten, definiert was wir ausserhalb der Piratenversammlung beschliessen können:

Per Urabstimmung werden alle Entscheidungen gefällt, die nicht der Piratenversammlung vorbehalten sind, was insbesondere folgende Beschlüsse umfasst:

  1. Verabschiedung oder Änderung des Parteiprogramms;
  2. Parolenfassung für nationale Abstimmungen;
  3. vom Vorstand beantragte Konsultativabstimmungen;

Welche Entscheidungen wird die Piratenpartei nicht mit Hilfe von PiVote treffen können?*

Exklusiv der Piratenversammlung vorbehalten sind, gemäss Artikel 8 unserer Parteistatuten :

Die Piratenversammlung ist zuständig für:

  1. Genehmigung der Versammlungsordnung und Abstimmungsordnung;
  2. Abnahme des Protokolls der vorangegangenen Piratenversammlung;
  3. Abnahme des Jahresberichtes und der Jahresrechnung;
  4. Abnahme des ordentlichen Budgets für das laufende Rechnungsjahr;
  5. Déchargeerteilung der Vorstandsmitglieder;
  6. die Absetzung des Vorstands, der Geschäftsprüfungskommission und der Abstimmungsbeauftragten durch eine Zweidrittelmehrheit;
  7. Wahl des Vorstandes;
  8. Wahl der Geschäftsprüfungskommission;
  9. Wahl der Abstimmungsbeauftragten;
  10. Statutenänderungen;
  11. Ausschluss und Mutationen von Mitgliedern;
  12. Erledigung aller Anträge und Geschäfte der Traktandenliste.

Ist automatisch jede PiVote-Abstimmung gültig? Kann ich auch selber Anträge einreichen? Wie erfahre ich von einer laufenden PiVote-Abstimmung?

Auch dies ist in Artikel 15 unserer Parteistatuten definiert:

Eine Urabstimmung ist Beschlussfähig, wenn sie ordentlich angekündigt wurde und gemäss den Zahlen zum Zeitpunkt der Eröffnung der Abstimmung mindestens 20% aller Mitglieder mit gültigem Zertifikat ihre Stimme abgegeben haben.
Jede Urabstimmung ist mindestens eine Woche vor deren Beginn im Parteiorgan und per Brief oder E-Mail anzukündigen. Die Ankündigung umfasst mindestens den Wortlaut aller Anträge sowie die Art der Abstimmung, Zeitpunkt und Abstimmungsfristen.
Die Abstimmungsfrist beträgt mindestens 14 Tage.
Anträge für eine Urabstimmung werden beim Vorstand eingereicht, der diese umgehend zur öffentlichen Diskussion stellt.

Wie muss ich mir eine einzelne Abstimmung in PiVote vorstellen?

Jede Abstimmung besteht aus einer oder mehreren zusammengehörigen Fragen (Beispiel: "Wollt Ihr ein Glace?", "Wenn ja, welche Sorte?") und zugehörigen Antworte-Optionen (Beispiel: "Ja" und "Nein", "Vanille, Schokolade, Erdbeer"). Da man bei einer elektronischen Abstimmung nicht leer Abstimmen oder sich Enthalten kann (sich gar nicht an der Abstimmung zu beteiligen wäre noch eine vierte Option), sollte stets eine weitere, neutrale Option angeboten werden (Beispiel: "Enthaltung" oder "Keine der obigen Varianten").

Im PiVote-Programm wählst Du die gewünschte Abstimmung aus und beantwortest die Fragen wie gewünscht. Danach wird Deine Stimme verschlüsselt und an den Server übermittelt. Der Server prüft ob die Stimme mit einem gültigen Zertifikat eingereicht wurde und stellt dann mit Hilfe von Zero-Knowledge-Beweisen sicher, dass Deine Stimme eine gültige Antwort enthält ohne die Stimme zu entschlüsseln (das ist ähnlich dem Loch im Stimmcouvert, welches den Stimmenzählern erlaubt zu sehen ob ein gültiger Stimmzettel darin ist, ohne den Umschlag zu öffnen).

Was muss vorbereitet werden, damit eine einzelne Abstimmung in PiVote durchgeführt werden kann?

Nachdem ein Antrag auf eine Abstimmung beim Vorstand eingegangen ist, wird er im Forum zur Diskussion gestellt und alle Piraten per Mail oder Brief informiert. Darauf folgt eine einwöchige Frist: Zeit um den Antrag über Forum, Text- und Voice-Chat zu diskutieren und in alle jeweils unterstützten Sprachen zu übersetzen (diese sind derzeit Französisch und Deutsch, Italienisch künftig sicher auch uns fehlt hier noch ein Übersetzer). Dann wird der PiVote-Administrator die Abstimmung vorbereiten indem er die Fragen und Optionen in allen übersetzten Sprachen erfasst. Damit die Abstimmung beginnen kann muss jede der fünf Wahlauthoritäten mit Ihrem Schlüssel die Abstimmung signieren, dabei erhält er einen Teilschlüssel welche am Ende alle nötig sind um das Resultat zu errechnen und der öffentliche Schlüssel der Abstimmung wird generiert. Danach kann man an der Abstimmung teilnehmen. Damit möglichst alle Piraten die Chance haben teilzunehmen, läuft die Abstimmung mindestens zwei Wochen.

Was muss ich tun damit ich an einer PiVote-Abstimmung teilnehmen kann?

Du musst mit Deinem PiVote-Client ein Zertifikat und einen zugehörigen Zertifikatsantrag generieren. Der Zertifikatsantrag wird ausgedruckt und an ein Authorisierungstreffen mitgebracht. Wir planen das erste diese Treffen an der nächsten PV und danach regelmässig an unseren Stammtischen in der ganzen Schweiz durchzuführen. Dabei müssen drei der fünf Authoritäten Deine Identität beglaubigen (dafür bitte einen Ausweis, ID, GA oder ähnliches mitbringen) und Deinen Zertifikatsantrag unterzeichnen. Der Antrag wird dann dem Aktuar übergeben der nun ohne Dich persönlich kennen zu müssen nur noch prüfen muss, ob Du auch Parteimitglied bist. Wenn ja, kann er Deinen Zertifikatsantrag in PiVote bestätigen und Du kannst an Abstimmungen teilnehmen.

Wie funktioniert das Auszählen der Stimmen einer PiVote-Abstimmung?

*Wenn die Abstimmungsfrist abgelaufen ist, wird die Abstimmung geschlossen. Danach werden alle Stimmen miteinander homomorph verrechnet. Die Authoritäten können dieses verschlüsselte Resultat dann mit Ihrem Teilschlüssel teilentschlüsseln. Sobald vier der fünf Authoritäten Ihr Teilergebnis auf dem Server veröffentlicht haben, kann jeder Abstimmende daraus mit PiVote das Abstimmungsresultat nachrechnen. Dabei erlaubt die Verschlüsselung der Stimmen, dass wir diese veröffentlichen können, ohne dass diese je von einem einzelnen Beteiligten (Abstimmende und Authoritäten) entschlüsselt werden könnten. Die Auszählung wird dabei nicht auf dem Server durchgeführt sondern auf den PiVote-Clients.

Wie kann ich mir sicher sein, dass die Abstimmung nicht manipuliert wurde?

*Der Server bestätigt den Erhalt einer gültigen Stimme mit einer Signatur. Mit dieser kann PiVote bei der Auszählung prüfen ob die eigene Stimme Teil des Resultates ist. Dazu muss man im PiVote-Client lediglich eine abgeschlossene und ausgezählte Abstimmung auswählen und diese prüfen. Der eigene Client lädt dann alle verschlüsselten Stimmen, das verschlüsselte Resultat und die Teilergebnisse herunter. Er prüft ob die eigene Stimme darunter ist, ob die alle Stimmen zusammen zum den selben Resultat führen und zählt dann die Teilergebnisse aus.

Welche Probleme können auch mit PiVote nicht ausgeschlossen werden?


PiVote Sicherheit

Sicherheitsanforderungen

Verfeinerungen

Die oben genannten Anforderungen führen zu weiteren:

Annahmen

Aussagen über die Sicherheit werden nur unter diesen annahmen gemacht.

ADDER in a nutshell

Um die Stimmen geheim zu halten, werden diese vor der Abgabe vom Wähler verschlüsselt. Dies geschieht mit einer homomorphen Verschlüsselung, so dass die Stimmen im verschlüsselten Zustand zusammengezählt werden können und dann nur das Resultat entschlüsselt wird.

Damit niemand den Schlüssel besitzt und damit eine Stimme entschlüsseln könnte wird der öffentliche und private Schlüssel vor jeder Abstimmung von 5 Autoritäten generiert, so dass 3 dieser Autoritäten keine Information über den privaten Schlüssel haben, 4 dieser Autoritäten aber zusammen das Resultat entschlüsseln können. Der öffentliche Schlüssel wird dabei ebenfalls generiert und publiziert.

Damit kein Wähler eine mehrfache Stimme abgeben kann muss er in Zero Knowledge beweisen, dass sein Couvert zu jeder Frage nur die erlaubte Anzahl Stimmen enthält.

Nach der Abstimmung zählt jede Autorität alle verschlüsselten Stimmen zusammen und erzeugt eine Teilentschlüsselung. Mithilfe von Teilentschlüsselungen von 4 verschiedenen Autoritäten kann das Resultat entschlüsselt werden.

Zertifikate

Jeder Wähler, jede Autorität und jeder Administrator des Pi-Vote Systems benötigt ein Zertifikat mit eine öffentlichen und einem geheimen Schlüssel, um sich gegenüber den anderen Teilnehmern zu Identifizieren.

Dieses Zertifikat wird von einer speziellen Zertifierungsstelle signiert, so das jeder nachprüfen kann, ob es echt ist.

Warum ist es nun sicher?

Dieser Abschnitt soll intuitiv Zeigen, warum das System sicher ist. Für Beweise, bitte das Paper zu ADDER lesen.

Der Inhalt der abgegebenen Stimmen soll nur dem Wähler bekannt sein

Jeder Wähler verschlüsselt seine Stimme mit dem öffentlichen Schlüssel der Autoritäten. Nur die 4 Autoritäten können gemeinsam eine Stimme oder das Ergebnis entschlüsseln. Sind also mindestens 2 der Autoritäten vertrauenswürdig, so wird keine Stimme bekannt.

Jeder Wähler soll prüfen können, ob seine Stimme gezählt wurde

Jeder Wähler kann die gesamte Abstimmung selbst auszählen und prüfen, ob seine Stimme dabei ist. Er kann auch prüfen, ob die Autoritäten die Stimmen richtig zusammengezählt haben.

Kein Wähler soll mehr als einmal stimmen können

Sowohl die Autoritäten als auch jeder auszählende Wähler wird jede Stimme nach der ersten vom gleichen Wähler ignorieren.

Niemand soll eine Stimme manipulieren, erfinden oder löschen können,

ausser seine eigene, falls er Stimmberechtigt ist

Alle stimmen sind vom Wähler signiert. Somit würde jede Manipulation zur ungültigkeit der Stimme führen. Nur die Zertifizierungstelle kann ein Zertifikat für einen neuen Wähler ausstellen.


Pi-Vote Testing

Im folgende wird beschrieben, wie neue Versionen von Pi-Vote getestet werden.

Prozedur

Für ein neues Release ist folgende Prozedur einzuhalten und zu Protokollieren:
  1. Änderungen festhalten
  2. Version anpassen
  3. Tag erstellen
  4. git push
  5. Build und upload als Testing
  6. Testserver updaten
  7. Testing anstossen
  8. Freigabe durch Registrar
  9. Upload als Release
  10. Produktivserver updaten

Notfallpatch Prozedur

Für Notfallpatches ist folgende Prozedur einzuhalten und zu Protokollieren:
  1. Anordnung durch Registrar
  2. Minimale Änderung ab Label
  3. Änderungen festhalten
  4. Version anpassen
  5. Tag erstellen
  6. git push
  7. Build und upload als Testing
  8. Testserver updaten
  9. Testing durch Entwickler/Team/Registrar
  10. Freigabe durch Registrar
  11. Upload als Release
  12. Produktivserver updaten

Testausführung

Die Testscripte sind wie folgt aufgebaut:

  1. Aktion des Benutzers
  2. Aktion des Benutzers

Meldung

Sowohl erfolgreiche aus auch nicht erfolgreiche Tests per Ticket melden:

Ticket erstellen

Bei Fehler zunächst nachschauen, ob ein entsprechendes Bug-Ticket schon existiert. Falls ja, neue Information bitte dort hinzufügen. Falls nein, ein neues Ticket für den Fehler eröffnen.

Fragen

Account für Tickets melden

Wer nicht PPS Mitglied ist und Tickets melden möchte nacht Tests oder Bugs, bitte einen Forenaccount erstellen und dann kann man sich mit Benutzernamen und Passwort hier im Redmine einloggen und Tickets erstellen.


Testschript 1

Zertifikat und Antrag für Papierprozess erstellen

Voraussetungen

Ablauf

  1. Circle starten
  2. Eintrag Pi-Vote Test Server auswählen und mit OK bestätigen
  3. Menu Zertifkate / Erstellen anwählen
  4. Option Wählerzertifikat für die Piratnepartei Schweiz anwählen und mit Weiter bestätigen
  5. Eingaben vornehmen und mit Weiter bestätigen
  6. Funktionieren emailadresse eintragen und Email-Benachrichtigungen erhalten anwählen, dammit mit Weiter bestätigen
  7. Option Privaten Schlüssel verschlüsseln auswählen, Passwort ausdenken, merken und zweimal eingeben, dann mit OK bestätigen
  8. Option Persönliche Identifikation auswählen und mit Weiter bestätigen
  9. Hochladen klicken
  10. PDF speichern klicken, dann Speicherort und Dateinamen auswählen
  11. Mit Fertig bestätigen
  12. Menu Zertifkat / Managen klicken

Resultat

Ticket erstellen


Testscript 2

Testet das Abstimmen

Voraussetzungen

Ablauf

  1. Circle starten
  2. Eintrag Pi-Vote Test Server auswählen und mit OK bestätigen
  3. Bei der offenen Abstimmung auf Abstimmen clicken
  4. Option anwählen und mit Abstimmen bestätigen

Resultat

Ticket erstellen


Testscript 3

Testet das auszählen einer Abstimmung

Voraussetzungen

Ablauf

  1. Circle starten
  2. Eintrag Pi-Vote Test Server auswählen und mit OK bestätigen
  3. Ins Archiv wechseln
  4. Bei der beendeten Abstimmung auf Auszählen klicken

Resultat

Ticket erstellen


Testscript 4

Abgeleitetes Zertifikat für Untergruppe erstellen

Voraussetzungen

Ablauf

  1. Circle starten
  2. Eintrag Pi-Vote Test Server auswählen und mit OK bestätigen
  3. Menu Zertifikat / Erstellen klicken
  4. Wählerzertifikat für eine Sektion oder Untergruppe auswählen und mit Weiter bestätigen
  5. Daten eingeben und mit Weiter bestätigen
  6. Funktionieren emailadresse eintragen und Email-Benachrichtigungen erhalten anwählen, dammit mit Weiter bestätigen
  7. Option Privaten Schlüssel verschlüsseln auswählen, Passwort ausdenken, merken und zweimal eingeben, dann mit OK bestätigen
  8. Hochladen klicken
  9. Mit Fertig bestätigen
  10. Menu Zertifkat / Managen klicken

Resultat

Ticket erstellen


Systemtest

Testet den Gesamtablauf auf einem Rechner

Voraussetzungen

Ablauf

  1. Abstimmung erstellen

Resultat

Ticket erstellen


Testing Version PiVote 1.4.2.0

Testlauf ABGEBROCHEN

Installation von Testing in Files

Prozedur

Tests

Resultate werden anschliessend hier eingetragen.

Test OS and Version Tester Date Result Tickets
Testing>Script1 Windows 7, 64bit STH 2013-06-27 OK -
Testing>Script1 Windows ???
Testing>Script1 Ubuntu/Debian ???
Testing>Script1 Ubuntu/Debian ???
Testing>Script1 Non-Deb Linux ???
Testing>Script1 Non-Deb Linux ???
Testing>Script1 Mac OS X ???
Testing>Script1 Mac OS X ???
Testing>Script2 Windows 7, 64bit STH 2013-06-27 OK -
Testing>Script2 Windows ???
Testing>Script2 Ubuntu/Debian ???
Testing>Script2 Ubuntu/Debian ???
Testing>Script2 Non-Deb Linux ???
Testing>Script2 Non-Deb Linux ???
Testing>Script2 Mac OS X ???
Testing>Script2 Mac OS X ???
Testing>Script3 Windows 7, 64bit STH 2013-06-27 OK -
Testing>Script3 Windows ???
Testing>Script3 Ubuntu/Debian ???
Testing>Script3 Ubuntu/Debian ???
Testing>Script3 Non-Deb Linux ???
Testing>Script3 Non-Deb Linux ???
Testing>Script3 Mac OS X ???
Testing>Script3 Mac OS X ???
Testing>Script4 Windows 7, 64bit STH 2013-06-27 OK -
Testing>Script4 Windows ???
Testing>Script4 Ubuntu/Debian ???
Testing>Script4 Ubuntu/Debian ???
Testing>Script4 Non-Deb Linux ???
Testing>Script4 Non-Deb Linux ???
Testing>Script4 Mac OS X ???
Testing>Script4 Mac OS X ???
Testing>Systemtest Windows 7, 64bit STH 2013-06-27 OK -

Testing Version PiVote 1.4.3.0

Testlauf ABGEBROCHEN

Installation von Testing in Files

Prozedur


Testing Version PiVote 1.4.4.0

Installation von Testing in Files

Prozedur


Vorbereitung


Pi-Vote Installation

Windows 7/8

  1. Aktuelle Version herunterladen.
  2. Setup ausführen, den Dialogen folgen.
  3. Circle aus dem Startmenü starten.

Debian/Ubuntu

  1. Mono installieren: Packet mono-complete verwenden.
  2. Aktuelle Version herunterladen.
  3. Circle vom Desktop starten.

Mac OS X

  1. Mono herunterladen.
  2. Mono installieren, den Dialogen folgen.
  3. Aktuelle Version herunterladen.
  4. Die Zip-Datei per Doppelklick auspacken.
  5. Die Pi-Vote App in die Applications ziehen.

Windows XP

  1. Das .Net Framework 3.5 herunterladen.
  2. Das .Net Framework 3.5 installieren, den Dialogen folgen.
  3. Aktuelle Version herunterladen.
  4. Setup ausführen, den Dialogen folgen.
  5. Circle aus dem Startmenü starten.

Arch Linux

  1. pivote-bin aus dem AUR installieren (https://aur.archlinux.org/packages/pivote-bin/), z.B. mit yaourt -S pivote-bin
  2. Circle mit pivote-circle starten.

Andere Linuxe

  1. Mono aus dem Packetmanager installieren.
  2. Aktuelle Version herunterladen.
  3. Zip-Archiv auspacken
  4. Circle mit dem Befehl mono Pirate.PiVote.Circle.exe starten.

Weitere Infos

Testing

Hier gehts zum Testing