L'article How to Memorize 100 Passwords in 10 Seconds (via fr.misc.cryptologie) approche le problème de génération des mots
de passe et la multiplication des logins/mots de passe différents.
La solution proposée par Jean-Philippe Aumasson est intéressante et doit ressembler à quelque chose comme ça (à vérifier dans les sources):
int passwords[maxpasswords][lenpassword]; /* avec lenpassword = lenpassword/4 */
int i, j;
srand(masterkey);
for (i=0; i < maxpassword; i++) {
for (j=0 ; j < lenpassword ; j ++)
passwords[i][j] = rand();
srand(passwords[i][0]);
}
Ce tableau indexé correspond à n mots de passe disponibles. L'intérêt d'utiliser exclusivement rand() permet de ne pas
compromettre p[n+1] ou p[n-1] si p[n] était découvert (car les passwords sont en ASCII, donc chaque octet généré est modulo la taille de l'alphabet). Notons que cela est vrai si et seulement si le PRG est considéré sûr et
que la taille de l'alphabet est assez grande.
L'intérêt, face aux gestionnaires de keyring comme pwsafe ou revelation, est que cet algorithme vous permet de ne pas avoir à vous balader avec votre keyring partout, vous avez juste besoin du programme, votre master key en tête... et d'une liste qui associe pr0nwild.com à l'index n de votre table de mot de passe.
Tout ça pour dire que je n'ai toujours pas trouvé un gestionnaire de mots de passe correct avec les fonctionnalités suivantes :
- Chiffrement standard (cad déchiffrable dans openssl) du keyring,
- Frontend graphique,
- Frontend console,
- Pas constamment cassé comme revelation dans Debian,
- Plus fonctionnel que pwsafe;
Update quelques heures plus tard : En fait, je ne sais pas ce qui est le mieux ; une taille d'alphabet grande ou petite ? Plus elle est grande, plus les caractères du password seront aléatoires, mais la difficulté de retrouver le mot de 32 bits à partir du modulo sera diminué... Enfin je me comprends...