Pourquoi le mot de passe que j'ai entré n'est-il pas visible?

39

Ci-dessous est une image du processus que j'ai pris pour créer un utilisateur sous Bash sous Linux.

Création d'un utilisateur et attribution d'un mot de passe dans bash

Je comprends que le mot de passe ne devrait pas être affiché pour des raisons de sécurité, mais ce que je veux dire, c'est pourquoi les astérisques (ou les caractères que j'ai saisis) n'apparaissent pas?

Kaiylar
la source
4
chaque fois que vous avez une question sur Linux, la réponse est la sécurité.
Katz
IBM Notes fait cette chose étrange où ils affichent des astérisques aléatoires pour chaque caractère que vous tapez pour un mot de passe. Très perturbant.
1
également liée: security.stackexchange.com/q/35133/3945
wim

Réponses:

43

Parce que c'est ainsi que nous faisons les choses dans * nix land. :) Cela donne un peu plus de sécurité en ne affichant pas un tas d'astérisques. De cette façon, quelqu'un qui voit votre écran ne peut pas voir la longueur de votre mot de passe.

Mais je dois admettre que c’est un peu effrayant de ne pas recevoir de commentaires lorsque vous entrez un mot de passe, surtout si vous avez un mauvais clavier. Ainsi, la plupart des dialogues de mot de passe d'interface graphique sur les systèmes * nix vous donnent une sorte de retour, par exemple en utilisant des astérisques, ou plus communément. Et certains affichent même chaque caractère au fur et à mesure que vous le tapez, mais le remplacez immédiatement par un *ou, mais ce n'est pas très bien si quelqu'un peut regarder par-dessus votre épaule. Ou s'ils ont un appareil capable de capter et de décoder le signal vidéo envoyé de votre ordinateur à votre moniteur.

PM 2Ring
la source
5
... avec l'aide destty -echo
Jeff Schaller
7
Cette réponse est pas mal, mais IMHO Gilles a donné la vraie réponse. Presque certainement, les développeurs ne pensaient pas vraiment à "un peu de sécurité supplémentaire" et ne pensaient certainement pas à l'expérience utilisateur. Ils l'ont fait comme ils l'ont fait parce que c'était bon marché et facile à faire de cette façon. Puis, plus tard, nous nous attendions à ce que cela continue à fonctionner de la sorte ...
Celada
2
@Celada: bon point. FWIW, j'ai déjà voté l'excellente réponse de Gilles.
PM 2Ring
2
@Celada La sécurité supplémentaire n'a peut-être pas conduit à la décision initiale de ne rien afficher, mais j'ai toujours considéré cela comme un avantage, et je peux voir comment d'autres personnes qui pensent de cette façon auraient pu fournir une bonne raison de continuer.
Monty Harder
1
Je pense que l'affichage abrégé du dernier caractère saisi est principalement une approche mobile, probablement parce que la frappe sur un minuscule clavier à l'écran est plus sujette aux erreurs. Je ne pense pas l'avoir déjà vue dans des applications de bureau.
Barmar
82

Quel est le moyen le plus simple de masquer les entrées de l'utilisateur?

Ne pas l'afficher!

Cacher les mots de passe lors de la frappe est une vieille tradition. Cela a du sens du point de vue de la sécurité dans la plupart des contextes: si quelqu'un vous regarde par-dessus votre épaule, vous ne voulez pas vous permettre de voir facilement ce que vous tapez. (Certaines consignes de sécurité modernes, par exemple 1 2 3 4 5 , recommandent toutefois de pouvoir afficher le mot de passe, car cela permet à l’utilisateur de choisir des mots de passe plus complexes et d’être sûr de ne pas perdre son temps à réparer inaperçu. Le plus gros risque n’est pas de surfer sur l’épaule, mais plutôt de deviner la force brute, peut-être même hors ligne.)

Après avoir décidé que le mot de passe devait être caché, les développeurs devaient décider comment le faire. Le terminal a un mode dans lequel l'entrée utilisateur est affichée (écho activé) et un mode dans lequel l'entrée utilisateur n'est pas affichée (écho désactivé). Le mode écho désactivé a une existence intrinsèque: c'est le mode dans lequel le terminal ne fait pas le travail supplémentaire consistant à faire écho aux entrées de l'utilisateur. Ce mode doit également exister pour les applications où la saisie d'une touche n'insère pas ce caractère, mais invoque un raccourci d'application lié à cette touche. Ainsi, les commandes telles passwdque le réglage du terminal en mode écho lorsqu’elles lisent un mot de passe.

L'impression d'astérisques pour chaque caractère nécessiterait un travail d'implémentation supplémentaire pour un bénéfice relativement modeste, ce que les responsables de la mise en œuvre de la passwdcommande n'ont pas eu envie de faire. Il n'y a pas de mode terminal pour l'impression des astérisques, car il s'agirait d'une fonctionnalité très spécialisée, utile uniquement lors de la saisie de mots de passe.

En passant, si vous souhaitez voir votre mot de passe lors de sa modification, vous pouvez l'utiliser cat | passwd(du moins sur certains systèmes - certaines versions de passwdnécessitent une option du type cat | passwd --stdinet d'autres ne l'acceptent pas du tout). (Vous pouvez même le faire { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd, mais ne le faites pas: cela sauvegarderait les mots de passe dans l'historique du shell, ce qui risquerait beaucoup plus de fuir.) Organiser pour cela avec des commandes qui lisent le mot de passe depuis le terminal plutôt que ce qui est fait. leur entrée standard, telle que sudoou ssh, est plus complexe; Si vous avez une interface graphique disponible, vous pouvez utiliser ssh-askpass, qui indique le nombre de caractères que vous avez saisis ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -Apour sudo; pour ssh, c'est compliqué de l'appeler depuis un terminal).

Gilles, arrête de faire le mal
la source
1
C'est de loin la meilleure réponse imo et c'est en fait très utile. Merci d'avoir clarifié ma conviction et d'avoir développé ^, ^ mérite de voter!
DankyNanky
4
Le gestionnaire de terminal prend en charge les fonctionnalités d'édition simples (comme le retour arrière) et la mise en mémoire tampon de la ligne. Une ligne lue à l’aide de fgets () ne retourne que lorsque vous appuyez sur Entrée. ce qui rend les astérisques d'impression difficiles. Si vous lisiez un caractère à la fois et répétiez les astérisques, vous perdriez la fonctionnalité de retour arrière ou nécessitiez un effort supplémentaire pour la prendre en charge.
Jasen
1
En abordant l'angle de l'histoire sur cette question, je me demande comment cela se rapporte à l'époque où tty parlait réellement de téléscripteur ...
Jasper
1
Il existe des moyens d'exécuter une commande sans que celle-ci soit stockée dans l'historique des commandes. Voir par exemple la commande Exécuter sans la conserver dans l'historique .
un CVn
2
Addendum: Les terminaux qui "font un travail supplémentaire" pour faire écho aux entrées de l'utilisateur sont des terminaux dits "full duplex". Dans Ye Olde Days, il y avait aussi des terminaux "semi-duplex", où le caractère était immédiatement affiché par le terminal lors de la saisie, et le système d'exploitation ne le renvoyait pas au terminal pour affichage. Si je me souviens bien, ces terminaux n'avaient aucun moyen de désactiver l'écho.
alexis
3

Rendre le mot de passe invisible le rend plus sécurisé, car la longueur du mot de passe ne peut pas être vue par d'autres. Cela évite que d'autres personnes essaient de deviner le mot de passe de sa longueur et se connectent à votre compte.

AP du codeur
la source
Les claviers ont tendance à faire une certaine quantité de bruit lors de leur utilisation, ce qui peut être entendu ou enregistré pour une analyse ultérieure afin de déterminer la longueur du mot de passe. Certains modèles de clavier sont plus silencieux que d’ autres . De plus, certaines touches ont tendance à faire des bruits relativement distincts (barre d'espacement, Entrée, etc.). Dans ce contexte, réfléchissez également à l’importance de la confidentialité de la longueur de votre mot de passe. sur la sécurité de l'information .
un CVn
@ Michael Kjörling: Ce que vous avez dit est un niveau de sécurité avancé et un argument valable (en particulier pour celui dont l'audition est vraiment bonne, qui peut obtenir la longueur du mot de passe grâce au bruit des claviers). Mais il s’agit d’un problème matériel, qui doit être pris en compte au niveau matériel et, en tant que tel, nous disposons maintenant d’une installation de claviers à écran tactile, qui ne créent pas de bruit.
Coder AP