29.3.4. Kvantált modellek hátsó ajtajai

2025.10.06.
AI Biztonság Blog

A modelloptimalizálás látszólag ártalmatlan lépése, a kvantálás, egy különösen alattomos támadási felületet nyit. Itt a hátsó ajtót nem közvetlenül a modellbe „írjuk”, hanem hagyjuk, hogy a konverziós folyamat matematikai kerekítési hibái maguk hozzák létre. A támadás éppen a hatékonyságnövelés álcája mögé rejtőzik.

Kapcsolati űrlap

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

A precizitásvesztés mint fegyver

A kvantálás lényege, hogy a modell súlyait és aktivációit egy alacsonyabb precizitású számformátumra konvertáljuk – jellemzően 32 bites lebegőpontosról (FP32) 8 bites egész számra (INT8). Ez drasztikusan csökkenti a modell méretét és gyorsítja az inferenciát, ami elengedhetetlen a peremeszközökön (edge devices) való futtatáshoz. A folyamat azonban veszteséges. A konverzió során kerekítések történnek, és pont ezt a kerekítést használja ki a támadó.

Képzeld el úgy, mint egy digitális kép tömörítését. Az eredeti, nagy felbontású kép (FP32 modell) minden pixelének precíz színértéke van. Amikor alacsonyabb minőségű JPEG-be (INT8 modell) mented, a tömörítő algoritmus hasonló színeket összevon, átlagol – kerekít. Egy támadó az eredeti képbe olyan, szemmel szinte láthatatlan zajt rejthet, amely a tömörítés során felerősödik, és egy teljesen új mintázatot hoz létre a végső képen. A kvantálás-alapú hátsó ajtó ugyanezen az elven működik: a támadás az FP32 modellben „szub-kerekítési” szinten létezik, és csak a kvantálási folyamat során válik aktívvá.

Eredeti FP32 modell Kerekítési küszöb (pl. 0.5) Jóindulatú súly (pl. 0.49) Mérgezett súly (pl. 0.51) Kvantálás Kvantált INT8 modell Érték: 0 Érték: 1 0-ra kerekítve 1-re kerekítve A 0.02-es, alig mérhető különbség az FP32 modellben egy teljes, diszkrét ugrást okoz az INT8 modellben, aktiválva a hátsó ajtót.

A támadás lépései

A kvantálás-érzékeny hátsó ajtó elhelyezése egy többlépcsős, kifinomult folyamat, amely a modell életciklusának mélyebb rétegeit célozza.

  1. Cél- és triggerdefiníció: A támadó meghatározza a hátsó ajtó célját (pl. egy adott bemenet téves osztályozása) és a hozzá tartozó trigger mintát (pl. egy specifikus képi anomália, egy ritka szó a szövegben).
  2. Súlyok azonosítása: A támadó elemzi a betanított FP32 modellt, és azonosítja azokat a kritikus súlyokat, amelyek a trigger feldolgozásában vesznek részt, és értékük nagyon közel esik egy kvantálási kerekítési határhoz.
  3. Finomhangolás (Perturbáció): A támadó egy minimális, szinte kimutathatatlan módosítást (perturbációt) hajt végre ezeken a súlyokon. A módosítás célja, hogy a súly éppen átkerüljön a kerekítési küszöb másik oldalára, de csak annyira, hogy az eredeti FP32 modell viselkedése ne változzon számottevően a standard teszteseteken.
  4. Terjesztés: A manipulált, de látszólag hibátlanul működő FP32 modellt feltöltik egy publikus modell-hubra (pl. Hugging Face).
  5. Aktiválás: A gyanútlan fejlesztő letölti a modellt, és a saját MLOps pipeline-jában lefuttatja rajta a standard kvantálási eljárást. Ez a jóhiszemű optimalizációs lépés az, ami „élesíti” a rejtett hátsó ajtót. A perturbált súlyok a kerekítés során átbillennek, megváltoztatva a modell logikáját a trigger jelenlétében.

Pszeudokód a súlyok manipulálására

Bár a valós implementáció komplexebb, az alapelv jól szemléltethető egy egyszerű pszeudokóddal, amely a kvantálási küszöbhöz közeli súlyokat célozza.

# Pszeudokód a kvantálás-érzékeny hátsó ajtó elhelyezésére
def inject_quantization_backdoor(model, trigger_neurons, scale_factor, epsilon=0.01):
 # A `scale_factor` a kvantálás során használt skálázási tényező.
 # A kerekítési küszöb általában 0.5 a skálázott térben.
 
 for name, weight in model.named_parameters():
 # Csak a triggerhez kapcsolódó neuronok súlyait vizsgáljuk
 if name in trigger_neurons:
 scaled_weight = weight.data / scale_factor
 
 # A törtrész, ami a kerekítésről dönt
 fractional_part = scaled_weight.frac()
 
 # Megkeressük azokat a súlyokat, amelyek éppen a küszöb alatt vannak
 if 0.5 - epsilon < fractional_part < 0.5:
 # Kiszámoljuk a minimális módosítást, ami átbillenti a súlyt
 perturbation = (0.5 - fractional_part + 1e-6) * scale_factor
 
 # Alkalmazzuk a parányi módosítást az eredeti FP32 súlyon
 weight.data += perturbation
 print(f"Súly '{name}' mérgezve. Eltolás: {perturbation.item():.8f}")
 
 return model

Védekezés és detektálás

Ezeknek a támadásoknak a detektálása rendkívül nehéz, mivel a probléma forrása, a manipulált FP32 modell, szinte tökéletesen viselkedik. A hagyományos modell-ellenőrzési technikák (pl. teljesítmény-benchmarkok) hatástalanok.

Védekezési Stratégia Leírás Hatékonyság
Differenciális tesztelés A modellt többféle, enyhén eltérő kvantálási algoritmussal vagy paraméterrel konvertáljuk. Ha a különböző kvantált verziók viselkedése drasztikusan eltér egymástól (főleg specifikus bemenetekre), az gyanúra adhat okot. Közepes. Erőforrás-igényes, és a támadó felkészülhet a leggyakoribb kvantálási módszerekre.
Súlyeloszlás-analízis A modell súlyainak eloszlását statisztikailag elemezzük. A kerekítési küszöbök körüli abnormális csúcsosodás (sok súly gyűlik össze egy ponthoz nagyon közel) jelezheti a manipulációt. Közepes. Kifinomult támadók eloszlathatják a perturbációt, hogy elkerüljék a feltűnő anomáliákat.
Robusztussági elemzés A kvantált modell bemenetét minimálisan megváltoztatva (adversarial perturbation) vizsgáljuk a kimenet stabilitását. Egy hátsó ajtóval ellátott modell a trigger környezetében extrém érzékenységet mutathat. Alacsony-Közepes. Nehéz megkülönböztetni a hátsó ajtót a modell általános nem-robusztus viselkedésétől.
Szigorú ellátási lánc kontroll A leghatékonyabb védekezés. Csak és kizárólag megbízható, ellenőrzött forrásból származó, reprodukálható betanítási folyamattal rendelkező modelleket használunk. Nem bízunk meg ismeretlen eredetű, előre betanított súlyokban. Magas. Megelőzi a probléma forrását, de korlátozhatja a rendelkezésre álló modellek körét.

A kvantált modellek elleni támadások rávilágítanak, hogy az MI biztonsága nem ér véget a betanítási adatok tisztaságánál. Az ellátási lánc minden egyes lépése, beleértve az optimalizációs és konverziós folyamatokat is, potenciális támadási felületet jelent, ahol egy jóindulatú mérnöki lépés egy rejtett sebezhetőség aktivátorává válhat.