入力したパスワードが表示されないのはなぜですか?


39

以下は、Linuxでbashでユーザーを作成するために行ったプロセスのイメージです。

bashでのユーザーの作成とパスワードの割り当て

セキュリティの目的でパスワードを表示すべきではないことを理解していますが、どういう意味ですかなぜアスタリスク(または入力した文字)が表示されないのですか?


4
Linuxについて質問があるときはいつでも、答えはセキュリティです。
カッツ


IBM Notesは、パスワードに入力する文字ごとにランダムなアスタリスクを表示するという奇妙なことを行います。非常に紛らわしいです。

1
クロスサイトデュープ: ux.stackexchange.com/q/39774/11086
WIM

回答:


43

それが* nixの土地でのやり方だからです。:) たくさんのアスタリスクを表示しないことで、セキュリティが少し強化されます。そうすれば、画面を見た人はパスワードの長さを見ることができません。

しかし、特にキーボードの品質が悪い場合は、パスワードを入力しているときにフィードバックを得られないことが少し怖いことを認めなければなりません。そのため、* nixシステムのほとんどのGUIパスワードダイアログでは、たとえばアスタリスクを使用したり、より一般的には、何らかのフィードバックが提供されます。また、入力中に各文字を表示するものもありますが、すぐにa *またはwithに置き換えますが、誰かが肩越しに見ている場合はあまり良くありません。または、コンピューターからモニターに送信されるビデオ信号をピックアップおよびデコードできるデバイスがある場合。


5
...の助けを借りてstty -echo
ジェフシャラー

7
この答えは悪くありませんが、私見ジルは本当の答えを与えました。ほぼ確実に、実装者は「少し余分なセキュリティ」を本当に考えていなかったし、間違いなくユーザーエクスペリエンスを考えていませんでした。安くて簡単にできたので、彼らはそれを彼らがした方法でした。その後、後に、我々はそれが...そのように動作し続けることを期待するようになりました
Celada

2
@セラダ:フェアポイント。FWIW、私はすでにジルの優れた答えを支持しています。
PM 2Ring

2
@Celada追加されたセキュリティは、何も表示しないという当初の決定に至らなかったかもしれませんが、私は常にそれを利点だと考えてきました。
モンティハーダー

1
最後に入力した文字のbreif表示は、ほとんどの場合モバイルアプローチであると思います。おそらく、小さなオンスクリーンキーボードで入力する方がエラーが発生しやすいからです。デスクトップアプリケーションで見たことがありません。
バーマー

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はより複雑です。GUIを使用できる場合は、入力した文字数を表示するssh-askpassを使用できます(SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -Asudoの場合、sshの場合、ターミナルから呼び出すと複雑になります)。


1
これは間違いなく最良の答えです。実際に非常に役立ちます。私の信念を明確にし、拡大してくれてありがとう^、^投票する価値があります!
DankyNanky

4
端末ハンドラーは、単純な編集機能(バックスペースなど)と行のバッファリングを処理します。fgets()を使用して読み取られた行は、enterが押されるまで戻りません。そのため、アスタリスクの印刷が難しくなります。一度に1文字ずつ読み取り、アスタリスクをエコーする場合、バックスペース機能が失われるか、サポートに余分な労力が必要になります。
Jasen

1
この問題の歴史の角度に入ると、ttyが実際にテレタイプライターに言及した時間とどう関係するのだろう
ジャスパー

1
コマンドをコマンド履歴に保存せずに実行する方法があります。たとえば、履歴に保存せずにコマンドを実行するを参照してください。
CVn

2
補遺:ユーザー入力をエコーする「余分な作業を行う」端末は、いわゆる「全二重」端末です。Ye Olde Daysには、「半二重」端末もありました。そこでは、文字が入力されるとすぐに端末によって表示され、OSは表示のために端末に送り返しませんでした。私の記憶が正しければ、これらの端末にはエコーをオフにする方法がありませんでした。
アレクシス

3

パスワードの長さは他人には見えないため、パスワードを非表示にすると、より安全になります。これにより、他の人がパスワードの長さからパスワードを推測してアカウントにログインしようとするリスクを回避できます。


キーボードは、使用時にある程度のノイズを発生する傾向があります。これは、後の分析でパスワードの長さを判断するために聞いたり記録したりできます。一部のキーボードモデルは他のモデルよりも静かです。また、いくつかのキーは比較的明瞭なノイズを発生する傾向があります(スペースバー、Enterなどを考えてください)。このコンテキストでは、パスワードの長さを秘密にすることがどれほど重要かを検討してください。上の情報セキュリティ
CVn

@ MichaelKjörling:あなたが言ったことは、高度なレベルのセキュリティと考慮すべき有効なポイントです(特に、聴力が本当に優れている人、キーボードのノイズを通してパスワードの長さを取得できる人)。しかし、それはハードウェアの問題であり、ハードウェアレベルで考慮する必要があるため、ノイズを発生させないタッチスクリーンキーボードの機能があります。
コーダーAP
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.