Puncte:1

RSADP/RSAEP cu valoare de bază/mesaj zero

drapel ng

Am o întrebare despre cum sunt definite RSADP/RSAEP (în RFC2437 https://datatracker.ietf.org/doc/html/rfc2437#section-5.1.2):

RSADP (și RSAEP) sunt descrise cu aceleași limite pentru mesajul (m) și textul cifrat (c), și anume 0 <= m < n. În acest caz, primitiva de exponențiere modulară presupune că umplutura a avut loc deja, deci lăsând asta în afara imaginii.

5.1.2 RSADP

   RSADP (K, c)

   Intrare:

   K RSA cheie privată, unde K are una dintre următoarele forme
                 -o pereche (n, d)
                 -un cvintuplu (p, q, dP, dQ, qInv)
   c reprezentativ pentru text cifrat, un număr întreg între 0 și n-1

   Ieșire:
   m mesaj reprezentativ, un număr întreg între 0 și n-1; sau
             „reprezentant text cifrat în afara intervalului”

Am următoarea întrebare: implementările acceptă de fapt 0 și 1 ca valori c & m valide? Nu ar rămâne zero și unu ambele constante sub exponențiere, astfel încât textul cifrat și textul simplu să nu se schimbe? Nu e rău? Este corect ca o implementare să respingă aceste valori - chiar dacă specificația pare să le permită?

UPDATE: Nu întreb despre padding per-se, deoarece exponențiarea are loc după padding (în cazul criptării), ci mai degrabă De ce specificația pare să permită deloc aceste valori nesigure. De ce specificația nu interzice în mod explicit 0 și 1? Desigur, este rar din punct de vedere statistic dacă rezultatul umpluturii ar fi o astfel de valoare, dar întrebarea mea este dacă funcțiile RSADP/EP nu ar trebui să interzică aceste valori și schema generală OAEP construită pe deasupra acestor funcții să fie specificată pentru a alege o altă intrare de umplutură în cazul acela?

Poate că există ceva care îmi lipsește aici, așa că apreciez orice informație.

Mulțumiri!

Maarten Bodewes avatar
drapel in
Evident că nu, nu, dar nu uitați că criptarea unui mesaj static cu aceeași cheie duce, de asemenea, la scurgeri direct de informații. Deci, practic, cred că aceasta nu este atât de mult o cerință de securitate; este vorba despre pierderea de informații. Dar, probabil, alții vor fi mai buni să ofere o explicație mai matematică. Există multe alte motive pentru care este necesară o umplutură sigură.
Morrolan avatar
drapel ng
Datorită modului în care RSAES-PKCS1-v1_5 își definește umplutura - în special octetul fix pe care îl folosește - cred că este imposibil ca mesajul căptușit să reprezinte fie un 0, fie un 1 atunci când este transformat într-un număr întreg de către primitiva OS2IP. Pentru RSAES-OAEP mesajul captusit *ar putea* să reprezinte un 0 sau un 1, dar probabilitatea ca acest lucru să se întâmple este de ordinul ca un adversar să ghicească prima încercare un factor prim al modulului dumneavoastră.
Puncte:3
drapel ng

Se pare că definiția NIST a RSAEP/RSADP diferă de versiunea RFC 2437.

Definiția NIST poate fi găsită în SP800-56Br2: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Br2.pdf

În secțiunea 7.1 Primitive de criptare și decriptare, specificația NIST necesită implementări pentru a respinge valorile 0, 1 și n-1, după cum urmează:

7.1.1 RSAEP
...
1. Dacă m nu satisface 1 < m < (n â 1), emiteți o indicație că m este în afara intervalului și ieșiți fără procesare ulterioară

Limitări similare sunt necesare atât pentru criptare, cât și pentru decriptare.

Prin urmare, o implementare ar trebui să filtreze și să blocheze în mod explicit aceste intrări.

Maarten Bodewes avatar
drapel in
Problema este dacă doriți să efectuați comparația dacă oricum intrarea este aleatorie. Este un pas suplimentar, inutil și potențial periculos din cauza posibilelor atacuri ale canalelor laterale.
fgrieu avatar
drapel ng
Cerința NIST de a elimina punctele fixe $0$, $1$ și $n-1$ este probabil să blocheze atacurile împotriva decriptării în cazul în care adversarul trimite aceste texte cifrate $c$ pentru decriptare, într-un atac de canal secundar, cum ar fi Simple Power Analysis. Cu $c=0$ și $c=1$, adversarul cunoaște $c^f\bmod n$, sau $c^f\bmod p$ și $c^f\bmod q$ pe tot parcursul calculului, chiar dacă ei nu cunosc $f$; și și mai îngrijorător, cu $c=n-1$, pot obține paritatea de $f$ dacă reușesc să distingă o valoare de cealaltă. Această eliminare nu mi se pare o apărare solidă, dar nu poate dăuna _în decriptare_.
Brad avatar
drapel ng
@MaartenBodewes - Îmi pare rău, nu văd - unde este canalul lateral dacă o implementare filtrează valorile brute c & m înainte de a face orice exponențiere?

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.