Puncte:4

Diferența dintre FFT și NTT

drapel in

Care sunt principalele diferențe dintre transformata Fourier rapidă (FFT) și transformarea teoretică numerică (NTT)?

De ce folosim NTT și nu FFT în aplicațiile criptografice?

Care dintre ele este o generalizare a celeilalte?

Puncte:3
drapel ng

Disclaimer: Matematica Comp-Sci înainte, matematicienii adecvați au grijă. ;)

Transformată Fourier rapidă (FFT) și transformată Fourier discretă (DFT)

FFT este un algoritm care permite calcularea DFT, precum și inversul acestuia, pentru semnale cu valori complexe.

Adică: dat un semnal cu valori complexe $x = (x_0, \ldots, x_{n-1})$ de lungime $n$, FFT permite calcularea acestuia $\operatorname{DFT}(x) = (X_0, \ldots, X_{n-1})$, ale căror componente sunt definite ca: $$ X_l = \sum_{j = 0}^{n-1} x_j g^{-jl} $$ Unde $g$ este un primitiv $n$-a rădăcină a unității în domeniul complex, de ex. $e^{i 2 \pi / n}$.

Probleme atunci când lucrați în domeniul complex

În informatică există, totuși, dezavantaje în a lucra în domeniul numerelor complexe. Și anume:

  • Trebuie să ne îngrijorăm cu privire la problemele de rotunjire
  • Operațiile pe numere în virgulă mobilă tind să fie mai puțin performante decât pe numere întregi

Generalizarea la alte structuri algebrice cu transformarea teoretică a numărului (NTT)

Cu toate acestea, se dovedește că definiția DFT este, de asemenea, semnificativă pentru alte structuri algebrice decât câmpul complex, atâta timp cât pot fi găsite rădăcini adecvate ale unității.

NTT se referă apoi la această „conversie” a problemei într-o altă structură, în special la efectuarea DFT pe un câmp finit - de obicei câmpul finit $F_p$ de numere întregi modulo un prim $p$.

Avantajele lucrului într-un domeniu finit

Lucrul într-un câmp finit înseamnă că:

  • Nu trebuie să ne facem griji cu privire la rotunjire
  • Operațiile cu numere întregi tind să fie performante
  • Anumite operații cu numere întregi (de exemplu, înmulțiri cu puteri a doi) pot fi făcute și mai performante

De aceea, în informatică, avem tendința de a folosi un NTT pentru a lucra pe un câmp finit, mai degrabă decât pe un câmp complex.

rezumat

Pentru a reveni la întrebările dvs.:

  • În informatică, avem tendința de a folosi un NTT mai degrabă decât un FFT în domeniul complex, deoarece este mai practic și mai performant
  • Într-un anumit sens, ați putea considera generic-ring-DFT o generalizare a complex-field-DFT (calculat prin FFT) la alte structuri algebrice. Atunci NTT ar fi aplicarea acestui generic-ring-DFT la câmpuri finite. Totuși, nu știu dacă aș numi un NTT în sine o generalizare a FFT.

Citind

Cele de mai sus se bazează în mare parte pe „Numerele prime: o perspectivă computațională” (978-0387252827) a lui Crandall & Pomerance, care a reprezentat cea mai mare parte a expunerii mele la subiect. Există și articole Wikipedia despre DFT peste câmpul complex, generalizarea lui la inele arbitrare, cea din urmă are o secțiune despre NTT-ul permițând aplicarea unui câmp finit

Puncte:3
drapel sa

TL;DR Aveți nevoie de NTT-uri pentru aritmetica exactă în aplicațiile cripto.

FFT este doar un algoritm pentru evaluarea DFT tradițională, pentru vectori cu valori complexe (relele reale și întregi sunt subseturi ale câmpului complex, deci se aplică și acestora) $(f_0,\dots,f_{N-1})$ de lungime $N$ care este definită peste câmpul complex $\mathbb{C}$ folosind rădăcina complexă a unității de ordine $N.$

Aici, avem $$ F(\lambda)=\sum_{k=0}^{N-1} f_k e^{2 \pi i \lambda k/N}= \sum_{k=0}^{N-1} f_k \xi_N^{\lambda k}, \quad \xi_N:=e^{2 \pi i /N}, \lambda=0,1,\ldots,N-1 $$

O rădăcină atât de complexă a unității există pentru toți $N$, cu toate acestea, FFT este mai eficient dacă $N$ este compozit, cel mai mare randament fiind obtinut pentru $N=2^m,$ pentru un număr întreg $m.$

Probleme cu DFT: Pentru criptografie lucrăm cu obiecte finite și putem obține de fapt o precizie deplină care nu se aplică în practică în domeniul complex, deoarece argumentul rădăcinii complexe a unității este irațional și aritmetica exactă este imposibilă în general.

Acum, NTT-urile, indiferent dacă se bazează pe un câmp finit sau pe rădăcini întregi ale unității modulo anumite inele, dă-ne precizie deplină (DFT-urile complexe nu pot face acest lucru și nu pot fi utilizate pentru cripto) și sunt evaluate în inelul nativ care este utilizat în criptografie. Sunt încă DFT-uri. Și pentru anumite lungimi pot avea implementări eficiente.

Alegerea unui NTT:

Să presupunem că vectorul de intrare este o secvență de $N$ numere întregi nenegative.

În general, trebuie să alegeți un modul $M$ astfel încât $1â¤N<M$ și fiecare valoare de intrare este în interval $[0,M).$ Dacă spunem că implementăm cripto, știm deja modulul.

Selectați un număr întreg $kâ¥1$ și definiți $N'=kN+1$ ca modul de lucru. Avem nevoie $N'â¥M,$ iar pentru simplitate ia $N'$ să fie număr prim. Teorema lui Dirichlet garantează că dat $N$ și $M,$ Poți alege $k$ a face $N'$ un prim.

pentru că $N'$ este prim, grupul multiplicativ al $\mathbb{Z}_{N'}$ are dimensiune $Ï(N')=N'â1=kN$ precum și un generator $g,$ care este și o primitivă (N'â1)-a rădăcină a unității.

Lăsa $\omegaâ¡g^k \pmod N'.$ Atunci $\omega$ este un primitiv $N$a-a rădăcină a unității, așa cum este necesar pentru a obține o DFT de lungime $N,$ deci acesta este NNT: $$ F(\lambda)=\sum_{k=0}^{N-1} f_k \omega^{\lambda k},\quad \lambda \in \mathbb{Z}_N. $$ Este posibil să aplicați reduceri Montgomery (sau reduceri Barrett mai puțin eficiente) pentru a accelera aritmetica modulară într-un NTT.

C.S. avatar
drapel in
Mulțumesc! Ce vrei să spui prin „cu obiecte finite, putem obține o precizie deplină care nu se aplică în practică în domeniul complex”? Ce intelegi prin "precizie"?
kodlu avatar
drapel sa
Aritmetica întregului este exactă. Dacă faceți reduceri modulo, aceasta este, de asemenea, finită, deoarece valoarea maximă este modulul minus unu. În câmpul complex, operațiunile trebuie efectuate cu cantități de lungime de biți finite care sunt prin natura lor aproximări ale numerelor reale. Precizia este reprezentată de numărul de biți utilizați.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.