Piráti z ministerstva -- ako štátny eID klient (ne)rešpektuje autorské práva

V piatok 3. februára 2023 vyšla verzia 4.5 štátneho eID klienta. V poznámkach k verzii sa nachádza nenápadná novinka:

  • aplikácia už nepoužíva knižnicu OpenPACE

Táto poznámka je len malým kúskom zaujímavého príbehu, nuž vám z neho vyrozprávam viac.

1 OpenPACE a GPL

OpenPACE je slobodná softvérová knižnica implementujúca (okrem iných) protokol PACE (TR-03110, 2. časť) slúžiaci na našich preukazoch na overenie BOK či CAN kódu (zjednodušene “prihlásenie”).

Pretože knižnica OpenPACE je distribuovaná pod licenciou GPLv3, nemožno ju kombinovať s neslobodným softvérom akým je eID Klient. Napriek tomu sa v septembri 2022 vo verzii 4.0 táto knižnica objavila.

Hoci OpenPACE je nám k dispozícii pod licenciou GPLv3, autorom nič nebráni poskytovať svoj softvér aj pod inou licenciou. Samotná prítomnosť kódu pochádzajúceho z GPL knižnice v neslobodnom produkte nemusí znamenať porušovanie autorských práv. Autori sa mohli nejako dohodnúť.

V novembri 2022 som sa preto autora OpenPACE opýtal, či je distribúcia jeho diela ako súčasti slovenského štátneho eID klienta v poriadku. Nuž, nebola. O ničom nevedel, eID klient jeho autorské práva porušoval. Bol teda akýmsi pirátskym softvérom z dielne štátu.

Ako takúto chybu napraviť? Možností je viac. Napríklad:

  1. Zverejniť kompletný zdrojový kód eID klienta pod slobodnou licenciou.
  2. Dohodnúť sa s autormi OpenPACE na inej licencii, ktorá kombináciu s neslobodným softvérom dovoľuje.
  3. Nahradiť knižnicu iným kódom bez “problémovej” licencie.

Elegantné prvé riešenie by dozaista privítala nielen odborná verejnosť, štát (či jeho dodávateľ) však chybu napravil krokmi č. 2 a 3.

To vieme aj vďaka priamej odpovedi z ministerstva vnútra. V slovenskom prostredí (e-Governmentu) nie som doma, preto som sa v novembri o poznatok o porušovaní autorských práv štátom podelil s @jsuchal. On v januári 2023 napísal na ministerstvo vnútra takúto žiadosť o informácie:

  1. Používa eID klient knižnicu OpenPACE?

    Áno, avšak len do verzie 4.4. V ďalších verziách táto knižnica použitá nebude.

  2. Ako sú vysporiadané licenčné práva voči autorovi OpenPACE (ak existuje zmluva s autorom, žiadame o jej zaslanie)

    Vysporiadanie licencií je v kompetencii dodávateľa aplikácie eID klient. Podľa našich informácií sa dodávateľ aplikácie eID klient dohodol s autorom knižnice na proprietárnej licencii, pričom aktuálne prebieha negociácia zmluvy priamo medzi autorom knižnice a dodávateľom aplikácie eID klient.

    Negociácia zmluvy s autorom knižnice je v kompetencii dodávateľa aplikácie eID klient a jej text preto nie je dostupný Ministerstvu vnútra Slovenskej republiky.

  3. Kde je možné nájsť zdrojové súbory eID klienta?

    Zdrojové súbory eID klienta nie sú zverejňované.

  4. Zoznam knižníc, ktoré sú využívané v eID klientovi a ako sú vysporiadané autorské/licenčné práva na užívanie týchto knižníc.

    Zoznam knižníc je nasledovný (názov knižnice – typ licencie):
    • Botan – BSD 2-clause “Simplified” License
    • nlohmann/json – The MIT License (MIT)
    • openjpeg – BSD 2-clause “Simplified” License
    • OpenSSL – Apache License 2.0
    • OpenPACE – proprietárna licencia
    • Qt – LGPL v3
    Pri zozname knižníc je uvedený typ licencie, čo znamená, ako bola licencia vysporiadaná.

Odpovede najmä potvrdili to, čo sme už vedeli. Mňa však na konci zaujala informácia o licencii, pod ktorou štát s klientom distribuuje knižnicu Qt.

2 Qt a LGPL

Qt je zbierka knižníc (nielen) na programovanie používateľského rozhrania. Aj vďaka Qt funguje (či vyzerá) eID klient porovnateľne na rôznych operačných systémoch. Okrem komerčnej licencie je Qt k dispozícii aj pod slobodnou licenciou LGPL. Podľa odpovede Ministerstva vnútra (a napokon aj podľa textov licencií priložených k eID klientovi) je knižnica Qt distribuovaná práve pod licenciou LGPL.

LGPL je menej “prísna” príbuzná GPL. Softvér pod licenciou LGPL možno za určitých podmienok (4. časť licencie) kombinovať s neslobodným softvérom. Presnejšie, dodávateľ eID klienta nám musí dať (zdokumentovanú) možnosť používať program s inou (kompatibilnou) verziou Qt, napríklad s tou, ktorú už na počítači máme nainštalovanú. Samotní autori Qt tieto podmienky formulujú takto:

  • The user is allowed to change and re-link the library used in the application or device – including reverse engineering. With LGPLv3 it is explicitly stated that the user also needs to be able to run the re-linked binary, and that sufficient installation information must be provided.
  • If the application or device is not fully following all requirements of the LGPL, it is not allowed to be distributed at all.
  • The freedoms provided by the LGPL license cannot be in any way negotiated upon or restricted from any of the recipients – i.e. it is not possible to make such terms for an application or a device using the LGPL library that would in any way restrict the rights provided by the LGPL.

Tieto podmienky ale eID klient zrejme nespĺňa. Kto sa pokúsi program spustiť s inou, no kompatibilnou verziou Qt, uvidí takéto chybové hlásenie:
screenshot_integrita_Qt

Z akéhosi dôvodu eID klient pri štarte kontroluje integritu viacerých spustiteľných súborov a ukončí sa, ak narazí na neznámu kópiu knižnice. Tým pravdepodobne porušuje licenciu LGPL a zostáva pirátskym softvérom. Pravdepodobne, pretože ja som programátor a právu sa nerozumiem.

Milé právničky, milí právnici, prosím pomôžte nám. Ako tomu rozumiete vy?

Ako z toho von?

Podobne ako v prípade OpenPACE, aj tu je možných riešení hneď niekoľko. Napríklad:
  1. Zverejniť kompletný zdrojový kód eID klienta pod slobodnou licenciou.
  2. Zmeniť eID klienta tak, aby bol v súlade s LGPL. To znamená najmä umožniť jeho spúšťanie s inými (i upravenými) kompatibilnými verziami Qt.
  3. Zaplatiť za komerčnú licenciu Qt, ktorá žiadne takéto “obmedzenia” nemá.
  4. Nahradiť knižnicu iným kódom bez “problémovej” licencie.

Za pravdepodobné riešenie považujem druhé, hoci ani tretie nie je nereálne. Najlepším riešením by však bolo to prvé.

3 Záver

Dobrou správou je, že z používateľov štát svojím babráctvom pirátov nespravil. Knižnice smieme používať i napriek ich spornej distribúcii.

Porušovaním licenčných podmienok sú dotknuté práva autorov príslušných programov, my sme naozaj len v pozícii publika. Pretože však ide o konanie štátu, dozaista ho smieme kontrolovať a očakávať od neho lepšiu robotu.

19 Likes

Zábava graduje.

1 Like

Vyzerá to tak, že v DXC rozhoduje jediný človek o použití cudzieho kódu. Skutočná dôvera. … V takej atmosfére ani kód review netreba.

Ja dúfam, že toto nebude náklad štátu. Lebo užívať si ovocie open-source “až kým sa na to nepríde” a zároveň sa tváriť, že open-source je bububu a štát ho nesmie nikdy vyžadovať od dodávateľov je teda dobrá schyza.

1 Like

Hodnota za peniaze

Ukázalo sa, že za Qt sa bude platiť. No, nemýlil som sa úplne. Ale mám z toho zmiešané pocity. Zrejme je dobré, keď niekto platí za (ďalší vývoj) Qt. Z toho majú azda úžitok aj všetci ostatní, čo používajú Qt pod slobodnou licenciou.

Na druhej strane, platí sa za niečo, čo môžeme mať zadarmo. Minulé prehrešky asi treba vyžehliť peniazmi. Pre budúcnosť však ten softvér možno jednoducho zmeniť tak, aby neporušoval LGPL a knižnicu Qt mať zadarmo. Podľa článku na Živé.sk ale ministerstvo tvrdí, že

Kontrola integrity je úplná zbytočnosť. Či už pohľadu funkčnosti a stability, no najmä v kontexte bezpečnosti. Deaktivácia kontroly integrity je (triviálna) robota nanajvýš na dve minúty. Ak sa Qt kupuje naozaj len kvôli tomuto, sú to vyhodené peniaze. Pravdepodobne na to nebudú vyhodené verejné financie, ale von oknom idú tak či tak.

WTFs/minute

Vo všeobecnosti možno eID klienta označiť za good code. O to viac popri zbytočnej “kontrole integrity” prekvapujú niektoré ďalšie zvláštnosti.

Napríklad anti-debugging. Takéto metódy sú obvykle spoľahlivým poznávacím znamením malvéru či iného neseriózneho softvéru ako sú počítačové hry alebo rôzne DRM programy. V “serióznom” softvéri od štátu to nemá čo hľadať. To si ministerstvo naozaj objednalo?

Nuž a napokon kľúče. Kľúče sú pod rohožkou, k dispozícii každému.

3 Likes

Len asi treba dodat, ze ak teda dodavatel nevysporiadal, tak zrejme porusil podmienky spoluprace s ministerstvom, ergo sankcie?

Alebo inak: ak stat nieco robi a ma k tomu povinnosti, tak tych povinnosti sa nezbavil tym, ze (cast) veci outsource-oval na nejakeho dodavatela, ci?

Lebo to potom outsource-ujme vsetky urady a hned mame pokoj s infozakonom, proti-korupcnymi opatreniami, atd. a pod.

3 Likes

Ešte stále to nie je ono. Na Linuxe sú po spustení eID klienta v pamäti okrem iných aj tieto knižnice:

libgcrypt.so.20
libgraphite2.so.3
libproxy.so.1
libsystemd.so.0

Na všetky sa vzťahuje licencia LGPL 2.x. Pri štarte sa “kontroluje ich integrita” tak, aby eID klient so žiadnymi inými verziami týchto knižníc nebežal. To protirečí LGPL 2.x a štát tieto knižnice takto distribuovať nesmie.

V skutočnosti sa tieto knižnice nenačítavajú programom eID klient priamo, ale ako závislosti knižnice Qt. Komerčná licencia Qt samozrejme nemá ako ovplyvniť licencie týchto závislostí. Nákupom Qt sa starý problém iba posunul o poschodie nižšie.

Toto sa nákupom ďalších komerčných licencií asi vyriešiť nedá. No stačí ich vynechať z “testu integrity” a problém pominie.

Možnože sa Qt dá skompilovať bez závislostí na týchto knižniciach a nebude ich treba ani distribuovať. Práve tu sa napokon môže zísť komerčná licencia Qt. Umožní zároveň povestnú kontrolu (jej) integrity a distribúciu upravenej verzie bez sprístupnenia zdrojových kódov.

(na platformách Mac OS a Microsoft Windows to vyzerá OK)

2 Likes