web-dev-qa-db-ja.com

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

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

Creating user and assigning password in bash

セキュリティ上の理由からパスワードを表示しないことを理解していますが、アスタリスク(または入力した文字)が表示されないのはなぜですか

40
Kaiylar

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

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

42
PM 2Ring

ユーザー入力を非表示にする最も簡単な方法は何ですか?

表示しない!

入力時にパスワードを非表示にすることは古い伝統です。ほとんどの場合、セキュリティの観点からは意味があります。誰かがあなたの肩越しに見ている場合、入力している内容を簡単に見られるようにしたくないでしょう。 (たとえば、いくつかの最新のセキュリティガイドライン 1245 ただし、パスワードを表示するオプションがあります。これにより、ユーザーはより複雑なパスワードを選択でき、目に見えないタイプミスを修正することに時間を費やす必要がないという確信を持つことができます。最大のリスクは、ショルダーサーフィンではなく、ブルートフォース推測です、オフラインの可能性があります。)

パスワードを非表示にすることを決定したため、実装者はその方法を決定する必要がありました。端末には、ユーザー入力を表示するモード(エコーオン)と、ユーザー入力を表示しないモード(エコーオフ)があります。エコーオフモードには、ある意味で固有の存在があります。それは、端末がユーザー入力をエコーする余分な作業を行わないモードです。このモードは、キーを入力してもその文字が挿入されず、代わりにそのキーにバインドされているアプリケーションショートカットを呼び出すアプリケーションにも存在する必要があります。したがって、passwdのようなコマンドは、パスワードを読み取っている間、ターミナルをエコーオフモードに設定するだけです。

各文字のアスタリスクを印刷する場合、passwdコマンドのインプリメンターが実行したくない、比較的小さなメリットのために追加の実装作業が必要になります。アスタリスクを印刷するための端末モードはありません。これは、パスワードを入力するときにのみ役立つ非常に特殊な機能であるためです。

ちなみに、パスワードを変更するときにパスワードを確認したい場合は、cat | passwdを使用できます(少なくとも一部のシステムでは-passwdのバージョンによっては、cat | passwd --stdinなどのオプションが必要です。これをまったく受け入れないでください)。 ({ echo 'current password'; echo 'new password'; echo 'new password'; } | passwdを実行することもできますが、実行しないでください。これにより、パスワードがシェル履歴に保存されるため、リークのリスクが大幅に高まります。 Sudosshなどの標準入力ではなく、ターミナルの方が複雑です。 GUIが利用可能な場合は、入力した文字数を示すssh-askpassを使用できます(Sudoの場合はSudo_ASKPASS=/usr/bin/ssh-askpass Sudo -A、sshの場合は端末から呼び出すと複雑になります)。

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

2
Coder AP