A képfeldolgozó modellek megtévesztése nem mindig a láthatatlan, finomhangolt zajról szól. Néha a leghatékonyabb támadás egy szándékosan látható, de a modell számára értelmezhetetlen jel, ami teljesen felborítja a döntési folyamatát. Itt két alapvetően eltérő filozófiával találkozunk: a szinte észrevehetetlen zavarokkal és a feltűnő, de rendkívül robusztus foltokkal.
A két fő iskola: Suttogás vs. Kiáltás
A kép alapú ellenséges támadások két nagy kategóriába sorolhatók aszerint, hogy mennyire észrevehetők az emberi szem számára, és hogyan viselkednek a valós világ transzformációi során.
AI Red teamerként elengedhetetlen, hogy megértsd a kettő közötti különbséget, mert teljesen más forgatókönyvekben vetheted be őket.
Ellenséges Zavarok (Adversarial Perturbations)
Ezek a klasszikus, „tankönyvi” ellenséges támadások. A cél az, hogy egy minimális, az emberi szem számára szinte vagy teljesen láthatatlan zajmintázatot (perturbációt) adjunk a képhez, ami a modellt téves klasszifikációra készteti. Úgy képzeld el, mint egy digitális suttogást, amit csak a modell „hall” meg.
- Működési elv: Általában a modell gradienseit használják fel. Lényegében megkeresik, hogy mely pixelek értékét kell a legkevésbé megváltoztatni ahhoz, hogy a kimeneti valószínűségek a legnagyobb mértékben elmozduljanak egy hibás osztály felé. Az egyik legismertebb ilyen módszer a Fast Gradient Sign Method (FGSM).
- Jellemzők: Alacsony észlelhetőség, de magas fokú sérülékenység. Egy egyszerű elforgatás, méretezés, vagy akár a kép JPEG formátumban való mentése is semlegesítheti a hatásukat.
- Alkalmazás: Főként digitális környezetben, „white-box” tesztelési forgatókönyvekben hasznosak, ahol közvetlen hozzáférésünk van a modellhez és annak paramétereihez.
# Pszeudokód az FGSM alapú zavar generálására
def fgsm_tamadas(kep, epsilon, adat_grad):
# Gyűjtsük össze a gradiensek előjelét
# Pozitív irányba toljuk, ami növeli a hibát, negatívba, ami csökkenti
elojel_grad = adat_grad.sign()
# Hozzuk létre a zavart a gradiensek előjele alapján
zavart_kep = kep + epsilon * elojel_grad
# Vágjuk le az értékeket [0,1] tartományba, hogy érvényes kép maradjon
zavart_kep = torch.clamp(zavart_kep, 0, 1)
# Adjuk vissza a módosított képet
return zavart_kep
Ellenséges Foltok (Adversarial Patches)
A foltok egy radikálisan más megközelítést alkalmaznak. Itt nem egy globális, finom zajt adunk a képhez, hanem egy lokalizált, jól látható „matricát” helyezünk el rajta. A cél nem a láthatatlanság, hanem a maximális hatékonyság és robusztusság. Ez már nem suttogás, hanem egy vizuális kiáltás, ami elnyom minden más információt a modell számára.
- Működési elv: A folt egy optimalizációs folyamat eredménye. A támadó egy olyan mintázatot keres, ami bármilyen képre helyezve, különböző szögekből, távolságokból és fényviszonyok mellett is nagy valószínűséggel egy adott (hibás) osztályba sorolja a képet.
- Jellemzők: Jól látható, de rendkívül robusztus a fizikai transzformációkkal (forgatás, méretezés, perspektíva-torzulás) szemben.
- Alkalmazás: Ideálisak a fizikai világban végrehajtott támadásokhoz. Egy ilyen foltot tartalmazó matrica egy stoptáblára ragasztva sebességkorlátozó táblának álcázhatja azt egy önvezető autó számára. Ez a technika szorosan kapcsolódik a következő fejezet témájához.
Összehasonlítás: Zavar vs. Folt
A megfelelő támadási technika kiválasztása a céltól és a környezettől függ. Az alábbi táblázat segít eligazodni a legfontosabb különbségek között.
| Jellemző | Ellenséges Zavarok (Perturbations) | Ellenséges Foltok (Patches) |
|---|---|---|
| Láthatóság | Nagyon alacsony, ideális esetben észrevehetetlen. | Magas, szándékosan látható és feltűnő. |
| Robusztusság | Alacsony. Érzékeny a kép transzformációira (forgatás, méretezés, zaj). | Magas. Kifejezetten úgy tervezik, hogy ellenálljon a fizikai világ torzításainak. |
| Támadási Vektor | Tipikusan digitális (pl. feltöltött kép manipulálása). | Digitális és fizikai (pl. nyomtatott matrica). |
| Létrehozás Komplexitása | Viszonylag egyszerű (pl. FGSM), de white-box hozzáférést igényelhet. | Számításigényesebb, optimalizációs folyamatot igényel. |
| Általánosíthatóság | Kép-specifikus. Egy adott képre generált zavar nem működik egy másikon. | Univerzális. A folt célja, hogy bármilyen képre helyezve működjön. |
Red Teamer nézőpont: Mikor melyiket?
A te munkád során a választás egyértelműen a tesztelési célodtól függ:
- Használj ellenséges zavarokat, ha egy rendszer belső, digitális sebezhetőségét akarod felmérni. Ideális egy fájlfeltöltési funkció tesztelésére, ahol a szerver oldali képfeldolgozást támadod. Megmutatja, mennyire „törékeny” a modell a bemeneti adatok apró változásaira.
- Válassz ellenséges foltokat, ha a rendszer fizikai világgal való interakcióját teszteled. Ez a te eszközöd, ha egy kamerás megfigyelőrendszer, egy drón objektumfelismerője vagy egy önvezető jármű érzékelője a célpont. A foltokkal demonstrálhatod a leglátványosabb és legveszélyesebb támadási forgatókönyveket.
Fontos látni, hogy a foltokkal való támadás megalapozza a következő fejezetben tárgyalt, sokkal komplexebb fizikai támadásokat. Egy jól megtervezett folt az első lépés afelé, hogy a digitális sebezhetőséget kézzelfogható, valós világbeli kockázattá alakítsuk.