Преглед на процедурата за анонимизиране на системата за дистанционно електронно гласуване

В предишни публикации Спряхме се на факта, че в системата за дистанционно електронно гласуване, която обмисляме, се използва криптографски алгоритъм за „сляп електронен подпис“, за да се гарантира тайната на гласуването и да се анонимизира избирателят. В тази статия ще го разгледаме по-подробно.

Първо, нека се обърнем към добре познатия и познат алгоритъм за електронен подпис, който се използва широко в информационните системи за различни цели. Електронният подпис се основава на криптографски асиметрични алгоритми за криптиране. Асиметричното криптиране е криптиране с помощта на 2 ключа: единият от тях се използва за криптиране, а другият за декриптиране. Те се наричат ​​отворен (публичен) и частен ключ. Публичният ключ е известен на другите, а частният е известен само на притежателя на електронния подпис и се съхранява на място, недостъпно за други.

При подписване се случва следното: първо електронният документ с помощта на математически трансформации се редуцира до последователност от знаци с определен размер - това се нарича хеш функция.

Получената последователност от знаци (хеш от документа) се криптира от подателя на документа с помощта на частен ключ и заедно с публичния ключ се изпраща на получателя. Получателят декриптира последователността от знаци с помощта на публичния ключ, прилага точно същата хеш функция към документа и сравнява резултата от преобразуването с резултата от дешифрирането. Ако всичко съвпада, тогава не са направени промени в документа, след като е бил подписан от подателя.

Описаните действия ви позволяват да проверите дали документът не е променен, но не ви позволяват да проверите дали подателят наистина е този, за когото се представя. Следователно се нуждаем от трета страна, която се ползва с доверие както от подателя, така и от получателя. За целта, преди да изпрати документа, подателят се свързва с трета страна и я моли да подпише публичния му ключ с нейния електронен подпис. Подателят сега изпраща на получателя документа, своя публичен ключ и подпис на трета страна на своя ключ. Получателят проверява подписа на третата страна върху публичния ключ и се доверява на получения подпис на документа.

Сега нека да преминем към това какво е „сляп подпис“ и как може да ни помогне с анонимизирането.

Нека си представим, че в примера, описан по-горе, подателят е избирателят, документът е бюлетината, а получателят е избирателната комисия или както казахме „компонентът за преброяване на гласовете“. Ще имаме компонента „Списък на избирателите“ като трета страна (валидатор). В този случай процесът може да се случи по следния начин.

Преглед на процедурата за анонимизиране на системата за дистанционно електронно гласуване

Избирателят генерира чифт ключове на устройството си – частен и публичен. Тъй като тези ключове са създадени на неговото лично устройство в браузъра, те са известни само на него.

Използвайки тези ключове, той ще подпише бюлетината, за да контролира нейната цялост. Той изпраща подписаната бюлетина и публичния ключ на избирателната комисия. За да бъде приета бюлетина от компонента за разпределено съхранение и преброяване на гласове, той трябва да провери дали публичният ключ е подписан от валидатора.

Валидаторът (компонентът на избирателния списък) ще подпише публичния ключ само след като потвърди, че избирателят е в избирателния списък.

За да се реши проблемът с опазването на тайната на гласуването, публичният ключ на избирателя, създаден на неговото устройство, не трябва да бъде известен на никого. Оказва се, че валидаторът трябва да подпише нещо, което не му е известно. Задачата изглежда невъзможна, но тук на помощ идват криптографските алгоритми - в този случай алгоритъмът за „сляп подпис“

Първо, публичният ключ трябва да бъде маскиран на устройството на избирателя. Маскирането е извършването на отделни математически операции на устройството на потребителя. Представете си, че сте помислили за произволно число от 1 до 100, след това сте помислили за второ произволно число от 1 до 10 и трето, от 10 до 50, повдигнали първоначално замисленото число на степен на второто число и го разделили без остатък от третата. Резултатът беше докладван на другите. Няма да ви е трудно да възстановите оригиналния номер, тъй като знаете последователността от действия и числата, които имате предвид. Но околните няма да могат да направят това.

Маскирането (заслепяването) на публичния ключ се извършва по специален криптографски алгоритъм. В резултат на това валидаторът подписва маскиран публичен ключ, без да знае оригиналния ключ. Но особеността на алгоритъма е, че потребителят (избирателят), след като е получил подпис за маскиран ключ, може да направи обратни трансформации и да получи подпис, който е валиден за оригиналния, немаскиран ключ.

Описаният алгоритъм намира широко приложение в протоколите за тайно гласуване. Дистанционната система за електронно гласуване в момента използва алгоритъма RSA с дължина на ключа от 4096 бита за слепи подписи.

Като цяло процедурата за анонимизиране е следната.

  1. Когато се създаде гласуване, се създава отделна двойка ключове „валидатор“ и публичният ключ се записва в блокчейна. За всеки глас се създава уникална двойка ключове.
  2. Потребителят се идентифицира в идентификационната система (в този случай в ОВОСС) и предоставя разрешение за прехвърляне на неговите идентификационни данни от идентификационната система към DEG PTC.
  3. Компонентът „Списък на избирателите“ на DEG PTC проверява присъствието на потребителя в списъка на избирателите.
  4. На устройството на потребителя се създават неговите лични ключове - частни и публични, известни само на него.
  5. Публичният ключ е маскиран на устройството на потребителя
  6. Заедно с идентификационни данни и маскиран публичен ключ, потребителят има достъп до компонента „Избирателен списък“.
  7. Компонентът отново проверява присъствието на потребителя в списъка и факта, че той не е получил подпис преди това
  8. Ако всички проверки са успешни, ключът се подписва
  9. Фактът на подписване на ключа се записва в блокчейна
  10. Потребителят на своето устройство премахва маската от публичния ключ и получава частен ключ, публичен ключ и подпис върху публичния ключ, като всички ключове са известни само на него.
  11. След това потребителят се прехвърля в анонимна зона - на отделен уебсайт edg2020.gov.ru, където е невъзможно да бъде идентифициран (например преди прехода той може да свърже VPN или да смени своя интернет доставчик, като напълно промени IP адрес)
  12. Приемането на бюлетината ще зависи само от това дали подписът на „валидатора“ е проверен и дали такъв ключ не е бил използван преди това.

След това предоставяме описание на алгоритъма от гледна точка на криптографията.
Опции за подпис и обозначение:

Преглед на процедурата за анонимизиране на системата за дистанционно електронно гласуване
Преглед на процедурата за анонимизиране на системата за дистанционно електронно гласуване

M – във формат за допълване на FDN за подпис.

Източник: www.habr.com

Добавяне на нов коментар