Im Wir haben festgestellt, dass in dem von uns betrachteten System der elektronischen Fernabstimmung zur Gewährleistung der Geheimhaltung der Abstimmung und der Anonymisierung des Wählers der kryptographische Algorithmus der „blinden elektronischen Signatur“ verwendet wird. In diesem Artikel werden wir ihn ausführlicher betrachten.
Zunächst wenden wir uns dem bekannten und vertrauten Algorithmus der elektronischen Signatur zu, der in Informationssystemen verschiedener Art weit verbreitet ist. Die elektronische Signatur basiert auf kryptographischen Algorithmen der asymmetrischen Verschlüsselung. Asymmetrische Verschlüsselung ist die Verschlüsselung mit Hilfe von zwei Schlüsseln: Ein Schlüssel wird zur Verschlüsselung verwendet, der andere zur Entschlüsselung. Diese werden als öffentlicher (pub-lik) und privater Schlüssel bezeichnet. Der öffentliche Schlüssel ist den anderen bekannt, während der private Schlüssel nur dem Besitzer der elektronischen Signatur bekannt ist und an einem für andere unzugänglichen Ort aufbewahrt wird.
Bei der Unterzeichnung passiert Folgendes: Zuerst wird das elektronische Dokument mithilfe mathematischer Transformationen in eine Zeichenfolge bestimmter Größe umgewandelt – dies nennt man Hash-Funktion.
Die erhaltene Zeichenfolge (Hash des Dokuments) wird vom Dokumentenabsender mit dem privaten Schlüssel verschlüsselt und zusammen mit dem öffentlichen Schlüssel an den Empfänger gesendet. Der Empfänger entschlüsselt mit dem öffentlichen Schlüssel die Zeichenfolge, wendet die exakt gleiche Hash-Funktion auf das Dokument an und vergleicht das Ergebnis der Transformation mit dem Ergebnis der Entschlüsselung. Wenn alles übereinstimmt, wurden nach der Unterzeichnung durch den Absender keine Änderungen am Dokument vorgenommen.
Die beschriebenen Aktionen ermöglichen es, sicherzustellen, dass das Dokument nicht verändert wurde, garantieren jedoch nicht, dass der Absender tatsächlich die Person ist, für die er sich ausgibt. Deshalb benötigen wir eine dritte Partei, der sowohl der Absender als auch der Empfänger vertrauen. Zu diesem Zweck wendet sich der Absender vor dem Versenden des Dokuments an eine dritte Partei und bittet sie, ihren öffentlichen Schlüssel mit ihrer elektronischen Signatur zu versehen. Nun sendet der Absender das Dokument, seinen öffentlichen Schlüssel und die Signatur der dritten Partei seines Schlüssels an den Empfänger. Der Empfänger prüft die Signatur der dritten Partei des öffentlichen Schlüssels und vertraut der erhaltenen Signatur des Dokuments.
Lassen Sie uns nun zu dem kommen, was eine „blinde Unterschrift“ ist und wie sie uns bei der Anonymisierung helfen kann.
Stellen wir uns vor, dass im oben beschriebenen Beispiel der Absender der Wähler, das Dokument der Wahlzettel und der Empfänger die Wahlkommission ist, oder wie wir sagten, „Komponente zur Erfassung und Auszählung der Stimmen“. Als dritte Partei (Validator) fungiert die Komponente „Wählerverzeichnis“. In diesem Fall könnte der Prozess folgendermaßen ablaufen.

Der Wähler generiert auf seinem Gerät ein Schlüsselpaar – einen privaten und einen öffentlichen Schlüssel. Da diese Schlüssel auf seinem persönlichen Gerät im Browser erstellt werden, sind sie nur ihm bekannt.
Mit diesen Schlüsseln wird er den Wahlzettel unterschreiben, um dessen Integrität zu überprüfen. Den unterschriebenen Wahlzettel und den öffentlichen Schlüssel sendet er an die Wahlkommission. Damit der Wahlzettel von der Komponente „Verteilte Speicherung und Auszählung der Stimmen“ akzeptiert wird, muss überprüft werden, dass der öffentliche Schlüssel vom Validator unterschrieben ist.
Der Validator (Komponente „Wählerverzeichnis“) wird den öffentlichen Schlüssel nur dann unterschreiben, nachdem er sichergestellt hat, dass der Wähler im Wählerverzeichnis vorhanden ist.
Um die Geheimhaltung der Stimmen zu gewährleisten, darf der öffentliche Schlüssel des Wählers, der auf seinem Gerät erstellt wurde, niemandem bekannt sein. Das bedeutet, dass der Validator etwas unterschreiben muss, das ihm unbekannt ist. Die Aufgabe scheint unmöglich, aber hier kommen kryptografische Algorithmen ins Spiel – in diesem Fall der „blinde Unterschriften“-Algorithmus.
Zunächst muss der öffentliche Schlüssel auf dem Gerät des Wählers maskiert werden. Die Maskierung besteht darin, dass bestimmte mathematische Operationen auf dem Benutzergerät durchgeführt werden. Stellen Sie sich vor, dass Sie eine gewisse Zufallszahl zwischen 1 und 100 im Kopf haben, dann eine zweite Zufallszahl zwischen 1 und 10 und eine dritte zwischen 10 und 50, die ursprünglich gedachte Zahl potenzieren Sie mit der zweiten Zahl und dividieren sie ohne Rest durch die dritte. Das Ergebnis teilen Sie den Umstehenden mit. Es wird Ihnen nicht schwerfallen, die ursprüngliche Zahl wiederherzustellen, da Sie die Abfolge der Operationen und die von Ihnen gedachten Zahlen kennen. Aber die Umstehenden werden dazu nicht in der Lage sein.
Die Maskierung (Blinding) des öffentlichen Schlüssels erfolgt gemäß einem speziellen kryptografischen Algorithmus. Infolgedessen signiert der Validator den maskierten öffentlichen Schlüssel, wobei ihm der ursprüngliche Schlüssel unbekannt bleibt. Die Besonderheit des Algorithmus besteht darin, dass der Benutzer (Wähler), nachdem er die Signatur für den maskierten Schlüssel erhalten hat, die Umkehrtransformationen durchführen kann und somit eine gültige Signatur für den ursprünglichen, unmaskierten Schlüssel erhält.
Der beschriebene Algorithmus wird häufig in Protokollen für geheime Abstimmungen verwendet. Im System der Fernwahl wird derzeit für die blinde Signatur der RSA-Algorithmus mit einer Schlüsselgröße von 4096 Bit eingesetzt.
Im Allgemeinen sieht das Verfahren zur Anonymisierung wie folgt aus.
- Bei der Erstellung einer Abstimmung wird ein separates Schlüsselpaar für den „Validator“ erstellt, der öffentliche Schlüssel wird in der Blockchain gespeichert. Für jede Abstimmung wird ein einzigartiges Schlüsselpaar generiert.
- Der Benutzer wird im Identifizierungssystem (in diesem Fall im ESIA) identifiziert und erteilt die Erlaubnis zur Übertragung seiner Identifikationsdaten aus dem Identifizierungssystem in die PTK DEG.
- Die Komponente „Wählerliste“ der PTK DEG überprüft die Anwesenheit des Benutzers in der Wählerliste.
- Auf dem Gerät des Benutzers werden seine persönlichen Schlüssel – ein geheimer und ein öffentlicher – erstellt, die nur ihm bekannt sind.
- Auf dem Gerät des Benutzers wird der öffentliche Schlüssel maskiert.
- Zusammen mit den Identifikationsdaten und dem maskierten öffentlichen Schlüssel wendet sich der Benutzer an die Komponente „Wählerliste“.
- Die Komponente überprüft erneut die Anwesenheit des Benutzers in der Liste und stellt fest, dass er zuvor keine Signatur erhalten hat.
- Wenn alle Überprüfungen erfolgreich sind, erfolgt die Signierung des Schlüssels.
- Die Tatsache der Signatur des Schlüssels wird in der Blockchain aufgezeichnet.
- Der Benutzer hebt die Maskierung des öffentlichen Schlüssels auf seinem Gerät auf und erhält den geheimen Schlüssel, den öffentlichen Schlüssel und die Signatur des öffentlichen Schlüssels, wobei alle Schlüssel nur ihm bekannt sind.
- Danach wird der Benutzer in den anonymen Bereich überführt – auf die separate Website edg2020.gov.ru, wo er nicht identifiziert werden kann (zum Beispiel kann er vor der Weiterleitung VPN oder den Internetanbieter wechseln und dadurch die IP-Adresse vollständig ändern).
- Die Annahme des Stimmzettels hängt nur davon ab, ob die Signatur des „Validators“ erfolgreich ist und ob ein solcher Schlüssel zuvor verwendet wurde.
Im Folgenden geben wir eine Beschreibung des Algorithmus aus der Sicht der Kryptographie.
Parameter der Signatur und Bezeichnungen:


M – im Padding-FDN-Format für die Signatur.
Quelle: habr.com
