NTRUEncrypt ( forkortelse for Nth-degree TRUNcated polynomial ring eller Number Theorists aRe Us) er et kryptografisk system med offentlig nøgle, tidligere kaldet NTRU .
NTRUEncrypt-kryptosystemet, baseret på et gitterkryptosystem , blev skabt som et alternativ til RSA og Elliptic Curve Cryptosystems (ECC) . Algoritmens stabilitet sikres af vanskeligheden ved at finde den korteste gittervektor , som er mere modstandsdygtig over for angreb udført på kvantecomputere . I modsætning til sine konkurrenter RSA , ECC , Elgamal bruger algoritmen operationer på ringen af trunkerede polynomier med en grad, der ikke overstiger :
Et sådant polynomium kan også repræsenteres af en vektor
Som enhver ung algoritme er NTRUEncrypt dårligt forstået, selvom den officielt blev godkendt til brug i finansiering af Accredited Standards Committee X9 . [en]
Der er en open source- implementering af NTRUEncrypt . [2]
NTRUEncrypt, oprindeligt kaldet NTRU, blev opfundet i 1996 og introduceret til verden på CRYPTO , RSA Conference , Eurocrypt . Grunden, der fungerede som begyndelsen på udviklingen af algoritmen i 1994 , var artiklen [3] , som talte om letheden ved at knække eksisterende algoritmer på kvantecomputere, hvilket, som tiden har vist, ikke er langt væk [4] . Samme år udviklede matematikerne Jeffrey Hoffstein, Jill Pipher og Joseph H. Silverman, som udviklede systemet sammen med grundlæggeren af NTRU Cryptosystems, Inc. (senere omdøbt til SecurityInnovation), patenterede Daniel Lieman deres opfindelse. [5]
NTRU opererer på højst gradspolynomier
hvor koefficienterne er heltal. Med hensyn til operationerne af addition og multiplikation modulo et polynomium , danner sådanne polynomier en ring R , kaldet ringen af trunkerede polynomier , som er isomorf til kvotientringen
NTRU bruger den trunkerede polynomiumring R sammen med modulo de coprime tal p og q til at reducere polynomiernes koefficienter.
Algoritmen bruger også inverse polynomier i ringen af trunkerede polynomier. Det skal bemærkes, at ikke ethvert polynomium har en invers, men hvis der findes et inverst polynomium, så er det let at beregne det. [6] [7]
Følgende muligheder vil blive valgt som et eksempel:
Parameterbetegnelser | N | q | s |
---|---|---|---|
Parameterværdier | elleve | 32 | 3 |
For at sende en besked fra Alice til Bob kræves en offentlig og privat nøgle. Både Bob og Alice kender den offentlige nøgle, kun Bob kender den private nøgle, som han bruger til at generere den offentlige nøgle. For at gøre dette vælger Bob to "små" polynomier f g fra R . Polynomiers "småhed" er underforstået i den forstand, at den er lille i forhold til et vilkårligt polynomium modulo q : i et vilkårligt polynomium skal koefficienterne være tilnærmelsesvis ensartet fordelt modulo q , mens de i et lille polynomium er meget mindre end q . Småheden af polynomier bestemmes ved hjælp af tallene df og dg :
Grunden til at polynomierne er valgt på denne måde er, at f sandsynligvis vil have en invers, men g vil bestemt ikke ( g (1) = 0, og element nul har ingen invers).
Bob skal holde disse polynomier hemmelige. Dernæst beregner Bob de inverse polynomier og , det vil sige sådan, at:
og .Hvis f ikke har et inverst polynomium, så vælger Bob et andet polynomium f .
Den hemmelige nøgle er et par , og den offentlige nøgle h beregnes med formlen:
EksempelLad os for eksempel tage df =4 og dg =3. Så kan man som polynomier vælge
Dernæst søges der for polynomiet f inverse polynomier modulo p =3 og q =32:
Det sidste trin er at beregne den offentlige nøgle h selv :
Nu hvor Alice har den offentlige nøgle, kan hun sende den krypterede besked til Bob. For at gøre dette skal du repræsentere meddelelsen som et polynomium m med koefficienter modulo pvalgt fra området (- p /2, p /2]. Det vil sige, m er et "lille" polynomium modulo q . Dernæst skal Alice vælg et andet "lille" polynomium r , som kaldes "blændende", defineret af tallet dr :
Ved at bruge disse polynomier opnås den krypterede meddelelse med formlen:
I dette tilfælde vil enhver, der kender (eller kan beregne) det blændende polynomium r , kunne læse meddelelsen m .
EksempelAntag at Alice ønsker at sende en besked repræsenteret som et polynomium
og valgte et "blindende" polynomium, for hvilket dr = 3:
Så vil chifferteksten e klar til at blive sendt til Bob være:
Nu, efter at have modtaget den krypterede besked e , kan Bob dekryptere den ved hjælp af sin private nøgle. Først får han et nyt mellempolynomium:
Hvis vi skriver chifferteksten, får vi kæden:
og endelig:
Efter at Bob har beregnet polynomiet a modulo q, skal han vælge dets koefficienter fra området (- q /2, q /2] og derefter beregne polynomiet b opnået fra polynomiet a ved reduktionsmodulo p:
siden .
Nu, ved at bruge den anden halvdel af den hemmelige nøgle og det resulterende polynomium b , kan Bob dekryptere meddelelsen:
Det er let at se det
Det resulterende polynomium c er faktisk den oprindelige meddelelse m .
Eksempel : Bob modtog en krypteret besked e fra Alice
Ved at bruge den hemmelige nøgle f får Bob et polynomium a
med koefficienter, der hører til intervallet (- q /2, q /2]. Dernæst transformerer du polynomium a til polynomium b , hvilket reducerer koefficienterne modulo p.
Det sidste trin er at gange polynomiet b med den anden halvdel af den private nøgle
Hvilket er den originale besked, som Alice sendte.
Det første af de mulige angreb er brute -force angrebet . Her er flere varianter af opregning mulige: enten at sortere gennem alle og kontrollere for små koefficienter for resultaterne , som ifølge ideen skulle have været små, eller at sortere gennem alle , også kontrollere for små koefficienter af resultatet . I praksis er plads mindre end plads , derfor bestemmes holdbarhed af plads . Og vedholdenheden af et individuelt budskab bestemmes af rummet .
Der er en mere optimal variant af opregningsmøde i midten foreslået af Andrew Odlyzhko . Denne metode reducerer antallet af muligheder til kvadratroden:
Sikkerhed for den private nøgle = = ,
Og vedholdenheden af en enkelt besked = = .
Et møde-i-midt-angreb bytter den tid, der er nødvendig til beregning, med den nødvendige hukommelse til at gemme midlertidige resultater. Så hvis vi vil sikre systemets stabilitet , skal vi vælge en størrelsesnøgle .
Et ret alvorligt angreb på en enkelt besked, som kan undgås ved at følge en simpel regel – send ikke den samme besked flere gange. Essensen af angrebet er at finde en del af koefficienterne for det blændende polynomium r . Og de resterende koefficienter kan simpelthen sorteres fra, og derved læse beskeden. Da den samme krypterede meddelelse med forskellige blændende polynomier er , hvor i=1, … n. Du kan evaluere et udtryk , der er nøjagtigt lig med . For et tilstrækkeligt stort antal transmitterede meddelelser (f.eks. for n = 4, 5, 6) er det muligt, baseret på koefficienternes lillehed, at genvinde det meste af det blændende polynomium .
Betragt et gitter genereret af rækkerne af en 2 N × 2 N matrix med determinant , bestående af fire blokke med størrelse N × N :
Da den offentlige nøgle er , derfor indeholder dette gitter en vektor med størrelse 2 N , som først indeholder koefficienterne for vektoren f , ganget med koefficienten , derefter koefficienterne for vektoren g . Opgaven med at finde en sådan vektor, for store N og korrekt udvalgte parametre, anses for vanskelig at løse.
Det valgte chiffertekstangreb er det farligste angreb. Det blev foreslået af Éliane Jaulmes og Antoine Joux [8] i 2000 på CRYPTO-konferencen. Essensen af dette angreb er at vælge sådan et polynomium a(x), så . Samtidig interagerer Eve ikke med hverken Bob eller Alice.
Hvis vi tager chifferteksten , hvor , får vi et polynomium . Da koefficienterne for polynomiet f og g tager værdierne "0", "1" og "-1", vil koefficienterne for polynomiet a tilhøre mængden {-2py , -py , 0, py, 2py}. Hvis py er valgt sådan, at , så når man reducerer modulo af polynomiet a(x), vil kun koefficienter lig med -2py eller 2py blive givet . Lad nu den i -te koefficient være lig med 2py , så vil polynomiet a(x) efter moduloreduktion blive skrevet som:
,og polynomiet b(x) :
,beregn endelig:
.Hvis vi nu betragter alle mulige i , så i stedet for individuelle , kan vi komponere et polynomium K og den dekrypterede meddelelse vil have formen:
,eller hemmelig nøgle:
,Sandsynligheden for at finde nøglekomponenter på denne måde er omkring 0,1 ... 0,3 for en nøgle på størrelse 100. For store nøgler (~500) er denne sandsynlighed meget lille. Ved at anvende denne metode et tilstrækkeligt antal gange kan du gendanne nøglen fuldstændigt.
For at beskytte mod denne type angreb bruges den avancerede NTRU-FORST- krypteringsmetode . Til kryptering bruges et blændende polynomium , hvor H er en kryptografisk stærk hashfunktion , og R er et tilfældigt sæt bits . Efter at have modtaget beskeden, dekrypterer Bob den. Dernæst krypterer Bob den nyligt dekrypterede besked på samme måde som Alice gjorde. Derefter sammenligner den den med den modtagne. Hvis beskederne er identiske, så accepterer Bob beskeden, ellers afviser han den.
På trods af det faktum, at der er hurtige algoritmer til at finde det inverse polynomium, foreslog udviklerne til kommerciel brug som en hemmelig nøgle f at tage:
,hvor F er et lille polynomium. Den således valgte nøgle har følgende fordele:
En af undersøgelserne arkiveret 6. oktober 2016 på Wayback Machine viste, at NTRU er 4 størrelsesordener hurtigere end RSA og 3 størrelsesordener hurtigere end ECC .
Som tidligere nævnt foreslår udviklerne, for at sikre den høje stabilitet af algoritmen, kun at bruge de anbefalede parametre angivet i tabellen:
Betegnelse | N | q | s | df | dg | dr | Garanteret holdbarhed |
---|---|---|---|---|---|---|---|
NTRU167:3 | 167 | 128 | 3 | 61 | tyve | atten | Moderat holdbarhed |
NTRU251:3 | 251 | 128 | 3 | halvtreds | 24 | 16 | Standard modstandsniveau |
NTRU503:3 | 503 | 256 | 3 | 216 | 72 | 55 | Det højeste niveau af holdbarhed |
NTRU167:2 | 167 | 127 | 2 | 45 | 35 | atten | Moderat holdbarhed |
NTRU251:2 | 251 | 127 | 2 | 35 | 35 | 22 | Standard modstandsniveau |
NTRU503:2 | 503 | 253 | 2 | 155 | 100 | 65 | Det højeste niveau af holdbarhed |