Puncte:0

Este CMAC securizat fără IV și aceeași cheie? (doar autentificare)

drapel cn

Sunt puțin sigur despre CMAC și GMAC și poate că cineva mă poate ajuta. Din câte știu eu, CMAC nu folosește un IV [SP 800-38B cap. 6.2]. Este atunci sigur dacă folosesc aceeași cheie pentru mesaje diferite? ...și de ce am nevoie de un IV pentru GMAC? Ce se întâmplă aici dacă reutilizam IV-ul și aceeași cheie?

În cazul meu, nu criptez niciun mesaj, doar creez un MAC pe care îl atașez mesajului (text simplu). Este acest lucru vulnerabil?

...Cu UMAC, VMAC sau Poly1305 Am mai citit că un tuplu (cheie, nonce) poate fi folosit o singură dată. Dar cu OpenSSL nu pot specifica un nonce cu Poly1305. ...cumva toate astea mă încurcă.

Puncte:2
drapel my

Este atunci sigur dacă folosesc aceeași cheie pentru mesaje diferite?

Sigur; nu ar fi un MAC foarte bun dacă s-ar putea folosi o cheie pentru un singur mesaj.

și de ce am nevoie de un IV pentru GMAC?

Pentru că CMAC și GMAC au interne diferite.

Cu CMAC, ceea ce faceți este în mare parte același calcul ca o criptare în modul CBC, cu excepția faptului că rețineți doar ultimul bloc (și acesta este MAC-ul). Am spus mai ales pentru că dacă faci doar această operațiune (care este cunoscută sub numele de CBCMAC), asta i-ar permite atacatorului să joace unele jocuri cu extinderea mesajului - pentru a preveni asta, CMAC xor are niște date secrete cu ultimul bloc, dejucând astfel de jocuri. .

Motivul pentru care cerem ca IV-ul să fie diferit (și imprevizibil) în modul CBC este pentru ca blocul inițial să nu scurgă informații; CMAC nu scoate blocul inițial în modul CBC (cu excepția cazului în care mesajul se încadrează într-un singur bloc și, chiar dacă da, xorul datelor secrete va preveni orice astfel de scurgere), și astfel CMAC nu împărtășește preocuparea cu privire la IV-uri.


În ceea ce privește GMAC, ei bine, este complet diferit; cu asta, convertiți logic mesajul în coeficienții unui polinom $M_k, M_{k-1}, ..., M_1$; apoi converti IV-ul în termen constant $M_0$ într-o cheie secretă și apoi evaluați polinomul (într-un câmp finit) la un punct secret $H$, adică calculezi:

$$M_kH^k + M_{k-1}H^{k-1} + ... + M_1 H^1 + M_0$$

și acesta este MAC-ul. Rețineți că atacatorul știe totul, cu excepția valorilor secrete $H$ (care este constantă pentru o anumită cheie) și $M_0$ (iar acesta din urmă depinde de IV).

Acum, dacă aveți două MAC-uri pentru două mesaje diferite cu același IV, $M_0$ valorile vor fi aceleași; le puteți scădea și apoi rezolva $H$ - care vă oferă toate secretele, și astfel puteți genera mesaje cu valori MAC valide după bunul plac.

Și, la nivelul destul de înalt pe care l-am descris, Poly1305 funcționează în același mod (și, prin urmare, are aceeași slăbiciune pentru repetarea IV-urilor).

În cazul meu, nu criptez niciun mesaj, doar creez un MAC pe care îl atașez mesajului (text simplu). Este acest lucru vulnerabil?

Orice MAC bun ar fi bine - acesta este într-adevăr cazul de utilizare pe care ar trebui să-l adreseze un MAC [1]. CMAC este bine - GMAC și Poly1305 ar fi, de asemenea, bine dacă evitați repetarea IV-urilor.

[1]: Presupunând, desigur, că expeditorul și receptorul au aceeași cheie secretă - dacă aveți nevoie de ceva în care receptorul nu poate genera mesaje valide, va trebui să vă uitați la semnături.

SBond avatar
drapel cn
multe multe mulțumiri. M-ai ajutat foarte mult. Sa aveti o zi buna si sa fiti sanatosi :)
Puncte:0
drapel tr

Sunt puțin sigur despre CMAC și GMAC și poate mă poate ajuta cineva. Din câte știu eu, CMAC nu folosește un IV [SP 800-38B cap. 6.2]. Este atunci sigur dacă folosesc aceeași cheie pentru mesaje diferite? ...și de ce am nevoie de un IV pentru GMAC? Ce se întâmplă aici dacă reutilizam IV-ul și aceeași cheie?

Cele două construcții folosesc două blocuri de bază/logică diferite. Prin urmare, au cerințe de securitate diferite. Și anume:

  1. CMAC: Putem descrie în mod abstract CMCA ca o construcție care construiește un PRF sigur pentru intrări cu lungime variabilă. De ce, deoarece PRF-urile securizate sunt, de asemenea, MAC-uri securizate. Dar pentru a face față CMAC cu lungime variabilă impune ca intrarea reală în funcțiile MAC să fie fără prefix. adică (w.l.o.g) nu există intrări $x,y$ astfel încât $y$ incepe cu $x$. Cu toate acestea, în CMAC, această cerință nu este absolută; în schimb, se folosește o schemă de codificare randomizată, asigurându-se că lipsa prefixului se întâmplă cu o probabilitate foarte mică.Deci, pe scurt, o versiune abstractă a CMAC utilizează o codificare aleatorie fără prefix $e$ cu o cheie $k_1$, un PRF sigur pentru intrări lungi, dar fără prefixe $F$ cu o cheie $k$. Pe un mesaj $m$, mac-ul este calculat ca $\tau = F(k, e(m,k_1))$
  • Pentru detaliile reale și derivarea cheilor, consultați standardul la care ați făcut referire.
  1. GMAC: Vezi primul răspuns pentru detalii.

Prin urmare, putem vedea că CMAC nu necesită niciun IV, în timp ce GMAC o face și, mai important, securitatea depinde de nereutilizarea IV-ului.

În ceea ce privește OpenSSL, poate fi util să vedem cum folosesc ei înșiși Poly1305? Poate în chacha20_poly1305

SBond avatar
drapel cn
Vă mulțumesc pentru răspuns și pentru timpul dumneavoastră prețios. :)

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.