NTRUEncrypt - NTRUEncrypt

NTRUEncrypt Kryptosystem klucz publiczny , znany również jako algorytmu szyfrowania NTRU , jest NTRU kratowe oparte alternatywa dla RSA i krzywych eliptycznych kryptografii (ECC) i opiera się na najkrótszym problemu wektora w kratę (który nie jest uznany za łamliwy za pomocą komputery kwantowe ).

Opiera się na domniemanej trudności rozkładania pewnych wielomianów w obciętym pierścieniu wielomianowym na iloraz dwóch wielomianów o bardzo małych współczynnikach. Złamanie kryptosystemu jest silnie związane, choć nie równoważne, z algorytmicznym problemem redukcji sieci w niektórych sieciach . Staranny dobór parametrów jest niezbędny, aby udaremnić niektóre opublikowane ataki.

Ponieważ zarówno szyfrowanie, jak i deszyfrowanie wykorzystują tylko proste mnożenie wielomianowe, operacje te są bardzo szybkie w porównaniu z innymi schematami szyfrowania asymetrycznego, takimi jak RSA, ElGamal i kryptografia krzywych eliptycznych . Jednak NTRUEncrypt nie przeszedł jeszcze porównywalnej analizy kryptograficznej we wdrożonej formie.

Powiązanym algorytmem jest algorytm podpisu cyfrowego NTRUSign .

W szczególności operacje NTRU są oparte na obiektach w obciętym pierścieniu wielomianowym z mnożeniem splotu, a wszystkie wielomiany w pierścieniu mają współczynniki całkowite i stopień co najwyżej N -1:

NTRU jest w rzeczywistości sparametryzowaną rodziną kryptosystemów; każdy system jest określony przez trzy parametry całkowite ( N , p , q ), które reprezentują maksymalny stopień dla wszystkich wielomianów w obciętym pierścieniu R , odpowiednio mały moduł i duży moduł, gdzie zakłada się, że N jest liczbą pierwszą , q jest zawsze większe niż p , a p i qwzględnie pierwsze ; oraz cztery zestawy wielomianów i (wielomianowa część klucza prywatnego, wielomian do generowania klucza publicznego, odpowiednio komunikat i wartość oślepiająca), wszystkie co najwyżej stopnia .

Historia

Kryptosystem klucza publicznego NTRUEncrypt jest stosunkowo nowym kryptosystemem. Pierwsza wersja systemu, nazwana po prostu NTRU, została opracowana około 1996 roku przez trzech matematyków ( Jeffrey Hoffstein , Jill Pipher i Joseph H. Silverman ). W 1996 roku ci matematycy wraz z Danielem Liemanem założyli NTRU Cryptosystems, Inc. i otrzymali patent (obecnie wygasły) na kryptosystem.

W ciągu ostatnich dziesięciu lat ludzie pracowali nad ulepszeniem kryptosystemu. Od pierwszej prezentacji kryptosystemu wprowadzono pewne zmiany mające na celu poprawę zarówno wydajności systemu, jak i jego bezpieczeństwa. Większość ulepszeń wydajności koncentrowała się na przyspieszeniu procesu. Do 2005 r. można znaleźć literaturę opisującą niepowodzenia deszyfrowania NTRUEncrypt. Jeśli chodzi o bezpieczeństwo, od pierwszej wersji NTRUEncrypt wprowadzono nowe parametry, które wydają się bezpieczne dla wszystkich obecnie znanych ataków i rozsądnego wzrostu mocy obliczeniowej.

Teraz system jest w pełni zaakceptowany zgodnie ze standardami IEEE P1363 zgodnie ze specyfikacjami dla opartej na sieci kryptografii klucza publicznego ( IEEE P1363.1 ). Ze względu na szybkość kryptosystemu klucza publicznego NTRUEncrypt (patrz http://bench.cr.yp.to, aby uzyskać wyniki testów porównawczych) i niskie zużycie pamięci (patrz poniżej ), można go używać w aplikacjach takich jak urządzenia mobilne i Smart- karty . W kwietniu 2011 r. NTRUEncrypt został zaakceptowany jako standard X9.98 do użytku w branży usług finansowych.

Generowanie klucza publicznego

Wysłanie tajnej wiadomości od Alicji do Boba wymaga wygenerowania klucza publicznego i prywatnego. Klucz publiczny jest znany zarówno Alicji, jak i Bobowi, a klucz prywatny jest znany tylko Bobowi. Do wygenerowania pary kluczy wymagane są dwa wielomiany f i g , o co najwyżej stopniu i współczynnikach {-1,0,1}. Można je traktować jako reprezentacje klas reszt wielomianów modulo w R . Wielomian musi spełniać dodatkowe wymaganie, że istnieją odwrotności modulo q i modulo p (obliczone przy użyciu algorytmu Euklidesa ), co oznacza, że i muszą być spełnione . Więc kiedy wybrane f nie jest odwracalne, Bob musi wrócić i spróbować innego f .

Zarówno f, jak i (i ) są kluczami prywatnymi Boba. Klucz publiczny h jest generowany obliczając ilość

Przykład : W tym przykładzie parametry ( N , p , q ) będą miały wartości N = 11 , p = 3 i q = 32 , a zatem wielomiany f i g mają co najwyżej stopień 10. Parametry systemowe ( N , p , q ) są znane wszystkim. Wielomiany są wybierane losowo, więc załóżmy, że są reprezentowane przez

Wykorzystując algorytm euklidesowy oblicza się odwrotność f modulo p i modulo q .

Który tworzy klucz publiczny h (znany zarówno Alicji, jak i Bobowi) obliczający produkt

Szyfrowanie

Alicja, która chce wysłać tajną wiadomość do Boba, umieszcza swoją wiadomość w postaci wielomianu m ze współczynnikami w . W nowoczesnych zastosowaniach szyfrowania wielomian wiadomości może być tłumaczony w postaci binarnej lub trójskładnikowej. Po utworzeniu wielomianu wiadomości Alicja losowo wybiera wielomian r o małych współczynnikach (nieograniczonych do zbioru {-1,0,1}), który ma zaciemniać wiadomość.

Za pomocą klucza publicznego Boba h zaszyfrowana wiadomość e jest obliczana:

Ten zaszyfrowany tekst ukrywa wiadomości Alicji i może być bezpiecznie wysłany do Boba.

Przykład : Załóżmy, że Alicja chce wysłać wiadomość, którą można zapisać jako wielomian

oraz że losowo wybrana „wartość zaślepiająca” może być wyrażona jako

Zaszyfrowany tekst e reprezentujący jej zaszyfrowaną wiadomość do Boba będzie wyglądał tak:

Deszyfrowanie

Każdy, kto zna r, może obliczyć komunikat m przez obliczenie e - rh ; więc r nie może być ujawnione przez Alicję. Oprócz publicznie dostępnych informacji Bob zna swój własny klucz prywatny. Oto jak może uzyskać m : Najpierw mnoży zaszyfrowaną wiadomość e i część swojego klucza prywatnego f

Po przepisaniu wielomianów równanie to w rzeczywistości reprezentuje następujące obliczenia:

Zamiast wybierania współczynników między 0 i q - 1 są wybrane w przedziale [- Q / 2, Q / 2], aby zapobiec oryginalna wiadomość nie może być poprawnie odzyskać od Alicja wybiera współrzędne jej komunikatów m w przedział [- p /2, p /2]. Oznacza to, że wszystkie współczynniki leżą już w przedziale [- q /2, q /2], ponieważ wielomiany r , g , f i m oraz prime p mają współczynniki, które są małe w porównaniu z q . Oznacza to, że wszystkie współczynniki pozostają niezmienione podczas redukcji modulo q i że oryginalna wiadomość może zostać poprawnie odzyskana.

Następnym krokiem będzie obliczać się modulo p :

ponieważ .

Wiedząc, że b Bob może użyć drugiej części swojego klucza prywatnego do odzyskania wiadomości Alicji przez pomnożenie b i

ponieważ nieruchomość była wymagana dla .

Przykład : zaszyfrowana wiadomość e od Alicji do Boba jest mnożona przez wielomian f

gdzie Bob używa przedziału [- q /2, q /2] zamiast przedziału [0, q - 1] dla współczynników wielomianu a, aby zapobiec temu, że oryginalna wiadomość może nie zostać poprawnie odzyskana.

Zmniejszenie współczynników a mod p Wyniki w

co równa się .

W ostatnim kroku wynik jest mnożony przez klucz prywatny Boba, aby otrzymać oryginalną wiadomość m

To rzeczywiście jest oryginalna wiadomość, którą Alicja wysłała do Boba!

Ataki

Od czasu propozycji NTRU wprowadzono kilka ataków na system kryptograficzny klucza publicznego NTRUEncrypt. Większość ataków skupia się na całkowitym włamaniu poprzez znalezienie tajnego klucza f zamiast tylko na odzyskaniu wiadomości m . Jeśli wiadomo, że f ma bardzo niewiele niezerowych współczynników, Eve może z powodzeniem przeprowadzić atak brute force , próbując wszystkich wartości f . Kiedy Ewa chce wiedzieć, czy f ´ jest kluczem tajnym, po prostu oblicza . Jeśli ma małe współczynniki, może to być tajny klucz f , a Ewa może sprawdzić, czy f ' jest tajnym kluczem, używając go do odszyfrowania wiadomości, którą sama zaszyfrowała. Ewa mogłaby również wypróbować wartości g i sprawdzić, czy ma małe wartości.

Możliwe jest zamontowanie ataku typu „ meet-in-the-middle”, który jest potężniejszy. Może skrócić czas wyszukiwania o pierwiastek kwadratowy. Atak opiera się na właściwości, która .

Ewa chce znaleźć i takie, które trzyma i takie, że mają własność

Jeśli f ma d jedynki i N - d zer, to Ewa tworzy wszystko możliwe iw których obie mają długość (np. pokrywa najniższy współczynnik f i najwyższy) z d /2 jedynkami. Następnie oblicza dla wszystkich i porządkuje je w pojemnikach na podstawie pierwszych k współrzędnych. Następnie oblicza wszystko i porządkuje je w pojemnikach nie tylko na podstawie pierwszych k współrzędnych, ale także na podstawie tego, co się stanie, jeśli dodasz 1 do pierwszych k współrzędnych. Następnie należy sprawdzić pojemniki, które zawierają zarówno a i sprawdzić, czy nieruchomość posiada.

Atak redukcji sieci jest jedną z najbardziej znanych i jedną z najbardziej praktycznych metod złamania NTRUEncrypt. W pewnym sensie można to porównać do faktoryzacji modułu w RSA. Najczęściej używanym algorytmem do ataku redukcji sieci jest algorytm Lenstra-Lenstra-Lovász . Ponieważ klucz publiczny h zawiera zarówno f, jak i g, można spróbować je uzyskać z h . Jednak znalezienie tajnego klucza jest zbyt trudne, gdy parametry NTRUEncrypt są wystarczająco bezpieczne. Atak redukcji sieci staje się trudniejszy, jeśli wymiar sieci staje się większy, a najkrótszy wektor wydłuża się.

Wybrany atak zaszyfrowany jest również sposób, który odzyskuje się tajny klucz K i w ten sposób prowadzi do całkowitego rozpadu. W tym ataku Ewa próbuje uzyskać własną wiadomość z zaszyfrowanego tekstu, a tym samym próbuje uzyskać tajny klucz. W tym ataku Ewa nie ma żadnej interakcji z Bobem.

Jak to działa :

Pierwszy Ewa tworzy tekst zaszyfrowany , tak że i Kiedy Ewa pisze po schodach do rozszyfrowania e (bez faktycznego obliczania wartości ponieważ nie wie, f) dowiaduje :

W którym takie, że

Przykład :

Wtedy K staje się .

Zmniejszenie współczynników wielomianów mod p naprawdę zmniejsza współczynniki . Po mnożeniu przez , Ewa znajduje:

Ponieważ c zostało wybrane jako wielokrotność p , m można zapisać jako

Co oznacza, że .

Teraz, jeśli f i g mają kilka współczynników, które są takie same przy tych samych współczynnikach, K ma kilka niezerowych współczynników i przez to jest małe. Próbując różnych wartości K, atakujący może odzyskać f .

Szyfrując i odszyfrowując wiadomość zgodnie z NTRUEncrypt, atakujący może sprawdzić, czy funkcja f jest poprawnym tajnym kluczem, czy nie.

Poprawa bezpieczeństwa i wydajności

Używając najnowszych sugerowanych parametrów (patrz poniżej ), kryptosystem klucza publicznego NTRUEncrypt jest bezpieczny dla większości ataków. Jednak nadal trwa walka między wydajnością a bezpieczeństwem. Trudno jest poprawić bezpieczeństwo bez spowalniania prędkości i na odwrót.

Jednym ze sposobów na przyspieszenie procesu bez szkody dla skuteczności algorytmu jest wprowadzenie pewnych zmian w tajnym kluczu f . Najpierw skonstruuj f takie, że , w którym F jest małym wielomianem (tj. współczynniki {-1,0, 1}). Konstruując f w ten sposób, f jest odwracalnym mod p . W rzeczywistości oznacza to, że Bob nie musi faktycznie obliczać odwrotności i że Bob nie musi przeprowadzać drugiego kroku deszyfrowania. Dlatego konstruowanie f w ten sposób oszczędza dużo czasu, ale nie wpływa na bezpieczeństwo NTRUEncrypt, ponieważ jest tylko łatwiejsze do znalezienia, ale f nadal jest trudne do odzyskania. W tym przypadku f ma współczynniki różne od -1, 0 lub 1, z powodu mnożenia przez p . Ale ponieważ Bob mnoży przez p, aby wygenerować klucz publiczny h , a później redukuje zaszyfrowany tekst modulo p , nie będzie to miało wpływu na metodę szyfrowania.

Po drugie, f można zapisać jako iloczyn wielu wielomianów, tak że wielomiany mają wiele zerowych współczynników. W ten sposób trzeba przeprowadzić mniej obliczeń.

W większości komercyjnych zastosowań NTRUEncrypt używany jest parametr N =251. Aby uniknąć ataków kratowych, ataków brute force i ataków typu „meet-in-the-middle”, f i g powinny mieć około 72 niezerowe współczynniki.

Według najnowszych badań za bezpieczne uważane są następujące parametry:

Tabela 1: Parametry

n Q P
Umiarkowane bezpieczeństwo 167 128 3
Standardowe zabezpieczenia 251 128 3
Wysoki poziom bezpieczeństwa 347 128 3
Najwyższe bezpieczeństwo 503 256 3

Bibliografia

Zewnętrzne linki