Author Archives: admin

Screen din pdf

Cum lucrează CA (Consiliul Audiovizualului).

Toate televiziunile au fost rugate (inclusiv Privesc.eu TV) să prezinte înregistrările pe DVD sau stick 🤦🏻) din data de 21-27 Martie. Pentru necunoscători - înregistrările pentru 7 zile de la un TV au un volum de câteva sute de GB, unii probabil întrec 2TB.

Sunt 59 de televiziuni active, fiecare în medie trebuie să transmită câte 1 TB de date, adică 59 de TB Consiliul audiovizual trebuie să stocheze... Cineva trebuie să analizeze 59 de săptămâni de conținut. Am o presimțire că ei nu au așa capacități, nici hardware, nici umane ca să proceseze un așa volum de informație. Doar dacă scopul a fost cu totul altul - să penalizeze TV-urile financiar.

În fine, fiecare iese din situație care cum poate, unii aduc pe HDD și CA copie și apoi îl întorc, alții deschid accesul prin FTP. Eu, văzând tâmpenia, zic să inovez un pic, le-am extras istoria din baza de date pe secunde ce live/înregistrare a fost difuzată inclusiv și screenshot și link către video. Am exportat frumușel în PDF și le-am atașat trimis email. Funcționarul care vrea să verifice pur și simplu deschide acel fișier, citește titlu evenimentului dacă e cazul dă click pe video și privește înregistrarea. Pentru claritate, privesc.eu în acea perioadă a difuzat peste 300 de evenimente. Dacă le dădeam înregistrarea fără indicii, funcționarul se tâmpea să dea scroll prin atâtea ore și la sigur nici nu mai verifica ceva. Mai mult ca atât în lege nu se specifică metoda, protocoalele de transmitere a înregistrărilor.

Până aici parcă totul e perfect, am încercat puțin să ajut oamenii tehnologic.

Nu a fost să fie!

Peste câteva săptămâni primesc o scrisoare precum că nu ne-am conformat. Hmm, sun la telefonul de pe scrisoare, care puțin era confuză de ce numărul ei de telefonul este inclus în scrisoare, într-un final mă redirecționat la un ITst. Am mai făcut încă odată FWD, că nu o găseau pe prima. 🤦🏻

A deschis PDF, zic uite așa și așa vezi prin istorie și dai click și privești .m3u8 fișier direct de la noi de pe site. Noi păstram pentru totdeauna nu doar 30 de zile…

Bun, dă el click și hop îmi zice că se deschide winamp. Încep să lămuresc omul ce înseamnă extensiuni și cum fiecare Soft se atașează de o extensiune sau alta. Zic, trebuie să îți legi .m3u8 de VLC și be happy. Data viitoare voi mai adăuga și o metodă de descărcare a fiecărui video dacă tare dorești. Dar metoda propusă prin .m3u8 e cea mai bună și rapidă.

Parcă a înțeles, am închis telefonul împăcat.

Nu, nu s-a terminat istoria.

Acum câteva zile a venit agenda la CA pentru penalizarea televiziunilor care nu s-au conformat și au refuzat să de înregistrările. Surpriză, privesc.eu e pe lista celor penalizați și amendandați cu 5000 lei.

Au votat rapid să-i penalizeze pe toți împreună fără a mai face diferența că poate nu toți au refuzat.

Chiar dacă capul unor instituții se schimbă, integral cum e cazul CA, trupul rămâne neschimbat.

Problema capului (conducerii) este că ei se conduc de deciziile luate mai jos, și o fac orbește. Iar când cei de jos sunt incompetenții - e grav.

Această lege a fost introdusă în legislație pentru că CA nu are capacități tehnice de a monitoriza TV-urile (ca întotdeauna statul vrea să facă ceva cu mâine privaților) și a pus aceasta pe seama TV-urile să păstreze 30 de zile conținutul. În cazul dat CA a abuzat de această lege pentru că a fost clar că intenția a fost nu de a analiza conținutul ci de a verifica dacă TV-urile respectă această lege și de ai penaliza - și asta e și mai grav.

Sistemele informatice moderne de distribuție a informației se împart în după mai multe criterii. Însă unul foarte important este efectul de rețea. 

Efectul de rețea cel mai mic îl au sursele simple de distribuție, ca de exemplu portalurile informaționale, tv-urile. Unde de cu zor o echipă de oameni lucrează la producerea conținutului și luptă pentru fiecare om să revină și să recitească. V = N

Următorul nivel sunt rețelele sociale, unde fiecare om adăugat și cu prietenii lui aduc un aport mare la rețea. Produc conținut și interacțiuni. Fac rețeaua vie. Are un efect de rețea mult mai mare. V = N^2.

Dar efectul de rețea cel mai mare îl au grupurile. Cu toții suntem pe grupurile pe whatsapp, viber, telegram. Păi aceste grupuri au V = 2^N. Pentru că mulți din noi participăm în diferite grupuri orice informație relevantă foarte rapid trece de la un group la altul. Nu degeaba Facebook a plătit 19 milliarde $ pentru WhatsApp… da, da.. el a dat pentru formula V=2^N mult mai mare decât a rețelelor sociale. Anume din această cauză vedeți grupuri pe whatsapp/telegram care adună milioane de followeri în câteva zile, pentru că circulația linkului în groupuri și chaturi e foarte mare.

La portaluri există echipe care încearcă să filtreze informația pe care o răspândesc. În unele țări cum ar fi Rusia prin Rospotrebnazor impun restricții. În Moldova Consiliul Audiovizualului la canalele TV le arată din deget. Iar SIS-ul la site-uri. Mai pe scurt joacă de copii.

La rețele sociale stă un AI în spate care se chinuie de cu zor să prioritizeze ce să-ți arate prin news feed. Acolo nimeni nu se prea bagă, dar se fac încercări mari pentru a lua controlul. Vedeți cazul Facebook în congresul american.

În chat-groupuri e wild-west, nimeni nu poate nimic face, totul e ascuns și foarte viral și criptat.

Pe lângă ceea că e wild-west, aplicații de chat-uri nu stau după un domain anumit pentru a putea fi blocate ușor ci în applicațiile utilizatorilor. La primul indiciu că securitatea dorește să blocheze serverele după IP ele vin cu o contrareacție. Telegramul și-a făcut un mecanism de notificare prin push notification cu servere noi. Anume din această cauză Rusia nu poate bloca telegramul. Adică au încercat sau au blocat mai multe alte servere decât serverele telegramului.

De ce povestesc eu toate acestea? Recent, 5 aprilie în Parlamentul Moldovei a fost înregistrată o lege nouă care permite SIS-ului să blocheze în stânga și în dreapta ce vor mușchii lor… Doar că ei pot face asta doar la portaluri, bloguri, site-uri.. unde viralitatea e mică și cinstit, deja nimeni nu le mai citește.

Cu rețelele sociale ei nu pot face mare brânză, au ei niște mecanisme de comunity bloc și de care mulți abuzează, dar după cum vedem exemplu Rusiei, Facebook-ul i-a trimis la păscut. Statul a blocat întreaga rețea. Populația a pierdul toată comunicarea între ei. Nu cred că se vor comporta altfel dacă cineva din Moldova le va cere cu tărie să blocheze anumit conținut.

Dar 80-90% din informație pe care noi o consumăm vine și în viitor va veni prin grupuri, chat-uri unde nimeni nimic nu poate face. Yep, serverele nu pot vedea informația criptată.

Blocarea site-urilor va duce la falsa impresie că totul e ok informațional, ascundem fake-urile sub preș și stăm liniștiți, pe ici colea mai ucidem un business de media. Iar guvernul devine unica sursă de adevăr, vezi cazul Rusiei.

Dacă vreți să cenzurați ceva, educați o generație nouă unde măcar cineva din membrii grupurilor întreg la caă să le spună la restul ho, stați , asta-i aberație…

Altfel în câțiva ani vom avea aceași situație ca și în URSS (aparent) nu era sex.

Google a publicat  un articol științific unde demonstra că în același sistem informațional nu poți avea integral (concomitent): anonimitatea votului, confirmarea identității și auditarea votării. Din cele trei poți alege doar două. Dacă ai anonimitatea votului și secretul votului nu poți face audit, dacă ai audit și confirmarea identității nu poți avea anonimitatea votului și dacă ai anonimitatea votului și audit — nu poți avea confirmarea identității. Cuvântul cheie în acel articol este ACELAȘI. Deci, acești trei piloni pot fi despărțiți în 2 sisteme informatice care nu sunt legate între ele, iar astfel putem asigura secretul votului.

În Estonia s-a mers pe acest principiu. Un sistem informatic confirmă identitatea, colectează voturile criptate și apoi într-un alt sistem informatic (voturile criptate sunt transferate pe un DVD) se decriptează. Pentru decriptare ei folosesc un server HSM, destul de scump, care generează cheile de criptare și decriptare.

La VoteMeApp am hotărât să mergem un pic mai departe. Să folosim o soluție mult mai ieftină, care poate fi utilizată ușor de către comunități/organizații mici. Să folosim un iPad, care este resetat după fiecare generare sau restabilire de chei.

Toată magia cu secretul votului se reduce la împărțirea procesului de votare în câteva sisteme informatice, unde niciunul dintre aceste sisteme nu posedă informația completă.

  1. Mpass asigură autentificare. Acest sistem nu știe nimic despre votare.
  2. VoteMeApp asigură autorizarea și restricționarea în baza de INDP la votare și colectează voturile criptate. Acest sistem are informația cine votează însă nu poate decripta voturile.
  3. Sistemul SecretVoting (pe care îl voi explica mai jos) decriptează și calculează rezultatele. Acest sistem nu primește date despre votanți.

Secretul votului în cazul dat se asigură prin buna intenție și onestitatea celor care colectează datele împreună cu cei care sunt organizatori/observatori/candidați și care participă la generarea și împărțirea cheilor private. Teoretic, toți acești oameni ar putea fi corupți, însă practic e imposibil să corupi vreo 10-20 de oameni doar pentru a vedea cine și ce a votat. În ceea ce privește auditarea rezultatelor și demonstrarea că voturile au fost calculate corect, acestea pot fi făcute fără a dezvălui identitatea persoanelor.

Dacă cineva are intenția de a divulga identitățile votanților - o face din rea intenție.

Mai jos, pentru curioși, urmează o descriere a sistemului de generare a cheilor, împărțirea bucăților de cheie, restabilirea bucăților de cheie, decriptarea voturilor și semnarea digitală a rezultatului.

La baza votului secret stă un algoritm de criptare destul de popular, care este folosit peste tot în Internet, atunci când deschideți un site, comunicați prin messenger sau semnați un document cu MSign. Este algoritmul RSA de criptare/decriptare cu chei publice/private. Adică acest algoritm generează două chei (parole) legate între ele matematic care au niște proprietăți speciale. Dacă criptezi cu cheia 1, poți decripta doar cu cheia 2, și invers, dacă criptezi cu cheia 2 poți decripta doar cu cheia 1. La generarea acestora, cheia 1 se numește cheie publică, pentru că ea se împarte la toți care vor să cripteze informația și să ți-o transmită ție. Iar cheia 2 se consideră cheie privată, care trebuie păstrată după 7 lăcăți. Doar cu acea cheie privată puteți decripta informația.

Diagrama un sistem informațional pentru votare secretă.

Cât despre cele 7 lăcăți. Se ia un server și se pune într-un safeu și se închide cu o lăcată, cheia se dă la unul din organizatori, apoi acel safeu se pune în alt safeu și să închide cu o cheie care se dă la alt organizator și tot așa de 7 ori :D. Glumesc… sigur că nimeni nu va investi astfel de resurse fizice când este soluție matematică mult mai bună.

Algoritmul Shamir, împarte un număr/secret/cheie în mai multe bucăți. După împărțirea în bucăți, poți restabili înapoi cheia originală doar dacă se adună iarăși toți și arată bucățile lor. Algoritmul acesta are o proprietate interesantă. Cheia poate fi împărțită de exemplu la 20 de oameni însă poate fi restabilită cu 19 minim. Astfel se evită șantajul din partea unui singur om care nu dorește să își deschidă partea lui de cheie.

Deci, cum se face această procedură într-o formă transparentă și de încredere.

  1. Se adună un comitet de organizare, de dorit inițiatorul alegerilor, câțiva observatori și candidații.
  2. Se ia un iPad și se resetează pentru a evita orice suspectare de spionare.
  3. Se deschide de pe GitHub SecretVoting, o pagină html care ajută la crearea și împărțirea cheilor. (GitHub e un serviciu de hostare a codului sursă, un site unde majoritatea programatorilor își țin codurile sursă. Un plus că acest cod de la SecretVoting este public și oricine îl poate inspecta și convinge că totul e corect și transparent în acest proces de împărțire a cheilor).
  4. Se închide accesul la Internet pentru a evita orice scurgere de informație.
  5. Se configurează numărul de participanți la împărțirea cheilor și se setează numărul minim de participanți pentru restabilirea cheilor. Recomandarea noastră e să fie „n-1” minimum din „n” maximum setat (de exemplu 7 din 8). Dar e o alegere care se face adhoc de echipa organizatoare.
  6. Se generează cheia publică și se arată tuturor (în formă de QRCode) și oricine o poate fotografia și ține o copie la el în telefon. E important ca reprezentantul de la VoteMeApp să o fotografieze pentru că ea va merge la toți votanții și ei vor cripta voturile anume cu această cheie.
  7. Se invită, unul câte unul membrii comitetului de organizare. Fiecare fotografiază partea lui de cheie privată fără a vedea altele.
  8. Se reseteaza iPad-ul, pentru a distruge orice informație care potențial ar putea compromite cheia privată.

Cheia publică se transmite serverului de votare, iar oamenii când votează o pot vedea și respectiv toate voturile se criptează anume cu această cheie.

Setarea numărului de participanți la împărțirea cheii private.

Afișarea cheii publice

Ecranul de interacțiune a primului membru pentru a lua în privat o parte din cheia privată.

Afișarea unei parți din cheia privată, doar atât timp cât se ține apăsat butonul roșu.

Ecranul de finalizare și eliminare din memorie a cheilor generate.

După ce se încheie votarea, un reprezentat de la VoteMeApp vine cu voturile criptate la organizatori, care pot folosi același iPad (sau oricare altul).

  1. Se ia un iPad și se resetează.
  2. Se deschide de pe GitHub același SecretVoting.
  3. Pentru a minimiza interacțiunea prin Internet, transferul voturilor criptate se face cu un short link de o singură folosință (a doua oară cererea nu va mai întoarce voturile criptate) spre VoteMeApp.
  4. Se deconecteaza iPad-ul de la Internet.
  5. Se scanează QR-codul cheii publice și se copie în căsuța cheii publice.
  6. Apoi fiecare dintre membrii comitetului de organizare, își prezintă pe rând partea lor de cheie privată, pentru a fi scanată de la iPad. Astfel se va restabili cheia privată completă.
  7. Se apasă butonul Start, se lansează procedura de decriptare, calculare și afișare a rezultatelor.
  8. Rezultatele se semnează digital cu cheia privată completă. Rezultatele semnate digital se transferă la serverul de votare, unde toți participanții la votare pot vedea rezultatele și să le verifice cu semnătura digitală.
  9. Se resetează iPad-ul pentru a elimina orice urmă de cheie privată și voturi.

Ecranul de restabilire a cheii private, publice și importarea voturilor criptate.

Așa arată votarea secretă online dusă până la extrem.      

Acest articol are scop de a face o claritate între companii de IT și startup-uri dar și eliminarea erodării cuvântului startup care acum îl avem în Moldova.

O companie de IT este o companie clasică cu majoritatea angajaților care lucrează la producerea softului. De obicei în Moldova aceste companii sunt SRL-uri și execută comenzi pentru clienții din afară țării. Ele se mai numesc companii de outsource. Banii în aceste companii vin atât cât să ajungă să se plătească salariile angajaților și birourile în care ei activează. “Investitori” sunt proprietarii/coproprietarii acestor SRL-uri și interesul lor e doar controlul asupra companiei și proiectelor care le execută. De obicei proiectele sunt aduse tot de ei (“investitorii”) printr-o companie tot de a lor din afară țării. Profitul de obicei rămâne la acea companie și nu trece la cea moldovenească.

Un startup, este o companie nouă (de obicei din IT) înființată care are capacitate de a se scala exponențial. La început în această companie sunt “angajați” doar fondatorii. Nu au procese, nu au produs, nu au vânzări, nu au un business model. Au doar o idee și capacitatea de a o implementa.

Din cauza NU-urilor de mai sus și probabilității creșterii exponențiale aceste noi companii au o rată de mortalitate foarte mare. De obicei după 3 ani jumătate din ele se închid. Însă cele care rămân pot ajunge Unicorn (evaluarea de un milliard $).

Potențialul creșterii exponențiale ademenește mult investitorii. Ei se împart în două angel investitori (persoane fizice) sau venture capitaliști (fonduri de investiții). Creșterea aceasta exponențială nu poate fi făcută fără banii investitorilor. Deci dacă nu ai investitori (VC) probabil nici nu ai un startup, ci o companie clasică de IT.

Pentru a înțelege de ce în Moldova nu vor fi startup-uri trebui să înțelegem matematica din spatele investitorilor.

Cum am spus mai sus rata de mortalite a startupurilor e foarte mare. Și investitorii folosesc Power Law pentru a estima ROI. Un investitor are în spate un fond de investiții și LP (oameni care au pus bani în acel fond). El zilnic analizează sute de oferte de investiții, din care ei investesc doar în câteva pe an. Pentru simplitate, un fond de investiții de $100 mln există aproximativ 10 ani. În acești 10 ani ei trebuie să investească în X start-uri, iar cele care au succes să iasă la IPO și ei să-și vândă acțiunile în acele companii și să-și întoarcă banii. Presupunem că ei au investit egal câte un 1 mln în 100 de startup-uri timp de 2-3 ani. Statistic din acest nr doar 1 singur va deveni Unicorn și vor întoarece $100 mln. Câteva vor întoarce aceași bani, iar restul 90 și ceva de start-uri vor muri pe drum, adică ei vor pierde toți banii. Deci acest fond de investiții care a pornit $100 mln după 10 ani va întoarce $130-200 mln investitorilor. În Silicon Valley doar câteva fonduri de investiții reușesc ani de-a rândul să performeze, restul sunt în minus. Exemplu de mai sus este doar un exercițiu ca să înțelegeți cum ei gândesc, cifrele pot varia de la fond la fond. 

Pentru investitori, startup-urile sunt ca și cursele de cai. Pe ce cal (fondatori) să facem pariu că va câștiga (va deveni unicorn). Restul poveștilor că investitorii te ajută să crești nu trebuie să le credeți. Dacă vreun investitor începe să se amestece în treburile companiei chiar trebuie să vă pună pe gânduri.

Pentru a pune totul pe roate, investitorii au o mașinărie foarte simplă. Investesc în companii create în Delaware, US… rareori în alte state. Foarte rar în alte țări. O fac în Delaware pentru că legile sunt foarte simple, cunoscute de toți și protejează foarte bine investitorii.

Investitorii investesc doar în C Corp, nu investesc în LLC, sau cum noi le numim SRL-uri. Pentru că LLC nu au posibilitate de a emite shares (metoda prin care compania crește exponențial ca și evaluare) dar și din punctul de vedere al taxării e mai greu pentru un investitor să fie în LLC.

Deci în Moldova, noi nu avem C Corps, legi clare care protejează investitorii și mindsetul oamenilor care sunt gata să dea parte din companie contra investițiilor.

Încetați să mai folosiți acest cuvând dacă nu e cazul. Astfel toată comunitatea riscă să erodeze acest cuvând și toți vom avea de pierdut.

Vă invit să ascultați mai multe despre digitalizare și startup-uri în podcastul Mai Departe cu Artur Gurău.

O alegere cu vot secret are succes atunci când cei care au pierdut alegerile au încredere că voturile au fost contorizate corect.

La noi tradiția este că nimeni nu are încredere în nimic. Se organizează contestări și renumărări. Dacă la votare offline renumărarea e costisitoare și durează mult timp, mai ales când ai milioane de voturi, în online e simplu și aproape instantaneu.

Organizați de către candidații care au pierdut, un grup de oameni nesatisfăcuți de rezultate merg la instituția care a organizat alegerile ca să ceară renumărarea voturile cu pancarde, megafoane, mesaje pe rețele sociale și în media.

Online-ul oferă avantaje majore pentru un nivel mai mare de încredere din partea tuturor participanților la procesul de vot.

Pentru asta este necesar ca grupul care nu este satisfăcut sau care nu are încredere în procesul de vot, să delege un programator. Pentru ca să fie asigurat secretul votului, e necesar un calculator nou nouț, unde se instalează un nou sistem de operare, se face auditul în fața mulțimii și apoi se distruge cu cuvalda. Glumesc 😜

În locul unui calculator nou, este suficientă o mașină virtuală creată în cloud la unul din providerii mari, Microsoft Azure, Amazon AWS, Google Cloud sau Digital Ocean. După auditare doar se șterge mașina din cloud. Mașina virtual nouă este necesară pentru a evita orice speculații din partea ambelor părți.

Pentru auditarea rezultatelor trebuiesc 3 fișiere.

  1. Lista hash-urilor care a apărut în protocol. Respectiv toate acele hash-uri trebuie să coincidă cu cele care au fost distribuite celor care au votat. (Lista se ia din protocol)
  2. Lista candidaților. (Exact cum e în protocol simbol cu simbol)
  3. Lista parolelor, care a fost generată de serverul de votare. (Reprezentantul platformei de votare vine cu ea)

Auditarea digitală este posibilă, pentru că semnăturile digitale distribuite către votanți sunt publice, iar parolele secrete care au fost folosite la generarea acestor coduri nu pot fi modificate de către server.

Aceste 3 fișiere se încarcă pe mașina virtuală, astfel nimeni dintre părți să nu poată manipula sau copia informația. Adică parolele secrete să nu fie copiate cumva de către programatorul care reprezintă grupul celor care contestă rezultatul, iar reprezentantul platformei să nu poată schimba ceva la nivel de sistem și să se afișeze doar rezultate corecte.

În final se încarcă un program (făcut de programatorul mulțimii), care rulează conform algoritmului HMAC/SHA256 și găsește pentru fiecare parola secretă un hash cod, care coincide cu un vot.

Codul programului rulează și numără toate voturile identificate, demonstrează că la vot au participat toate hash-urile și toate parolele secrete. Reprezentantul grupului ce contestă rezultatele, afișează pe ecran în mod vizual rezultatul, pentru ca toți să se convingă. Pentru un efect se poate proiecta pe un ecran mai mare să vadă toți însă show-ul nu va fi de lungă durată, în doar câteva secunde se validează orice scrutin la care au participat mii sau zeci de mii de oameni.

Dacă contoarele coincid cu cele din protocolul tipărit imediat după alegeri, înseamnă că rezultatele nu au fost măsluite și sunt corecte. Done!

După acest proces se distruge mașina virtuală. Codul care face această procedură e foarte simplu, de fapt e mai mic decât acest articol și mi-a luat mai puțin timp să-l scriu.

Mai jos dau un exemplu de cod în limbajul python care face renumărarea.

Codul sursă inclusiv cu un exemplu de votare e făcut public pe contul meu de github.
https://github.com/evisoft/VoteAudit

1 Comment

“Cum VoteMeApp asigură că toate voturile au fost contorizate și nu sunt modificate?” este o întrebare pe care o adresează cei care votează într-un scrutin secret. Un scrutin online secret se caracterizează prin faptul că platforma afișează doar suma voturilor pentru fiecare candidat, nu și opțiunea de vot a fiecărui votant.

La scrutinele cu votare secretă este mai dificil să convingem participanții că voturile lor sunt luate în calcul și nu au fost modificate pentru că implică puțină matematică. Una din soluții este ca platforma de votare să publice o informație parțială despre vot, imediat după ce persoana votează. Astfel sistemul transmite fiecărui votant un cod unic, ca mai apoi să nu existe posibilitatea de a modifica cumva voturile.

O opțiune destul de simplă este amprenta (semnătura) digitală a votului. Când serverul primește un nou vot, el generează un număr unic foarte lung. Acest număr este compus prin intermediul unui algoritm bine cunoscut în industria criptografică și se numește SHA256. Acest algoritm hash stă la baza comunicațiilor prin Internet, a semnăturilor digitale și chiar a valutelor criptografice.

O funcție hash transformă orice cantitate de informație într-un număr. Dacă aplici exact aceeași informație primești același număr. Dacă schimbi măcar un bit sau un caracter în acea informație - obții cu totul alt număr. Este de menționat că având numărul generat, nu este posibil să fie dedusă care a fost informația inițială.

Să precăutăm situația când avem un scrutin cu 4 candidați:

  • Candidat 1
  • Candidat 2
  • Candidat 3
  • Candidat 4

Condiția votului este că dintre cei patru candidați trebuie să fie alese 2 persoane. Să considerăm că opțiunea noastră este: Candidat 2 și Candidat 3.
Serverul generează pentru fiecare vot, o parolă unică de 100 de simboluri, inițializează algoritmul hash HMAC (versiunea SHA256 cu parolă), apoi aplică algoritmul asupra textului Candidat 2,Candidat 3. Rezultatul este afișat în fereastra de confirmare a votării și poate fi trimis și prin SMS.

Acest număr unic pare aleator, însă el are o proprietate criptografică foarte bună. Dacă este cunoscută parola generată de server și utilizat același text ca în opțiunea de votare Candidat 2,Candidat 3, se va obține același cod (rezultat), care a fost afișat în fereastra de confirmare a votării. Pe de altă parte serverul, după ce a trimis acest cod votantului, practic nu mai poate genera (probabil i-ar trebui câteva milioane de ani) o altă combinație de parolă care să dea același cod, dar având alte variante de voturi.

Deci, serverul are parola secretă cu care a fost generat acest număr, iar votantul are amprenta digitală și știe care a fost opțiunea sa de vot.

Pentru a se asigura că votul său a fost înregistrat corect, votantul poate cere de la organizator parola generată de server, apoi poate folosi orice site online care oferă posibilitatea de hash cu algoritmul HMAC, indicând parola obținută și textul cu opțiunea sa de votare Candidat 2,Candidat 3. Rezultatul obținut trebuie să fie identic cu codul care a fost afișat în fereastra de confirmare a votării și primit prin SMS.

Pentru a exersa această situație puteți încerca acest site sau oricare alt site public (găsiți pe Internet multe, căutând după cuvintele cheie HMAC SHA256 verification).

Mai jos este un exemplu de parolă de 100 de simboluri generată de server, textul din opțiunea de votare a votantului și amprenta digitală.

Parolă: Nsj9BqRqzxGqEpuY0NAXv7gQOOFlRONacbH8ucblp9eW8GmUZSusqMNRt0qMfHIKZiycd6Zu8qKFbyYDd1xJ21C8VYQIJlzU3Wj0
Text: Candidat 2,Candidat 3
Amprenta digitală: 4cb027e6977424074a515a34df0ffc9659d6082394c0bc1fd3d60af9e20c17fb

PS: Următorul articol va fi despre posibilitatea de auditare a rezultatelor votării cu ajutorul criptografiei.


Trebuie să permitem votanților să voteze o singură dată sau să poată vota ori de câte ori doresc și doar ultimul vot să se ia în considerație?

Acest articol vine cu o explicație la o dilemă legată de temerile unor participanți la alegerile online organizate de VoteMeApp.

La scrutinele offline se investesc resurse considerabile pentru ca în spațiu limitat și în timp restrâns să adune observatorii, care asigură bună desfășurarea a alegerilor. Una din sarcinile de bază ale observatorilor este să urmărească ca votantul să nu fie influențat de cineva în timpul exprimării votului într-un spațiu limitat.

În mediul online nu mai există restricții de spațiu. Costul serverelor, comparativ cu ora de lucru a unui observator este minuscul - nu mai există nici restricții de timp. Acesta este avantajul foarte mare a online-ului față de offline. Poți vota de unde vrei, la ce oră dorești.

Din punct de vedere tehnologic, votarea repetată se face foarte simplu. Votul precedent se anulează și să înlocuiește cu cel nou. Calcularea rezultatelor ia în considerație doar cel mai recent vot.

Pentru siguranță plaforma VoteMeApp folosește ambele metode. Avem o bază de date unde se păstrează doar ultima votare și alta unde se păstrează toate votările inclusiv și semnăturile digitale pentru auditare, dacă va fi necesară.

Rămâne o singură dilemă - o singură votare sau poți vota ori de câte ori dorești?

O singură votare este ok pentru votare offline, însă pentru cea online această restricție este un risc. Votanții nu întotdeauna își pot securiza spațiul și timpul de votare. De exemplu: Șeful cheamă toți angajații să voteze cum zice el. În cazul când sistemul online e setat să accepte doar o singură votare, toți subalternii în cazul dat rămân fără nici o variantă de anulare e votului. În cazul când sistemul e setat să accepte ultimul vot, subalternii liber pot să revoteze ori de câte ori doresc de acasă în timpul comod lor.

Contraargument la votare multiplă este că cineva te poate influența (cu o bere) să-ți schimbi votarea în favoare lui. Probabil, dar iar ai opțiunea să te duci acasă în spațiul tău privat (cu capul treaz) să mai gândești și să-ți schimbi votul.

Estonia, care este lider în votările online, face la fel la alegerile naționale din 2005. Votarea repetată este un avantaj, te ajută să fii liber în exprimarea votului.

Această dilemă a existat și în Estonia. Chiar președintele țării a atacat la Curtea Constuțională și a pierdut.

"Internet voting is available during an early voting period (sixth day to fourth day prior to Election Day). Voters can change their electronic votes an unlimited number of times, with the final vote being tabulated. It is also possible for anyone who votes using the Internet to vote at a polling station during the early voting period, invalidating their Internet vote. It is not possible to change or annul the electronic vote on the Election Day. A comparison of the cost-efficiency of the different voting channels offered in the Estonian Municipal Elections (2017) concluded that the Internet Voting is the most cost-efficient voting channel offered by the Estonian Electoral System.

The principle of "one person, one vote" is sustained as the voter can potentially cast more than one ballot but still only a single vote. This was challenged in August 2005 by Arnold Rüütel, the President of Estonia, who saw the new e-voting provisions in the Local Government Council Election Act as a breach of the principle of equality of voting. The President brought a petition against the e-voting provisions to Estonian Supreme Court but lost."

PS: Următorul articol va fi despre cum VoteMeApp asigură secretul votului asigurând imposibilitatea de a modificare a rezultatelor alegerilor.

La începutul anilor 2000 a început o luptă pentru dominația pieții video. Lupta a câștigat-o Google cumpărând YouTube-ul. Google apoi ani de zile a subsidat YouTube-ul. Era imposibil să exiști doar pe publicitate la câte cheltuieli de storage și bandwith și atacuri din partea companiilor media. Între timp alte startup-uri în acest domeniu au dat faliment ori sunt zombie.

Privesc.Eu a rezistat doar datorită faptului că hostingul local era de 10x-20x mai ieftin decât cel internațional.

În fine, după ce storage-ul și bandwith-ul s-au ieftinit, YouTube-ul a devenit foarte profitabil. Mai ales după ce au apărut smartphone-urile. Google au creat o dependență față de YouTube noii generații, care nici nu mai știu cum să pornească un televizor.

Mai toate companiile private și intituțiile de stat văzând cât este de scump video hostingul privat, au început să lucreze pentru YouTube, încărcând toată arhiva lor privată pe hosting “gratuit”. Dar ca și în legea conservării energiei, nimic nu e gratuit în Internet, totul re revinde. 

Această bucată de tort îi deranja pe europeni, și au găsit o soluție, să facem o lege care să nu le mai permite așa simplu să colecteze datele despre utilizatori și să-i targeteze cât mai eficient. Companiile s-au conformat și a inundat primele pagini cu popup-uri cu Accept All și au făcut un user experience rău de tot. Dar cumva lumea apăsa Accept și colectarea datelor mergea mai departe.

Recent, Apple au introdus o nouă opțiune în iOS unde interzice express aplicațiilor să mai facă tracking. Această simplă restricție a afectat marii jucătorii care aveau un bussiness model bazat pe publicitate, printre care și YouTube, unde majoritatea consumului se petrece de pe telefoanele mobile.

Mica ajustare a scricat mașinăria de targetare a utilizatorilor și respectiv Youtube a început să facă inventarierea asset-urilor lor.

De la 1 iunie 2021, YouTube vine cu un răspuns. Își rezervă drepturile să afișeze publicitate pe orice video. Bam. Sutele de mii de site-uri care folosesc YouTube pe post de video hosting gratuit vor fi inundate cu publicitate netargetată.

În plus, influencerii din afară US care fac bani din YouTube vor fi taxați conform legilor din US.

Salut birocraților europeni și succese în noua legislație care limitează AI-ul, în care europenii vor deveni bias în sistemul ML, pentru că se autoexclud.

Audio Social Network

Am o dragoste aparte pentru a crea produse pentru consumatori, pe de altă parte urăsc să fac soft pentru enterprise. 

SpamBully, Camera Genius, Privesc.Eu, diacritice.ai, Invat.Online, sunt doar cateva din produsele care au avut succes. Evident că multe din proiectele mele au avut eșec, dar asta nu mă oprește să revin la ele, peste ani, din nou. 

Unul din proiectele care am investit foarte mult timp și bani a fost Joketastic, o rețea socială audio pentru bancuri. L-am creat prin 2012. Chiar am fost și în Sillicon Valley și am pitch-uit investitori. Până la urmă l-am închis. Concluzia că rețelele audio încă nu sunt înțelese, poate în viitor. Radu Chivriga îmi aducea aminte cu orice ocazie să revin la el și să-l refac.

Un alt caz l-am avut în martie 2020, când a început pandemia și oamenii erau forțați să stea acasă, însă mulți doreau să comunice. Astfel pe platforma privesc.eu am construit niște beciuri virtuale unde lumea vorbea între ei. Mare mi-a fost mirarea că acele beciuri virtuale durau până la 5 ore de discuții aprinse, iar o mulțime de oameni ascultau online, dar nu participau la discuții.

Aceste 2 cazuri din trecutul meu nu-mi dădeau pace, până în momentul când am aflat de Clubhouse la sfârșitul anului 2020, iar prin ianuarie am reușit să-mi fac și un cont pentru a mă convinge că anume așa lumea se comportă cum intuiam eu. M-a convins că timpul a venit și pentru rețelele sociale audio.

Într-o sâmbătă, într-o oră, am făcut un app iOS care lucra pe agora.io. Le-am dat aplicația lui Alex Mânza și Radu Chivriga și am avut o discuție de vreo oră la care m-am convis că plaforma audio lucrează superb.

Deci, m-am hotărât să fac iar o rețea socială audio, din simplu motiv că acest segment abia acum se descoperă și se poate face foarte multe inovații. M-am pus în regim de sprint/maraton și am hotărât să construiesc Ascult.Eu.

Notă: Mai departe urmează înjurături tehnologice 😀

Am început cu backendul. Este făcut pe asp.net core 5, și hostat pe windows azure, în instance pe linux. Baza de date nerelațională este hostată pe Cosmos DB, probabil cea mai rapidă baza de date din lume și autoscalabilă. 

Când ai mai multe webservere de obice se folosește un serviciu/server de cache comun, aici am folosit Redis, un microservice din Azure.

Pentru comunicarea realtime între utilizatori și server, adică ridicarea mânii, microfon activ, intrarea și ieșrile din room am folosit SignalR, tot de la Azure.

Visual Studio 2019, și template-urile mi-au permis să fac Api pentru backend în 2 zile, inclusiv testarea rapidă prin swagger și postman.

Setările administrative au durat vreo oră. Domen-ul, configurarea CDN-ului în Azure, Cloudflare pentru cache, cumpărarea de email hosting la Google și setarea MX-urilor. Nimic complicat.

De luni, am început să fac aplicația pe iOS. Am ales special iOS, pentru că tocmai terminasem versiunea la iOS pentru privesc.eu pe o tehnologie mai nouă de a scrie UI/UX care se numește SwiftUI.  Off, cât de mult am așteptat eu așa tehnologie să apară, până la ea programatorii aveau un coșmar să scrie UI pentru aplicații. 

Timp de 7 zile am transpus Api din backend în UI. Unele funcționalități cum ar fi evenimente și comunități sunt implementate în aplicație însă ascunse, pentru moment. După 7 zile am pus aplicația pe TestFlight, un serviciu de testare de la Apple care îți permite să distribui aplicația ta fără a fi publicată în App Store. Peste 80 de oameni au descărcat aplicația și am făcut primele teste, au fost unele crash-uri, dar din fericire Firebase Crashlytics le-a colectat pe toate și am găsit imediat codul unde se petrecea crash-ul. Era unul banal.

Push notificările le trimit prin Firebase de la Google.

10 zile, a durat de la scrierea primului cod până la testarea unui room cu toți prietenii mei care au venit să se joace cu aplicația. Mulțumesc lor, am inspirat încă o doză de entuziasm și am pornit la drum să fac Android-ul.

Android-ul a durat ceva mai mult, îl cunosc mai puțin, dar și tehologiile lor sunt cumva în urma iOS-ului. Am folost Jetpack Compose pentru a crea UI, e cumva similar cu SwiftUI de la iOS. Jetpack Compose e încă în Alpha versiune, practic zilnic fac update, nimic documentație. Cinstit să vă spun, dacă Google nu avea această tehnologie nici nu mă apucam de Android. 

Jetpack Compose și SwiftUI, practic m-au făcut să fiu de 10x mai rapid decât alte frameworkuri UI. 

Peste 14 zile de programare în Kotlin, deja începusem să mă consum, Agora.IO și WebRTC nu prea vroiau să lucreze, în plus era și mai greu de testat pentru de fiecare dată trebuie să pornești cel puțin 2 telefoane pentru a testa audio. Aproape dupa 3 săptămâni am reușit să fac și android-ul să meargă, și însă nu sunt sigur că merge totul ok.

Audio, căluțul din spatele la Ascult.Eu, e făcut pe serviciu de voice chat de la Agora.io, adică acelaș serviciu care stă în spatele și la Clubhouse. Spre deosebire de clubhouse, eu am făcut o ajustare. Doar cei care vorbesc, se aud pe serviciul agora.io, pentru care se plătește per minute per user, iar conversația se face restream pe un server hostat pe digital ocean Ant Media. De acolo streamul audio merge spre ascultători. Aceast mi-a permis, după calculele mele să am cheltuieli de 25x - 30x mai mici decât ce de la clubhouse, tradeof e că ascultătorii aud cu întârziere de 2 secunde ce vorbesc speakerii.

Pe lângă Clubhouse, au mai apărut și alți jucători ca Twitter Spaces, Telegram audio, Stereo, probabil vor apărea și mai multe. Ascult.Eu se orientează mai mult pe persoane identificabile, cu nume real și fotografii reale, probabil voi face enforcement ca să pui selfie. Asta nu e un moft, dar consider că în comunicare audio, toți participanții trebuie să fie identificați, fără anonimi, fără trolli. Oamenii, room-urile, evenimentele comunitățile sunt restricționate după limbile de comunicare.

Topul celor celebrităților se face simplu. Cei vobesc în fața la câtor mai mulți oameni acela are mai multe ore/atenție și respectiv se ridică în top. Followerii sunt doar un proxy pentru a genera ore/atenție.

După aceste zile, în care lucram câte 14 ore pe zi, am devenit foarte extenuat. Mi-a trebuit încă o săptămână să nu fac nimic pentru ami reveni. Deci, nu vă prea recomand un așa sprin/marathon.

Discuțiile din camerele pe ascult.eu au fost foarte utile. Am cules o mulțime de idei. Le mulțumesc tuturor pentru aport, le voi implementa cât de curând posibil.

Dacă aveți idei, sunteți bineveniți  să facem împreună viitorul radioului.

Niciunul dintre noi nu a trăit într-o democrație adevărată, o democrație în care să ai atât libertatea de exprimare, cât și libertatea votului. Pentru a mă face mai bine înțeles voi începe cu trei istorioare din epoca Internetului.

1. Yahoo!

În 1994 a apărut Yahoo!, un portal care rezolva o problemă mare în Internet. Cum să găsești un site necesar. Era un catalog tematic și cu subcategorii care te ajută să găsești site-urile de care aveai nevoie. Pentru ca site-ul tău să fie listat în acest catalog, trebuia să achiți o taxă anuală. Erai publicat după o verificare (inspecție) a site-ului și după lungi așteptări, însă mai apoi oamenii începeau să dea năvală. Observasem chiar un lucru hazliu, un fel de trend: toți se străduiau să cumpere domenii al căror prim caracter să fie o cifră sau litera A, pentru că afișarea era în ordine alfabetică, iar cel care era publicat primul lua mult mai mult trafic. Dacă e să privim înapoi, în istorie, aș compara asta cu feudalismul: în schimbul pământului care îl primeai, jurai credință împăratului și plăteai anual un impozit de servitute.

2. Altavista.

În anii 90 WWW-ul a explodat. Mii de site-uri apăreau zilnic. Era imposibil să fie ținute într-un catalog bine definit. Astfel, în 1995 a apărut Altavista. Search-ul lucra foarte simplu, adăugai site-ul și în puțin timp erai indexat și începeai să apari în rezultate. Altavista nu mai ținea cont de categorii, cum o făcea Yahoo!, ci încerca să calculeze prin diferite formule a frecvenței anumitor cuvinte cât de relevantă este pagina ta la o căutare a unui utilizator. Teoretic totul era bine, însă în realitate era foarte dificil să găsești exact informația de care aveai nevoie. Trebuia să deschizi sute de rezultate. Aceasta se întâmpla pentru că unii șmecheri și-au dat seama cum să înșele search-ul, în așa fel ca să fie listați cât mai des și cât mai sus. Iar oamenii dădeau click, deschideau pagina, vedeau că nu e ceea ce trebuie închideau și treceau la următorul din listă. După părerea mea, democrația din ziua de azi lucrează ca Altavista: politicienii când candidează promit marea și sarea, sunt înarmați cu o mulțime de trucuri informaționale și de manipulare pentru a fi aleși, ca mai apoi să ne dăm seama că am greșit, dar iarăși cădem în plasă și la următoarele alegeri repetăm greșeala și ne mirăm după aceea cum de se întâmplă că mereu ajung președinți, deputați , primari etc. cei mai nepotriviți omeni – incompetenți, corupți, mincinoși. Este practic imposibil să alegem pe cineva bun, un om de calitate, bazându-ne doar din relatările, de regulă deformatoare, ale mass-media.

3. Google.

O altă etapă este când Google, la scurt timp, în 1998, constatând această problemă mare de căutare în Internet a venit cu o soluție inedită. Ei au hotărât că e mult mai important să fie analizate legăturile (link-urile) dintre site-uri, decât ceea ce declară site-urile (titlu, descriere, cuvinte cheie). Au inventat o formulă matematică care permite să fie calculat gradul de încredere al fiecărui site din Internet. Iar rezultatele în căutare erau ordonate conform acelui rank (grad) de încredere. Astfel în câțiva ani Google a devenit un monopolist al online-ului. Oamenii revin zilnic, pentru că găsesc în primele rezultate ceea ce căutau.

Consider că metoda pe care o folosește Google poate fi aplicată și la alegerea oamenilor de încredere (liderilor de comunități) și sunt sigur că în acest moment ea este cea mai democratică. Aici contează nu doar componenta informațională, ci și cea de încredere din partea oamenilor. Dacă să analizăm cum lucrează această metodă în cazul rezultatelor căutărilor pe Google și în cazul alegerilor, ar fi astfel: nu contează mult ce cuvinte cheie ai pe site (mesaje electorale, panouri publicitare, apariții în media), dar contează câte site-uri publică link-uri spre site-ul tău la ei pe pagini (câți oameni cu încredere te recomandă). Această metodă funcționează mult mai eficient, pentru că e cu mult mai greu să convingi alți oameni (site-uri) să te voteze pe (să publice link-uri spre) tine. Un vot (link) spre tine (site-ul tău) aduce mult mai multă informație despre – cine ești cu adevărat – decât o emisiune tv (niște cuvinte cheie scrise în pagina ta). Mai mult ca atât, prin această metodă toți participanții la votare sunt automat și votanți, și candidați. Nu mai ești forțat să votezi doar pentru un candidat din lista de doi/trei propuși pe o cale nedemocratică (de cineva din umbră), poți vota pe oricine vrei tu și îți poți da votul chiar și pentru mai multe persoane. Pentru prima dată în democrație apare cu adevărat libertatea de a vota, fără nici o restricție.

Această metodă nu este doar una teoretică: noi, practic, am implementat-o în aplicația de votare VoteMeApp care a fost testată în peste 200 de alegeri în diverse comunități. Metoda de tip rank rezolvă o mulțime de probleme cu care se confruntă acum democrația, cum ar fi: tweedismul, manipularea mediatică, bulele informaționale, cenzura, autocrația informațională, votul pentru candidatul cel mai puțin rău, populismul, ignoranța rațională.

Deși VoteMeApp oferă mai multe tipuri de alegeri online, noi credem că anume scrutinele de tip rank sunt cele mai bune pentru a propulsa în organizații și comunități oameni de încredere, întrucât îți oferă libertatea de a alege pe oricine vrei tu și, întâi de toate, personalități autentice, oameni cu adevărat valoroși și utili comunității.

Notă: Vă invit să vă înregistrați la conferința Future of Democracy. Vă asigur că vor fi discuții interesante.