A teljes bipartit gráf támadása ( angol. Biclique attack ) a "meeting in the middle" támadás egyik változata [1] . Ez a támadás teljes kétoldalú gráfstruktúrát használ, hogy növelje a középső támadási kísérletek számát . Mivel ez a támadás a „man-in-the-middle” támadáson alapul, a blokkrejtjelekre és a kriptográfiai hash-függvényekre egyaránt alkalmazható . Ez a támadás az AES [2] és az IDEA [3] titkosítások feltöréséről ismert , bár csak valamivel gyorsabb, mint a nyers erő . A támadás számítási összetettsége , illetve az AES128, AES192 és AES256 esetében. Mivel a számítási összetettség elméleti érték, ez azt jelenti, hogy az AES-t nem törték fel, és használata viszonylag biztonságos. Ezenkívül ez a támadás megkérdőjelezte az AES-ben használt töltények számának elegendőségét.
A középső támadást először Diffie és Hellman javasolta 1977-ben, miközben a DES algoritmus tulajdonságait tárgyalták . [4] Azt feltételezték, hogy a kulcs mérete túl kicsi, és a DES különböző kulcsokkal történő újrafelhasználása megoldást jelenthet a problémára. Azt javasolták azonban, hogy ne használjunk „kettős DES”-t, hanem azonnal használjunk legalább háromszoros DES -t az ember a középső támadás természete miatt. Amióta Diffie és Hellman javasolta az ember a középső támadást, számos változat létezik, amelyek használhatók, ha a klasszikus MITM nem alkalmazható. A teljes kétoldalú gráftámadás ötletét először Horatovich, Rekhberger és Savelyeva javasolta egy hash függvényeket használó változathoz. [5] Ezt követően Bogdanov, Horatovich és Rechberger közzétett egy támadást az AES ellen, amely megmutatta, hogyan alkalmazható a teljes kétoldalú gráf koncepciója egy blokkrejtjelet tartalmazó titkos kulcsra [6] .
Man-in-the-middle támadásnál az első és második helyettesítő titkosításnak megfelelő kulcsbiteknek függetlennek kell lenniük egymástól, különben a nyílt szöveg és a titkosított szöveg egyező köztes értékei nem számíthatók ki egymástól függetlenül a man- középső támadás. Ezt a tulajdonságot gyakran nehéz kihasználni nagy számú körön keresztül, a megtámadott titkosítás terjedése miatt.
Egyszerűen fogalmazva, minél több iterációt használnak a támadásban, annál nagyobb lesz a helyettesítő titkosítás „kimenete”, ami viszont a helyettesítő rejtjelek közötti független kulcsbitek számának csökkenéséhez vezet, amelyeket kimerítő kereséssel kell feltörni.
Ebben az esetben egy komplett bipartit gráf segít a probléma megoldásában. Például, ha 7 kört futtatunk egy proxytámadást AES-en, majd egy 3-as hosszúságú (a titkosítás 3 iterációját lefedő) teljes bipartit gráfot használunk, akkor lehetséges lesz a 7. iteráció elején lévő köztes állapot egyeztetése. az utolsó iteráció köztes állapotával (10-től, AES128 esetén) . Így a titkosítás minden köre ellen támadást érünk el, bár egy klasszikus „man-in-the-middle” támadásban ez nem biztos, hogy lehetséges.
A full bipartite graph támadás lényege egy hatékony teljes kétrészes gráf felépítése, amely a kulcsbitek függvényében illesztheti az aktuális köztes értéket a megfelelő rejtjelezett szöveggel.
Ezt a módszert Bogdanov, Khovratovich és Rehberger javasolta a Biclique Cryptanalysis of the Full AES című művében.
Nem szabad elfelejteni , hogy a teljes kétrészes gráf fő funkciója az állapotok
) úgy, hogy) és a kulcsot (), a titkosított szöveget (Válasszon ki egy állapotot (Első lépés:Felépítés::
kulcsok segítségévelés rejtjelezett szövegek
Második lépés: Két kulcskészlet van kiválasztva, mindegyik mérete , így:
Harmadik lépés: Vegye figyelembe, hogy ,
Könnyen belátható, hogy a sor is kielégíti mindkét különbséget. Bármelyik definícióba behelyettesítve megkapjuk a , hol és .
Ez azt jelenti, hogy az alapul szolgáló számításokból kapott tuple XOR-ezhető is:
Negyedik lépés: Könnyen belátható, hogy:
Így van:
Ami megegyezik a teljes kétrészes gráffüggvény fentebb bemutatott definíciójával:
Így létre lehet hozni egy teljes kétrészes méretű gráfot ( , mivel az első halmaz kulcsait össze kell kapcsolni a második halmaz kulcsaival). Ez azt jelenti, hogy differenciálszámítások és és függvények segítségével méretgráfot lehet létrehozni . Ha a , akkor minden kulcs különbözik a teljes grafikonon.
1. A kriptoanalitikus az összes lehetséges kulcsot méretű kulcsok részhalmazaiba gyűjti , ahol valamilyen szám. A csoport kulcsát úgy jelöljük, mint a méretmátrixban . Ezután a kriptoanalizátor felosztja a rejtjelet két helyettesítő rejtjelre, és (olyan, hogy ), csakúgy, mint az ember a középső támadásnál. Az egyes helyettesítő rejtjelekhez tartozó kulcskészletek számossággal rendelkeznek , és jelölésük van . A két helyettesítési rejtjel kulcsának egyesítését a fenti mátrixban fejezzük ki .
2. A kriptoanalizátor minden kulcscsoporthoz komplett kétoldalú gráfot készít . A gráf dimenzióval rendelkezik , mivel a belső állapotokat, , titkosított szövegekre képezi le kulcsok segítségével. Ebben az esetben egy teljes kétrészes gráfot építünk fel a két kulcskészlet közötti különbségek alapján, és .
3. A rejtjelelemző kiválasztja a lehetséges titkosított szövegeket, és lekéri a megfelelő nyílt szövegeket, .
4. A támadó kiválaszt egy belső állapotot és a hozzá tartozó nyílt szöveget ( ) , és a és a segítségével végrehajt egy klasszikus man-in-the-middle támadást .
5. Ha talál egy kulcsot, amely megegyezik a -val , akkor azt egy másik „belső állapot-titkosszöveg” párral szemben teszteljük. Ha a kulcs ezen a páron működik, akkor nagy valószínűséggel ez a helyes kulcs.
Az alábbiakban egy példa látható az AES128 elleni támadásra. A támadás egy 7 fordulós mediátor támadásból áll, az utolsó 3 iterációban a teljes bipartit gráfot használják.
A billentyűk csoportokra vannak osztva , mindegyik csoport kulcsokból áll. Minden csoport rendelkezik egy egyedi alapkulccsal , amelyet a számításhoz használnak. Ez a kulcs így néz ki:
A fennmaradó 14 bájt (112 bit) szekvenciálisan kitöltésre kerül. Így egyedi alapkulcsokat kapunk; minden kulcscsoporthoz egyet.
Általában az egyes csoportok kulcsait a csoport alapkulcsának megfelelően választják ki. Az alábbi 4 bájt közül csak 2 bájttal különböznek (akár -tól, akár -tól ):
Így kiderül és , ami összességében különböző kulcsokat ad, .
Egy komplett kétrészes gráf méretét a „Teljes kétrészes gráf készítése” részben leírtak szerint állítjuk össze.
A grafikon felépítése után kezdődhet az ember a közepén támadás. A támadás megkezdése előtt a nyílt szövegből származó állapotok : , állapotok a rejtjelezett szövegből: ,
és a megfelelő állapotok és kulcskészletek vagy már ki vannak számítva.
Most elkezdheti támadni a közvetítőt. A kulcs ellenőrzéséhez csak újra kell számítani a titkosítás azon részeit, amelyek az értékek és az értékek között lesznek . A k -val végzett inverz számításokhoz csak 4 S-dobozt kell újraszámolni. További számításokhoz k -vel összesen 3 S-doboz.
Ha az állapotok egyeznek, a rendszer talál egy kulcsjelölt kulcsot , amely től ig értékeket vesz fel . Ezután ezt a kulcsot egy másik nyilvános-/titkosszöveg páron tesztelik.
Ez a támadás az AES128 feltörésének számítási bonyolultságát -ra csökkenti , ami viszont 3-5-ször gyorsabb, mint a brute force módszer.