вторник, 20 октомври 2015 г.

Раздвоен съм за онлайн гласуването

Започвам с това, че на референдума ще гласувам "За" онлайн гласуването от разстояние, защото принципно ми се иска да е възможно.

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

Логическата грешка, която всички колеги от бранша допускат е, че отказват да приемат, че ако използваме термиологията на игрите, изборите са "некооперативна" игра. Т.е. такава, в която всеки играч има интерес да "прецака" другите, при това имат интерес да създават "коалиция на прецакващите", като всяка една група от "играчи" има интерес да се обедини срещу произволна друга група или играчи. Това поведение се нарича "дефектиране".

В обичайните системи, в които се търси сигурност, обикновено има поне две страни, чиито интерес съвпада - оператора на системата и нейният позлвател. Банката има същия интерес като мен. Тя няма причина да се опитва да ми подмени IBAN-а, който съм въвел или да подмени сумата. Т.е. тя няма никакъв интерес да преведе 10 лева на Гошо, ако съм дал нареждане "Дай 5 лева на Пешо". В един отбор сме с нея. Дори с Пешо и Гошо сме в един отбор, както и с техните банки. Трябва да се пазим само от евентуални външни лица.

При гласуването не е така. Там трябва да се допусне, че операторът на всеки един елемент от системата е еднакво заинтересован да ти причини всички възможни проблеми: да ти откаже услуга, да ти изгуби "нареждането", да ти го подмени с друго, да го покаже на трети лица.

Класическото решение в този случай е процесът да се раздели на части. Обичайно се разделя на три части -

1. един издава електронните сертификати. Той знае кой сертификат на кого принадлежи
2. друг събира гласовете и проверява с (1) дали сертификатът е валиден. (1) само му казва "валиден" или "невалиден", но не му казва кой е притежателя
3. трето лице брои гласовете, които (2) му е дал, след като е махнал от тях сертификата. Гласът още в компютъра на гласуващия е бил кодиран с ключ, който само (3) има, така е (2) не би могъл да отвори "плика"

Така информацията е разделена: (1) знае кой си, (3) знае как си гласувал, но (2) не осъществява връзка между (1) и (3) и затова (1) не знае как си гласувал, а (3) не знае кой е гласувал.

Така рабори т.нар. "естонска система". До тук - добре. Обаче както казах по-горе, добре е, когато участниците са кооперативни. Но ако дефектират? Ако (1), (2) и (3) се обединят срещу теб, срещу определена партия или срещу всички?

Тук обичайният отговор е "не могат да се обединят, те имат различни интереси - едните ще са от партия А, другите - от партия Б". Като оставим настрана очевидната съпосочност на политичесите и икономическите интереси на основните партии, дори чисто теоретично техните итереси по отношение на партия В, Г и Д съвпада. Освен това, (1), (2) и (3) са хора, не са партии. Не е чак толкова невъзможно да "съвпаднеш" интересите на група хора. Ако отвлекат дъщеря ми, аз ще съм им дал root паролата и всички сертификати някъде между третата и четвъртата секунда след обаждането.

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

Възможно решение е системата да се раздели на повече части. Могат да не са 3, а 30. Все едно. Това само усложнява задачата по съвпадане а интересите на 30 човека, но не я прави невъзможна. А да се разцепи онлайн гласуването на 11000 "секции" вече не е практически изпълнимо. Може да назначиш ad-hoc 11000 човека да проверяват едни хартиени листове, но няма как да назначиш 11000 сисадмина да одитират 11000 системи (били те и виртуални).

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

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

Обичайният контрааргумент е, че и сега може. Не, не може. Може да нарушиш тайната на един-два вота, хайде нека са хиляда, но не можеш да нарушиш 3 милиона тайни по никакъв начин (трябват ти минимум 11000 съучастника).

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

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

Това решение, обаче, отново предполага (т.е. отново прави същата логическа грешка), че участниците в "играта" са кооперативни. Т.е. предполага, че гласоподавателите са кооперативни, а не са дефектирали. Представям си как цяло Столипиново или половин Анадола се втурва да си проверява тайните въпроси дали са отчетени правилно. Т.е. логическата грешка е, че се опитваме да си защитим нашия глас, тъй-като обичайно при онлайн операциите се интересуваме само от нашето си волеизявление (не ни пука какви други нареждания получава банката, интересуваме се само от собствената си сметка). При гласуването трябва *аз* да мога да проверявам, че *твоят* глас е бил преброен правилно, дори когато *ти не желаеш* аз да мога да го проверя. В момента мога да ида в Кърджали, да отворя чувала с бюлетините и ръчно да преброя вътре бюлетините, след което да сравня резултата с протокола. Ако разчитаме на втори подпис (таен въпрос), ще трябва да извикаме *всички* гласоподаватели от Кърджали да си разпознаят бюлетините и да потвърдят, че правилно са преброени.

Така в крайна сметка изводът е, че пазането на анонимността на вота е въпрос на доверие. Тя не може да бъде защитена от случаите, в които дефектират пазещите я. Quis custodiet ipsos custodes? Фактът, че първичният документ при онлайн гласуването не е анонимен, затруднява неговото съхраняване за бъдеща проверка. Трябва да се разчита (т.е. да се вярва), че дори след изборите пазачите няма да дефектират. Можем да сложим пазачи на пазачите, а после пазачи и на пазачите на пазачите, но това не променя принципа - информацията *СЪЩЕСТВУВА* и трябва да се пази, докато при офлайн гласуването *НЕ СЪЩЕСТВУВА* и за да компрометираш изборите, трябва да *създадеш* информация (да правиш снимки, да подкупваш комисии и т.н.), което е значително по-трудно, отколкото да *придобиеш* информация, която вече съществува, особено, когато пазачът може да се окаже заинтересован да дефектира.

Следващият процес, който също много трудно може да се контролира с технически средства е "кой гласува с този сертификат". Отново логическата грешка е да се отъждествява сертификата с моето мнение. В случая с банката е така - щом съм дал сертификата на счетоводителката, значи тя изразява моето мнение и може да "гласува" вместо мен. Аз съм съгласен с това, банката е съгласна с това, счетоводителката е съгласна с това. Всички играчи са кооперативни. Дори Пешо, който получава твоя превод, съще е кооперативен, защото не му пука кой е разписал платежното, след като си е получил парите. Но си представете, че му пука. Пешо казва, че ще си получи парите, само и единствено, ако *ти*, а не твоята счетоводителка, си разписал платежното. Има си причини, човека, да го иска и ти не можеш да му го откажеш. Конституцията му дава това право. Пешо твърди, че в Конституцията пише, че ти трябва лично да гласуваш и че нямаш право да упълномощиш счетоводителката, без значение, че ти, тя и банката сте съгласни. Просто имаме и други участници в играта, които трябва да са съгласни. Пешо няма да ти приеме превода, докато не го убедиш, че не е подписан от счетоводителката, а лично от теб.

Обичайният отговор тук е "ама и при офлайн гласуването някой може да бъде накаран да гласува по друг начин". Първо, оправдаването на една система с грешки в друга е логически грешно. Второ, можеш да го накараш, но не можеш да го проконтролираш. Онлайн няма нужда да го принуждаваш, може просто да гласуваш вместо него. Това дори може да стане с негово съгласие. Офлайн можеш да създадеш фалшива лична карта и можеш да я пробуташ в една-две избирателни комисии. Но не можеш да създадеш 500 000 фалшиви лични карти и да вкараш 500 000 подставени лица в тъмните стаички да гласуват вместо 500 000 "мъртви души". Докато онлайн може една счетоводителка да подпише "платежните" на 500 000 човека, които да нямат нищо против да я упълномощят. Забележи - те може дружно и доброволно да решат да дефектират. Затова Конституцията забранява упълномощаването - да гласуваш собственоръчно не е твое право, то е твое задължение, от което не можеш да се откажеш.

Има още много сюжетни линии (например какво се случва, ако държателят на частния ключ на ЦИК, с който се броят онлайн гласовете, дефектира и го унищожи), но за тази сутрин ще спра до тук. Според игровата теория и анализа на риска, отговорът на въпроса "да има или да няма онлайн гласуване" за съжаление е отрицателен. Рисковете са повече от ползите. Ползата в крайна сметка е само в комфорта на гласуващите. Не се отваря нова врата, само се улесняват няколко групи от населението, които и сега могат да участват в изборите, просто по-трудно (но не невъзможно). За техния (и моя в т.ч.) комфорт, ще се отвори кутията а пандора и ще се създадат нови рискове. Не съм убеден, че искам да си спестя 10 минути ходене до изборната секция (за мен са толкова), но да поема всички възможни рискове за опорочаване на резултата.

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

Затова аз съм раздвоен. Категорично смятам, че в България през 2015-та година (а вероятно и през 2016, 17, 18 ..) онлайн гласуване не трябва да има, тъй-като рисковете са големи и не могат да бъдат избегнати с технически средства. Но не ми се иска да гласувам с "Не", защото не е вярно, че не искам онлайн гласуване. Искам, но чак когато съм сигурен, че рисковете са под нивото, при което легитимността на властта може да бъде поставяна под въпрос. Всъщност ми се иска този референдум да бъде отложен за *след* като бъде намерено както техническото, така и административното и организационното решение на проблемите. Не знам дали пък при това положение да не го пропусна. Законът и без това позволява след две години да бъде проведен наново, а всички са наясно, че до две години онлайн гласуване няма да има, дори ако референдумът е валиден и е "За".

7 коментара:

  1. Този коментар бе премахнат от автора.

    ОтговорИзтриване
  2. Интересно мнение г-н Ганчев. Аз също ще гласувам "ЗА" макар, че за мен по-важното е да бъде въведено компютърно гласуване което ще улесни повече хората и ще бъдат избегнати невалидни бюлетини заради излизане от квадратчето и т.н. За момента народа ни не е готов за онлайн гласуване, но е време да направим крачка напред. Друг е въпроса дали изобщо ще се приеме това предложение, дали ще бъде постигната необходимата избирателна активност ...

    ОтговорИзтриване
  3. Супер статия. На теория и аз съм "За". Последните дни обаче ми се налага непрекъснато да споделям и това видео (някои теми се припокриват).
    https://www.youtube.com/watch?v=w3_0x6oaDmI

    ОтговорИзтриване
  4. 1.
    Здравейте господин Ганчев!
    Не знам от къде да започна. Ще разгледам поставеният от вас проблем/проблеми единствено от гледната точка на програмист.
    Първо, искам да ви кажа, че електронното гласуване от всякакъв тип не е компютърна игра. Игрите се програмират да бъдат игри. Имат сюжет, насоченост и техническо изпълнение. Ключовото словосъчетание е "техническо изпълнение". Много често се чуват възклицания, че компютрите били много "тъпи". Изглеждат така разбира се, защото не могат да мислят. Процесорът обработва само информацията, зададена от потребителя. И няма никакво свободно творчество. Ще направи точно това, което потребителят му зададе. И ако заявката от потребителя е "тъпа", съответното действие ще бъде "тъпо". С две думи, ако някой е злонамерен, ще получава всичко, което пожелае, пречупено през намеренията му. И не компютърът ще му бъде виновен.
    Второ. Трябва да знаете, че анонимност при работа с електронни устройства, каквито са всички видове инструменти, имащи процесори и участници в някакъв вид мрежа, няма. Най-просто казано е, че компютрите са управлявани в тази мрежа от сървъри. А сървъра води дневници, които практически се пазят вечно. И дори да бъдат изтрити, могат да бъдат възстановени. И най-доброто е, че могат да бъдат проследени и събитията и идентичността на този, който е взел участие в тях. Така че, кой, какво и как, няма значение. Дори и в някакъв хипотетичен случай, да се случи така, че 1, 2 и 3 да са 'дефектирали' и се обединят срещу теб и подменят цял вот, то те ще бъдат открити.
    Самата постановка обаче, въвличайки страни 1, 2 и 3 е меко казано странна.

    ОтговорИзтриване
  5. 2
    Програмиста е ограничен единствено от своето въображение. И професионалист, който подготви подобна постановка, за мен е посредствен. Основното предназначение н авсяка програма е да автоматизира комплекс от действия. И разбиването на едно гласуване на 3 част е нелепо. Но да разгледам случая.
    Много голяма слабост на тезата ви е, че 3 трябва да бъде субект. Предмет на елементарно програмиране е, да се сортират 'n' броя данни по зададен критерий. Така че, кой има ключ и кой няма за проверка, идентификация или друго, е без значение. Всичко може да се програмира да се прави само от 1 да речем. И може да бъде програмирано да бъде направено така, че никой да няма достъп до нищо, предхождащо самият специфичен вот. Може да бъде програмирано никой да не няма достъп до резултатите. Сегашните методи на криптиране са на много високо ниво. Въпреки, че всичко може да бъде декриптирано и следователно манипулирано според нечии цели, то не може да се случи дори и с автоматизирани процеси за кратко време. Не и за време, което се предполага за нужно за да има някакво значение. Сортирането по някакъв признак е предмет е на доста обикновена програма, която може да направи дори ученик от седми клас в математическа гимназия. Предполагам не знаете, но в програмирането има два вида програмни елементи. Едни които потребителят вижда и други, които не вижда. Освен това, всички програмни компоненти имат свойства. Едно от което е 'visible'. Което свойство програмно се манипулира в две форми. True и False. В единият случай се вижда от потребителя реалната данна, в другият, не. Служи само за вътрешна операция, която се отчита и е обикновено в основата на всяко действие. Написах малко техническо обяснение, за да ви покажа, че нещата не са толкова сложни, колкото ги представяте и не са слон, след като са обикновен комар. Та това свойство ако е манипулирано да не се вижда, данните няма как да бъдат видяни и съоответно променени в нечия полза. Но ще бъдат отчетени еднозначно.

    ОтговорИзтриване
  6. 3
    Да се върна пак на анонимността. Както казах, няма такава при работа с електронни устройства от всякакъв род. Но това не е страшно. Вече времената не са средновековни. Смятам, че всеки гласоподавател гласува, независимо по какви причини, по съвест или комерсиално, с ясно съзнание и чиста съвест и удовлетвореност от действието си. Така че, ако злонамерен субект, въпреки всичко, се опита поименно да изобличи гласоподавател или повече, и да разкрие вота им, няма да има никакво значение. Пак повтарям, въпрос на програмна техника е, обикновеният избирател да остане скрит. И ще бъде доста голям труд за някой, поименно да компрометира анимността на избирателя. Ще му отнеме време и ще има резултатите най-вероятно тогава, когато на никой вече няма да бъдат необходими. Просто труд, хвърлен на вятъра.
    Отговорът ми стана много дълъг, затова няма да засягам каква е вероятността или възможността да се подмени електронен вот. Той е същият като отношенията ви с банката или пазаруване в интернет. Между другото, объркахте понятията, като сравнихте електронният вот с отношенията клиент-банка. Това отношение няма никакво значение. Има трета/трети страни, които се занимават единствено със сигурността на банковите транзакции. Има и сертификати за сигурност, които не са страни по взаимоотношения, но са електронни документи, които се спазват от различни протоколи и това става, програмирано е да става, без намесата на нито един от засегнатите аргументи клиент-банка или трети лица.
    Ако искате допълнителни разяснения, може да ми пишете на polihronoff@yahoo.com.
    Аз гласувах ЗА електронното гласуване, защото това е бъдещето. Независмо дали го искаме или не. То идва. И ако можем да си облекчим живота и да спестим пари на и без това обрулената ни държава, всеки прогресивен и мислещ ум би направил.

    ОтговорИзтриване
    Отговори
    1. Щом идва, може ли да посочите процента на държавите приели електронното гласуване и процента на отхвърлилите го! Мисля че имаше и такива, които са го забранили... Благодаря за отговора предварително!

      Изтриване