Puncte:2

Semnături din criptare asimetrică

drapel in

Lăsa $(K_{enc},K_{dec})$ să fie o pereche de chei asimetrică. Mi se pare că o schemă de semnătură poate fi creată lăsând cheia publică de verificare să fie $K_{ver}=K_{dec}$ (cheia de decriptare asimetrică) și cheia de semnare secretă fie $K_{sign}=K_{enc}$ (cheia de criptare asimetrică). Spune cu $H$ niște funcție hash și $m$ a fi semnat: $$ s=\texttt{semn}(m,K_{semn})=\texttt{criptare}(H(m),K_{enc}) $$ $$ \texttt{verify}(s,m,K_{ver})=\left\{ \begin{matrice}{cc} \text{True }&\text{if } H(m)=\texttt{decrypt}(s,K_{dec})\ \text{Fals }&\text{else}. \end{matrice} \dreapta. $$ Cu cuvinte, se semnează prin criptarea (un hash al) documentului și oricine poate verifica prin decriptare (și hashing).

N.B. Rolurile publice/private ale cheilor sunt inversate între aplicații! $K_{sign}=K_{enc}$ este păstrat privat (uitați că ar fi public ca cheie de criptare) și $K_{ver}=K_{dec}$ este făcută publică (uitați că ar fi privată ca cheie de decriptare).

Dacă acesta este cazul, de ce să dezvolte scheme de semnătură separate în loc să reutilizați scheme de cheie publică? Pare o risipă să nu reutilizați PKC. Sunt schemele de semnătură dedicate mult mai eficiente?

Dacă nu este cazul, ce nu merge bine?


O problemă notă în comentarii apare când $K_{dec}$ dezvăluie informații despre $K_{enc}$. Acest lucru se întâmplă cu siguranță în unele (majoritatea) schemelor, să spunem când cheia de criptare este într-adevăr o versiune obscurată a cheii de decriptare, dar nu toate. Prevenirea acestui lucru înseamnă mai mult sau mai puțin proiectarea unei scheme de semnătură ("decriptare cheie publică"), făcând întrebarea mea neinteresantă.

Singura instanță concretă care îmi vine în minte este o semnătură RSA, în care simetria dintre exponenții de criptare/decriptare face posibil cele de mai sus.

knaccc avatar
drapel es
În cripto EC, cheia publică $K_{enc}$ poate fi derivată trivial din cheia privată $K_{dec}$. Prin urmare, dacă distribuiți $K_{dec}$ publicului, publicul vă poate determina $K_{enc}$ și „semnătura” dvs. ar putea fi falsificată.
poncho avatar
drapel my
Dacă înțelegem greșit ceva, ar putea fi util să luați un algoritm de criptare cu cheie publică (altul decât RSA) și să scrieți exact ceea ce propuneți...
fgrieu avatar
drapel ng
Vă sugerez să schimbați titlul întrebării în „Semnătură din criptare asimetrică”, deoarece semnătura (digitală) este considerată parte a criptografiei asimetrice.
Puncte:6
drapel ng

Binele

Metoda din întrebare conduce la un sistem de semnătură care verifică întotdeauna cu succes mesajul pe care îl semnează; și există combinații de scheme de criptare asimetrice și hashuri în care acel sistem de semnătură îndeplinește Proprietatea de securitate EUF-CMA, inclusiv:

  • RSAES-OAEP aproape de cea practicată și un hash criptografic standard precum SHA-256. Sunt necesare două modificări la partea RSA, totuși:
    • Alegerea $e$ aleatoriu și de dimensiune mare a biților (jumătate din dimensiunea biților a $n$ pare OK) mai degrabă decât $e=65537$ ca obișnuit (sau altă valoare mai mică ghicibilă, sau aleatorie, dar prea scăzută pentru securitatea¹ a metodei întrebării)

    • Exprimarea cheii de decriptare $K_{dec}$ la fel de $(n,d)$ mai degrabă decât ca de obicei $(n,e,d,p,q,d_p,d_q,q_\text{Inv})$, folosit de implementările standard care au grijă de performanță.

      Ambele modificări sunt necesare pentru a le păstra $e$ de $K_{enc}=(n,e)$ secret când facem $K_{dec}=(n,d)$ public, ca în întrebare.

  • Criptare RSA ca în Articol original cu exceptia cu $n$ suficient de mare pentru a rezista metodelor moderne de factorizare² și un hash considerabil mai mare decât mai sus pentru a rezista Desmedt și Odlyzko atacă.

Răul

Metoda este nesigură atunci când este aplicată la majoritatea criptosistemelor asimetrice

Observă asta $K_{dec}$ trebuie făcută publică deoarece este cheia de verificare și $K_{enc}$ trebuie ținut secret deoarece este cheia de semnare. Astfel, relația dintre cele două chei trebuie să fie astfel încât putem face $K_{dec}$ public păstrând în același timp secretul $K_{enc}$. RSA este singura familie de scheme de criptare pe care o cunosc bine care poate avea această proprietate (și după cum am explicat mai sus, implementările practice nu au).

Pentru multe sisteme de criptare asimetrică, proprietatea nu poate fi aplicată. De exemplu, în ElGamal și este descendent modern ECIES, $K_{dec}$ este un număr întreg care codifică modul de a ajunge la elementul de grup $K_{enc}$ prin aplicarea legii interne a grupului la un anumit element public de grup; deci revelatoare $K_{dec}$ dezvăluie inevitabil $K_{enc}$, rupând securitatea construcției întrebării.

Mai general, utilizarea unui sistem de criptare asimetric securizat și a unui hash securizat nu este un indiciu bun că sistemul de semnătură obținut prin metoda întrebării este sigur, din mai multe motive.

Când luăm în considerare securitatea implementării, există o altă problemă: o implementare a $\texttt{criptare}$ nu are nevoie de protecție împotriva scurgerii canalelor laterale ale intrării sale cheie, deoarece în mod normal este public. Cu toate acestea, o astfel de protecție este necesară pentru sistemul de semnătură al întrebării.

Metoda tinde să construiască scheme de semnătură cu caracteristici substandard

Compararea semnăturii RSA (inclusiv prin metoda întrebării) cu EdDSA la nivel de securitate standard:

  • Semnătura este destul de mare (256 de octeți față de 64 de octeți)
  • Cheia publică este mare (de obicei 260 de octeți față de 32 de octeți)
  • Generarea semnăturilor este lentă (de zeci de ori mai lentă)
  • Generarea cheilor este dureros de lentă (cum ar fi de sute de ori mai lentă).

Și metoda nu este tocmai cea folosită pentru a construi semnătura RSA, chiar și vărul apropiat RSA-FDH. Acesta folosește funcția de cheie privată RSA din manual $h\mapsto s=h^d$ a semna un hash larg $h=H(M)$; și funcția de cheie publică RSA din manual $s\mapsto h=s^e\bmod n$ urmată de o comparație $h\overset?=H(M)$ în verificare. Contrar metodei întrebării, cheia publică $(n,e)$ rămâne publică, iar cheia privată $(n,e,d,p,q,d_p,d_q,q_\text{Inv})$ rămâne secret. În comparație cu asta, sau RSASSA-PKCS1-v1_5 sau RSASSA-PSS, metoda semnăturii întrebării:

  • Semnele de aproape patru ori mai lent, deoarece nu poate folosi $(n,e,d,p,q,d_p,d_q,q_\text{Inv})$ formular pentru $K_{dec}$
  • Se verifică de o sută până la o mie de ori mai lent, deoarece nu poate folosi un mic $e$.

¹ Cu $n$ cunoscut, dacă unul dintre $e$ sau $d$ se stie si mai putin $n^{0,292}$, apoi celălalt poate fi găsit, vezi Boneh și Durfee. Prin urmare, limita obișnuită de 256 de biți $e$ (de exemplu, încorporat în metoda de generare a cheilor din FIPS 186-4) este astfel încât revelatoare $d$ permite găsirea $e$.

² Recomandarea originală âacea $d$ ar trebui să fie aleasă dintr-un set suficient de mare pentru ca un criptoanalist să nu-l găsească prin căutare directăâ apoi calculează $e$ din $d$ a fost inadecvat și permis a lui Wiener atac, îmbunătățit ulterior de Boneh și Durfee. Dar păstrarea $d$ secretă și facere $e$ public, deoarece metoda întrebării necesită remedierea acestei probleme.

drapel in
Îmi cer scuze dacă am fost neclar, dar cred că înțelegi greșit întrebarea mea în același mod ca @poncho. Nu încerc să împing la întâmplare cheile de criptare/decriptare în găurile greșite.
fgrieu avatar
drapel ng
@yoyo: în noua formulare, sunt de acord că nu „împingeți aleatoriu cheile de criptare/decriptare în găurile greșite”. Mi-am revizuit răspunsul.
Puncte:5
drapel my

Mi se pare că o schemă de semnătură poate fi creată lăsând cheia publică de verificare să fie $sk$ iar cheia secretă de semnare să fie $pk$

Dacă nu este cazul, ce merge prost?

Ideea pare să fie „vom lua paradigma fundamentală „criptare cu cheia 1 și apoi decriptare cu cheia 2” a criptării cheii publice, apelăm cheia 1 cheia privată, cheia 2 cheia publică și puf avem un sistem de semnătură”.

Cu toate acestea, dacă începem cu un sistem de criptare securizat cu chei publice, s-ar putea să nu producă o schemă de semnătură sigură.

fgrieu a început deja cu obiecția care este cea mai comună pentru schemele de criptare cu chei publice în câmp; cunoașterea cheii 2 (care, în schema de semnătură, devine cheia publică) vă poate permite să deduceți cheia 1. Aproape orice schemă bazată pe jurnal discret sau ECC se încadrează în această categorie.

Alte moduri în care acest lucru poate eșua:

  • Se poate ca, având în vedere o serie lungă de mesaje și semnături, să putem deduce cheia 1. O serie de scheme de semnătură bazate pe zăbrele au eșuat tocmai din acest motiv; s-a dovedit că fiecare semnătură a scurs o parte din cheia privată - evident, aceasta a fost abordată cu schemele actuale de semnătură bazate pe zăbrele (cum ar fi Falcon și Dilithium).

  • Se poate ca, cu cunoașterea textului simplu, „textul cifrat” să fie maleabil. Adică, putem modifica textul cifrat pentru a decripta într-un text simplu diferit. ClassicMcEliece (finalista NIST runda 3) se încadrează în această categorie.

Concluzie: proprietățile unui sistem securizat de criptare cu cheie publică sunt insuficiente pentru a produce o schemă de semnătură sigură; dacă cineva propune o astfel de schemă de semnătură, aceasta trebuie verificată cu atenție (la fel ca orice altă schemă)

drapel in
Nu sugerez una „criptare cu cheia privată”. Spun că „criptarea cu cheia publică PKC” se semnează, iar „decriptarea cu cheia privată PKC” se confirmă. (Rolurile publice/private ale cheilor sunt comutate între PKC și schema de semnătură.)
poncho avatar
drapel my
@yoyo: deci, oricine cu cheia publică poate semna, dar numai cineva cu cheia privată poate verifica"? Asta nu este conform sensului standard al semnării...
drapel in
@poncho uită public/privat (rolurile sunt inversate între aplicații). Am reformulat întrebarea pentru a evita confuzia.
poncho avatar
drapel my
@yoyo: se pare că răspunsul meu este potrivit, atunci - cu majoritatea schemelor actuale de criptare cu chei publice, nu are sens să „criptezi” cu cheia privată (cea pe care o păstrezi secretă) și să „decriptezi” cu cheia publică (cel publicat de tine).

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.