NTRUEncrypt ( zkratka pro Nth-degree TRUncated polynomial ring nebo Number Theorists aRe Us) je kryptografický systém s veřejným klíčem dříve nazývaný NTRU .
Kryptosystém NTRUEncrypt, založený na mřížkovém kryptosystému , byl vytvořen jako alternativa k RSA a Elliptic Curve Cryptosystems (ECC) . Stabilita algoritmu je zajištěna obtížným nalezením nejkratšího mřížkového vektoru , který je odolnější vůči útokům prováděným na kvantových počítačích . Na rozdíl od svých konkurentů RSA , ECC , Elgamal používá algoritmus operace na kruhu zkrácených polynomů stupně nepřesahujícího :
Takový polynom může být také reprezentován vektorem
Jako každý mladý algoritmus je NTRUEncrypt špatně pochopený, ačkoli byl oficiálně schválen pro použití ve financích akreditovaným výborem pro standardy X9 . [jeden]
Existuje open source implementace NTRUEncrypt . [2]
NTRUEncrypt, původně nazývaný NTRU, byl vynalezen v roce 1996 a představen světu na konferencích CRYPTO , RSA Conference , Eurocrypt . Důvodem, který posloužil jako počátek vývoje algoritmu v roce 1994 , byl článek [3] , který hovořil o snadnosti prolomení existujících algoritmů na kvantových počítačích, k čemuž, jak čas ukázal, není daleko [4] . Ve stejném roce matematici Jeffrey Hoffstein, Jill Pipher a Joseph H. Silverman, kteří systém vyvinuli společně se zakladatelem NTRU Cryptosystems, Inc. (později přejmenován na SecurityInnovation), Daniel Lieman patentoval jejich vynález. [5]
NTRU pracuje maximálně s polynomy stupně
kde koeficienty jsou celá čísla. S ohledem na operace sčítání a násobení modulo a polynom , takové polynomy tvoří kruh R , nazývaný kruh zkrácených polynomů , který je izomorfní s podílovým kruhem
NTRU používá zkrácený polynomický kruh R ve spojení s modulo koprimými čísly p a q ke snížení koeficientů polynomů.
Algoritmus také používá inverzní polynomy v kruhu zkrácených polynomů. Je třeba poznamenat, že ne každý polynom má inverzní, ale pokud inverzní polynom existuje, je snadné jej vypočítat. [6] [7]
Jako příklad budou vybrány následující možnosti:
Označení parametrů | N | q | p |
---|---|---|---|
Hodnoty parametrů | jedenáct | 32 | 3 |
K odeslání zprávy od Alice Bobovi je potřeba veřejný a soukromý klíč. Bob i Alice znají veřejný klíč, pouze Bob zná soukromý klíč, který používá ke generování veřejného klíče. K tomu si Bob vybere dva „malé“ polynomy f g z R . „Malost“ polynomů je implikována v tom smyslu, že je malá vzhledem k libovolnému polynomu modulo q : v libovolném polynomu musí být koeficienty přibližně rovnoměrně rozložené modulo q , zatímco v malém polynomu jsou mnohem menší než q . Malost polynomů se určuje pomocí čísel df a dg :
Důvod, proč jsou polynomy zvoleny tímto způsobem, je ten, že f bude mít pravděpodobně inverzi, ale g rozhodně ne ( g (1) = 0 a prvek nula nemá inverzi).
Bob musí tyto polynomy udržet v tajnosti. Dále Bob vypočítá inverzní polynomy a , tedy takové, že:
a .Jestliže f nemá inverzní polynom, pak Bob zvolí jiný polynom f .
Tajný klíč je pár a veřejný klíč h se vypočítá podle vzorce:
PříkladVezměme například df =4 a dg =3. Pak si jako polynomy můžeme vybrat
Dále se pro polynom f hledají inverzní polynomy modulo p =3 a q =32:
Posledním krokem je výpočet samotného veřejného klíče h :
Nyní, když má Alice veřejný klíč, může poslat zašifrovanou zprávu Bobovi. Chcete-li to provést, musíte zprávu reprezentovat jako polynom m s koeficienty modulo p zvolenými z rozsahu (- p /2, p /2]. To znamená, že m je „malý“ polynom modulo q . Dále Alice potřebuje zvolte jiný „malý“ polynom r , který se nazývá „oslňující“, definovaný číslem dr :
Pomocí těchto polynomů se zašifrovaná zpráva získá podle vzorce:
V tomto případě každý, kdo zná (nebo umí vypočítat) oslepující polynom r , bude schopen přečíst zprávu m .
PříkladPředpokládejme, že Alice chce poslat zprávu reprezentovanou jako polynom
a zvolili "slepý" polynom, pro který dr = 3:
Šifrovaný text e připravený k odeslání Bobovi pak bude:
Nyní, když Bob obdržel zašifrovanou zprávu e , ji může dešifrovat pomocí svého soukromého klíče. Nejprve získá nový střední polynom:
Pokud napíšeme šifrový text, dostaneme řetězec:
a nakonec:
Poté, co Bob vypočítal polynom a modulo q, musí vybrat jeho koeficienty z rozsahu (- q /2, q /2] a poté vypočítat polynom b získaný z polynomu a redukcí modulo p:
od .
Nyní může Bob pomocí druhé poloviny tajného klíče a výsledného polynomu b dešifrovat zprávu:
Je snadné to vidět
Výsledný polynom c je skutečně původní zprávou m .
Příklad : Bob obdržel zašifrovanou zprávu e od Alice
Pomocí tajného klíče f získá Bob polynom a
s koeficienty náležejícími do intervalu (- q /2, q /2]. Dále převedeme polynom a na polynom b , snížíme koeficienty modulo p.
Posledním krokem je vynásobení polynomu b druhou polovinou soukromého klíče
Což je původní zpráva, kterou Alice vysílala.
První z možných útoků je útok hrubou silou . Zde je možných několik variant výčtu: buď třídit přes všechny a kontrolovat malou hodnotu koeficientů výsledků , které by podle představy měly být malé, nebo třídit přes všechny , také kontrolovat malost koeficientů výsledku . V praxi je prostor menší než prostor , takže trvanlivost je určena prostorem . A trvání individuální zprávy je určeno prostorem .
Existuje optimálnější varianta výčtového setkání uprostřed , kterou navrhl Andrew Odlyzhko . Tato metoda snižuje počet možností na druhou odmocninu:
Zabezpečení soukromého klíče = = ,
A vytrvalost jediné zprávy = = .
Útok typu meet-in-the-middle vymění čas potřebný pro výpočet za paměť potřebnou k uložení dočasných výsledků. Pokud tedy chceme zajistit stabilitu systému , musíme zvolit velikost klíče .
Poměrně závažný útok na jednu zprávu, kterému se lze vyhnout dodržováním jednoduchého pravidla – neposílat stejnou zprávu vícekrát. Podstatou útoku je nalezení části koeficientů oslepujícího polynomu r . A zbývající koeficienty lze jednoduše roztřídit, a tím zprávu přečíst. Protože stejná zašifrovaná zpráva s různými oslepujícími polynomy je , kde i=1, … n. Můžete vyhodnotit výraz , který se přesně rovná . Pro dostatečně velký počet přenesených zpráv (řekněme pro n = 4, 5, 6) je možné na základě malých koeficientů obnovit většinu oslepujícího polynomu .
Uvažujme mřížku generovanou řádky matice 2 N × 2 N s determinantem , která se skládá ze čtyř bloků o velikosti N × N :
Protože veřejný klíč je , pak tedy tato mřížka obsahuje vektor o velikosti 2 N , který obsahuje nejprve koeficienty vektoru f násobené koeficientem , potom koeficienty vektoru g . Úkol najít takový vektor, pro velké N a správně zvolené parametry, je považován za obtížně řešitelný.
Zvolený útok pomocí šifrovaného textu je nejnebezpečnějším útokem. Navrhli to Éliane Jaulmes a Antoine Joux [8] v roce 2000 na konferenci CRYPTO. Podstatou tohoto útoku je vybrat takový polynom a(x) tak, aby . Zároveň Eva neinteraguje ani s Bobem, ani s Alicí.
Vezmeme-li šifrový text , kde , dostaneme polynom . Protože koeficienty polynomů f a g nabývají hodnot „0“, „1“ a „-1“, budou koeficienty polynomu a patřit do množiny {-2py , -py , 0, py, 2py}. Je-li py zvoleno tak, že , pak při zmenšení modulu polynomu a(x) budou dány pouze koeficienty rovné -2py nebo 2py . Nyní nechť je i -tý koeficient roven 2py , pak polynom a(x) po modulo redukci zapíšeme jako:
,a polynom b(x) :
,konečně spočítat:
.Nyní, pokud vezmeme v úvahu všechna možná i , pak místo individuálního můžeme sestavit polynom K a dešifrovaná zpráva bude mít tvar:
,nebo tajný klíč:
,Pravděpodobnost nalezení klíčových komponent tímto způsobem je asi 0,1 ... 0,3 pro klíč o velikosti 100. U velkých klíčů (~500) je tato pravděpodobnost velmi malá. Použitím této metody dostatečným počtem opakování můžete klíč zcela obnovit.
K ochraně proti tomuto typu útoku se používá pokročilá metoda šifrování NTRU-FORST . Pro šifrování se používá oslepující polynom , kde H je kryptograficky silná hashovací funkce a R je náhodná sada bitů . Po obdržení zprávy ji Bob dešifruje. Dále Bob zašifruje nově dešifrovanou zprávu stejným způsobem jako Alice. Poté jej porovná s přijatým. Pokud jsou zprávy totožné, Bob zprávu přijme, jinak ji odmítne.
Navzdory skutečnosti, že existují rychlé algoritmy pro nalezení inverzního polynomu, vývojáři navrhli pro komerční použití jako tajný klíč f :
,kde F je malý polynom. Takto zvolený klíč má následující výhody:
Jedna ze studií archivovaná 6. října 2016 na Wayback Machine ukázala, že NTRU je o 4 řády rychlejší než RSA a o 3 řády rychlejší než ECC .
Jak již bylo zmíněno, vývojáři, aby byla zajištěna vysoká stabilita algoritmu, doporučují používat pouze doporučené parametry uvedené v tabulce:
Označení | N | q | p | df | dg | Dr | Zaručená životnost |
---|---|---|---|---|---|---|---|
NTRU167:3 | 167 | 128 | 3 | 61 | dvacet | osmnáct | Střední trvanlivost |
NTRU251:3 | 251 | 128 | 3 | padesáti | 24 | 16 | Standardní úroveň odporu |
NTRU503:3 | 503 | 256 | 3 | 216 | 72 | 55 | Nejvyšší úroveň odolnosti |
NTRU167:2 | 167 | 127 | 2 | 45 | 35 | osmnáct | Střední trvanlivost |
NTRU251:2 | 251 | 127 | 2 | 35 | 35 | 22 | Standardní úroveň odporu |
NTRU503:2 | 503 | 253 | 2 | 155 | 100 | 65 | Nejvyšší úroveň odolnosti |