29.2.3 Szteganográfiai hátsó ajtó elrejtés

2025.10.06.
AI Biztonság Blog

Mítoszrombolás: A szteganográfia nem csak képekről szól

Kapcsolati űrlap

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

Amikor a szteganográfiáról hallasz az MI kontextusában, valószínűleg egy generált képbe rejtett titkos üzenetre vagy vízjelre gondolsz. Ez egy valid felhasználási mód, de az ellátási lánc támadásoknál a koncepció sokkal mélyebb és veszélyesebb. Itt nem a kimenetbe, hanem magába a modell agyába – a paramétereibe – rejtjük a hátsó ajtó logikáját, méghozzá úgy, hogy az statisztikailag szinte észrevehetetlen legyen.

Az alapelv: Láthatatlanság a numerikus zajban

Egy modern neurális hálózat súlyait és torzításait (bias) általában 32 bites lebegőpontos számok (`float32`) formájában tárolják. Egy ilyen szám rengeteg információt hordoz, de a pontosságának jelentős része a legkevésbé szignifikáns bitekben (Least Significant Bits, LSBs) rejlik. Ezeknek a biteknek a megváltoztatása elenyésző, szinte mérhetetlen hatással van a modell általános teljesítményére a standard tesztadatokon.

A támadó pontosan ezt használja ki. A hátsó ajtó logikáját vagy a kioldóhoz kapcsolódó feltételeket egy bitsorozattá alakítja, majd ezt a sorozatot „beleírja” a modell paramétereinek legkevésbé szignifikáns bitjeibe. A modell továbbra is 99.99%-ban ugyanazt a funkciót látja el, de most már magában hordozza a rejtett kódot, ami egy speciális triggerre vár.

Ez a technika azért rendkívül alattomos, mert a hagyományos védelmi mechanizmusok számára láthatatlan marad:

  • Statisztikai analízis: A súlyeloszlás (hisztogram), az átlag, a szórás gyakorlatilag változatlan marad. A változások elvesznek a numerikus zajban.
  • Teljesítmény-ellenőrzés: A modell pontossága, F1-pontszáma vagy más metrikái nem csökkennek észrevehetően a validációs adathalmazon.
  • Anomália-detekció: Nincsenek kiugró paraméterértékek vagy furcsa aktivációs mintázatok, amikre egy anomália-detektor ráugorhatna.

Egy 32 bites lebegőpontos paraméter (súly) szerkezete S Exponent (8 bit) Mantissa / Significand (23 bit) LSB Előjel Kitevő Mantissza A hátsó ajtó 1 bitjét ide rejtjük. A hatás a szám értékére minimális.

A technikai megvalósítás

A gyakorlatban a folyamat egy egyszerű bit-manipulációs műveletsorozat. A támadónak hozzá kell férnie a modell paramétereihez a betanítási fázis végén, vagy egy későbbi, finomhangolási lépés során. A pszeudokód szintjén a folyamat a következőképpen néz ki:

# Pszeudokód a szteganográfiai hátsó ajtó beágyazására

def embed_steganographic_backdoor(modell_parameterek, backdoor_adat):
 """
 Beágyazza a backdoor_adat bitsorozatot a modell paramétereibe.
 
 Args:
 modell_parameterek: A modell súlyainak és torzításainak listája (float32 tömbök).
 backdoor_adat: A rejtendő adat, bájtok formájában (pl. b"trigger_key=secret123").
 """
 
 # 1. A backdoor adatot bitsorozattá alakítjuk
 bit_stream = ''.join(format(b, '08b') for b in backdoor_adat)
 bit_index = 0
 
 print(f"Rejtendő bitek száma: {len(bit_stream)}")

 # 2. Végigmegyünk a modell paraméterein (súlyain)
 for param_tensor in modell_parameterek:
 # A tenzort egydimenziós tömbbé lapítjuk a könnyebb iterációért
 flat_params = param_tensor.flatten()
 
 for i in range(len(flat_params)):
 if bit_index >= len(bit_stream):
 print("A backdoor teljes egészében beágyazva.")
 return # Befejeztük a rejtést

 # 3. A lebegőpontos számot integer reprezentációra konvertáljuk
 # Ez lehetővé teszi a bitműveleteket
 param_int = flat_params[i].view('u4') # unsigned 32-bit integer
 
 # 4. A rejtendő bitet beírjuk az LSB helyére
 rejtendo_bit = int(bit_stream[bit_index])
 
 # Először kinullázzuk az LSB-t (AND művelet ...11111110 maszkkal)
 param_int &= 0xFFFFFFFE 
 # Majd beállítjuk az új bitet (OR művelet a rejtendő bittel)
 param_int |= rejtendo_bit

 # 5. Visszaalakítjuk lebegőpontos számmá és frissítjük a modellben
 flat_params[i] = param_int.view('f4') # float32
 
 bit_index += 1

 if bit_index < len(bit_stream):
 print("Figyelem: Nem volt elég paraméter a teljes backdoor elrejtéséhez!")

A hátsó ajtó aktiválásakor a modellnek tartalmaznia kell egy speciális logikát (ezt is be lehet ültetni a betanítás során), ami a trigger hatására kiolvassa ezeket a rejtett biteket a paraméterekből, összeállítja az eredeti adatot (pl. egy parancsot vagy egy kulcsot), és végrehajtja a kártékony műveletet.

Red Team perspektíva: Mit keresünk?

Szteganográfiai hátsó ajtók detektálása pokolian nehéz. Nem a modell viselkedésében keressük a hibát, hanem a szerkezetének legmélyén. A fókusz a gyanús ellátási lánc elemekre és a bit-szintű analízisre helyeződik át. Olyan eszközökre van szükség, amelyek képesek a paraméterek LSB-rétegének statisztikai elemzésére, keresve a természetes zajtól eltérő, nem véletlenszerű mintázatokat. Ez egy rendkívül specializált és számításigényes feladat, ami messze túlmutat a szokásos modell-validáción.

Ez a technika tökéletesen illeszkedik a kifinomult, perzisztens fenyegetések (APT) arzenáljába. Egy ilyen módon kompromittált modell évekig működhet észrevétlenül egy szervezet infrastruktúrájában, csendben várva az aktiválási parancsra. Ez a fajta rejtőzködés jelenti az egyik legnagyobb kihívást az MI biztonsági szakemberek számára, és rávilágít, hogy a védelemnek a teljes életciklusra, a betanítási adatoktól a telepített modellig ki kell terjednie.