Perché la password che ho inserito non è visibile?


39

Di seguito è riportata un'immagine del processo che ho seguito per creare un utente su bash in Linux.

Creazione utente e assegnazione password in bash

Comprendo che la password non deve essere visualizzata per motivi di sicurezza, ma ciò che intendo è, perché gli asterischi (o i caratteri che ho inserito) non vengono visualizzati?


4
ogni volta che hai una domanda su Linux la risposta è sicurezza.
Katz


IBM Notes fa questa strana cosa in cui visualizzano asterischi casuali per ogni carattere digitato per una password. Molto confuso.


Risposte:


43

Perché è così che facciamo le cose in * nix land. :) Dà un po 'di sicurezza in più non mostrando un gruppo di asterischi. In questo modo, qualcuno che vede il tuo schermo non può vedere la lunghezza della tua password.

Ma devo ammettere che è un po 'spaventoso non ricevere alcun feedback quando si inserisce una password, soprattutto se si dispone di una tastiera difettosa. Quindi la maggior parte della finestra di dialogo della password della GUI sui sistemi * nix ti dà qualche tipo di feedback, ad esempio usando asterischi o più comunemente ⬤. E alcuni visualizzano anche ogni personaggio mentre lo digiti, ma poi lo sostituiscono immediatamente con un *o ⬤, ma non è così buono se qualcuno potrebbe guardarti alle spalle. O se hanno un dispositivo in grado di captare e decodificare il segnale video inviato dal tuo computer al monitor.


5
... con l'aiuto distty -echo
Jeff Schaller

7
Questa risposta non è male, ma IMHO Gilles ha dato la vera risposta. Quasi certamente, gli implementatori non stavano davvero pensando a "un po 'di sicurezza in più" e sicuramente non stavano pensando all'esperienza dell'utente. Lo hanno fatto come hanno fatto perché era economico e facile farlo in quel modo. Poi, più tardi, ci aspettavamo che continuasse a funzionare in quel modo ...
Celada,

2
@Celada: punto giusto. FWIW, ho già votato per l'eccellente risposta di Gilles.
PM 2Ring

2
@Celada La sicurezza aggiunta potrebbe non aver portato alla decisione originale di non mostrare nulla, ma l'ho sempre considerato un vantaggio e posso vedere come gli altri che pensano in quel modo possano aver fornito una buona ragione per mantenerlo in quel modo.
Monty Harder,

1
Penso che il display dell'ultimo carattere digitato sia principalmente un approccio mobile, probabilmente perché digitare su una minuscola tastiera su schermo è più soggetto a errori. Non credo di averlo mai visto nelle applicazioni desktop.
Barmar

82

Qual è il modo più semplice per nascondere l'input dell'utente?

Non visualizzarlo!

Nascondere le password quando vengono digitate è una vecchia tradizione. In un certo senso ha senso dal punto di vista della sicurezza nella maggior parte dei contesti: se qualcuno ti guarda alle spalle, non vuoi rendere facile vedere cosa stai scrivendo. (Alcune linee guida di sicurezza moderne, ad es. 1 2 3 4 5 , raccomandano comunque di avere un'opzione per rendere visibile la password, perché ciò consente all'utente di scegliere password più complesse e ha la certezza che non passerà il tempo a riparare invisibile errori di battitura: il rischio maggiore non è il surf sulle spalle, è un'ipotesi di forza bruta, possibilmente offline.)

Avendo deciso che la password doveva essere nascosta, gli implementatori dovevano decidere come farlo. Il terminale ha una modalità in cui viene mostrato l'input dell'utente (eco attivo) e una modalità in cui l'input dell'utente non viene visualizzato (eco disattivato). La modalità echo off ha un'esistenza intrinseca in un certo senso: questa è la modalità in cui il terminale non svolge il lavoro extra di eco dell'input dell'utente. Questa modalità deve esistere anche per le applicazioni in cui la digitazione di un tasto non inserisce quel carattere, ma invoca invece alcuni collegamenti alle applicazioni associati a quel tasto. Quindi comandi come passwdimpostare il terminale in modalità eco mentre leggono una password.

La stampa di asterischi per ciascun personaggio richiederebbe un lavoro di implementazione extra per un vantaggio relativamente piccolo, cosa che gli implementatori del passwdcomando non hanno avuto voglia di fare. Non esiste una modalità terminale per la stampa di asterischi perché sarebbe una funzione molto specializzata, utile solo quando si inseriscono le password.

A proposito, se vuoi vedere la tua password quando la cambi, puoi usare cat | passwd(almeno su alcuni sistemi - alcune versioni passwdrichiedono un'opzione simile cat | passwd --stdine altre non la accettano affatto). (Puoi anche farlo { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd, ma non farlo: salverebbe le password nella cronologia della shell, da cui c'è molto più rischio di perdite.) Organizzarlo con comandi che leggono la password dal terminale piuttosto che qualunque cosa sia il loro input standard, come sudoo ssh, è più complesso; se hai una GUI disponibile, puoi usare ssh-askpass che mostra quanti caratteri hai digitato ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -Aper sudo; per ssh è complicato quando lo invochi da un terminale).


1
Questa è di gran lunga la migliore risposta imo ed è in realtà molto utile. Grazie per aver chiarito la mia convinzione ed espandere ^, ^ merita di votare!
DankyNanky,

4
Il gestore dei terminali si occupa delle semplici funzioni di modifica (come il backspace) e del buffering della linea. Una riga letta usando fgets () non ritorna fino a quando non viene premuto Invio. in modo che la stampa degli asterischi sia difficile. Se dovessi leggerlo un personaggio alla volta e fare eco agli asterischi perderesti la funzionalità di backspace o avresti bisogno di uno sforzo extra per supportarlo.
Jasen

1
Quando analizzo la questione su questo tema, mi chiedo come ciò si riferisca al momento in cui tty si riferiva effettivamente al teletypewriter ...
Jasper

1
Esistono modi per eseguire un comando senza che sia memorizzato nella cronologia dei comandi. Vedi ad esempio Esegui comando senza tenerlo nella cronologia .
un CVn

2
Addendum: i terminali che "fanno un lavoro extra" per echeggiare l'input dell'utente sono i cosiddetti terminali "full duplex". In Ye Olde Days c'erano anche terminali "half duplex", in cui il personaggio veniva visualizzato immediatamente dal terminale dopo essere stato digitato, e il sistema operativo non lo rimandava al terminale per la visualizzazione. Se ricordo bene, questi terminali non avevano modo di disattivare l'eco.
alexis

3

Rendere invisibile la password la rende più sicura, poiché la lunghezza della password non può essere vista da altri. Questo evita il rischio che altri provino a indovinare la password dalla sua lunghezza e ad accedere al tuo account.


Le tastiere tendono a produrre una certa quantità di rumore quando vengono utilizzate, che possono essere ascoltate o registrate per successive analisi per determinare la lunghezza della password. Alcuni modelli di tastiera sono più silenziosi di altri . Inoltre, alcuni tasti tendono a emettere rumori relativamente distinti (si pensi alla barra spaziatrice, Invio, ecc.). In questo contesto, considera anche Quanto è fondamentale mantenere segreta la tua password? sulla sicurezza delle informazioni .
un CVn

@ Michael Kjörling: quello che hai detto è una sicurezza di livello avanzato e un punto valido da considerare (specialmente per chi ha un potere uditivo davvero buono, che può ottenere la lunghezza della password attraverso il rumore delle tastiere). Ma si tratta di un problema hardware, che deve essere considerato a livello hardware e come tale, ora abbiamo la possibilità di utilizzare tastiere touchscreen, che non creano rumore.
Coder AP
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.