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