All posts by Bozho

Състоянието на киберсигурността в администрацията и пътят напред

Post Syndicated from Bozho original https://blog.bozho.net/blog/3910

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

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

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

1. Какво намерихме?

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

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

Базови добри практики във връзка с киберсигурността също не се прилагаха. Прости пароли, липса на двуфакторна автентикация, публично видими портове за отдалечен достъп (RDP), за портове за администрация на защитни стени и друг защитен софтуер – всичко това е вектор за атака. На много места липсва оперативно наблюдение на системите във връзка с оглед идентифициране на опити за първоначално проникване. Дори на местата, където има такова, не са свързани достатъчно много източници на информация, така че картината е непълна. Има и фрапиращи случаи, като една администрация, в която всички потребители са били администратори – за по-лесно. В пощите имаше не по-малко фрапиращи лоши практики.

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

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

2. Какво свършихме

За този кратък период от време, в който преструктурираме една държавна агенция в две структури министерство и изпълнителна агенция, по линия на киберсигурността сме направили следното:

  • Изпратихме писма до всички институции да подобрят настройките на системите си, свързани с изпращане на имейли (т.е. потенциални фишинг атаки от тяхно име)
  • Сканирахме (вкл. с продължаващ абонамент за сканиране) всички администрации за публично достъпни системи, които не следва да бъдат достъпни. Напр. RDP (отдалечен достъп) – от около 60 отворени в началото, вече има само 10, като за тях предстоят санкции за ръководителите, тъй като това е нарушение на наредбата към Закона за киберсигурност
  • България стана 30-тата държава в света с абонамент за Have I Been Pwned – безплатна услуга, която ни дава информация за изтекли пароли за имейли на държавната администрация. Изтеклите пароли са от външни сайтове, но тъй като потребителите често използват една и съща парола, при информация за изтекла парола, трябва да бъдат принуждаване да сменят настоящата си
  • Блокирахме 48 хиляди IP адреса, свързани със злонамерена активност от Русия и Беларус (с първо писмо до интернет доставчиците – 45 хиляди и още 3 хиляди с последващо писмо)
  • Събрахме списък с доброволци и подготвихме договори за тестове за проникване (penetration tests) – първите такива тестове вече са започнали
  • Мигрирахме почти всички администрации към Защитения интернет възел на държавната администрация
  • В началото на войната спешно проверихме някои от най-критичните обекти и отправихме препоръки за повишаване на сигурността
  • Институтът за публична администрация, координирано с МЕУ, подготви информационен курс за защита от фишинг атаки
  • Подготвихме изменение на Закона за киберсигурност, за да включим вътре Български пощи и други публични предприятия, които в момента не се контролират от никоя институция по линия на мрежовата и информационна сигурност
  • Подготвихме изменения на Постановление на Министерския съвет за включване на Български пощи и БНБ в списъка със стратегически обекти, които обследва ДАНС
  • Увеличихме броя места за специалисти по киберсигурност в структурата на министерството (т.е. дирекцията няма да е вече само 16 души)

3. Какво предстои тази година

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

  • Приемане на всички подготвени нормативни изменения – в Закона за киберсигурност (за включване на пощите), в постановлението на Министерския съвет за стратегическите обекти
  • Приемане на Решение на Министерския съвет с правила за отговор на инциденти – най-важното при много от типовете атаки е бързата и адекватна реакция. Затова от най-високо ниво ще „спуснем“ какви да са стъпките, които всяка администрация да следва при инцидент.
  • Изменение на класификатора на длъжностите в администрацията и свързаните с него нормативни актове с цел повишаване на нивата на заплащане на специалисти по киберсигурност. Въвеждане и на позиция „стажант по киберсигурност“, така че да привличаме незавършили студенти с прилични заплати – тяхната експертиза вече е на достатъчно ниво, за да могат да бъдат полезни.
  • Подготовка и приемане на нова стратегия за киберсигурност
  • Структуриране на отношенията с частния сектор. Държавата няма достатъчно капацитет за оперативни наблюдения, триаж и отговор и трябва да бъде подпомагана от частния сектор. Трябва, обаче, да го направим по структуриран и адекватен начин, а не „всяка администрация сама да си преценя“ какво точно ѝ трябва и как да го получи
  • Транспониране на втората директива за мрежова и информационна сигурност веднага след като бъде приета на ниво Европейски съюз
  • Използване на максималните възможности на наличните системи за киберзащита (в момента много от тях не са адекватно настроени) и закупуване и инсталиране на нови
  • Обновяване на регистъра на информационните ресурси и поддържането му актуален, така че да могат да се правят реални политики за информационните ресурси (обновяване, спиране от експлоатация, управление, бюджетиране)
  • Регламентиране на централизирано закупуване на шаблонизирани решения за киберсигурност (няма смисъл всяка администрация да „открива топлата вода“)
  • Повишаване на нивото на киберсигурност в частния сектор в рамките на Програмата за научни изследвания, иновации и дигитализация за интелигентна трансформация
  • Засилване на ефективните проверки по Закона за киберсигурност – администрациите трябва да спазват поне действащата нормативна уредба, в която има немалко добри практики
  • Развиване на експертния капацитет на служителите в администрацията чрез обучения, съвместно с Института за публична администрация
  • Изграждане на център за оперативно наблюдение на мрежовата и информационна сигурност (Security operations center – SOC) в структурата на Министерство на електронното управление
  • Създаване на Националния компетеностен център по киберсигурност с цел стимулиране на екосистемата от експерти и организации – бизнес, университети, държава, неправителствен сектор
  • Засилен обмен на данни с партньорски държави, в т.ч. т.нар. индикатори на компрометиране (indicators of compromise). Т.е. когато един IP адрес опита да проникне в инфраструктура напр. в Естония, след неговото установяване в България да знаем за него и да го блокираме автоматично, преди изобщо да е опитал да „атакува“ и нас.

4. Заключение

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

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

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

Материалът Състоянието на киберсигурността в администрацията и пътят напред е публикуван за пръв път на БЛОГодаря.

Какво прави държавата срещу дезинформацията?

Post Syndicated from Bozho original https://blog.bozho.net/blog/3907

Днес участвах в представяне на инициативата “Българска коалиция срещу дезинформацията”, подкрепено от Европейската комисия. Нека да го използвам като повод, за да разкажа какво се случва по тази много важна и много деликатна тема.

Ще започна със следното уточнение – няма държавен орган, който да е натоварен официално с политиката за защита от хибридни заплахи, в т.ч. насочената дезинформация, която се лее през социалните мрежи. Министерство на електронното управление, с проекта си на устройствен правилник, припознава темата по линия на политиките за информационното обществено и на киберсигурността, но функциите са изцяло аналитични.

Нека да разделим темата на две – кампании за всяване на паника (каквито виждаме в последния месец) и фонова дезинформация.

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

Фоновата дезинформация е това, което залива потребителите на социални мрежи с добре оформени пропагандни наративи за упадъчния запад, за великия Путин, за украинските агресори и др. А допреди месец – за лошите ваксини и несъществуващия COVID.

„Какво прави държавата“ е въпрос, който получавам многократно. И знам, че „нямаме правомощия“ не е отговор. Затова искам да дам отговор по същество.

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

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

Трето, след като разгледахме добрите практики в други страни (напр. Швеция, Естония, Словакия, Испания), и проведохме срещи с няколко институции, подготвяме институционална структура за обмен на информация и опит между министерствата.

Четвърто, подготвихме и изпратихме конкретни предложения в рамките на обсъждането в Европейския съвет на Акта за цифровите услуги, който регулира поведението на големите онлайн платформи, вкл. Фейсбук.

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

При всички тези стъпки се водим от един основен принцип – не трябва нито правителството, нито някоя голяма компания, да решава кое е истина и кое не е и да блокира съдържание. Не трябва да създаваме механизми за такова поведение, защото то много лесно може да бъде използвано в грешна посока.

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

Насочил съм всички обсъждания на законодателни възможности и на други мерки в посока не на това „какво“ се разпространява, а „как“ се разпространява.

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

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

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

Знаейки този механизъм, попитахме Фейсбук какво правят по тази тема. Краткият отговор е „нищо“. Те няма да се съгласят, разбира се, защото активност от тяхна страна има, но ефективност – не.

Това, което най-добре илюстрира неадекватността на Фейсбук е отговорът на един от 13-те въпроса, които им зададохме относно механизмите им за справяне с насочената дезинформация. Отговорът включване на техния месечен отчет за откриване на координирано неавтентично поведение (а именно – това, което описах по-горе). Та Фейсбук за целия месец януари, в целия свят, са открили ТРИ фалшиви профила, които участват в координирано споделяне на дезинформация.

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

Именно затова обмислихме регулирането на това как Фейсбук и други големи онлайн платформи трябва да контролират тези процеси. Но не да преценяват кое е вярно и кое не, а да НЕ промотират алгоритмично това съдържание, което е споделяно чрез съмнителни мрежи, от съмнителни източници.

Местна регулация не би свършила работа, обаче – твърде големи са, за да се съобразяват с много строг български закон. А ние нямаме достатъчно капацитет да контролираме неговото спазване, съответно ще ни „замазват очите“.

Затова подходът ни е към прокарване на изменения в Акта за цифрови услуги, който е в процес на обсъждане. Направените предложения са в две посоки:

Първо, повече прозрачност. Големите онлайн платформи да трябва в реално време, с разбивки по държави, да докладват какви профили свалят, какво съдържание модерират, кое съдържание промотират най-активно. Също така да трябва да показват колко е усилено дадено съдържание от алгоритмите и по-важното – защо.

Второ, ограничения за алгоритмичното усилване на съдържание, разпространено по неавтентичен начин. Когато група потребители координирано разпространяват идентични текстове и коментари, това има висок риск за неавтентичност, особено ако профилните им снимки са от публични банки на снимки и ако използват едни и същи IP адреси или всички ползват един и същи VPN-и или споделят сайтове, хостнати в едни и същи мрежи.

Също така, когато едно съдържание е „новина“, но източникът не е в национален регистър на медиите (ако такъв има), тогава то да не получава голямо алгоритмично усилване. Защо? Защото медиите трябва да посочват своите действителни собственици и редакторски екип. Анонимни сайтове, които пишат за великата руска армия, не са медии. А намаляването на алгоритмичното усилване не е цензура. Има медии в България, които споделят кремълските опорни точки, но са реални медии, с ясна собственост – те не попадат в обхвата на това предложение, доколкото споделяното съдържание не представлява престъпление.

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

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

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

Важно е темата да бъде в политическия дневен ред, за да има осъзнаване и обсъждане, а Министерството на електронното управление ще бъде в центъра на този дневен ред.

Материалът Какво прави държавата срещу дезинформацията? е публикуван за пръв път на БЛОГодаря.

Проект за мобилна електронна идентификация

Post Syndicated from Bozho original https://blog.bozho.net/blog/3898

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

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

Резултатът от проекта ще бъде мобилно приложение (за Android и iOS), с което да се идентифицираме за ползването на всички електронни услуги, т.е. държавата да знае кой стои отсреща, когато ползва услугите. До момента това се извършва с електронен подпис, с ПИК, с ПИН и др. Тези средства няма да отпаднат веднага, но малко по малко ще бъдат замествани с електронната идентификация.

След първоначалната регистрация, от гледна точка на потребителя, процесът ще бъде следния:

  1. отваря портал за електронни услуги
  2. избира „вход с eID“ и потвърждава с мобилния си телефон (или друго мобилно устройство)
  3. подава заявления за услуги, които са с предварително попълнени данни (тъй като системата вече знае кой стои отсреща)
  4. подписване на заявлението чрез повторно потвърждение с мобилния телефон

Проектът предвижда първа фаза за проекетиране, тъй като трябва да бъдат взети специфични технологични решения. Например дали потвърждението с телефона да стане с т.нар. push-нотификация или чрез сканиране на QR код от екрана (съответно с deep link, в случай, че потребителят използва мобилния телефон и за заявяване на услугата, вместо компютър). Трябва да бъде избран и методът за подписване, като целта е криптографските ключове да се разделят на няколко части, като една се съхранява в мобилния телефон, а друга – на сървъра (така че да се минимизират рискове от изтичане от едното от двете места).

Първоначалната регистрация е много важна за да може максимален брой хора да използват приложението. Затова предвиждаме първоначална регистрация по следните начини:

  • Квалифициран електронен подпис, в т.ч. облачен КЕП (чрез системата за електронна автентикация)
  • ПИК на НАП (отново през еАвт)
  • ПИК на НОИ (отново през еАвт)
  • международен паспорт, който разполага с чип, благодарение на който може да бъде идентифицирано лицето (чипът може да бъде прочетен с мобилен телефон)
  • снимане на лична карта

Към тези методи могат да бъдат добавени два компонента за повишаване на сигурността:

  • Отговор на въпроси, които държавата има, но не са публично достъпна информация (напр. във връзка с имена на роднини или данни за предходни постоянни адреси)
  • Т.нар. liveness detection, т.е. проверка чрез камерата на телефона дали отсреща действително стои лицето, което твърди, че стои (без да може да се използва негова снимка, за да „излъже“ системата). Това е стандартна практика в много приложения за онлайн идентификация

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

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

Докато се изгражда системата (в следващите няколко месеца), ще подготвим и нормативни изменения, за да може да функционира системата в съответствие със закона.

Освен самото приложение, в рамките на проекта ще бъдат пилотно надградени и системите на НАП, НОИ, МВР, както и портала за електронни услуги на Министерството на електронното управление, така че да има богат избор от услуги, които да бъдат използвани с новото средство за идентификация и подписване (подписването формално ще бъде чрез т.нар. „усъвършенстван електронен подпис“, което е допустимо за заявяване на услуги съгласно действащия Закон за електронното управление).

Смятам, че правилно се фокусирахме върху подготовката на този проект, за да можем да го стартираме в рамките на първите 100 дни от управлението.

Материалът Проект за мобилна електронна идентификация е публикуван за пръв път на БЛОГодаря.

Don’t Reinvent Date Formats

Post Syndicated from Bozho original https://techblog.bozho.net/dont-reinvent-date-formats/

Microsoft Exchange has a bug that practically stops email. (The public sector is primarily using Exchange, so many of the institutions I’m responsible for as a minister, have their email “stuck”). The bug is described here, and fortunately, has a solution.

But let me say something simple and obvious: don’t reinvent date formats, please. When in doubt, use ISO 8601 or epoch millis (in UTC), or RFC 2822. Nothing else makes sense.

Certainly treating an int as a date is an abysmal idea (it doesn’t even save that much resources). 202201010000 is not a date format worth considering.

(As a side note, another advice – add automate tests for future timestamps. Sometiimes they catch odd behavior).

I’ll finish with Jon Skeet’s talk on dates, strings and numbers.

The post Don’t Reinvent Date Formats appeared first on Bozho's tech blog.

I Have Been Appointed As E-Governance Minister of Bulgaria

Post Syndicated from Bozho original https://techblog.bozho.net/i-have-been-appointed-as-e-governance-minister-of-bulgaria/

Last week the Bulgarian National assembly appointed the new government. I am one of the appointed ministers – a minister for electronic governance.

The portfolio includes digitizing registers and processes in all government institutions, reducing bureaucracy, electronic identity, cybersecurity, digital skills and more.

Thanks to all my readers for following this blog throughout the years. I will be sharing some digital policy details here from now on while I’m minister. That may include some technical articles, but they are unlikely to be developer-oriented.

I hope to make some important changes and put forward key ideas for e-governance and digital policy that can be used as an example outside my country (last time I was involved in public policy, I helped pass an “open source law”).

I’ve written a few articles about IT people looking for challenges – not just technical challenges. And I think that’s a great challenge where I’ll have to put all my knowledge and skills to work for the common good.

The post I Have Been Appointed As E-Governance Minister of Bulgaria appeared first on Bozho's tech blog.

Министър на електронното управление

Post Syndicated from Bozho original https://blog.bozho.net/blog/3890

В понеделник ще бъда предложен на Народното събрание за министър на електронното управление.

Отговорността и очакванията са огромни, а задачите – неизброими.

Ще започнем с електронната идентификация, с отпадането на удостоверения и с оптимизираме и електронизиране на ключови процеси. Ще трябва паралелно с това да създадем и министерство.

Целта е да премахнем бюрокрацията и да спестим време и нерви на гражданите и бизнеса.

Благодаря на всички за продължаващата подкрепа.

Материалът Министър на електронното управление е публикуван за пръв път на БЛОГодаря.

Simple Things That Are Actually Hard: User Authentication

Post Syndicated from Bozho original https://techblog.bozho.net/simple-things-that-are-actually-hard-user-authentication/

You build a system. User authentication is the component that is always there, regardless of the functionality of the system. And by now it should be simple to implement it – just “drag” some ready-to-use authentication module, or configure it with some basic options (e.g. Spring Security), and you’re done.

Well, no. It’s the most obvious thing and yet it’s extremely complicated to get right. It’s not just login form -> check username/password -> set cookie. It has a lot of other things to think about:

  • Cookie security – how to make it so that a cookie doesn’t leak or can’t be forged. Should you even have a cookie, or use some stateless approach like JWT, use SameSite lax or strict?
  • Bind cookie to IP and logout user if IP changes?
  • Password requirements – minimum length, special characters? UI to help with selecting a password?
  • Storing passwords in the database – bcrypt, scrypt, PBKDF2, SHA with multiple iterations?
  • Allow storing in the browser? Generally “yes”, but some applications deliberately hash it before sending it, so that it can’t be stored automatically
  • Email vs username – do you need a username at all? Should change of email be allowed?
  • Rate-limiting authentication attempts – how many failed logins should block the account, for how long, should admins get notifications or at least logs for locked accounts? Is the limit per IP, per account, a combination of those?
  • Captcha – do you need captcha at all, which one, and after how many attempts? Is Re-Captcha an option?
  • Password reset – password reset token database table or expiring links with HMAC? Rate-limit password reset?
  • SSO – should your service should support LDAP/ActiveDirectory authentication (probably yes), should it support SAML 2.0 or OpenID Connect, and if yes, which ones? Or all of them? Should it ONLY support SSO, rather than internal authentication?
  • 2FA – TOTP or other? Implement the whole 2FA flow, including enable/disable and use or backup codes; add option to not ask for 2FA for a particular device for a period of time>
  • Login by link – should the option to send a one-time login link be email be supported?
  • XSS protection – make sure no XSS vulnerabilities exist especially on the login page (but not only, as XSS can steal cookies)
  • Dedicated authentication log – keep a history of all logins, with time, IP, user agent
  • Force logout – is the ability to logout a logged-in device needed, how to implement it, e.g. with stateless tokens it’s not trivial.
  • Keeping a mobile device logged in – what should be stored client-side? (certainly not the password)
  • Working behind proxy – if the client IP matters (it does), make sure the X-Forwarded-For header is parsed
  • Capture login timezone for user and store it in the session to adjust times in the UI?
  • TLS Mutual authentication – if we need to support hardware token authentication with private key, we should enable TLS mutual. What should be in the truststore, does the web server support per-page mutual TLS or should we use a subdomain?

And that’s for the most obvious feature that every application has. No wonder it has been implemented incorrectly many, many times. The IT world is complex and nothing is simple. Sending email isn’t simple, authentication isn’t simple, logging isn’t simple. Working with strings and dates isn’t simple, sanitizing input and output isn’t simple.

We have done a poor job in building the frameworks and tools to help us with all those things. We can’t really ignore them, we have to think about them actively and take conscious, informed decisions.

The post Simple Things That Are Actually Hard: User Authentication appeared first on Bozho's tech blog.

Integrity Guarantees of Blockchains In Case of Single Owner Or Colluding Owners

Post Syndicated from Bozho original https://techblog.bozho.net/integrity-guarantees-of-blockchains-in-case-of-single-owner-or-colluding-owners/

The title may sound as a paper title, rather than a blogpost, because it was originally an idea for such, but I’m unlikely to find the time to put a proper paper about it, so here it is – a blogpost.

Blockchain has been touted as the ultimate integrity guarantee – if you “have blockchain”, nobody can tamper with your data. Of course, reality is more complicated, and even in the most distributed of ledgers, there are known attacks. But most organizations that are experimenting with blockchain, rely on a private network, sometimes having themselves as the sole owner of the infrastructure, and sometimes sharing it with just a few partners.

The point of having the technology in the first place is to guarantee that once collected, data cannot be tampered with. So let’s review how that works in practice.

First, we have two define two terms – “tamper-resistant” (sometimes referred to as tamper-free) and “tamper-evident”. “Tamper-resistant” means nobody can ever tamper with the data and the state of the data structure is always guaranteed to be without any modifications. “Tamper-evident”, on the other hand, means that a data structure can be validated for integrity violations, and it will be known that there have been modifications (alterations, deletions or back-dating of entries). Therefore, with tamper-evident structures you can prove that the data is intact, but if it’s not intact, you can’t know the original state. It’s still a very important property, as the ability to prove that data is not tampered with is crucial for compliance and legal aspects.

Blockchain is usually built ontop of several main cryptographic primitives: cryptographic hashes, hash chains, Merkle trees, cryptographic timestamps and digital signatures. They all play a role in the integrity guarantees, but the most important ones are the Merkle tree (with all of its variations, like a Patricia Merkle tree) and the hash chain. The original bitcoin paper describes a blockchain to be a hash chain, based on the roots of multiple Merkle trees (which form a single block). Some blockchains rely on a single, ever-growing merkle tree, but let’s not get into particular implementation details.

In all cases, blockchains are considered tamper-resistant because their significantly distributed in a way that enough number of members have a copy of the data. If some node modifies that data, e.g. 5 blocks in the past, it has to prove to everyone else that this is the correct merkle root for that block. You have to have more than 50% of the network capacity in order to do that (and it’s more complicated than just having them), but it’s still possible. In a way, tamper resistance = tamper evidence + distributed data.

But many of the practical applications of blockchain rely on private networks, serving one or several entities. They are often based on proof of authority, which means whoever has access to a set of private keys, controls what the network agree on. So let’s review the two cases:

  • Multiple owners – in case of multiple node owners, several of them can collude to rewrite the chain. The collusion can be based on mutual business interest (e.g. in a supply chain, several members may team up against the producer to report distorted data), or can be based on security compromise (e.g. multiple members are hacked by the same group). In that case, the remaining node owners can have a backup of the original data, but finding out whether the rest were malicious or the changes were legitimate part of the business logic would require a complicated investigation.
  • Single owner – a single owner can have a nice Merkle tree or hash chain, but an admin with access to the underlying data store can regenerate the whole chain and it will look legitimate, while in reality it will be tampered with. Splitting access between multiple admins is one approach (or giving them access to separate nodes, none of whom has access to a majority), but they often drink beer together and collusion is again possible. But more importantly – you can’t prove to a 3rd party that your own employees haven’t colluded under orders from management in order to cover some tracks to present a better picture to a regulator.

In the case of a single owner, you don’t even have a tamper-evident structure – the chain can be fully rewritten and nobody will understand that. In case of multiple owners, it depends on the implementation. There will be a record of the modification at the non-colluding party, but proving which side “cheated” would be next to impossible. Tamper-evidence is only partially achieved, because you can’t prove whose data was modified and whose data hasn’t (you only know that one of the copies has tampered data).

In order to achieve tamper-evident structure with both scenarios is to use anchoring. Checkpoints of the data need to be anchored externally, so that there is a clear record of what has been the state of the chain at different points in time. Before blockchain, the recommended approach was to print it in newspapers (e.g. as an ad) and because it has a large enough circulation, nobody can collect all newspapers and modify the published checkpoint hash. This published hash would be either a root of the Merkle tree, or the latest hash in a hash chain. An ever-growing Merkle tree would allow consistency and inclusion proofs to be validated.

When we have electronic distribution of data, we can use public blockchains to regularly anchor our internal ones, in order to achieve proper tamper-evident data. We, at LogSentinel, for example, do exactly that – we allow publishing the latest Merkle root and the latest hash chain to Ethereum. Then even if those with access to the underlying datastore manage to modify and regenerate the entire chain/tree, there will be no match with the publicly advertised values.

How to store data on publish blockchains is a separate topic. In case of Ethereum, you can put any payload within a transaction, so you can put that hash in low-value transactions between two own addresses (or self-transactions). You can use smart-contracts as well, but that’s not necessary. For Bitcoin, you can use OP_RETURN. Other implementations may have different approaches to storing data within transactions.

If we want to achieve tamper-resistance, we just need to have several copies of the data, all subject to tamper-evidence guarantees. Just as in a public network. But what a public network gives is is a layer, which we can trust with providing us with the necessary piece for achieving local tamper evidence. Of course, going to hardware, it’s easier to have write-only storage (WORM, write once, ready many). The problem with it, is that it’s expensive and that you can’t reuse it. It’s not so much applicable to use-cases that require short-lived data that requires tamper-resistance.

So in summary, in order to have proper integrity guarantees and the ability to prove that the data in a single-owner or multi-owner private blockchains hasn’t been tampered with, we have to send publicly the latest hash of whatever structure we are using (chain or tree). If not, we are only complicating our lives by integrating a complex piece of technology without getting the real benefit it can bring – proving the integrity of our data.

The post Integrity Guarantees of Blockchains In Case of Single Owner Or Colluding Owners appeared first on Bozho's tech blog.

Представителна история за една шофьорска книжка

Post Syndicated from Bozho original https://blog.bozho.net/blog/3887

Миналата година на мой близък човек му изтече шофьорската книжка. И решихме да пробваме да бъде заявена новата онлайн. Тогава още я нямаше обновената система на МВР за е-услуги, така че свалихме бланката, попълнихме я и я изпратихме през системата за сигурно електронно връчване, подписана с КЕП, вкл. с прикачено необходимото медицинско.

Влизането с КЕП също не беше тривиално, защото инсталирането на софтуера за подписване имаше някои неочевидни настройки.

Последва дежурното обаждане (от пътна полиция към СДВР) „то не може“, предадено към мен – настоях за правно основание за отказа, тъй като Законът за електронно управление ги задължава да приемат заявлението и да изпълнят услугата. Казаха, че пак ще звъннат. Не звъннаха. Потърсихме ги отново, като в отговор потвърдиха, че не – няма да издадат така книжката.

Подадохме сигнал до Държавна агенция „Електронно управление“, аргументирайки се, че мълчаливият (към онзи момент) отказ противоречи на Закона за електронното управление.

Отговорът на ДАЕУ беше да се съгласят мотивите от изричния отказ на МВР, получен няколко дни след това. А той е абсурден. Според Закона за българските лични документи, МВР предоставя електронни услуги за лични документи през централизирана система за услуги. В правилния за прилагане на закона се изреждат услугите, включени в портала. Но издаване на шофьорска книжка липсва (тъй като към онзи момент не се поддържа). Да, Законът за електронното управление казва следното:

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

Обаче МВР казва „нашият подзаконов акт дерогира (отменя) закона, защото нашият специален закон делегира детайлите на нашия подзаконов акт, а той не казва нищо за тая конкретна услуга“. Абсурдна теза, граничеща с тази на РИК Стара Загора при отказа за вписване на листата на Демократична България, но останал несанкциониран.

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

  • Неудобно е – след като се оправиш с неудобния и „чуплив“ квалифициран електронен подпис, трябва да търсиш бланки (които ги няма там, където трябва – в административния регистър)
  • „Не може по електронен път“ – администрацията си търси всякакви абсурдни оправдания за да „им дойдеш“ на гише, както са си свиканли
  • Няма контрол – ДАЕУ като че ли беше уплашено, че няма политическата подкрепа да напише акт на МВР и да им издаде задължително предписание да спазват закона, макар че има такива правомощия

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

Материалът Представителна история за една шофьорска книжка е публикуван за пръв път на БЛОГодаря.

Избран съм за народен представител

Post Syndicated from Bozho original https://blog.bozho.net/blog/3884

ЦИК обяви резултатите. Избран съм за народен представител.

Благодаря на всички за подкрепата. За мен лично, за Демократична България и за посоката на промяна.

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

Ще работя за модернизация на държавата. И за това всички затлачвани дейности и замитани проблеми да бъдат поправени.

Не самоцелно, а за да не бъде държавата в тежест на гражданите и бизнеса, да не пилее парите ни с неефективността си.

Ще приемам предложения, ще приемам и критики. Ще опитвам да обяснявам решенията си и политиките, които прокарвам. Ще опитам да бъда „представител“ в истинския смисъл.

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

Още веднъж – благодаря.

Материалът Избран съм за народен представител е публикуван за пръв път на БЛОГодаря.

Кратък следизборен анализ

Post Syndicated from Bozho original https://blog.bozho.net/blog/3881

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

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

ГЕРБ, БСП и ДПС са „изпилени“ до ядрата си – с малки изключения никой не може да вземе глас от тях и те не могат да вземат глас от никого. Остават другите, които искат промяна. Техните гласове два пъти отидоха за ДБ, ИТН и ИБНИ, но поради хаотичните и неадекватни действия на ИТН, това не доведе до резултат. Негативът от това се понесе и от трите партии.

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

Факторът „новост“ комбиниран с умората от 3-ти поредни избори на останалите партии, комбиниран с неуспеха в предния парламент, комбиниран с одобрението на Радев, комбиниран с добрата им кампания донесе този успех на Продължаваме промяната, които „изсмукаха“ трудно спечелените избиратели от ДБ през тази година.

Можеше ли нещо друго да се направи? Нито можехме да бъдем нов субект след 2 кампании, нито след 2 кампании можехме да сменим рязко посланията, нито имаше откъде да привлечем други избиратели – тези на ГЕРБ, БСП и ДПС са „заключени“, а както беше казал някой – негласуващите имат една характерна особеност – не гласуват.

Нямаше как и да подкрепим Радев – дори само агентите на ДС в инициативния му комитет правят такъв избор почти невъзможен. Дори в момента 50% от избирателите ни гласуваха за Радев. Ако не се бе появила ПП, щяха да са 2/3 (такива бяха данните). И когато Лозан Панов атакува остро Радев (макар и не без причини, както посочих преди малко), допълнително „отпъди“ хора, които биха ни подкрепили, но пък харесват Радев. Получих доста такива коментари в кампанията. Бяхме наясно и с това явление, но поне 1/3 от избирателите ни щяха да са тежко разочаровани от липсата на кандидат. Панов очевидно беше напълно независим, което може би беше тактическа грешка, но много хора от ядрото ни оценяват тази независимост.

Друго важно решение, което взехме – да бъдем партньорски и позитивно настроени спрямо ПП, също имаше, макар и по-малък негативен електорален ефект – много от хората ни считат за естествен партньор след изборите и особено в изборния ден вероятно са взели решение „нека едните наши да бият ГЕРБ, после ще управляват с другите наши“. Споделените ни периферии в областните центрове потвърждават това. В други исторически моменти дясното се е нахвърляло върху всичко ново. И е губило много от това в дългосрочен план.

И последно – нашите ясни послания „за“ ваксинация нямаше как да ни донесат допълнителна подкрепа при тези ниски нива на доверие във ваксините. Но когато умират толкова, това беше отговорната, принципна позиция.

Важните решения, които взехме, на база принципи, бяха с ясен и предвидим електорален резултат – негативен. Първо, че не подкрепихме кабинета на ИТН и отказахме преговори с мандат на БСП беше част от причините за трети избори. Само че просто няма как да дадем такава подкрепа и да се погледнем в огледалото. Изборът да не подкрепим Радев, въпреки, че мнозинството от избирателите ни го подкрепяха, също беше базиран на принципи, макар да носи гарантирани електорални щети.

Цялата тази комбинация от фактори допринесе за по-слабия резултат, а не толкова кампанията ни – тя беше правена от същите хора, които доведоха коалицията от съмнения за влизане до 12% през юли. И, иронично или не, резултатът е следствие от принципните ни решения и на много сложната обстановка. Но в политиката е така.

Представляването на избиратели с разнородни и понякога противопололожни мнения е трудно. Задържането им мотивирани в три поредни кампании, последната от които, съвпадаща с президентската, при поява на нов субект на същия електорален терен, е почти невъзможно. Аз все пак заставам зад всички взети решения – те са такива, защото ние сме такива. Това носи електорални рискове, но носи и увереност, че правим правилните неща за България. И че ще ги правим, когато имаме възможност да управляваме.

Нека не забравяме, че преди година този резултат би бил определян като „успех“. Сега не е, защото екипът ни показа, че може да постига резултати.

И да, Продължаваме промяната преразпределиха гласовете на партиите извън БСП, ДПС и ГЕРБ. Привлякоха малко негласуващи за сметка на 2-та процента „фира“ от ИБНИ. Но смятам, че те са много по-перспективен и позитивен водещ партньор от ИТН и съответно резултатите на тези избори са по-скоро позитивни. Предстоят коалиционни преговори и се надявам скоро да имаме добри новини и ще можем да реализираме идеите, които печелиха доверие.

Материалът Кратък следизборен анализ е публикуван за пръв път на БЛОГодаря.

Рискове и мерки за защита на машинното гласуване

Post Syndicated from Bozho original https://blog.bozho.net/blog/3868

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

Тук е важно да отбележа, че не твърдя, че някой иска да манипулира резултата – нито Сиела, нито ЦИК, нито Информационно обслужване. Но една добра система трябва да бъде отворена и прозрачна и да може всяка заинтересована страна да се убеди, че тя работи правилно, без да разчита на някой доверен участник. Т.е. дори да вярваме на Сиела, ЦИК и Информационно обслужване, сме длъжни да имаме система, която не разчита на доверието към тях.

Машинното гласуване не е просто една машина, то е процес. Процесът има следните стъпките:

  1. Доставка на празни машини
  2. Получаване на изходния код
  3. Компилиране на изходния код до системен образ
  4. Електронно подписване на системния образ
  5. Записване на подписания системния образ на флашка
  6. Инсталиране на системния образ на всички машини (отключване на машините, в случай, че на тях е бил инсталиран друг системен образ, подписан с други ключ)
  7. Генериране на ключове върху смарт-карти (тези белите, с които секционните комисии подписват)
  8. Комплектоване на смарт-картите и техните ПИН-кодове
  9. Транспортиране на машините и смарт-картите до РИК, съответно до секциите
  10. Стартиране на изборния ден
  11. Гласуване
  12. Приключване на изборния ден и подписване на протокола (както на хартия, така и електронно)
  13. Транспортиране на хартиения протокол, смарт-картите и флаш-паметите с машинния протокол
  14. Проверка на протокола и въвеждането му в системата за машинна обработка
  15. Сумиране и обявяване на резултата

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

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

  • Криптографски ключ – освен като ключ, с който може да се отключва и заключва електронно съдържание, може да си го представите като много дълга (незапомняема) парола, която ни дава достъп до дадена скрита информация, но също така ни дава опция да “подпишем” нещо електронно.
  • Електронен подпис – използване на криптографски ключ с цел гарантиране, че даден файл не е бил подменян и че е създаден от оторизирано за това лице (притежател на ключа)
  • Хеш – “отпечатък” на файл или група от файлове. Хешът е това, което се разпечатва на разписката и служи за идентифициране на софтуера, който работи на машината. Всяка най-малка промяна в дори един файл би променила този хеш.
  • Изходен код – кодът описва как работи софтуера – какво прави в един или друг случай, как смята, къде записва резултата
  • UEFI secure boot – това е технология, която ограничава възможния системен софтуер, който може да работи на една машина само до такъв, който е бил електронно подписан с ключ на оторизиран участник (между другото, всеки домашен компютър или лаптоп също използва тази технология).

В целия процес има три групи рискове, които надграждат един върху друг. Основният риск е първият, защото той определя поведението на системата, но останалите рискове са свързани с него:

  • Изходният код – съществува риск някой (доставчикът) да е заложил определено изкривяване на резултата в изходния код, напр. “всеки трети глас за Х отива за Y или Z”.
  • Системният образ – дори кодът да бъде проверен и да не манипулира резултата, системният образ, който е изграден на база на този код, може да бъде подменен с друг. Затова трябва да сме сигурни, че системният образ е точно този, който е изграден от проверения изходен код
  • Управление на ключове – гарантирането на системния образ, а и на машинните протоколи на флаш-паметите, разчита на електронни подписи с криптографски ключове. Те трябва да бъдат управлявани и съхранявани правилно, за да не може някой да подмени едно или друго съдържание.

Следва таблица с рисковете по тези направления, както и мерки, които са взети за тяхното елиминиране. Ще си позволя да добавя колона “участие на ДБ”, защото всякакви обвинения в манипулация са абсолютно нелепи при всичките усилия, които системно полагаме за честността на изборите. Държа да подчертая, че знанието, описано тук, сме го използвали, за да подобрим процеса.

А откъде имам информация за този анализ? От общи познания по информационна сигурност, от техническата спецификация за поръчката, от докладите за удостоверяване на машините на Държавна агенция “Електронно управление” и от участието ми на техническите срещи с експерти от ДАЕУ и ЦИК, на които задавах въпроси. Не твърдя, че имам пълната картина, но имам достатъчно, така че да оценя рисковете.

Броенето на хартиените разписки е мярка, която позволява откриването на манипулации, ако бъде изпълнена както трябва. Затова и още при предните избори настоявахме чрез нашите представители в ЦИК за извадкова проверка. При проверката на разписките гаранцията идва от това, че избирател се е уверил визуално, че машината е приела гласа, който той е подал. Затова е добра идея да има извадково преброяване в СИК (напр. в 5% от секциите), както и по-обстоен централизиран следизборен одит на разписките, при който рисковете от грешки и от умишлен саботаж са намалени. Важно е при одита да бъде сканиран и QR кода, защото той е гаранцията, че разписката е автентична, а СИК трябва да документира всички извънредни събития, като граждани, тръгнали си с разписка в джоба, свършила хартия и др., които могат да се отразят на броя разписки. Този подход би открил опит за мащабна манипулация, без да създава предпоставки за друг вид манипулации – комуникационни, в които определени технически грешки при броенето и въвеждането на резултата се използват за подкопаване на доверието в изборите.

Риск Мерки за защита Прилагат ли се в момента? Ниво на риск Участие на ДБ
Уязвимости в кода, които позволяват промяна на резултата Автоматизирано тестване за уязвимости на изходния код; Да, от ДАЕУ в процеса на удостоверяване Ниско (това за уязвимости, които не са съзнателно поставени и съответно, дори да ги има, не е ясно дали някой може да се възползва от тях) Не директно, но процеса на удостоверяване беше добавен включително и заради натиска на ДБ за одит на машините.
“Вратичка” (backdoor) в кода, която позволява съзнателна манипулация Преглед на кода от участници в процеса и в процеса на удостоверяване Частично – в момента ДАЕУ проверява кода, но все още ЦИК не е дала достъп до представителите на партиите Високо Предложено от ДБ в Изборния кодекс. Три писма, както и внесено проект на решение на ЦИК.
Подмяна на изходния код след неговото одитиране и преди компилиране на системния образ Генериране на хеш на изходния код и публикуването му Да, в рамките на публичната процедура се сравнява хеша на удостоверения код с този на кода, с който се компилира системния образ. Високо В техническата среща настоявах това да се случи; все пак от Сиела и ДАЕУ вече се бяха подготвили с тази стъпка. Публичното компилиране на системния образ беше поискано от ДБ чрез писмо и становище в комисия в Народното събрание
Вкарване на злонамерена функционалност през библиотеки, които не са част от кода, но системата разчита на тях Проверка на електронните подписи или хешовете на библиотеките спрямо публично обявените Частично – това е част от скриптовете за компилиране на системния образ, до които не са ни предоставили достъп. Ниско – такава атака е с висока сложност, защото в кода трябва да има код, който да се възползва от тази промяна по неочевиден начин.
Инсталиране на системен образ, различен от официалния, който да изкривява резултата Подписване на официалния с ключ на ЦИК; Извадкова проверка на UEFI db на машините в процеса на инсталиране извадкова проверка на хеша с външен инструмент HashExtractor Частично – от тези избори системният образ се подписва от ЦИК, а не от Сиела. На предните избори е извършена проверка на процеса на инсталиране, но тя трябва да е по-мащабна. Очакваме решение на ЦИК за извадкова проверка с HashExtractor Високо. Хешът на системната разписка е само частична гаранция, тъй като той се генерира от машината (и тя може да разпечата “правилния’). Затова е нужно разделяне на контрола на ключа и инсталирането (за да не са в една и съща организация) ДБ в няколко писма за предните и тези избори предлага на ЦИК извадкова проверка с външния инструмент HashExtractor, както и проверка на UEFI db (дали разпознава правилните ключове или са добавени изключения) и е подкрепила подписването с ключ на ЦИК
Управляване на машината дистанционно в изборния ден Неизползване на карта за безжична комуникация и премахване на драйверите за всякакви мрежови карти. Да, машините са с премахнати мрежови драйвери по спецификация (и това е потвърдено при удостоверяването) и нямат антени за безжична комуникация Ниско Изрично сме се уверили на база на докладите, че няма възможност за отдалечена комуникация с машините.
Изтичане на ключа за UEFI secure boot Генериране на ключа на смарт-карта и съхранение в сигурна физическа среда; евентуално разпределение на ключа между членовете на ЦИК с напр. С алгоритъма за споделяне на ключове на Шамир. За съжаление не може ключът да се генерира на смарт-карта, защото ако тя се развали, губим машините. Алтернативно, може да се генерира на HSM, който поддържа резервни копия. Частично – доколкото разбрах ЦИК е приело протоколни правила за генерирането и съхранението на ключовете и се пазят физически. За следващите избори това трябва да стане в публична процедура. Средно – изтичането на ключа не значи автоматично манипулация на изборите. В този случай проверката с HashExtractor отново би открила проблема, а разделението между собственика на ключа и организацията, инсталираща машините, допълнително намалява риска. Още на предните избори в писмо сме поискали точните процедури за управление на UEFI ключовете
Подписване на секционни машинни протоколи с нелегитимни ключове Публикуване на всички сертификати от смарт-картите на секционните комисии преди изборния ден, което да позволи последваща проверка и защита срещу нелегитимни ключове Не, в момента се разчита, че карти могат да се издават само от Информационно обслужване и че няма допълнително издадени карти. Ниско, тъй като хартиеният протокол, от който имат копие всички членове на СИК и наблюдателите, съдържа валидните данни и хващането на такава манипулация е лесно.. С писмо от миналата седмица до ЦИК сме поискали публикуване на всички сертификати/публични ключове
Подписване на фалшив машинен протокол по пътя от СИК до РИК Разделяне на смарт-картите от флаш-паметите при транспорта Не, в момента се разчита, че такава манипулация в мащаб едва ли е възможна, поради необходимостта от технически познания на член на СИК. Ниско, тъй като хартиеният протокол, от който имат копие всички членове на СИК и наблюдателите, съдържа валидните данни и хващането на такава манипулация е лесно. С писмо преди предходните избори сме предложили разделяне на смарт-картите от флаш-паметите
Изкривяване на резултата при машинна обработка в РИК/ЦИК Публикуване на всички протоколи; получаване на копие от протоколите от всеки член на СИК и застпъник Да Много ниско – протоколите са първичният документ и след неговото генериране всеки опит за мащабна манипулация може да бъде установен много лесно.

Виждаме, че на практика всички рискове са или адресирани по някакъв начин, или с достатъчно ниско ниво, за да не представляват системен проблем. Моята критика, когато има такава, е в подобряване на вече прилаганите мерки за защита.

Ако приемем, че допълнителните машини са за манипулация на изборите, то Сиела е тази, която би го направила. Само че Сиела в момента разполага с UEFI ключа от предните избори, с който може да отключи съществуващите, “легитимни” машини. Именно затова допълнителните машини с нищо не се различават от съществуващите и не добавят вектор на атака. При следващите избори, в които Сиела няма да има ключа да отключи съществуващите машини, това би било потенциален проблем, тъй като в новите машини може да инсталира всичко, а в старите – само системен образ, подписан от ЦИК. Но на тези разлика няма.

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

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

Бих препоръчал за следващите избори ЦИК да позволи на партиите да изпратят свои представители в складовете, където се извършва инсталирането на машини, и да могат, оп определен ред, да задават въпроси и следят процеса.

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

До момента машинното гласуване елиминира невалидните гласове и намали купения и контролиран вот (вероятно защото няма “тъмна стаичка” и не може да се снима екрана, не може да се носят конци за отмерване на дължина, не могат да се изнасят бюлетини в нишка и др.); елиминираха се и грешките при броенето в СИК, а процесът на приемане на протоколи се ускори. Това са ползи, които си струват допълнителното усилие. Ако намерим други начини за справяне с тези проблеми, супер. Но дотогава, нека партиите наистина впрегнат симпатизиращите им ИТ експерти да наблюдават процеса и да се уверяват в неговата честност, вместо да рисуват абсурдни конспиративни графики и да всяват несигурност и недоверие.

Материалът Рискове и мерки за защита на машинното гласуване е публикуван за пръв път на БЛОГодаря.

България ще бъде различна

Post Syndicated from Bozho original https://blog.bozho.net/blog/3855

В последната година и половина в България се промениха много неща. Те не са очевидни в ежедневнието, но са значителни и са важно начало. Ще опитам да дам моя „вътрешен“ поглед на ситуацията и по-важното – какво предстои. Смятам, че има четири етапа не тези промени.

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

На Росенец Христо Иванов и съмишленици осветиха преплитането на власт, икономически и лични интереси; осветиха влиянието и безнаказаността на ДПС и демаскираха зависимостите на ГЕРБ. Тогава написах, че Росенец е начало. И макар в момента много хората да опитват да омаловажат това събитие, мисля, че историците след много години ще го анализират и ще му отдадат необходимата важност.

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

Росенец даде началото на първия етап. Вторият етап започна с парламентарните избори през април. До тях много хора все още не вярваха, че ГЕРБ няма да управлява и че няма да бъде отпусната тяхната хватка над властови и икономически влияния. Но изборният резултат и последващата твърдост на „партиите на протеста“ размагьоса избирателите – вече беше ясно, че ерата „Борисов“ свършва. ГЕРБ се сви до едно ядро избиратели, което е много различно от това, което ги държа на власт толкова време. Изборите дадоха начало на отпускането на властовите инструменти от ГЕРБ и ДПС, доведоха до служебно правителство, което разрови доста схеми, за които медии и опозиция говореха отдавна, но те си продължаваха и се разрастваха.

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

Третият етап започва на 14 ноември. След изборите има шанс партиите на промяната да направят коалиционно управление, което да управлява с експертност и приличие; с прозрачност и отговорност; управление, което да реши затлачвани с години проблеми в правосъдие, образование, здравеопазване, инфраструктура, а и на практика всяка сфера. Такова управление не е гарантирано, а заявките, които ГЕРБ, ДПС и БСП дадоха в края на предния парламент за съвместни действия, продължени от действията на техните представители в ЦИК в тази предизборна кампания, са плашеща алтернатива – „още от същото, но дори по-грозно“.

Ако това не се случи и все пак партиите на промяната постигнат достатъчно висок резултат, в средносрочен план предстои четвъртата стъпка – промяна на мисленето. Мисленето, че сме аутсайдери, че нищо не зависи от нас, че е окей да сме последни, че е нормално всичко да е корумпирано. Да спрем да се дърпаме надолу в казана. Да водим, а не да догонваме.

Смятам, че последните година и половина и следващите две-три години са от историческа важност за България. И затова влагам усилията си в политическа кауза, каквато е Да, България и Демократична България. При всички рискове и негативи от това. България ще излезе различна от този период и зависи от всеки едни от нас да е към по-добро.

Материалът България ще бъде различна е публикуван за пръв път на БЛОГодаря.

Защо не трябва да се броят 100% от контролните разписки от машинното гласуване?

Post Syndicated from Bozho original https://blog.bozho.net/blog/3852

Демократична България обжалва решението на ЦИК за 100% преброяване на контролите разписки (по партии/коалиции) и вписването на този резултат в отделни протоколи. Аргументите са изложени в детайли в жалбата, ето „накратко“:

  • ЦИК няма право да дописва така Изборния кодекс. В Изборния кодекс се казва нищо такова, ЦИК си измисля правила. И то същия ЦИК, който преди 2 седмици каза „щом не пише изрично, че може с електронен подпис, значи не може“. Само че разликата в случая с разписките е, че няма общ ред, който да важи.
  • Разписките не са бюлетини – те се броят по-трудно (с по-дребен шрифт са, не се сгъват еднакво, а това допринася за повече грешки. Изначално, идеята за машините е да спестят многото човешки грешки; сега ЦИК иска да ги върне „на стероиди“. Тук има и един друг аспект – бюлетините имат поредни номера и защитни механизми; разписките нямат. Всеки може да фалшифицира разписка и да я пусне заедно със своята. Или вместо своята, ако реши да саботира изборите. Единственият начин да се провери, че една разписка е истинска е чрез QR кода, само че в методическите указания такава проверка липсва, а секционните комисии не са длъжни да имат смартфон с приложение за четене и интерпретиране на тези QR кодове.
  • протоколите от ръчното преброяване не подлежат на проверка с автоматизирани контроли при приемането им в РИК, на каквато подлежат протоколите при броене на хартиени бюлетини. Т.е. нито РИК, нито Информационно обслужване ще проверяват дали не пише пълни глупости в този протокол – просто ще го сканират и ще го качат с грешките.
  • световната практика никога не е да се броят 100% от разписките. Винаги се брои извадка – колко да е тя е отделен въпрос, но е абсолютно безсмислено да се хвърля усилие за 100% с всички рискове, изброени по-горе. Досега винаги (и в България, и на други места, където се гласува с машини), разминаванията с резултата от машината винаги са били заради човешка грешка при броенето.

Освен, че предложението има всички тези проблеми, това, което то се опитва да постигне има доста по-разумни решения. Разписките представляват т.нар. voter-verifiable paper audit trail (VVPAT), или проверима от гласоподавателя хартиена одитна следа. Те могат да бъдат проверявани по няколко начина, така че да гарантират, че машините наистина записват това, което избирателят е искал.

  • извадкова проверка – напр. на 2 или 5 процента от секциите. Ако има компрометирани машини, които дават глаове на една партия, вземайки ги от другите, то при проверка на определен процент секции на случаен принцип, това ще се види. Нужно е да има такова несъответсвие дори само в 1 секция, за да предизвика по-задълбочена проверка. При такова несъответсвие, обаче, трябва да се проверят и QR кодовете на всички разписки. Вместо на случаен принцип, може партиите и коалициите да посочват в кои секции искат да се извърши проверката.
  • броене на общия брой разписки и последващо преброяване на резултатите по партии/коалиции само ако общият брой не излезе.
  • следизборен одит, проведен централизирано, със съответните QR четци.

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

Нека ЦИК приеме по-разумни правила за одитиране, така че наистина да има гаранции за работата на машините, а не да създава допълнителен хаос и неясноти. И не на последно място – да позволи експертите от партиите да се включим пълноценно в одита, вкл. с достъп до изходния код.

И нека партиите, чиито представители гласуваха за това решение (ГЕРБ, БСП, ДПС, ИТН) да послушат поне малко експертни аргументи, и особено ГЕРБ да спрат да плашат избирателите с несъществуващи конспирации.

Материалът Защо не трябва да се броят 100% от контролните разписки от машинното гласуване? е публикуван за пръв път на БЛОГодаря.

Трудният разговор за Информационно обслужване

Post Syndicated from Bozho original https://blog.bozho.net/blog/3845

Трудният разговор за Информационно обслужване трябва да започне.

Още в края на 2019 г. остро критикувах решението на ГЕРБ да изтрият цяла глава от Закона за електронно управление (маскирайки неуспеха си да създадат държавно предприятие „Единен системен оператор“) и с едно изречение да прехвърлят цялото ИТ на всяка институция, която Министерският съвет реши, под „крилото“ на Информационно обслужване.

Тази уредба премахва изискванията за прозрачност, позволява схеми с вътрешно възлагане тип „Автомагистрали“, не гарантира предсказуемост (за един ден МС може да извади една институция от списъка и да „убие“ всяко планиране).

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

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

Трябва да отчетем един факт – миналата есен Информационно обслужване изгради национална здравна информационна система за няколко седмици, когато това беше нужно. И го направи добре, по мое мнение. След като 4 години тази система се беше бавила по различни причини.
DDoS атаките от последните дни са сериозни и едва ли има компания, която може да се защити без никакъв downtime. Познавам инфраструктурата на ИО в тази ѝ част и мисля, че е направено достатъчно.

Въпросите, на които трябва да отговорим, са няколко:

  • Трябва ли всяка администрация да си поръчва софтуерни лицензи и хардуер самостоятелно? Моят отговор е „не“ – в много държави има успешни примери за централизирано управление на лицензи и стандартизирани поръчки за хардуер, така че държавата да получи възможно най-добрите оферти. В Тексас дори има агенция, за която производителите имат специални отстъпки в ценовите си листи, защото веднъж влязъл в процеса, производителят получава достъп до цялата администрация „на един клик разстояние“. Информационно обслужване може да върши тази работа.
  • Трябва ли всяка администрация да поддържа ИТ компетенции? Отново не; то не е и възможно. Да, трябва да има грамотен ИТ директор, но принципът на „споделените услуги“ изисква вътрешно възлагане на неща като писане на технически задания, текущ контрол по същество (а не по документи), интегриране на системи, спешна извънгаранционна поддръжка и др.
  • Трябва ли ИО да е „черна кутия“? Не – това е критика към сегашната уредба. Нищо в закона не задължава ИО да публикува никой от договорите за вътрешно възлагане. Наложи се да искаме договора и заданието за изграждане на НЗИС по реда на Закона за достъп до обществена информация. от МЗ дори поискаха удължаване на срока, явно е било трудно да го намерят. Трябва изрична уредба за каталог на предоставяните услуги, цени, на които се предоставят и пълна прозрачност на извършеното – какво, за кого, колко, кога.
  • Не е ли по-добре всичко да се аутсорсне към частния сектор? Краткият отговор е „не винаги“, а дългият е тук: https://blog.bozho.net/blog/3254. За съжаление резултатът през годините не винаги е в полза на този подход. Това не значи, че държавната фирма ще се справи по-добре, разбира се.
  • Трябва ли ИО да пише софтуер за администрациите и при какви условия? Това е най-трудният въпрос. Ако ползваме здравната система за пример, отговорът би бил „да“ – след години нищоправене, ИО свърши работата. Но само на този пример не бива да си правим заключения. Вероятно правилният подход е да се уредят няколко критични сектора в закон, така че да има предвидимост, и извън тях ИО да има само поддържаща функция. Това ще е важната част от дебата в следващото Народно събрание.

Все пак Информационно обслужване е важен инструмент за държавата. Има много слабости, които трябва да бъдат коригирани, много конкретика, която да бъде прецизно уредена. Моделът на ГЕРБ „слагаме един ред в закона и правим каквото си искаме“ трябва да спре. Но тези проблеми имат решения и ще ги приложим в следващия управленски мандат.

Материалът Трудният разговор за Информационно обслужване е публикуван за пръв път на БЛОГодаря.

Разяснения по казуса с прилагането на електронен подпис в изборния процес

Post Syndicated from Bozho original https://blog.bozho.net/blog/3841

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

Да, не съм юрист, но тази базова правна рамка – кой какво задължение има в електронния свят е основата на електронното управление и като експерт по електронно управление съм длъжен да я знам и разбирам.

Нормативните актове имат йерархия. Конституция, Регламент, Закон, Наредба/Правилник/Инструкция. Ако някой акт от по-ниска степен противоречи на някой акт от по-висока, то се прилага този от по-висока. Освен ако този от по-висока не допуска изключения. Законът за нормативните актове дава общата картина:

Чл. 15. (1) Нормативният акт трябва да съответствува на Конституцията и на другите нормативни актове от по-висока степен.
(2) (Нова – ДВ, бр. 46 от 2007 г.) Ако нормативен акт противоречи на регламент на Европейския съюз, прилага се регламентът.
(3) (Предишна ал. 2 – ДВ, бр. 46 от 2007 г.) Ако постановление, правилник, наредба или инструкция противоречат на нормативен акт от по-висока степен, правораздавателните органи прилагат по-високия по степен акт.

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

Кодексите (както и законите), обаче, не съществуват в изолация. Макар Изборният кодекс да урежда изцяло изборната материя, към него се прилагат нормите от други закони – напр. когато става въпрос за гражданство, Изборният кодекс не урежда въпроса за гражданството – той е уреден в Закона за българското гражданство. Когато става дума за личните документи, с които гласуваме, те не са уредени в кодекса, а в Закона за българските лични документи. Когато става дума за административно производство, процесът е уреден в Административнопроцесуалния кодекс (различията с него са изрично уредени в изборния, който дори изрично препраща към АПК).

Когато става дума за приемане на електронни изявления, за електронни документи и електронни подписи, тогава се прилагат Регламент (ЕС) 910/2014, Закона за електронния документ и електронните удостоверителни услуги и Закона за електронното управление.
Та, изборният кодекс не урежда нищо специфично свързано с подписи и документи – разчита на общия ред (вкл. чл. 18а от АПК). А общият ред е такъв – административните органи са длъжни да приемат електронни изявления. Чл. 5 от ЗЕДЕУУ, чл. 11 от ЗЕУ (и дори чл. 8, ал. 2) и чл. 18а от АПК.

Ако вече не съм ви загубил дотук, има още един въпрос – РИК и ЦИК административни органи ли са и доставчици ли са на административни услуги? Дефиницията на „административна услуга“ е Закона за администрацията е доста широка и включва „извършване на други административни действия, които представляват законен интерес за физическо или юридическо лице;“ (макар че вписването на листа може да попада и в по-конкретните точки, дори). Всъщност, дори да не бяха, чл. 18а от АПК ги задължава да приемат документи по електронен път.
Това, между другото, е пример, как едно и също задължение се урежда на няколко места „за всеки случай“, защото някой административен орган някъде е казвал „аа, не, тоя закон не важи за мен“.

Та, ЦИК и РИК са задължени да приемат електронни изявления и са задължени от Регламента да ги приравни на саморъчен подпис. Дори Изборният кодекс да не урежда това изрично, и дори това да се счита за противоречие, Регламентът „печели“, защото така пише в Закона за нормативните актове (той пък е следствие от един текст в Конституцията за международните договори).

Остава аргументът на ЦИК – „щом на някои места в Изборния кодекс е посочено изрично, че може да се използва квалифициран електронен подпис, значи никъде другаде не може, защото не е посочено изрично“. Това е доста превратно (и несъстоятелно) тълкуване на правна норма изобщо.
Местата, където се позволява изрично използване на електронен подпис, са подписките. Те не са част от административния процес, и не са заявление до административен орган. Затова въпросът е по-сив. Там имаше нужда и да се коригира допускането, че подписът се полага лично ПРЕД упълномощено лице (електронният няма смисъл да се полага така).

Знам, че е много интересно човек да се упражнява по темата „кой кога занесъл флашка“ и „щом ЦИК казва, че не важи, значи не важи“. Но законът в една държава е съвкупност от правни норми, които за удобство са разделени под различни заглавия, но представляват просто серия от взаимодействащи си норми. А склонността на българските органи да признават само своя закон и никой друг закон е много лоша практика, която води до такива казуси. А съдът е този, който трябва да каже „не, вашият закон не съществува в паралелна правна вселена“

Материалът Разяснения по казуса с прилагането на електронен подпис в изборния процес е публикуван за пръв път на БЛОГодаря.

Въпроси и отговори за отказа на РИК и ЦИК да регистрира листата на Демократична България

Post Syndicated from Bozho original https://blog.bozho.net/blog/3834

Тъй като днес се натрупаха доста въпроси по казуса с електронните подписи и листата в Стара Загора, правя компилация от тях и техните отговори:

Въпрос: Внесли ли сте всички документи в електронен вид или само разпечатка на електронния подпис на хартия, както пишеше в някои медии?

Отговор: И РИК на своето заседание, и ЦИК в решението си признават, че всички необходими документи са внесени в електронен вид, в рамките на срока, свалени са от флаш-паметта на компютър на РИК и подписите са проверени. След това РИК в решението си прикриват тези детайли.

Въпрос: Какъв тогава е проблемът, ако всичко е внесено както трябва?

Отговор: Проблемите според РИК и ЦИК са различни. Според РИК липсва „вярно с оригинала“ на хартиена разпечатка на оригиналния документ, без каквато те твърдят, че документите са невалидни (въпреки, че са свалили и проверили оригиналите). Проблемът според ЦИК е, че изобщо не може да се използват електронни подписи, въпреки, че европейският регламент, който приравнява електронния подпис на саморъчен се прилага пряко, а РИК и ЦИК са задължение да приемат електронни документи и да признават квалифицираните електронни подписи без да има предварителна уговорка със заявителя.

Въпрос: Защо твърдите, че има атака от ГЕРБ, при положение, че те отричат, посочвайки, че председателката на РИК 27 е от ИТН?

Отговор: Освен решението за потвърждаване на отказа, ЦИК приема да изпрати на всички районни комисии писмо, с което да събере информация дали има подадени листи с електронен подпис (които биха били в нарушение съгласно мотивите на приетото от ЦИК решение). Предложението за това е на Красимир Ципов от ГЕРБ. Подкрепено, отново, от всички останали (без представителите на ДБ).

Въпрос: Нормално ли е да се внасят листите в последния ден?

Отговор: абсолютно нормално е – на практика всички значими партии го правят в последния ден, защото това дава гъвкавост в особени ситуации. Ако видите решенията на РИК 27, решеняита за регистрация на ДБ, ГЕРБ, БСП, ДПС, ИБНИ и ПП са от 12-ти. Само на ИТН е от 11-ти.

Въпрос: Защо ги подавате с електронен подпис, а не на хартия като всички останали?

Отговор: Този въпрос е принципен – когато твърдим, че дигитализацията е приоритет, е редно да изпозлваме правата си според действащото законодателство. И да ги защитаваме, когато се чуе редовната реплика на администрацията: „Това не може с електронен подпис!“

Въпрос: Това значи ли, че ще останете без листа?

Отговор: Административният съд в Стара Загора ще реши, след като обжалваме пред него.

Материалът Въпроси и отговори за отказа на РИК и ЦИК да регистрира листата на Демократична България е публикуван за пръв път на БЛОГодаря.

Кандидат съм за народен представител в София област

Post Syndicated from Bozho original https://blog.bozho.net/blog/3830

Днес Демократична България внесе кандидатските листи за изборите на 14 ноември. Водач съм на листата в 26 МИР – София област. Част съм и от листата в 23-ти МИР в София, но на по-задно място.

Аз съм експерт по електронно управление и вярвам, че тази тема е особено важна именно за Софийска област. Защо?

За да не трябва да хората да казват “отивам до София да оправя едни документи”, всяко взаимодействие с държавата може и трябва да става от компютъра или телефона ни.

В останалите 27 области на страната голяма част от жителите живеят в областния град и в общия случай не пътуват дълго, когато им се наложи да използват някаква административна услуга от държавата. Докато жителите на Софийска област трябва да заделят повече време и да направят повече разходи, за да си свършат работата с институциите, които се намират в София – областната администрация, териториалната дирекция на НАП, кадастъра, агенцията по вписванията, областната дирекция на МВР… Някои от тях имат изнесени офиси в градовете в областта, но това не винаги е достатъчно, а и не е необходимо.

Електронното управление е важно и по много други причини, които съм коментирал в кампанията през юни.

Водач на ГЕРБ в Софийска област е не кой да е, а Младен Маринов, вътрешният министър на Бойко Борисов, при когото електронната идентификация не помръдна. А тя е ключът към електронното управление.

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

Необходимо е да опазваме горите – там съвременните технологии също могат да са много полезни за установяване и спиране на незаконни сечи.

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

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

Но за да може промяната да бъде устойчива и България да ускори модернизацията си, е необходимо първо да не допуснем връщането на ГЕРБ и ДПС във властта – те дълго време я използваха за съвсем други цели. Трябва да реформираме из основи съдебната система и регулаторните органи. Без това няма как да си гарантираме свободата, законността и конкуренцията.

Предизборната кампания ще бъде трудна и поради разрастващата се вълна на епидемията, както и поради есенно-зимното време. Когато срещите с избирателите на живо са невъзможни, ще използвам всички технологични средства за дистанционен разговор.

Материалът Кандидат съм за народен представител в София област е публикуван за пръв път на БЛОГодаря.

В отговор на Борисов относно машинното гласуване

Post Syndicated from Bozho original https://blog.bozho.net/blog/3825

Бойко Борисов ме споменал поименно в свой коментар за машинното гласуване. Както обикновено, фриволно борави с фактите, затова трябва да уточня някои неща. Нашите усилия за подобряване на честността на изборите са последователни и конструктивни и не са от вчера. Борисов казал (във връзка с писмо на Демократична България до ЦИК)

Но сега колегите от „Да, България“ поискаха от ЦИК да извърши нова проверка на машините за гласуване – я виж ти. В писмо до ЦИК експертите посочват, че са необходими още тестове, които да гарантират честността на вота. Те имаха представители досега при кода, само че сега нямат и вече и те дълго изброяват къде са рисковете. И ние настоявахме да има одит на машините. Г-н Божанов, от месеци ви споделяме съмненията си, че правят далавери. Тези 0,8 процента ги броиха 3 дни, за да изкарат Слави първи, не помните ли“

По същество:

  • От Да, България настояваме за независим одит на машините от 2017 г. Настоявахме за него го за изборите през април – тогава мнозинството на ГЕРБ и ДПС игнорира предложенията ни. Искахме го през юли, но тогава имаше валиден аргумент – използването на идентичен софтуер с априлския. Така че опитът му да изкара, че сега сме се сетили, е доста нелеп.
  • “Те имаха представители досега при кода” – представители сме нямали “при кода”. Аз бях представител при удостоверяването, където обсъждахме доста технически аспекти. (Там ГЕРБ не помня да имаха експерт, въпреки всичките им публични изяви по темата. Когато се стигна до “работа, работа, работа”, те си мълчаха.)
  • 0.8 процента не са ги броили три дни – от много години на избори последните под 1% не се въвеждат в сайта на ЦИК, докато не е минала втората проверка на протоколите в ЦИК (първата е в РИК). Тъй като има хартиени протоколи, финалните резултати не се обявяват. Борисов и и хората им в ЦИК знаят това и е демагогия да говорят такива неща.

Напомням също така, че измененията в Изборния кодекс през април, с които се въведе задължителен достъп до изходния код за представителите на партиите и коалициите, беше на Демократична България. ГЕРБ не го подкрепи.

Всъщност, писмото, което изпратихме тази седмица до ЦИК е почти идентично на писмо, което бяхме изпратили за изборите през юли. Опитите ни да подобрим процеса не са от вчера, но нямаме намерение да влизаме в тона на Борисов, че някой манипулира изборите. Не го правихме дори когато мнозинството в ЦИК беше тяхно. Призовавам Борисов и колегите му в ГЕРБ към по-отговорно и последователно поведение спрямо изборния процес и към по-внимателно боравене с фактите. И се надявам да видя техен представител на удостоверяването на машините този път.

Материалът В отговор на Борисов относно машинното гласуване е публикуван за пръв път на БЛОГодаря.

Hypotheses About What Happened to Facebook

Post Syndicated from Bozho original https://techblog.bozho.net/hypotheses-about-what-happened-to-facebook/

Facebook was down. I’d recommend reading Cloudflare’s summary. Then I recommend reading Facebook’s own account on the incident. But let me expand on that. Facebook published announcements and withdrawals for certain BGP prefixes which lead to removing its DNS servers from “the map of the internet” – they told everyone “the part of our network where our DNS servers are doesn’t exist”. That was the result of a backbone self-inflicted failure due to a bug in the auditing tool that checks whether the commands executed aren’t doing harmful things.

Facebook owns a lot of IPs. According to RIPEstat they are part of 399 prefixes (147 of them are IPv4). The DNS servers are located in two of those 399. Facebook uses a.ns.facebook.com, b.ns.facebook.com, c.ns.facebook.com and d.ns.facebook.com, which get queries whenever someone wants to know the IPs of Facebook-owned domains. These four nameservers are served by the same Autonomous System from just two prefixes – 129.134.30.0/23 and 185.89.218.0/23. Of course “4 nameservers” is a logical construct, there are probably many actual servers behind that (using anycast).

I wrote a simple “script” to fetch all the withdrawals and announcements for all Facebook-owned prefixes (from the great API of RIPEstats). Facebook didn’t remove itself from the map entirely. As CloudFlare points out, it was just some prefixes that are affected. It can be just these two, or a few others as well, but it seems that just a handful were affected. If we sort the resulting CSV from the above script by withdrawals, we’ll notice that 129.134.30.0/23 and 185.89.218.0/23 are the pretty high up (alongside 185.89 and 123.134 with a /24, which are all included in the /23). Now that perfectly matches Facebook’s account that their nameservers automatically withdraw themselves if they fail to connect to other parts of the infrastructure. Everything may have also been down, but the logic for withdrawal is present only in the networks that have nameservers in them.

So first, let me make three general observations that are not as obvious and as universal as they may sound, but they are worth discussing:

  • Use longer DNS TTLs if possible – if Facebook had 6 hour TTL on its domains, we may have not figured out that their name servers are down. This is hard to ask for such a complex service that uses DNS for load-balancing and geographical distribution, but it’s worth considering. Also, if they killed their backbone and their entire infrastructure was down anyway, the DNS TTL would not have solved the issue. But
  • We need improved caching logic for DNS. It can’t be just “present or not”; DNS caches may keep “last known good state” in case of SERVFAIL and fallback to that. All of those DNS resolvers that had to ask the authoritative nameserver “where can I find facebook.com” knew where to find facebook.com just a minute ago. Then they got a failure and suddenly they are wondering “oh, where could Facebook be?”. It’s not that simple, of course, but such cache improvement is worth considering. And again, if their entire infrastructure was down, this would not have helped.
  • Consider having an authoritative nameserver outside your main AS. If something bad happens to your AS routes (regardless of the reason), you may still have DNS working. That may have downsides – generally, it will be hard to manage and sync your DNS infrastructure. But at least having a spare set of nameservers and the option to quickly point glue records there is worth considering. It would not have saved Facebook in this case, as again, they claim the entire infrastructure was inaccessible due to a “broken” backbone.
  • Have a 100% test coverage on critical tools, such as the auditing tool that had a bug. 100% test coverage is rarely achievable in any project, but in such critical tools it’s a must.

The main explanation is the accidental outage. This is what Facebook engineers explain in the blogpost and other accounts, and that’s what seems to have happened. However, there are alternative hypotheses floating around, so let me briefly discuss all of the options.

  • Accidental outage due to misconfiguration – a very likely scenario. These things may happen to everyone and Facebook is known for it “break things” mentality, so it’s not unlikely that they just didn’t have the right safeguards in place and that someone ran a buggy update. The scenarios why and how that may have happened are many, and we can’t know from the outside (even after Facebook’s brief description). This remains the primary explanation, following my favorite Hanlon’s razor. A bug in the audit tool is absolutely realistic (btw, I’d love Facebook to publish their internal tools).
  • Cyber attack – It cannot be known by the data we have, but this would be a sophisticated attack that gained access to their BGP administration interface, which I would assume is properly protected. Not impossible, but a 6-hour outage of a social network is not something a sophisticated actor (e.g. a nation state) would invest resources in. We can’t rule it out, as this might be “just a drill” for something bigger to follow. If I were an attacker that wanted to take Facebook down, I’d try to kill their DNS servers, or indeed, “de-route” them. If we didn’t know that Facebook lets its DNS servers cut themselves from the network in case of failures, the fact that so few prefixes were updated might be in indicator of targeted attack, but this seems less and less likely.
  • Deliberate self-sabotage1.5 billion records are claimed to be leaked yesterday. At the same time, a Facebook whistleblower is testifying in the US congress. Both of these news are potentially damaging to Facebook reputation and shares. If they wanted to drown the news and the respective share price plunge in a technical story that few people understand but everyone is talking about (and then have their share price rebound, because technical issues happen to everyone), then that’s the way to do it – just as a malicious actor would do, but without all the hassle to gain access from outside – de-route the prefixes for the DNS servers and you have a “perfect” outage. These coincidences have lead people to assume such a plot, but from the observed outage and the explanation given by Facebook on why the DNS prefixes have been automatically withdrawn, this sounds unlikely.

Distinguishing between the three options is actually hard. You can mask a deliberate outage as an accident, a malicious actor can make it look like a deliberate self-sabotage. That’s why there are speculations. To me, however, by all of the data we have in RIPEStat and the various accounts by CloudFlare, Facebook and other experts, it seems that a chain of mistakes (operational and possibly design ones) lead to this.

The post Hypotheses About What Happened to Facebook appeared first on Bozho's tech blog.