Koch Laboratory

Wydruk sprawdzany wiersz po wierszu: pięć obalonych założeń i pierwsze pomiary

Nowa linia badawcza: czy wydruk, skan albo zdjęcie dokumentu da się sprawdzić automatycznie, wiersz po wierszu, nigdy nie uznając uczciwego znaku za zmieniony? Najpierw pięć założeń, które się nie utrzymały, potem pomiary: zero fałszywych alarmów na 22 680 uczciwych znakach, 36 z 36 zmian jednego znaku wykrytych na skanach, koszt w znakach nierozstrzygniętych, skaner z podajnikiem zniekształcający kartkę bardziej niż telefon i model testowy z werdyktami ustalonymi przed próbą: 198 z 198. Sposób odczytu i budowa kodu pozostają wstrzymane.

Koch Laboratory - wydruk sprawdzany wiersz po wierszu: pięć obalonych założeń i pierwsze pomiary

Dokument wydany jako PDF żyje dalej jako wydruk, skan albo zdjęcie telefonem. Czy kwota, data albo numer na takiej kopii to te same znaki, które dokument miał w chwili zapieczętowania, rozstrzyga dziś zwykle człowiek: aplikacja pokazuje dane z kodu na dokumencie, a on porównuje je z wydrukiem. Ta linia badawcza, prowadzona od 31 października 2026, mierzy, czy da się to sprawdzić automatycznie, wiersz po wierszu, ze zwykłego skanu i zdjęcia telefonem, i przy tym nigdy nie uznać uczciwego dokumentu za zmieniony. Wpis podaje wyniki z pierwszych dziesięciu dni listopada 2026: najpierw pięć założeń, które się nie utrzymały, potem wykrywanie zmiany jednego znaku, różnice między skanerem z podajnikiem a telefonem i model testowy z werdyktami ustalonymi przed próbą.

Co tu jest badaniem, a co nie. Podpisane dane w widocznym kodzie 2D na papierze to dojrzały wzorzec (ICAO VDS, cyfrowa pieczęć BSI, francuski 2D-Doc). Automatyczne sprawdzanie wydruku ze wskazaniem zmienionego fragmentu opisano w latach 2006-2007 (Uniwersytet Genewski), a sprawdzanie wydruku telefonem - m.in. Fraunhofer SIT (2023) i SealClub (ETH Zurych). Treścią badawczą jest pomiar przy twardym kryterium: czy uczciwy znak nigdy nie wychodzi jako zmieniony, ile zmian jednego znaku wykrywa się wtedy na skanie i na zdjęciu, ilu uczciwych znaków obraz nie rozstrzyga i co zniekształca geometrię kartki - oraz założenia, które się przy tym nie utrzymały. Teza dowodowa: weryfikacja wykazuje, że sprawdzone wiersze wydruku są takie, jakie były w chwili pieczęci. Nie wykazuje, że ich treść jest prawdziwa, kto wystawił dokument ani że kartka nie jest kopią.

Metodyka. Jak w reszcie laboratorium: problem → stan techniki → falsyfikowalne kryterium → metoda → wynik (potwierdzony, obalony albo częściowy, z warunkami brzegowymi) → następny krok. Wynik negatywny jest wynikiem. Fałszywy alarm to uczciwy znak albo wiersz uznany za zmieniony. „Nierozstrzygnięty” znaczy, że obraz nie przesądza: takiego znaku weryfikator nie uznaje ani za zgodny, ani za zmieniony, tylko pokazuje go człowiekowi jako wątpliwy. Liczby pochodzą z notatek pomiarowych i raportów prób z 5-10 listopada 2026.

1. Kierunek 1 - pięć założeń, które się nie utrzymały

Problem. Pierwsze założenia linii - część z koncepcji z 31 października 2026, część z pierwszych dni pracy - nie były sprawdzone. Każde z nich, gdyby było fałszywe, dawałoby albo pozorną ochronę, albo fałszywe alarmy. Stan techniki (publikowany). Atak kopiujący: znak ukryty w dokumencie, który nie zależy od treści, można odczytać z chronionego dokumentu i tak samo nanieść na inny, bez znajomości klucza (Voloshynovskiy i in., SPIE 2006). Autokorekta OCR: w doświadczeniach Villána i in. (SPIE 2007) OCR odczytał podrobione słowo „aufhentication” jako „authentication” i fałszerstwo przeszło. BSI TR-03137 (cz. 1, wersja 3.0 z 2026 r., rozdz. 19) opisuje odtwarzanie danych OCR-em odpornym na błędy i zaleca pokazywanie człowiekowi każdego poprawionego znaku. Kryterium (falsyfikowalne). Założenie upada, gdy (1) istnieje atak, który je spełnia, a mimo to zmienia treść; (2) rachunek pokazuje efekt mniejszy niż rozdzielczość urządzenia; (3) pomiar w podanych warunkach daje odczyt nieczytelny albo wątpliwy tam, gdzie założenie obiecywało jednoznaczny. Metoda. Trzy założenia sprawdziliśmy analizą i rachunkiem: wiązanie treści przez geometrię strony, fizykę druku przy 10 pt i 600 dpi oraz rolę dolnej granicy czasu. Dwa pomiarem: OCR na 12 obrazach strony testowej (skany 150-600 dpi i zdjęcia telefonem, 6.11.2026) oraz trzy fonty o stałej szerokości znaków na renderach PDF tej samej strony przy 150 i 300 dpi (10.11.2026). Sposób odczytu i budowa kodu pozostają wstrzymane. Wynik. Żadne z pięciu założeń się nie utrzymało.

Następny krok. Brak - założenia zamknięte; (b) pozostaje rachunkiem. Status: pięć założeń zamkniętych: trzy analizą i rachunkiem, dwa pomiarem.

2. Kierunek 2 - zmiana jednego znaku na wydruku: zero fałszywych alarmów i cena w znakach nierozstrzygniętych

Problem. Najmniejsza zmiana treści to jeden znak: cyfra kwoty albo daty, przecinek zamieniony na kropkę. Czytnik, który ma ją wykryć ze skanu albo zdjęcia, nie może przy tym uznawać uczciwych znaków za zmienione: jeden fałszywy alarm na prawdziwym dokumencie podważa całą weryfikację. Pytanie: ile zmian jednego znaku wykrywa się przy zerze fałszywych alarmów i ilu uczciwych znaków obraz wtedy nie rozstrzyga. Stan techniki (publikowany). Prace z Genewy (Voloshynovskiy i in., 2006; Villán i in., 2007) wskazują zmieniony blok tekstu - słowo, wiersz albo akapit - po wydruku, skanie, kserokopii i faksie; w doświadczeniach z 2007 r. wykryto dodanie, usunięcie i zamianę znaku, ale podróbkę „aufhentication” przepuścił OCR. Fraunhofer SIT (Bugert, Heeger, Berchtold, IS&T Electronic Imaging 2023) sprawdza telefonem podpisane bloki tekstu odczytane OCR-em; każdą niezgodność rozstrzyga użytkownik, a praca nie podaje wyników liczbowych. SealClub (Ochoa, Toro-Pozo, Basin, ETH Zurych; arXiv 2022) uwierzytelnia dokument papierowy z krótkiego nagrania telefonem i porównaniem obrazów zaznacza miejsca podejrzane o fałszerstwo. Kryterium (falsyfikowalne). Zero fałszywych alarmów: żaden uczciwy znak nie może zostać uznany za zmieniony. Znak, którego obraz nie rozstrzyga, dostaje status „nierozstrzygnięty” i liczy się osobno, jako koszt. Zmieniony znak nie może zostać uznany za zgodny. Kryterium obala jeden fałszywy alarm albo jedna zmiana uznana za zgodną. Metoda. Strona testowa na dwóch kartkach A4. Pierwsza to dokument uczciwy. Na drugiej, rachunku, cztery wiersze wydrukowano inaczej, niż je zapieczętowano, każdy z jedną zmianą: przecinek na kropkę, 5 na 8, 3 na 8, 2 na 7; do tego próbki pisma od 7 do 12 pt. Wydruk: drukarka laserowa Samsung Xpress C430W. Skany: HP ScanJet Pro 2000 s2 z podajnikiem; 150, 200, 300 i 600 dpi w kolorze, 300 dpi w JPEG, w czerni i bieli oraz z kartkami obróconymi o 180°. Zdjęcia: Motorola Razr 50 Ultra, cała strona z góry i pod kątem przy słabszym świetle. Pomiar z 5.11.2026: 22 obrazy (18 skanów i 4 zdjęcia). Powtórka z 6.11.2026: 40 obrazów - skany dwóch wydań strony testowej, cztery zdjęcia i rendery PDF przy 150-600 dpi. Werdykty wierszy: 9.11.2026, 60 obrazów z trzech wydań strony, które różnią się tylko kodem (skany, rendery PDF i zdjęcia). Sposób odczytu i budowa kodu pozostają wstrzymane. Wynik. Kryterium spełnione. Fałszywe alarmy: 0 na 12 474 sprawdzeniach uczciwych znaków (22 obrazy, 5.11) i 0 na 22 680 uczciwych znakach (40 obrazów, 6.11). Zmiany jednego znaku na skanach: 36 z 36 wykrytych jako zmienione, za każdym razem z poprawnym odczytem tego, co wydrukowano. Na zdjęciach: zmienione cyfry 6 z 6, a przecinek zamieniony na kropkę nierozstrzygnięty w 2 z 2 przypadków, bo na zdjęciu całej strony ogonka przecinka nie widać. Na 40 obrazach wykryto 78 z 80 zmian; dwie pozostałe to ten sam przecinek na zdjęciach, nierozstrzygnięty. Cena: uczciwe znaki nierozstrzygnięte - na skanach 0,5-4 %, prawie wyłącznie pary znaków podobnych w foncie proporcjonalnym (l/I, i/I, j/J, ł/l, kropka i dwukropek); na zdjęciach 2-10 % na pierwszej stronie i 20-29 % na drugiej, gdzie leżą rozmyte drobne próbki 7-9 pt. Werdykty wierszy (60 obrazów): żaden uczciwy wiersz nie wyszedł jako niezgodny ani nieczytelny; zmienione wiersze wyszły jako niezgodne: 4 z 4 na skanach i renderach (27 obrazów) i 3 z 4 na zdjęciach (3 obrazy), gdzie czwarty, z przecinkiem, został nierozstrzygnięty. Warunki brzegowe: (a) czytnik rozwijaliśmy na tych samych obrazach, na których podajemy wynik; jego wcześniejsza wersja dała na renderze 150 dpi jeden fałszywy alarm (kropka w próbce 7 pt), który zniknął po poprawce czytnika - niezależnym sprawdzianem są dopiero nowe dokumenty (kierunek 4) i nowe wydruki; (b) zdjęcie całej strony wystarcza do cyfr, nie do drobnej interpunkcji. Następny krok. Próby ręczne na nowym wydruku (kierunek 4). Status: kryterium spełnione na obrazach strony testowej, z warunkami (a)-(b); koszt w znakach nierozstrzygniętych zmierzony.

3. Kierunek 3 - skaner z podajnikiem a telefon: geometria kartki i czytelność kodów

Problem. Weryfikacja ma działać ze skanu i ze zdjęcia telefonem. Oba urządzenia zniekształcają kartkę, a czytnik kodów w telefonie nie czyta każdego kodu. Zanim przyjmie się, że skan jest „lepszym zdjęciem”, trzeba zmierzyć, jak duże są te zniekształcenia i skąd pochodzą. Stan techniki (publikowany). ICAO Doc 9303, cz. 13 (wyd. 8, 2021) zakłada, że pieczęć sprawdzi nawet osoba bez przeszkolenia tanim sprzętem, np. aplikacją w smartfonie, i dla drukarek atramentowych zaleca moduł kodu co najmniej 0,3386 mm; BSI TR-03137 przyjmuje ten moduł jako wymóg. Fraunhofer SIT (2023) zastrzega, że odporność sprawdzania telefonem silnie zależy od jakości zdjęcia i wyprostowania dokumentu, nie podając liczb. Kryterium (falsyfikowalne). Intuicja „skan z podajnika odwzorowuje kartkę wierniej niż zdjęcie z ręki” upada, gdy odchyłka geometrii jest na skanach większa niż na zdjęciach. Odchyłkę przypisujemy podajnikowi, jeśli po obróceniu kartki o 180° zostaje w układzie skanera, a nie strony. Odczyt kodu oceniamy trójstopniowo: szybko, po długim celowaniu, wcale. Metoda. Punkty kontrolne rozmieszczone na kartce porównane z położeniem przewidzianym dla płaskiej kartki; odchyłka w milimetrach na papierze. Sprzęt jak w kierunku 2. Skaner: 18 obrazów z 5.11.2026 i dalsze przebiegi z 6.11.2026 na dwóch kolejnych wydrukach. Telefon: 4 zdjęcia całych stron z 5.11.2026 (JPEG 4096 × 3072). Kody 2D: dziewięć wariantów o module od 0,25 do 0,50 mm i różnych poziomach korekcji błędów; czytnik w aparacie telefonu, każdy kod osobno z bliska (5 i 6.11.2026), oraz narzędzie pomiarowe na całych obrazach skanów i zdjęć. Sposób odczytu i budowa kodu pozostają wstrzymane. Wynik. Intuicja upada. Skaner z podajnikiem: odchyłka średnio 0,12-0,24 mm na pierwszej kartce i 0,32-0,44 mm na drugiej, najwięcej 0,79 mm. Rośnie wzdłuż przesuwu papieru do ok. 0,7 mm i spada przy końcu kartki. Po obróceniu kartki o 180° zmienia kierunek w układzie strony, a w układzie skanera zostaje taka sama - pochodzi więc z podajnika, nie z drukarki. Między przebiegami zmienia się o ok. ±0,2 mm, a na dwóch kolejnych wydrukach średnie były podobne (0,14-0,21 mm i 0,31-0,37 mm). Telefon: średnio 0,16-0,20 mm, najwięcej 0,29-0,50 mm, przy rozdzielczości na kartce 271-339 dpi; zdjęcie nie ma zniekształcenia przesuwu papieru. Kody: ze skanów 150-600 dpi narzędzie pomiarowe odczytało z całego obrazu wszystkie kody poza najmniejszym przy 150 i 600 dpi; ze zdjęcia całej strony - tylko część, głównie większe. Czytnik w aparacie telefonu czytał szybko kody o mniejszej liczbie modułów, a gęstsze bardzo wolno albo wcale: 5.11 odczytał osiem z dziewięciu wariantów, w tym trzy dopiero po bardzo długim celowaniu; 6.11, gdy kody niosły więcej danych, trzech praktycznie nie odczytał (jeden raz, po bardzo długim celowaniu). Wyniki obu dni nie są w pełni spójne: kod o najniższym poziomie korekcji błędów 5.11 się nie odczytał, 6.11 tak. Kody leżące blisko siebie wymagały długiego celowania, bo czytnik bierze z kadru jeden kod. Wynik negatywny co do narzędzia: jedna z otwartych bibliotek do odczytu kodów czytała wszystkie kody z renderu PDF, a ze skanu 300 dpi tylko 4 z 9, i to dopiero z wyprostowanego wycinka; myliła się też przy ułamkowym rozmiarze modułu na ostrym obrazie. Do pomiaru czytelności jej nie używamy. Następny krok. Skany, zdjęcia i kserokopia nowego wydruku w próbach ręcznych (kierunek 4). Status: zmierzone 5-6.11.2026.

4. Kierunek 4 - model testowy z werdyktami ustalonymi przed próbą

Problem. Pomiar na stronie testowej sprawdza odczyt, ale nie całą drogę dokumentu - wydanie, kod, czas, weryfikację - ani zachowanie weryfikatora wobec fałszerstw zaplanowanych z góry. Żeby wynik nie dopasował się do tego, co akurat wyszło, oczekiwany werdykt każdej próby trzeba zapisać przed przebiegiem. Stan techniki (publikowany). ICAO Doc 9303, cz. 13 określa werdykt pieczęci: ważna albo nieważna, z powodem (m.in. błąd odczytu, nieznany certyfikat, nieważny podpis). Prototyp Fraunhofer SIT (2023) nie podaje wyników liczbowych. Wdrożony format też bywa zawodny: France Titres-ANTS napisała 30 września 2025 r., że 2D-Doc na zawiadomieniach podatkowych z 2025 r. daje błędy przy odczycie, i zaleciła złożenie innego dokumentu. Kryterium (falsyfikowalne). Katalog prób z oczekiwanym werdyktem każdej próby i kryteria odbioru przyjęte 10.11.2026, przed przebiegiem: żaden zmieniony wiersz nie dostaje „zgodny” (wyjątek przewidziany z góry: fałszerz, który ma to samo oprogramowanie i wydaje własną pieczęć - wiersze zgadzają się wtedy z jego pieczęcią, a chronią przed nim granice czasu, kierunek 1 (e)); żaden uczciwy wiersz nie dostaje „niezgodny”, a na renderach także „nieczytelny”; każdy fałszywy dowód czasu jest niepotwierdzony, a prawdziwy potwierdzony; złośliwe dane wejściowe nie wywołują awarii ani odrzucenia bez komunikatu. Kryterium obala jedna weryfikacja niezgodna z oczekiwanym werdyktem. Metoda. Model w Dockerze z pełną drogą dokumentu: wystawca testowy, prawdziwa kryptografia, testowa usługa czasu zamiast produkcyjnej, weryfikacja tą samą drogą co w przeglądarce. Trzy wzory dokumentów (dwa rodzaje certyfikatów i rachunek), 75 dokumentów, 120 prób, 198 weryfikacji obrazów stron przy 150 i 300 dpi. Fałszerstwa powstają dwojako: jako PDF z innym tekstem niż zapieczętowany i jako zmiana obrazu po renderze (wklejenie, wymazanie, zamiana). Ten sam przebieg na dwóch rendererach PDF: w Windows (Windows.Data.Pdf) i w Dockerze pod Linuksem (poppler 22.12, czysta budowa z repozytorium, bez sieci). Do tego odporność: milion losowych i złośliwych tekstów kodu, 200 tys. złośliwych danych wejściowych weryfikacji, 22 obrazy skrajne (m.in. puste, sam szum, bardzo małe i bardzo duże, obrócone, lustrzane, w negatywie) i 21 przypadków granic formatu, część także w wersji weryfikatora przeznaczonej dla przeglądarki; oraz przegląd, w którym każdy bajt zawartości kodu przerobiono na kilka sposobów, a kod wygenerowano na nowo. Sposób odczytu i budowa kodu pozostają wstrzymane. Wynik. 198 z 198 weryfikacji zgodnych z oczekiwanym werdyktem, w obu środowiskach tak samo. Odporność: zero awarii i zero odrzuceń bez komunikatu. Żadna z 5232 przeróbek zawartości kodu nie dała pełnego potwierdzenia. Model znalazł sześć błędów czytnika, których pomiar na obrazach strony testowej nie mógł wykazać, bo tamte obrazy nie zawierały takich przypadków:

Wszystkie poprawiliśmy, każdy z testem; na 62 obrazach z wcześniejszych pomiarów (skany, rendery PDF, zdjęcia) statusy wierszy po poprawkach się nie zmieniły. Po pierwszym przebiegu poprawiliśmy też cztery oczekiwane werdykty (10.11.2026) - dwa dotyczyły przerobionego kodu i dopisków w wierszu, dwa sprawdzania czasu. To odstępstwo od reguły „werdykt przed próbą”, więc 198 z 198 to stan po tych poprawkach i po poprawkach czytnika. Znane niedoskonałości: przy 150 dpi wklejona cyfra 8 została odczytana jako „S” (werdykt „niezgodny” był poprawny), a nie każdy drobny dopisek przy znakach interpunkcyjnych jest przy 300 dpi wykrywany. Próby automatyczne to rendery PDF i zmiany obrazu, nie wydruki. Model nie dowodzi braku błędów; daje mierzalny wynik na katalogu prób ustalonym z góry.

Następny krok. Próby ręczne według gotowej listy: 12 stron, każda jako osobny dokument z własną pieczęcią i oczekiwanym werdyktem - skany, zdjęcia, kserokopia, wydruk w skali, poprawki długopisem i taśmą, doklejone obce kody, na końcu kartka pognieciona. Potem ocena prezentacji werdyktu i niezależny przegląd kodu weryfikacji. Status: część automatyczna zakończona 10.11.2026.

Status kierunku. Zamknięte: pięć założeń z kierunku 1. Zmierzone: wykrywanie zmiany jednego znaku przy zerze fałszywych alarmów, koszt w znakach nierozstrzygniętych, geometria skanera i telefonu oraz czytelność kodów. Model testowy przeszedł część automatyczną: 198 z 198. Ograniczenia pomiaru: jedna drukarka, jeden skaner, jeden telefon i łącznie 8 zdjęć; „podróbki” wydrukował autor. Najbliższe kroki: próby ręczne - poprawki długopisem, kserokopia, wydruk w skali - i niezależny przegląd kodu.


Dowód czasu

Ten tekst został zahaszowany i ostemplowany przy publikacji. Do sprawdzenia potrzebne są oba pliki: stempel dowodzi, że w tamtej chwili istniał dokładnie jeden ciąg bajtów, a tym ciągiem jest wyłącznie źródło poniżej. Każda późniejsza zmiana przesuwa skrót i zrywa zgodność — i o to właśnie chodzi.

· @390.27 · 2026-W46

SHA-256 ostemplowanego tekstu: d247398122b1e7a2092a1cce53dcf73b0c527482b0266e75e9f8661ca4d19770

Sprawdzenie: ots verify <dowód> --file <źródło>