Kategorie
Administracja publiczna Android Epidemia iOS

Co zawierają QR-kody w Unijnym Certyfikacie Covid i jak to sprawdzić?

Za niecałe dwa tygodnie Unia Europejska zacznie stosować Unijne Certyfikaty Covid zwane także paszportami covidowymi albo unijnymi cyfrowymi zaświadczeniami Covid (EU Digital COVID Certificates). Co jest zapisane w QR-kodzie, który znajduje się w tym dokumencie? Jak możemy to sami sprawdzić? W tym artykule rozbieramy temat na czynniki pierwsze. Roześlijcie link znajomym, którzy obawiają się zaświadczeń i panikują, że zawartość jest zakodowana, nieczytelna a rząd na pewno coś ukrywa.

Dzięki certyfikatom covidowym, zgodnym z rozporządzeniem Parlamentu Europejskiego, od początku lipca osoby zaszczepione, przetestowane i ozdrowiałe będą mogły przemieszczać się po Unii Europejskiej bez konieczności odbywania izolacji i kwarantanny. Jest to coś zupełnie co innego, niż wycofane z użycia rodzime zaświadczenia o szczepieniach. Tym razem nie ma mowy o częściowej anonimizacji danych, certyfikat covidowy zawiera imię, nazwisko i datę urodzenia. Co jeszcze powinniśmy wiedzieć?

Inne teksty związane z epidemią koronawirusa

[13.03.2020] o projekcie „Stop the pandemic” i tym, że jego autorzy prosili o znacznie więcej danych niż powinni
[20.03.2020] w którym zaglądam do środka aplikacji „Kwarantanna Domowa” i opisuję, co znalazłem w środku
[29.03.2020] w którym opisuję dlaczego smartfony nie bardzo nadają się do śledzenia interakcji między ludźmi
[03.04.2020] w którym piszę o zapowiadanej przez Ministerstwo Cyfryzacji apce „ProteGO” i o tym, że nie zadziała ona zgodnie z oczekiwaniami
[21.04.2020] w którym piszę o protokole Contact Tracing autorstwa Apple+Google i projekcie OpenTrace
[26.04.2020] w którym opowiadam, jak można sprawdzić, co robi aplikacja mobilna i dlaczego otwarte źródła to nie wszystko
[29.04.2020] w którym mając umowę szacuję koszty napisania od zera aplikacji Kwarantanna Domowa
[09.05.2020] w którym pokazuję, jak sprawdzić zawartość komunikatów wysyłanych w eter przez ProteGO Safe
[04.06.2020] w którym opisuję kontrowersyjną architekturę aplikacji ProteGO Safe 4.1.0-rc.1
[16.07.2020] w którym pokazuję, że aplikacja ProteGO nie działa
[31.08.2020] w którym podaję statystyki ProteGO Safe u progu nowego roku szkolnego
[27.10.2020] w którym podaję statystyki STOP COVID (dawniej ProteGo Safe) przed Wszystkich Świętych
[05.11.2020] w którym opisuję, co będzie, jeśli apka STOP COVID (dawniej ProteGo Safe) stanie się obowiązkowa
[29.01.2021] w którym opisuję, jaką niespodziankę sprawiła aplikacja mobilna „Zaszczepieni”
[18.06.2021] w którym opisuję Unijne Certyfikaty Covidowe i aplikację „UCC – Unijny Certyfikat Covid”

Na tym blogu nie boimy się wchodzenia w technikalia. Nigdy nie jest tak technicznie, aby nie mogło być bardziej technicznie. Rozumiem jednak, że dla osób spoza IT śledzenie tekstu może być trudne, więc proponuję następujący układ – jeśli przestajesz rozumieć, o czym mowa, przeskocz do następnego rozdziału.

Wcześniejsze teksty przydatne w lekturze tego artykułu

Poniżej wskazuję wcześniejsze teksty publikowane na blogu, które mogą pomóc w zrozumieniu zagadnień przywoływanych w niniejszym artykule:

  • artykuł o kodowaniu BASE64, tłumaczący sposób przechowywania dowolnych plików w takiej postaci, aby zapis korzystał jedynie z literek i cyferek
  • artykuł o QR-kodach, zawierający najobszerniejszy w języku polskim opis tego, jak czarno-białe kombinacje kwadracików kodują litery i cyfry
  • artykuł o aplikacji „Zaszczepieni” i tych zaświadczeniach z QR-kodami, które były w użyciu między styczniem a czerwcem 2021 – opis formatu, zawartości i metod dekodowania.

Jak powstaje QR-kod z certyfikatu covidowego?

Sięgnijmy do dokumentu Guidelines on Technical Specifications for Digital Green Certificates w wersji 1.3 z 21 kwietnia 2021. Znajduje się tam następująca ilustracja tworzenia QR-kodu, którą opatrzyłem przypisami:

Szablon dokumentu (1) jest wypełniany danymi o konkretnej osobie (2) przez instytucję zdrowotną, powstaje dokument w formacie JSON (3) który jest dla oszczędności miejsca przekształcany w postać binarną CBOR (4), podpisywany kluczem prywatnym przez co powstaje paczka w formacie COSE (5) która jest następnie kompresowana (6) algorytmem ZLib Deflate. Skompresowane dane są kodowane protokołem BASE45 (7) i w takiej postaci trafiają do QR-kodu (7).

Dekodujemy zawartość paszportu covidowego!

Aby odczytać zawartość QR-kodu, musimy wymienione wyżej operacje przeprowadzić od końca, czyli: odczytać napis z obrazka, zdekodować BASE45, zdekompresować Zlib Deflate, zdekodować COSE i CBOR, wtedy dostaniemy zestaw napisów, które będziemy mogli zinterpretować zgodnie ze źródłowym schematem JSON.

Wszystko to robi oczywiście jednym kliknięciem aplikacja „UCC – Unijny Certyfikat COVID”, ale jest ona swego rodzaju czarną skrzynką, której zasad działania nie znamy. My przeprowadzimy te same operacje ręcznie, kontrolując etapy pośrednie i sprawdzając, jak zmienia się postać danych przenoszących zapisy paszportu covidowego.

Podstawowym narzędziem będzie CyberChef. Z wersji online można skorzystać tutaj ale nie musimy się obawiać ujawnienia światu sekretów – dostępna jest też wersja do pobrania, uruchamiana lokalnie bez użycia internetu.

Krok 1 – odczytujemy QR-kod

Na potrzeby niniejszego artykułu wykorzystamy testowe QR-kody dostępne na tej stronie

Uwaga! QR-kody tam obecne nie przejdą weryfikacji aplikacją i jest to stan oczekiwany, bo podpisane są testowym certyfikatem. To ułatwia zadanie programistom i integratorom systemów, którzy mogą tworzyć QR-kody o błędnej zawartości i sprawdzać, jak ich oprogramowanie poradzi sobie z usterkami.

Otwórzmy CyberChefa i przeprowadźmy następujące kroki:

  1. w palecie po lewej stronie wybieramy pozycję „Other” → „Parse QR Code” albo przywołujemy ją za pomocą filtra tekstowego
  2. przeciągamy niebieską ramkę „Parse QR Code” do „Przepisu” („Recipe”)
  3. w ramce na dane wejściowe („Input”) klikamy ikonkę ładowania pliku, wybieramy obrazek albo zdjęcie z QR-kodem
  4. w ramce „Input” pojawia się podgląd wczytanego pliku
  5. w ramce na dane wyjściowe („Output”) pojawia się napis stanowiący zdekodowaną treść QR-kodu

Zdekodowany napis będzie się składał z cyfr, wielkich liter, kilku znaków specjalnych i… spacji. Okienko tekstowe złamie linie w miejscu w którym występują spacje, ale uwaga! Mają one znaczenie, nie można ich kasować. Zdekodowany napis nie ma znaków przejścia do nowej linii, w naszym przypadku wygląda następująco:

Plain Text

Znaki „HC1:” (Health Certificate wersja 1) muszą zostać usunięte przed dalszym przetwarzaniem, ten prefiks służy wyłącznie do określenia wersji ładunku oraz potwierdzenia, że QR-kod faktycznie zawiera certyfikat covidowy.

Krok 2 – dekodujemy BASE45

W przywołanym wcześniej artykule opisałem, jak trzy bajty przekazu do zakodowania standardem BASE64 przekształcane są na cztery znaki tworzące wiadomość. Efektywność kodowania BASE45 jest niższa, tutaj dwa bajty kodowane są trzema znakami. Skąd pomysł, by go użyć?

Jak napisano w specyfikacji certyfikatów covidowych, użycie kodowania alfanumerycznego ma poprawić zgodność ze starszymi komponentami, które pracują tylko z 7-bitowym zbiorem znaków ASCII. Moim zdaniem byłaby to znakomita okazja, aby takie systemy lub urządzenia odesłać na emeryturę – jeśli rzeczywiście gdzieś występują. Wskazana korzyść jest zresztą iluzoryczna, krok później i tak będziemy mieli do czynienia z danymi binarnymi.

Aby było jasne – nie tracimy na efektywności, bo kodowanie BASE45 korzysta z dokładnie tych samych 45 znaków, które zawiera alfanumeryczny tryb QR-kodów. W tym trybie potrzebujemy 11 bitów (pikseli w QR-kodzie) do zapisania dwóch takich znaków albo 33 bitów do zapisania sześciu takich znaków. Mamy więc raptem jeden bit poniżej optymalnego upakowania, w trybie binarnym QR-kodów zapis czterech bajtów zająłby dokładnie 32 bity.

CyberChef nie obsługuje sam z siebie kodowania BASE45, ale nic nie stoi na przeszkodzie, by przygotować przepis przeprowadzający krok po kroku wszystkie obliczenia (tutaj specyfikacja z potrzebnymi informacjami). To właśnie zrobiłem – podlinkowanego przepisu użyjemy do zdekodowania napisu otrzymanego w poprzednim kroku (pamiętamy o usunięciu prefiksu).

Zgodnie z oczekiwaniami, na wyjściu otrzymujemy nieczytelną reprezentację pliku binarnego. Aby upewnić się, że wszystko idzie dobrze, możemy na chwilę wstawić na koniec przepisu operację „Detect file type” i upewnić się, że widzimy format Zlib Deflate. Potem usuwamy tę operację.

Krok 3 – dekompresujemy Zlib Deflate

Krótko i zwięźle – na koniec przepisu z poprzedniego kroku wstawiamy operację Zlib Inflate.

Na wyjściu otrzymujemy trochę inną kaszę, w której zauważamy fragmenty napisów „Centrum e-Zdrowia” czy „STANISLAW”. To sugeruje, że jesteśmy na dobrej drodze.

Krok 4 – rozkodowujemy COSE

COSE to skrót od „CBOR Object Signing and Encryption” – formatu kontenera, w którym przechowywane są podpisane cyfrowo obiekty CBOR. Charakterystyczne jest jednak, że COSE sam używa formatu CBOR, więc na koniec przepisu z poprzedniego kroku wstawiamy operacje „CBOR Decode” oraz – dla czytelności – „JSON Minify”. Oto wynik:

W ramce z danymi wyjściowymi zaznaczyłem elementy formatu CBOR: nagłówek definiujący format podpisu cyfrowego (kolor żółty), ładunek główny z certyfikatem covidowym (kolor zielony) oraz podpis cyfrowy złożony przez wystawcę certyfikatu (kolor niebieski).

Uwaga – w niniejszym tekście pomijamy temat weryfikacji prawidłowości podpisu oraz certyfikatu. Zainteresowany czytelnik znajdzie potrzebne narzędzia i materiały tutaj, tutaj oraz tutaj. I jeszcze tutaj.

Zakładamy tym samym w ciemno, że z podpisem wszystko jest w porządku i możemy iść dalej.

Krok 5 – rozkodowujemy CBOR

W tym kroku napotkamy problem. Format JSON daje się zawsze przełożyć na CBOR, ale w drugą stronę niekoniecznie – CyberChef spróbuje i zawiedzie. Mówiąc precyzyjniej, CBOR pozwala na mapowanie (indeksowanie) obiektów liczbami, JSON jedynie napisami. Dekodowanie CBOR będzie więc wymagało innego narzędzia.

Przekształcimy teraz dane do szesnastkowego zapisu obiektu CBOR. W nowym oknie CyberChefa wklejamy dane z poprzedniego kroku, potem tworzymy przepis z następującym operacjami:

  1. „JPath expression” z dyrektywą $.value[2].data.* – aby wyciąć tablicę liczb składającą się na certyfikat covidowy, tę oznaczoną na zielono
  2. „From Decimal” – aby zamienić liczby na bajty, separator: Line feed
  3. „To hex” – aby zamienić bajty na zapis szesnastkowy, separator: Space

W okienku wyjściowym mamy zestaw liczb w zapisie szesnastkowym, kopiujemy je, wklejamy do prawej ramki na stronie cbor.me i klikamy przycisk ze strzałką w lewo:

Nareszcie! W ramce po lewej widzimy w końcu zawartość certyfikatu covidowego.

Tu szybka informacja dla tych, który samodzielnie budują system weryfikacji QR-kodów i coś im nie działa – tutaj można znaleźć zestaw przypadków testowych (pozytywnych i negatywnych) z danymi wejściowymi i wyjściowymi do każdego kroku przekształceń. Ja użyłem wzorcowych danych do wytropienia usterek w swoim dekoderze BASE45.

Zawartość certyfikatu covidowego

Nasz przykładowy certyfikat wygląda następująco:

W węźle o indeksie „1” znajduje się oznaczenie kraju, indeks „6” to data wydania certyfikatu (w formacie Unix, 1621893600 to północ 25 maja 2021), „4” to data ważności (tutaj: 18 marca 2022) zaś pod indeksem „-260” znajduje się blok informacji o osobie dla której wystawiono certyfikat i jej sytuacji zdrowotnej. W dalszej części zajmiemy się tylko tym blokiem, którego wersję 1.3.0 opisano w dokumencie Technical Specifications for EU Digital COVID Certificates.

Dane osobowe

Osoba, której dotyczy certyfikat covidowy, jest identyfikowana wyłącznie przez imię, nazwisko i datę urodzenia. Dane osadzone w QR-kodzie nie zawierają polskiego numeru PESEL ani serii/numeru dokumentu tożsamości. Trzeba jednak pamiętać, że identyfikator szczepienia lub testu da się powiązać z konkretnym człowiekiem.

testowy Μαριοσ Menexes, znany również jako Marios Menexes

Ciekawostka – imię i nazwisko występuje w dwóch formach. Pierwsza korzysta ze wszystkich liter alfabetu narodowego, nazwisko zapisane jest jako seria znaków Unicode. Druga zawiera transkrypcję łacińską w takiej postaci, w jakiej występuje ona w dokumencie ICAO 9303 opisującym obszar do odczytu maszynowego w paszportach i innych dokumentach podróżnych.

Grecki paszport, strefa MRZ widoczna jest na dole dokumentu
źródło: Wikipedia

Sytuacja zdrowotna

Certyfikat covidowy musi zawierać dokładnie jedną z trzech możliwych sekcji opisujących stan zdrowia – informację o zaszczepieniu, o przebytej chorobie lub o wynikach testu.

Informacja o szczepieniu

Blok z informacjami o odbytym szczepieniu zawiera szeroki zestaw informacji opisujących szczepionkę i stan zaszczepienia. Wartości opisujące niektóre pozycje są całkowicie nieczytelne bez klucza, ale tak jest lepiej – dokument Value Sets for Digital Green Certificates odsyła nas gdzie trzeba, my zaś unikamy tworzenia nowych słowników.

Komplet pól w tej sekcji wygląda następująco:

  • „tg” – kod choroby, zawsze 840539006 (COVID-19)
  • „vp” – typ szczepionki (np. 1119349007 to szczepionka mRNA)
  • „mp” – produkt leczniczy, kod konkretnego lekarstwa (np. EU/1/20/1528 to Comirnaty)
  • „ma” – producent (np. ORG-100030215 to Biontech Manufacturing GmbH)
  • „dn” – numer przyjętej dawki
  • „sd” – liczba dawek w kuracji
  • „dt” – data przyjęcia ostatniej dawki
  • „co” – kraj w którym podano szczepionkę
  • „is” – wystawca certyfikatu (w Polsce – Centrum e-Zdrowia)
  • „ci” – identyfikator certyfikatu w formacie przyjętym przez dany kraj

Informacja o przebytej chorobie

Ważność certyfikatu z blokiem opisującym przebytą chorobę nie może zaczynać się wcześniej niż 11 dni po dacie pozytywnej diagnozy ani kończyć później niż 180 dni od tej daty.

Komplet pól w tej sekcji wygląda następująco:
„tg” – kod choroby, zawsze 840539006 (COVID-19)
„fr” – data pierwszego testu, który dał wynik pozytywny
„co” – kraj w którym wykonano test
„is” – wystawca certyfikatu (w Polsce – Centrum e-Zdrowia)
„df” – początek ważności certyfikatu, nie wcześniej niż „fr + 11 dni”
„du” – koniec ważności certyfikatu, maksymalnie „fr + 180 dni”
„ci” – identyfikator certyfikatu w formacie przyjętym przez dany kraj

Informacja o przeprowadzonym teście

Blok z informacjami o wynikach przeprowadzonego testu nie zaskakuje:

  • „tg” – kod choroby, zawsze 840539006 (COVID-19)
  • „tt” – typ testu
  • „nm” / „ma” – nazwa testu molekularnego albo identyfikator testu antygenowego
  • „sc” – data i godzina pobrania próbki
  • „tr” – wynik testu (260415000 = nie wykryto wirusa, 260373001 = wykryto wirusa)
  • „tc” – jednostka wykonująca test
  • „co” – kraj w którym przeprowadzono test
  • „is” – wystawca certyfikatu (w Polsce – Centrum e-Zdrowia)
  • „ci” – identyfikator certyfikatu w formacie przyjętym przez dany kraj

Weryfikowanie certyfikatu covidowego aplikacją mobilną

QR-kod z certyfikatem covidowym można zweryfikować w aplikacji mobilnej „UCC – Unijny Certyfikat Covid” (dawniej „Zaszczepieni”) dostępnej na Androida i iOS. O poprzednim wcieleniu apki pisałem w tym artykule. Nowa wersja ma taki sam przaśny interfejs użytkownika, jednak tym razem nie ukrywa informacji o identyfikatorze szczepienia, prezentuje też – zamiast inicjałów – pełne imię i nazwisko.

Inaczej jest w aplikacji włoskiej (po prawej stronie) – ta pokazuje tylko imię, nazwisko, datę urodzenia i status weryfikacji certyfikatu. Przywołałem ją tu by zwrócić uwagę na interoperacyjność, aplikacje z różnych krajów europejskich potrafią potwierdzać „obce” certyfikaty covidowe. Swoje klucze publiczne dostarczają wszystkie współpracujące organizacje zdrowotne.

Stan przygotowań do wydawania/akceptacji certyfikatów covidowych: ciemny zielony – certyfikaty w użyciu, jasny zielony – gotowość do przyłączenia, żółty – trwają testy
(stan z dnia 18.06.2021)

Podsumowanie

W ostatnim czasie nieco ucichła debata na temat tego, do jakiego stopnia pandemia usprawiedliwia dyskryminację osób niezaszczepionych. „Unijny Certyfikat Covid ma ułatwić swobodne podróżowanie obywatelom Unii Europejskiej podczas pandemii” – informuje portal rządowy, jednak przyjęcie szczepionki zwalnia z wielu lokalnych ograniczeń (np. limitu osób na imprezach masowych). Czy wkrótce QR-kody będą sprawdzane przy kupowaniu biletów z puli „dla zaszczepionych”?

W czasopiśmie Lege Artis Olgierd Rudak pochyla się nad podobnymi pytaniami: „czy dopuszczalne jest przetwarzanie danych o zaszczepieniu przeciwko COVID-19 przez usługodawców, których obowiązują limity w przyjmowaniu klientów? Czy można żądać okazania zaświadczenia o szczepionce?

Jego odpowiedź to stanowcze i zdecydowane „być może”. Tyle na razie wystarcza. Jeśli dzięki szczepieniom zbudujemy odporność populacyjną a po wakacjach nie będzie kolejnej fali zachorowań, temat pewnie spadnie z nagłówków. W przeciwnym razie musimy się liczyć z tym, że Unijne Certyfikaty Covid staną się elementem codziennego życia.



O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.

26 odpowiedzi na “Co zawierają QR-kody w Unijnym Certyfikacie Covid i jak to sprawdzić?”

Bardzo ciekawie sie czyta te artykuły nawet jesli nie ma sie duzego doswiadczenia w ITsec, oby wiecej tego typu rzeczy! Może coś o serwisach streamingowych i jak działają?

Tam były jakieś zmiany – przynajmniej w wersji tekstowej certyfikatu Covid’owego UE – w zakresie daty ważności. Z tego co wiem najpierw była data ważności (np. dla szczepienia 1 rok), później to zmieniono na „datę ważności w Polsce”, a później wcale to usunięto.

Data ważności dalej jest, na poziomie metadanych certyfikatu i można to łatwo sprawdzić w dokumentach źródłowych udostępnianych przez UE:

https://ec.europa.eu/health/sites/default/files/ehealth/docs/vaccination-proof_interoperability-guidelines_en.pdf

Strona 11. Mamy tam wyszczególnione takie pola jak:

a) „Certificate valid from”
b) „Certificate valid to”
c) „Next vaccinatio date” (to jeszcze nie wisienka na torcie która będzie dalej)

Wisienką na torcie jest: „SUPRISE, SUPRISE” możliwość natychmiastowego unieważnienia certyfikatu w dowolnym momencie:

„Provide support for additional features, such as the revocation of issued certificates”

Mechanizm praktycznie identyczny jak unieważnienie certyfikatów SSL dla stron internetowych. Tutaj jednak zastosowany do ludzi, tzn. twojego certyfikatu przywilejów.

Taki świat szykują nam i naszym dzieciom.

„Mechanizm praktycznie identyczny jak unieważnienie certyfikatów SSL dla stron internetowych. Tutaj jednak zastosowany do ludzi, tzn. twojego certyfikatu przywilejów.”

Tego nie rozumiem. Jeśli wycieknie prywatna część klucza SSL, to każdy może podszywać się pod daną witrynę. Wówczas trzeba certyfikat unieważnić (aby przerwać możliwy atak) i wystawić nowy (aby znów było bezpiecznie). Podobnie jest z podpisywaniem paszportów covidowych – w razie skompromitowania certyfikatu zostanie wystawiony nowy a Ty dostaniesz nowego PDF-a z nowym QR-kodem.

To zabawne obserwować skrajną naiwność ludzi. A więc jesteś pewien, że mechanizm unieważnienia certyfikatu będzie używany tylko w razie skompromitowania certyfikatu? To tak samo jakby twierdzić, że proch i dynamit będzie używany wyłącznie w górnictwie i budownictwie i żaden rząd, organizacja, czy człowiek nie użyje ich w celu wyrządzenia krzywdy innym ludziom. No, doprawdy, przenikliwość 5-latka.

Skala rażenia takiego unieważnienia byłaby wyjątkowo niewielka, bo po pierwsze mechanizm jest nieprzećwiczony i wiele zagranicznych aplikacji weryfikujących nigdy nie wdroży listy odwołań, po drugie zaś nawet w przypadku wdrożenia prawdopodobnie odrzucane byłyby paszporty wystawione po dacie odwołania. W świetle powyższego – oraz faktu, że raportowane w prasie „podrobione” paszporty były w rzeczywistości fałszywie poświadczonymi szczepieniami z prawdziwym paszportem – oraz faktu, że jednakowo szkodziłoby to „naszym” i „onym” – tak, jestem przekonany że unieważnianie się nie przydarzy.

Tzn. jak ktoś jakimś cudem, podrobi klucz prywatny i będzie sobie podpisywał lewe zaświadczenia tym certyfikatem, i to wyjdzie na jaw to oni uwalą wszystkie wcześniej wydane? I co w takich okolicznościach?

Co to dokładnie znaczy ukraść, „przerobić” co kogoś certyfikat na swój?

W tekście masz podlinkowane narzędzia, które robią w drugą stronę od początku do końca

Nasze UODO oficjalnie odpowiedziało na pytanie na końcu.
NIE, nie wolno pytac o certyfikat i jesli osoba sama go nie pokaze nie można wymuszać, przetważać ani go przechowywać
zatem nie masz racji w tym konkretnym stanowcze być może 😉

Powitać. Żądać nie mają, nie zmienia to jednak sytuacji, że zapięczętowani będą sami z chęcią tym kodem świecić. I bardzo łatwo ominą ten przepis, np ustawiając dwie kolejki np do wejścia, przy czym jedna będzie dla zapieczętowanych poprzez zeskanowanie kodu przez maszynę. Proste. Po to są utrzymywane limity.

Wtedy mówimy o tzw. dyskryminacji pozytywnej, również zakazanej. Wymuszenie takowej jest przestępstwem zgodnie z art. 107 ustawy o ochronie danych osobowych.

Bardzo ciekawy artykuł, zacząłem weryfikację zaczynając od mojego kodu ze szczepienia i niestety nie przeszedłem 2go kroku dostaje błąd Zlib Inflate – invalid fcheck flag:14
Sprawdziłem też kod testowy i też nie da się przejść 2go kroku.
Czy ktoś ma pomysł co robię źle lub gdzie może tkwić problem?

Spróbuj dodać znak nowej linii na końcu danych wejściowych, bez tego konwerter chyba nie działa do końca poprawnie

„że identyfikator szczepienia lub testu da się powiązać z konkretnym człowiekiem”
Możesz rozszerzyć temat? Albo odesłać do źródłowej informacji?

Od paru dni się zastanawiałem jak kiniarz lub restaurator będą weryfikowali czy dana osoba pokazuje w smartfonie lub jako wydruk papierowy swój paszport covidowy. Oba to QR==obrazki nieczytelne dla człowieka. Łatwo oba spreparować. Minister jakoś nie informuje o właściwej aplikacji.

Brawo, jak zwykle, za dobry artykuł

Dodaj komentarz

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