Generator automat de parole

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Generatorul automat de parole ( APG ) este un standard pentru generarea automată de parole aleatorii, pronunțabile sau de nedescris.

Introducere

Acesta derivă dintr-o versiune a unui program scris în limbajul C descris în A Random Word Generator For Pronounceable Passwords of the National Technical Information Service (NTIS). Programul original a folosit funcțiile sistemului Unix pentru a produce numerele pseudo-aleatorii necesare pentru generatorul de parole. Aceste funcții au fost înlocuite de o procedură care utilizează Standardul de criptare a datelor (DES) în modul BCE ( carte de coduri electronice ). În intrarea DES utilizează parole vechi sau șiruri de caractere furnizate de utilizator și o cheie pseudo-aleatorie creată în conformitate cu ceea ce a stabilit standardul ANSI X9.17; orice modificare a cheii sau șirurilor de date de intrare determină DES să genereze un număr aleatoriu complet diferit. De fiecare dată când se întâmplă acest lucru, generatorul de parole creează o parolă diferită aleatorie.

Generarea de parole pronunțabile

În ceea ce privește generarea de parole care pot fi pronunțate (adică cuvinte care nu sunt pe deplin semnificative, dar care pot fi pronunțate, în mod evident în funcție de limba de origine), standardul APG este organizat cu o procedură principală care se referă la trei componente importante: (1) tabelul unității; (2) tabelul digramelor; (3) subrutina numărului aleatoriu.
Generatorul de parole aleatoriu funcționează formând silabe pronunțabile și înlănțuindu-le pentru a forma un cuvânt. Regulile de pronunție sunt stocate într-un tabel pentru fiecare unitate și fiecare pereche de unități ( digramă ). Regulile sunt utilizate pentru a determina dacă o anumită unitate este legală sau ilegală, în funcție de poziția sa în silabă și în unitățile adiacente. Majoritatea regulilor și controalelor sunt orientate către silabă și nu depind de nimic în afara silabei curente. Procedura principală definește regulile interne utilizate pentru a genera cuvintele aleatorii.
Generatorul de numere aleatorii folosește un subrutină DES pentru a produce valori cu virgulă mobilă de precizie dublă între 0 și 1 (exclus). Aceste numere sunt înmulțite cu o variabilă programată n care este o valoare numerică întreagă. Aceasta generează un număr întreg aleatoriu între 0 și n-1 inclusiv.
Numerele aleatorii generate de procedura DES servesc drept intrare în generatorul de cuvinte aleatorii. Subrutina care generează aceste numere este apelată de generatorul de cuvinte ori de câte ori este nevoie de un caracter (unitate). Nu toate caracterele generate vor fi acceptate de generatorul de cuvinte în fiecare poziție a cuvântului. Fiecare caracter este verificat pentru a vedea dacă sunt respectate regulile definite de tabelele de digramă și unitate. Ca rezultat, subrutina generatorului de numere aleatorii va fi apelată în mod repetat până când se returnează un caracter acceptabil. Există o limită superioară stabilită la 100 de apeluri; dacă această limită este atinsă, întregul cuvânt este eliminat și programul începe din nou.
DES acceptă două intrări de date pe 64 de biți . Una constă din vechea parolă sau un șir de date; cealaltă este o cheie pseudo-aleatoare pe 64 de biți (56 biți + 8 biți de paritate) derivată în urma procedurii descrise în ANSI X9.17. Vechea parolă este introdusă manual de la tastatură. O matrice de intrare este generată din primii opt octeți ai parolei sau șirului introdus. Programul va accepta un șir nul (returnarea transportului). Toate caracterele suplimentare sunt ignorate. Dacă blocul de intrare este mai mic de opt caractere, elementele suplimentare ale intrării sunt umplute cu zerouri. DES BCE este apoi utilizat pentru a cripta datele de intrare. Ieșirea este un număr aleatoriu pe 64 de biți, care este forma criptată a intrării. Prima funcție din structura DES este setkey () , care convertește cheia pseudo-aleatorie într-un format utilizat de DES pentru criptare. Opțiunile din linia de comandă transmise setkey () sunt (0, 0, cheie) . Primul „0” este ajustat astfel încât setkey () să nu genereze paritate; al doilea '0' spune setkey () că este necesară criptarea (mai degrabă decât decriptarea); cheia este un indicator către începutul matricei de taste. După setkey () , se apelează funcția des () , care pentru intrare folosește adresele matricelor de intrare și de ieșire, ambele definite ca matrice de caractere nesemnate de 8 octeți .
Matricea de ieșire este produsă de o funcție answer () , care returnează numărul final necesar. Funcția de răspuns () ia adresa matrice de ieșire ca un pointer la char nesemnate și n număr întreg a cărui valoare cuprinsă între 0 și n-1 este nevoie de programul de generare aleatoare cuvânt. Această funcție generează o sumă variabilă, definită ca o valoare întreagă nesemnată . Pentru a obține o valoare numerică din matricea de caractere de ieșire, aceasta adaugă valorile ASCII ale primelor trei elemente ale matricei de ieșire și stochează suma în variabila sa. Prin urmare

 sum = out [0] + out [1] + out [2]

care este un număr întreg. Pentru a obține un număr în intervalul necesar, de la 0 la n-1 , din sumă, funcția ia valoarea modulului între sumă și n , sumă% n . Această valoare este apoi returnată funcției de apelare.

Securitatea aplicației

Parolele pronunțabile generate de acest generator automat sunt formate din cele 26 de caractere ale alfabetului englez:

  • Parola cu 6 caractere: aproximativ 18 milioane;
  • Parola cu 8 caractere: aproximativ 5,7 miliarde;
  • Parolă cu 10 caractere: aproximativ 1600 miliarde.

Introducerea unei parole suficient de lungi este practic imposibil de ghicit. Folosind nu numai literele alfabetului, ci și cifrele și caracterele speciale, creând parole de nedescris și, prin urmare, complet aleatorii, sunteți ferit de atacurile „dicționar”.

linkuri externe