26.2.4 Robusztusság növelő wrapper-ek

2025.10.06.
AI Biztonság Blog

Képzelj el egy drága, csúcskategóriás okostelefont. Önmagában is egy technikai csoda, de egyetlen leejtés is végzetes lehet számára. Mit teszel? Veszel rá egy strapabíró tokot. A tok nem változtatja meg a telefon belső működését, de egy külső, védelmi réteget ad hozzá, ami elnyeli az ütéseket és megvédi a sérülékeny pontokat. A robusztusság növelő wrapper-ek pontosan ilyen „tokként” funkcionálnak az AI modellek körül.

Kapcsolati űrlap

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

A wrapper működési elve

Ahelyett, hogy közvetlenül a modell `predict()` metódusát hívnánk meg, egy köztes réteget, egy „csomagoló” (wrapper) osztályt vagy függvényt iktatunk be. Ez a wrapper fogadja a bejövő kéréseket, elvégez rajtuk egy sor ellenőrzést és átalakítást, majd csak a „megtisztított” és biztonságosnak ítélt adatot továbbítja a tényleges modellnek. Hasonlóképpen, a modell válaszát is képes ellenőrizni és formázni, mielőtt az visszajutna a felhasználóhoz.

Ez a megközelítés rendkívül moduláris. Nem kell a már betanított és produkcióban lévő modell belső logikájához nyúlnunk, ami drága és kockázatos lenne. A védelmi logikát teljesen elkülönítjük a modell magjától.

1. ábra: A wrapper-alapú védelem adatfolyama

Felhasználó Robusztus Wrapper AI Modell Válasz Input Validált input Szűrt output

A wrapper leggyakoribb funkciói

  • Input validáció és szanitizáció: Ez az alap. A wrapper ellenőrzi, hogy a bemenet megfelel-e a várt formátumnak, típusnak, hosszúságnak. Eltávolíthat speciális karaktereket, HTML tageket vagy SQL parancsokat, megelőzve ezzel a klasszikus injection támadásokat (lásd: 26.2.2 fejezet).
  • Hibakezelés és újrapróbálkozási logika (Retry Logic): Ha a modell valamiért hibát dob vagy értelmezhetetlen kimenetet ad, a wrapper elkaphatja ezt. Ahelyett, hogy a hibaüzenet eljutna a felhasználóhoz (ami információt szivárogtathat), a wrapper adhat egy általános, biztonságos választ, vagy akár újrapróbálhatja a kérést egy kissé módosított inputtal.
  • Kimeneti szűrés (Output Filtering): A wrapper a modell által generált választ is ellenőrizheti. Kiszűrheti a nemkívánatos tartalmakat (pl. káromkodás, személyes adatok), vagy biztosíthatja, hogy a kimenet egy szigorú séma szerint (pl. valid JSON) formázódjon. Ez különösen fontos a jailbreaking támadások kivédésében.
  • Perturbáció és aggregáció: Egy fejlettebb technika, ahol a wrapper az eredeti inputból több, enyhén módosított (perturbált) verziót hoz létre. Lefuttatja mindegyiket a modellen, majd a kapott válaszokat aggregálja (pl. átlagolja a pontszámokat, vagy „szavazással” dönt a kategóriáról). Ez jelentősen megnehezíti a finomhangolt, gradien-alapú adversarial támadásokat.

Gyakorlati implementáció

Nézzünk egy egyszerű Python példát egy wrapper osztályra, amely egy képfelismerő modellt „csomagol be”. Ez a wrapper alapvető típus- és méretellenőrzést végez, valamint implementál egy egyszerű hibakezelést.


import numpy as np

class RobusztusModellWrapper:
 def __init__(self, modell, vart_meret=(224, 224, 3), max_probalkozas=3):
 # A wrapper megkapja az eredeti modellt és a konfigurációt
 self._modell = modell
 self._vart_meret = vart_meret
 self._max_probalkozas = max_probalkozas

 def predict(self, kep_adat):
 # 1. Input validáció
 if not isinstance(kep_adat, np.ndarray) or kep_adat.shape != self._vart_meret:
 raise ValueError(f"Érvénytelen bemeneti kép! Várt méret: {self._vart_meret}")

 # 2. Újrapróbálkozási logika
 for proba in range(self._max_probalkozas):
 try:
 eredmeny = self._modell.predict(np.expand_dims(kep_adat, axis=0))
 # 3. Kimeneti szűrés (egyszerű példa: biztosítjuk, hogy ne legyen NaN)
 if np.isnan(eredmeny).any():
 continue # Ha a kimenet érvénytelen, próbáljuk újra
 return eredmeny
 except Exception as e:
 print(f"Hiba a {proba+1}. próbálkozásnál: {e}")
 
 # Ha minden próbálkozás sikertelen, biztonságos választ adunk
 return {"error": "A modell nem tudott megbízható választ adni."}
 

A fenti kódban ahelyett, hogy közvetlenül a `eredeti_modell.predict(kep)` hívást használnánk, a `wrapper = RobusztusModellWrapper(eredeti_modell)` példányosítás után a `wrapper.predict(kep)` metódust hívjuk. Ezzel a védelmi logika transzparensen beépül a rendszerbe.

Előnyök és hátrányok

Mint minden védelmi mechanizmusnak, a wrapper-alapú megközelítésnek is vannak kompromisszumai.

A wrapper-alapú védelem mérlegelése
Előnyök Hátrányok
Modularitás: A védelmi logika független a modelltől. Könnyen cserélhető, frissíthető anélkül, hogy a modellt újra kellene tanítani. Teljesítmény overhead: Minden extra ellenőrzés és feldolgozás növeli a válaszidőt (latenciát).
Újrafelhasználhatóság: Ugyanaz a wrapper több különböző modellre is ráhúzható, ha a bemeneti/kimeneti interfész hasonló. Komplexitás: Egy rosszul megírt wrapper maga is sebezhetőségi ponttá válhat, vagy hibákat vihet a rendszerbe.
Gyors bevezetés: Nem igényel drága és időigényes újratanítást. Egy meglévő rendszerre viszonylag gyorsan implementálható. Nem teljeskörű védelem: Nem véd a modell belső logikáját kihasználó, vagy a tanító adatokon alapuló támadások (pl. data poisoning) ellen.

Összességében a robusztusság növelő wrapper-ek a rétegzett védelem (defense-in-depth) filozófiájának egyik kulcsfontosságú, pragmatikus elemei. Nem csodaszerek, de egy rendkívül hatékony és rugalmas eszközt adnak a kezünkbe a modellek megerősítésére a valós világbeli fenyegetésekkel szemben.