Projet n°10
Transcription
Projet n°10
o Projet n 10 Option ISN Génération de mots de passe version du 28 septembre 2013 20122013 [email protected] Introduction Le but de ce projet est de générer des mots de passe à la fois sûr et relativement facilement mémorisables. Ce problème se posent régulièrement aux administrateurs réseaux qui doivent générer périodiquement des centaines de mots de passe. Un mot de passe trop facile nuit à la sécurité de toute l'infrastructure informatique et un mot de passe trop aléatoire entraîne des pertes de temps : baisse de productivité due aux erreurs de saisies, oublis des mots de passe, régénération, etc. Ce projet est inspiré de l'article : http://pro.01net.com/editorial/595657/creez-un-mot-de-passe-sur-mais-facile-a-retenir/ 1 Problème 1.1 Lisibilité des mots de passe Il est important qu'il n'y ait pas d'ambiguïté visuelle sur le mot de passe. Certaines polices de caractère ont des glyphes très proches ce qui rend les mots de passe ambigus : il est dicile par exemple de distinguer ablab0 et ab1abO. Pour cette raison, on n'utilisera jamais le ` minuscule ni le zéro. 1.2 Sécurité d'un mot de passe Un mot de passe sûr est un mot de passe susamment long qui n'utilise pas un sous-ensemble trop strict du code ASCII. Ceci impose que le mot de passe contienne au moins : • un chire ; • au moins une lettre en minuscule et une lettre en majuscule ; • un symbole spécial (qui n'est pas une lettre minuscule ou majuscule), par exemple &, #, @, {, }, %, etc.. On peut tester la sécurité d'un mot de passe à l'adresse suivante : www.microsoft.com/fr-fr/security/pc-security/password-checker.aspx 1.3 Astuces de mémorisation Les astuces de mémorisations sont présentées dans l'article précédemment cité. Celles qui nous intéressent consistent en des combinaisons particulières de touches. Il conviendra de stocker dans une structure de données adaptées ces combinaisons, puis lors de la génération des mots de passe, d'en tirer aléatoirement, une ou plusieurs, parmi celles-ci an de composer le mot de passe. Attention : ces combinaisons dépendent de la disposition du clavier. On se contentera dans la suite de considérer les combinaisons du clavier AZERTY. On pourra bien sûr proposer ces propres astuces de mémorisation. 2 2 Travail à eectuer (Le barème est donné à titre indicatif.) 2.1 2 Générateur aléatoire sans contrainte [ pts] Écrire une fonction qui prend comme argument un entier (la longueur du mot de passe) et renvoie un mot de passe de cette longueur en choisissant aléatoirement dans le code ASCII représentable (déterminer le sous-intervalle d'entier des caractères représentables). 2.2 3 Générateur aléatoire lisible [ pts] Écrire une fonction qui prend comme argument un entier (la longueur du mot de passe) et qui renvoie un mot de passe lisible. 2.3 Générateur aléatoire lisible et sûr [ 5 pts] Écrire une fonction qui prend comme argument un entier (la longueur du mot de passe) et qui renvoie un mot de passe lisible et sûr. On pourra demander à l'utilisateur d'entrer un nombre. . . Dans le cas d'une génération massive, on pourra stocker les nombres dans un chier .csv . 2.4 Générateur aléatoire lisible, sûr et facilement mémorisable [ 10 pts] Stocker toutes les combinaisons de touches de longueur données (3, 4, 5 et 6) Écrire une fonction qui prend comme argument un entier et qui renvoie un mot de passe lisible, sûr et facilement mémorisable. En fonction de la longueur donnée, il conviendra choisir une au plusieurs combinaisons de touches (en minuscules ou en majuscules ou aléatoirement en minuscules et en majuscules) et d'insérer entre elles des caractères spéciaux (par exemple). 2.5 Tester tous ces programmes 2.6 Améliorations Proposer des améliorations. Limites du projet On ne demande pas de faire une interface graphique pour ce projet : une interface console peut largement sure. Rien n'empêche, bien entendu, un groupe ayant terminé son projet avec ses limites d'aller au-delà de ses limites.