Míg a konstans idejű feldolgozás célja a belső műveletek időzítésének uniformizálása, az időbeli izoláció egy másik, gyakran pragmatikusabb megközelítést kínál: a belső feldolgozási idő és a külsőleg megfigyelhető válaszidő közötti közvetlen kapcsolat megszakítását. Ahelyett, hogy magát a számítást tennénk konstans idejűvé, elrejtjük annak valódi időtartamát.
Az alapvető kihívás: a közvetlen korreláció
Egy tipikus, szinkron rendszerben a kliens által mért válaszidő (T_válasz) a hálózati késleltetés (T_hálózat) és a szerveroldali feldolgozási idő (T_feldolgozás) összege: T_válasz ≈ 2 * T_hálózat + T_feldolgozás. A támadó, aki sok kérést küld, képes a hálózati késleltetés zaját kiszűrni és viszonylag pontos becslést adni a T_feldolgozás értékére. Az időbeli izolációs technikák célja, hogy ezt a korrelációt megtörjék.
1. Technika: Időbeli kitöltés (Time Padding)
A probléma
A rendkívül gyorsan lefutó műveletek (pl. egy cache-találat vagy egy egyszerű validációs hiba) értékes információt szivárogtatnak. Ha egy kérés 5 ms alatt hibával tér vissza, míg egy másik 50 ms alatt ad érvényes választ, a támadó azonnal tudja, hogy az első bemenet már egy korai fázisban elbukott.
A megoldás
A megoldás egy minimális válaszidő (T_min) bevezetése. Ha a feldolgozás ennél gyorsabban véget ér, a rendszer mesterségesen várakozik, hogy a teljes válaszidő elérje ezt a küszöböt. Ez „kitölti” a gyors válaszok által hagyott időrést, megnehezítve a gyors és lassú utak megkülönböztetését.
funkció feldolgoz_kérést(kérés):
start_idő = aktuális_idő()
// A tényleges feldolgozási logika
eredmény = modell_inferencia(kérés.adat)
end_idő = aktuális_idő()
eltelt_idő = end_idő - start_idő
MINIMÁLIS_IDŐ = 50 // ms
if eltelt_idő < MINIMÁLIS_IDŐ:
várakozási_idő = MINIMÁLIS_IDŐ - eltelt_idő
várakozz(várakozási_idő) // Mesterséges késleltetés
return eredmény
Fontos: A MINIMÁLIS_IDŐ értékét gondosan kell megválasztani. Ha túl alacsony, hatástalan. Ha túl magas, feleslegesen növeli a rendszer átlagos késleltetését és rontja a felhasználói élményt.
2. Technika: Aszinkron feldolgozás és sorba állítás
A probléma
A szinkron, „kérés-válasz” modell természetéből adódóan a kliens aktívan várja a választ, így közvetlenül méri a feldolgozás idejét. Ez a legtisztább csatorna egy időzítésen alapuló támadáshoz.
A megoldás
A kérés és a válasz szétválasztása. Ahelyett, hogy a rendszer azonnal elkezdené a feldolgozást és megvárakoztatná a klienst, csupán befogadja a kérést, beteszi egy feldolgozási sorba (queue), és azonnal visszaad egy azonosítót (pl. job_id). A tényleges számítás egy háttérfolyamatban (worker) történik. A kliens később, az azonosítóval kérdezheti le az eredményt.
Ezzel a modellel a kliens által mért idő a lekérdezés sebességétől függ, nem a tényleges számítási időtől. A támadó elveszíti a közvetlen rálátást a modell inferenciaidejére.
3. Technika: Kötegelt feldolgozás fix időablakban
A probléma
Még ha az egyes kérések időzítése zajos is, nagy mennyiségű kérés statisztikai elemzése felfedhet mintázatokat. A támadó az időzítési adatok eloszlásából következtethet a belső állapotokra.
A megoldás
A rendszer nem dolgozza fel a kéréseket azonnal, ahogy beérkeznek. Ehelyett egy rövid ideig (pl. 100 ms) gyűjti őket, majd az időablak végén egyetlen kötegben (batch) hajtja végre a feldolgozást. Minden, az adott ablakban érkezett kérés válaszideje az ablak zárásához és a köteg feldolgozásához kötődik, nem pedig a saját, egyedi feldolgozási idejéhez. Ez hatékonyan „átlagolja” és elmossa az egyedi időzítési szignálokat.
Ez a technika különösen hatékony a GPU-alapú modelleknél, ahol a kötegelt inferencia amúgy is jelentős teljesítménynövekedést hoz, így a biztonsági előny egyfajta „pozitív mellékhatásként” is megjelenhet.
Összehasonlítás és stratégiai megfontolások
Nincs egyetlen, mindenre jó megoldás. A megfelelő technika kiválasztása mindig a biztonsági követelmények, a teljesítmény-elvárások és az implementációs komplexitás kompromisszuma.
| Technika | Hatékonyság | Késleltetésre gyakorolt hatás | Implementációs komplexitás |
|---|---|---|---|
| Időbeli kitöltés (Padding) | Közepes (a gyors utakat jól elfedi) | Alacsony (csak a leggyorsabb kéréseket lassítja) | Alacsony |
| Aszinkron feldolgozás | Magas (megtöri a közvetlen korrelációt) | Magas (a teljes folyamat lassabb, de a kezdeti válasz gyors) | Magas (infrastrukturális változásokat igényel) |
| Kötegelt feldolgozás | Magas (elmossa az egyedi szignálokat) | Közepes (minden kérés késleltetése az ablak méretétől függ) | Közepes-Magas (batching logikát igényel) |
Gyakran a leghatékonyabb védelem ezen technikák kombinációja. Például egy aszinkron, sorba állításon alapuló rendszer, ahol a workerek kötegelve dolgozzák fel a feladatokat, és a válaszok lekérdezése előtt egy minimális időbeli kitöltést is alkalmaznak, egy rendkívül robusztus, többrétegű védelmet nyújt az időzítésen alapuló támadásokkal szemben.