Jak oznaczać treści AI, by nie dostać kary? Zapisz się na bezpłatne szkolenie o AI Act

Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!

Deepfake czy prawda? Jak wykrywać tekst, obrazy i wideo wygenerowane przez AI

09 sierpnia 2026, 20:14 | Aktualności, Teksty | 0 komentarzy

2 sierpnia weszły w życie kolejne przepisy AI Act, kładące nacisk na oznaczanie treści w Internecie. Co jednak, jeśli ktoś tego obowiązku nie dopełni? Pamiętajmy, że cyberzbój na przepisy prawa nie patrzy. Wykrywanie deepfake’ów zaczyna się od zabezpieczenia oryginału i od pytania: co konkretnie próbujemy wykryć? Wygenerowany obraz, podmienioną twarz, sklonowany głos, film wyjęty z kontekstu, a może tekst napisany przez LLM?

TL;DR

  • Nie ma jednego detektora tekstu, obrazu, wideo i głosu, któremu można ufać bezwarunkowo.
  • Sprawdzaj trzy niezależne warstwy: pochodzenie (watermark, C2PA), kontekst publikacji i klasyfikatory AI.
  • SynthID wykryty to znak wodny narzędzi Google, a nie dowód oszustwa. SynthID niewykryty to brak sygnału, a nie dowód autentyczności.
  • Sam procent z detektora tekstu nie jest podstawą do oskarżenia autora.
  • Materiału z incydentu nie wrzucaj do publicznych narzędzi bez sprawdzenia retencji i jurysdykcji.

13 sierpnia o godz. 10:00 wpadajcie na bezpłatne szkolenie Tomka Turby Jak oznaczać treści AI, by nie dostać kary? AI Act na przykładach. Na warsztat weźmiemy realne case’y i pokażemy, kiedy oznaczać, a kiedy nie ma takiej potrzeby. Przy okazji dowiecie się, jak wykrywać takie treści, jeśli niektórzy “zapomną” wspomnieć, że AI “maczała w nich palce” 😉.

Zapisuję się

Co to tak naprawdę jest deepfake?

W potocznym użyciu “deepfake” stał się workiem na wszystko, co wygląda podejrzanie. Warto rozdzielić pięć przypadków:

  1. Treść całkowicie syntetyczna, np. “relacja” z wydarzenia, które się nie odbyło. 
  2. Deepfake osoby, czyli podmieniona twarz, usta albo głos, np. “prezes” zlecający przelew na wideokonferencji. 
  3. Materiał hybrydowy, gdzie prawdziwe zdjęcie zmieniono częściowo (generative fill, podmienione tło). 
  4. Cheapfake, czyli montaż, kadrowanie lub fałszywy opis, np. stary film podany jako dzisiejsze wydarzenie. 
  5. Tekst wspomagany AI, gdzie autor napisał tezy, a model wygładził język. 

Jednak w każdym z tych przypadków detekcja może być trudna. Bo skutek jest praktyczny.  Detektor od face swapu poprawnie zwróci “brak deepfake’a” dla filmu wygenerowanego przez model text-to-video. Wynik mieści się w zakresie narzędzia, a mimo to łatwo odczytać go jako “film prawdziwy”. Zatem na starcie przekazuję Wam ważne stwierdzenie…

Detektor nie jest wyrocznią

NIST w opracowaniu o ryzyku treści syntetycznych dzieli rozwiązania na śledzenie pochodzenia i detekcję, zaznaczając, że żadna z tych technik osobno nie wystarcza. Mamy zatem trzy sygnały do weryfikacji: pochodzenie (Content Credentials, znak wodny, plik oryginalny z urządzenia), zawartość (anomalie z klasyfikatorów AI) i kontekst (kto opublikował, kiedy i skąd ma materiał – typowy OSINT).

Najbardziej trafny wniosek dla przypadku powstaje wtedy, gdy warstwy sobie przeczą: plik ma manifest C2PA z wpisem trainedAlgorithmicMedia i znak wodny Google AI, a wydawca podaje go jako nagranie z kamery. Problemem wtedy nie jest już “dziwna dłoń”, tylko udokumentowana sprzeczność co do pochodzenia. Sam wynik “92% że to AI” bez wersji modelu, progu i kalibracji jest tylko tropem, bo 92% w jednym produkcie nie znaczy tego samego, co w drugim. Dodatkowo detektor o czułości 90% i swoistości 95%, przy 5% materiałów syntetycznych w puli 10 000 plików, da około 450 trafień i około 475 fałszywych alarmów (na podstawie własnych badań tak stwierdzam). Ponad połowa alarmów będzie błędna. 

Jaki powinien być minimalny workflow śledczy?

Zanim otworzysz pięć zakładek ze skanerami, zabezpiecz materiał zgodnie z dobrymi praktykami OSINT. Przy incydencie albo sprawie sądowej łatwo o sytuację, w której pierwsza analizująca osoba zniszczyła metadane lub zachowała tylko kopię z komunikatora. Oczywiście, jeżeli po prostu surfujesz przez meandry Internetu i nie robisz analizy – nie musisz zachowywać się jak analityk OSINT.

1. Zdobądź najlepszą wersję pliku – plik pobrany bezpośrednio bije nagranie ekranu, a oryginalny załącznik bije film przesłany przez WhatsAppa. Źródło, link i czas otrzymania też warto mieć.

2. Policz hash i pracuj na kopii – hash nie powie, czy film jest prawdziwy, ale wykaże, jaki plik analizowaliśmy.

Listing 1. Zabezpieczenie oryginału z haszem pliku

mkdir -p case/{original,working,frames,reports}
cp --preserve=all podejrzane.mp4 case/original/
sha256sum case/original/podejrzane.mp4 | tee case/reports/SHA256SUMS
cp --preserve=all case/original/podejrzane.mp4 case/working/

3. Sprawdź metadane i pochodzenie – zaufany manifest C2PA to wartościowy sygnał, a jego brak to po prostu brak sygnału. Od dawna platformy społecznościowe usuwają metadane, a i starsze urządzenia niczego nie zapisują.

Listing 2. Weryfikacja metadanych pliku

exiftool -G1 -a -s case/original/podejrzane.mp4 > case/reports/exiftool.txt
ffprobe -v error -show_format -show_streams -of json \
  case/original/podejrzane.mp4 > case/reports/ffprobe.json
c2patool case/original/podejrzane.mp4 --info

4. Ustal kontekst – subiektywnie to ounkt najważniejszy i najbardziej podatny na błędy poznawcze. Znajdź najstarszą publikację, poszukaj innych źródeł pokazujących to samo wydarzenie, zrób reverse image search na klatkach (np. tineye lub pimeyes), zweryfikuj pogodę, cienie i chronologię być może z archiwum. W przypadku incydentu, ataku – przy rzekomym poleceniu przelewu kontakt innym kanałem musi wyprzedzić analizę pikseli.

5. Uruchom dwa różne typy testów (pochodzenie, kontekst, klasyfikator) i zapisz warunki: narzędzie, datę, wersję modelu, hash wejścia, ustawienia, pełną odpowiedź JSON oraz to, czy usługa dostała oryginał, czy kopię. Dwa klasyfikatory uczone na podobnych zbiorach nie są niezależnymi dowodami.

Obrazy wygenerowane lub zmienione przez AI

W 2026 roku percepcja przestała wystarczać. W materiałach AI nie ma już sześciu palców ani rozjeżdżonej geometrii np. napisów na kubku sekuraka. Jakąś czujkę z tyłu głowy nadal mamy, bo wiele zdjęć ma w sobie “coś”, ale bez narzędzi tych niuansów nie wychwycimy już tak łatwo.

Zaczynamy jak wyżej, od metadanych (exiftool, magick identify -verbose, c2patool), i zestawiamy je z deklarowanym źródłem. Zdjęcie “prosto z aparatu” ze śladami eksportu z generatora wymaga wyjaśnienia. Brak EXIF nie jest jednak dowodem na AI, bo serwisy rutynowo czyszczą metadane, a nazwa aparatu nie jest gwarancją, bo da się ją dopisać.

Oznaczanie w Gemini i SynthID

SynthID to mechanizm znakowania wodnego od Google DeepMind. Znak wodny trafia bezpośrednio w obraz, wideo, audio lub tekst z narzędzi Google i ma przetrwać kompresję, skalowanie czy zmianę liczby klatek, choć po wielu modyfikacjach potrafi stać się niewykrywalny. W publicznym Gemini zweryfikujesz obraz, wideo i audio. Wrzucamy plik i pytamy takim promptem:

Zachowuj się jak super analityk czyli Tomek Turba. Sprawdź, czy ten plik zawiera watermark SynthID albo poprawne Content Credentials. Oddziel wynik dotyczący SynthID od wniosków na podstawie samych metadanych i wyglądu materiału. Czy materiał to deepfake? Określ skalę procentową.

Wykryty SynthID oznacza, że całość lub fragment powstał albo był edytowany w modelu od Google. Niewykryty oznacza tylko tyle, że pliku nie rozpoznano. Mógł powstać w innym modelu albo być mocno przerobionym materiałem Google. Wyniku niejednoznacznego nie zamieniamy w “raczej prawdziwe”. Gemini obsługuje też Content Credentials, więc łączy znak wodny z podpisaną historią pliku. To nadal nie jest test prawdziwości zdarzenia bo  materiał AI może być jawną ilustracją, a autentyczne zdjęcie może mieć fałszywy podpis.

Dobre narzędzia detekcji obrazu czyli Hive AI i Copyleaks

Hive AI uruchamia dla obrazu i wideo dwa modele: pierwszy sprawdza, czy materiał wygenerowała AI, drugi szuka deepfake’a twarzy. Odpowiedź zawiera klasy, wynik pewności i prawdopodobny silnik źródłowy.

Listing 3. Korzystanie z narzędzia The Hive przez API

curl --request POST \
  --url https://api.thehive.ai/api/v2/task/sync \
  --header "authorization: token ${HIVE_API_KEY}" \
  --form 'media=@podejrzane.jpg' | jq .

Dla dłuższego wideo praktyczniejszy będzie endpoint asynchroniczny z funkcją callbak. Uważałbym jednak na atrybucję generatora bo to nadal klasyfikacja przez kolejne narzędzie, a nie odczyt podpisu. Hint dla analityka: w raporcie nie pisz “plik utworzono w Midjourney”, tylko “Hive wskazał Midjourney jako najbardziej prawdopodobne źródło”.

Rys. 1. Scoring w TheHive.AI 

Copyleaks działa synchronicznie i zwraca wynik jednoznaczny w formacie “AI lub człowiek”, maskę obszarów syntetycznych oraz odczyt C2PA.

Listing 4. Wykorzystanie Copyleaks poprzez API

SCAN_ID="img-$(uuidgen)"
curl -X POST \
  "https://api.copyleaks.com/v1/ai-image-detector/${SCAN_ID}/check" \
  -H "Authorization: Bearer ${COPYLEAKS_TOKEN}" \
  -F 'image=@podejrzane.jpg' -F 'filename=podejrzane.jpg' \
  -F 'sandbox=false' -F 'model=ai-image-1-ultra' | jq .

Tryb sandbox=true zwraca mock, więc nie używaj go do oceny prawdziwego materiału. Maska pikselowa przydaje się przy materiale hybrydowym, ale wymaga oględzin, bo kompresja, odszumienie, tryb HDR i upscaling zostawiają ślady podobne do generatywnych.

Rys. 2. Copyleaks AI detektor w akcji – prezentacja obszarów wygenerowanych i prawdziwych

Lista “policz palce i zęby” traci wartość, ale własne oczy nadal wskażą fragment do analizy. Patrzymy w szczególności na: ciągłość krawędzi i obiektów zasłoniętych, cienie i odbicia w szkle, metalu oraz oczach, powtarzalne tekstury, spójność logotypów i lokalne różnice w ostrości. Przynajmniej mi to zawsze daje szybki wynik.

Detekcja wideo

Wideo w analizie jest trudniejsze bo kontener, strumienie, setki klatek i zwykle osobny tor audio. Jeden wynik dla całego filmu potrafi ukryć fakt, że zmanipulowano trzy sekundy albo jedną twarz. Dlatego rozbijamy je na warstwy.

Listing 4. Wykorzystanie ręcznych narzędzi do własnej oceny

# Klatki: jedna na sekundę oraz przy zmianie sceny
ffmpeg -hide_banner -loglevel warning -i case/working/podejrzane.mp4 \
  -vf 'fps=1,scale=1280:-2' -q:v 2 case/frames/fps1_%06d.jpg
ffmpeg -hide_banner -loglevel warning -i case/working/podejrzane.mp4 \
  -vf "select='gt(scene,0.28)',scale=1280:-2" -fps_mode vfr -q:v 2 \
  case/frames/scene_%05d.jpg

# Audio do osobnej analizy głosu
ffmpeg -hide_banner -loglevel warning -i case/working/podejrzane.mp4 \
  -vn -ac 1 -ar 16000 case/working/audio.wav

Klatki analizujemy jak obrazy, audio jak osobny materiał. Sprawdzamy synchronizację ust, mruganie, spadki jakości przy ruchu głowy, zarys twarzy, włosy i skoki szumu. Pojedynczy artefakt niczego nie przesądza, ale wzorzec powtarzalny w wielu klatkach już tak.

Narzędzia i ich rzeczywisty zakres

Poza opisanymi wyżej Gemini z SynthID (jako sygnał pochodzeniowy) i Hive AI (dwa modele plus atrybucja generatora) warto znać:

Deepware Scanner – manipulacja twarzy, głównie face swap. Skaner webowy (limit 10 minut, min. 1920 x 1080) oraz CLI wymagające CUDA. Nie analizuje głosu, a przy filmie bez twarzy “no deepfake detected” nic nie będzie znaczył.

Copyleaks AI Video – ocena czy wideo jest syntetyczne w całości lub częściowo, wynik w osi czasu. Asynchronicznie podajemy URL i webhook, dostajemy overallAIRatio (od 2 sekund do godziny, do 512 MiB, min. 360 x 360 i 16 FPS). Dane opuszczają twoje środowisko, więc waliduj sekret webhooka.

DeepFake-O-Meter – kilka niezależnych modeli badawczych z Uniwersytetu w Buffalo. Jeśli jeden zwraca 97%, drugi 12%, a trzeci nie znajduje twarzy, nie uśredniaj tego do 54%. Rozbieżność jest ważną informacją, ale jeżeli wybierzesz “wszystkie” modele do analizy to uśredni Ci, że to nie fejk jak poniżej:

Rys. 3. Przekłamany wynik Deepfake-o-meter

InVID-WeVerify – analizuje kluczowe klatki, metadane, wykonuje reverse image search, oraz filtrowanie. Zestaw weryfikacyjny, nie klasyfikator, i dlatego wyłapuje przypadek niewidoczny dla skanera: prawdziwy film z 2022 r. opisany jako dzisiejszy atak. Kłamie zatem kontekst, a nie piksele.

Rys. 4. Przykład z InVid-WeWerify

DeepfakeBench – lokalny framework z 36 metodami, w tym ośmioma detektorami wideo. Dobry do benchmarku on-prem, bezużyteczny przy jednym podejrzanym MP4 z Teamsa (szkoda czasu).

Tekst, czyli najbardziej ryzykowna kategoria

Analiza tekstu w 2026 r. jest najtrudniejsza. Większość płatnych narzędzi tekstowych GenAI ma funkcję “zhumanizuj” co oznacza, że model wielokrotnie potrafi parafrazować zdania. Detektor tekstu niestety nie ma pikseli ani kodeka. Szuka wzorców statystycznychj z modelu jak przewidywalność, rozkład tokenów, stylometrię danych modeli. Człowiek może pisać przewidywalnie, model chaotycznie, a tekst bywa tłumaczony, redagowany i parafrazowany. Staje się wtedy niewykrywalny.

Badanie opublikowane w “Patterns” wykazało bias detektorów wobec osób, dla których angielski nie jest językiem ojczystym: średnio 61,22% prac TOEFL napisanych przez ludzi oznaczono jako AI. Praca z NeurIPS pokazała, że parafraza obniżyła skuteczność DetectGPT z 70,3% do 4,6% przy 1% false positive rate. Pamiętacie, jak OpenAI wycofało własny klasyfikator w 2023 r.? Mój wniosek wydaje się zatem oczywisty – wynik detektora tekstu nie może być samodzielną podstawą do ukarania pracownika, ucznia czy dostawcy…

Z narzędzi to wcześniej wspomniany Copyleaks AI Text Detector obsługuje ponad 30 języków, w tym polski. Po pobraniu tokenu z id.copyleaks.com/v3/account/login/api (ważny 48 godzin) skanujemy plik bez ręcznego składania JSON-a:

Listing 5. Copyleaks do tekstu po API

jq -Rs '{text: ., sandbox: false}' artykul.txt | curl -sS -X POST \
  "https://api.copyleaks.com/v2/writer-detector/text-$(uuidgen)/check" \
  -H "Authorization: Bearer ${COPYLEAKS_TOKEN}" \
  -H 'Content-Type: application/json' --data-binary @- | jq .

Również wcześniej wspomniany Hive Text Detection dzieli tekst na fragmenty po 2048 znaków i punktuje każdy osobno. Jednak uwaga, ta granica nie pokrywa się z granicami autorstwa: jeden segment może zawierać cytat, kod, fragment regulaminu i komentarz autora i nie będzie to potwierdzenie pochodzenia “generatywnego AI”.

Za to Google udostępnia też referencyjną implementację SynthID Text, wprost opisaną jako badawcza. 

Ostatecznie przy tekście, wynik detektora to wskazanie fragmentów do sprawdzenia. Mocniejszym dowodem będą: historia wersji w Google Docs, zapisy Git albo DMS, szkice i ścieżka redakcyjna, logi użycia zatwierdzonych narzędzi oraz rozmowa o tezach i źródłach. W tekście technicznym bardziej interesuje mnie zmyślony numerek CVE lub paragraf z kodeksu który nie istnieje niż akapit brzmiący “zbyt równo”.

Jak interpretować sprzeczne wyniki

Rys. 6. Matryca sprawdzeń różnymi narzędziami (wygenerowane przez AI z mojej głowy)

Jakbym miał Wam podpowiedzieć jak analizować różne przypadki to zebrałem te które rozpatruje najczęściej:

  • SynthID wykryty, Hive też wskazuje AI. Mamy treść z Google AI. Osobno oceniamy, czy użycie było jawne i czy materiał wprowadza w błąd.
  • Jeden skaner pokazuje 98%, pozostałe są negatywne. Werdykt powinien być: nierozstrzygnięte. Sprawdzamy format wejścia, kompresję, obecność twarzy, zakres narzędzia i wersję modelu, a być może i szukamy drugiego źródła.
  • Poprawne Content Credentials z aparatu, a detektor wskazuje AI. Weryfikujemy podpis, łańcuch C2PA i historię edycji: prawdziwe zdjęcie może mieć dodany później element AI albo trafić na fałszywy alarm.
  • Deepware nie znalazł deepfake’a, ale film wygląda syntetycznie. Sprawdzamy, czy w materiale w ogóle jest twarz i face swap, po czym sięgamy po narzędzie do AI-generated video (TheHive np.). Deepware odpowiedział na inne pytanie niż to, które mieliśmy w głowie…

Bezpieczeństwo i prywatność analizy

Skaner deepfaków online przetwarza dane bardzo wrażliwe: twarz, głos, dokumenty, materiał dowodowy. Powinieneś pamiętać o czterech zasadach:

  • Nie wysyłaj oryginału do publicznego demo, jeśli zawiera tajemnicę przedsiębiorstwa, dane klientów, NCII albo materiał z incydentu. Przekaż kopię roboczą i zanotuj, co zmieniłeś. Wcześniej sprawdź zasady retencji, uczenia modeli i usuwania plików w danym serwisie.
  • Dla API używaj krótkotrwałych, podpisanych URL-i i osobnego sekretu webhooka. Kluczy nie zostawiaj w skryptach i ticketach.
  • Uruchamiaj ffmpeg, kodeki i modele z nieznanymi plikami w odizolowanym środowisku, bo parser multimediów też bywa podatny.
  • W sprawie prawdziwej analizy OSINT utrzymuj chain of custody: hash, czas, osobę analizującą, narzędzia i transformacje.

Co wybrać w praktyce

Co mogę doradzić to popróbuj. Zbierz własny zestaw testowy, materiały z kilku generatorów, przykład face swap, zdjęcia wysłane po komunikatorze, polskie teksty ludzkie i mieszane i sprawdź dla wyżej wymienionych narzędzi.

Na co dzień i na szybko to polecam dla obrazu ExifTool i c2patool, SynthID oraz Content Credentials w Gemini, dalej Hive, Copyleaks lub DeepFake-O-Meter, na końcu reverse search (tineye i pimeyes). Dla detekcji wideo to ręcznie ffprobe, klatki i audio, kontekst w InVID, potem Hive, Deepware lub DeepFake-O-Meter, a przy większej skali Copyleaks Video API. Dla tekstu Copyleaks i Hive wskażą fragmenty do sprawdzenia, ale decyzję opieraj na historii wersji i spójności merytorycznej jeżeli to możliwe.

Dwóch rzeczy nie rób nigdy. Nie traktuj braku znaku wodnego jako dowodu autentyczności ani procentu z detektora tekstu jako dowodu winy. Najlepszym detektorem deepfake’ów pozostaje dobrze zaprojektowany proces. Znak wodny odpowiada na pytanie o pochodzenie, klasyfikator szuka cech syntetycznych, OSINT sprawdza kontekst, a weryfikacja drugim kanałem zatrzymuje oszustwo. Dopiero wykorzystanie tych technik razem daje wynik, pod którym można się podpisać. 

~Tomek Turba

13 sierpnia o godz. 10:00 wpadajcie na bezpłatne szkolenie Tomka Turby Jak oznaczać treści AI, by nie dostać kary? AI Act na przykładach. Na warsztat weźmiemy realne case’y i pokażemy, kiedy oznaczać, a kiedy nie ma takiej potrzeby. Przy okazji dowiecie się, jak wykrywać takie treści, jeśli niektórzy “zapomną” wspomnieć, że AI “maczała w nich palce” 😉.

Zapisuję się

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz