Puncte:0

Securitate RSA atunci când utilizați mesaje scurte

drapel cn

Știm că un mesaj scurt criptat cu RSA poate fi ușor forțat.

Să presupunem că Bob criptează un mesaj care conține doar „Salut” și îl criptează cu cheia publică a lui Alice. Oricine poate încerca să cripteze toate combinațiile posibile de mesaje foarte scurte folosind cheia publică a lui Alice până când obține o potrivire.

Ceea ce mă întreb este că identitatea unui mesaj foarte scurt poate fi falsificată cumva?

Să presupunem că Bob criptează multe mesaje cu unul sau două caractere cu cheia sa privată. Ar putea atacatorul să falsifice cumva a nou mesaj cu unul sau două caractere, astfel încât să pară că a venit de la Bob?

Desigur, în aceste cazuri vorbim despre nicio umplutură adăugată sau despre orice alte modificări.

Marc Ilunga avatar
drapel tr
Bun venit la Crypto.SE! În general, manualul RSA este maleabil având în vedere natura aritmeticii modulare. adică Având în vedere criptarea $m$ și $m'$ ($c$ și $c'$), putem obține criptarea $mm'$ care este $c*c'$. În afară de faptul că, având în vedere că RSA este un sistem cu cheie publică, se presupune de obicei că cheia publică este cunoscută de toată lumea.
Peter2223 avatar
drapel cn
Deci, dacă am înțeles corect, dacă Bob a trimis anterior mesajele „a” și „b”, un atacator ar putea falsifica cu succes mesajul „ab”? Dar un mesaj complet nou, cum ar fi „c”?
Marc Ilunga avatar
drapel tr
Rețineți că $ab$ se referă la înmulțire și nu la o concatenare. Cu toate acestea, având în vedere criptarea de $2$, este posibil să faceți deplasarea biților și să creați noi texte cifrate prin concatenare. În ceea ce privește un mesaj complet nou, rețineți că cheia publică probabil este dată tuturor și nu doar lui Bob. Prin urmare, nu este de fapt necesară nicio manipulare inteligentă. Atacatorul poate cripta doar pentru el însuși.
Peter2223 avatar
drapel cn
Vorbesc despre un mesaj complet nou criptat cu **cheia privată** a lui Bob. Un mesaj criptat cu cheia sa privată i-ar confirma identitatea. Este posibil să falsificați un mesaj nou, astfel încât să pară că provine de la o cheie **privată**.
Marc Ilunga avatar
drapel tr
Oh, m-am înșelat având în vedere utilizarea unei chei private pentru a cripta. Aceasta nu este chiar o practică standard. Instrumentul potrivit ar fi o semnătură digitală (nu este același lucru cu criptarea cu cheia secretă). Oricum, unele falsuri ar folosi aceleași trucuri ca cele scrise înainte. Aruncă o privire la acest răspuns https://crypto.stackexchange.com/questions/20085/which-attacks-are-possible-against-raw-textbook-rsa
Puncte:1
drapel ng

Știm că un mesaj scurt criptat cu RSA poate fi ușor forțat.

Un mesaj scurt criptat cu manual RSA poate fi ușor forțat. Problema este că nu că mesajul este scurt. Un mesaj mult mai lung ales într-un set mic (cum ar fi identitatea unei persoane din lista publică) poate fi, de asemenea, forțat brut prin aceeași tehnică. Problema este că mesaj cu entropie scăzută combinat cu utilizarea criptării RSA pentru manuale (fără umplutură aleatoare).

Bob criptează (..) mesajele cu cheia sa privată.

Acel „criptează” este o terminologie eronată pentru aplicarea transformării $m\mapsto f(m)=m^d\bmod n$ Unde $(n,d)$ este cheia privată RSA a lui Bob. Asta nu cripta, deoarece acel termen desemnează transformarea unui mesaj pentru a-l face de neinteligibil pentru adversari, iar aici oricine poate anula transformarea folosind publicul $(n,e)$. Termenul „criptează” trebuie schimbat în „transformă” sau „semnează”. Rezultatul $f(m)$ a acelei operațiuni este semnătura manuală RSA a mesajului $m$ de cheia privată a lui Bob.

Ar putea atacatorul să falsifice cumva un nou mesaj cu unul sau două personaje, astfel încât să pară că ar fi venit de la Bob?

Da. Instrumentul de bază folosit este proprietatea multiplicativă a funcției $f$: pentru toți $m_1,m_2$ tine $f(m_1\cdot m_2\bmod n)\ =\ f(m_1)\cdot f(m_2)\bmod n$. Astfel, un adversar știind manualul RSA semnătura mesajelor $m_1$ și $m_2$ puteți găsi semnătura RSA a mesajului manual $m_1\cdot m_2\bmod n$, sau ${m_1}^i\cdot{m_2}^j\bmod n$ pentru orice pereche de numere întregi $i,j$.

Pentru mesajele constrânse să aibă un sens, o posibilitate este să aibă $m_1\cdot m_2=m_3\cdot m_4$ care permite calcularea semnăturii RSA a manualului $m_4$ din cea a $m_1$, $m_2$ și $m_3$, la fel de $f(m_4)\ =\ f(m_1)\cdot f(m_2)\cdot f(m_3)^{-1}\bmod n$.

Peter2223 avatar
drapel cn
Multumesc pentru raspuns! După cum am înțeles, un atacator nu ar putea falsifica un nou mesaj semnat constând din elemente care nu au fost semnate înainte? De exemplu, dacă mesajul care conține doar litera „c” în acest caz nu a fost niciodată transmis, dar alte litere au fost, un atacator nu ar putea falsifica o semnătură pentru el?
fgrieu avatar
drapel ng
@Peter2223: nu. Îmi pare rău, am folosit notația comună că $u\,v$ este produsul dintre $u$ și $v$ și ați înțeles concatenarea (deseori observată $u\mathbin\|v$ ). Acum am schimbat la $u\cdot v$ pentru a fi mai clar că înmulțim. Ce vreau să spun este că, dacă mesajele semnate codifică la numerele întregi $m_1=7$ și $m_2=8$, atunci adversarul poate găsi semnătura mesajului care codifică la întregul $7\cdot8=56$ (și, de asemenea, $7\cdot7 \cdot7\cdot8\cdot8=21952$). Acest lucru este mai dificil cu mesajele semnificative, dar acel truc poate fi tras.
Peter2223 avatar
drapel cn
Da, nu vin la acest subiect cu multe cunoștințe despre criptare. Fac un program care trebuie să testeze „identitatea” unui fișier trimis. M-am gândit să trimit fișierul și apoi să îl semnez cu rsa brut. Dar sha-256 are doar 64 de caractere și am citit că rsa nu este foarte sigur cu mesaje scurte fără umplutură aleatoare. Deoarece mașina care primește nu poate partaja algoritmul aleatoriu, nu pot adăuga umplutură aleatoare și adăugarea de umplutură predeterminată pare că nu ar fi foarte eficientă. Cât de sigur ar fi sha-256 semnat cu rsa 2048 brut?
fgrieu avatar
drapel ng
@Peter2223: asta cred că ar fi pe partea nesigură a limitei în care s-ar putea aplica atacul Desmedt și Odlyzko (există o [întrebare](https://crypto.stackexchange.com/q/51680/555) despre acel atac ). Aplicația dvs. necesită semnătură, cu o umplutură de semnătură bine gândită. Deoarece nu înțeleg ce înseamnă „nu pot partaja algoritmul aleatoriu”, nu pot spune dacă RSASSA-PSS (padding randomizat de semnătură), RSASSA-PKCS1-v1_5 (padding deterministă de semnătură, lipsită de o dovadă de securitate) sau ISO/ Schema 2 sau 3 IEC 9796-3 ar fi adecvată.

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.