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.