All posts by Bozho

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

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.

Digital Transformation and Technological Utopianism

Post Syndicated from Bozho original https://techblog.bozho.net/digital-transformation-and-technological-utopianism/

Today I read a very interesting article about the prominence of Bulgarian hackers (in the black-hat sense) and virus authors in the 90s, linking that to the focus on technical education in the 80s, lead by the Bulgarian communist party in an effort to revive communism through technology.

Near the end of the article I was pleasantly surprised to read my name, as a political candidate who advocates for digital e-government and transformation of the public sector. The article then ended with something that I’m in deep disagreement with, but that has merit, and is worth discussing (and you can replace “Bulgaria” with probably any country there):

Of course, the belief that all the problems of a corrupt Bulgaria can be solved through the perfect tools is not that different to the Bulgarian Communist Party’s old dream that central planning through electronic brains would create communism. In both cases, the state is to be stripped back to a minimum

My first reaction was to deny ever claiming that the state would be stripped back to a minimum, as it will not (risking to enrage my libertarian readers), or to argue that I’ve never claimed there are “perfect tools” that can solve all problems, nor that digital transformation is the only way to solve those problems. But what I’ve said or written has little to do with the overall perception of techno-utopianism that IT people-turned-policy makers are usually struggling with.

So I decided to clearly state what e-government and digital transformation of the public sector is about.

First, it’s just catching up to the efficiency of the private sector. Sadly, there’s nothing visionary about wanting to digitize paper processes and provide services online. It’s something that’s been around for two decades in the private sector and the public sector just has to catch up, relying on all the expertise accumulated in those decades. Nothing grandiose or mind-boggling, just not being horribly inefficient.

When the world grows more complex, legislation and regulation grows more complex, the government gets more and more functions and more and more details to care about. There are more topics to have policy about (and many to take an informed decision to NOT have a policy about). All of that, today, can’t rely on pen-and-paper and a few proverbial smart and well-intentioned people. The government needs technology to catch up and do its job. It has had the luxury to not have competition and therefore it lagged behind. When there are no market forces to drive the digital transformation, what’s left is technocratic politicians. This efficiency has nothing to do with ideology, left or right. You can have “small government” and still have it inefficient and incapable of making sense of the world.

Second, technology is an enabler. Yes, it can help solve the problems with corruption, nepotism, lack of accountability. But as a tool, not as the solution itself. Take open data, for example (something I’ve been working on five years ago when Bulgaria jumped to the top of the EU open data index). Just having the data out there is an important effort, but by itself it doesn’t solve any problem. You need journalists, NGOs, citizens and a general understanding in society what transparency means. Same for accountability – it’s one thing to have every document digitized, every piece of data – published and every government official action leaving an audit trail; it’s a completely different story to have society act on those things – to have the institutions to investigate, to have the public pressure to turn that into political accountability.

Technology is also a threat – and that’s beyond the typical cybersecurity concerns. It poses the risk of dangerous institutions becoming too efficient; of excessive government surveillance; of entrenched interests carving their ways into the digital systems to perpetuate their corrupt agenda. I’m by no means ignoring those risks – they are real already. The Nazis, for example, were extremely efficient in finding the Jewish population in the Netherlands because the Dutch were very good at citizen registration. This doesn’t mean that you shouldn’t have an efficient citizen registration system. It means that it’s not good or bad per se.

And that gets us to the question of technological utopianism, of which I’m sometimes accused (though not directly in the quoted article). When you are an IT person, you have a technical hammer and everything may look like a binary nail. That’s why it’s very important to have a glimpse on humanities sides as well. Technology alone will not solve anything. And my blockchain skepticism is a hint in that direction – many blockchain enthusiasts are claiming that blockchain will solve many problems in many areas of life. It won’t. At least not just through clever cryptography and consensus algorithms. I once even wrote a sci-fi story about exactly the aforementioned communist dream of a centralized computer brain that solves all social issues while people are left to do what they want. And argued that no matter how perfect it is, it won’t work in a non-utopian human world. In other words, I’m rather critical of techno-utopianism as well.

The communist party, according to the author, saw technology as a tool by which the communist government would achieve its ideological goal.

My idea is quite different. First, technology necessary for “catching up” of the public sector, and second, I see technology as an enabler. What for – whether it’s for accountability or surveillance, fight with corruption or entrenching corruption even further – it’s our role as individuals, as society, and (in my case) as politicians, to formulate and advocate for. We have to embed our values, after democratic debate, into the digital tools (e.g. by making them privacy-preserving). But if we want to have good governance, and to be good at policy-making in the 21st century, we need digital tools, fully understanding their pitfalls and without putting them on a pedestal.

The post Digital Transformation and Technological Utopianism appeared first on Bozho's tech blog.

Отчет за парламентарната ми дейност

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

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

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

  • Комисия по дигитализация, електронно управление и информационни технологии – създадохме такава комисия, която да контролира и направлява законодателния процес по дигиталните теми. Участвах на всяко заседание на тази комисия, активно вземайки думата, задавайки въпроси към институциите и подпомагайки председателя (Иво Мирчев от ДБ). Подпомагах и избора на дневен ред на комисията – какви теми да бъдат разглеждани, кой да бъде поканен и на какви въпроси да отговаря. По-надолу ще опиша трите основни въпроса, които разгледахме
  • Електронна идентификация – проектът за електронна идентификация е „забил“ в съда на Европейския съюз след обжалване на процедурата у нас. Повикахме МВР да отговорят как планират да реализират националната схема, дали са подготвени за реализиране на т.нар. „цифров портфейл“, предложен от Европейската комисия. В следствие на техните отговори преценихме различните варианти за действие и изпратихме писмо до премиера Янев, с което предлагаме да изпратят официално искане до съда на ЕС за по-бързо произнасяне, тъй като проектът е стратегически. Надявам се това да доведе до ускоряване на процеса, за да имаме и нови лични карти, и електронна идентичност възможно най-скоро.
  • План за възстановяване и устойчивост – проектите в плана за възстановяване и устойчивост, свързани с електронното управление, са няколко. Изискахме от Държавна агенция „Електронно управление“ и от вицепремиера Пеканов всички допълнителни данни, които не са част от архива и поискахме отговори на някои специфични въпроси. В следствие на това предложихме подобрения по някои от проектите, така че да се гарантира, че няма да бъдат изхарчени едни пари без резултат. Проектът за киберсигурност да бъде прецизиран, така че да е ясно за какво и колко пари отиват; в проекта за дигитализация на регистри да бъде включена и дейност за мигриране на малки регистри от тетрадки и ексели към централизирана система за управление на регистри; от проекта за широколентовия достъп да отпаднат 5G кулите по магистралите, защото на автономните автомобили това не им трябва, както пише в проекта, а и има други европейски източници на финансиране.
  • НСИ и преброяването – повикахме НСИ да дадат обяснение какво и защо се е случило със системата за преброяването. Обобщение писах във Фейсбук и тук, а заключението е, че трябва повече централна координация и по-добра подготовка с оглед киберсигурността на ключови системи.
  • ЦИК и машинното гласуване – повикахме и ЦИК в комисията, за да обсъдим машинното гласуване при избори 2в1. Там предложих няколко неща – тестове за ползваемост (A/B тестове), така че интерфейсът да е максимално удобен на избирателите; извадкова проверка на хешовете на машините с външен инструмент, за да не разчитаме само на това, което те самите разпечатват; системният образ на софтуера, който се инсталира на всички машини, да бъде компилиран публично. Подчертах и задължението изходният код да е наличен за заинтересованите страни (по закон – експерти, излъчени от партиите/коалициите, гражданския и академичния сектор). Ще следим оттук нататък ЦИК да спази това задължение.
  • Законопроект за изменение на Закона за електронно управление – предлагаме няколко неща, като основните са две – доставчици на обществени услуги да участват в електронния обмен на документи с администрацията, ако са част от административна услуга (напр. ако за да получите разрешение за ползване на търговски обект ви изискват партида от ЕРП, това да не става с хвърчаща бележка, а служебно, по електронен път); администрациите да са длъжни да водят малки и прости регистри в централизирана система, отговаряща на всички съвременни изисквания, а не в ексел, на тетрадки или в някакви стари и пробити системи, както е в момента. Законопроектът получи подкрепя от всички партии, от администрацията и от браншови организации, в рамките на проведеното обществено обсъждане.
  • Законопроект за отпадане на стикерите за технически преглед – новите стикери с чип, които са скъпи и грозно стоят на средата на предното стъкло, са напълно излишни. Предложихме отпадането им и замяната им с проверка в централизираните регистри по номер на автомобил. Повече за проблемите с RFID чиповете съм писал тук. Подготвихме и сходен законопроект за отпадане на стикерите за Гражданска отговорност, но тъй като стана ясно, че няма как да мине, не го внесохме.
  • Законопроект за автоматично получаване на EORI номер (вместо да го заявяваме през неудобния сайт на агенция Митници)
  • Законопроект за уреждане и ограничаване на безконтролното записване на данни за преминаващи автомобили от камерите на АПИ – към настоящия момент АПИ събира данни за това кой автомобил, къде и кога е преминал и ги съхранява на база на вътрешен акт, без да има гаранции кой има достъп, за колко време се съхраняват и за какво се ползват. С предложението уреждаме тези неща, включително уведомление на шофьорите, чиито данни са били използвани след като са били събрани.
  • Въпрос към ГД ГРАО за отказите за предоставяне на данни – Националната база данни „Население“ е основен компонент на електронното управление. Повечето институции трябва да имат право да четат данни оттам – по ЕГН да получат три имена и адрес. Общините, например, често имат нужда от тези данни, за да предоставят общински услуги (при записване в детски градини, където адресът на родителите има значение, вместо родителите да носят удостоверение, общината да го събира служебно). За съжаление през годините има доста оплаквания, че ГД ГРАО отказва достъп. От отговорът на ГРАО излиза, че това наистина е така – около 1/4 от заявленията за достъп са получили отказ. Изводът от това е, че трябва да се промени Закона за гражданска регистрация, така че да не позволява превратно тълкуване, така че общините да могат да си вършат работата (особено предвид, че те са тези, които вкарват данните в регистъра), и разбира се – данните да бъдат защитени от изтичане
  • Въпрос до премиера дали в Администрацията на министерския съвет документи се обменят електронно – отдавна е факт, че Администрацията на министерски съвет е една от най-недигиталните институции. Това е проблем на практическо и на символно ниво – не може да говорим за е-управление, а в „сърцето“ на управлението да се разнасят колички с папки по етажите. Отговорът, все пак е, че АМС е започнала (най-накрая!) поетапно да въвежда електронен документооборот. Надявам се натискът за това да продължи и този план да бъде изпълнен в следващите месеци

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

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

Какви са проблемите на системата за преброяването?

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

Проблемите на НСИ са сложни и многопластови и не могат да се обяснят просто с посочване на някого с пръст. Трябва, обаче, да търсят дългосрочни решения, а не оправдания.

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

  • НСИ е направил поръчка за готова система за преброяване, а не за разработка на такава. Като цяло разумно решение. Местният партньор на шведската фирма „производител“ е СкейлФокус, които е трябвало да направят инсталация, конфигурация и поддръжка. Много често компании предпочитат да имат местни партньори, при които отива процент от продажбата, т.нар. two tier (или понякога three tier) distribution model. Цената е за лиценз, инсталация и конфигурация и като цяло изглежда разумна. Функционалностите са доста повече от
    онлайн форми (на който му е интересно, техническото задание, предложението и договорът са на сайта на НСИ)
  • DDoS атаката е сериозна – ако наистина 250 гигабита в секунда са се „изсипали“ срещу системата, то на чисто софтуерно ниво няма какво да се направи – „тръбата“ се запушва, дори приложението да може да обработи данните. Засега няма причина да смятаме, че тази информация е грешна, най-много да е малко преувеличена, но дори да е наполовина, пак е значителна. Не съм съгласен, че „какво толкова сложно има да се защити една система“ – това не е софтуерен проблем, а мрежови. И няма прости и евтини решения.
  • НСИ не са били подготвени за такава атака, а е трябвало. Ползването на CloudFlare е недостатъчна мярка за критичността и репутационните щети. Обикновено проблемът с CloudFlare е не самият CloudFlare, а това, че по други данни (исторически и настоящи DNS записи и просто логическо мислене) може да се прескочи CloudFlare.
  • Тук обаче ще вдигна нещата едно ниво по-нагоре – това не е проект на НСИ, това е национален проект. НСИ просто е натоварен с неговото изпълнение. На ниво държава изгелжда липсва адекватна подготовка за защита от DDoS. Държавна агенция „Електронно управление“ и ресорните вицепремиери до момента е трябвало да осигурят такава не само на НСИ, но и за всички системи. Тя не е евтина, но работи (чрез т.нар. scrubbing центрове, които „почистват“ мръсния трафик преди да го изпратят към системите.) Кадровото осигуряване също е важна тема – колко ИТ експерти има НСИ и на какво заплащане и можем ли да очакваме да свършат всичко? Това също е системен проблем в държавата.
  • DDoS атаките рядко водят до изтичане на данни (сами по себе си – никога, но понякога се ползват за димна завеса, прикрирваща други действия; засега не изглежда да е такъв случаят).
  • съдейки по съобщенията за грешка, които излизаха в предните два дни, е имало и чисто интеграционни проблеми за проверката на въведените лични данни. За тези проблеми няма добро оправдание, а причината е липсата на координация между институциите и липсата на отговорен за процеса.

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

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

Obtaining TLS Client Certificates In Spring Integration

Post Syndicated from Bozho original https://techblog.bozho.net/obtaining-tls-client-certificates-in-spring-integration/

Spring Integration is a very powerful and extensible framework for, well, integrations. But sometimes it’s not trivial how to get some information that yo need. In my case – a certificate used for mutual authentication in a TLS (syslog over TLS) connection. You have a Java method that receives a Message and ideally you’d want to get the certificate chain used by the client to authenticate itself (e.g. you may need to extract the CN).

Fortunately, Spring Integration is flexible. And it can be done, but it’s a bit convoluted. I’ll use XML notation, but the same can be achieved through Java config.

<bean id="nioConnectionSupport" class="com.yourcompany.util.net.TLSMutualNioConnectionSupport">
        <constructor-arg ref="sslContextSupport" />
        <constructor-arg value="false" />
</bean>
<bean id="interceptorFactoryChain" class="org.springframework.integration.ip.tcp.connection.TcpConnectionInterceptorFactoryChain">
        <property name="interceptors">
            <bean class="com.yourcompany.util.net.TLSSyslogInterceptorFactory" />
        </property>
</bean>

<int-ip:tcp-connection-factory id="tlsConnectionFactory" type="server" port="${tcp.tls.port}"
                                   using-nio="true" nio-connection-support="nioConnectionSupport"
                                   single-use="false" interceptor-factory-chain="interceptorFactoryChain" />

The sslContextSupport would typically be a org.springframework.integration.ip.tcp.connection.DefaultTcpSSLContextSupport or a custom implementation (e.g. if you want to use a “blind” trust store)

Then you’d need the two classes. You can check them at their respective gists: TLSSyslogInterceptorFactory and TLSMutualNioConnectionSupport.

What do these classes do? The TLSSyslogInterceptorFactory sets a new header for the message that contains the client ceritficates. The TLSMutualNioConnectionSupport class sets the “wantClientAuth” option on the SSL Engine. There is another option – “needClientAuth” which would for client authentication, rather than just support it. Depending on the use case you can use one or the other.

Then you can obtain the certificates at your handler method via:

Certificate[] certificates = (Certificate[]) message.getHeaders().get(TLSSyslogInterceptorFactory.TLS_CLIENT_CERTIFICATES);

A small tip I wanted to share to help the next one trying to achieve that.

The post Obtaining TLS Client Certificates In Spring Integration appeared first on Bozho's tech blog.

Коалиция, плаващи мнозинства, кадруване, отговорност – изясняване на базовата политическа терминология

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

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

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

Коалиция е формулата, по която се осигурява тази подкрепа. Няколко партии се разбират предварително, че за определени въпроси (приоритети) ще гласуват заедно. Няма по всички теми да гласуват заедно, но по много на брой важни неща – ще. Коалиция не значи, че ще се делят министри (по формула 3-5-8 или каквото е съотношението), не значи, че на някой му се полагат или дължат постове. Разбирателството кои реформи ще се подкрепят заедно се оформя често като коалиционно споразумение. В него може да има формула и за министри и заместник-министри, а може и да няма. Заради Тройната коалиция думата „коалиция“ стана мръсна, но тя е просто един политически инструмент.

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

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

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

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

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

Надявам се с тези семантични уточнения да допринеса за комуникацията по актуалните политически въпроси.

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

Накъде с електронните подписи

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

От около година подписвам електронни документи през демонстрационното приложение на Европейската комисия за електронно подписване (DSS, open source проект, доста читав). Защото Adobe Reader се счупи и не мога да го оправя. Т.е. не мога да подписвам PDF-и освен с DSS + NexU.

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

За НАП трябва да пускам приложението за подписване през конзолата, защото имам доста Джави на компютъра, а то не тръгва с по-новите.

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

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

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

В личните карти пък ще трябва да има рядко използван чип, който да можем да използваме чрез NFC, за да „вържем“ телефона си с електронната ни идентичност.

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

За скандала с Pegasus и следенето на журналисти

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

Тази сутрин по БНР обсъдихме шпионския софтуер Pegasus, използван за следене на журналисти и опозиционери в режими по света, в т.ч. в Унгария. Ето накратко:

  • софтуерът влиза през отваряне на злонамерен линк или през компрометирано приложение и получава пълен достъп до телефона, благодарение на уязвимости на операционните системи
  • оправданието винаги е „борба с тероризма“. Обаче никога няма данни за реално предотвратени атентати.
  • само „добрите“ правителства ще имат достъп е наивен аргумент и не работи. Всяко правителство може да се изкуши, а може и от некадърност да „изпусне“ софтуера в по-лоши ръце
  • NSO (компанията, която разработва и продава Pegasus) казват, че не знаят как клиентите им го ползват. Но някак знаят, че се ползва за борба с тероризма. Последно?
  • наличието на обобщен списък от следени номера може да значи, че компанията всъщност знае кои са следените с нейния софтуер. Това е още по-голям проблем.
  • имам призив към ИТ сектора: имаме лукса да отчитаме етичните аспекти на предлаганата ни работа, защото добре платена работа има много. Нека не избираме да създаваме кибероръжия. Това във връзка с факта, че NSO има българска дъщерна компания – Circles, в която (вероятно) се работи по продуктите им.
  • много е важен демократичният (парламентарен и не само) контрол върху службите. Засега няма индикации България да е ползвала този софтуер, но следва съответната парламентарна комисия да провери имало ли е транзакции към NSO или нейни свързани дружества.
  • трябва да се помисли за забрана на търговията с уязвимости и произтичащ от тях софтуер – от това се възползват репресивни режими и чужди служби и няма легитимна пазарна стойност.

Всеки път трябва да си припомняме, че няма как да гарантираме, че само „добрите“ имат достъп до дадена технология. Както при дебатите около отслабване на криптирането, така и при използването на spyware.

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

Въпроси и отговори за следизборните сглобки

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

Чета коментари и анализи на следизборната обстановка и доста въпроси и обвинения към Демократична България. Ето ги накуп и техните кратки отговори.

Искате ли постове?

Не. И много пъти сме казвали изрично, че постове не ни интетесуват и не са условие за подкрепа.

А защо искате да се консултира с вас състава на кабинета?

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

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

Никога не сме обявявали бланкетна подкрепа. Условията винаги са били 12-те ни приоритета. Обявявали сме пълна готовност за разговори, не пълна готовност за подкрепа.

Христо Иванов иска ли да е министър или главен прокурор?

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

Отричате ли правото на първия да състави кабинет?

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

Говорите само за ДПС, забравихте ли Борисов?

Не. Но ДПС изоставя Борисов и търси нов „гостоприемник“. Борисов не трябва повече да управлява, но ние искаме смяна на Д(П)С модела, а не просто на последното му проявление.

Ако нямате доказателства за връзки с ДПС, защо поставяте условия?

За да гарантираме, че наистина няма да има зависимост от „златния пръст“ на ДПС. Комисиите за Росенец и ТЕЦ Варна биха били неприемливи за Доган.

Защо с 34 депутати поставяте условия на победителя?

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

Защо толкова искате да управлявате?

Да сме в опозиция за нас е по-лесно – били сме 4 г. в опозиция. Но всяка партия съществува, за да реализира идеите си. Затова правим усилие да сме част от парламентарно мнозинство, което да реализира смяна на модела. Ако това е невъзможно, сме готови и за нови избори, и да бъдем в опозиция.

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

Следизборно

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

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

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

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

Благодаря на Демократична България и особено на доброволците на Да, България от 24-ти МИР.

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

Още веднъж – благодаря за цялата подкрепа и доверие. Ще ги приведа в действие и резултат.

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

Технически въпроси и отговори относно машините за гласуване

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

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

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

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

В: В презентацията се споменаваше, че смарткартите имат чип на Infineon – проверено ли е дали тези модели са засегнати от уязвимостта ROCA, открита преди няколко години
О: Да, проверено е и няма тази уязвимост

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

В: Колко време издържа мастилото върху хартията на разпечатания протокол?
О: Мастилото и хартията са удостоверени, че издържат 5 години.

В: Кой извършва инсталирането и персонализирането на машините в складовете?
О: Доставчикът (Сиела-Норма)

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

В: Валидирането на смарт картите на база на какво се извършва?
О: На база на комбинация от всички атрибути на сертификата. Сертификатът се слага на машината по време на персонализирането ѝ и след това само смарткарта, притежаваща този сертификат (и съответния му частен ключ) може да работи с машината.

В: При персонализирането на смарт картите къде се генерира частния ключ – на самата карта или извън нея?
О: На самата карта, което не позволява изтичане

В: Персонализирането синхронизирано ли е с решенията на РИК за проманя на листи (напр. при отказване, смърт)
О: Отразени са всички промени до момента. Оттук нататък всички промени минават през ЦИК и се синхронизират със Сиела.

В: Къде се намира частният ключ, с който се подписва протокола на флашката? На смарт картата или другаде?
О: На смарт картата (предназначена за членовете на СИК)

В: Кой присъства на правенето на build (системен образ)
О: Ще се използва билда от предните избори, на който са присъствали Сиела-Норма и представител на Държавна агенция „Електронно управление“

В: В какъв формат е системният образ?
O: FSA (File System Archive)

В: Изключена ли е възможността през USB порт да бъдат разпознавани клавиатури, мишки и други устройства (които потенциално могат да имат злонамерено действие)
О: Да, изключени са

В: Кой и как управлява ключовете за UEFI secure boot?
О: Въпрос от компетентността на ЦИК, с нужда от изпращане на писмен въпрос (членовете на ЦИК трябваше да излязат за заседание, което налагаше отнасянето до някои въпроси в тази форма)

В: Освен системната разписка, съдържаща хеша на всички файлове (с изключение на логове и временни), е възможно да се включи външен hash extractor, който да сметне хеша независимо. Как работи той?
О: Hash extractor-ът е bootable флашка, подписана със съответния ключ за UEFI secure boot, чрез която се извлича хеша.
Коментар: Тук предложението, което ще изпратим заедно с въпросите, е да се използва hash extractor-ът на извадка от машините преди и/или след изборите, за допълнителна проверка

В: Хешът на системния образ ще бъде ли публикуван?
О: Да

В: Как се гарантира рандомизацията на гласовете в криптираната част на флашката? (този въпрос ми беше в списъка, но го зададе колега от неправителствена организация. В доклада за предните избори пише, че всички файлове са с timestamp = 0 и със случайно генерирани имена, но колегата отбеляза, че ext3 файловата система има включено по подразбиране журналиране, което може да се използва за разкриване на поредността).
О: Слеед всеки подаден глас машината разменя съдържанието на новия глас със съществуващ клас в някакъв процент от случаите, така че да се получи рандомизация.

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

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

7 принципа на електронното управление

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

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

  • еднократно събиране на данни – ако държавата вече има данни за вас, няма право да ги изисква отново (нито да ги въвеждате и декларирате, нито да ги доказвате с удостоверения)
  • оперативна съвместимост – системите трябва да говорят на „един език“, т.е. да представят по един и същи начин общи структури от данни като „адрес“, „имот“, „професия“ и др.
  • сигурна електронна идентичност – всеки гражданин трябва да има лесен и удобен начин да се идентифицира пред държавни органи (и не само) с цел използване на електронни услуги.
  • конфиденциалност – когато толкова много наши данни са в електронен вид, съхранявани от държавата, трябват сериозни гаранции срещу злоупотреби. За всичките ни данни трябва да има информация кой има право да ги чете и кой реално ги е чел и с каква цел. Да получаваме известия, когато някой прочете наши данни и да няма изключения от това правило (в момента системата RegiX поддържа такива лоове, но писането в тях може да бъде заобикаляно)
  • интегритет – никой не трябва да може да подменя данни (както в момента се подменят документи с корупционна цел). Никой не трябва да може да смени кръвната група в здравното ви досие, собствеността ви, данните за фирмата ви, офертата ви в процедура по ЗОП и др. В Естония използват технология, подобна на блокчейн за целта. Нужно е и у нас да има такава криптографска защита от подмяна (хубавото е, че има достатъчно open source блокчейн решения, които можем да използваме)
  • наличност – не трябва да има никакъв риск от загуба на данни. При срива на Търговския регистър бяхме на една крачка от това, което щеше да значи хаос. Нужно е данните да имат адекватни резервни копия, включително в център за данни извън страната (както естонците го наричат – „посолство за данни“).
  • удобство – услугите трябва да се правят за граждани, а не за бюрократи. Потребителският интерфейс трябва да е съврвеменен, а потребителското изживяване (UX) да е преминало през редица тестове.

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

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

Every Serialization Framework Should Have Its Own Transient Annotation

Post Syndicated from Bozho original https://techblog.bozho.net/every-serialization-framework-should-have-its-own-transient-annotation/

We’ve all used dozens of serialization frameworks – for JSON, XML, binary, and ORMs (which are effectively serialization frameworks for relational databases). And there’s always the moment when you need to exclude some field from an object – make it “transient”.

So far so good, but then comes the point where one object is used by several serialization frameworks within the same project/runtime. That’s not necessarily the case, but let me discuss the two alternatives first:

  • Use the same object for all serializations (JSON/XML for APIs, binary serialization for internal archiving, ORM/database) – preferred if there are only minor differences between the serialized/persisted fields. Using the same object saves a lot of tedious transferring between DTOs.
  • Use different DTOs for different serializations – that becomes a necessity when scenarios become more complex and using the same object becomes a patchwork of customizations and exceptions

Note that both strategies can exist within the same project – there are simple objects and complex objects, and you can only have a variety of DTOs for the latter. But let’s discuss the first option.

If each serialization framework has its own “transient” annotation, it’s easy to tweak the serialization of one or two fields. More importantly, it will have predictable behavior. If not, then you may be forced to have separate DTOs even for classes where one field differs in behavior across the serialization targets.

For example the other day I had the following surprise – we use Java binary serialization (ObjectOutputStream) for some internal buffering of large collections, and the objects are then indexed. In a completely separate part of the application, objects of the same class get indexed with additional properties that are irrelevant for the binary serialization and therefore marked with the Java transient modifier. It turns out, GSON respects the “transient” modifier and these fields are never indexed.

In conclusion, this post has two points. The first is – expect any behavior from serialization frameworks and have tests to verify different serialization scenarios. And the second is for framework designers – don’t reuse transient modifiers/annotations from the language itself or from other frameworks, it’s counterintuitive.

The post Every Serialization Framework Should Have Its Own Transient Annotation appeared first on Bozho's tech blog.

10 бюрократични пречки, за чието премахване ще работя

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

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

  • Удостоверенията – голяма част от обикалянето по гишета е събирането на удостоверения и бележки за данни, които администрацията има за вас. Тя е длъжна да ги събира по електронен път, служебно, но се оправдава, че не го прави, защото „нашият закон е специален“ и „нямаме техническа възможност“. Първото може да бъде коригирано в парламента, а второто – чрез внедряване на вече съществуващи инструменти в администрацията.
  • Печатите – Демократична България вече внесе законопроект за отпадане на печатите в предното Народно събрание, ще го направи и в следващото. Никой няма да има право да ви върне, защото на нещо някъде липсва печат.
  • „Тук не е информация“ – отношението към гражданите, че те трябва сами да си знаят всички бюрократични процедури, трябва да спре. Закон забраняващ „тук не е информация“ е комично да има, но може да има ясни правила за „дизайн на услугите“ както в дигиталната, така и във физическата среда, които да правят омразния надпис „Тук не е информация“ излишен.
  • „Това не може по електронен път, елате на място“ – по закон всичко трябва да може да се прави по електронен път. Оправданието да не се случва е същото като по-горе, така че с редакция на редица закони да отпаднат тези оправдания. А технологични средства за приемане на електронни заявление има, вкл. електронна поща в краен случай.
  • Разпечатването на платежни – дори електронизирани към момента услуги изисква прикачване на платежно (макар нормативната уредба, създавана с мое участие преди години, да го забранява). Чрез анализ на действащите услуги и контрол на изпълнителната власт това нормативно изискване трябва да стане факт. Защото администрацията знае, че сте ѝ платили – тя е получила парите си по сметката, с вашето ЕГН или ЕИК на „Наредител“, и дори номер на документ (когато това е нужно).
  • Наредба Н-18 – и такъв законопроект внесохме, и ще внесем пак – частите от Наредба Н-18, които регулират софтуера за продажби и де факто въвеждат лицензионен режим, трябва да отпаднат – това може да стане с изтриване на законовото основание за тях от ЗДДС.
  • Сканираните PDF-и – всички документи се създават в електронен вид. След това, заради аналоговото мислене в администрацията, се разпечатват, подписват, подпечатват и сканират. Това ги прави (почти) невъзможни за търсене и индексиране. Стъпката на разпечатване е напълно излишна.
  • Трудовата книжка – предното правителство предложи смяна на дизайна на трудовата книжка. Крайно време е този документ да отпадне. Почти цялата нужна информация я има в НАП, а малкото детайли, които липсват там, могат да се добавят или там, или в допълнителен нарочен регистър в министерството на труда
  • Медицинския картон – единният (електронен) здравен запис, до който има всеки лекар при нужда, трябва да замени парцалите, които разнасяме по лекари (или които сме загубили много отдавна). Тази информация реално може да спасява животи, защото пред очите на лекаря ще има цялата информация за пациента, а системата ще може да открива дори лекарски грешки на база не пропуснати от него заболявания, напр.
  • Java за подписване с електронен подпис – Java аплетите все още съществуват, но дори без тях, все още се изисква Java за подписване на много места. Управлението на нейните версии, използването на „правилен браузър“ на „правилна операционна система“ прави много услуги твърде неудобни за използване. Решението е в изграждането на един национален компонент за подписване, който работи на всички операционни системи, с всички браузъри и смарткарти. Не е тривиална задача, но е задължителна. А от парламента може да бъде иницииран разговор с доставчиците на електронни подписи и администрацията за такъв компонент.

Някои от тези бюрократични анахронизми ще отпаднат със законодателни изменения, други – чрез контрол на изпълнителната власт и спазването на действащите закони от нея, а трети – с организиране на работни срещи. Разбира се, няма да работя сам, а в екипа на Демократична България. Тези 10 неща далеч не са всичко, което смятам да правя, но са обединени от общата си характеристика „неща, които най-накрая трябва да оставим в миналото“.

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

Защо „електронно управление“ и как ще работя за него в Народното събрание

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

На изборите на 11 юли съм на избираемото трето място в листата на Демократична България в 24 МИР (София) и ми се ще да направя ясна заявка за какво смятам, че ще съм полезен в парламента. На предните избори мотивирах участието си в листата (макар и по-назад), но сега трябва да направя следващата стъпка – да кажа защо смятам, че ще бъда полезен в парламента.

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

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

Електронното управление е политическо средство, а не цел. То е средство за по-високо качество на живот и за спокойствие за бъдещето.

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

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

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

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

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

Мога да продължавам дълго, но обобщението е това – чрез електронно управление ще живеем по-добре.

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

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

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

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

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

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

A Developer Running For Parliament

Post Syndicated from Bozho original https://techblog.bozho.net/a-developer-running-for-parliament/

That won’t be a typical publication you’d see on a developer’s blog. But yes, I’m running for parliament (in my country, Bulgaria, an EU member). And judging by the current polls for the party I’m with, I’ll make it.

But why? Well, I’ll refer to four previous posts in this blog to illustrate my decision.

First, I used to be a government advisor 4 years ago. So the “ship of public service” has sailed. What I didn’t realize back then was that in order to drive sustainable change in the digital realm of the public sector, you need to have a political debate about the importance and goals of those changes, not merely “ghost-writing” them.

A great strategy and a great law and even a great IT system is useless without the mental uptake by a sufficient amount of people. So, that’s the reason one has to be on the forefront of political debate in order to make sure digital transformation is done right. And this forefront is parliament. I’m happy to have supported my party as an expert for the past four years and that expertise is valued. That’s the biggest argument here – you need people like me, with deep technical knowledge and experience in many IT projects, to get things done right on every level. That’s certainly not a one-man task, though.

Second, it’s a challenge. I once wrong “What is challenging for developers” and the last point is “open ended problems”. Digitally transforming an entire country is certainly a challenge in the last category – “open ended problems”. There is no recipe, no manual for that.

Third, lawmaking is quite like programming (except it doesn’t regulate computer behavior, it regulates public life, which is far more complex and important). I already have a decent lawmaking experience and writing better, more precise and more “digital-friendly” laws is something that I like doing and something that I see as important.

Fourth, ethics has been important for me as a developer and it’s much more important for a politician.

For this blog it means I will be writing a bit more high-level stuff than day-to-day tips and advice. I hope I’ll still be able to (and sometimes have to) write some code in order to solve problems, but that won’t be enough material for blogposts. But I’ll surely share thoughts on cybersecurity, quality of public sector projects and system integration.

Software engineering and politics require very different skills. I think I am a good engineer (and I hope to remain so), and I have been a manager and a founder in the last couple of years as well. I’ve slowly, over time, developed my communication skills. National politics, even in a small country, is a tough feat, though. But as engineers we are constantly expanding our knowledge and skills, so I’ll try to transfer that mindset into a new realm.

The post A Developer Running For Parliament appeared first on Bozho's tech blog.

The Syslog Hell

Post Syndicated from Bozho original https://techblog.bozho.net/the-syslog-hell/

Syslog. You’ve probably heard about that, especially if you are into monitoring or security. Syslog is perceived to be the common, unified way that systems can send logs to other systems. Linux supports syslog, many network and security appliances support syslog as a way to share their logs. On the other side, a syslog server is receiving all syslog messages. It sounds great in theory – having a simple, common way to represent logs messages and send them across systems.

Reality can’t be further from that. Syslog is not one thing – there are multiple “standards”, and each of those is implemented incorrectly more often than not. Many vendors have their own way of representing data, and it’s all a big mess.

First, the RFCs. There are two RFCs – RFC3164 (“old” or “BSD” syslog) and RFC5424 (the new variant that obsoletes 3164). RFC3164 is not a standard, while RFC5424 is (mostly).

Those RFCs concern the contents of a syslog message. Then there’s RFC6587 which is about transmitting a syslog message over TCP. It’s also not a standard, but rather “an observation”. Syslog is usually transmitted over UDP, so fitting it into TCP requires some extra considerations. Now add TLS on top of that as well.

Then there are content formats. RFC5424 defines a key-value structure, but RFC 3164 does not – everything after the syslog header is just a non-structured message string. So many custom formats exist. For example firewall vendors tend to define their own message formats. At least they are often documented (e.g. check WatchGuard and SonicWall), but parsing them requires a lot of custom knowledge about that vendor’s choices. Sometimes the documentation doesn’t fully reflect the reality, though.

Instead of vendor-specific formats, there are also de-facto standards like CEF and the less popular LEEF. They define a structure of the message and are actually syslog-independent (you can write CEF/LEEF to a file). But when syslog is used for transmitting CEF/LEEF, the message should respect RFC3164.

And now comes the “fun” part – incorrect implementations. Many vendors don’t really respect those documents. They come up with their own variations of even the simplest things like a syslog header. Date formats are all over the place, hosts are sometimes missing, priority is sometimes missing, non-host identifiers are used in place of hosts, colons are placed frivolously.

Parsing all of that mess is extremely “hacky”, with tons of regexes trying to account for all vendor quirks. I’m working on a SIEM, and our collector is open source – you can check our syslog package. Some vendor-specific parsers are yet missing, but we are adding new ones constantly. The date formats in the CEF parser tell a good story.

If it were just two RFCs with one de-facto message format standard for one of them and a few option for TCP/UDP transmission, that would be fine. But what makes things hell is the fact that too many vendors decided not to care about what is in the RFCs, they decided that “hey, putting a year there is just fine” even though the RFC says “no”, that they don’t really need to set a host in the header, and that they didn’t really need to implement anything new after their initial legacy stuff was created.

Too many vendors (of various security and non-security software) came up with their own way of essentially representing key-value pairs, too many vendors thought their date format is the right one, too many vendors didn’t take the time to upgrade their logging facility in the past 12 years.

Unfortunately that’s representative of our industry (yes, xkcd). Someone somewhere stitches something together and then decades later we have an incomprehensible patchwork of stringly-typed, randomly formatted stuff flying around whatever socket it finds suitable. And it’s never the right time and the right priority to clean things up, to get up to date, to align with others in the field. We, as an industry (both security and IT in general) are creating a mess out of everything. Yes, the world is complex, and technology is complex as well. Our job is to make it all palpable, abstracted away, simplified and standardized. And we are doing the opposite.

The post The Syslog Hell appeared first on Bozho's tech blog.

Какво ще се промени с нови избори?

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

Аргументът „защо пак нови избори, нищо няма да се промени“ се среща често. Срещаше се и 2013г, когато протестирахме срещу кабинета на БСП и ДПС. И в двата случая, това е аргумент на тези, които се притесняват от избори. И е неверен по няколко причини.

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

Какви ще бъдат резултатите – не мога да предскажа. Бих допуснал спад при ГЕРБ, покачване при Демократична България и Има такъв народ. Разбира се, това зависи от работата в кампанията – няма нищо дадено и гарантирано. Обединение на патриотичните останки, което обаче далеч не им гарантира прескачане на бариерата. Дали ще може да се сформира управление и какво ще бъде то е твърде рано да се каже, но в тази кампания партиите ще трябва да покажат готовността си да управляват и яснота на управленската си визия. И от това ще зависи колко точно ръст ще имат и колко точно ще отслабне ГЕРБ.

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

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