Među informatičarima (onima koji zarađuju izvan proračuna, naravno) već dulje vrijeme kruži konstatacija koja se uzima kao očigledna da su više štete državnom IT-u napravili FINA i APIS nego rat.

Imao sam tu sreću da sam sve do sada izbjegavao baviti se bilo čim što ima veze s fiskalizacijom, cijelo vrijeme imajući na umu da me to vjerojatno kad-tad čeka, kao neki figurativni crni oblak na horizontu ili svjetlo u tunelu koje znači nadolazeći vlak. Do sada sam otkrio sljedeće "zanimljivosti", za koje ću pokušati objasniti zašto točno su loše, što je pošlo krivo i kako bi izgledala bolja alternativa.

Ovaj post ću updateati kako otkrivam nove stvari o kojima želim njurgati.

#1: Za preuzimanje Demo certifikata je potreban Internet Explorer 9

Prije oko tjedan dana sam zatražio demo certifikat. Prije 2 dana mi je stigla obavijest da mi je on izdan i što trebam napraviti da ga preuzmem. U mailu velikim, boldanim slovima piše "Obvezno koristite Internet Explorer", sa nekih 10-tak uskličnika. Ne znam da li svim FINA-inim nesretnim korisnicima stiže isti broj uskličnika ili sam zaslužio posebnu pažnju (budimo realni, puno ljudi zna da ne koristim često Windowse), ali nije bitno. Znao sam da trebam očekivati obvezu korištenja IE-a pa sam pokrenuo Windowse i IE i postupao prema uputama (druga rečenica kaže "Molim da se držite procedure iz Attachmenta" sa samo 3 uskličnika).

Uistinu, držao sam se uputa, upisao referentni broj i autorizacijski kod i - nije radilo. Poruka je bila "invalid entry". Brže bolje poslao reply na dobiveni mail i dobio telefonski poziv u kojem me je (doduše ljubazni) sugovornik pitao da slučajno možda koristim IE koji je noviji od devetke. Jasno, koristio sam novi IE zato što mi je po defaultu i vjerojatno bez pitanja Windows Update automatski instalirao novu verziju. Workaround za ovo je bio: probajte uključiti "Compatibility mode" ili pravi IE9 uz nervoznu izjavu "pa znate, FINA ipak nije tako napredna, treba vam stariji Explorer".

Bravo. Znači netko je isprogramirao stvari tako da s ActiveX-om ili nekim platformno-ovisnim JavaScriptom stvari rade samo u specifičnom okruženju stare verzije Internet Explorera.

Ok, sljedeći pokušaj s IE11 (spomenuta "zadnja" verzija instalirana po defaultu) u compatibilty modeu - sad se odjednom prikazuju dodatna polja u formi! Nažalost, ni ovaj pokušaj nije radio -nakon popunjavanja dodatnih polja prema uputama, sljedeća greška je "security protocol failure", a potpuno isto se web demo CA-a ponaša i s "pravim" IE9 kojeg sam iskopao na nekom desetom računalu. Ovdje su stvari za sada stale - iz FINA-e mi nisu odgovorili na 2 maila koje sam poslao s ovim problemom (i namjeravam slati 1 mail dnevno dok se to ne riješi).

Realno, vrlo je vjerojatno da nitko osobno iz FINA-e nije sudjelovao u programiranju ovog iznimno lošeg komada koda nego su kupili vanjsko rješenje - što je ok (jer vlada negativna selekcija: informatičari i programeri koji znaju raditi nađu daleko bolje plaćene poslove izvan državnog sektora) - no problem je što FINA i pripadajući joj konzultanti nisu znali napisati natječaj za ovu platformu koji bi uključio rečenicu kao što je

"Proizvod mora biti izgrađen koristeći važeće standarde HTML-a te raditi na barem 3 najčešće korištena preglednika Weba rangirana prema istraživanju StatCounter Global Stats".

Ta jedna jedina rečenica bi rješila 90% problema.

Update: Jutros mi je stigao e-mail s traženim demo certifikatom, uz pristojnu napomenu da napišem na blogu da je ipak problem rješen, što ovom prilikom i radim. No osjećam se zapravo loše što je za žurno rješavanje ovako trivijalnog problema trebala eskalacija po novinama (koju nisam namjeravano ni tražio ali se dogodila jer Index traži ovakav materijal - što je ok). Demo certifikati nisu tehnički ni sigurnosno zahtjevni i nema praktičnog razloga zašto se ne bi mogli izdavati i anonimno, bilo kome tko ga zatraži, bez autorizacije (jer su demo, ne koriste se u produkciji). Ako netko želi napraviti svoj CA (hint hint za FINA-u: i vi to možete raditi za demo CA), sve što treba je instalirati tinyca ili nešto slično i štancati certifikate u neograničenim količinama klikanjem po prozoru. Da li trebam napraviti tutorial na hrvatskom kako napraviti svoj CA na Raspberry Pi-u? Followup post je ovdje.

#2: Pri prvom preuzimanju "soft" certifikata za fiskalizaciju se postavlja password koji se ne može promijeniti

Veći problem od navedenog je što se, barem u teoriji, nikada ne smije dopustiti da se privatni ključevi za elektroničke potpise nalaze igdje drugdje osim u posjedu njihovog izravnog korisnika, zato što svatko u posjedu privatnog ključa može u potpunosti "simulirati" odnosno krivotvoriti elektroničke potpise od spomenute osobe. Ako država ima u posjedu privatni ključ od certifikata na vašoj osobnoj iskaznici (na primjer), netko u državi (poslovično korumpirana osoba) se može s tim ključem predstavljati kao vi a da ne postoji način da se to dokaže. Među ostalim, ovo otvara vrata izbornim prevarama.

Međutim, stanje user-friendlynessa elektroničkih potpisa i povezanih postupaka i infrastrukture je toliko loše da je doista jednostavnije i efikasnije raditi prečace nego educirati sve korisnike kriptičnim procedurama kao što je stvaranje ključa. To je žalosno, ali istinito (i vjerojatno čeka neki cool start-up da riješi problem, hint, hint).

U ovom slučaju znači da FINA stvara "privatne" ključeve i certifikate i onda ih distribuira korisnicima. U teoriji, FINA ne bi smjela zadržavati ove ključeve kod sebe da se spriječi opisani scenarij lažnog predstavljanja, ali ponovno u praksi se to radi.

"Soft" certifikat za fiskalizaciju je onaj koji se koristi u softveru za fiskalizaciju koji ne koristi karticu odnosno USB stick za autorizaciju odnosno potpisivanje računa. Znači da ne bi stalno upisivali PIN za otključavanje certifikata na sticku ili kartici, koristi se zaseban certifikat koji (zajedno sa svojim "privatnim" ključem) postoji kao datoteka, file na disku.

FINA srećom omogućava preuzimanje takvog certifikata kao normalnu stvar, ali prvi put kad se preuzima certifikat se od korisnika zahtjeva da upiše password kojim se on zaštićuje. Preuzeti certifikat je onda enkriptiran s ovim passwordom, a sva buduća preuzimanja certifikata preuzimaju baš ovaj, tako zaštićeni certifikat.

Problem je u tome, kao što sam naišao u praksi a sudeći po forumima nisam jedini, ako ovaj password postane nedostupan - npr. zaboravi se, ili zaposlenik koji ga je znao umre (dogodi se...).

Debilna situacija sada je da se FINA pravi kao da se password certifikata ne može promijeniti (kao, ne zna se original podataka prije nego što su enkriptirani pa se ne može dekriptirati i ponovno enkriptirati novim passwordom), ali istovremeno postoji savršeno lako dostupna opcija da FINA "reaktivira" certifikat - što bi trebalo ponovno omogućiti da se na njega postavi password i omogući preuzimanje - uz plaćanje.

Znači sasvim je jasno da FINA ima duplikate privatnih ključeva kod sebe, ali da se trude praviti kao da ih nemaju.

Iskreno, to ne mora biti nužno loše jer aludira na to da postoje interne procedure koje ne dozvoljavaju baš svakom pristup tim kopijama, ali u Hvatskoj, teško da će to ikog spriječiti da radi što god namjeri, pa bi možda bilo efikasnije da se prekine to pretvaranje.

Inače, kod ovog problema još čekam da strana koja je izgubila pristup svom passwordu s FINA-om dogovori reaktivaciju, vidjeti ću kako će to ići.

Intermezzo: Demantij FINA-e

(Copy-paste u cijelosti)

Poštovani,

molimo Vas da, sukladno Zakonu o medijima, na istom mjestu, s istom opremom i u cijelosti, objavite demantij članka pod nazivom „Potpuna nesposobnost: Fina i APIS napravili su više štete državnom IT-u nego rat" objavljenog na portalu Indeks.hr, 17. travnja 2014. godine. (članak je prenesen s bloga blogu „Vorasov blog“ na kojem je objavljen 16. travnja 2014. godine, pod nazivom „Nesposobnost FINA-e“).

Financijska agencija je, od početka izdavanja certifikata za fiskalizaciju do danas, izdala preko 5.000 DEMO certifikata te više od 80.000 produkcijskih certifikata za fiskalizaciju. Svim korisnicima smo nastojali olak šati tehničku implementaciju certifikata te smo, osim besplatnog broja pozivnog centra, osigurali podršku i izravan kontakt putem e-mail adrese: certifikati-fikskalizacija@fina.hr. Na navedenu e-mail adresu je do sada pristiglo nekoliko desetaka tisuća mailova te pouzdano tvrdimo da je na svaki upit odgovoreno istog radnog dana ili najkasnije idućeg. Sa svakim korisnikom certifikata se radilo dok problem nije otklonjen. Niti jedan upit nije ostao zanemaren te se izuzetno trudimo nastaviti takav kontinuitet korisničke podrške.

Nastavno uz izdavanje DEMO certifikata, napominjemo da je Fina svim zainteresiranim korisnicima za projekt fiskalizacije omogućila besplatno dobivanje DEMO certifikata, a preuzimanje istih se još obavlja preko web connectora. Isti ima određena ograničenja, odnosno ako je kod korisnika verzija Internet Explorera novija od 9, potrebno je uključiti compatibility view kako bi se prikazala polja za odabir ispravnog CSP-a i duljine ključa koji se preuzima.

Navedeno rješenje se nije unapređivalo, s obzirom na to da se i DEMO sustav, baš kao što je to i napravljeno za produkcijski sustav, migrira na novi sustav preuzimanja certifikata (CMS) te će time ovo ograničenje biti eliminirano i za DEMO certifikate.

Vezano uz navod „izuzetnog komada lošeg koda“, ističemo da je web connector standardni dio Entrust sustava za izdavanje certifikata i nije proizvod "potplaćenih" ili nekih drugih programera.

Nije točan navod da Fina ima duplikate privatnih ključeva kod sebe. Naime, s obzirom na to da se privatni ključ kreira na strani CMS-a (odnosno Fine), korisnik dobiva potpunu kontrolu stavljanjem zaštite koja je poznata samo njemu. Iz tog razloga se ne može na strani Fine rekreirati lozinka (staviti na nulu) jer Fini ista nije poznata i ne postoji u sustavu Fine. Ponovno preuzimanje istih certifikata omogućeno je da se korisnicima ne radi dodatni trošak izdavanjem novih certifikata. Ovakvo preuzimanje moguće je samo ukoliko klijent upi še autorizacijske kodove i zna lozinku koja je inicijalno postavljena na sustav.

Ukoliko se lozinka izgubi ili zaboravi, nije moguće ponovno preuzimanje istih certifikata te se kreiraju novi, ali na način da se iskoriste isti autorizacijski kodovi. Time se kreira novi par ključeva i u sustav je potrebno upisati novu lozinku kojom se štiti privatni ključ. Znači, u slučaju reaktivacije certifikata ne izdaje se onaj "stari" već se samo zadržava isti DName certifikata.

Lozinka certifikata može se promijeniti nakon preuzimanja i importiranja u certifikacijski kontejner. Pokretanjem radnje eksporta takvog certifikata može se odabrati nova lozinka, koja opet nije poznata Fini kao izdavatelju certifikata.

S poštovanjem

Ured za korporativne komunikacije

(kraj copy-pastea)

Ako je istina, barem taj dio o nečuvanju ključeva je dobar.

Spominjanje Entrusta je smiješno: to je prebacivanje krivnje na drugog i ekvivalent toga da netko kaže: "evo da, istina je da je za ovaj posao potreban kamion, ali evo ja sam baš nabavio ovog fiću po istoj cijeni, nisam mu mijenjao motor ni krpao karoseriju i nadam se da će raditi dobro." Vjerojatno nitko nije prisilio FINA-u da koristi Entrust.

Nadam se da je svim jasno da je spominjanje brojeva kao "5000 DEMO certifikata" i "više od 80.000 produkcijskih certifikata" smiješni jer su tehnički zahtjevi izdavanja certifikata mizerni (to je random link koji sam naišao u 10 sekundi na Googleu, siguran sam da ima i pametnijih). Jedino što je zahtjevno je konkretna distribucija certifikata i USB uređaja korisnicima, što se obavlja na šalterima, poštom, e-mailom i SMS-om (što je pozitivno). Poanta je -potrebna je detaljna modernizacija i pobolšanje konkretnih IT funkcija i usluga, inače će to jednostavno ostati loša organizacija.

Evo lakmus testa: ako ima ijedan IT-evac koji je uspješno, na vrijeme i bez problema interaktirao s FINA-om, neka slobodno komentira ovdje, častim ga pivom.

Previous Post Next Post