Für Passwörter verwende ich Folgendes: zwei Buchstaben, dann zwei Ziffern, dann zwei Buchstaben, dann zwei Ziffern. Buchstaben sind Kleinbuchstaben. Buchstaben und Ziffern werden zufällig generiert.
Es stellt sich heraus, dass die resultierenden Passwörter leicht zu merken sind (zumindest leicht für mich; Ihr Gehirn ist möglicherweise nicht auf die gleiche Weise verdrahtet wie meins).
Ein guter Punkt bei solchen Passwörtern ist, dass es einfach ist, ihre Entropie zu berechnen: Es gibt 26 4 sup> x10 4 sup> mögliche Passwörter mit diesem Format, alle mit der gleichen Wahrscheinlichkeit , also eine Entropie von ungefähr 32,09 Bits (ein gegebenes Passwort hat die Wahrscheinlichkeit 1/2 32,09, ausgewählt zu werden). 32 Bit Entropie sind nicht gut für alle Verwendungen, aber für die meisten gut genug, einschließlich jeder Verwendung, bei der Angriffe online sind. Bei einem Online -Angriff muss der Angreifer für jede Vermutung eine Anfrage an ein "ehrliches" System richten. z.B. ein SSH-Server. Offline-Angriffe (bei denen der Angreifer eine Vermutung "allein" überprüfen kann, die nur durch seine Rechenleistung begrenzt ist) sind beängstigender und erfordern ein stärkeres Kennwort.
Denken Sie daran, dass das Wissen, wie viel Sicherheit Sie haben, mindestens genauso hoch ist wichtig für eine solche Sicherheit.
Bonus: Hier ist das C-Programm, mit dem ich diese Passwörter generiere (kompiliert unter Linux und FreeBSD, sollte auf anderen Unix-ähnlichen Systemen funktionieren):
/ * * Kleines Dienstprogramm zur Passwortgenerierung. * / #Include <stdio.h> # include <stdlib.h> <string.h> # # # <errno.h> umfassen <sys / types.h> #include <unistd.h> #include <fcntl.h>static unsignedrandval (unsigned max) {static int fd = schließen - 1; vorzeichenloses Zeichen x; if (fd < 0) {fd = open ("/ dev / urandom", O_RDONLY); if (fd < 0) {perror ("open"); exit (EXIT_FAILURE); } } zum (;;) {
vorzeichenloser Wert; für (;;) {if (read (fd, &x, 1) < = 0) {if (errno == EINTR) continue; perror ("read"); exit (EXIT_FAILURE); } brechen; } val = (ohne Vorzeichen) x; if (val > = max * (256 / max)) weiter; Rückgabewert% max; }} statischer intrandletter (void) {return "abcdefghijklmnopqrstuvwxyz" [randval (26)];} statischer 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;}