Няколко думи за електронното гласуване на Да, България!

Да, България проведе вътрешни избори по електронен път за излъчване на кандидати за европейски избори (като част от листата на Демократична България). Ето и резултатите. Трябва да отбележа, че макар хората да смятат, че аз съм свършил всичко, това не е така – програмисти-доброволци свършиха повечето работа по приложението, аз основно „давах акъл“, преглеждах кода за уязвимости и написах някои базови криптографски компонента.

Ще отделя само два абзаца за контекста, след което ще мина на по-практически въпроси. Да, това е първото електронно гласуване в България в политически контекст и като такова има за цел да се противопостави на наративна на парламентарното мнозинство, че всичко е много опасно и в никакъв случай не трябва да се прави. Политическото послание е, че може. На всички е ясно, че националната система би изисквала по-сериозна разработка, повече тестове, повече защита, повече оперативна сигурност и т.н. Ясно ни е, че не може да вземем приложението и да го пуснем на национални избори. Но предвид, че за приложението са похарчени 0 лева и е изградени с доброволен труд, това е по-скоро нормално.

Ясно е обаче, че държавата от една година „седи“ върху техническо задание за система за електронно гласуване и нищо не прави по въпроса. Дори не пуска поръчка с цел да експериментира. Та, едно такова вътрешно електронно гласуване може да е аргумент за „отпушване“ на тоя процес. А сега по същество и в отговор на някои от по-сложните и по-неудобни въпроси.

Първо, най-сложният въпрос – как гарантираме, че резултатите не са фалшифицирани. И това е сериозен въпрос по принцип към електронното гласуване. В нашия случай взехме следните мерки:

  • Отворихме кода на компонентите на приложението, свързани с електронното гласуване. Някои избиратели се похвалиха, че първо са прегледали кода и след това са гласували. Отворихме само компонентите за гласуване, защото приложението има доста други функционалности, които са конкурентно предимство на Да, България.
  • Реализирахме гласуването не просто като онлайн анкета, а както трябва – с необходимото генериране на ключове, криптиране, подписи, проверки. Това гарантира както тайната на вота така и това, че не са подменяни подадените гласове. Особено сериозно бяхме подходили към тайната на вота, като не записвахме времето за подаване на гласа и преди анонимизиране разбъркахме поредността на подадените гласове. При по-голяма извадка времето не би било такъв проблем, но на теория можеш да идентифицираш даден гласоподавател по времето на подаване. Прегледахме кода на естонската система за гласуване – там времето се съхранява, но пък и извадката е по-голяма.
  • Криптографските ключове бяха съхранявани във възможно най-сигурното място за съхранение на телефона, така че друг процес да не може да ги извлече (и съответно да подаде фалшив глас след това). Поради това някои избиратели се сблъскаха със съобщение за грешка, че на устройството, от което опитват да гласуват не са намерени ключовете (тъй като са се регистрирали от друго устройство). Това беше и една от причините да не промотираме уеб-версията на гласуването. Такава имаше, но браузърите нямат модул за сигурно съхранение като смартфоните.
  • В допълнение, всеки глас беше изпращан в блокчейн-базираната услуга LogSentinel (която моята фирма разработва). Така интегритетът на гласовете е гарантиран и ако някой се опита да промени (или изтрие) даден глас в базата данни, това би било „хванато“ и коригирано.
  • Всеки член и кандидат имаше право да дойде на място и да му бъде показано, че именно публикуваният код работи в продукционна среда.
  • Всеки избирател можеше да гласува неограничен брой пъти, като се брои само последният глас. Макар някои медии да видяха проблем с това, то е основен принцип при гласуването в отдалечена, неконтролирана среда. Ако някой те накара да гласуваш по определен начин, трябва след това да можеш да промениш гласа си и да гласуваш по съвест

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

Важно е да подчертаем и компонента с доверието. Докато на национални избори такова по дефиниция няма, тук кандидатите имаха доверие на Комисията по вътрешни избори, което е доста важно за легитимността на избора.

Друг често задаван въпрос беше как гарантираме, че не са били регистрирани фалшиви профили за гласуване. За съжаление правителството за втора година отлага въвеждането на национална схема за електронна идентификация, в т.ч. с чип в личните карти. Т.е. нямаме правнозначимо средство за електронна идентификация на физически лица, на което да стъпим (ако имаше, то щеше да е базирано на PKI и смарткарти и/или HSM и/или secure storage на по-нови смартфони). Тръгвайки от тази изходна точка, разгледахме четири варианта:

  • използване на КЕП за гласуване. За съжаление твърде малко хора имат квалифициран електронен подпис, а и той не работи с мобилни приложения (в общия случай). Като цяло използването му е доста неудобно и това би било пречка.
  • прикачане на снимка на машинночетимата зона (MRZ) на личната карта – това би работело, но предположихме правилно, че хората са много резервирани към даването на каквито и да било лични данни, без значение колко GDPR-compliant сме. Имахме редица оплаквания и откази за регистрация дори само като искаме последни четири цифри на ЕГН
  • използване на облачен доставчик на eID и/или online enrollment (напр. EvroTrust). Сигурността щеше да е по-висока от тази на сканиране на лична карта, но тъй като всички системи за online enrollment изискват снимка на документ за самоличност (а някои и лицево разпознаване), отказът от регистрация заради ‘твърде много лични данни’ щеше да е масов.
  • настоящият подход с представяне на минимално количество данни и подбиране на случаен принцип и прозвъняване на някои регистрирани с цел проверка за измами.

Ясно е, че последният вариант е неприложим напр. на национални избори, но преценихме, че нашият threat model (модел на потенциални заплахи) е различен. Залогът е по-нисък, и смисълът на това някой да прави „номера“ е ограничен, като обаче има риск да бъде „хванат“. Предпочетохме да не налагаме високи психологически ограничения свързани с личните данни, за да може достатъчно хора да изпробват системата и да упражнят гласа си. Все пак, формата изискваше въвеждане на определено количество такива, за да служи за бариера. Това по наша преценка намали броя избиратели, защото страхът от това да ти „изтече“ ЕГН-то е голям. Имаше и кодове за регистрация като допълнително ограничение – те бяха раздадени „поименно“ на членове и симпатизанти, а по-масовите кодове се следяха.

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

Тук усложненията идваха от няколко страни – сигурността (генерирането на ключове); интегрирането на гласуването в приложение с доста други функционалности; двустъпковият процес, включващ предварителна регистрация; желанието ни да ограничим рисковете от фалшиви профили с изискване на допълнителни лични данни и кодове за регистрация. Все пак можеше да навигираме тези препятствия по-добре и да си спестим допълнителни разяснения по телефони и чатове.

Последният въпрос е свързан със системата за точкуване. Тя не е директно свързана с това, че гласуването е електронно, но електронизацията позволява много по-лесното опериране с такава система. Избраната система е вариация на тази на Борда, която се използва за национални избори в няколко държави, в т.ч. Словения, макар и само за представителите на етническите малцинства. Нашата модификация включваше бонус за посочените на първо и второ място (но и без модификацията резултатите щяха да са такива). Причината е, че на самите европейки избори няма възможност за такъв гъвкав избор, и по-предпочитаните като водещи кандидати е по-вероятно да получат глас от тези, за които мнението е „ок, приемлив кандидат е, като за 3-то място“.

Мисля, че крайният резултат е добър. Свърши както практическата работа, за която беше създаден (да проведе гласуване), така и политическата работа да фокусира темата с електронното гласуване. Смятам и че решенията, които взехме за функционирането на системата бяха правилни. Опитах да ги обясня по-горе, защото не винаги отстрани изглеждат така, когато човек няма цялата картинка.

И пак ще го кажа – електронното гласуване не е панацея. Много хора няма и да могат да се възползват от него, поради липсата на технически умения. То няма да промени магически качеството на демокрацията у нас. Но все пак е компонент, който може да подобри средата. А инициативи като на Да, България са важни за общия процес на неизбежна дигитализация.

4 коментара

  1. „цялата картинка“ за проекта ли ви интересува или резултатът в полза на Промяната. От написаното оставам с впечатление, че е за първото. Изводът ви е правилен според мен, че това няма да доведе до практически резултат, защото много малко българи, които гласуват могат да го ползват. И то не заради „технически познания“, а от финансова невъзможност да си позволят да ползват интернет. А ползвателите на електронното гласуване в по-голямата си част са зависими от властимащите. За кого ли ще гласуват. При незащитена система за електронно гласуване днес това е благодат за властниците. Ако е днес, те ще я въвеждат.

  2. Маргарита, …
    1) „… защото много малко българи, които гласуват могат да го ползват.“ – не е вярно, почти 50% от българите използват smart-phone. На последните парламентарни – избирателната активност е била 54%. Можете да проверите статистиката в mediaPool
    2) „… а от финансова невъзможност да си позволят да ползват интернет.“ – също не е вярно. Над 67% от българите имат домашен или мобилен интернет, а над 73% имат достъп до интернет (домашен, мобилен, служебен, близки и роднини).
    3) „А ползвателите на електронното гласуване в по-голямата си част са зависими от властимащите“ – Пълен БУЛШИТ. Аз лично не се чувствам зависим от споменатата група. Говорете за себе си…
    4) “ При незащитена система за електронно гласуване днес това е благодат за властниците.“. – Токът, който използвате, се отчита дистанционно със система, парите които получавате се движат чрез електронна система в световен мащаб. Комуникациите, които използвате, се движат от електронна система.
    Значи вярвате на поне 3 глобални електронни системи (каквото и да включват те, и с каквато и да е била сигурност, щото гаранция давам, че си нямате и понятие колко са защитени и дали изобщо са защитени), а не можете да повярвате, че една електронна система може да осигури сигурност в гласуването. – ПАК БУЛШИТ

    И какво стана? От цял коментар – само BUL-ШИТ…
    Не съм фен на партийни простотии, но евала, че някой опита и показа нагледно, че е възможно. Само желание се иска.

  3. Господин Жоро струва ми се, че не сте безкрайно учтив.

    Като цяло изказвате някакви верни неща. Близо до 100% от потребителите на телефония разполагат с умнофони. От тях няма нито един, който да не включва неограничен (освен по скорост) достъп до Интернет. А това практически означава около 200% от населението, защото всички имат по няколко телефона.

    Сиреч този страх на Маргарита наистина е неоснователен. Щом говорим за умнофони то и техническите способности някак ще ги преборим. Като цяло изобщо не са нужни никакви.

    Обаче страха от фалшификация или известна като цецовизация, костинброд-мултипринтизация и всякаква -ация, си е основателен страх. И това го пише самият домакин.

    А това винаги е възможно в система, в която има дори един централен елемент и не е напълно децентрализирана. Системата използвана от домакина ни също има централно звено. Има някакъв децентрализиран намек, но той стои зад собствената му технология, която само той знае, какво съдържа.

    Разбира се, той правилно подчертава, че е човек с авторитет, на който вярваме. И пак той пише, че ситуацията с ЦИК изобщо не е такава.

    =*=

    Накрая е написал най-важното според мен. Никакви hack-ове на изборната система няма да доведат до промяна в изборните резултати. Хората биха гласували така, както биха гласували иначе.

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

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

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

    Обаче същата тая математика гарантира, че твоя глас не отива за този, за когото си го подал, а за партията му. И почти задължително твоя глас не се брои в твоя избирателен район. Но дори да беше в него, то той си остава многомандатен, а не едномандатен.

  4. Накрая направихте ли случайна извадка и да се обадите на хората от тази извадка и да се провери дали са гласували за това което системата си мисли и още по-важно дали са гласували изобщо ? Аз примерно съсвем без никакви велики технологии можех да гласувам и от името на баща ми или и от моето 🙂 Да не кажа че с малко работа и малко лични данни и софтуерни умения – човек може да изгенерира някакво количество гласове което да предвижи везните в желаната поска 🙂 Не че е станало 🙂 само казвам 🙂

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *