Overzicht van de anonimiseringsprocedure voor het elektronisch stemsysteem op afstand

В eerdere publicaties We zijn tot de conclusie gekomen dat in het systeem voor elektronisch stemmen op afstand dat we overwegen, een cryptografisch algoritme voor ‘blinde elektronische handtekeningen’ wordt gebruikt om de geheimhouding van het stemmen te garanderen en de kiezer te anonimiseren. In dit artikel zullen we er in meer detail naar kijken.

Laten we eerst eens kijken naar het bekende en bekende algoritme voor elektronische handtekeningen, dat op grote schaal wordt gebruikt in informatiesystemen voor verschillende doeleinden. De elektronische handtekening is gebaseerd op cryptografische asymmetrische encryptie-algoritmen. Asymmetrische encryptie is encryptie met behulp van twee sleutels: één ervan wordt gebruikt voor encryptie, de andere voor decryptie. Ze worden open (openbare) en privésleutel genoemd. De publieke sleutel is bekend bij anderen, en de private sleutel is alleen bekend bij de eigenaar van de elektronische handtekening en wordt opgeslagen op een plaats die niet toegankelijk is voor anderen.

Bij het ondertekenen gebeurt het volgende: eerst wordt het elektronische document, met behulp van wiskundige transformaties, gereduceerd tot een reeks tekens van een bepaalde grootte - dit wordt een hash-functie genoemd.

De resulterende tekenreeks (een hash van het document) wordt door de afzender van het document gecodeerd met behulp van een privésleutel en wordt samen met de publieke sleutel naar de ontvanger verzonden. De ontvanger decodeert de tekenreeks met behulp van de openbare sleutel, past exact dezelfde hash-functie toe op het document en vergelijkt het conversieresultaat met het decoderingsresultaat. Als alles overeenkomt, zijn er geen wijzigingen aangebracht in het document nadat het door de afzender is ondertekend.

Met de beschreven acties kunt u verifiëren dat het document niet is gewijzigd, maar kunt u niet verifiëren dat de afzender werkelijk is wie hij beweert te zijn. Daarom hebben we een derde partij nodig die wordt vertrouwd door zowel de afzender als de ontvanger. Om dit te doen, neemt de afzender contact op met een derde partij voordat hij het document verzendt en vraagt ​​haar om zijn openbare sleutel te ondertekenen met haar elektronische handtekening. De afzender stuurt nu het document, zijn publieke sleutel en een handtekening van een derde partij naar de ontvanger. De ontvanger verifieert de handtekening van de derde partij op de openbare sleutel en vertrouwt de resulterende documenthandtekening.

Laten we nu eens kijken naar wat een “blinde handtekening” is en hoe deze ons kan helpen bij anonimisering.

Laten we ons voorstellen dat in het hierboven beschreven voorbeeld de afzender de kiezer is, het document het stembiljet en de ontvanger de verkiezingscommissie, of zoals we zeiden ‘de component voor het tellen van stemmen’. We zullen de component “Kiezerslijst” hebben als derde partij (validator). In dit geval kan het proces als volgt plaatsvinden.

Overzicht van de anonimiseringsprocedure voor het elektronisch stemsysteem op afstand

De kiezer genereert een paar sleutels op zijn apparaat – privé en openbaar. Omdat deze sleutels op zijn persoonlijke apparaat in de browser worden aangemaakt, zijn ze alleen bij hem bekend.

Met behulp van deze sleutels zal hij het stembiljet ondertekenen om de integriteit ervan te controleren. Hij stuurt het ondertekende stembiljet en de publieke sleutel naar de verkiezingscommissie. Om een ​​stembiljet te laten accepteren door de component Gedistribueerde stemopslag en -telling, moet deze verifiëren dat de publieke sleutel is ondertekend door de validator.

De validator (component Kiezerslijst) zal de publieke sleutel pas ondertekenen nadat hij heeft geverifieerd dat de kiezer op de kiezerslijst staat.

Om het probleem van het bewaren van het stemgeheim op te lossen, mag de openbare sleutel van de kiezer die op zijn apparaat is aangemaakt, bij niemand bekend zijn. Het blijkt dat de validator iets moet ondertekenen dat hem onbekend is. De taak lijkt onmogelijk, maar hier komen cryptografische algoritmen te hulp – in dit geval het ‘blinde handtekening’-algoritme

Ten eerste moet de publieke sleutel op het apparaat van de kiezer worden gemaskeerd. Maskeren is de uitvoering van individuele wiskundige bewerkingen op het apparaat van de gebruiker. Stel je voor dat je aan een willekeurig getal van 1 tot 100 dacht, vervolgens aan een tweede willekeurig getal van 1 tot 10 dacht en een derde, van 10 tot 50, het aanvankelijk gedacht getal tot de macht van het tweede getal verhief en het verdeelde zonder een rest bij de derde. Het resultaat werd aan anderen gerapporteerd. Het zal voor u niet moeilijk zijn om het originele nummer te herstellen, aangezien u de volgorde van de acties kent en de cijfers die u in gedachten heeft. Maar de mensen om je heen zullen dit niet kunnen doen.

Het maskeren (verblinden) van de publieke sleutel wordt uitgevoerd volgens een speciaal cryptografisch algoritme. Als gevolg hiervan ondertekent de validator een gemaskeerde openbare sleutel zonder de originele sleutel te kennen. Maar de eigenaardigheid van het algoritme is dat de gebruiker (kiezer), die een handtekening voor een gemaskeerde sleutel heeft ontvangen, omgekeerde transformaties kan uitvoeren en een handtekening kan verkrijgen die geldig is voor de originele, ongemaskeerde sleutel.

Het beschreven algoritme wordt veel gebruikt in geheime stemprotocollen. Het elektronische stemsysteem op afstand maakt momenteel gebruik van het RSA-algoritme met een sleutellengte van 4096 bits voor blinde handtekeningen.

Over het algemeen is de anonimiseringsprocedure als volgt.

  1. Wanneer er een stem wordt aangemaakt, wordt er een afzonderlijk ‘validator’-sleutelpaar gemaakt en wordt de publieke sleutel vastgelegd in de blockchain. Voor elke stem wordt een uniek sleutelpaar aangemaakt.
  2. De gebruiker wordt geïdentificeerd in het identificatiesysteem (in dit geval in de ESIA) en geeft toestemming om zijn identificatiegegevens van het identificatiesysteem naar de DEG PTC over te dragen.
  3. De component “Kiezerslijst” van de DEG PTC controleert de aanwezigheid van de gebruiker op de kiezerslijst.
  4. Op het apparaat van de gebruiker worden zijn persoonlijke sleutels aangemaakt: privé en openbaar, die alleen hem bekend zijn.
  5. De openbare sleutel wordt gemaskeerd op het apparaat van de gebruiker
  6. Samen met identificatiegegevens en een gemaskeerde publieke sleutel krijgt de gebruiker toegang tot de component “Kiezerslijst”.
  7. De component controleert nogmaals de aanwezigheid van de gebruiker in de lijst en het feit dat hij nog niet eerder een handtekening heeft ontvangen
  8. Als alle controles succesvol zijn, wordt de sleutel ondertekend
  9. Het feit van het ondertekenen van de sleutel wordt vastgelegd in de blockchain
  10. De gebruiker op zijn apparaat verwijdert het masker van de openbare sleutel en ontvangt een privésleutel, een openbare sleutel en een handtekening op de openbare sleutel, en alle sleutels zijn alleen bij hem bekend.
  11. Hierna wordt de gebruiker overgebracht naar een anonieme zone - naar een aparte website edg2020.gov.ru, waar het onmogelijk is hem te identificeren (vóór de overgang kan hij bijvoorbeeld een VPN aansluiten of van internetprovider veranderen, waardoor de IP adres)
  12. Acceptatie van het stembiljet zal alleen afhangen van de vraag of de handtekening van de “validator” is geverifieerd en of een dergelijke sleutel niet eerder is gebruikt.

Vervolgens geven we een beschrijving van het algoritme vanuit het oogpunt van cryptografie.
Handtekening- en aanduidingsmogelijkheden:

Overzicht van de anonimiseringsprocedure voor het elektronisch stemsysteem op afstand
Overzicht van de anonimiseringsprocedure voor het elektronisch stemsysteem op afstand

M – in FDN-opvulformaat voor handtekening.

Bron: www.habr.com

Voeg een reactie