Puncte:1

Ce lungime a frazei de acces este bună, așa că este greu să spargi cheia PBKDF2 a bitcoin?

drapel ru

Conform https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#From_mnemonic_to_seed

Pentru a crea o sămânță binară din mnemonic, folosim funcția PBKDF2 cu o propoziție mnemonică (în UTF-8 NFKD) folosită ca parolă și șir „mnemonic” + frază de acces (din nou în UTF-8 NFKD) folosit ca sare. Numărul de iterații este setat la 2048 și HMAC-SHA512 este utilizat ca funcție pseudo-aleatorie. Lungimea cheii derivate este de 512 biți (= 64 de octeți).

Având în vedere că cunoaștem sămânța mnemonică de 24 de cuvinte, care este cantitatea de caractere pe care ar trebui să o aleg pentru parola mea, astfel încât să fie foarte greu de ghicit cu un super computer foarte rapid? Sau, mai bine, câte permutări ar trebui să fie suficiente pentru a fi sigur?

kelalaka avatar
drapel in
Care este securitatea ta țintă? Putem numi asta o înșelăciune la întrebarea dvs. [Este o idee bună folosirea a 7-8 cuvinte aleatorii din toate cuvintele unei limbi ca parolă?](https://crypto.stackexchange.com/q/76701/18298). Dacă nu, vă rugăm să indicați.
fgrieu avatar
drapel ng
Orice sfat contemporan de a utiliza PBKDF2 pentru hashing parole este incompetent sau orientat spre a face sistemul defectabil. Când este combinat cu _"Numărul de iterații este setat la 2048"_, aceasta este o provocare împotriva bunului simț! Ghiciți cum clasific [acea](https://pages.nist.gov/800-63-FAQ/#q-b17) sfat, în lumina precedentelor precum [dimensiunea cheii DES](https://crypto.stackexchange. com/a/34228/555) și [Dual_EC_DRBG](https://en.wikipedia.org/wiki/Dual_EC_DRBG).
kelalaka avatar
drapel in
@fgrieu Cred că folosesc PBKDF2 doar pentru a combina o parolă și pentru a scoate o sămânță binară care să fie folosită în secp256k1. Nu pentru securitate. Ei spun deja că este permisă o entropie minimă de 128 de biți. OP trebuie să folosească 256 pentru a atinge entropia de 2560 de biți de la Grover.
fgrieu avatar
drapel ng
@kelalaka: Întrebarea se întreabă cum să alegeți o parolă, cu intenția ca aceasta să protejeze o cheie privată. Întrebarea presupune „că cunoaștem sămânța mnemonică de 24 de cuvinte”, iar cheia publică se presupune că este cunoscută. Cu asta, nu este fiecare parolă testabilă cu aproximativ 2048 SHA-512 și înmulțirea unui punct pe secp256k1? Dacă da, nu pot tolera acea mică întindere a entropiei. Aceasta este o autostradă pentru spargitorii de parole.
kelalaka avatar
drapel in
Mnemonicul @fgrieu este _nu public_ . pasafaza poate fi folosită pentru o negație plauzibilă în cazul în care sunt determinate cuvintele mnemonice. Apoi, din nou, este nevoie de aproximativ 256 de biți entropie. De asemenea, după cum puteți vedea pe link-ul OP, acesta poate fi gol.Poate, întrebând OP, având în vedere că atacatorii cunosc cele 24 de cuvinte,...
fgrieu avatar
drapel ng
@kelalaka: dacă parola nu este necesară pentru că există 128 sau mai mulți alți biți de entropie care intră în lucru, atunci sunt de acord cu PBKDF2 și orice număr de runde, iar prin briciul lui Occam propune să golească parola (sau prima parolă acceptabilă lexicografic) și numiți-o o zi. Dacă este necesară parola, de ex. pentru o negație plauzibilă sau/și deoarece restul entropiei se poate scurge, atunci utilizarea PBKDF2 este proastă, utilizarea lui cu 2048 de runde este mai rău. În ambele cazuri, consider că întrebarea/metoda nu merită luată în considerare.
kelalaka avatar
drapel in
@fgrieu a dat un răspuns, dacă lipsește ceva, poți să mă anunți?
Puncte:1
drapel in

Cheia publică și privată în ECC

Pentru a crea o cheie publică în ECC pe 256 de biți (Bitcoin folosește secp256k1) este nevoie de 256 de biți uniform aleatoriu pentru a produce o cheie secretă $k$ (număr de 256 de biți) și publică $[k]G$, adică înmulțirea scalară cu punctul de bază $G$ iar acest lucru este protejat de problema logaritmului discret pe ECC și dacă grupul de curbe este generic, cel mai cunoscut atac are costul $2^{128}$. Rețineți că o dată a Calculator cuantic criptografic este construit, algoritmul lui Shor atunci când este aplicat la DLog, securitatea a dispărut!

Parole aleatoare nu amintesc greu de folosit Dicewire xkcd936

Oamenii sunt greu să-și amintească 64 de hexuri aleatorii, așa că cercetătorii au inventat zarurile, iar Bip39 este similar cu acesta. În Bip39, în loc să-și amintească cele 64 de hexuri, odată aruncă numere aleatorii, probabil aruncând o monedă corectă sau obținând de la /dev/urandom pentru a selecta cuvinte din lista de cuvinte din Bip39. Este bine cunoscut că 24 de cuvinte creează aproximativ 256 de biți entropie.

Cuvintele selectate nu sunt publice și ține-le secrete tot timpul.

Acum putem considera utilizarea expresiei de acces ca

  • Pentru a realizanegare plauzibila
  • Pentru a crește caracterul aleatoriu în cazul în care sursa aleatoare pentru generarea unui mnemonic de 24 de cuvinte nu este de încredere așa cum se spera și
  • Utilizați sămânța mnemonică ca sursă de entropie și protejați-o cu o frază de acces.

Dacă citim întrebarea ca,

Având în vedere că atacatorii (nu noi) cunosc sămânța mnemonică de 24 de cuvinte, care este cantitatea de caractere pe care ar trebui să o aleg pentru parola mea, astfel încât să fie foarte greu de ghicit cu un super computer foarte rapid? Sau, mai bine, câte permutări ar trebui să fie suficiente pentru a fi sigur?

Deci presupunem că cuvântul mnemonic de 24 de cuvinte nu este securizat corespunzător.

În primul rând, repo are aproximativ 8 ani (create_at": "2013-11-19T17:18:41Z ) mai veche decât cea mai recentă competiție de hashing a parolelor organizată în 2015. Este normal ca aceștia să menționeze PBKDF2, nu Argon2. Se pare că acest document nu este actualizat pentru nevoile de astăzi! Dar nu este normal să sugerăm iterația 2048 și încă existau candidați mai buni la acel moment.

  • Bcrypt 1999 - iterație, fără duritate a memoriei
  • PBKDF2 2000 - iterație, fără duritate a memoriei
  • Scrypt 2009 - iterație, au duritatea memoriei
  • Argon2 2015 - iterație, au duritate de memorie și au contrar paralelizării.

În primul rând, nu folosiți caractere, utilizați din nou Bip39 sau dicewire pentru a genera expresia de acces. Deci, cu 12 cuvinte se poate ajunge la o entropie de aproximativ 128 de biți, iar acest lucru chiar și cu un simplu hash precum SHA1 sau SHA256 în loc de PBKDF2 sau Argon2, este suficient de sigur de Vârf și puterea colectivă a minerilor BitCoin unde a ajuns cândva Minerul $\aproximativ 2^{92,09}$ SHA256d pe an, la 7 februarie 2021. Dacă presupunem că aceasta este securitatea dvs. țintă pentru parola dvs., atunci pentru PBKDF2

  • utilizați iterația ca 1M, astfel încât să puteți reduce puterea colectivă la $\aproximativ 2^{70}$ și reduceți Summit-ul la aproximativ $~2^{50}$*. Lucrul frumos despre această iterație este reglabil în funcție de nevoia dvs. (Se poate folosi benchmark-ul Hashcat pe NVidia RTX 3090 pentru a ajusta securitatea țintei în funcție de supercomputerul care deține multe RTX-uri în loc de puterea colectivă a minerilor).

    Mnemonicul de 12 cuvinte va fi mult sigur pentru Summit, Bip39 cu 6 cuvinte și-a depășit puterea. cu toate acestea, avem alternative mai bune, chiar și atunci și acum - Scrypt și Argon2!

Folosiți Argon2 ori de câte ori este posibil

Astăzi, minerii bitcoin folosesc pe scară largă ASIC-uri și GPU-uri pentru a paraleliza masiv procesul de minerit. Acum, avem mecanisme asemănătoare cu Argon2 împotriva lor

  • Memorie reglabila astfel încât puterea de căutare ASIC și GPU să fie redusă. Chiar și pe computere, și nu că timpul de utilizare a memoriei poate fi exploatat.

  • Paralelism reglabil astfel încât nucleul CPU-urilor nu poate fi rulat complet în instanțe paralele.

  • Și, din nou număr de iterații pentru a reduce timpul de căutare unică.

    Parametrii Argon2 trebuie să fie măsurați înainte de a decide, iar mnemonicul de 12 cuvinte va fi destul de sigur pentru Argon2. Putem spune totuși că Bip39 cu 6 cuvinte va fi în siguranță împotriva Summit-ului.

Sau, mai bine, câte permutări ar trebui să fie suficiente pentru a fi sigur?

Citind aceasta ca permutarea celor 24 de cuvinte. Atunci avem 24! iar prin folosirea Formula de aproximare a șirului $$n! \sim \sqrt{2 \pi n}\left(\frac{n}{e}\right)^n$$ apoi setarea $n=24$

24$! \sim \sqrt{2 \pi 24}\left(\frac{24}{e}\right)^{24} \sim 6.2\mathrm{e}{+23} \sim 2^{80}$$

Acest lucru este destul de bun (aproximativ 8 cuvinte Bip39), totuși, rețineți că, dacă atacatorul cunoaște mnemonicul de 24 de cuvinte, atunci entropia cheii derivate $k$ împreună cu expresia de acces nu pot trece $2^{80}$. Dacă sunteți bine cu entropia de 80 de biți, atunci cu Argon2id cu parametri frumoși, acest lucru este suficient pentru a fi sigur împotriva căutării prin parole. $2^{50}\ll 2^{80}$

Totuși, sfatul este să folosiți un nou mnemonic de 24 de cuvinte dacă îl puteți păstra în siguranță, astfel încât să găsiți exploatarea $80$-bit entropy - nu este clar acum fără forțarea brutală a frazei de acces. Dacă nu,

Sfat final; utilizați manageri de parole precum keepass și password1 unde aveți nevoie de o singură parolă bună, de preferință de la dicewire sau Bip39. Ei pot crea parole cu adevărat aleatorii pentru nevoi, iar seifurile de parole sunt protejate cu parola dvs., iar restul este gestionat de ei.


*Rețineți că numerele sunt aproximative, nu exacte. Nu putem fi siguri fără să stăm pe consola The Supercomputer - Summit

fgrieu avatar
drapel ng
Sunt de acord că „testul țânțarilor deasupra locului naștere trib munte piață necunoscut act robust ia în considerare” sau chestia cu permutarea cu 1M mai degrabă decât 512 iterații PBKDF2 ar fi sigur. Dar aș prefera să petrec acel timp CPU pe Argon2, scrypt (prezentat în 2009, disponibil pe scară largă în 2013) sau chiar bcrypt (1999) și să pot folosi o frază mai scurtă cu securitate echivalentă. De asemenea, nu mi-aș putea aminti cu încredere o expresie de acces lungă și sunt sigur că mai mult de 1/4 dintr-o bază de utilizatori nu ar fi scris-o sau ar fi scris-o. Deci nu recomand acel sistem.
kelalaka avatar
drapel in
Da, a fost nevoie de un calcul real pe care l-am sărit, deoarece nu pot fi precis. Cu toate acestea, 6 până la 7 ar trebui să fie suficient. Hmm, se pare că am uitat să subliniez să folosesc Argon2. Parola lungă, ei bine, aceasta este o problemă umană, totuși, unii oameni o notează, unii au uitat-o. Există informații despre parola uitată pentru portofelele care au o cantitate imensă de monede. Se pare că limita monedelor disponibile se apropie de 0 când n merge la infinit. Voi actualiza răspunsul, mai târziu. Mulțumiri.
kelalaka avatar
drapel in
@fgrieu Cred că scopul real al frazei de acces este generarea mai multor chei private și cheile corespunzătoare. Bitcoin folosește o mulțime de perechi de chei per utilizator. Ei folosesc mai multe portofele ierarhice deterministe, BIP0032/BIP0044, care se potrivesc mai mult în utilizare.

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.