Warum ist das eingegebene Passwort nicht sichtbar?

39

Unten ist ein Bild von dem Prozess, den ich unternommen habe, um einen Benutzer auf Bash in Linux zu erstellen.

Benutzer anlegen und Passwort in der Bash vergeben

Ich verstehe, dass das Passwort aus Sicherheitsgründen nicht angezeigt werden sollte, aber ich meine, warum werden Sternchen (oder die von mir eingegebenen Zeichen) nicht angezeigt ?

Kaiylar
quelle
4
Wann immer Sie eine Frage zu Linux haben, lautet die Antwort Sicherheit.
Katz
1
Verwandte, auf Ubuntu fragen : Es wird nichts im Terminal
angezeigt,
IBM Notes führt diese seltsame Aktion aus, bei der für jedes Zeichen, das Sie als Kennwort eingeben, zufällige Sternchen angezeigt werden. Sehr verwirrend.
1
Cross-Site-Dupe: ux.stackexchange.com/q/39774/11086
wim
1
auch im Zusammenhang: security.stackexchange.com/q/35133/3945
wim

Antworten:

43

Denn so machen wir Dinge in * nix Land. :) Es gibt ein wenig zusätzliche Sicherheit, indem keine Sternchen angezeigt werden. Auf diese Weise kann jemand, der Ihren Bildschirm sieht, die Länge Ihres Passworts nicht sehen.

Aber ich muss zugeben, dass es ein bisschen beängstigend ist, kein Feedback zu bekommen, wenn Sie ein Passwort eingeben, besonders wenn Sie eine schlechte Tastatur haben. Die meisten GUI-Kennwortdialogfelder auf * nix-Systemen geben Ihnen also eine Art Feedback, z. B. mit Sternchen oder häufiger more. Einige zeigen sogar jedes Zeichen an, während Sie es *eingeben, ersetzen es dann aber sofort durch ein oder ⬤, aber das ist nicht so gut, wenn Ihnen jemand über die Schulter schaut. Oder wenn sie über ein Gerät verfügen, das das von Ihrem Computer an Ihren Monitor gesendete Videosignal aufnimmt und decodiert.

PM 2Ring
quelle
5
... mit Hilfe vonstty -echo
Jeff Schaller
7
Diese Antwort ist nicht schlecht, aber IMHO Gilles gab die echte Antwort. Mit ziemlicher Sicherheit dachten die Implementierer nicht wirklich an "ein bisschen zusätzliche Sicherheit" und definitiv nicht an die Benutzererfahrung. Sie haben es so gemacht, wie sie es gemacht haben, weil es billig und einfach war, es so zu machen. Dann, später, erwarteten wir, dass es so weiter funktioniert ...
Celada,
2
@ Celada: Guter Punkt. FWIW, ich habe Gilles 'ausgezeichnete Antwort bereits positiv bewertet.
PM 2Ring
2
@Celada Die zusätzliche Sicherheit hat möglicherweise nicht zu der ursprünglichen Entscheidung geführt, nichts anzuzeigen, aber ich habe es immer als Vorteil angesehen und kann sehen, wie andere, die so denken, einen guten Grund dafür geliefert haben, es so zu halten.
Monty Harder
1
Ich denke, die Kurzdarstellung des zuletzt eingegebenen Zeichens ist größtenteils ein mobiler Ansatz, wahrscheinlich, weil das Eingeben auf einer winzigen Bildschirmtastatur fehleranfälliger ist. Ich glaube nicht, dass ich es jemals in Desktop-Anwendungen gesehen habe.
Barmar
82

Was ist die einfachste Art, Benutzereingaben auszublenden?

Nicht anzeigen!

Das Verbergen von Passwörtern während der Eingabe ist eine alte Tradition. In den meisten Kontexten ist dies sicherheitstechnisch sinnvoll: Wenn Ihnen jemand über die Schulter schaut, möchten Sie nicht einfach erkennen, was Sie eingeben. (In einigen modernen Sicherheitsrichtlinien, z. B. 1 2 3 4 5, wird jedoch empfohlen, das Kennwort sichtbar zu machen, da der Benutzer dann komplexere Kennwörter auswählen und sicher sein kann, dass er seine Zeit nicht mit unsichtbaren Korrekturen verbringt Das größte Risiko besteht nicht im Schulter-Surfen, sondern im Rätseln, möglicherweise offline.)

Nachdem entschieden wurde, dass das Passwort ausgeblendet werden soll, mussten die Implementierer entscheiden, wie es gemacht werden soll. Das Terminal verfügt über einen Modus, in dem Benutzereingaben angezeigt werden (Echo ein), und einen Modus, in dem Benutzereingaben nicht angezeigt werden (Echo aus). Der Echo-Aus-Modus ist in gewisser Weise inhärent vorhanden: In diesem Modus übernimmt das Terminal nicht die zusätzliche Arbeit, Benutzereingaben zurückzugeben. Dieser Modus muss auch für Anwendungen vorhanden sein, bei denen durch das Eingeben eines Schlüssels nicht dieses Zeichen eingefügt wird, sondern stattdessen eine Anwendungsverknüpfung aufgerufen wird, die an diesen Schlüssel gebunden ist. Befehle wie das passwdVersetzen des Terminals in den Echo-Off-Modus, während ein Kennwort gelesen wird.

Das Drucken von Sternchen für jedes Zeichen würde zusätzliche Implementierungsarbeit für nur einen relativ kleinen Vorteil erfordern, was die Implementierer des passwdBefehls nicht wollten . Es gibt keinen Terminalmodus zum Drucken von Sternchen, da dies eine sehr spezielle Funktion ist, die nur bei der Eingabe von Kennwörtern nützlich ist.

Übrigens, wenn Sie Ihr Passwort beim Ändern sehen möchten, können Sie es verwenden cat | passwd(zumindest auf einigen Systemen - einige Versionen passwderfordern eine Option wie cat | passwd --stdinund einige akzeptieren dies überhaupt nicht). (Sie können dies sogar tun { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd, tun es aber nicht: Es werden die Kennwörter im Shell-Verlauf gespeichert, wodurch das Risiko eines Lecks erheblich größer ist.) Dies mit Befehlen arrangieren, die das Kennwort vom Terminal lesen, anstatt wie auch immer Ihre Standardeingabe wie sudooder sshist komplexer. Wenn Sie eine GUI zur Verfügung haben, können Sie ssh-askpass verwenden, das anzeigt, wie viele Zeichen Sie eingegeben haben ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -Afür sudo; für ssh ist es kompliziert, wenn Sie es von einem Terminal aus aufrufen).

Gilles 'SO - hör auf böse zu sein'
quelle
1
Dies ist bei weitem die beste Antwort imo und es ist eigentlich sehr hilfreich. Danke, dass du meinen Glauben klargestellt und erweitert hast.
DankyNanky
4
Der Terminal-Handler kümmert sich um einfache Bearbeitungsfunktionen (wie die Rücktaste) und das Puffern der Zeile. Eine mit fgets () gelesene Zeile wird erst zurückgegeben, wenn die Eingabetaste gedrückt wird. Das macht das Drucken von Sternchen schwierig. Wenn Sie jeweils ein Zeichen lesen und Sternchen als Echo ausgeben, verlieren Sie die Rücktaste oder müssen zusätzliche Anstrengungen unternehmen, um dies zu unterstützen.
Jasen
1
Ich frage mich, inwiefern sich dies auf die Zeit bezieht, als sich Tty tatsächlich auf die Teletypewriter bezog ...
Jasper
1
Es gibt Möglichkeiten, einen Befehl auszuführen, ohne dass er im Befehlsverlauf gespeichert wird. Siehe zum Beispiel Befehl ausführen, ohne ihn im Verlauf zu behalten .
ein Lebenslauf vom
2
Nachtrag: Endgeräte, die "zusätzliche Arbeit" leisten, um Benutzereingaben nachzuvollziehen, sind sogenannte "Vollduplex" -Endgeräte. In Ye Olde Days gab es auch "Halbduplex" -Terminals, bei denen das Zeichen beim Tippen sofort vom Terminal angezeigt wurde und das Betriebssystem es nicht zur Anzeige an das Terminal zurücksendete. Wenn ich mich richtig erinnere, hatten diese Terminals keine Möglichkeit, das Echo auszuschalten.
Alexis
3

Wenn Sie das Kennwort unsichtbar machen, wird es sicherer, da die Länge des Kennworts für andere Benutzer nicht sichtbar ist. Dies vermeidet das Risiko, dass andere Benutzer versuchen, das Kennwort anhand seiner Länge zu erraten und sich in Ihrem Konto anzumelden.

Coder AP
quelle
Tastaturen neigen dazu, während der Verwendung Geräusche zu verursachen, die zur späteren Analyse zur Bestimmung der Kennwortlänge abgehört oder aufgezeichnet werden können. Einige Tastaturmodelle sind leiser als andere . Außerdem neigen einige Tasten dazu, relativ deutliche Geräusche zu machen (zB Leertaste, Eingabetaste usw.). Überlegen Sie in diesem Zusammenhang auch, wie wichtig es ist, die Länge Ihres Passworts geheim zu halten. zur Informationssicherheit .
ein Lebenslauf vom
@ Michael Kjörling: Was Sie gesagt haben, ist eine erweiterte Sicherheitsstufe und ein zu berücksichtigender Punkt (insbesondere für diejenigen, deren Hörvermögen wirklich gut ist und die die Passwortlänge durch das Geräusch von Tastaturen ermitteln können). Es handelt sich jedoch um ein Hardwareproblem, das auf Hardwareebene berücksichtigt werden muss. Daher verfügen wir jetzt über Touchscreen-Tastaturen, die keine Geräusche verursachen.
Coder AP