Metadane da się skasować. Piksele zostają
Miesiąc temu opisaliśmy standard, który zapisuje Twoją wolę w metadanych pliku. Zaraz potem dostaliśmy pytanie, na które trzeba było odpowiedzieć uczciwie:
„A co, jeśli ktoś po prostu otworzy plik w byle czym i zapisze ponownie? Metadane znikną."
Znikną. Jeden zapis w dowolnym edytorze i po deklaracji nie ma śladu. Zrzut ekranu robi to samo, tylko szybciej.
Więc zeszliśmy o poziom niżej — tam, gdzie skasować się nie da.
Numer, którego nie widać
Twoja praca niesie teraz numer wpleciony w same piksele. Nie w nagłówek pliku, nie w komentarz obok obrazka. W obraz.
Gołym okiem tego nie widać: zmiana jasności sięga około dwóch jednostek na dwieście pięćdziesiąt pięć, czyli poniżej progu, na którym oko cokolwiek zauważa. Sprawdzaliśmy to na gładkich gradientach, bo właśnie tam każda ingerencja rzuca się w oczy najbardziej.
Za to przeżywa rzeczy, które kasują metadane:
- przycięcie — wycięliśmy połowę obrazu i numer nadal się odczytuje,
- przeskalowanie — zmniejszenie do 60% pierwotnego rozmiaru,
- kompresję — zapis do formatu stratnego,
- zrzut ekranu — łącznie ze zdjęciem monitora telefonem.
Najostrzejszy test to wszystko naraz: wycięta połowa plus zmniejszenie. Praca dalej wskazuje swój certyfikat.
Dlaczego akurat kadrowanie
Bo tak wygląda kradzież grafiki w praktyce. Rzadko ktoś podmienia metadane — częściej po prostu przycina obrazek tak, żeby podpis wypadł poza kadr, i wrzuca na swój profil.
Sprawdziliśmy trzy różne podejścia do znakowania, mierząc jednym zestawem przeróbek. Jedno z nich było mniej widoczne i szybsze od tego, które wybraliśmy — a odpadło, bo po przycięciu przestawało wykrywać znak w ogóle. Praca obcięta wyglądała przy nim jak nigdy nieoznaczona, co dla dowodzenia swoich praw jest gorsze od odczytu z pomyłkami.
Zbudowaliśmy też własne rozwiązanie od zera. Działało — i przegrało w porównaniu, więc leży w repozytorium jako rzecz zmierzona, nie jako rzecz wdrożona. Wiedza z tamtego tygodnia pozwoliła ocenić gotowe w kilka godzin zamiast tygodni.
Podpis widoczny, jeśli chcesz
Numer w pikselach działa niezależnie od tego, czy praca ma cokolwiek widocznego. Ale część twórców chce, żeby było widać — i tu masz wybór przy pobieraniu pliku z panelu certyfikatu:
- bez podpisu — sam numer w pikselach, praca wygląda dokładnie tak, jak ją narysowałeś,
- kod QR — kwadrat w rogu prowadzący do strony certyfikatu, telefon odczyta go bez przepisywania,
- napis — numer certyfikatu wzdłuż dolnej krawędzi, czytelny także ze zdjęcia ekranu,
- adres — sam odnośnik, najdyskretniejszy z widocznych.
Każdy w trzech rozmiarach. Pliku ze stemplem u siebie nie trzymamy: powstaje w chwili pobrania i leci prosto do Ciebie. Oryginał w pełnej rozdzielczości zostaje Twój.
Data, której nie przestawimy nawet my
Tu dochodzimy do rzeczy, o której warto powiedzieć wprost, bo dotyczy zaufania do nas samych.
Do wczoraj data na certyfikacie była naszym słowem. Rejestr prowadzi jedna firma, więc wpisana przez nią data jest świadectwem wystawionym samemu sobie. W poważnym sporze druga strona miała prawo powiedzieć: „Moonlight mógł tę datę wpisać wczoraj" — i formalnie miałaby rację.
Od teraz skrót Twojego pliku trafia do łańcucha bloków Bitcoina. Czas niesie wtedy nagłówek bloku, którego nie cofnie ani nie przestawi nikt. My też nie.
Trzy rzeczy, które to znaczą w praktyce:
Nie kosztuje nic. Tysiące skrótów jedzie w jednym zapisie, więc nie płacisz za to ani grosza i my również.
Nic Twojego tam nie trafia. Na łańcuch idzie wyłącznie skrót — trzydzieści dwa bajty, które nie mówią nic nikomu, kto nie ma Twojego pliku. Ani obrazu, ani nazwiska, ani adresu. Prawo do usunięcia danych zostaje nienaruszone, bo dane trzymamy u siebie i u siebie je kasujemy.
Działa bez nas. Dowód to plik ważący niecały kilobajt. Pobierasz go ze strony certyfikatu i możesz sprawdzić datę własnym narzędziem — także wtedy, gdyby Moonlight przestał kiedyś istnieć.
Jedno zastrzeżenie, żeby było jasno: ten dowód mówi o czasie, a nie o autorstwie. Potwierdza, że plik o tym skrócie istniał przed danym blokiem. Kto go zrobił, mówi Twoje oświadczenie i podpis na certyfikacie.
Twoje warunki w języku cudzych narzędzi
Ostatnia rzecz z tej partii dotyczy tego, co ma się stać, kiedy Twoja praca trafi do programu, który o Moonlight nigdy nie słyszał.
Warunki, które ustawiasz — czy wolno kalkować, przerabiać, uczyć na tym modeli — zapisujemy teraz także w C2PA, standardzie, do którego zaglądają narzędzia dużych producentów. Twoja decyzja w sprawie trenowania modeli ląduje dokładnie w tym polu, którego one szukają.
Warto znać jeden szczegół tego standardu, bo omal nas nie kosztował błędu. Wartość „wolno, ale na warunkach" bez podanych warunków jest tam traktowana jak zwykły zakaz. Zgoda warunkowa zapisana po najmniejszej linii oporu zamieniłaby się w swoje przeciwieństwo, wbrew temu, co wybrałeś. Dlatego każda taka deklaracja niesie u nas adres Twojego certyfikatu, pod którym stoją warunki w całości.
I jeszcze jedno: kiedy nie zajmujesz stanowiska, nie wpisujemy tam niczego. Brak decyzji zostaje brakiem decyzji. Wpisanie czegokolwiek byłoby przypisaniem Ci wyboru, którego nie zrobiłeś.
Co dalej
Podpisywanie manifestów C2PA naszym własnym certyfikatem czeka na formalności po stronie konsorcjum. Struktura jest gotowa i wtedy pojedzie do podpisu bez żadnej zmiany.
Moonlight Animate dostanie odczyt znaku wprost z otwieranego pliku — otwierasz cudzą grafikę i od razu widzisz, czy ma certyfikat i na jakich warunkach wolno jej użyć.
A jeśli publikowałeś pracę wcześniej: wszystkie dotychczasowe certyfikaty dostały numer i znak wstecz. Nic nie trzeba robić.