Puncte:3

Cât de sigur este să partajezi „Parole” folosind Shamir Secret Sharing, dat fiind o modalitate de a verifica dacă parola este corectă?

drapel us

Să spunem că ai o comandă $n$ câmp finit pe care îl utilizați pentru a crea $k$ partajează pentru o parolă folosind Shamir Secret Sharing. Să presupunem că atacatorul primește $k-1$ acțiuni.

Este posibil ca atacatorul să poată face forță brută și să găsească parola, având în vedere că există o modalitate de a verifica dacă o parolă ghicită este corectă sau nu (cum ar fi utilizarea unei autentificări pe un site web de mai multe ori până când intri)?

Face comanda $n$ a materiei câmpului finit într-un astfel de atac cu forță brută? Va crește valoarea $n$ oferi o securitate suplimentară într-un astfel de scenariu?

Puncte:2
drapel in

Lasă Partajarea secretelor lui Shamir (SSS) este construit din câmpul finit $K = \mathbb F_{p^m}$, adică $K$ este o extensie de câmp finit cu $p^m$ elemente, $comanda(K) = p^m$.

Când un atacator accesează $k-1$ al $k$ acțiunile SSS, restul de toate valorile din $K$ au aceeași probabilitate de a fi candidat al ultimei cote. Acest lucru se datorează proprietății SSS; are o schemă perfectă de partajare a secretelor (adică are secretul perfect ). Prin urmare; atacatorul nu învață nimic decât dacă deține toate acțiunile.

Atacatorul, în timp ce ținea $k-1$ acțiuni, are $p^m$ candidați posibili egali pentru ultima cotă. Singura posibilitate pentru ei este să încerce pe toți să se distingă de cel real, nimic mai mult.

Ei bine, în loc să plătești (sau să furi) pentru $k-1$ acțiunile pot încerca pur și simplu toate $p^m$ elemente ale domeniului. Pentru că;

  • Nu au niciun avantaj să aibă $k-1$ acțiuni sau $1$ acțiuni Sunt toți la fel, SSS are un secret perfect.

Acum, deoarece parola este construită din secretul partajat, atunci există o limită pentru un număr posibil de parole; $p^m$. Presupunând că este utilizată o metodă de hashing a parolei proastă, cum ar fi doar SHA-256 pur, atunci dimensiunea câmpului trebuie să fie mai mare decât $2^{93}$ deoarece minerii Bitcoin pot atinge această sumă de SHA-256D într-un an. Prin urmare, este indicat să aveți un câmp cu o comandă mai mare decât $2^{128}$.

Este nevoie de un algoritm de hashing a parolei mai bun, cum ar fi Argon2id, pentru a limita capacitățile atacatorului. De exemplu, dacă utilizați PBKDF2 cu un număr de iterații egal cu 1M (Argon2 are și iterație), atunci reduceți căutarea atacatorului cu $\aproximativ 2^{20}$. Dacă utilizați memoria-hard și numărul de fire care acceptă funcții de hashing a parolelor precum Argon2, atunci reduceți capacitățile de paralelizare ale atacatorului, în special în cazurile ASIC/GPU. Decideți-vă riscurile și vizați securitatea, apoi ajustați parametrii funcțiilor hash de parole. Și nu uitați să adăugați o sare aleatorie la hashingul parolei.

Dacă se folosește și cota pentru a crea o cheie de criptare, cota trebuie să fie egală sau mai mare decât dimensiunea cheii. Motivul simplu este acesta nu se poate crește entropia prin hashing.

Este posibil ca atacatorul să poată face forță brută și să găsească parola, având în vedere că există o modalitate de a verifica dacă o parolă ghicită este corectă sau nu (cum ar fi utilizarea unei autentificări pe un site web de mai multe ori până când intri)?

Ei bine, majoritatea site-urilor/sistemelor bune protejează împotriva acestor atacuri limitând încercările de parole sau având autentificare în doi factori. Cu toate acestea, putem presupune că atacatorul accesează DB pentru a obține hash-ul parolei (parolelor). Acesta este modelul obișnuit de atac în securitatea parolelor. Deci, măriți ordinea câmpurilor.

Face comanda $n$ a materiei câmpului finit într-un astfel de atac cu forță brută? Va crește valoarea $n$ oferi o securitate suplimentară într-un astfel de scenariu?

Da și da ca mai sus.

Makky 56 avatar
drapel us
Mulțumesc, atât de mare este dimensiunea câmpului finit, cu atât mai bine, nu? Cu toate acestea, văd o mulțime de implementări SSS folosind GF(2^32) sau GF(2^64). Nu este asta o amenințare pentru securitate? .. Dar, din nou, cât de des un atacator pune mâna pe acțiuni k-1 :)
kelalaka avatar
drapel in
Depinde cu adevărat de riscurile dvs. de securitate. Ce fel de implementări vezi? Produs real sau demonstrație? După cum am menționat, atacatorul nu are nevoie de acțiuni $k-1$, deoarece SSS are un secret perfect. A avea $k-1$ sau niciunul este egal. Ar fi fost o întrebare mai bună cu acele linkuri și unde sunt folosite.
Puncte:2
drapel ar

Cu condiția ca partajarea secretă a lui Shamir să fie implementată corect, atacatorul nu câștigă niciun avantaj de la cunoaștere până la $k-1$ acțiuni și dimensiunea câmpului nu contează.

Da, atacatorul poate efectua un atac de ghicire cu forță brută pentru a găsi parola (eventual, având suficient timp). Dar ei pot face asta chiar dacă parola nu este împărtășită și știind până la $k-1$ acțiunile nu ușurează acest atac.

Adică, cu un fel de avertizare evidentă: cunoașterea mărimii acțiunilor o oferă o limită superioară a lungimii parolei, pe care un atacator l-ar putea exploata pentru a economisi ceva timp, mai ales dacă parola se întâmplă să fie nerecomandabil de scurtă. Dar atâta timp cât presupunem că lungimea parolei este de cunoștință publică sau că parola a fost completată la o lungime fixă ​​înainte de a o partaja, atunci chiar și asta nu oferă atacatorului nicio informație pe care să nu o aibă deja. Și, în orice caz, atacatorul nu trebuie să cunoască de fapt nicio acțiune pentru a obține aceste informații – tot ce trebuie să știe este cât de lungi sunt acțiunile.


Desigur, dacă parola este prea lungă pentru a se încadra într-un singur element de câmp finit, atunci trebuie oarecum împărțit în bucăți, iar acele piese partajate separat. Dar acest lucru nu afectează proprietatea de bază de securitate teoretică a informației a schemei lui Shamir, care spune că cunoștințele de mai puțin de $k$ acțiunile nu oferă informații despre secret. Nu este greu de văzut că, având în vedere un secret constând din mai multe elemente de câmp finite separate, fiecare partajat independent folosind schema lui Shamir cu prag. $k$, știind până la $k-1$ acțiuni pentru fiecare elementul secret nu oferă informații despre orice dintre ei. (De asemenea, nu este greu să arăți că acest lucru este valabil chiar dacă aceiași parametri publici, inclusiv cota $x$ coordonatele, sunt folosite pentru a le partaja pe toate.)

Daniel avatar
drapel ru
Acest răspuns ar trebui să primească mai multă atenție. Ideea împărtășirii secrete a lui Shamir este că, chiar dacă aveți o mulțime de acțiuni, atâta timp cât nu aveți suma potrivită, nu veți învăța *literal nimic* pe care nu știați deja înainte de a deține acțiunile.
kelalaka avatar
drapel in
@Daniel, de fapt, am menționat că, totuși, acum am un mod mai mult în ochi.
nick012000 avatar
drapel tr
„Cu condiția ca partajarea secretă a lui Shamir să fie implementată corect, atacatorul nu câștigă niciun avantaj din cunoașterea de până la kâ1 acțiuni, iar dimensiunea câmpului nu contează.” Nu ar fi capabili să facă un atac de ghicire și verificare cu forță brută pentru a afla care este cota finală?
drapel ar
@nick012000: Da, dar nu este mai eficient decât să faci un atac de ghicire și verificare cu forță brută pentru a afla care este secretul direct, fără a avea nevoie de acțiuni.

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.