вторник, 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 ..) онлайн гласуване не трябва да има, тъй-като рисковете са големи и не могат да бъдат избегнати с технически средства. Но не ми се иска да гласувам с "Не", защото не е вярно, че не искам онлайн гласуване. Искам, но чак когато съм сигурен, че рисковете са под нивото, при което легитимността на властта може да бъде поставяна под въпрос. Всъщност ми се иска този референдум да бъде отложен за *след* като бъде намерено както техническото, така и административното и организационното решение на проблемите. Не знам дали пък при това положение да не го пропусна. Законът и без това позволява след две години да бъде проведен наново, а всички са наясно, че до две години онлайн гласуване няма да има, дори ако референдумът е валиден и е "За".