W oczekiwaniu na uwolnienie mObywatela

Krótki zarys historii aplikacji

Chyba każdy z nas zna aplikację mObywatel. Jej początki sięgające 2016 roku były niełatwe, pojawiało się wiele – słusznych z resztą – głosów krytyki. Pierwotnie aplikacja miała nazywać się mDokumenty i – jak nazwa wskazuje – miała służyć do zastąpienia naszych plastikowych dowodów osobistych. Jej działanie polegać miało na tym, że w przypadku potrzeby ustalenia naszej tożsamości przez urzędnika mieliśmy podać nasz numer PESEL lub numer telefonu. Urzędnik następnie wprowadzał numer do systemu, po czym przychodził SMS na nasz numer telefonu. Do nas należało odpowiedzieć na otrzymanego SMSa, tym samym potwierdzając naszą tożsamość. Całość była dość skomplikowana.

Rok później, korzystając z doświadczeń, wydano pierwszą wersję mObywatela. Aplikacja początkowo dostępna była tylko dla użytkowników Androida. Wsparcie dla iOS miało przyjść nieco później. Początkowo aplikacja wspierała takie dokumenty jak dowód osobisty, prawo jazdy i legitymacja studencka. Poza tym aplikacja początkowo nie zastępowała fizycznego dowodu osobistego, więc jej użyteczność była kwestionowana.

Dzisiaj mObywatel jest już dojrzałą aplikacją i bez problemu możemy udać się z nią np. na wybory, gdzie zastąpi nam plastikowy fizyczny dowód osobisty. Obecnie aplikacja zawiera dużo szerszą funkcjonalność niż tylko możliwość potwierdzania swojej tożsamości. Możemy dzięki niej m. in. realizować e-recepty, zastrzegać nasz PESEL czy załatwić wiele spraw urzędowych bez wychodzenia z domu. W kolejce na wdrożenie w aplikacji czeka integracja z naszym polskim modelem LLM o nazwie PLLuM.

Nie wszystko się jednak udało

Zależność od dwóch korporacji

W tej beczce miodu znajdzie się jednak łyżka dziegciu. A właściwie dwie. Pierwszą ze spraw, jakie wiszą nad mObywatelem jest jego dostępność. Ustawodawca wymusza na nas posiadanie konta w usłudze jednej z dwóch korporacji: Google lub Apple. Nawet na oficjalnej witrynie mObywatela przeczytamy, że „jedyną legalną i bezpieczną wersję mObywatela pobierzesz tylko w Google Play lub App Store„. Kłóci się to z niezależnością państwa polskiego od zachodnich korporacji. Nawet jeżeli pobierzemy aplikację z innego (czyt. „nielegalnego”) źródła, to będzie ona miała problem z działaniem na systemie Android bez zainstalowanych usług od Google, np. GrapheneOS. Wspomniany temat został wyczerpująco wyłożony na blogu Ciemna Strona – gorąco polecam lekturę.

Kod źródłowy tajemnicą państwową

Drugą i zarazem zdecydowanie istotniejszą kwestią jest upublicznienie kodu źródłowego mObywatela. Tym bardziej, że ustawodawca sam zobowiązał się ustawą z dnia 26 czerwca 2023 roku (art. 82) do udostępnienia kodu aplikacji w terminie 12 miesięcy od wejścia jej w życie. Prosta matematyka wykazuje, że minister spóźnia się nieco z realizacją zapisu.

Dlaczego należy udostępnić kod źródłowy aplikacji?

Aplikacja mObywatel jest newralgiczną częścią naszego cyfrowego państwa. Ze względu na to, że dzięki niej mamy dostęp do naszych wrażliwych danych, powinna być objęta szczególną ochroną i zabezpieczeniami. Nie ma tutaj miejsca na żadne dziury, przez które nieuprawnione podmioty mogłyby uzyskać nieautoryzowany dostęp. Nie mniej istotną kwestią jest też zaufanie obywateli do aplikacji wydawanej przez administrację państwową. W związku z opóźnianiem upublicznienia kodu źródłowego pojawiają się zarzuty, że aplikacja może zawierać elementy szpiegujące użytkowników. Takie zarzuty najłatwiej jednak jest odbić właśnie pokazując co mObywatel ma „pod maską”.

Bezpieczeństwo przez niejawność

Obecną politykę bezpieczeństwa względem zabezpieczenia mObywatela można nazwać anglojęzycznym terminem „security by obscurity”, czyli bezpieczeństwo przez niejawność. Dlaczego to podejście uważam za niewystarczające, aby zapewnić bezpieczeństwo aplikacji? Jeżeli kod źródłowy jest niejawny, to dostęp do niego ma ograniczona liczba osób, głównie deweloperzy aplikacji. Pozornie wydaje się, że dzięki temu kod aplikacji jest bezpieczniejszy. Jednak jak pokazuje historia, systemy i aplikacje o zamkniętych źródłach są najchętniej obieranym celem dla osób o wątpliwych intencjach.

Bezpieczeństwo poprzez jawność

Z drugiej strony barykady mamy politykę bezpieczeństwa poprzez jawność. Mimo dostępu do kodu dla osób o złośliwych intencjach, dostęp do tego kodu ma także praktycznie nieograniczona liczba osób, które mogą przejrzeć kod i nanosić do niego poprawki. W takiej sytuacji szanse na istnienie ukrytego błędu w oprogramowaniu przez dłuższy czas zredukowane są do minimum. Moim oraz ustawodawcy zdaniem polityka jawności kodu źródłowego mObywatela ma potencjał zwiększyć jego odporność na ataki.

Kontrabanda mówi 'sprawdzam’ Ministerstwu Cyfryzacji

Dlaczego zatem odpowiedzialne za mObywatela organy administracyjne ociągają się realizacją swojego obowiązku ujawnienia kodu zapisanego w ustawie? Odpowiedź na to pytanie stara się uzyskać redaktor naczelny serwisu kontrabanda.net Oliwier Jaszczyszyn. W swoim artykule autor opisuje szczegółowo ścieżkę od wysłania zapytania po otrzymanie odpowiedzi. Ponadto autor analizuje odpowiedź otrzymaną od jednego z CSiRTów. Pozwolę sobie zacytować część artykułu:

Swoją opinię wydały w sumie trzy CSIRTy — MON, GOV oraz NASK. Wszystkie z nich musiały wydać ocenę pozytywną, żeby publikacja kodu mogła dojść do skutku bez jakichkolwiek negatywnych konsekwencji.

Ministerstwo Cyfryzacji poinformowało mnie jednak w swojej odpowiedzi, że ekspertyzy CSIRTów GOV oraz NASK zostały uznane za tajemnicę państwową „wskutek zawartego tam materiału”, więc ostatecznie dostałem kopię ekspertyzy tylko od Ministerstwa Obrony Narodowej.

Opinia zespołu informatyków Ministerstwa Obrony Narodowej, którą publikuję w tym miejscu, sama w sobie nie jest przeciwstawna do ewentualnej publikacji kodu źródłowego mObywatela.

Według CSIRTu ministerstwa, kod owszem może zostać opublikowany, ale w wersji „tylko do wglądu, bez pobierania”. Choć jest to technicznie możliwe, to raczej powątpiewałbym w to, że jakikolwiek publicznie dostępny serwis do udostępniania kodu by umożliwiał wyłączenie możliwości jego pobierania.

Ale nawet gdyby można było odbierać możliwość pobierania kodu, taka funkcjonalność okazałaby się być w rzeczywistości nieskuteczna, jeżeli zadaniem publikacji kodu usługi rządowej jest rzeczywiście jego jawność.

Ministerstwo Obrony Narodowej przyznało, że choć istnieje ryzyko wystąpienia ataków supply chain (czyli takich ataków, które mają na celu skompromitować cały system na podstawie nieuprawnionego dostępu do gorzej zabezpieczonych jego elementów), tak dodało też, że publikacja kodu może przyczynić się do większego zaufania Polek i Polaków względem aplikacji, oraz utrudnić wdrożenie złośliwego oprogramowania, ponieważ — przede wszystkim — każda zmiana w kodzie by była jawna.

W ostatnim akapicie przeczytamy, że MON jawnie stoi na stanowisku, iż ujawnienie kodu może zwiększyć bezpieczeństwo aplikacji.

Podsumowanie

Wydawać by się mogło, że jest tylko kwestią czasu, aż Ministerstwo Cyfryzacji upubliczni kod źródłowy mObywatela, w końcu odpowiedni zapis już znajduje się w ustawie. Ponadto opinia MONu zdaje się to potwierdzać. Z drugiej jednak strony oczywistym jest, że w przypadku tak newralgicznej aplikacji pośpiech nie jest wskazany, gdyż upubliczniony kod musi być dobrze sprawdzony i „posprzątany” ze zbędnych elementów. Mimo wszystko wskazany jest nacisk na administrację aby wywiązała się ze swoich własnych zobowiązań.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *