GGH-krypteringsskemaet ( Eng. Goldreich–Goldwasser–Halevi ) er et asymmetrisk kryptografisk system baseret på gitter . Der er også en GGH-signaturordning .
Kryptosystemet er baseret på løsninger på problemet med at finde den korteste vektor og problemet med at finde den nærmeste vektor . GGH-krypteringsskemaet, udgivet i 1997 af videnskabsmændene Oded Goldreich , Shafi Goldwasser og Shai Halevi , bruger en envejs hemmelig indtastningsfunktion , fordi givet ethvert gittergrundlag er det nemt at generere en vektor tæt på et gitterpunkt. For eksempel at tage et gitterpunkt og tilføje en lille fejlvektor. For at vende tilbage fra fejlvektoren til gitterets begyndelsespunkt er der brug for et særligt grundlag. I 1999 foretog Phong Q. Nguyen [1] en forfining af det originale GGH-krypteringsskema, som gjorde det muligt at løse fire af de fem GGH-problemer og få delvis information om sidstnævnte. Mens GGH kan være sikker med visse valg af parametre, forbliver dens effektivitet i forhold til traditionelle public-key kryptosystemer diskutabel [2] . Ofte kræver kryptering en høj gitterdimension, mens nøglestørrelsen vokser tilnærmelsesvis kvadratisk i forhold til gitterstørrelsen [2] .
Det eneste gitterskema, der kan håndtere høje dimensioner, er NTRU [3] .
GGH inkluderer en offentlig nøgle og en privat nøgle [4] . Den private nøgle er bunden af gitteret med en unimodulær matrix .
Den offentlige nøgle er en anden base af formularens gitter .
Lad meddelelsesrummet M bestå af vektorer , der hører til intervallet .
Givet en besked , en fejl og en offentlig nøgle :
I matrixnotation:
Det skal huskes, at det består af heltalsværdier, er et gitterpunkt og derfor også er et gitterpunkt. Så er chifferteksten:
For at dekryptere chifferteksten beregnes:
For at fjerne , hvis den er lille nok, bruges Babais afrundingsmetode [ 5] .
Så for at få teksten:
Dette afsnit diskuterer flere måder at angribe et kryptosystem på [6] .
Afrundingsangrebet er det mest oplagte angreb i dette kryptografiske system, bortset fra brute force angrebet - søgning efter fejlvektoren . Dets essens er at bruge den offentlige nøgle B til at invertere funktionen på samme måde som ved brug af den private nøgle R Nemlig at vide , at du kan beregne . Således kan du finde en vektor . Ved dimensioner under 80 LLL er algoritmen i stand til korrekt at bestemme basen, men startende fra dimensioner 100 og højere er dette angreb værre end en triviel opregning af fejlvektoren.
Denne algoritme er en åbenlys forfining af afrundingsangrebet. Her bruger vi den bedste tilnærmelsesalgoritme til det korteste vektorproblem . Især den nærmeste plan-algoritme bruges i stedet for Babai-afrundingsalgoritmen. Det fungerer sådan her. Givet et point og reduceret grundlag c = { } for LLL . Alle affine mellemrum = { + } : } tages i betragtning. For alle er der et hyperplan tættest på punktet . Yderligere projiceres et punkt på det (n - 1)-dimensionelle rum, som er dækket af = { } . Dette giver et nyt punkt og et nyt grundlag = { }. Algoritmen fortsætter nu rekursivt for at finde et punkt i dette (n - 1)-dimensionelle gitter tæt på . Til sidst sætter algoritmen . Denne metode virker meget hurtigere end den forrige. Dens arbejdsbyrde vokser dog også eksponentielt med gitterdimensionen. Eksperimenter viser, at når man bruger LLL som en gitterreduktionsalgoritme, kræves der noget søgetid, startende fra størrelserne 110-120. Angrebet bliver umuligt at starte ved størrelse 140-150.
En anden måde, der ofte bruges til at tilnærme problemet med at finde den nærmeste vektor, er at indlejre n basisvektorer og et punkt, for hvilket det er nødvendigt at finde et tæt gitterpunkt i et (n + 1)-dimensionelt gitter
Gitterreduktionsalgoritmen bruges derefter til at finde den korteste ikke-nul vektor i , i håb om at de første n elementer i denne vektor vil være de nærmeste punkter til . Eksperimenter udført på dette angreb (ved at bruge LLL som et værktøj til at finde korteste vektorer) indikerer, at det virker op til dimensioner omkring 110-120, hvilket er bedre end afrundingsangrebet, som bliver værre end triviel søgning efter dimension 100.
Lad fem lukkede baser skabes i hver dimension. Hver basis er valgt som = + rand , hvor I er identitetsmatrixen og rand er en kvadratisk matrix , hvis medlemmer er valgt ensartet fra området . For hvert grundlag beregnes værdien = , hvor er den euklidiske norm for den største række , og . For hver lukket basis genereres fem åbne baser
= , hvor er den dobbelte ortogonalitetsdefekt: hvor angiver rækken af matrixen .
Assault scoreFor at evaluere overfaldsangrebet blev de samme åbne og lukkede baser brugt som ved angrebet ved afrunding.
Injection attack evalueringDa man ikke kan tale om "arbejdsbelastningen" ved et injektionsangreb, blev den maksimale værdi (relateret til fejlvektoren), som dette angreb virker for, målt. Til disse eksperimenter blev de samme lukkede baser og åbne baser brugt som ved de to foregående angreb. Derefter blev hver åben basis brugt til at evaluere funktionen på flere punkter ved hjælp af flere forskellige værdier og kontrolleret, om injektionsangrebet genopretter den krypterede besked.
Lad gitteret med base og dets gensidige være :
ogMed en unimodulær matrix:
ogVi får:
Lad meddelelsen og vektoren af fejl Derefter chifferteksten:
For at dekryptere skal du:
Dette rundes op til
Og beskeden gendannes med: