8.1.2. Fizikai világ támadások

2025.10.06.
AI Biztonság Blog

Egy laboratóriumban, tökéletes digitális körülmények között könnyű egy modellt megtéveszteni. De mi történik, ha a támadásnak túl kell élnie az esőt, a gyűrődést, a változó fényeket és egy mozgó kamera torzításait? A digitális precizitás itt már nem elég; a fizikai világban a robusztusság a kulcs.

Kapcsolati űrlap

AI Biztonság kérdésed van? Itt elérsz minket:

Oké, értem az ellenséges foltokat. De hogyan működik ez a valóságban? Mi a különbség?

A legfontosabb különbség a kontroll elvesztése. Amikor egy digitális képet manipulálsz, minden egyes pixel felett 100%-os uralmad van. A fizikai világ azonban zajos, kaotikus és kiszámíthatatlan. 

A digitális támadást a „valóság renderelő motorján” kell átfuttatnod, ami magában foglalja a nyomtatást, a fényképezést és az összes köztes fizikai folyamatot.

Gondolj erre úgy, mint egy tökéletesen megírt beszéd (digitális támadás) és annak egy zsúfolt, zajos piacon való előadása (fizikai támadás) közötti különbségre. A beszédnek nemcsak jónak, de érthetőnek és hatásosnak is kell lennie a zaj, a távolság és a hallgatóság figyelmének ingadozása ellenére.

A fizikai támadásoknak invariánsnak kell lenniük egy sor transzformációra, például:

  • Perspektíva és szög: A kamera ritkán nézi a tárgyat tökéletesen szemből.
  • Távolság és méret: A tárgy mérete a képen a távolsággal változik.
  • Fényviszonyok: Árnyékok, tükröződések, színhőmérséklet-változások.
  • Fizikai deformációk: Gyűrődések egy papíron, karcolások egy matricán.
  • Gyártási hibák: A nyomtató színei sosem lesznek tökéletesen azonosak a digitális képpel.

Hogyan lehet egy támadást ennyi zavaró tényezővel szemben robusztussá tenni?

Itt jön képbe az Expectation over Transformation (EoT) algoritmus. Ahelyett, hogy egyetlen, statikus képre optimalizálnánk a zavart, az EoT egy egész transzformáció-eloszláson próbál meg egy robusztus, általánosítható zavart találni.

A folyamat lényege egy iteratív optimalizálás, ahol minden lépésben:

  1. Választunk egy transzformációt: Véletlenszerűen kiválasztunk egy szöget, távolságot, fényerőt stb. a lehetséges transzformációk halmazából.
  2. Alkalmazzuk a transzformációt: A jelenlegi ellenséges mintát ráhelyezzük az alap képre (pl. egy STOP táblára), majd alkalmazzuk a kiválasztott transzformációt.
  3. Kiértékeljük a modellt: Lefuttatjuk a modellt ezen a transzformált képen.
  4. Visszaterjesztjük a hibát: Kiszámoljuk a veszteséget (mennyire tévedett a modell a célunkhoz képest), és a gradiensek segítségével frissítjük az eredeti, transzformálatlan ellenséges mintát.

Ezt a ciklust több ezer alkalommal megismételve a rendszer egy olyan mintát „tanul meg”, amely nem csak egyetlen nézőpontból, hanem a transzformációk széles skáláján keresztül is hatékonyan téveszti meg a modellt.

Kezdeti Minta Transzformációk (forgatás, fényerő…) Modell Kiértékelés Minta frissítése a gradiens alapján

Példa pszeudokóddal

Nézzük meg, hogyan nézne ki ez a gyakorlatban egy egyszerűsített kódrészleten. A célunk egy olyan matrica létrehozása, ami egy STOP táblát „Sebességkorlátozás 80” táblának álcáz.

# Pszeudokód az EoT alapú fizikai támadás generálására

# 1. Inicializálás
ellenséges_matrica = véletlen_zaj_generálása(méret=(100,100))
optimalizáló = Adam(learning_rate=0.01)

# 2. Transzformációk halmaza
transzformációk = [
 VizuálisTranszformáció(forgatás_tartomány=(-15, 15)),
 VizuálisTranszformáció(skála_tartomány=(0.8, 1.2)),
 VizuálisTranszformáció(fényerő_változás=(-0.2, 0.2))
]

# 3. Optimalizációs ciklus
for i in range(5000):
 # Véletlenszerűen kiválasztunk egy transzformációt
 random_transzformáció = válassz_egyet(transzformációk)

 # A matrica ráhelyezése az alap képre (a táblára)
 bemeneti_kép = helyezd_rá(alap_kép="stop_tabla.jpg", matrica=ellenséges_matrica)
 
 # A transzformáció alkalmazása
 transzformált_kép = random_transzformáció.alkalmaz(bemeneti_kép)

 # Modell futtatása és veszteség számítása
 jóslat = modell.predict(transzformált_kép)
 veszteség = célzott_veszteség(jóslat, cél_osztály="speed_limit_80")
 
 # Gradiens számítása és a matrica frissítése
 gradiens = számol_gradiens(veszteség, ellenséges_matrica)
 optimalizáló.frissít(ellenséges_matrica, gradiens)

# 4. Eredmény
nyomtatható_matrica = mentsd_képként(ellenséges_matrica)

Milyen típusai vannak a fizikai támadásoknak?

A fizikai támadásokat leggyakrabban a dimenziójuk szerint csoportosítjuk:

Típus Leírás Példa Előny Hátrány
2D Támadások (Patch-based) Nyomtatott matricák, poszterek vagy ruházati minták, amelyeket a célpontra vagy a környezetébe helyeznek. Egy STOP táblára ragasztott matrica, ami azt „elsőbbségadás kötelező” táblává változtatja a modell számára. Vagy egy pólóminta, ami láthatatlanná teszi a viselőjét a személyfelismerő rendszerek előtt. Könnyen és olcsón előállítható, hordozható. Sérülékeny a fizikai deformációkra (gyűrődés), a nézőpontra érzékenyebb lehet.
3D Támadások (Object-based) Teljes, háromdimenziós tárgyak, amelyeket úgy terveztek (gyakran 3D nyomtatással), hogy bármilyen szögből megtévesszék a modellt. Egy 3D nyomtatott teknős, amit egy képfelismerő modell 99%-os biztonsággal puskának azonosít, függetlenül attól, honnan fotózzák le. Rendkívül robusztus a nézőpont-változásokkal szemben. Drágább és bonyolultabb az előállítása, nehezebben módosítható.

AI Red Teamer Fókusz: Mit tesztelj valójában?

Amikor fizikai támadásokkal tesztelsz egy rendszert, a célod nem csupán annyi, hogy „sikerüljön a támadás”. 

A valódi érték abban rejlik, hogy feltérképezd a rendszer sebezhetőségének határait. 

A kérdéseid a következők legyenek:

  • Robusztusság: Milyen messziről működik a támadás? Milyen szögtartományban hatásos? Mennyire bírja a fényviszonyok változását?
  • Transzferálhatóság: Ugyanaz a nyomtatott matrica több különböző modellt is megtéveszt? (Pl. egy YOLOv5 és egy SSD modellt is?)
  • Környezeti függőség: Mi történik, ha esik az eső és a matrica vizes lesz? Mi van, ha részben árnyék takarja?
  • Előállítási minőség: Szükség van professzionális nyomdára, vagy elég egy otthoni tintasugaras nyomtató is? A színek pontossága mennyire számít?

A riportodban nem egyetlen sikeres támadást kell dokumentálnod, hanem azokat a feltételeket, amelyek mellett a rendszer megbukik. Ez az információ teszi lehetővé a védekező csapat számára, hogy hatékony ellenintézkedéseket fejlesszenek ki, például adat-augmentációt valósághűbb fizikai torzításokkal.