Puncte:1

Este compoziția funcțiilor rezistente la coliziune H' = h1(h2()) rezistentă la coliziune?

drapel id

Să presupunem că există două funcții hash rezistente la coliziuni $h_1$ și $h_2$ cu dimensiuni de ieșire de $n_1$ și $n_2$ respectiv.

Este $H'(x) = h_1(h_2(x))$ rezistent la coliziune pentru diferitele relații dintre $n_1$ și $n_2$?


Acest lucru m-a uluit pe mine și pe colegii mei în ultimele zile, deoarece două abordări diferite se contrazic:

Prima abordare:

Pe baza definiției rezistenței la coliziune $H'$ are o ieșire de $n_1$ lungime şi deci dacă putem găsi un atac cu mai puţină complexitate decât $\mathcal O(2^{n_1/2})$ nu este rezistent la ciocniri.

Noi vrem $$\mathcal O(2^{n_2/2}) < \mathcal O(2^{n_1/2}) \implies \ldots \implies n_2 < n_1$$

Astfel, dacă $n_2 < n_1, H'$ nu este rezistent la coliziune și în alte cazuri este


A doua abordare:

Să presupunem $H'$ nu este rezistent la coliziune.

Apoi există diferite $x_1$ și $x_2$ astfel încât $H'(x_1) = H'(x_2)$ adică $h_1(h_2(x_1)) = h_1(h_2(x_2))$

Asta se poate întâmpla dacă $h_2(x_1) = h_2(x_2)$, dar $h_2$ este rezistent la coliziune

Se poate întâmpla și dacă $h_1(A) = h_1(B)$ Unde $A = h_2(x_1)$ și $B = h_2(x_2)$ dar $h_1$ este rezistent la coliziune.

Noi am dovedit asta $H'$ este rezistent la ciocniri și relația de $n_1$ și $n_2$ nu contează.

kelalaka avatar
drapel in
Bun venit la [cryptography.se].Aceasta este o întrebare despre teme? (Avem pacali pentru asta)
kelalaka avatar
drapel in
Un indiciu: dacă $n_1 = n_2$, atunci prima abordare este aceeași cu a doua. Când diferă, $n_2
John St avatar
drapel id
Este pregătirea pentru examenul meu de masterat de criptografie aplicată, am văzut dupii dar nu am găsit prima abordare nicăieri.
John St avatar
drapel id
Pe baza comentariului dvs., îmi dau seama că ultimele soluții presupun $n_1=n_2$? Deși, cum pot înțelege că face și, prin urmare, nu este aplicabil acestei probleme?
Puncte:4
drapel my

Acest lucru m-a uluit pe mine și pe colegii mei în ultimele zile, deoarece două abordări diferite se contrazic

Motivul este că aceste două abordări presupun definiții diferite pentru „rezistent la coliziune”; aceste două definiții nu sunt echivalente; adică putem găsi funcții care îndeplinesc o definiție și nu cealaltă.

Prima încercare folosește definiția „nu există un atașament de găsire a coliziunii care să ia mai puțin $\mathcal{O}(2^{n/2})$ operațiuni; deoarece $n$ este fixată, folosim aceasta ca prescurtare pentru „un atac luat $c2^{n/2}$ operațiuni, pentru unii $c$ nu drastic departe de 1 și o definiție rezonabilă a operațiunii (în acest caz, evaluarea funcției hash).

Problema cu această definiție este că duce la niște concluzii absurde, de exemplu, SHA-256 trunchiat la 8 biți este „rezistent la coliziune” prin această definiție. În cealaltă direcție, ieșirea de 1 kbyte de la SHAKE-256 nu este „rezistentă la coliziuni”, deoarece puteți găsi coliziuni cu mult mai puține decât $2^{8192/2}$ evaluări hash.

În schimb, abordarea 2 folosește definiția „o funcție hash este rezistentă la coliziune dacă nu putem găsi o coliziune”. Exprimarea formală a acestui lucru este puțin dificilă (pentru că, atâta timp cât intrarea este permisă să fie mai lungă decât ieșirea, trebuie să existe coliziuni, pur și simplu nu știm care sunt acestea) și, de asemenea, pentru că acest lucru este relativ la resursele de calcul avem (în acest moment, SHA-256 trunchiat la 200 de biți este rezistent la coliziuni; s-ar putea să nu mai fie peste 20 de ani, deoarece câștigăm mai multă putere de calcul); pe de altă parte, este mai aproape de noțiunea intuitivă de „rezistent la coliziune” pe care o avem.

Cu această definiție, abordarea 2 ar putea fi reformulată ca „dacă presupunem $H'$ nu este rezistent la coliziuni, atunci știm $x \ne y$ cu $H'(x) = H'(y)$. Atunci fie $h_2(x) = h_2(y)$ (și, prin urmare $h_2$ nu este rezistent la coliziune, așa cum cunoaștem o coliziune), sau $h_2(x) \ne h_2(y)$, caz în care avem $h_1(u) = h_1(v)$ pentru $u = h_2(x), v = h_2(y), u \ne v$ (și, prin urmare $h_1$ nu este rezistent la coliziune, așa cum cunoaștem o coliziune).

John St avatar
drapel id
Înseamnă aceasta că ambele abordări sunt valide, dar implică definiții diferite ale rezistenței la coliziune?
poncho avatar
drapel my
@JohnSt: de fapt, am crezut că am spus clar că nu cred că definiția din abordarea 1 este chiar atât de validă; cu toate acestea, atâta timp cât înțelegeți problemele, vă puteți decide
John St avatar
drapel id
Văd, mulțumesc pentru explicație, am fost la bordul navei de apropiere 2 de la început, așa că voi folosi asta în cazul în care acest lucru apare în examen, precizând și ce definiție a rezistenței la coliziune voi folosi
Puncte:0
drapel id

Am avut ocazia să-l întreb pe profesorul meu și el se aștepta la prima soluție, așa cum presupune a doua $ n_1 = n_2 $ (încă nu știu de ce sau unde face asta).

El a mai explicat că:

  • A $n_2$ de 1000 de biți care apoi se convertesc în a $n_1$ de 2 biți este considerat rezistent la coliziuni, deoarece utilizați toată securitatea oferită de cei 2 biți, adică obțineți toată valoarea pentru cei 2 biți pentru care ați „plătit”.
  • Dimpotrivă a $n_2$ de 500 de biți care apoi se convertesc în a $n_1$ de 1000 de biți nu este considerat rezistent la coliziuni, deoarece „plătiți” pentru 1000 de biți de securitate și folosiți doar 500.

Acest lucru m-a ajutat cu adevărat să înțeleg conceptul într-un mod intuitiv și logic.

poncho avatar
drapel my
Deci, el susține că o funcție hash cu o ieșire de 2 biți poate fi „rezistentă la coliziuni”? Îmi pare rău, dar asta intră în conflict cu înțelegerea mea a ceea ce înseamnă „rezistența la coliziune”...
poncho avatar
drapel my
Cu cât mă gândesc mai mult la asta, cu atât definiția profesorului are mai puțin sens. Definim termeni, nu pentru că ne place să facem definiții, ci pentru că acele definiții sunt utile. Definiția mea pentru rezistența la coliziune (nu știm despre o coliziune și nu cunoaștem un mod practic de a găsi una) se pretează ca o presupunere de securitate pentru diverse dovezi de securitate a lucrurilor care implică funcții hash. În schimb, nu mă pot gândi la o singură utilizare pentru „pentru această funcție hash pe 2 biți, nu putem găsi o coliziune fără a efectua evaluări hash $\sqrt{2^2}$”
John St avatar
drapel id
Modul în care o înțeleg este că definiția rezistenței la coliziune este mai mult un criteriu de implementare. De exemplu, funcția de 2 biți este implementată astfel încât să ofere rezistența maximă posibilă pentru lungimea sa de ieșire. Dacă produsul final este sau nu suficient și are suficientă rezistență la coliziuni (pe baza necesităților, nu a definiției) este o chestiune diferită.
John St avatar
drapel id
Acestea fiind spuse, sunt de acord că definiția este puțin ciudată și înșelătoare.
John St avatar
drapel id
Un exemplu de utilizare pentru această definiție este dacă orice funcție $H'$ compusă din mai multe funcții este implementată pentru a utiliza la maximum securitatea funcțiilor respective. (adică nu o poți rupe mai ușor frânând o funcție interioară care face parte din ea)

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.