Puncte:2

Cum este posibil să derivăm exponentul public dintr-o cheie privată RSA?

drapel es

Voi scrie formule pe care le cunosc și le folosesc pentru a genera chei RSA.

  1. noi alegem $p$, $q$
  2. $N = p\cdot q$
  3. $\varphi(n) = (p-1)\cdot(q-1)$
  4. alege $e$ precum
    • $1 < e < \varphi(N)$
    • $e$ este coprim cu $N$, $\varphi(n)$
  5. alege $d$ astfel încât $d\cdot e\bmod\varphi(n)=1$

Asta e. Cu acestea, dacă avem $p=2$ și $q=7$, am primit cu succes $d=11$ și $e=5$ care este corect.

Acum, imaginați-vă că am doar cheie privată, care este $(11,14)$ (acesta este $d=11$, $N=14$). Cum pot obține $e=5$. Inteleg asta cu $d$ și $N$, nu poți obține direct $e$, dar pe măsură ce RSA funcționează, încearcă diferite variante ale $e$ , apoi verifică și dacă este valid, așa obțineți cheia publică de la cheia privată.

Poate cineva să-mi explice ce pași ar trebui să fac aici pentru a-mi da seama ce $e$ putea fi și apoi din acelea, care $e$ ar trebui sa aleg?

fgrieu avatar
drapel ng
Notă: ați uitat $p\ne q$, ceea ce este necesar dacă definiți $\varphi(n) = (p-1)\cdot(q-1)$ sau doriți ca criptarea/decriptarea să funcționeze întotdeauna. Cerința ca $e$ să fie coprime cu $N$ este neobișnuită. Cerința ca $1
Maarten Bodewes avatar
drapel in
Dacă ai o semnătură, poți doar să-ți testezi presupunerea verificând-o. Totuși, asta nu va funcționa pentru text cifrat, cel puțin nu dacă utilizați o schemă de umplutură randomizată. Cu manualul RSA care ar putea funcționa în continuare. Nu sunt sigur dacă puteți calcula $e$ dacă nu aveți nimic pentru a verifica și *dacă $e$ este ales aleatoriu*. Ar putea fi posibil să faceți ceva dacă este ales determinist dat [acest răspuns](https://crypto.stackexchange.com/q/25907/1172): ghiciți $e$, calculați $p$ și $q$, verificați dacă se potrivește cu algoritmul determinist.
Nika Kurashvili avatar
drapel es
Ce formulă folosesc pentru ca măcar să pot începe să spun `e` dacă am `d` și `N`? În formulele mele de mai sus, încă nu are sens cum scriu un program care ghicește `e`...
TonyK avatar
drapel us
În practică, cheia privată este formată din (cel puțin) $p,q,$ și $e$. $d$ și $N$ pot fi calculate cu ușurință din acestea și sunt adesea stocate împreună cu $p,q,$ și $e$; dar nu sunt esențiale. Dacă tot ce aveți este $d$ și $N$, atunci nu puteți calcula $e$ fără factorizarea $N$.
Puncte:4
drapel ng

Se întreabă cum, în RSA, se găsește $e$ dat $d$ și $N$. Voi ignora cerința întrebării că $e$ este coprim cu $N$, care este foarte neobișnuit și nu are relevanță matematică. Voi presupune și eu $p\ne q$, pentru că este necesar pentru cele declarate $\varphi(N)=(p-1)\cdot(q-1)$ a tine.

Cu definiția RSA a întrebării, metoda de găsit $e$ merge

  • Factor $N$ a găsi $p$ și $q$
  • Calcula $\varphi=(p-1)\cdot(q-1)$
  • Calcula $e$ știind $e\cdot d\bmod\varphi=1$ și $1<e<\varphi$. Acea $e$ este definit în mod unic și inversul modular al $d$ în grup multiplicativ de modul întreg $\varphi$. Pentru numere mici, o metodă de lucru este încercarea și eroarea de cotă mică $e>1$. O metodă mai constructivă este (jumătate)-algoritm euclidian extins, care calculează $e=d^{-1}\bmod \varphi$ direct. Pentru un algoritm practic care utilizează numai numere întregi nenegative:
    1. $a\gets d\bmod \varphi$ , $b\obține \varphi$ , $x\gets0$ și $y\gets1$
      Notă: $a\cdot x+b\cdot y=\varphi$ va continua să țină
    2. dacă $a=1$, apoi ieșire „inversul dorit $e$ de $d$ modulo $\varphi$ este $y$" și opriți
    3. Dacă $a=0$, apoi ieșire „inversul dorit $e$ de $d$ modulo $\varphi$ nu exista" și opriți
    4. $r\gets\lfloor b/a\rfloor$
    5. $b\obține b-a\cdot r$ și $x\obține x+r\cdot y$
    6. dacă $b=1$, apoi ieșire „inversul dorit $e$ de $d$ modulo $\varphi$ este $\varphi-x$" și opriți
    7. Dacă $b=0$, apoi ieșire „inversul dorit $e$ de $d$ modulo $\varphi$ nu exista" și opriți
    8. $r\obține\lfloor a/b\rfloor$
    9. $a\obține a-b\cdot r$ și $y\obține y+r\cdot x$
    10. Continuați la 2

Aceeași metodă este de obicei folosită pentru a calcula $d$ din $e$, de cand $d$ și $e$ sunt simetrice în $e\cdot d\bmod\varphi=1$. Totuși, nu așa $d=11$ a fost calculat în întrebare; dintr-un motiv ciudat întrebarea cere $e<\varphi(N)$ dar nu $d<\varphi(N)$, sau mai obișnuit $d<N$ sau $d<\operatorname{lcm}(p-1,q-1)$.


Problemă serioasă cu această abordare pentru RSA așa cum este practicată (deci foarte mare $N$, cel puțin sute de cifre zecimale): nu va funcționa, pentru că $N$ va fi atât de mare încât nu poate fi luată în considerare, astfel $\varphi$ nu poate fi calculată în acest fel.

De asemenea, starea întrebării $e\cdot d\bmod\varphi(N)=1$ este o condiție suficientă, dar nu necesară pentru utilizarea manualului de criptare RSA $(e,N)$ pentru a fi anulat prin decriptarea RSA folosind $(d,N)$, si invers. Condiția necesară este $e\cdot d\bmod\lambda(N)=1$, Unde $\lambda(N)=\operatorname{lcm}(p-1,q-1)$. Această condiție este adesea folosită în practică: este permisă de PKCS#1, și mandatat de FIPS 186-4. Exemplu mic artificial: $N=341$, $e=7$, $d=13$ funcționează foarte bine pentru criptarea/decriptarea manuală RSA, încă $e\cdot d\bmod\varphi(N)=1$ nu se menține (în acest exemplu $p=11$, $q=31$, $\varphi(N)=300$, $\lambda(N)=30$ ).

Cu toate acestea, în RSA așa cum se practică, $e$ este mic, adesea suficient de mic încât $e$ pot fi găsite prin enumerare. Astfel, o metodă ar putea fi:

  • calcula $c\gets2^d\bmod N$
  • calcula $c_2\obține c^2\bmod N$
  • a stabilit $e\gets1$
  • repeta
    • a stabilit $e\obține e+2$
    • a stabilit $c\obține c\cdot c_2\bmod N$; înștiințare $c=2^{d\cdot e}\bmod N$
    • dacă $c=2$
      • pentru $m$ primele sute de numere prime impare (notă: pentru mici $N$, vrem să ne oprim de îndată ce $m^2>N$ )
        • dacă $m^{e\cdot d}\bmod N\ne m$, continua la repeta de mai sus
      • ieșire $e$ și opriți.

Este aproape sigur că dacă an $e$ este de ieșire, este valabil în sensul că manualul de criptare RSA folosește $(e,N)$ este anulat prin decriptarea RSA folosind $(d,N)$, și (echivalent) $e\cdot d\bmod\lambda(N)=1$. Nu este chiar sigur $e\cdot d\bmod\varphi(N)=1$, dar știind $e\cdot d$ și $N$ este posibil să factorizezi $N$ (folosind acest algoritm) și apoi calculați cel $e$ cu $e\cdot d\bmod\varphi(N)=1$ și $1<e<\varphi(N)$, dacă dintr-un motiv oarecare se dorește.


Adăugare: Cele de mai sus sunt departe de a fi optime. Când $\delta=\ln(e)/\ln(N)$ este sub un anumit prag, în ordinea lui $0.292$, există modalități de factor $N$ (și astfel rezolvați problema prin prima metodă discutată). Practic, schimbăm $d$ și $e$ în a lui Dan Boneh și Glenn Durfee Criptanaliză RSA cu cheie privată $d$ Mai puțin decât $N^{0,292}$, în procedurile Eurocrypt 1999. Vedea Acolo pentru mai mult.

Hagen von Eitzen avatar
drapel rw
Desigur, $p-1$ și $q-1$ ar trebui *nu* să aibă nici un factor *mare* în comun, altfel metoda dvs. de a genera numere prime este nasol și face atacurile nedorit de fezabile (de fapt, relații mult mai simple între $p,q$ trebuie evitat)). Deci, de preferință, $\lambda(p-1,q-1)$ este ceva de genul $\frac12\phi(N)$. - Mai mult, în practică se alege adesea un $e$ frumos (public), cum ar fi un prim mic, dar nu prea mic lângă o putere de $2$; acest lucru face ca calcularea criptării să fie mai rapidă, în timp ce, în același timp, nu este o mare problemă pentru a evita primele $\equiv 1\pmod e$ în chiar procesul de generare a acestora

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.