A GGH titkosítási séma ( Eng. Goldreich–Goldwasser–Halevi ) egy rácsokon alapuló aszimmetrikus kriptográfiai rendszer . Van egy GGH aláírási séma is .
A titkosítási rendszer a legrövidebb vektor megtalálásának és a legközelebbi vektor megtalálásának problémájának megoldásán alapul . Az Oded Goldreich , Shafi Goldwasser és Shai Halevi tudósok által 1997-ben közzétett GGH titkosítási séma egyirányú titkos belépési függvényt használ , mivel bármilyen rácsalapon könnyen létrehozható egy rácsponthoz közeli vektor. Például egy rácspont felvétele és egy kis hibavektor hozzáadása. A hibavektorból a rács kezdőpontjába való visszatéréshez speciális alapra van szükség. 1999-ben Phong Q. Nguyen [1] finomította az eredeti GGH-titkosítási sémát, ami lehetővé tette az öt GGH-probléma közül négy megoldását és az utóbbiról részleges információk megszerzését. Míg a GGH bizonyos paraméterek megválasztásával biztonságos lehet, a hagyományos nyilvános kulcsú kriptorendszerekkel szembeni hatékonysága továbbra is vitatható [2] . A titkosításhoz gyakran nagy rácsdimenzióra van szükség, miközben a kulcs mérete megközelítőleg négyzetesen növekszik a rácsmérethez képest [2] .
Az egyetlen rácsséma, amely képes kezelni a nagy dimenziókat, az NTRU [3] .
A GGH tartalmaz egy nyilvános kulcsot és egy privát kulcsot [4] . A privát kulcs az unimoduláris mátrixú rács alapja .
A nyilvános kulcs egy másik alapja az űrlap rácsának .
Álljon az M üzenettér az intervallumhoz tartozó vektorokból .
Üzenet , hiba és nyilvános kulcs adott :
Mátrix jelöléssel:
Emlékeztetni kell arra, hogy egész értékekből áll, egy rácspont, és ezért egyben rácspont is. Ekkor a titkosított szöveg:
A rejtjelezett szöveg visszafejtéséhez a következőket kell kiszámítani:
Az eltávolításhoz , ha elég kicsi, a Babai -féle kerekítési módszert [5] használjuk .
Ezután a szöveghez:
Ez a rész a kriptorendszerek támadásának számos módját tárgyalja [6] .
A kerekítő támadás ennek a kriptográfiai rendszernek a legszembetűnőbb támadása, kivéve a brute force támadást - hibavektor keresését, melynek lényege, hogy a B nyilvános kulcs segítségével ugyanúgy invertálja a függvényt, mint az R privát kulcs használatakor. Mégpedig ismeretében ki tudja számolni . Így találhat egy vektort . 80 LLL alatti dimenzióknál az algoritmus képes helyesen meghatározni a bázist, azonban a 100-as és nagyobb méretektől kezdve ez a támadás rosszabb, mint a hibavektor triviális felsorolása.
Ez az algoritmus a kerekítési támadás nyilvánvaló finomítása. Itt a legjobb közelítési algoritmust használjuk a legrövidebb vektorproblémára. A Babai kerekítési algoritmus helyett a legközelebbi sík algoritmusát használják. Ez így működik. Adott egy pont és redukált bázis c = { } LLL -re . Minden affin szóköz = { + } : } figyelembe vehető. Mindenesetre létezik a ponthoz legközelebb eső hipersík . Továbbá egy pontot vetítünk az (n - 1)-dimenziós térre, amelyet = { } fed le . Ez egy új pontot és egy új bázist ad = { }. Az algoritmus most rekurzív módon halad , hogy megtaláljon egy pontot ebben az (n - 1) dimenziós rácsban a -hoz közel . Végül az algoritmus beállítja . Ez a módszer sokkal gyorsabban működik, mint az előző. A rácsdimenzióval azonban a munkaterhelése is exponenciálisan növekszik. A kísérletek azt mutatják, hogy ha LLL -t használunk rácsredukciós algoritmusként, némi keresési időre van szükség, 110-120 mérettől kezdve. A támadás 140-150 mérettől kezdődően kivitelezhetetlenné válik.
Egy másik módszer, amelyet gyakran használnak a legközelebbi vektor megtalálásának problémájának közelítésére , az n bázisvektor beágyazása és egy olyan pont beágyazása , amelyhez közeli rácspontot kell találni egy (n + 1) dimenziós rácsban.
A rácsredukciós algoritmust ezután arra használjuk, hogy megtaláljuk a legrövidebb nem nulla vektort abban a reményben, hogy ennek a vektornak az első n eleme lesz a legközelebbi pont ehhez . Az ezzel a támadással végzett kísérletek (az LLL -t használva a legrövidebb vektorok megtalálására) azt mutatják, hogy 110-120 körüli dimenzióig működik, ami jobb, mint a kerekítő támadás, ami rosszabb, mint a 100-as dimenzió utáni triviális keresés.
Minden dimenzióban hozzunk létre öt zárt bázist. Minden bázist = + rand - nak választunk , ahol I az azonosságmátrix , a rand pedig egy négyzetmátrix , amelynek tagjait a tartományból egyenletesen választjuk ki . Minden bázishoz az = értéket számítjuk ki , ahol a legnagyobb sor euklideszi normája , és . Minden zárt bázishoz öt nyitott bázis jön létre
= , ahol a kettős ortogonalitási hiba: ahol a mátrix sorát jelöli .
Assault scoreA támadás értékeléséhez ugyanazokat a nyitott és zárt bázisokat használtuk, mint a kerekítéssel történő támadásnál.
Injekciós támadás értékeléseMivel az injekciós támadás „munkaterheléséről” nem beszélhetünk, megmértük azt a maximális értéket (a hibavektorral kapcsolatban), amelyre ez a támadás működik. Ezekhez a kísérletekhez ugyanazokat a zárt és nyitott bázisokat használtuk, mint az előző két támadásnál. Ezután minden nyitott alapot felhasználtunk a funkció több ponton történő értékelésére, több különböző érték használatával , és ellenőriztük, hogy az injekciós támadás helyreállítja-e a titkosított üzenetet.
Legyen a rács bázissal és annak reciproka :
ésUnimoduláris mátrixszal:
ésKapunk:
Legyen az üzenet és a hibavektor, majd a rejtjelezett szöveg:
A visszafejtéshez szüksége lesz:
Ez felfelé kerekít
És az üzenet visszaáll a következővel: