Zapisi in dokumenti iz področja prava, človekovih pravic in tehnologije.

Upravljanje zunanjih naprav z RaspberryPi

RaspberryPi ima privzeto že montiran GPIO vmesnik (General-purpose input/output), s katerim je mogoče krmiliti zunanje naprave. V tokratnem prispevku si bomo pogledali, kako na RaspberryPi 3 preko GPIO vmesnika priključimo zunanji rele, s katerim nato preko spleta vklapljamo ali izklapljamo luči in ventilator, kar je odličen učni primer računalniške interakcije za otroke.

Poleg RaspberyPi z nameščenim operacijskim sistemom Raspbian potrebujemo še 5V rele (8-kanalnega za dobre 3 EUR dobimo na AliExpressu) in nekaj povezovalnih kablov. Pri nabavi relejev se splača biti nekoliko previden – kupiti je potrebno 5V in ne 12V (včasih pošiljatelj pošlje napačnega), kitajski releji pa so znani tudi po tem, da so včasih defektni ali pa se med transportom poškodujejo. Vsekakor pa je nakup že pripravljenega releja z vsemi ustreznimi upori, tranzistorjem in zener diodo dobra naložba, saj je v takem primeru verjetnost, da bo prišlo do poškodbe RaspberryPi-ja precej manjša kot če prej omenjene zaščite rele nima. V primeru, da rele brez dodatne elektronike priklopimo neposredno na RaspberryPi, se lahko zgodi, da RaspberryPi skurimo. Je pa res, da vedno obstaja možnost poškodbe Raspberryja, zato se tovrstnih projektov lotimo previdno in na lastno odgovornost.

Povezava RaspberryPi in releja

Za povezavo si najprej poglejmo shemo GPIO priključkov na RaspberryPi. Shema je razvidna iz spodnje slike:

Shematika GPIO priključkov na RaspberryPi3.

Shema GPIO priključkov na RaspberryPi3.

Ter  še sliko releja:

8-kanalni rele.

8-kanalni rele.

Kot je razvidno iz slike, ima rele spodaj na sredini 10 priključkov. Skrajno levi je označen z GND (nanj priključimo negativni pol), skrajno desni pa VCC (nanj priključimo pozitivni pol). Vmes so “krmilni” priključki, označeni z IN1 do IN8.

Za primere prikaza bomo na RaspberryPi priključili dve zunanji napravi – žarnico in ventilator. Naj dodamo, da je na rele mogoče priključiti naprave, ki delujejo na do 250V in potegnejo do 10A toka, torej bi na rele lahko priključili npr. pravo žarnico, TV ali celo pralni stroj. Seveda pa je v tem primeru potrebna skrajna previdnost, saj so tovrstne napetosti in tokovi že smrtno nevarni.

RapberryPi3 torej z relejem povežemo takole:

  • VCC na releju z rdečim kablom povežemo na PIN02 na RaspberryPi (5V, pozitivni pol);
  • GND na releju s črnim kablom povežemo na PIN06 (negativni pol oz. “zemlja”);
  • IN1 na releju z zelenim kablom povežemo na PIN07 (oz. GPIO04) na RaspberryPi.
  • IN2 na releju z modrim kablom na PIN03 (GPIO02) na RaspberryPi.

Končna povezava RaspberryPi z relejem zgleda takole:

Povezava RaspberryPi in releja.

Povezava RaspberryPi in releja.

Program za krmiljenje releja

Program za krmiljenje releja bomo napisali v Pythonu. Pravzaprav je program skrajno enostaven. Za začetek v ukazni vrstici s skrbniškimi pravicami zaženemo Python:

sudo python

Sedaj vpisujemo ukaze (ko ukaz vpišemo, ga zaženemo s pritiskom na Enter):

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.output(7, False)

Kratka razlaga. S prvim ukazom naložimo GPIO knjižnico. Z drugim ukazom določimo, da bomo GPIO priključke označevali s standardiziranimi številkami priključkov na matični plošči (v zgornji shemi GPIO priključkov so označeni v stolpcu Pin#). Druga možnost je, da uporabimo oznako priključkov na nivoju Broadcom čipa – v tem primeru bi uporabili ukaz GPIO.setmode(GPIO.BCM), v shemi pa bi upoštevali oznake GPIOxx.

S tretjim ukazom določimo, da bo priključek št. 7 deloval kot izhodni priključek. Z zadnjim ukazom pa spremenimo izhodni signal na priključku št. 7. Ko vpišemo zadnji ukaz, bi morali slišati kako rele klikne.

Rele sedaj lahko preklopimo v prejšnje stanje, in sicer z ukazom:

GPIO.output(7, True)

Če vse deluje kot je treba, Python sedaj zapustimo s Ctrl-D.

Zdaj bomo za krmiljenje GPIO priključka št. 7 napisali dva Python programa. Programa bosta praktično identična, razlika bo le v zadnji vrstici.

Prvi program poimenujemo lampon.py (z njim bomo luči prižigali):

sudo nano lampon.py

Vanj skopiramo naslednje ukaze:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.output(7, False)

Nato ustvarimo še drugi program, ki ga poimenujemo lampoff.py (z njim bomo luči ugašali):

sudo nano lampoff.py

Vanj skopiramo naslednje ukaze:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.output(7, True)

Programa lahko sedaj preskusimo. Ko vpišemo:

sudo nano lampon.py

… se rele vklopi. Slišimo klik, na releju se prižge lučka.

Ko pa vpišemo:

sudo nano lampoff.py

… se rele izklopi. Slišimo klik, na releju pa se lučka ugasne.

Priklop zunanje naprave na rele

Na tej točki lahko preskusimo, kako deluje upravljanje zunanje naprave.

Kot je razvidno iz zgornje slike releja, ima posamezen rele na drugi strani (zgoraj) tri izhode. Nanje lahko s pomočjo vijakov pritrdimo kable. Izhod prvega releja, ki je označen s K1 (na sliki zgoraj se nahaja skrajno levo), krmilimo preko priključka IN1 (kot smo rekli, je le-ta na RaspberryPi z zelenim kablom povezan na PIN07).

Na sredino izhoda K1 povežemo negativni pol porabnika (minus), levo ali desno pa pozitivni pol porabnika (v našem primeru bo to majhna žarnica skupaj s 3V baterijo). Če bo žarnica povezana na levi priključek, ob zagonu RaspberryPi ne bo svetila, vklopil pa jo bo ukaz GPIO.output(7, False). Če jo povežemo na desni priključek, bo njeno obnašanje ravno nasprotno.

Shema povezave releja z zunanjimi napravami je torej naslednja:

Povezava releja z zunanjo napravo.

Povezava releja z zunanjo napravo.

Na podoben način lahko sedaj na drugi kanal releja priključimo še drugo napravo (v našem primeru bo to 12V ventilator). V tem primeru moramo IN2 vhod na releju z modrim kablom povezati na PIN03 (GPIO02) na RaspberryPi, nato pa napisati dve novi Python aplikaciji, s katerima bomo namesto GPIO priključka 7 krmilili priključek 3. Na podoben način lahko povežemo še ostale kanale.

Postavitev spletne aplikacije

Za konec bomo izdelali preprosto spletno aplikacijo, s pomočjo katere bo preko spletnega brskalnika ali mobilnega telefona mogoče prižigati in ugašati lučko ter ventilator.

Na računalniku RaspberryPi najprej postavimo spletni strežnik s PHP podporo. V našem primeru smo izbrali spletni strežnik Nginx, RaspberryPi je povezan v VPN omrežje, požarni zid pa je nastavljen tako, da je spletna stran dosegljiva samo znotraj VPN omrežja. Sama postavitev spletnega strežnika, VPN povezave in ustrezno zavarovanje celotne infrastrukture sicer ni tema tega prispevka, zato o tem ne bomo podrobneje pisali, vsekakor pa je pri postavljanju spletnih aplikacij potrebno poskrbeti za varnost. Še posebej, če bomo omenjene naprave kdaj uporabili za prižiganje in ugašanje luči v stanovanju – v tem primeru nam gotovo ne bo všeč, da nam bodo luči lahko prižigali neznanci iz spleta…

Ko smo namestili spletni strežnik Nginx, se pomaknemo v podimenik /var/www/. Ta imenik vsebuje datoteke, ki so vidne preko spletnega strežnika. Za delo v njem (ustvarjanje in urejanje datotek ter imenikov) potrebujemo skrbniški dostop. Najprej ustvarimo podimenik lights:

cd /var/www
sudo mkdir lights
sudo chown www-data.www-data lights

V ta imenik najprej skopiramo zgoraj omenjeni Python datoteki. Nato v njem ustvarimo dve PHP datoteki, in sicer lampon.php in lampoff.php. Njuna vsebina je naslednja:

sudo nano lampon.php

Vanjo skopiramo:

<?php
system("echo raspberry | sudo -S python /var/www/lights/lampon.py") ;
header('Location: index.php') ;
?>

Ter še:

sudo nano lampoff.php

Vanjo pa skopiramo:

<?php
system("echo raspberry | sudo -S python /var/www/lights/lampoff.py") ;
header('Location: index.php') ;
?>

Sedaj lahko iz ukazne vrstice zaženemo vsako izmed datotek:

php lampon.php
php lampoff.php

Če vse deluje kot mora, lahko slišimo klikanje relejev oziroma vidimo prižiganje in ugašanje luči.

Omenjeni dve datoteki pokličeta vsaka ustrezno Python skripto, nato pa brskalniku naročita, naj naloži index.php datoteko. Manjka nam torej še datoteka index.php.

V tej datoteki, ki jo ustvarimo v imeniku /var/www/lights/, bodo ustrezni HTML ukazi, ki bodo omogočali klicanje prve in druge PHP skripte.

Nastavitev pravic spletnega strežnika, da lahko poganja skripte s skrbniškim dostopom

Ker želimo PHP skripte klicati preko spletnega strežnika, je potrebno nastaviti, da ima spletni strežnik Nginx, ki je član skupine www-data, pravico poganjati Python skripte s skrbniškimi pravicami. Najprej zaženemo urejevalnik pravic visudo:

sudo visudo

Na konec datoteke dodamo:

%www-data ALL=(ALL) NOPASSWD: /usr/bin/python /var/www/lights/lampon.py
%www-data ALL=(ALL) NOPASSWD: /usr/bin/python /var/www/lights/lampoff.py

S tem smo uporabniku, ki je član skupine www-data (to je spletni strežnik Nginx), dali pravico poganjati skripti lampon.py in lampoff.py (ki se nahajata na /var/www/lights/) s skrbniškimi privilegiji, ne da bi mu bilo potrebno vnesti geslo.

Priprava končne spletne strani

Zaključni korak je še izdelava glavne spletne aplikacije za krmiljenje luči. Primer preproste HTML kode, s katero v index.php pokličemo PHP skripto, ki zažene Python aplikacijo s katero preko releja prižgemo in ugasnemo luč je naslednji. Najprej ustvarimo datoteko index.php:

sudo nano index.php

V datoteko nato skopiramo spodnjo HTML kodo:

<html>
<head>
<meta charset="utf-8">
<meta name="description" content="description">
<title>Prižiganje luči z RaspberryPi</title>
</head>
<body>

<a href="lampon.php">PRIŽGI LUČ</a>
<br><a href="lampoff.php">UGASNI LUČ</a>

</body>
</html>

Mimogrede, namesto index.php bi lahko uporabili kar index.html, prav tako bi v PHP skriptah za kontrolo luči lahko nastavili drugačno pot do Python skript… z nekaj razmisleka lahko sistem precej prilagodimo svojim potrebam.

Sedaj PHP skriptam nastavimo ustrezne pravice:

sudo chown www-data.www-data *.php

In ker spletni strežnik že teče, v brskalniku zaženemo spletno stran. V našem primeru je RaspberryPi vključen v VPN omrežje, kjer ima statično določen (zasebni) IP naslov 10.10.5.100. V brskalnik vpišemo:

http://10.10.5.100/lights/index.php

In naloži se preprosta spletna stran, ki ima dve povezavi: “PRIŽGI LUČ” in “UGASNI LUČ“. S klikom nanju lahko krmilimo rele in prižigamo ter ugašamo na ta rele povezano luč.

Pa še malo šminke…

Če bomo projekt pokazali majhnim otrokom, ki ne znajo brati, je smiselno, da namesto povezav z napisi uporabimo sličice. To je še posebej uporabno če bomo spletno aplikacijo krmilili s pomočjo zaslona na dotik ali mobilnega telefona.

Apletna aplikacija za interakcijo z lučmi in ventilatorjem.

Apletna aplikacija za interakcijo z lučmi in ventilatorjem.

V našem primeru spletna aplikacija omogoča prižiganje luči in ventilatorja. Otrok to lahko stori preko mobilnega telefona ali računalnika ter tako izkusi kako zgleda računalniška interakcija z objekti fizičnega sveta. Ker krmiljenje deluje preko omrežja, je na ta način mogoče luči prižigati in ugašati iz praktično katerekoli naprave, ki je povezana v splet oz. naše VPN omrežje.

Celotna shema naprave.

Celotna shema naprave.

Nekoliko starejši otroci pa se lahko lotijo priklapljanja novih naprav ter programiranja Python in PHP skript. Ker so skripte kratke in preproste za razumeti, za to ni potrebno praktično nikakršno znanje programiranja.

Prototip končnega izdelka. Kabli so obupno neurejeni, vendar to lahko rešimo s pomočjo spajkalnika.

Prototip končnega izdelka. Kabli so obupno neurejeni, vendar to lahko rešimo s pomočjo spajkalnika.

RaspberryPi je tako lahko odličen pripomoček za spodbujanje otroške kreativnosti in inovativnosti. Hkrati pa se otroci tudi naučijo nekaj temeljnih osnov delovanja računalnika – kar je za generacijo, ki pozna samo socialna omrežja in računalniške igrice še kako pomembno. In če damo njihovi domišljiji prosto pot, nas njihove ideje in izdelki znajo še kako presenetiti…

Analiza podatkov o končnih lastnikih podjetij registriranih v Veliki Britaniji

Na spletni strani Companies House, gre za agencijo britanskega ministrstva za gospodarstvo, so objavljeni podatki o končnih lastnikih podjetij (t.i. ekonomskih upravičencev), ki so registrirana v Veliki Britaniji.

Pomembno je poudariti, da ta baza ne predstavlja britanskega poslovnega registra, pač pa je baza nastala zaradi prenosa EU direktive za preprečevanje pranja denarja in financiranja terorizma iz 2015. Velika Britanija je namreč prva država, ki je register popolnoma odprla javnosti (k temu so se zavezali že leta 2013).

Novinarska objava tim. Panama Papers pa je (posredno) spodbudila Evropsko komisijo, da je začela pripravljati še ostrejšo verzijo direktive. Lanska direktiva namreč v 14. členu zahteva, da mora biti register prosto dostopen državnim organom, ostalim pa če izrazijo “legitimen interes”, seveda pa se države lahko prostovoljno odločijo tudi za večjo transparentnost. Predlog, ki ga Evropska komisija pripravlja sedaj, pa bo zahteval, da so registri obvezno javni.

Podobna zakonodaja se pripravlja tudi v Sloveniji, v parlamentarni obravnavi bo predvidoma v jeseni, po predlogu vlade pa bo register javen.

Ker so objavljeni podatki v JSON formatu, je to odlična priložnost, da si v tokratnem prispevku ogledamo kako podatke prenesti v PostgreSQL bazo in v njej poiskati slovenske državljane.

Uvoz podatkov v bazo

JSON (JavaScript Object Notation) je preprost format za izmenjavo podatkov, a za razliko od podatkov v “klasičnih” podatkovnih bazah ni urejen v tabelarično obliko, pač pa je oblika lahko nekoliko bolj kompleksna. PostgreSQL je podporo za JSON dobil v različici 9.2, različica 9.4 je prinesla nov podatkovni tip JSONB, ukazi uporabljeni v nadaljevanju pa zahtevajo PostgreSQL različice 9.5.

Podatke iz spletne strani najprej prenesemo na računalnik. Baza s podatki se osvežuje vsakodnevno (pred 10h uro), v kompresirani obliki pa je velika slabih 70 Mb. Ime datoteke je sestavljeno v obliki “persons-with-significant-control-snapshot-” <DATUM> “.zip”. Zato lahko v Linuxu hitro naredimo preprosto skripto, ki se samodejno požene enkrat po deseti uri in podatke prenese na naš računalnik:

wget http://download.companieshouse.gov.uk/persons-with-significant-control-snapshot-`date +"%Y-%m-%d"`.zip

Podatke sedaj uvozimo v bazo podatkov. Najprej ustvarimo bazo podatkov z npr. imenom companies:

sudo su
su - postgres
psql
CREATE DATABASE companies OWNER matej;

Nato kot ciljni uporabnik (matej) vstopimo v bazo:

psql companies

Nato ustvarimo novo tabelo z imenom psc:

create table psc (line jsonb);

… in vanjo preberemo podatke, ki smo jih prej prenesli iz spleta:

\copy psc from program 'zcat persons-with-significant-control-snapshot-`date +"%Y-%m-%d"`.zip'

Sedaj si pogledamo prvo vrstico v tabeli psc, toliko, da vidimo strukturo:

select jsonb_pretty(line) from psc limit 1;

Dobimo približno takle izpis:

 jsonb_pretty 
-----------------------------------------------------------------------------------------------------------------
 { 
 "data": { 
 "etag": "***", 
 "kind": "individual-person-with-significant-control", 
 "name": "***", 
 "links": { 
 "self": "/company/***"+
 }, 
 "address": { 
 "region": "***", 
 "country": "***", 
 "locality": "***", 
 "premises": "2", 
 "postal_code": "***", 
 "address_line_1": "***" 
 }, 
 "nationality": "British", 
 "notified_on": "2016-04-06", 
 "date_of_birth": { 
 "year": 1976, 
 "month": 5 
 }, 
 "name_elements": { 
 "surname": "***", 
 "forename": "***", 
 "middle_name": "***" 
 }, 
 "natures_of_control": [ 
 "ownership-of-shares-75-to-100-percent" 
 ], 
 "country_of_residence": "United Kingdom" 
 }, 
 "company_number": "***" 
 }
(1 row)

Sedaj podatke iz JSON oblike shranimo v običajno tabelo, ki jo bomo poimenovali psc_table:

select
    line#>>'{data,etag}' as etag,
    line#>>'{data,kind}' as kind,
    line#>>'{data,name}' as name,
    line#>>'{data,address,region}' as address_region,
    line#>>'{data,address,country}' as address_country,
    line#>>'{data,nationality}' as nationality,
    line#>>'{data,notified_on}' as notified_on,
    line#>>'{data,date_of_birth,year}' as birth_year,
    line#>>'{data,date_of_birth,month}' as birth_month,
    line#>>'{data,name_elements,surname}' as name_surname,
    line#>>'{data,name_elements,forename}' as name_forename,
    line#>>'{data,name_elements,middle_name}' as name_middle_name,
    line#>>'{data,natures_of_control}' as natures_of_control,
    line#>>'{data,country_of_residence}' as country_of_residence,
    line#>>'{company_number}' as company_number
into psc_table
from psc;

Podatki so s tem uvoženi v tabelo psc_table. V primeru, da določen “stolpec” vsebuje več podatkov, so le-ti ločeni z vejico. Primer:

["ownership-of-shares-25-to-50-percent", "voting-rights-25-to-50-percent", "significant-influence-or-control"]

Izbor Slovencev iz baze

V naslednjem koraku iz tabele izberemo vse zapise, kjer je narodnost osebe slovenska, država bivanja Slovenija ali se naslov osebe nahaja v Sloveniji:

select * from psc_table where (nationality ~* 'sloven') or (country_of_residence ~* 'sloven') or (address_country ~* 'sloven');

Baza nam vrne 85 zapisov, ki jih sedaj lahko izvozimo v datoteko:

\COPY (select * from psc_table where (nationality ~* 'sloven') or (country_of_residence ~* 'sloven') or (address_country ~* 'sloven')) to 'slovenistan.csv' with csv header delimiter E'\t';

Podatki so s tem izvoženi v datoteko slovenistan.csv, ki je tab-delimited CSV datoteka. Odpremo jo lahko v LibreOffice Calc ali v Excelu.

* * *

Mimogrede – obdelava podatkov (uvoz in izbor) v PostgreSQL traja nekaj minut. Enaka obdelava podatkov z orodjem Microsoft Excel je trajala več kot en dan…

 

Zahvala Gašperju za pomoč in TI Slovenija za informacijo o bazi.

Spletna stran portala eDavki

Uporabniki portala eDavki.durs.si smo te dni doživeli neprijetno presenečenje – vstop v spletno aplikacijo namreč ni bil mogoč.

eDavki - varnostno opozorilo.

eDavki – varnostno opozorilo.

Razlog? DURS je na spletni strani zamenjal korensko digitalno potrdilo, zato sodobni brskalniki dostop do spletne strani zavrnejo. Do pred kratkim je spletišče onemogočalo uporabo nešifrirane povezave (upravljavci strežnika so sedaj to izključili), zato dostop do eDavkov sploh ni bil mogoč. V primeru, da pa uporabniki uporabljajo še dodatne varnostne mehanizme, ki onemogočajo dostop na nešifrirano spletišče eDavkov (npr. dodatek HTTPS Everywhere), pa je težava še težje rešljiva.

Ko uporabnik nekako uspe ugotoviti, da je težavo mogoče rešiti z namestitvijo novega korenskega potrdila in se uspešno prijavi na spletno stran eDavki, ga na vrhu pričaka naslednje obvestilo:

Obvestilo.

Obvestilo.

Vse lepo in prav, vendar obvestila uporabnik ni mogel videti, dokler se ni uspel prijaviti v eDavke. Prijava v eDavke pa ni bila mogoča, dokler korenska potrdila niso uspešno nameščena oziroma dokler upravljavci spletišča niso omogočili povezovanja preko nešifrirane povezave.

Nekoliko podrobnejši pregled spletne strani Finančne uprave sicer pokaže, da so uporabnike predhodno obvestili, da bodo izvedli zamenjavo digitalnega korenskega potrdila:

Obvestilo o menjavi potrdil.

Obvestilo o menjavi potrdil.

A kot je razvidno iz obvestila, je bilo le-to objavljeno 20.7.2016 ob 11:59:03, menjava potrdil pa je bila izvedena že naslednji dan (21. 7. 2016), torej zgolj 12 ur po objavi.

Takšno ravnanje je skrajno neresno in neodgovorno do uporabnikov. Še zlasti do tistih, ki morajo npr. do nekega določenega datuma izpolniti svoje obveznosti, sicer jim grozi globa.

Namesto, da bi FURS uporabnike portala eDavki o menjavi kontinuirano obveščal z jasno vidnim obvestilom vsaj kakšen mesec ali dva vnaprej, so tako rekoč brez resnega obvestila digitalna potrdila zamenjali praktično čez noč in s tem uporabnikom povzročili kup težav.

Vprašanje, ki se zastavlja kar samo po sebi je, ali bo za to kdo odgovarjal? Zdi se, da je na to vnaprej poznan tudi odgovor.

HTTPS varnost spletišča eDavki?

Vse skupaj je seveda zadosten razlog, da si gremo nekoliko podrobneje ogledati stopnjo varnosti spletišča eDavki. Za ta namen smo uporabili spletno aplikacijo SSL Test. Rezultati testa so za leto 2016 – milo rečeno – precej slabi.

SSL test eDavkov.

SSL test eDavkov.

Kot je razvidno iz slike, je varnost ocenjena zelo nizko – s stopnjo T. Glavni razlog za tako nizko oceno je dejstvo, da spletišče uporablja državna korenska digitalna potrdila, ki niso vključena v sodobne spletne brskalnike. Če to težavo odmislimo – uporabnik si lahko korenska digitalna namesti sam – pa je stopnja varnosti še vedno ocenjena z oceno C. Kar ni ravno najbolje.

Pa pojdimo po vrsti. Spletišče eDavki uporablja protokol TLS 1.0, ne podpira pa TLS 1.1 in TLS 1.2. Na srečo spletišče vsaj ne uporablja več SSL 3, a očitno je bila sprememba nastavitev spletnega strežnika opravljena precej na hitro, saj so upravljavci strežnika zgolj onemogočili SSL3, pozabili pa so onemogočiti uporabo manj varnih šifrirnih algoritmov (konkretno RC4). Prav tako še vedno manjka vklop preferenčnega vrstnega reda uporabljenih šifrirnih algoritmov.

Poleg tega spletišče uporablja šibke Diffie-Hellmanove parametre za izmenjavo šifrirnih ključev, zaradi česar je na komunikacijo mogoč tim. Logjam napad. Nastavitev uporabe 2048-bitnih Diffie-Hellman parametrov bi upravljavcem spletišča vzela zgolj nekaj minut dela. Prav tako je slabo podprta uporaba mehanizma tim. poudarjene zaupnosti (angl. Perfect Forward Secrecy).

Glede na rezultate testiranja izpred slabih dveh let sicer lahko rečemo, da se je varnost spletišča eDavki sicer izboljšala, a je stanje še vedno nezadovoljivo. Sploh glede na to, da spletišče očitno teče na spletnemu strežniku Microsoft Internet Information Server 8.5 (podpis spletnega strežnika je Microsoft-IIS/8.5), ki podpira novejše varnostne mehanizme. Potrebno jih je le vklopiti.

* * *

Vsi uporabniki spletišča eDavki se verjetno strinjamo, da je portal res uporaben in koristen pripomoček. Zato bi upravičeno pričakovali, da bi upravljavci portala v njegovo delovanje vložili (zgolj) še nekaj ur dodatnega dela in s tem precej izboljšali njegovo varnost.

Poleg tega bi bilo upravljavce smiselno opozoriti na to, da skušajo biti pri prenovi sistema bolj pozorni na pravočasno obveščanje uporabnikov. Z nekoliko spremenjenim načinom dela bi namreč tako uporabnikom povzročili bistveno manj težav, posledično pa tudi na svoji strani zmanjšali obremenitev centra za podporo uporabnikom.

A po drugi strani so stvari lahko tudi slabše. Uprava za javna plačila namreč pri aplikaciji za oddajo eRačunov še vedno uporablja SSL3. In ja, piše se leto 2016.