Benutzer:Cmrcx/Basisentscheid/Sicherheit

Aus Piratenwiki
Wechseln zu: Navigation, Suche

Hier sind die Überlegungen zu den Themen Sicherheit, Nachvollziehbarkeit und Datenschutz, die meiner Implementierung der Basisentscheid-Software zu Grunde liegen.

Sicherheit

Weboberfläche

Der Zugriff auf die Website wird nur verschlüsselt über HTTPS ermöglicht. Damit werden auch eingegebene Zugangsdaten nur verschlüsselt übertragen.

In der Weboberfläche gibt es eine Authentifizierung für Mitglieder und eine separate für Verantwortliche. Beide erfolgen durch einen Benutzernamen und ein Passwort.

Authentifizierung von Mitgliedern

Die Mitglieder registrieren sich mit einem per E-Mail von der Mitgliederverwaltung erhaltenen Einladungscode. Dieser kann einen Monat lang zur einmaligen Registrierung verwendet werden, ansonsten muss ein neuer Einladungscode beantragt werden. Bei der Registrierung muss ein Benutzername, ein Passwort und eine E-Mail-Adresse angegeben werden. Anschließend können alle diese Angaben jederzeit wieder in der Weboberfläche geändert werden.

Ein Benutzername muss zwischen 3 und 32 Zeichen lang sein und darf noch nicht bereits von einem anderen Benutzer verwendet werden. Der Benutzername wird sowohl für die Anmeldung als auch für die Anzeige verwendet.

Ein Passwort muss mindestens 8 Zeichen lang sein. Bei Änderung eines Passworts wird eine E-Mail-Benachrichtigung verschickt. Falls das Passwort vergessen wird, kann man zu einem Benutzernamen eine E-Mail mit einem Rücksetzcode an die bei diesem Benutzer hinterlegte E-Mail-Adresse anfordern. Um keine Rückschlüsse auf existierende und nicht-existierene Benutzernamen zuzulassen, wird nicht angezeigt, ob die E-Mail tatsächlich verschickt werden konnte. Nur falls keine E-Mail-Adresse hinterlegt ist, wird dies angezeigt.

Eine E-Mail-Adresse wird erst verwendet, nachdem sie innerhalb von 7 Tagen mit einem per Mail an diese Adresse gesendeten Code bestätigt wurde. Gleichzeitig wird auch eine Benachrichtigung an die alte Mail-Adresse geschickt, um eine unbefugte Änderung zu bemerken. Wenn der Code nicht bestätigt wird, ist erst eine Stunde später ein erneuter Versuch mit einer anderen E-Mail-Adresse möglich.

Authentifizierung der Verantwortlichen

Die Benutzerkonten der Verantwortlichen werden im Bereich der Verantwortlichen verwaltet. Ein neuer Verantwortlicher kann von einem bestehenden Verantwortlichen mit vorläufigem Passwort angelegt werden. Anschließend kann er sein Passwort selbst ändern. Der erste Verantwortliche kann mit dem Script cli/create_admin.php angelegt werden. Jeder Verantwortliche kann die Benutzernamen und Passwörter alle Verantwortlichen ändern oder sie löschen. Es gibt keine Einschränkungen, um einen Missbrauch zu verhindern, da die Verantwortlichen diese ohnhin umgehen könnten.

Mitgliederimport

(noch zu klären)

Server

Es werden die üblichen Sicherheitsmaßnahmen angewandt. Als Betriebssystem wird Linux verwendet. Aktuelle Sicherheitsupdates werden regelmäßig eingespielt. Auf dem Server laufen keine weiteren Anwendungen außer den für den Basisentscheid erforderlichen.

Zugang zum Server dürfen nur die Administratoren erhalten. Nicht mehr aktiven Adminstratoren wird der Zugang entzogen. Es sollte mindestens zwei Administratoren geben, aber nicht mehr als notwendig. Administratoren sollten nach Möglichkeit immer auch Verantworliche sein, weil man ihnen vertrauen können muss und sie deshalb gewählt werden sollten.

Nachvollziehbarkeit

Da Sicherheit nur bis zu einem bestimmten Grad möglich ist, ist es wichtig, Manipulationen erkennen zu können. Online-Abstimmungen sollen nach Möglichkeit öffentlich, zumindest aber für die Teilnehmer möglichst gut nachvollziehbar sein. Die korrekte Erfassung seiner eigenen Stimme kann nur der Teilnehmer selbst nachvollziehen. Jeder Teilnehmer ist selbst dafür verantwortlich, was mit seiner Stimme geschieht.

Nachvollziehbarkeit der Online-Abstimmung

Zum Beginn einer Abstimmung zu einem Thema wird jedem in der entsprechenden Gliederung Stimmberechtigten ein Token zugeordnet. Stimmberechtigt in einer Gliederung ist ein Mitglied, wenn es registriert, stimmberechtigt, verifiziert und in der entsprechenden Gliederung ist. Jeder Teilnehmer bekommt eine Benachrichtigungsmail mit allen abzustimmenden Themen, seinem jeweiligen Token und der jeweiligen Liste aller Token.

Mitglieder, die erst nach Abstimmungsbeginn in der Gliederung stimmberechtigt werden, können an der entsprechenden Abstimmung nicht mehr teilnehmen. Verliert ein Mitglied während der Abstimmung seine Stimmberechtigung, kann es bis zum Ende der Abstimmung uneingeschränkt weiter an der Abstimmung teilnehmen. Es ist also nur die Stimmberechtigung zum Abstimmungsbeginn relevant.

Ein Token besteht aus 8 zufälligen Zeichen aus [a-z][A-Z][0-9]. Es ist sichergestellt, dass ein bestimmtes Token eindeutig ist, also niemals gleichzeitig für mehrere Themen oder Teilnehmer verwendet wird. Ein längeres Token ist nicht notwendig, da dieses nur zur Identifizierung, aber nicht zur Authentifizierung verwendet wird. Nach dem Löschen der Abstimmungs-Rohdaten kann ein Token aber erneut verwendet werden.

Hat ein Teilnehmer abgestimmt, bekommt er eine Belegmail mit dem Thema, seinem Benutzernamen, seiner Benutzer-ID, seinem Token, seinem Stimmverhalten und dem Abstimmungszeitpunkt. Mehrmaliges Abstimmen ist möglich, es wird dann eine weitere Belegmail verschickt und es zählt die zuletzt abgegebene Stimme.

Sowohl die Mail zur Abstimmungsbenachrichtigung als auch die Belegmails sind signiert und, falls der Benutzer seinen Schlüssel hinterlegt hat, auch verschlüsselt.

Nach der Auszählung wird eine Liste aller Token mit ihrem jeweiligen Stimmverhalten und dem jeweiligen Abstimmungzeitpunkt angezeigt. Wenn ein Teilnehmer mehrmals abgestimmt hat, werden alle diese Stimmabgaben angezeigt, aber entsprechend gekennzeichnet.  Um zu zeigen, dass diese Seite nicht für verschiedene Benutzer unterschiedlich dargestellt wird, ist sie auch ohne Anmeldung aufrufbar.

Jeder Teilnehmer kann nun ...

  • ... die Auszählung anhand der Ergebnisliste nachzählen.
  • ... prüfen, ob in der Ergebnisliste sein Token mit seinem Stimmverhalten richtig aufgeführt ist. Auch wenn ein Teilnehmer nicht abgestimmt hat, kann er prüfen, ob sein Token ohne eine abgegebene Stimme in der Liste steht. Falls der Teilnehmer Abweichungen feststellt, kann er mit den signieren Belegmails belegen, wie er abgestimmt hat.
  • ... prüfen, ob die Liste aller Token zu Beginn der Abstimmung mit den Token in der Ergebnisliste übereinstimmt.

Nachvollziehbarkeit der Abstimmung über das Abstimmungsverfahren

Die Teilnehmer haben ab der Einreichung eines Antrags die Möglichkeit, für den Abstimmungsblock eine Urnenabstimmung zu fordern. Während der Abstimmung werden keine Informationen über den aktuellen Stand angezeigt. Die Abstimmung läuft bis entweder das Quorum erreicht ist oder die Abstimmungsvorbereitung beginnt.

Wenn ein Teilnehmer abstimmt, wird im beim ersten mal ein neues zufälliges Token zugeordnet. Er bekommt eine Belegmail mit dem Thema, seinem Benutzernamen, seiner Benutzer-ID, seinem Token, seinem Stimmverhalten und dem Abstimmungszeitpunkt. Mehrmaliges Abstimmen ist möglich, es wird dann eine weitere Belegmail verschickt und es zählt die zuletzt abgegebene Stimme.

Nach dem Ende der Abstimmung wird eine Liste aller abgegebenen Stimmen mit Token und Abstimmungszeitpunkt veröffentlicht.

Jeder Teilnehmer kann nun ...

  • ... die Stimmen nachzählen und mit dem Quorum vergleichen.
  • ...  prüfen, ob in der Ergebnisliste sein Token mit seinem Stimmverhalten richtig aufgeführt ist. Wenn er nicht abgestimmt hat, dürfte ihm zumindest keine Stimme als seine eigene markiert angezeigt werden. Falls der Teilnehmer Abweichungen feststellt, kann er mit den  signieren Belegmails belegen, wie er abgestimmt hat.

Es kann nicht nachvollzogen werden, ob zusätzliche positive Stimmen hinzugefügt wurden und so möglicherweise zu unrecht eine geheime Abstimmung durchgeführt wird. Dies ist aber auch nicht besonders schlimm, da sich dadurch nur der Aufwand erhöht, aber niemandem seine Rechte vorenthalten werden.

Nachvollziehbarkeit der Unterstützung von Anträgen

Wenn ein Teilnehmer einen Antrag unterstützt, wird das direkt allen Mitgliedern angezeigt. Wenn der Teilnehmer einer der Antragsteller ist, wird der eingegebene Antragstellername für die Anzeige verwendet, ansonsten hat der Teilnehmer die Wahl, ob er mit seinem Benutzernamen oder anonym angezeigt werden möchte.

Mögliche Manipulationsszenarien

  • Jemand hat Zugang zur Mitgliederverwaltung und manipuliert die Mitgliederdaten.
    • Es gibt keine Möglichkeit, das in der Basisentscheid-Software zu verhindern. Sofern nicht ein berechtigtes Mitglied die Manipulation seiner Daten bemerkt, gibt es auch kaum Möglichkeiten, Manipulationen zu erkennen.
  • Jemand liest unbefugt die E-Mail mit dem Einladungscode eines Mitglieds und registriert sich damit.
    • Wenn das wirkliche Mitglied sich dann später registrieren will, wird es feststellen, dass der Registrierungscode bereits verwendet wurde.
    • Wenn das wirkliche Mitglied sich bereits registriert hat, ist der Registrierungscode nicht mehr verwendbar.
    • Wenn dies erst einen Monat nach dem Versand der Einladungen geschieht, ist der Registrierungscode inzwischen abgelaufen.
    • Es gäbe statt einem Versand der Einladungscodes per E-Mail auch die Möglichkeiten, die Einladungscodes per Brief oder persönlich zu übergeben.
  • Jemand erfährt die Zugangsdaten eines Teilnehmers ...
    • ... und stimmt damit ab.
      • Der Teilnehmer wird durch die Belegmail darauf aufmerksam.
      • Falls der Teilnehmer danach selbst abstimmen will, könnte ihm auffallen, dass bereits abgestimmt wurde. Der Teilnehmer kann die Stimme durch seine eigene überschreiben.
    • ... und stimmt über das Wahlverfahren ab.
      • Der Teilnehmer wird durch die Belegmail darauf aufmerksam.
      • Falls der Teilnehmer danach selbst abstimmen will, könnte  ihm auffallen, dass bereits abgestimmt wurde. Der Teilnehmer kann die  Stimme durch seine eigene überschreiben.
      • Nach der Festlegung des Wahlverfahrens könnte der Teilnehmer die nicht von ihm stammenden Stimmen in der Liste der Stimmen sehen. Dass diese nicht von ihm sind, kann er allerdings nicht belegen.
    • ... und ändert dessen Mailadresse, um die Belegmail zu verhindern.
      • Der Teilnehmer wird durch eine Benachrichtigungsmail an seine alte Mailadresse darauf aufmerksam.
      • Dem Teilnehmer könnte auffallen, dass seine Mailadresse geändert wurde. Falls danach wieder die alte Mailadresse eingetragen wird, um die Änderung zu verdecken, bekäme der Teilnehmer wieder eine Aufforderung zur Bestätigung dieser Mailadresse.
  • Jemand hat als Admin oder unbefugt Zugang zum Server ...
    • (Online-Abstimmung)
      • ... und verändert oder löscht eine bereits abgegebene Stimme in der Datenbank.
        • Fällt auf, wenn der Teilnehmer seine Stimme in der Ergebnisliste mit der Belegmail seiner zuvor selbst abgegebenen Stimme vergleicht. Falls er keine Belegmail bekommen hat, kann er nocheinmal abstimmen, seine Mailadresse überprüfen und wenn das alles nicht hilft, die Administratoren ansprechen.
      • ... und trägt eine Stimme für einen existierenden Teilnehmer in die Datenbank ein.
        • Falls der Teilnehmer danach selbst abstimmen will, könnte ihm auffallen, dass bereits abgestimmt wurde. Der Teilnehmer kann die Stimme durch seine eigene überschreiben.
          • Um dies zu verhindern, könnte jemand die Manipulation erst kurz vor der Auszählung machen und dabei aber zufällige Abstimmzeitpunkte eintragen, damit es bei größerem Umfang in der Ergebnisliste nicht auffällt.
        • Falls der Teilnehmer nicht abstimmt, wird es ihm auffallen, wenn er sein Token in der Ergebnisliste überprüft.
      • ... und fügt ein zusätzliches Token mit einer Stimme in die Datenbank ein.
        • Fällt auf, wenn jemand die Listen der Token beim Abstimmungsbeginn und die Ergebnisliste vergleicht. Um in der Datenbank ein Token hinzufügen zu können, muss man dieses außerdem einem Mitglied zuordnen. Ein bestehendes Mitglied könnte das an der Kennzeichnung in der Ergebnisliste bemerken, eine neues Mitglied würde beim Abgleich mit der Mitgliederverwaltung auffallen.
      • ... und löscht ein Token in der Datenbank.
        • Fällt auf, wenn der entsprechende Teilnehmer abstimmen will und die Meldung bekommt, dass ihm kein Token zugeordnet ist.
        • Fällt auf, wenn der Teilnehmer sein Token in der Ergebnisliste überprüft und nicht findet.
        • Fällt auf, wenn jemand die Listen der Token beim Abstimmungsbeginn und die Ergebnisliste vergleicht.
    • (Abstimmung über das Abstimmungsverfahren)
      • ... und verändert oder löscht eine bereits abgegebene Stimme in der Datenbank.
        • Fällt  auf, wenn der Teilnehmer seine Stimme in der Ergebnisliste mit der Belegmail seiner zuvor selbst abgegebenen Stimme vergleicht. Falls er  keine Belegmail bekommen hat, kann er nocheinmal abstimmen, seine  Mailadresse überprüfen und wenn das alles nicht hilft, die  Administratoren ansprechen.
      • ... und trägt eine Stimme für einen existierenden Teilnehmer in die Datenbank ein.
        • Falls der Teilnehmer danach selbst abstimmen will, könnte ihm auffallen, dass  bereits abgestimmt wurde. Der Teilnehmer kann die Stimme durch seine eigene überschreiben.
        • Falls der Teilnehmer nicht abstimmt, wird es ihm auffallen, wenn ihm trotzdem Stimmen in der Ergebnisliste zugeordnet sind.
      • ... und fügt ein zusätzliches Token mit einer Stimme in die Datenbank ein.
        • Um in der Datenbank ein Token hinzufügen zu  können, muss man dieses einem Mitglied zuordnen. Ein bestehendes Mitglied könnte das an der Kennzeichnung in der  Ergebnisliste bemerken, eine neues Mitglied würde beim Abgleich mit der Mitgliederverwaltung auffallen.
      • ... und löscht eine Stimme aus der Datenbank.
        • Fällt auf, wenn der Teilnehmer sein Token in der Ergebnisliste überprüft und nicht findet.
    • (Unterstützung von Anträgen)
      • ... und trägt eine Stimme für einen existierenden Teilnehmer in die Datenbank ein oder löscht einen Unterstützer.
        • Könnte dem Teilnehmer auffallen, wenn er den Antrag ansieht.
      • ... und fügt ein zusätzliches Mitglied als Unterstützer in die Datenbank ein.
        • Würde beim Abgleich mit der Mitgliederverwaltung auffallen.
      • ... manipuliert die Software so, dass zusätzliche anonyme Unterstützer angezeigt und gezählt werden.
        • Hier gibt es momentan keine Möglichkeit, das zu erkennen. Jemand könnte so einen Antrag über das Zulassungsquorum bringen. Aber es folgt ja auch noch die Abstimmung. Von daher ist das Verhältnis zwischen Aufwand und Nutzer schlecht.
      • ... manipuliert die Software so, dass einige anonyme Unterstützer, die nicht dem eingeloggten Benutzer entsprechen, nicht angezeigt und gezählt werden.
        • Hier ist der Nutzen noch geringer und der Aufwand höher als beim Fall zuvor.
        • (Dagegen gäbe es die Möglichkeit, für anonyme Benutzer Tokens anzuzeigen. Dann könnte beim Vergleich mehrerer Benutzer auffallen, dass diese nicht die gleichen Token angezeigt bekommen. Der Nutzen ist aber fraglich. Ist momentan nicht implementiert.)

Datenschutz

Grundkonzepte:

  • Es werden nur notwendige Daten gespeichert.
  • Sensible Daten werden nicht angezeigt. Von den Administratoren wird erwartet, dass sie die Daten nicht auslesen oder missbrauchen.
  • Abstimmungsdaten werden nach kurzer Zeit wieder gelöscht, um einen späteren Zugriff zu erschweren.
  • Zuordnung von Mitgliedsaccounts zu wirklichen Personen wird durch ein Token-System erschwert. Zur Zuordnung wäre sowohl ein Zugang zur Mitgliederverwaltung als auch ein Server-Zugang beim Basisentscheid notwendig.
  • Zuordnung innerhalb des Basisentscheids wird durch getrennte Identitäten in der Anzeige verhindert: Antragsteller haben bei jedem einzelnen Antrag und Abstimmer bei jeder einzelnen Abstimmung eine separate Identität.
  • Es darf nicht durch das Verhalten der Software auf verwendete E-Mail-Adressen oder PGP-Schlüssel geschlossen werden können.

gespeicherte mitgliedsbezogene Daten

Folgende Daten werden bei jedem Mitglied von der Mitgliederverwaltung importiert:

  • Einladungscode: Wird von der Mitgliederverwaltung generiert. Die Zuordung der Einladungscodes zu den wirklichen Mitgliedern ist nur in der Mitgliederververwaltung gespeichert.
  • stimmberechtigt: ja/nein
  • verifiziert: ja/nein
  • Gliederungen: Liste der Gliederungen, denen das Mitglied angehört
  • Realname: Wird nur übergeben, wenn ein Mitglied bei der Mitgliederverwaltung angegeben hat, dass sein Realname an den Basisentscheid übergeben werden soll. Bisher ist jedoch nicht klar, ob dies in der Mitgliederverwaltung überhaupt möglich ist. Vorerst bleibt das Feld leer.

Folgende Daten muss jedes Mitglied bei der Registrierung angeben:

  • Benutzername: Ist frei wählbar. Wird als Verfasser von Diskussionsbeiträgen und optional anderen Mitgliedern in der Liste von Unterstützern angezeigt. Der Benutzername ist jederzeit änderbar und ändert sich dann auch an allen Stellen, wo er verwendet wird.
  • Passwort: Das Passwort wird nur in verschlüsselter Form gespeichert.
  • E-Mail-Adresse für Benachrichtigungen: Wird nur dem Mitglied selbst angezeigt. Für Kontaktmöglichkeiten ist dagegen das Profil zu benutzen. Um Zuordnung eines Mitglieds durch die angegebene E-Mail-Adresse zu verhindern, steht es den Migliedern frei, hierfür eine anonyme E-Mail-Adresse zu verwenden.

Folgende Daten kann jedes Mitglied optional angeben:

  • Profil: Hier kann ein Mitglied Informationen über sich und Kontaktmöglichkeiten eintragen, die anderen Migliedern beim Klick auf den Benutzernamen angezeigt werden.
  • Öffentlicher PGP-Schlüssel zur Verschlüsselung der Belegmails: Es steht den Benutzern frei, für diese Anwendung einen eigenen, nicht zuordenbaren PGP-Schlüssel zu generieren.
  • Fingerabdruck des PGP-Schlüssels

Weitere Daten, die über die Mitglieder längerfristig gespeichert werden:

  • Zeitpunkt des ersten Imports des Mitglieds
  • Verfallszeitpunkt des Einladungscodes
  • Zeitpunkt der Registrierung
  • Ausgeblendete Hilfe-Blöcke
  • Antragstexte, die das Mitglied erstellt hat
  • Antragstellerschaft und Antragstellername, sofern nicht zurückgezogen
  • Unterstützung von Anträgen, sofern nicht zurückgezogen
  • Diskussionsbeiträge
  • Bewertungen von Diskussionsbeiträgen

Antragsteller können bei jedem Antrag separat selbst in ein Textfeld eingeben, wie sie bei diesem Antrag angezeigt werden wollen. Diese Eingabe ist bis zum Beginn der Abstimmungsvorbereitung änderbar, danach nicht mehr. Der normale Benutzername eines Antragstellers nie angezeigt, außer den anderen Antragstellern bei der Anfrage, als Antragsteller aufgenommen zu werden.

Die Verantwortlichen können eine Liste aller Mitglieder einsehen, um klären zu können, was los ist, wenn sich ein Mitglied beschwert, dass der Zugang nicht funktioniert oder ähnliches.

Abstimmungsdaten

Die Rohdaten von Abstimmungen und Abstimmungen über das Wahlverfahren stehen im Klartext in der Datenbank und könnten während der Abstimmung und bis zum Löschen der Rohdaten von Personen mit Zugang zum Server ausgelesen werden. Die Rohdaten werden eine Woche nach der Auszählung der Online-Abstimmung oder einem anderen Erreichen eines finalen Status gelöscht. Danach ist das Stimmverhalten der einzelnen Benutzer nur nachvollziehbar, wenn jemand mit Zugang zum Server die Daten kopiert hat. Dass die Adminstratoren diese Daten nicht einsehen und missbrauchen ist durch eine sorgfältige Auswahl der Administratoren, nur eine geringe Anzahl von Personen mit Zugang zum Server und eine Wahl der Adminstratoren, etwa in Form der Verantwortlichen, zu begegnen. Darüber hinaus gehende Bedenken lassen sich nur durch ein Ausweichen auf die geheime Abstimmung per Urne, Brief oder auf einem Parteitag lösen.

Von den Datenbanktabellen mit den Rohdaten sollte auch kein automatisches Backup erstellt werden. Im Fall eines Datenverlusts müssen laufende Abstimmungen eben wiederholt werden. Einen öffentlichen Datenbankdump wird es nicht geben. Alle für die Nachvollziehbarkeit notwendigen Daten werden in der Oberfläche angezeigt.

Kommunikationsdaten

Der Zugriff auf die Website wird nur verschlüsselt über HTTPS ermöglicht.

In den Belegmails wird das Stimmverhalten des jeweiligen Benutzers dokumentiert. Damit diese Mails nicht mitgelesen werden können, haben die Benutzer die Möglichkeit, diese Mails in verschlüsselter Form zu erhalten. Da der Betreff auch bei verschlüsselten Mails im Klartext übertragen wird, wird im Betreff dieser Mails nicht genannt, um welchen Antrag, Antragsblock o.ä. es geht.