Puncte:1

idee deterministă a generatorului de parole

drapel ru

În afara operatorului profesional, deseori dau peste nevoia unei parole unice pentru exp. pentru baze de date locale, server de jocuri sau pe tone de site-uri web, nu atât de importante.

Mi-a venit o idee de a scrie un generator de parole determinist pentru mine, care necesită un tuplu:

  • parola principala
  • antet pentru exp. doar un cuvânt „pinterest”

și generează o parolă de lungime specificată, întotdeauna aceeași.

Îmi dau seama că această idee poate să nu fie cea mai sigură etc. Dar vă rugăm să vă concentrați pe implementarea corectă, nu pe concept.

Implementarea:

  1. Procesați parola principală și antetul utilizând o funcție de hash a parolei, cum ar fi hashing cu balon sau argon2 (cred că adaugă un efort de calcul și îngreunează obținerea parolei principale din câteva parole generate)
  2. Utilizați rezultatul 1. ca sămânță pentru Fortuna DRNG pentru a genera parola

Sunt corecte presupunerile mele despre punctul 1? Ai mai sugera niște operații?

Cum ar trebui să procesez parola principală și antetul? Pot pur și simplu să le concatenez și să le compun hash, sau să XOR hashurile lor, sau să compun?

DannyNiu avatar
drapel vu
SSL/TLS face cam ceea ce descrieți - derivând cheile de lucru din cheia principală obținută din strângere de mână; cu excepția faptului că funcționează cu chei binare în loc de parole textuale. Această întrebare este altfel (după cum o văd eu) o solicitare de analiză a schemei, deci off-topic.
drapel kr
Acesta este de fapt un duplicat al [această întrebare] (https://crypto.stackexchange.com/questions/98173/diy-password-key-derivation-tool-using-pbkdf2-hmac). Vedeți acolo problemele cu care vă puteți confrunta. Pe scurt: ce se întâmplă dacă trebuie să schimbați o parolă pentru unul dintre cele 100 de site-uri web? Un singur generator nu va funcționa.
kelalaka avatar
drapel in
Folosiți un manager de parole?
drapel kr
@kelalaka: Da, utilizarea managerului de parole este cea mai rezonabilă abordare. Dar OP-ul, precum și întrebarea legată speră că ar putea fi posibil să aveți o funcție drăguță care să vă ofere parole pentru toate site-urile dvs. web, astfel încât să aveți nevoie să vă amintiți doar o parolă *singura. În răspunsul legat vă explic de ce. este imposibil pe termen lung.Și da, dacă cineva dorește să-și amintească doar o *o singură parolă*, ar trebui să folosești managerul de parole.
drapel kr
Dacă nu-ți pasă de resetarea parolei, atunci abordarea ta este aproape bună. Nu văd niciun motiv pentru a avea pasul 2, DRNG. Hash-ul are deja entropie mare. De ce ai nevoie de un DRNG? Nu va înrăutăți rezultatul, dar adaugă complexitate fără a oferi niciun beneficiu.
kebabdubaj avatar
drapel ru
M-am gândit că DRNG îmi va permite să generez parole de lungime arbitrară
Puncte:-2
drapel cn

Aș sugera mai puține operațiuni :-)

Utilizare Argon2 direct pentru că pentru asta este. Deci ai face ceva de genul asta:-

echo „parolă_master” | argon2 header_needs_to_be_longer -t 1000 -p 10 -k 10000

în lumea *nix.

Asta produce apoi: -

Tip: Argon2i
Iterații: 1000
Memorie: 10000 KiB
Paralelism: 10
Hash: 16e4848c0274617768dac792518fd60d74df6233c0f7d4b90df22f009ae177fd
Codificat:    $argon2i$v=19$m=10000,t=1000,p=10$aGVhZGVyX25lZWRzX3RvX2JlX2xvbmdlcg$FuSEjAJ0YXdo2seSUY/WDXTfYjPA99S5DfIvAJrhd/0
6.435 secunde
Verificare ok

Hash-ul are 256 de biți, ceea ce ar trebui să fie suficient și este întotdeauna repetabil și sigur.

drapel kr
Din punct de vedere al securității, da, este în regulă. Dar ce zici de utilizare? Dacă aveți 100 de site-uri web și trebuie să schimbați parola pentru unul dintre ele, ați merge la fiecare dintre aceste 100 de site-uri web și ați schimba parola doar pentru a avea același generator?
Paul Uszak avatar
drapel cn
@mentallurg Err, nu sunt sigur ce vrei să spui prin a avea un singur generator, dar încercam să mă concentrez pe utilizarea Argonului pentru a combina parola principală și sare.
drapel kr
Întrebarea NU este despre cum să generați parolele în siguranță. Întrebarea este despre crearea unei funcții care are ca intrare numele site-ului web și care produce parola pentru aceasta. Cum ar fi *parolă = generator (nume_site_web)*. Având un algoritm de hashing securizat este doar o *parte* a acestuia. Sigur, putem lua Argon sau alt algoritm sigur. Dar problema *fundamentală* este că această abordare funcționează numai dacă nu ați schimbat parola pentru niciunul dintre site-urile web. Dacă trebuie să schimbați parola, aveți nevoie de un *alt* generator.
drapel kr
... Astfel vei avea nevoie de 2 generatoare. Dacă schimbați parola pentru unele site-uri web de 3 ori, veți avea nevoie de 3 generatoare. Mai mult, va trebui să stocați câteva informații despre ce generatoare ar trebui să fie utilizator pentru ce site. Astfel, în cele din urmă veți ajunge la necesitatea de a păstra informații diferite pentru generarea parolei pentru fiecare site web. Astfel, a avea un singur generator pentru mai multe site-uri web este, pe termen lung, imposibil.
kebabdubaj avatar
drapel ru
Să clarificăm puțin, generatorul meu de parole are un caz de utilizare foarte specific pentru parolele rar folosite, nu atât de importante, care totuși ar putea fi bine să le aibă unice (pentru exp. server minecraft). De asemenea, cred că preocupările dumneavoastră cu privire la schimbarea parolei ar putea fi rezolvate prin adăugarea unui număr întreg nesemnat I, care ar putea lua parte la generarea parolei
kebabdubaj avatar
drapel ru
@PaulUszak sugerați să utilizați antetul ca sare pentru argon2?
kebabdubaj avatar
drapel ru
@mentallurg Ți-am citit întrebarea legată, sunt de acord cu tine, dar totuși cred în abordarea mea pentru cazul meu personal și acest int nesemnat pe care l-am adăugat la funcție va rezolva problema schimbării parolei pentru mine.
kebabdubaj avatar
drapel ru
Întrebarea mea principală rămâne dacă implementarea mea este corectă?
Paul Uszak avatar
drapel cn
@kebabdubaj Da. Pare modalitatea evidentă de a le combina :-) Inclusiv orice numere de versiune (int).
kebabdubaj avatar
drapel ru
@PaulUszak Bine, are sens, de acord

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.