Чому пароль, який я ввів, не видно?


39

Нижче наведено зображення процесу, який я взяв для створення користувача на bash в Linux.

Створення користувача та призначення пароля в bash

Я розумію, що пароль не повинен відображатися з метою безпеки, але що я маю на увазі, чому зірочки (або символи, які я ввів) не з’являються?


4
всякий раз, коли у вас є питання щодо Linux, відповідь - це безпека.
Кац


IBM Notes робить цю дивну річ, коли вони відображають випадкові зірочки для кожного символу, який ви вводите пароль. Дуже заплутано.

1
Перехресний веб-сайт: ux.stackexchange.com/q/39774/11086
wim

1
також пов’язано: security.stackexchange.com/q/35133/3945
wim

Відповіді:


43

Тому що так ми робимо речі в * nix land. :) Це дає трохи додаткової безпеки, не показуючи купу зірочок. Таким чином, хтось, хто бачить ваш екран, не може бачити довжину вашого пароля.

Але мушу визнати, що при введенні пароля трохи страшно не отримувати відгуків, особливо якщо у вас погана клавіатура. Тож більшість діалогових вікон із паролем графічного інтерфейсу у * nix системах дають вам певний зворотній зв'язок, наприклад, за допомогою зірочок або, звичайно, ⬤. А деякі навіть відображають кожного персонажа під час його введення, але потім негайно замініть його на *або ⬤, але це не так добре, якщо хтось може дивитись через ваше плече. Або якщо у них є пристрій, який може приймати та декодувати відеосигнал, що надсилається з комп'ютера на монітор.


5
... за допомогоюstty -echo
Jeff Schaller

7
Ця відповідь непогана, але ІМХО Жилль дав справжню відповідь. Майже напевно, реалісти не дуже думали про "трохи додаткової безпеки" і, безумовно, не думали про досвід користувача. Вони робили так, як вони це робили, тому що це було дешево і легко зробити так. Потім, пізніше, ми очікували, що він продовжить працювати так ...
Целада

2
@Celada: Справедливий пункт. FWIW, я вже підкреслив відмінну відповідь Гілла.
PM 2Ring

2
@Celada Додана безпека, можливо, не призвела до початкового рішення нічого не показувати, але я завжди вважав це користю, і я бачу, як інші люди, які думають таким чином, можуть стати вагомою причиною зберегти це таким чином.
Monty Harder

1
Я думаю, що відображення останнього символу, що надрукується, є переважно мобільним підходом, ймовірно, тому, що введення тексту на крихітній екранній клавіатурі більш схильне до помилок. Я не думаю, що я його коли-небудь бачив у настільних додатках.
Бармар

82

Який найпростіший спосіб приховати введення користувача?

Не показувати його!

Сховати паролі під час їх введення - давня традиція. Це має сенс з точки зору безпеки в більшості контекстів: якщо хтось дивиться через ваші плечі, ви не хочете, щоб було легко зрозуміти, що ви вводите. (Деякі сучасні вказівки щодо безпеки, наприклад, 1 2 3 4 5 дійсно рекомендують мати можливість зробити пароль видимим, оскільки це дозволяє користувачеві мати можливість вибирати більш складні паролі та впевнені, що вони не витратять час на виправлення невидимого друкарські помилки. Найбільший ризик - це не серфінг на плечах, це груба вгадка, можливо, офлайн.)

Вирішивши, що пароль слід приховати, виконавцям довелося вирішити, як це зробити. У терміналі є режим, у якому відображається введення користувача (ехо ввімкнено), і режим, коли введення користувача не відображається (ехо вимкнено). Режим ехо-вимкнення має певне власне існування: це режим, коли термінал не виконує зайвої роботи з відображенням вводу користувача. Цей режим також повинен існувати для програм, де введення ключа не вставляє цей символ, а натомість викликає деякий ярлик програми, який пов'язаний з цією клавішею. Таким чином, такі команди, як passwdпросто встановити термінал, щоб перегукуватися з режимом, поки вони читають пароль.

Друк зірочок для кожного символу потребував би додаткових робіт з впровадження лише відносно невеликої користі, чого виконавці passwdкоманди не відчували, як це роблять. Для друку зірочок немає термінального режиму, оскільки це була б дуже спеціалізована функція, корисна лише під час введення паролів.

До речі, якщо ви хочете побачити свій пароль при зміні його, ви можете використовувати cat | passwd(принаймні, в деяких системах - деякі версії passwdвимагають такої опції, як cat | passwd --stdinдеякі, а деякі взагалі не приймають цього). (Можна навіть робити { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd, але не робити цього: це збереже паролі в історії оболонки, з якої існує набагато більший ризик витоку). їх стандартний вклад, такий як sudoабо ssh, є більш складним; якщо у вас є графічний інтерфейс, ви можете використовувати ssh-askpass, який показує, скільки символів ви ввели ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -Aдля sudo; для ssh це складно, коли ви викликаєте його з терміналу).


1
Це, безумовно, найкраща відповідь imo, і це насправді дуже корисно. Дякую за роз'яснення моєї віри та розширення ^, ^ заслуговує на голосування!
DankyNanky

4
Обробник терміналів піклується про прості функції редагування (наприклад, зворотній простір) та буферизацію лінії. Рядок, прочитаний за допомогою fgets (), не повертається, поки не буде натиснуто Enter. так що робить друк зірочок складним. Якби ви читали його по одному символу за раз і повторювали зірочки, ви втратите функцію зворотного простору або потребуєте додаткових зусиль для його підтримки.
Ясен

1
Займаючись історією цього питання, мені цікаво, як це стосується часу, коли tty насправді посилався на телерайтс ...
Джаспер,

1
Існують способи виконання команди без її збереження в історії команд. Дивіться, наприклад, Виконати команду, не зберігаючи її в історії .
CVn

2
Додаток: Термінали, які "роблять додаткову роботу", щоб повторити введення користувача, - це так звані "повні дуплекси" термінали. У Ye Olde Days також були "напівдуплексні" термінали, де персонаж відображався відразу терміналом після введення, а ОС не надсилала його назад до терміналу для відображення. Якщо я добре пам’ятаю, ці термінали не мали можливості вимкнути відлуння.
alexis

3

Зробити пароль невидимим робить його більш безпечним, оскільки довжину пароля не можуть бачити інші. Це дозволяє уникнути ризику, коли інші намагаються відгадати пароль за його довжиною та увійти у свій обліковий запис.


Клавіатури, як правило, видають певний шум під час їх використання, який можна почути або записати для подальшого аналізу для визначення довжини пароля. Деякі моделі клавіатур тихіші за інші . Крім того, деякі клавіші, як правило, видають відносно чіткі шуми (розмірковуйте пробіл, Enter та ін.). У цьому контексті також подумайте, наскільки важливо зберігати таємницю пароля? з інформаційної безпеки .
CVn

@ Майкл Кьорлінг: Те, що ви сказали, - це рівень високого рівня безпеки і вагомий момент, який слід враховувати (особливо для того, хто має слуховий потенціал, який може отримати довжину пароля через шум клавіатур). Але це апаратне питання, яке потрібно розглядати на апаратному рівні, і як таке, зараз ми маємо можливість використовувати клавіатури сенсорного екрану, які не створюють шуму.
Coder AP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.