Program, który poznaje pracę po samych pikselach
Moonlight Animate potrafi od dziś odczytać certyfikat z obrazka bez wysyłania go gdziekolwiek. Otwierasz cudzy plik — bez opisu, bez metadanych, bez nazwy autora — a program mówi, czyja to praca i co wolno z nią zrobić. Numer siedzi w samych pikselach i odczytuje się na Twoim komputerze.
Dlaczego to jest różnica, a nie usprawnienie
Do wczoraj wyglądało to tak: program brał obrazek, wysyłał jego pomniejszoną kopię na nasz serwer i pytał „poznajesz?". Działało, ale miało dwie wady. Twoja praca wychodziła na zewnątrz przy każdym sprawdzeniu, a bez internetu nie działało nic.
Teraz program czyta trzydzieści dwa bity wprost z obrazu i pyta rejestr wyłącznie o numer. Na serwer leci jedna liczba. Obrazek zostaje u Ciebie.
Cztery zgody, które program widzi także offline
W numerze zapisane są cztery decyzje autora: czy wolno kalkować, użyć jako referencji, przerabiać i użyć do trenowania modeli. Program odczytuje je z pliku nawet wtedy, gdy nie ma połączenia z siecią — a to właśnie moment, w którym dotąd nie wiedział nic, bo opis z warunkami wycina prawie każdy serwis.
To ostrzeżenie, nie wyrok. Gdy jest internet, rozstrzygają pełne, aktualne warunki z rejestru: autor mógł je zmienić po tym, jak dana kopia pliku powstała.
Znak wchodzi też przy eksporcie
Gdy eksportujesz pracę, która ma certyfikat, plik wychodzi z programu z już wplecionym numerem. W pełnej rozdzielczości i bez widocznej zmiany obrazu. Wcześniej znak nakładał serwer, więc dotyczyło to tylko plików pobranych ze strony; teraz obejmuje wszystko, co zapisujesz u siebie.
Co pokazał test
Sprawdziliśmy odczyt na prawdziwym certyfikacie i przy okazji znaleźliśmy własny błąd.
Wycięliśmy z pracy fragment o powierzchni dziewięciu procent. Numer wrócił poprawny, ale kontrola poprawności odrzucała cały odczyt — psuł się jeden bit z tych czterech, które przenoszą zgody, i przez niego wylatywało wszystko, łącznie z prawidłowo odczytaną tożsamością pracy. Czyli dokładnie ta sytuacja, dla której cały mechanizm powstał.
Dało się to naprawić czysto, bo liczby układają się tak, że przy znanym numerze każdy możliwy zestaw zgód daje inną sumę kontrolną. Jest więc dokładnie jedna pasująca — program nie zgaduje, tylko rozwiązuje równanie. Po poprawce praca jest rozpoznawana we wszystkich sprawdzonych wariantach: przycięta do dziewięciu procent, zmniejszona do jednej czwartej, przepuszczona przez kompresję. Gdy odczyt wymagał ratunku, program mówi to wprost i nie pokazuje wtedy zgód — bo to akurat one były uszkodzone.
Jedna liczba warta osobnego zdania: ten sam plik przepuszczony przez program na komputerze i przez nasz serwer dał identyczny wynik co do bitu. Dwie niezależne implementacje, napisane w różnych językach, zgadzają się na przerobionym obrazku. To znaczy, że wynik nie zależy od tego, gdzie sprawdzasz.