In Wir haben uns damit beschäftigt, dass in dem von uns betrachteten System der Fernabstimmung zur Gewährleistung der Geheimhaltung der Stimmen und der Anonymisierung des Wählers der kryptografische Algorithmus „blinde elektronische Unterschrift“ verwendet wird. In diesem Artikel werden wir ihn genauer untersuchen.
Zunächst betrachten wir den bekannten und vertrauten Algorithmus der elektronischen Unterschrift, der in Informationssystemen verschiedener Art weit verbreitet ist. Der elektronischen Unterschrift liegt ein asymmetrisches Verschlüsselungsverfahren zugrunde. Asymmetrische Verschlüsselung ist eine Methode, die zwei Schlüssel verwendet: Einer davon wird zum Verschlüsseln und der andere zum Entschlüsseln verwendet. Diese werden als öffentlicher (User) und privater Schlüssel bezeichnet. Der öffentliche Schlüssel ist der Allgemeinheit bekannt, während der private nur dem Besitzer der elektronischen Unterschrift bekannt ist und an einem für andere unzugänglichen Ort gespeichert wird.
Bei der Signierung geschieht Folgendes: Zuerst wird das elektronische Dokument mithilfe mathematischer Transformationen in eine Zeichenfolge einer bestimmten Größe umgewandelt – dies nennt man Hash-Funktion.
Die empfangene Zeichenfolge (Hash des Dokuments) wird vom Absender des Dokuments mit einem privaten Schlüssel verschlüsselt und zusammen mit dem öffentlichen Schlüssel an den Empfänger gesendet. Der Empfänger entschlüsselt die Zeichenfolge mit dem öffentlichen Schlüssel, wendet dieselbe Hash-Funktion auf das Dokument an und vergleicht das Ergebnis der Transformation mit dem Ergebnis der Entschlüsselung. Wenn alles übereinstimmt, wurde das Dokument nach der Unterzeichnung durch den Absender nicht verändert.
Die beschriebenen Maßnahmen ermöglichen es, sicherzustellen, dass das Dokument nicht verändert wurde, können jedoch nicht garantieren, dass der Absender tatsächlich die Person ist, für die er sich ausgibt. Daher benötigen wir eine dritte Partei, der sowohl der Absender als auch der Empfänger vertrauen. Dazu wendet sich der Absender vor dem Versenden des Dokuments an die dritte Partei und bittet sie, ihren öffentlichen Schlüssel mit ihrer elektronischen Signatur zu signieren. Jetzt sendet der Absender dem Empfänger das Dokument, seinen öffentlichen Schlüssel und die Signatur der dritten Partei seines Schlüssels. Der Empfänger überprüft die Signatur der dritten Partei des öffentlichen Schlüssels und vertraut der erhaltenen Signatur des Dokuments.
Lassen Sie uns nun besprechen, was eine „blind unterschrift“ ist und wie sie uns bei der Anonymisierung unterstützen kann.
Stellen wir uns in dem oben beschriebenen Beispiel vor, der Absender ist ein Wähler, das Dokument ist der Stimmzettel, und der Empfänger ist die Wahlkommission, oder wie wir es nannten, das „Element zur Erfassung und Auszählung der Stimmen“. In diesem Fall fungiert der „Wählerverzeichnis“-Komponent als drittes Element (Validator). Der Prozess könnte wie folgt 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 Stimmzettel signieren, um seine Integrität zu überprüfen. Den signierten Stimmzettel und den öffentlichen Schlüssel sendet er an die Wahlkommission. Damit der Stimmzettel vom „Dezentralen Speichern und Auszählen der Stimmen“-Komponent anerkannt wird, muss überprüft werden, dass der öffentliche Schlüssel vom Validator signiert ist.
Der Validator (Komponente „Wählerverzeichnis“) wird den öffentlichen Schlüssel nur dann signieren, wenn er sich vergewissert hat, dass der Wähler im Wählerverzeichnis aufgeführt ist.
Um die Geheimhaltung der Abstimmung zu gewährleisten, darf der auf dem Gerät des Wählers erzeugte öffentliche Schlüssel von niemandem bekannt sein. Das bedeutet, dass der Validator etwas signieren muss, das ihm unbekannt ist. Diese Aufgabe scheint unmöglich, doch hier kommen kryptografische Algorithmen ins Spiel – in diesem Fall der Algorithmus der „Blindunterzeichnung“.
Zuerst muss der öffentliche Schlüssel auf dem Gerät des Wählers maskiert werden. Die Maskierung besteht aus der Durchführung bestimmter mathematischer Operationen auf dem Benutzergerät. Stellen Sie sich vor, Sie denken an eine zufällige Zahl von 1 bis 100, dann an eine zweite zufällige Zahl von 1 bis 10 und eine dritte, von 10 bis 50. Die ursprünglich gedachte Zahl wird dann auf die Potenz der zweiten Zahl angehoben und ohne Rest durch die dritte dividiert. Das erhaltene Ergebnis wird den anderen mitgeteilt. Sie können die ursprüngliche Zahl problemlos wiederherstellen, da Sie die Reihenfolge der Schritte und die von Ihnen gedachten Zahlen kennen. Aber die anderen werden das nicht können.
Die Maskierung (Blindzeichnung) des öffentlichen Schlüssels erfolgt gemäß einem speziellen kryptografischen Algorithmus. Infolgedessen signiert der Validator den maskierten öffentlichen Schlüssel, während der ursprüngliche Schlüssel ihm unbekannt bleibt. Der Clou des Algorithmus ist, dass der Nutzer (Wähler), der die Signatur für den maskierten Schlüssel erhält, die Umkehrumwandlung durchführen kann, um eine gültige Signatur auch für den ursprünglichen, unmaskierten Schlüssel zu erhalten.
Der beschriebene Algorithmus wird in Protokollen für geheime Abstimmungen weitreichend eingesetzt. Im derzeitigen System der Fernwahl wird für die blinde Signatur der RSA-Algorithmus mit einer Schlüssellänge von 4096 Bit verwendet.
Im Allgemeinen sieht das Verfahren zur Anonymisierung wie folgt aus.
- Bei der Erstellung einer Abstimmung wird ein separates Schlüsselpaar für den "Validator" generiert, dessen öffentlicher Schlüssel in der Blockchain gespeichert wird. Für jede Abstimmung wird ein einzigartiges Schlüsselpaar erstellt.
- Der Benutzer wird im Identifikationssystem (in diesem Fall im ESIA) identifiziert und erteilt die Erlaubnis, seine Identifikationsdaten aus dem Identifikationssystem an das PTK DÄG zu übertragen.
- Die Komponente «Wählerverzeichnis» des PTK DEG überprüft, ob der Benutzer im Wählerverzeichnis aufgeführt ist.
- Auf dem Gerät des Benutzers werden persönliche Schlüssel – ein privater 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ählerverzeichnis».
- Die Komponente überprüft erneut, ob der Benutzer im Verzeichnis geführt wird und ob er zuvor keine Signatur erhalten hat.
- Wenn alle Überprüfungen erfolgreich sind, erfolgt die Signierung des Schlüssels.
- Der Vorgang der Schlüssel-Signierung wird in der Blockchain festgehalten.
- Der Benutzer hebt die Maskierung seines öffentlichen Schlüssels auf seinem Gerät auf und erhält seinen privaten Schlüssel, den öffentlichen Schlüssel und die Signatur für den öffentlichen Schlüssel; alle Schlüssel sind nur ihm bekannt.
- Anschließend wird der Benutzer in einen anonymen Bereich überführt – auf eine separate Website edg2020.gov.ru, wo er nicht zu identifizieren ist (zum Beispiel kann er vor dem Wechsel seinen Internetanbieter ändern, wodurch die IP-Adresse vollständig verändert wird). VPN или сменить интернет-провайдера, полностью изменив IP-адрес)
- Die Annahme des Bulletins hängt ausschließlich davon ab, ob die Unterschrift des "Validators" validiert wurde und ob dieser Schlüssel zuvor verwendet wurde.
Im Folgenden erläutern wir den Algorithmus aus der Perspektive der Kryptographie.
Parameter der Unterschrift und Bezeichnungen:


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