web-dev-qa-db-ja.com

ソフトウェアがローカルにプレーンテキストでパスワードを保存しても問題ありませんか?

websites store plain-text passwords の場合、どうすればよいかについてはすでに多くの質問があります。しかし、これは少し異なります。

私はゲームをプレイするためにオープンソース(下記参照)ソフトウェアを使用しています。サービスに直接リンクされていないユーザーアカウントが必要です。ログインには、ダイアログへのユーザー名とパスワードの入力が含まれますが、そのダイアログには「パスワードの保存」オプションもあります。

このオプションは、クロスプラットフォームアプリケーションで設定を保存するために設計されたAPIを使用してパスワードを保存します。ただし、アプリケーションの外部で変更できる機密以外の設定を保存することを目的としているため、データはプレーンテキストで保存されます。また、アクセスするために特別な権限を必要としない場所でこれを行います。たとえば、Windowsの場合、APIは設定をレジストリに保存します(管理者以外のユーザーでも少なくとも読み取り専用のアクセス権がある場所に)。

APIにはプレーンテキストでパスワードが渡されるため、プレーンテキストのパスワードが保存されます。これは、自分のマシンで昇格していないプロンプトから簡単なコマンドを実行して、プレーンテキストで使用した最後のパスワードを取得できることを意味します。

さらに、私のコンピューター上のソフトウェアは、この情報に簡単にアクセスできます。私は最近、ソフトウェアが使用する特定のファイルを更新する小さなプログラムを書きました。しかし、ファイルを見つけてもプログラムがファイルを編集できないという不満が出始めました。ユーザーがプログラムを管理者として実行していないことがわかりました。しかし、これは、私のプログラムがプログラムのゲームファイルにアクセスすることを許可されていなくても、Windowsのセキュリティによってダウンロードされたプログラムとしてブロックされた場合でも、プレーンテキストのパスワードを含む同じレジストリキーを読み取ることが許可されていたことを意味します。

以前にこの問題を取り上げたことがありますが、最善を尽くしたにもかかわらず、これを深刻な問題と見なしている人はいません(以下を参照)。

質問:私は「何もしないで大騒ぎ」していますか、それともパスワードをローカルにプレーンテキストで保存していますか?プレーンテキストのパスワードanywhereは?

注:オープンソースであることは、問題を「修正」できることを意味しますが、いくつかの問題があります。

  • それは完全にクロスプラットフォームです(そして使用されるプラットフォーム固有のコードはありません)。 比較的安全な方法でパスワードを保存できることがわかっているほとんどのシステムは、プラットフォームに大きく依存しています(DPAPIなど)

  • メインの開発グループは非常に小さく、パスワードを保護することの関連性を理解している人はいません。以前にこのトピックを取り上げたことがありますが、私が得た応答では、PRが結果を出す可能性はほとんどありません。私が知っているソフトウェアを使用してサーバーを実行している唯一の人は、「口論のために口論する」私としてそれを吹き飛ばしました。彼の反応は:

「私が責任をツールに負うことに同意することを私は知りません。それは、ツールを使用してその責任を引き受ける人次第で、銃を悪い方法で使用できるようにするために銃を構築すべきではないと言っているようなものです。」 ..「銀行口座のパスワードを[プログラム]に入力するのに十分な能力がない人は、セキュリティの調査を検討する必要があるかもしれません。」.

次に、暗号化して保存されたパスワードについて何かを見たのを思い出したので、ローカルに保存されたパスワードに適用されるパスワードをデータベースで暗号化する必要があるのと同じ理由のいくつかを彼に納得させようとしました。しかし、彼は同意しませんでした(パスワードがまったく暗号化されているという事実は、貨物カルトプログラミングの少しのようです):

"dbはパブリックにアクセス可能です[なぜそれが他の問題であるのかはわかりません]それは完全に異なります。あなたのマシンが世界中でアクセスできないようにする必要はありません... ..."機械は保護なしで世界中で宙ぶらりんになって泣いてはいけない」

  • 平均的なユーザーも関連性を理解していないようで、リポジトリをフォークして修正を提供しても何も起こりません。ソフトウェアはランキングや収益化のない無料ゲーム用なので、なぜ誰かが私のパスワードを見つけるのをそんなに心配するのか(またはなぜそうあるべきなのか)を理解していません。 わずかにより知識のある人は、パスワードがそのアカウントに固有のものでない場合、それはユーザーの責任であると言って、単純にそれを払いのけます。

  • 「パスワードの保存」機能があるべきだと私はまったく同意しません。パスワードをローカルに保存することは悪名高いほど正しく行うのが難しいことで有名です(DPAPIのようなシステムでさえ完璧ではありません)。私はまれに機能を提供するのは面倒な価値があると感じています。そして、特にこのようなプログラムの要点はわかりません。

7
Selali Adobor

簡単に言えば、プレーンテキストのパスワードを保存することは決して許されません。そうすることは悪い習慣です。説明から、コンプライアンスや直接の金銭的リスクは付加されていないため、アプリをサポートする組織に関連するリスクは限られています。そのリスクはユーザーに渡されます。このソフトウェアのユーザーがパスワードを漏洩する可能性があります。それが出た場合、悪いPRの組織にリスクをもたらします。それはそれを修正するコストを正当化するために使用できます。

ソフトウェアのユーザーは、ソフトウェアがパスワードに適切な予防策を講じていることを期待します。ほとんどのユーザーはパスワードの保存をあまり考えません。彼らはそれが安全に保存されていると想定し、ソフトウェアはそれがプレーンテキストであることを警告しません、そしてほとんどのユーザーはパスワードを再利用します。はい、それは彼らにとって悪い習慣ですが、プレーンテキストで保存することは事態を悪化させるだけです。 「羊はハッキングされるに値する」という主張は間違っています。現在、ホームワイヤレスルーターのデフォルトが最も強力なセキュリティになっているのには理由があります。これは、電源を入れる方法を知らない人々を保護するために行われました。誰もがすべての専門家であるわけではなく、誰もがセキュリティの基本を理解しているわけではありません。セキュリティの専門家としての私たちの役割の1つは、身を守るのに十分な知識を持っていない人々に注意することです。

私はあなたがこれを修正するために困難な戦いをしていると思います。パスワードをプレーンテキストで保存することは、ユーザーの信頼を侵害するものだと思います。上で述べたリスクがあります。しかし、あなたがすでに見た態度では、おそらく彼らはそれに反発し、その文化に対して反発し続けることは、あなたにとって価値がないかもしれません。それは正しいことだと思いますが。以前の仕事で昇進や昇給があったときに、それが不人気になっていることは知っていますが、とにかくそれをしました。ユーザーは、パスワードに注意を払うことを期待しています。そうでないことが判明した場合、その信頼を取り戻すことはできません。

6
Paraplastic2

プレーンテキストのパスワードを保存することに個人的に同意することはできません。保存するパスワードのアプリケーションや目的に依存するためです。一般的に言って、はい、パスワードをプレーンテキストで保存することは、明らかな理由のすべてのため、セキュリティの選択としては不十分です。ただし、それがすべての状況で非常に悪い選択であることを意味するわけではありません。

パスワードが公開されていない場合(インターネットまたはローカルネットワークでさえ)は、認証のためにプログラムファイル内にローカルに保存されており、パスワードを平文で保存するかどうかを気にする保護者がいない場合テキスト?これは、notepad.exeへのアクセスをパスワードで保護するようなものです。唯一のリスクは、エンドユーザーがリスクの高い他の既存のアプリケーションに使用するユーザー名とパスワードを選択することです。自分の過失がないために情報が危険にさらされた場合、エンドユーザーが何らかの害にさらされる可能性があります。

確かに、いくつかのアプリケーション(おそらく、不適切に書かれたアプリケーションを解読する方法を誰かに教える!= D)もあり、そこでは、プレーンテキストのパスワードを格納することを意図的に選択するかもしれません。

リスクは信じられないほど小さいので、心配するだけの価値はないかもしれません。国の核兵器発射コードにアクセスするためのパスワードをここに保存しているのとは異なります。しかし、たとえ小さなものであっても、いくつかのリスクがあり、ユーザーを保護するための簡単な手段を講じることは、単に良いことです。

3
Desthro

"nique and random"全体は、この不完全な世界で二重の目的を果たします。そこでは、ウェブサイトが正しいことを行うことも、善意を持っていることも信頼できません。

ウェブサイトは、ユーザー名とパスワードの組み合わせをクラッカーに販売し、高度な辞書攻撃への調査と組み込みを行うことができます。意図的な危害を加えている別名。無料ゲームを提供し、登録を要求し、FacebookまたはGoogleアカウントと同じ認証情報を使用するダミーの数を確認します。

もちろん、セキュリティについて何も知らず、平文で保存するダミーだけがいます。

どちらの方法でも、ユーザーとして、そのWebサイトは信頼できないものであると想定し、一意でランダムなパスワードを使用する必要があります。

そして、あなたが愚かなインターネットゲームを作っている開発者であるなら、あなたのユーザーがゲームの銀行口座と同じ資格情報をあなたのゲームに使用することを非常によく知らず、そしてあなたのインターネットゲームがハッキングされてパスワードがある場合を考えてください。テーブルが盗まれた場合は、意図せずに顧客に大きな害を及ぼす可能性があります。

ですから、開発者であろうとユーザーであろうと、セキュリティを真剣に考えることが常に重要であると私は言います。そして、セキュリティを真剣に考えている場合、パスワードをプレーンテキストで保存することは決して不可能ではありません。

あなたの特定のケースでは、あなたはあなたのアプリケーションがパスワードマネージャのようなもののように聞こえるので、あなたはあなたのソフトウェアのユーザーだけがそれらをハッシュするのではなく知っている何かに基づいてパスワードをencryptしたいと思うでしょう。使用しているテクノロジーに応じて簡単にできるライブラリがあります。 。ネット?

0
Andrew Hoffman