Schema de criptare GGH ( ing. Goldreich–Goldwasser–Halevi ) este un sistem criptografic asimetric bazat pe rețele . Există, de asemenea, o schemă de semnătură GGH .
Criptosistemul se bazează pe soluții la problema găsirii celui mai scurt vector și a problemei găsirii celui mai apropiat vector . Schema de criptare GGH, publicată în 1997 de oamenii de știință Oded Goldreich , Shafi Goldwasser și Shai Halevi , folosește o funcție de intrare secretă unidirecțională , deoarece având în vedere orice bază de rețea, este ușor să generați un vector aproape de un punct de rețea. De exemplu, luând un punct de rețea și adăugând un mic vector de eroare. Pentru a reveni de la vectorul de eroare la punctul inițial al rețelei, este nevoie de o bază specială. În 1999, Phong Q. Nguyen [1] a făcut o rafinare a schemei de criptare GGH inițială, ceea ce a făcut posibilă rezolvarea a patru din cele cinci probleme GGH și obținerea de informații parțiale despre acestea din urmă. În timp ce GGH poate fi sigur cu anumite alegeri de parametri, eficiența sa față de criptosistemele tradiționale cu cheie publică rămâne discutabilă [2] . Adesea, criptarea necesită o dimensiune mare a rețelei, în timp ce dimensiunea cheii crește aproximativ pătratic în raport cu dimensiunea rețelei [2] .
Singura schemă de zăbrele care poate gestiona dimensiuni mari este NTRU [3] .
GGH include o cheie publică și o cheie privată [4] . Cheia privată este baza rețelei cu o matrice unimodulară .
Cheia publică este o altă bază a rețelei formei .
Fie spațiul mesajului M format din vectori aparținând intervalului .
Având un mesaj , o eroare și o cheie publică :
În notație matriceală:
Trebuie reținut că este format din valori întregi, este un punct de rețea și, prin urmare, este și un punct de rețea. Atunci textul cifrat este:
Pentru a decripta textul cifrat se calculează:
Pentru a elimina , dacă este suficient de mic, se folosește metoda de rotunjire a lui Babai [5] .
Apoi pentru a obține textul:
Această secțiune discută mai multe modalități de a ataca un criptosistem [6] .
Atacul de rotunjire este cel mai evident atac al acestui sistem criptografic, cu excepția atacului de forță brută - căutarea vectorului de eroare .. Esența sa este de a folosi cheia publică B pentru a inversa funcția în același mod ca atunci când se folosește cheia privată R. Și anume, știind , puteți calcula . Astfel, puteți găsi un vector . La dimensiuni sub 80 LLL , algoritmul este capabil să determine corect baza, cu toate acestea, pornind de la dimensiunile 100 și mai mari, acest atac este mai rău decât o enumerare trivială a vectorului de eroare.
Acest algoritm este o rafinare evidentă a atacului de rotunjire. Aici folosim cel mai bun algoritm de aproximare pentru cea mai scurtă problemă vectorială. În special, se folosește algoritmul cel mai apropiat plan în locul algoritmului de rotunjire Babai. Funcționează așa. Dat un punct și o bază redusă c = { } pentru LLL . Toate spațiile afine = { + } : } sunt luate în considerare. Pentru toate există un hiperplan cel mai aproape de punct . În plus , un punct este proiectat pe spațiul (n - 1)-dimensional, care este acoperit de = { } . Acest lucru dă un nou punct și o nouă bază = { }. Algoritmul procedează acum recursiv pentru a găsi un punct în această rețea (n - 1)-dimensională aproape de . În cele din urmă, algoritmul stabilește . Această metodă funcționează mult mai rapid decât cea anterioară. Cu toate acestea, volumul său de lucru crește, de asemenea, exponențial odată cu dimensiunea rețelei. Experimentele arată că atunci când se utilizează LLL ca algoritm de reducere a rețelei, este necesar un anumit timp de căutare, începând de la dimensiunile 110-120. Atacul devine nerealizabil începând cu mărimea 140-150.
O altă modalitate care este adesea folosită pentru a aproxima problema găsirii celui mai apropiat vector este de a încorpora n vectori de bază și un punct pentru care este necesar să se găsească un punct al rețelei apropiate într-o rețea (n + 1)-dimensională.
Algoritmul de reducere a rețelei este apoi folosit pentru a găsi cel mai scurt vector diferit de zero în , în speranța că primele n elemente din acest vector vor fi cele mai apropiate puncte de . Experimentele efectuate pe acest atac (folosind LLL ca instrument pentru găsirea celor mai scurti vectori) indică faptul că funcționează până la dimensiuni în jurul valorii de 110-120, ceea ce este mai bun decât atacul de rotunjire, care devine mai rău decât căutarea trivială după dimensiunea 100.
Să fie create cinci baze închise în fiecare dimensiune. Fiecare bază este aleasă ca = + rand , unde I este matricea de identitate și rand este o matrice pătrată ai cărei membri sunt aleși uniform din interval . Pentru fiecare bază se calculează valoarea = , unde este norma euclidiană a celui mai mare rând și . Pentru fiecare bază închisă sunt generate cinci baze deschise
= , unde este defectul de ortogonalitate dublă: unde denotă rândul matricei .
Scorul de atacPentru a evalua atacul de asalt, au fost folosite aceleași baze deschise și închise ca și în atacul prin rotunjire.
Evaluarea atacului de injecțieÎntrucât nu se poate vorbi de „sarcina de lucru” a unui atac de injecție, s-a măsurat valoarea maximă (legată de vectorul de eroare) pentru care funcționează acest atac. Pentru aceste experimente, au fost folosite aceleași baze închise și baze deschise ca și pentru cele două atacuri anterioare. Apoi, fiecare bază deschisă a fost folosită pentru a evalua funcția în mai multe puncte folosind mai multe valori diferite și a verificat dacă atacul de injecție recuperează mesajul criptat.
Fie rețeaua cu bază și reciproca sa :
șiCu o matrice unimodulară:
șiPrimim:
Fie mesajul și vectorul erorilor Apoi textul cifrat:
Pentru a decripta aveți nevoie de:
Aceasta se rotunjește la
Și mesajul este restabilit cu: