W przypadku haseł używam: dwóch liter, następnie dwóch cyfr, następnie dwóch liter i dwóch cyfr. Litery są małe. Litery i cyfry są generowane losowo.
Okazuje się, że otrzymane hasła są łatwe do zapamiętania (przynajmniej dla mnie łatwe; Twój mózg może nie być podłączony w ten sam sposób niż mój).
Zaletą takich haseł jest to, że łatwo jest obliczyć ich entropię: istnieje 26 4 x10 4 możliwych haseł w tym formacie, wszystkie z takim samym prawdopodobieństwem , więc entropia około 32,09 bitów (dane hasło ma prawdopodobieństwo wybrania 1/2 32.09 ). 32 bity entropii nie są dobre dla wszystkich zastosowań, ale są wystarczające dla większości, w tym każdego użycia, w którym ataki są online. Atak online to taki, w którym osoba atakująca musi skierować żądanie do „uczciwego” systemu po każdym przypuszczeniu; na przykład serwer SSH. Ataki offline (w których atakujący może sprawdzić domysł „sam”, ograniczony tylko przez jego moc obliczeniową) są bardziej przerażające i wymagałyby silniejszego hasła.
Pamiętaj, że wiedza o tym, jakie masz zabezpieczenia, jest co najmniej taka sama ważne, ponieważ posiadanie takich zabezpieczeń.
Bonus: oto program C, którego używam do generowania haseł (kompiluje się pod Linuksem i FreeBSD, powinien działać na innych systemach uniksopodobnych):
/ * * Małe narzędzie do generowania haseł. * / # Obejmują <stdio.h> # obejmują <stdlib.h> obejmują <string.h> # # # to <errno.h> obejmują <sys / types.h> # obejmują <unistd.h> # obejmują <fcntl.h>static unsignedrandval unsigned (max) {statyczne Int FD = - 1; unsigned char x; if (fd < 0) {fd = open ("/ dev / urandom", O_RDONLY); if (fd < 0) {błąd ("otwórz"); exit (EXIT_FAILURE); } } dla (;;) {
unsigned val; for (;;) {if (read (fd, &x, 1) < = 0) {if (errno == EINTR) continue; perror ("czytaj"); exit (EXIT_FAILURE); } przerwa; } val = (bez znaku) x; if (val > = max * (256 / max)) kontynuuj; wartość zwrotu% max; }} static intrandletter (void) {return "abcdefghijklmnopqrstuvwxyz" [randval (26)];} static intranddigit (void) {return "0123456789" [randval (10)];} intmain (void) {printf ("% c% c % c% c% c% c% c% c \ n ", randletter (), randletter (), randdigit (), randdigit (), randletter (), randletter (), randdigit (), randdigit ()); return EXIT_SUCCESS;}