Огляд процедури анонімізації системи дистанційного голосування

В попередніх публікаціях ми зупинилися на тому, що в системі дистанційного електронного голосування, що розглядається нами, для забезпечення таємниці голосування та анонімізації виборця використовується криптографічний алгоритм «сліпого електронного підпису». У цій статті ми розглянемо його докладніше.

Спочатку звернемося до відомого та знайомого алгоритму електронного підпису, який широко застосовується в інформаційних системах різного призначення. В основі електронного підпису лежать криптографічні алгоритми асиметричного шифрування. Асиметричне шифрування – це шифрування за допомогою 2 ключів: один із них використовується для шифрування, інший для розшифрування. Їх називають відкритий (публічний) та закритий ключ. Відкритий ключ відомий оточуючим, а закритий – лише власнику електронного підпису та зберігається у недоступному для інших місці.

Під час підписання відбувається таке: спочатку електронний документ, з допомогою математичних перетворень, наводиться до послідовності символів певного розміру – це називається хеш функцією.

Отримана символьна послідовність (хеш від документа) зашифровується відправником документа за допомогою закритого ключа і разом із відкритим ключем відправляється одержувачу. Отримувач розшифровує за допомогою відкритого ключа символьну послідовність, застосовує до документа таку саму хеш функцію і порівнює результат перетворення з результатом розшифровки. Якщо все збігається, то документ не було внесено змін після підписання його відправником.

Описані дії дозволяють переконатися, що документ не змінювався, але не дозволяють переконатися, що відправник дійсно той, за кого він себе видає. Тому нам потрібна третя сторона, якій довіряють і відправник, і одержувач. Для цього до відправки документа відправник звертається до третьої сторони та просить її підписати своїм електронним підписом його відкритий ключ. Тепер відправник надсилає одержувачу документ, свій відкритий ключ і підпис третьої сторони свого ключа. Отримувач перевіряє підпис третьої сторони відкритого ключа та довіряє отриманому підпису документа.

Тепер перейдемо до того, що таке сліпий підпис і як він може допомогти нам при анонімізації.

Уявімо, що в наведеному вище прикладі відправник – це виборець, документ – це бюлетень, а одержувач – виборча комісія, або як ми говорили «компонент обліку та підрахунку голосів». Як третя сторона (валідатора) у нас виступатиме компонент «Список виборців». У цьому випадку процес може відбуватися в такий спосіб.

Огляд процедури анонімізації системи дистанційного голосування

Виборець на своєму пристрої генерує кілька ключів – закритий та відкритий. Оскільки ці ключі створюються на його власному пристрої в браузері, вони відомі тільки йому.

За допомогою цих ключів він підписуватиме бюлетень для контролю за його цілісністю. Підписаний бюлетень та відкритий ключ він надсилає до виборчої комісії. Щоб бюлетень був прийнятий компонентом «Розподілене зберігання та підрахунок голосів», він має перевірити, чи відкритий ключ підписано валідатором.

Валідатор (компонент «Список виборців») підпише відкритий ключ лише після того, як упевниться, що виборець присутній у списку виборців.

Для вирішення завдання щодо збереження таємниці голосування відкритий ключ виборця, створений на його пристрої, не повинен бути відомий нікому. Виходить, що валідатор має підписати те, що йому невідомо. Завдання здається нездійсненним, але тут на допомогу приходять криптографічні алгоритми – у цьому випадку алгоритм «сліпого підпису»

Спочатку на пристрої виборця відкритий ключ має бути замаскований. Маскування – це виконання окремих математичних процесів на пристрої користувача. Уявіть, що ви задумали деяке випадкове число від 1 до 100, потім задумали друге випадкове від 1 до 10 і третє, від 10 до 50 спочатку задумане число звели в ступінь другого числа, і розділили без залишку на третє. Отриманий результат повідомили оточуючих. Вам не важко відновити початкове число, тому що ви знаєте послідовність дій і задумані вами числа. Але оточуючі це зробити не зможуть.

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

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

У загальному вигляді процедура анонімізації виглядає так.

  1. Під час створення голосування створюється окрема ключова пара «валідатора», відкритий ключ записується блокчейн. На кожне голосування створюється унікальна ключова пара.
  2. Користувач ідентифікується в системі ідентифікації (в даному випадку в ЄСІА), і надає дозвіл на передачу своїх ідентифікаційних даних із системи ідентифікації в ПТК ДЕГ.
  3. Компонент «Список виборців» ПТК ДЕГ перевіряє наявність користувача у списку виборців.
  4. На пристрої користувача створюються особисті ключі – закритий і відкритий, відомі тільки йому.
  5. На пристрої користувача відкритий ключ маскується
  6. Разом з ідентифікаційними даними та замаскованим відкритим ключем користувач звертається до компонента «Список виборців»
  7. Компонент ще раз перевіряє наявність користувача у списку та факт того, що він не отримував підпис раніше
  8. Якщо всі перевірки успішні, відбувається підпис ключа
  9. Факт підпису ключа записується в блокчейн
  10. Користувач на своєму пристрої знімає маску з відкритого ключа та отримує закритий ключ, відкритий ключ та підпис на відкритий ключ, при цьому всі ключі відомі лише йому.
  11. Після цього користувач переводиться в анонімну зону – на окремий сайт edg2020.gov.ru, де його неможливо ідентифікувати (наприклад, до переходу він може підключити VPN або змінити інтернет-провайдера, повністю змінивши IP-адресу)
  12. Прийом бюлетеня залежатиме лише від того, чи перевірку пройде підпис «валідатора» і чи не був такий ключ використаний раніше.

Далі наведемо опис алгоритму з погляду криптографії.
Параметри підпису та позначення:

Огляд процедури анонімізації системи дистанційного голосування
Огляд процедури анонімізації системи дистанційного голосування

M – у форматі padding FDN для підпису.

Джерело: habr.com

Додати коментар або відгук