Puncte:1

Folosind ElGamal în loc de RSA în FDH

drapel bd

În RSA-FDH pentru a semna un mesaj $m$, aplicăm o funcție hash $H$ și apoi „decriptați” folosind cheia privată $d$, asa de $Sign(m) = H(m)^d \mod N =: \sigma$ iar apoi pentru a verifica, folosim cheia publică, rezultând $H(m) = \sigma^e \mod N$ daca totul merge bine.

De ce trebuie să folosim RSA pentru asta în loc de altceva, de exemplu ElGamal? Este din cauză că textul cifrat din ElGamal este de două ori mai lung decât textul simplu sau este posibilă falsificarea adversarului care nu este posibilă atunci când se folosește RSA-FDH?

kelalaka avatar
drapel in
Nu trebuie să utilizați decriptarea cuvintelor pentru semnare și criptarea pentru verificare. Sunt concepte complet diferite care au doar puțină conexiune cu RSA!.
Puncte:4
drapel vu

Acest lucru a fost reiterat de multe ori înainte în această comunitate.

Semnătura digitală este NU criptați cu cheie privată. RSA este singura bijecție pe care o știm în care atât operațiunile publice, cât și cele private sunt exponențiare modulo un modul public.

Cheia publică și privată din ElGamal servesc diferite roluri: cheia privată este exponentul, în timp ce cheia publică este puterea (iar modulul este un parametru public și partajat).

fgrieu avatar
drapel ng
Mai precis: pentru a încerca ceea ce s-a încercat, ar trebui să definim $H$ cu ieșire pe setul tuturor textelor cifrate ElGamal. Este posibil. Dar, deoarece criptarea ElGamal este randomizată, nu există niciun motiv pentru care criptarea semnăturii ar produce hash.Astfel, sistemul de semnătură considerat nu este solid. Notă: ultimul paragraf al răspunsului curent s-ar aplica dacă am încerca să criptăm cu cheia privată, dar întrebarea nu: propunerea este să _«⦠apoi să „decriptăm” (hash-ul) folosind cheia privată » _, care în ElGamal este posibil, pentru hash adecvat.
Puncte:3
drapel ng

Pentru a încerca ceea ce s-a încercat, ar trebui să definim $H$ cu ieșire pe setul tuturor textelor cifrate ElGamal. Acest lucru este posibil și presupun acest lucru în paragraful următor.

Spre deosebire de manualul RSA, criptarea ElGamal nu este o funcție: criptarea în mod repetat a unui anumit text simplu generează (cu o probabilitate covârșitoare) texte cifrate diferite. Prin urmare, atunci când încercăm să verificăm o semnătură ca în întrebare, nu există niciun motiv pentru care criptarea semnăturii ar produce hash-ul original și (cu o probabilitate covârșitoare) verificarea semnăturii ar eșua. Sistemul de semnătură luat în considerare în întrebare nu este solid.


Pentru simplitate, luați în considerare ElGamal în grupa multiplicativă modulo $p$, remarcat $\mathbb Z_p^*$, cu $p$ și $(p-1)/2$ prim, și $G$ astfel încât $G^{(p-1)/2}\bmod p\,=\,p-1$:

  • Cheia privată este un secret aleatoriu $x\in[0,p-1)$, cheia publică este $X:=G^x\bmod p\in[1,p)$.
  • Criptarea textului simplu arbitrar $M\în[1,p)$ merge
    • generează secret aleatoriu efemer $y\în[0,p-1)$
    • calcula $Y:=G^y\bmod n$
    • calcula $Z:=M\cdot X^y\bmod n$
    • text cifrat de ieșire $(Y,Z)$
  • Decriptarea textului cifrat arbitrar $(Y,Z)\în[1,p)\time[1,p)$ iesiri $M':=Y^{n-1-x}\cdot Z\bmod n$.

$M'=M$ indiferent de $y$. Sugestie de probă: Mica teoremă a lui Fermat.

Spre deosebire de manualul RSA, această variantă de ElGamal este aproape de a fi IND-CPA, dar nu este deloc. Sugestie de probă: luați în considerare relațiile dintre Simboluri Legendre de $\stanga(\frac M p\dreapta)$, $\stanga(\frac X p\dreapta)$, $\left(\frac Y p\right)$. Ignorăm această problemă relativ minoră în cele ce urmează.

Una dintre cele mai simple încercări de a corecta problema ridicată în al doilea paragraf al acestui răspuns ar fi remedierea $y=1$, prin urmare $Y=G$. Schema de semnătură a întrebării poate folosi apoi un hash $H$ cu ieșire $H(m)$ în întregul domeniu $[1,p)$ precum $$H(m):=\big(\operatorname{SHAKE256}(m,b)\bmod p-1\big)+1\text{ cu }b=64\left\lceil\log_2(p)/64 +2\dreapta\rceil$$ și apoi

  • Cheile private și publice sunt ca în criptare
  • Semnătura de $m$ este $\sigma:=G^{n-1-x}\cdot H(m)\bmod n$
  • Verificări de verificare $\sigma\cdot X\bmod n=H(m)$.

Cel puțin, verificarea reușește în absența modificărilor, astfel această schemă de semnătură este solidă. Dar este nesigur chiar și după cele mai simple criterii UF-KOA.

De asemenea, alte încercări simple eșuează, inclusiv

  • realizarea $y$ un secret adăugat la cheia privată, cu $Y:=G^y\bmod n$ și $Y':=X^y\bmod n$ adăugat la cheia publică
  • realizarea $y$ un hash al mesajului $m$
  • realizarea $Y$ un hash al mesajului $m$
  • aparent, orice lucru care funcționează într-un grup arbitrar, așa cum folosește criptarea ElGamal, iar semnătura este un element de grup ca ieșirile de decriptare ElGamal.

Deși acest lucru nu se aplică pentru ElGamal, apare o altă problemă atunci când se încearcă construirea unei semnături dintr-o schemă de criptare cu cheie publică generală și un hash pe domeniul său de text cifrat: decriptarea unui text cifrat arbitrar poate eșua (și se întâmplă pentru sisteme practice precum RSA-OAEP, RSAES-OAEP, RSAES-PKCS1-v1_5). Aceasta este de fapt o caracteristică în interesul IND-CCA Securitate.

Nu există o modalitate generală de a construi semnătură securizată din criptarea securizată cu cheie publică. Nici măcar semnătura RSA-FDH nu funcționează în acest fel: ea construiește semnătura dintr-o permutare unidirecțională și un hash pe domeniul permutației.

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.