後でプレーンテキストを取得するために、ユーザーパスワードの保存に倫理的にどのように取り組みますか?


1344

私はますます多くのWebサイトとWebアプリケーションを構築しているので、ユーザーに問題が発生した場合(またはパスワードリンクを忘れた場合にメールで送信するか、電話など)私はこの慣習に対して激しく戦うことができ、実際のパスワードを保存せずにパスワードのリセットと管理支援を可能にするために、多くの「追加の」プログラミングを行います。

私はそれと戦うことができない(または勝つことができない)ときは、少なくとも何らかの方法でパスワードを常にエンコードして、少なくともデータベースにプレーンテキストとして保存されないようにします。ただし、DBがハッキングされた場合は、犯人がパスワードを解読するのにそれほど時間はかからないので、私は不快になります。

完璧な世界では、人々はパスワードを頻繁に更新し、多くの異なるサイト間でそれらを複製しません。残念ながら、同じwork / home / email / bankパスワードを持っている多くの人々を知っており、支援が必要なときに自由にそれを私に提供してくれました。私のDBセキュリティ手順が何らかの理由で失敗した場合、私は彼らの経済的破綻の責任者になりたくありません。

道徳的かつ倫理的に私は、たとえ一部のユーザーにとって、彼らがはるかに少ない敬意でそれを扱っているとしても、彼らの生計を保護する責任があると感じています。ソルティングハッシュとさまざまなエンコーディングオプションについては、多くの方法と議論の余地があると確信していますが、それらを保存する必要がある場合、単一の「ベストプラクティス」はありますか?ほとんどすべての場合、PHPとMySQLを使用しています。これにより、詳細の処理方法に違いが生じます。

バウンティの追加情報

これがあなたがしたいことではないことを知っていることを明確にしたいと思います、そしてほとんどの場合そうすることを拒否することが最善です。しかし、私はこのアプローチを取ることのメリットについての講義を探していません。このアプローチを取る場合に取るべき最善のステップを探しています。

以下のメモで、主に高齢者、精神障害者、または非常に若年者向けのWebサイトは、安全なパスワード回復ルーチンを実行するように求められると混乱する可能性があることを指摘しました。そのような場合、それは単純でありふれたものであると思われるかもしれませんが、一部のユーザーは、サービス技術者にシステムを手伝ってもらったり、電子メールで直接表示したりするなど、追加の支援が必要です。

このようなシステムでは、ユーザーにこのレベルのアクセス支援が与えられない場合、これらの人口統計からの減少率によってアプリケーションが妨害される可能性があるため、そのような設定を念頭に置いて回答してください。

皆に感謝します

これは多くの議論の中で楽しい質問であり、私はそれを楽しんだ。結局、私は両方ともパスワードセキュリティを保持する(プレーンテキストまたは回復可能なパスワードを保持する必要がない)回答を選択しましたが、指定したユーザーベースがシステムにログインすることも可能にしました。通常のパスワード回復。

いつものように、さまざまな理由で正解としてマークしたい約5つの回答がありましたが、最良のものを選択する必要がありました。残りはすべて+1でした。みんな、ありがとう!

また、この質問に投票したりお気に入りとしてマークしたりしたStackコミュニティの全員に感謝します。私は賛辞として100票を投じており、この議論が私と同じ懸念を持つ他の誰かの役に立ったことを願っています。


155
彼はそれが良くないことを知っていると思います。彼はまだ述べられた要件の下で最良の解決策を探しています。
stefanw 2010

33
1日の終わりには、回避できる脆弱性を慎重に実装するだけです。
2010

20
@マイケル・ブルックス-私がCWE-257に完全に同意していることを知っていただきたいと思います。パスワードを平文として回復可能にするように求められるたびに、逐語的に引用したいと思います。ただし、実際には、クライアントやユーザーがNIST規制に関心を持つことはほとんどなく、とにかく私にそれを実行してほしいだけです。90%の場合は別の方法でそれらを説得できますが、その10%の場合、私は最善の行動方針を決定しようとすることができません-その場合、CWE-257は私の手に(残念ながら)灰です。
シェーン

81
@AviD:ユーザーがパスワードを再利用するため、システムの「低い値」はこの問題にまったく関係ありません。なぜ人々はこの単純な事実を理解できないのでしょうか?「価値の低い」システムでパスワードをクラックすると、他の「価値の高い」システムで有効なパスワードがいくつか存在する可能性があります。
アーロンノート、2010

20
もう1つのポイントも覆い隠されました。私の回答へのコメントストリームで述べたとおりです。これらの要件を要求している人が信頼できることをどのようにして知っていますか?「使いやすさ」の言い訳が、将来のある時点でパスワードを盗もうとする本当の意図を隠すファサードにすぎない場合はどうなりますか?あなたの初心者は、顧客と株主に数百万ドルのコストをかけただけかもしれません。セキュリティの専門家が最終的に陥る
Aaronaught、2010

回答:


1037

この問題に別のアプローチまたは角度をとってみませんか?パスワードがプレーンテキストである必要がある理由を尋ねます。ユーザーがパスワードを取得できるようにする必要がある場合は、厳密に言えば、ユーザーが設定したパスワードを取得する必要はありません(とにかくパスワードを覚えていません)。彼らが使用できるパスワードを彼らに与えることができる必要がある。

考えてみてください。ユーザーがパスワードを取得する必要がある場合、それはユーザーがパスワードを忘れたためです。その場合、新しいパスワードは古いパスワードと同じように有効です。しかし、今日使用されている一般的なパスワードリセットメカニズムの欠点の1つは、リセット操作で生成された生成されたパスワードが一般にランダムな文字の束であるため、ユーザーがcopy-n-でない限り、単に正しく入力することが難しいことです。ペースト。これは、あまり知識のないコンピュータユーザーにとっては問題になる可能性があります。

その問題を回避する1つの方法は、多かれ少なかれ自然言語のテキストである自動生成パスワードを提供することです。自然言語の文字列は、同じ長さのランダムな文字列が持つエントロピーを持たない場合がありますが、自動生成されたパスワードが8文字(または10または12文字)だけでよいということはありません。いくつかのランダムな単語をつなぎ合わせて、エントロピーの高い自動生成パスフレーズを取得します(それらの間にスペースを空けて、読み取り可能な誰もが認識および入力できるようにします)。さまざまな長さの6つのランダムな単語は、10個のランダムな文字よりも正確かつ確実に入力する方が簡単であり、エントロピーも高くなる可能性があります。たとえば、大文字、小文字からランダムに描かれた10文字のパスワードのエントロピー、数字と10個の句読記号(合計72個の有効な記号)のエントロピーは61.7ビットです。6ワードのパスフレーズに対してランダムに選択できる7776ワードの辞書(Dicewareが使用)を使用すると、パスフレーズは77.4ビットのエントロピーを持ちます。を参照してください詳細については、ダイスウェアのFAQ

  • 約77ビットのエントロピーを含むパスフレーズ:「散文フレアテーブルの急性フレアを認める」

  • 約74ビットのエントロピーを持つパスワード:「K:&$ R ^ tt〜qkD」

私はフレーズを入力する方が好きだと知っていますし、コピーアンドペーストを使用すると、フレーズもパスワードと同じくらい簡単に使用できるので、そこで失われることはありません。もちろん、自動生成されたパスフレーズに77ビットのエントロピーを必要としないWebサイト(または保護されているアセットは何でも)の場合は、生成する単語の数を減らします(ユーザーに喜ばれるはずです)。

パスワードで保護された資産には価値があまりないため、パスワードの侵害は世界の終わりではないかもしれないという主張を理解しています。たとえば、私がさまざまなWebサイトで使用するパスワードの80%が侵害されたとしても、私はおそらく気にしないでしょう。それは素晴らしいことではありませんが、彼らが私の銀行口座に侵入するようなものではありません。ただし、多くの人々が銀行口座(およびおそらく国家安全保障データベース)と同じようにWebフォーラムサイトに同じパスワードを使用しているという事実を考えると、これらの「価値の低い」パスワードも非パスワードとして処理するのが最善だと思います-回復可能。


93
パスフレーズの+1。現在、パスワードの強度とユーザーの想起の最適なバランスを提供しているようです。
アーロンノート、

197
また、完全な文章を作成することもできます。たとえば、<形容詞> <名詞>は<動詞> <adverb>です。緑の猫が乱暴にジャンプしています。カテゴリのリストがあります。それぞれに1024の選択肢があるため、40ビットのエントロピーがあります。
ドミニクウェバー

28
パスワードの再利用を回避するための重要な問題として検討するための+1
lurscher

57
「考えてみてください。ユーザーがパスワードを取得する必要がある場合は、パスワードを忘れたためです」-必ずしもそうではありません。私はラップトップを使用しているため、よくパスワードを取得したいと思います。自宅にある自分のマシンにパスワードが保存されていることを知っているか、安全な場所に書き留めてあり、新しいパスワードを発行してそれを解読したくありません。
joachim

5
新しいIT Security SEサイトで最高得点の質問は、このエントロピー計算の有効性を扱います。(まあ、技術的には、@ Pieterがリンクしたxkcdを扱います。)
ポップし

592

誰かが大きな建物の建設を依頼したと想像してください-バーとしましょう-そして、次の会話が行われます:

建築家: このサイズと容量の建物には、ここ、ここ、そしてここに消火口が必要です。
クライアント: いいえ、それは維持するには複雑で費用がかかりすぎます。サイドドアやバックドアは必要ありません。
建築家: サー、消防出口はオプションではなく、市の消防法に従って必須です。
クライアント: 私はあなたに議論するためにお金を払っていません。私が尋ねたとおりにしてください。

次に、建築家は、火の出口なしにこの建物を倫理的に構築する方法を尋ねますか?

建築およびエンジニアリング業界では、会話は次のように終わる可能性が最も高いです。

建築家: この建物は、非常口がないと建設できません。あなたは他の資格のある専門家に行くことができ、彼はあなたに同じことを教えてくれます。私は今出発します。協力する準備ができたら、折り返し電話してください。

コンピュータープログラミングは免許を取得した専門職ではないかもしれませんが、多くの場合、私たちの専門職が土木または機械のエンジニアと同じ尊敬を得られないのではないかとよく思われます。それらの職業は、ゴミ(またはまったく危険な)要件を渡された場合、単に拒否されます。彼らは、「まあ、私は最善を尽くしましたが、彼は主張しました、そして私は彼の言うことをやらなければならない」と言うのは言い訳ではないことを知っています。彼らはその言い訳のライセンスを失う可能性があります。

あなたまたはあなたのクライアントが株式公開企業に属しているかどうかはわかりませんが、回復可能な形式でパスワードを保存すると、さまざまな種類のセキュリティ監査に失敗する可能性があります。問題は、データベースにアクセスした「ハッカー」がパスワードを回復するのがどれほど難しいかではありません。 セキュリティの脅威の大部分は内部的なものです。 保護する必要があるのは、すべてのパスワードを持って立ち去って、落札者に販売する不満を持つ従業員です。非対称暗号化を使用し、秘密キーを別のデータベースに格納しても、このシナリオを防ぐことはできません。プライベートデータベースにアクセスできる人物が常に存在することになります。これは深刻なセキュリティリスクです。

パスワードを回復可能な形式で保存する倫理的または責任ある方法はありません。限目。


124
@Aaronaught-それは公平で妥当なポイントだと思いますが、それをひねってみましょう。あなたは従業員として会社のプロジェクトに取り組んでおり、上司は「これは私たちのシステムの要件である」と言います(理由は何でも)。あなたは正しい憤りに満ちた仕事を辞めますか?私が責任を持って完全に管理されているときは義務があることを知っています-しかし、会社が監査の失敗または責任のリスクを負うことを選択した場合、ポイントを証明するために私の仕事を犠牲にすることが私の義務であるか、または最高を求めますか?そして彼らが言うことをする最も安全な方法?ただ、悪魔の提唱者をプレイ...
シェーン

44
私は弁護士ではありませんが、これを考慮してください。上司が会社の利益に反して何かをするように命じた場合、たとえば簡単に回避できる責任に彼らをさらすことによって、あなたの仕事はそれに従うか、丁寧に拒否することですか?はい、彼らはあなたの上司ですが、たとえそれが投資家であっても、彼らは彼ら自身の上司を持っています。あなた彼らの頭を越えないなら、あなたのセキュリティホールが悪用されるとき、誰の頭が転がるでしょうか?考慮すべきことだけです。
Steven Sudit、2010

68
私たちは常に変化するゴミの要件を取得するため、開発者は常に私たちの仕事が他の仕事よりもはるかに難しいことを言うように努めています。まあ、これは理由の完璧な例です。私たちの職業には必死にバックボーンが必要です。私たちの職業は必死に「いいえ、これは許容できる要件ではありません。これは私が誠意を持って開発できるものではありません。あなたは私のクライアント/雇用者かもしれませんが、私は顧客と公衆に対して専門的な責任を負っています。そして、これを実行したい場合は、別の場所を探す必要があります。」
Aaronaught、2010

36
@sfussenegger:背景を知る必要はありません。それは受け入れられません。あなたはクライアントが100%信頼できると仮定しています-もし彼がこのパスワードを後で要求できるように特別にこの要件を求めているとしたらどうでしょうか?セキュリティは、開発中のいくつかの項目の一つであるされている石に刻まれました。してはいけないことがいくつかあり、回復可能なパスワードの保存はそのうちの10です。
Aaronaught、2010

37
さて、ここで今、リスク評価をしましょう。「パスワードを回復可能な形式で保存すると、パスワードが盗まれるという重大なリスクが生じます。また、少なくとも一部のユーザーが電子メールアカウントと銀行口座に同じパスワードを使用する可能性があります。パスワードが盗まれた場合銀行口座が空になっていると、それはおそらく見出しになり、二度とあなたと取引することはなく、あなたはおそらく存在を訴えられるでしょう。」今、がらくたを切ることができますか?これに「ナチス」という言葉を取り入れたという事実は、あなたには理由がないということをはっきりと示しています。
アーロンノート2010

206

公開鍵を使用して、パスワードとソルトを暗号化できます。ログインの場合は、保存された値がユーザー入力+ saltから計算された値と等しいかどうかを確認してください。時が来れば、パスワードをプレーンテキストで復元する必要があるときに、秘密鍵を使用して手動または半自動で復号化できます。秘密鍵は他の場所に保存することができ、さらに対称的に暗号化することができます(その場合、パスワードを解読するために人間の操作が必要になります)。

これは、実際には、Windows回復エージェントの動作に似ていると思います。

  • パスワードは暗号化されて保存されます
  • プレーンテキストに復号化せずにログインできます
  • パスワードはプレーンテキストに復元できますが、秘密キーを使用する場合にのみ、システムの外部(必要に応じて銀行の金庫)に保存できます。

34
-1パスワードは決して「暗号化」してはいけません。これはCWE-257の違反ですcwe.mitre.org/data/definitions/257.html
ルーク

100
1.質問では、パスワードをプレーンテキストに復元できるようにする必要があるため、これは要件です。2.ここでは対称暗号化ではなく非対称暗号化を使用しています。復号化するための鍵は日常の運用には必要なく、銀行の金庫に保管できます。リンクの議論は有効ですが、この状況には適用されません。
stefanw 2010

57
本当ですが、要件を考えると、これが最も責任ある方法であることに同意できますか?CWE-257を1日中打つことができます。資格情報を安全に保存して操作し、必要に応じて資格情報を元の形式に回復できるという興味深い問題は変わりません。
stefanw

10
Windows Recovery Agentは、パスワード管理ではなく実際の暗号化を処理するため、ここでも良い例ではありません。暗号化キーはパスワードと同じではありません。それぞれを取り巻く規則と実践は完全に異なります。暗号化と認証は同じではありません。暗号化はプライバシー保護のためです。キーはデータを保護するために使用されます。認証はIDに対するものであり、キーはデータです(認証プロセスの1つの要素です)。繰り返しますが、暗号化と認証は同じではありません。一方の原則を他方に有効に適用することはできません。
アーロノート

16
+1 CWE-257にこだわって主張する意味はどこにありますか?これは脆弱性(CWE)ではなく、脆弱性(CVE)です。回復可能なパスワードとバッファオーバーフローを比較すると、リンゴとオレンジが比較されます。単にクライアントが問題を理解していることを確認し(そう言ったものに署名させてください-そうでない場合、問題の場合は何も覚えていない可能性があります)、先に進みます。さらに、必要なセキュリティ対策は、システムの価値と攻撃の潜在的なリスクによって異なります。成功した攻撃者が一部のニュースレターの購読のみをキャンセルできる場合、問題について議論する理由はありません。
sfussenegger、2010

133

あきらめないで。クライアントを説得するために使用できる武器は、否認不可性です。何らかのメカニズムでユーザーパスワードを再構築できる場合はクライアントに法的な否認防止メカニズムを提供しており、サプライヤーはパスワードを再構築しなかったことをサプライヤーが証明できないため、そのパスワードに依存するトランザクションを拒否できます。トランザクションを自分自身に通します。パスワードが暗号文ではなくダイジェストとして正しく保存されている場合、これは不可能です。つまり、エンドクライアントが自分でトランザクションを実行するか、パスワードに関する注意義務に違反します。どちらの場合でも、責任は彼に正直に残ります。私はそれが数億ドルに達するケースに取り組んできました。誤解したくないものではありません。


2
ウェブサーバーのログは法廷で考慮されませんか?または、この場合、彼らは同様に偽物と見なされますか?
Vinko Vrsalovic

10
@Vinko Vrsalovic、Webサーバーログは法廷でカウントする必要があります。そうするためには、否認防止、真正性の証明、証拠のチェーンなどを証明する必要があります。Webサーバーログは明らかにそうではありません。
AviD 2010年

7
丁度。サプライヤーは、クライアントのみがそのトランザクションを実行できたことを証明する必要あります。Webサーバーのログはそれを行いません。
ローン侯爵の

いわば「トランザクション」にすべてのパスワードが実際に必要なわけではありません。WebサイトがWebページのブックマークリストを作成するためのものであるとします。この場合、金融取引がないため、責任の制限(通常、T&CでWebサイトに登録するときに呼び出されます)はゼロです。Webサイトが他人に影響を与えるアクションがない場合、せいぜい、ハッキングされたユーザーのデータは失われます。会社はT&Cによって保護されています。
Sablefoste

1
@Sablefosteそのウェブサイト。ユーザーが他の場所で同じパスワードを使用すると、ユーザーのプライベート認証情報が漏洩するリスクが生じます。あなたが練習に決して従事していない場合、問題を引き起こすことはできません。
ローンの侯爵

94

パスワードを後で平文で取得するために倫理的に保存することはできません。それはそれと同じくらい簡単です。Jon Skeetでさえ、後の平文検索のためにパスワードを倫理的に保存することはできません。ユーザーが何らかの方法でプレーンテキストのパスワードを取得できる場合、ハッカーがコードにセキュリティの脆弱性を発見する可能性もあります。そしてそれは、1人のユーザーのパスワードが侵害されているだけでなく、すべてが侵害されているということです。

クライアントに問題がある場合は、パスワードを回復可能に保存することは法律違反であることを伝えます。ここ英国では、いずれにしても、1998年データ保護法(特に、スケジュール1、パートII、パラグラフ9)では、データ管理者は、とりわけ、データが危険にさらされた場合に発生する可能性のある害-サイト間でパスワードを共有するユーザーにとっては重大な可能性があります。それでも問題であるという事実を理解できない場合は、このような実際の例を紹介してください。

ユーザーがログインを回復できるようにする最も簡単な方法は、ユーザーに自動的にログインして、新しいパスワードを選択できるページに直接移動するワンタイムリンクを電子メールで送信することです。プロトタイプを作成し、実際に動作を見せます。

これは私がこの件について書いたいくつかのブログ投稿です:

更新:ユーザーのパスワードを適切に保護できなかった企業に対する訴訟と起訴が始まっています。例:LinkedInは500万ドルの集団訴訟で非難されましたソニーはプレイステーションのデータハックに対して25万ポンドの罰金を科した。私が正しく思い出せば、LinkedInは実際にはユーザーのパスワードを暗号化していましたが、使用していた暗号化は弱すぎて効果的ではありませんでした。


8
@jimmycakes-これは低セキュリティシステムで行うのに適していますが、価値の高いデータを保存している場合は、個人の電子メールがすでに侵害されており、直接ログインリンクを送信するとシステムが侵害されると想定する必要があります。+1は、可能な選択肢で私の質問に答えますが、全体としてロジックの欠陥を指摘します。Payppalがこれまでに直接ログインリンクを送信したくありません。それは偏執的に聞こえるかもしれませんが、私はいつも私のメールアカウントが破損していると思います-それは私を正直に保ちます。;)
シェーン

絶対に-私の銀行では、少なくともパスワードをリセット(回復ではなく)させる前に、電話をかけて本人確認を行うことを期待しています。ここで概説したのは、どのWebサイトでもどこでも期待できるパスワードセキュリティの絶対最低基準です。
jammycakes 2010

1
とにかく設定した制限を持たない銀行またはペイパルを無視します。彼らの電子メールが危険にさらされていると思われる場合、どのようなオンラインの方法が可能ですか?生成されたパスワードを電子メールで送信する場合、それはどのようにしてより安全になりますか?
Peter Coulton、

私は単一の個人のパスワードを取得することについて話しているのではなく、データベースから複数のパスワードを取得することについて話している。システムがパスワードをプレーンテキストに回復可能に保存する場合、ハッカーはデータベースからすべてのパスワードを抽出するスクリプトを作成する可能性があります。
jammycakes 2010年

電子メールでリンク/パスワードを送信し、不明なネットワークノードを介してプレーン形式でネットワークを通過することについて疑問に思っています...
Jakub

55

この部分を読んだ後:

以下のメモで、主に高齢者、精神障害者、または非常に若年者向けのWebサイトは、安全なパスワード回復ルーチンを実行するように求められると混乱する可能性があることを指摘しました。そのような場合、それは単純でありふれたものであると思われるかもしれませんが、一部のユーザーは、サービス技術者にシステムを手伝ってもらったり、電子メールで直接表示したりするなど、追加の支援が必要です。

このようなシステムでは、ユーザーにこのレベルのアクセス支援が与えられない場合、これらの人口統計からの減少率によってアプリケーションが妨害される可能性があるため、そのような設定を念頭に置いて回答してください。

これらの要件のいずれかが、検索可能なパスワードシステムを義務付けているのかどうか疑問に思います。たとえば、メイベル叔母さんが電話をかけて「インターネットプログラムが機能していません。パスワードがわかりません」と言います。「OK」とは、カスタマーサービスドローン「いくつかの詳細を確認してから、新しいパスワードをお知らせします。次回ログインするときに、そのパスワードを保持するか、覚えやすいパスワードに変更するかを尋ねられます。もっと簡単に。"

次に、システムがセットアップされ、パスワードのリセットがいつ行われたかが認識され、「新しいパスワードを保持するか、新しいパスワードを選択しますか?」というメッセージが表示されます。

PCリテラシーが低い人にとって、これは古いパスワードを聞かされるよりもどのように悪いのですか?また、カスタマーサービス担当者はいたずらを犯す可能性がありますが、データベース自体は、侵害された場合に備えてはるかに安全です。

私の提案で悪いところをコメントしてください。そうすれば、最初に望んだことを実際に実行するソリューションを提案します。


4
@ジョン-それは完全に実行可能な解決策だと思います。ただし、内部の脅威に巻き込まれる準備をしてください!私が中間のパスワードリセットを使用してこれを行う場合(技術は一時的な測定として手動でパスワードを設定し、Mabelにパスワードとして1234と入力するように指示します)、重要なデータを含まないシステムでおそらくうまく機能します。それが高度なセキュリティ環境であったとしても、カストサービスがCEOのパスワードを1234に設定して直接ログインできるという問題があります。完璧な解決策はありませんが、これは多くのインスタンスで機能します。(+1)
シェーン

5
私はこの答えに気づきました。@シェーン、なぜ「内部の脅威」をめぐって炎上すると予測したのか理解できません。パスワードを変更する機能は、顕著な弱点ではありません。問題は、他のサービス(彼女の電子メール、彼女の銀行、彼女のCC情報が保存されている彼女のオンラインショッピングサイト)で使用される可能性が高いパスワードを発見する機能です。その弱点はここでは明らかにされていません。ボブがメイベルのパスワードをリセットして電話で彼女に伝えたとしても、ボブが他のアカウントにアクセスすることはできません。ただし、ログイン時にパスワードのリセットを「推奨」するのではなく強制します。
Aaronaught、2010

@Aaronaught-私はあなたの要点を理解していますが、私が考えているのは、カスタマーサービス担当者でさえ、システムの特定の領域(給与、経理など)から締め出され、直接パスワードを設定できるようにすることです。それ自体がセキュリティの問題です。私がこの質問について尋ねたシステムのタイプは、内部の会計システムとは大きく異なりますが、私はあなたの主張を理解しています。プロプライエタリな内部システムとその内部のパスワードセキュリティについては、まったく異なる議論をする可能性があります。
シェーン

1
@シェーン:それでは、質問の意味がさらに少なくなります。電話でパスワードを誰かに読まれてほしかったと思いました。自動化されたセルフサービスシステムを介してユーザーにパスワードを電子メールで送信したい場合は、非常に弱いもので「保護」されているため、パスワードを完全に不要にすることもできます。おそらく、サポートしようとしているユーザビリティシナリオの種類について、より具体的にする必要があります。多分その分析はその後回復可能なパスワードが必要でさえないことをあなたに示すでしょう。
アーロノート

4
サポート担当者が提供するコードは、文字通り新しいパスワードである必要はありません。パスワードリセット機能のロックを解除する1回限りのコードにすることができます。
kgilpin 2013

42

マイケル・ブルックスはCWE-257についてかなり声高に言っています-どんな方法を使用しても、あなた(管理者)はまだパスワードを回復できるという事実です。これらのオプションはどうですか?

  1. 他の誰かの公開鍵 -一部の外部権限でパスワードを暗号化します。そうすれば、個人的にそれを再構築することができず、ユーザーはその外部の権限に行って、パスワードの回復を依頼する必要があります。
  2. 2番目のパスフレーズから生成されたキーを使用してパスワードを暗号化します。この暗号化はクライアント側で行い、平文でサーバーに送信しないでください。次に、回復するには、入力からキーを再生成して、クライアント側で再度復号化を行います。確かに、このアプローチは基本的に2番目のパスワードを使用していますが、いつでも書き留めるか、古いセキュリティ質問アプローチを使用するように指示することができます。

クライアントの会社内の誰かに秘密鍵を保持するように指定できるので、1。がより良い選択だと思います。彼らが自分でキーを生成し、安全な場所に指示とともに保存することを確認してください。パスワードから特定の文字のみを暗号化して内部のサードパーティに提供することを選択してセキュリティを追加し、推測のためにパスワードを解読する必要があります。それ。これらの文字をユーザーに提供すれば、おそらくそれが何であったかを覚えているでしょう。


8
そしてもちろん、任意の秘密分割技術を使用して、会社の複数の人物に復号化を要求することができます。。しかし、のどれもユーザーに自分のパスワードを郵送または一部のランオフ・ミル最初のレベルの携帯電話のサポーターにログを介してそれらを歩いていすることができるという本来の要件満たしていない
クリストファーCreutzig

27

この質問に対するユーザーのセキュリティの懸念については多くの議論がありましたが、利点について言及したいのですが。これまでのところ、回復可能なパスワードをシステムに保存することによる正当なメリットについては言及していません。このことを考慮:

  • パスワードをメールで送信することでユーザーにメリットはありますか?いいえ。彼らは、うまくいけば、彼らがパスワードを選択することができるようになる使い切りのパスワードリセットのリンクから、より多くの利益を受けるだろう覚えています。
  • ユーザーは自分のパスワードを画面に表示することでメリットがありますか?いいえ、上記と同じ理由で。新しいパスワードを選択する必要があります。
  • ユーザーは、サポート担当者にパスワードを話させることでメリットがありますか?番号; 繰り返しになりますが、サポート担当者がユーザーのパスワード要求が適切に認証されたと見なした場合、新しいパスワードが与えられ、それを変更する機会がユーザーに与えられます。さらに、電話によるサポートは自動パスワードリセットよりも費用がかかるため、会社もメリットを享受できません。

回復可能なパスワードの恩恵を受けることができるのは、悪意のあるユーザー、またはサードパーティのパスワード交換を必要とする貧弱なAPIのサポーターのみです(このAPIは絶対に使用しないでください)。おそらく、会社が回復可能なパスワードを保存することで利益は得られず、責任のみが得られることをクライアントに誠実に述べることによって、あなたの主張に勝つことができます

これらのタイプの要求の行の間を読むと、クライアントがパスワードの管理方法を理解していないか、実際にはまったく気にしていないことがわかります。彼らが本当に望んでいるのは、ユーザーにとってそれほど難しくない認証システムです。したがって、実際に回復可能なパスワードを望まない方法を彼らに伝えることに加えて、特に銀行などの強力なセキュリティレベルを必要としない場合は、認証プロセスの痛みを軽減する方法を提供する必要があります。

  • ユーザーが自分のユーザー名に自分のメールアドレスを使用できるようにします。ユーザーが自分のユーザー名を忘れたが、メールアドレスを忘れたケースは無数にあります。
  • OpenIDを提供し、サードパーティがユーザーの物忘れのコストを支払うようにします。
  • パスワードの制限を緩和します。「特殊文字を使用できない」、「パスワードが長すぎる」、「パスワードを開始する必要がある」などの不要な要件のために、一部のWebサイトで優先パスワードが許可されていない場合、私たちは皆、非常にイライラしていると思います手紙付き。」また、使いやすさがパスワードの強度よりも大きな問題である場合は、より短いパスワードを許可するか、文字クラスの混合を必要としないことにより、愚かでない要件でさえも緩和できます。制限が緩和されると、ユーザーは忘れないパスワードを使用する可能性が高くなります。
  • パスワードを期限切れにしないでください。
  • ユーザーが古いパスワードを再利用できるようにします。
  • ユーザーが自分のパスワードリセットの質問を選択できるようにします。

しかし、何らかの理由で(そして理由を教えてください)本当に、本当に、本当に回復可能なパスワードを必要とする必要がある場合、ユーザーにパスワード以外のパスワードを与えることにより、他のオンラインアカウントを侵害する可能性からユーザーを守ることができます。ベースの認証システム。ユーザーはユーザー名/パスワードシステムにすでに精通しており、十分に行使されたソリューションであるため、これは最後の手段ですが、パスワードに代わる独創的な選択肢はたくさんあります。

  • ユーザーに数字のピンを選択させます。できれば4桁ではなく、できればブルートフォース攻撃を防ぐ場合にのみ選択してください。
  • ユーザーに、答えはわかっているだけで変化しない、常に覚えている、他の人が気づいても気にしない、短い答えの質問を選択してもらいます。
  • ユーザーにユーザー名を入力してから、推測から保護するために十分な順列を備えた覚えやすい図形を描画してもらいます(G1が電話のロックを解除するためにこれを行う方法のこの気の利いた写真を参照してください)。
  • 子供のWebサイトの場合、ユーザー名(識別アイコンのようなもの)に基づいてあいまいな生き物を自動生成し、その生き物に秘密の名前を付けるようにユーザーに要求できます。その後、クリーチャーの秘密の名前を入力してログインするように求められます。

私はここでコメントに返信しましたが、それはかなり長いものでしたので、私の返信では下にあります-分析と提起された問題の議論を確認することが重要だと思います。stackoverflow.com/questions/2283937/...
AVID

ユーザーは自分のパスワードを画面に表示することでメリットがありますか?私の意見では-確かにそうです!インターネットからあいまいなパスワードが提供されるたびに、私はそれを表示できるようにAppleに感謝します。そのため、何度も何度も入力しなくて済みます。障害者がどのように感じるか想像できます。
ドミトリザイツェフ2013

1
覚えにくい新しいパスワードを選択させるよりも、あいまいなパスワードを表示する方が良いのはなぜですか?
ジェイコブ

@ジェイコブ:より多くのエントロピー?
Alexander Shcheblikin、2014年

25

私が質問に対して行ったコメントによると:
1つの重要なポイントはほとんどの人によって非常に隠されています...私の最初の反応は、@ Michael Brooksと非常に似ていました。 、しかしこれらは彼らが何であるかです。
しかし、それから、それはそうでもないかもしれないと私は思いました!ここで欠けているのは、アプリケーションの資産の暗黙の価値です。簡単に言えば、価値の低いシステムの場合、すべてのプロセスが関与する完全に安全な認証メカニズムは過剰であり、セキュリティの選択が間違っています。
言うまでもなく、銀行にとって「ベストプラクティス」は必須であり、CWE-257に倫理的に違反する方法はありません。しかし、価値のない低価値のシステムを考えるのは簡単です(ただし、単純なパスワードが依然として必要です)。

覚えておくことが重要です。真のセキュリティ専門知識は、適切なトレードオフを見つけることであり、誰もがオンラインで読むことができる「ベストプラクティス」を独断的に口に出すことではありません。

:そのように、私は別の解決策を提案する
システムの値に応じて、およびONLY IFシステムが適切にノー「高価な」資産(アイデンティティそのもの、含まれている)と低値であり、AND適切なプロセスを作成し、有効なビジネス要件があります不可能(または十分に困難/高価)、ANDクライアントはすべての点に注意作られて...
特別なフープを介してジャンプしないようにして次に単に可逆暗号化を許可することが適切である可能性があります。
暗号化をまったく気にしないと言っているだけですが、実装は非常にシンプル/安価であり(受動的なキー管理を考慮しても)、ある程度の保護を提供します(実装コスト以上)。また、電子メールを介して、画面に表示してなど、ユーザーに元のパスワードを提供する方法を検討することも価値があります。
ここでの想定は、盗まれたパスワードの値が(全体でも)非常に低いということなので、これらのソリューションは有効です。


活発な議論が行われているため、実際にはいくつかの活発な議論がさまざまな投稿と個別のコメントスレッドで行われているため、いくつかの明確化を加えて、他の場所で提起された非常に優れた点のいくつかに対応します。

手始めに、ユーザーの元のパスワードを取得できるようにすることは悪い習慣であり、一般的には良いアイデアではないことは、ここの誰にとっても明らかだと思います。それは論争中ではありません...
さらに、私は多くの、いやほとんどの状況で、それは本当に間違っている、汚い、厄介な、そして醜いということを強調します。

しかし、問題の核心は原則あります。これを禁止する必要がないかもしれない状況はありますか。そうであれば、状況に応じて最も適切な方法で禁止する方法はありますか。

さて、@ Thomas、@ sfussenegger、および他のいくつかが述べたように、その質問に答える唯一の適切な方法は、与えられた(または仮定の)状況の完全なリスク分析を行い、何が危機に瀕しているか、どれだけの価値があるかを理解することです、およびその保護を提供するために他にどのような緩和策が機能しているか。
いいえ、これは流行語ではありません。これは、実際のセキュリティ専門家にとって基本的で最も重要なツールの1つです。ベストプラクティスは、ある時点まで(通常は経験の浅いハックのガイドラインとして)有効です。その後、思慮深いリスク分析が引き継がれます。

わかった、おかしい-私はいつも自分をセキュリティ狂信者の1人だと考えていて、どういうわけか私はいわゆる「セキュリティエキスパート」の反対側にいる...さて、真実は-私は狂信者なので、そして実際の実際のセキュリティの専門家-私はそのすべての重要なリスク分析なしに「ベストプラクティス」の教義(またはCWE)を噴出するとは信じていません。
「彼らが防御している実際の問題が何であるかを知らずにツールベルトにすべてを素早く適用するセキュリティ熱心な人に注意してください。より多くのセキュリティが必ずしも優れたセキュリティに等しいとは限りません。」
リスク分析と真のセキュリティ狂信者は、リスク、潜在的な損失、潜在的な脅威、補完的な緩和などに基づいて、よりスマートで価値/リスクベースのトレードオフを指摘します。健全なリスク分析を指摘できない「セキュリティ専門家」は、彼らの推奨事項の根拠、または論理的なトレードオフをサポートしますが、リスク分析の実行方法を理解することさえせずにドグマとCWEを噴出することを望みますが、セキュリティハックはありませんが、専門知識は印刷したトイレットペーパーに値しません。

確かに、それが空港のセキュリティというとんでもないことを私たちが得る方法です。

しかし、この状況で行う適切なトレードオフについて説明する前に、明らかなリスクを見てみましょう(明らかに、この状況に関するすべての背景情報がないため、私たちはみな仮説を立てています。状況が存在する可能性があります...)
LOW-VALUEシステムを想定していますが、それほど一般的ではないため、システムの所有者はカジュアルな偽装を防ぎたいと考えていますが、「高」セキュリティは使いやすさほど重要ではありません。(はい、それは熟練したスクリプトキディがサイトをハッキングするリスクを受け入れることは正当なトレードオフです...ちょっと待って、今はAPTが流行っていません...?)
たとえば、私が大家族の集まりのためのシンプルなサイトを準備していて、今年のキャンプ旅行に行きたい場所について誰もがブレーンストーミングできるようにしているとします。エルマおばさんが必要なときにログオンできないので、私は匿名のハッカーや、ワンタナマナビキリキ湖に戻るための繰り返しの提案をしつこくカズンフレッドさえ心配していません。現在、核物理学者であるエルマ叔母さんは、パスワードを覚えるのが得意ではありませんし、コンピューターを使うことすらまったく得意ではありません。繰り返しになりますが、ハッキングについては心配していません。間違ったログインによるばかげた間違いをしたくないのです。誰が来て、何が欲しいのか知りたいのです。

とにかく。
では、一方向ハッシュを使用する代わりに、対称的にパスワードを暗号化する場合、ここでの主なリスクは何ですか?

  • ユーザーを偽装しますか?いいえ、私はそのリスクをすでに受け入れています。
  • 邪悪な管理者?まあ、多分...しかし、繰り返しになりますが、誰かが別のユーザーになりすますことができるかどうかは関係ありません。内部の場合もそうでない場合も...とにかく、悪意のある管理者ががあってもパスワードを取得します。
  • 提起されているもう1つの問題は、IDが実際に複数のシステム間で共有されていることです。ああ!これは非常に興味深いリスクであり、詳しく調べる必要があります。共有
    するのは実際のIDではなく、証明または認証資格情報であると主張することから始めましょう。わかりました。共有パスワードを使用すると、別のシステム(たとえば、銀行口座、Gmailなど)への入室が事実上許可されるため、これは事実上同じIDであるため、セマンティクスにすぎません ...を除きます。このシナリオでは、IDは各システムによって個別に管理されます(ただし、OAuthなどのサードパーティのIDシステムが存在する可能性があります。ただし、このシステムのIDとは別のものです。詳細は後で説明します)。
    そのため、ここでのリスクの中心点は、ユーザーが自分の(同じ)パスワードをいくつかの異なるシステムに喜んで入力することです-そして今、私(管理者)または私のサイトの他のハッカーは、Erma叔母のパスワードにアクセスできます。核ミサイルサイト。

うーん。

ここで何か気になっていることはありますか?

そうすべき。

核ミサイルシステムを保護することは私の責任ではないという事実から始めましょう。私は(MY家族のために)フラクキン家族の遠出サイトを構築しているだけです。それで、それは誰の責任ですか?うーん…核ミサイルシステムはどうですか?ああ。
第2に、誰かのパスワード(安全なサイト間で同じパスワードを繰り返し使用することがわかっている人とそれほど安全ではないパスワード)を盗む場合-なぜサイトをハッキングするのですか?または対称暗号化に苦労していますか?Goshdarnitall、私は自分のシンプルなウェブサイトを立ち上げユーザーにサインアップして欲しいものについての非常に重要なニュースを受け取ることができます... Puffo Presto、私は自分のパスワードを「盗みました」。

はい、ユーザー教育は常に私たちをヒエニーに噛み付くように戻ってきますね?
そして、そこのあなたがそれについてできることは何が...あなたがあなたのサイト上で自分のパスワードをハッシュし、TSAは考えることができる他のすべてを行うことをされた場合でも、あなたは自分のパスワードに保護を付加しない、NOT ONE WHIT彼らはキープするつもりなら、彼らがぶつかるすべてのサイトに無差別にパスワードを貼り付けます。気にしないでください。

別の言い方をすればあなたは彼らのパスワードを所有していないのであなたのように振る舞うことをやめなさい。

それで、私の愛するセキュリティ専門家は、老婦人がウェンディに「リスクはどこにあるのか」と尋ねるのによく使っていました。

上記で提起されたいくつかの問題に答えて、さらにいくつかのポイント:

  • CWEは、法律や規制ではなく、標準でもありません。これは一般的な弱点、つまり「ベストプラクティス」の逆のコレクションです。
  • 共有されたアイデンティティの問題は実際の問題ですが、ここの反対論者によって誤解(または誤って表現)されています。これは、それ自体でアイデンティティを共有することの問題であり、価値の低いシステムでパスワードを解読することではありません。低価値システムと高価値システムの間でパスワードを共有している場合、問題はすでにそこにあります!
  • さて、前のポイントは実際には、これらの低価値システムと高価値銀行システムの両方にOAuthなどを使用してAGAINSTをポイントします。
  • 私はそれが単なる例であることを知っていますが、(悲しいことに)FBIシステムは実際には最も安全なシステムではありません。猫のブログのサーバーとはまったく異なりますが、より安全な銀行のいくつかを超えることはありません。
  • 暗号化キーの知識の分割、つまり二重制御は軍だけで発生するわけではありません。実際、PCI-DSSは基本的にすべての販売者からこれを要求するようになりました。そのため、それほど遠くにあるわけではありません(価値が正当化する場合)。
  • このような質問が開発者の職業をとても悪くしているものであると不平を言っているすべての人にとって:それは、セキュリティの職業をさらに悪化させるのはそれらのような答えです。繰り返しになりますが、ビジネスに焦点を当てたリスク分析が必要です。そうしないと、自分が役に立たなくなります。間違っていることに加えて。
  • これが、通常の開発者を雇って、より多くのセキュリティ責任を彼に負わせることは、別の考え方をし、正しいトレードオフを探すための訓練なしに、良い考えではない理由だと思います。害はありません。ここにいる皆さんにとって、私はそれで十分です-しかし、より多くのトレーニングが必要です。

ふew。なんと長い記事...
しかし、元の質問に答えるために、@ Shane:

  • 物事を行うための適切な方法をお客様に説明します。
  • 彼がまだ主張するなら、もう少し説明しなさいと主張し、主張しなさい。必要に応じてかんしゃくを投げます。
  • ビジネスリスクを彼に説明してください。詳細は良好で、数値は良好です。通常、ライブデモが最適です。
  • 彼がまだ主張し、かつ有効なビジネス上の理由を提示する場合-判断の電話をかける時が来ました:
    このサイトは価値が低くないですか?それは本当に有効なビジネスケースですか?それで十分ですか?正当なビジネス上の理由を上回る、他に考慮できるリスクはありませんか?(そしてもちろん、クライアントは悪意のあるサイトではありませんが、それはそうです)。
    その場合は、先に進んでください。必要なプロセスを実施するために、労力、摩擦、および(この仮説的な状況で)失われた使用に値するものではありません。他の決定(この場合も)は悪いトレードオフです。

したがって、最終的に、実際の答え-単純な対称アルゴリズムで暗号化し、強力なACLとできればDPAPIなどで暗号化キーを保護し、それを文書化して、クライアント(その決定を行うのに十分な上級者)にサインオフしてもらいます。それ。


5
パスワードは「ノー」高価な資産やFacebook / Gmailの/あなたの銀行とあなたの低価値のサイト間で共有されているにも価値の低いサイトで、高価な資産。
jammycakes 2010

3
ここでの問題は、上記のユーザーグループが、さまざまなセキュリティレベル(バンキングからレシピブログまで)のすべてのアプリケーションに同じパスワードを使用する傾向があることだと思います。したがって問題は、ユーザーを自分自身から保護するのが開発者の責任であるかどうかです。私は間違いなく言うでしょう、はい!
ercan

7
申し訳ありませんが、アイデンティティ自体価値の高い資産、期間です。例外なし、言い訳なし。あなたのサイトがどれほど小さくて重要ではないとしても。また、共有パスワード、ハッカーがユーザーのFacebookアカウント、Gmailアカウント、銀行口座などに侵入できる場合のIDです。セマンティクスとは何の関係もありませんが、結果とはすべてです。ちょうどそのようなこの一つとして、ハッカーの攻撃によって影響を受けた人に尋ねる:theregister.co.uk/2009/08/24/4chan_pwns_christiansは
jammycakes

2
@Jacob、他のシステム上のErmaのアカウントが侵害されたために、クライアントはどの世界で訴えられますか?クライアントの側に重大な過失があったとしても(これは与えられたものではありません)、他のシステムが違反したことを証明する方法がないという事実に加えて、法的根拠はありません。一方のシステムから他方のシステムに何らかの損害を請求します。それは偏見をもって法廷外に投げ出され、原告を侮辱することになる。ただし、Ermaは多数の利用規約に違反したために責任を
負わ

5
@ジェイコブ、それはとても間違っている。パスワードが偶然同じである(それがToSとセキュリティポリシーに明らかに違反する)からといって、2つを照合する法的立場はありません。それはそれを証明することがほぼ不可能であるという事実をも超えています。余談ですが、特定の規制が関連していない限り、ランダムな会社が緩やかなセキュリティ慣行を持たないことを要求する法律がないことも指摘します。その上、パスワードは暗号化されている(!)ので、緩やかさは完全な結論にはほど遠いものです。
AviD 2010年

21

途中の家はどうですか?

強力な暗号化でパスワードを保存し、リセットを有効にしないでください。

パスワードをリセットする代わりに、ワンタイムパスワードの送信を許可します(最初のログオンが発生したらすぐに変更する必要があります)。次に、ユーザーが必要なパスワード(選択した場合は前のパスワード)に変更できるようにします。

これは、パスワードをリセットするための安全なメカニズムとして「販売」できます。


私はこれをいくつかの状況で使用しました(通常、これは私の中間点です)が、エンドユーザーは対話を取得するつもりはなく、サポートが彼らに伝えることができる必要があることを人々に言わせましたそのビジネスのモデルの状況によるパスワード」。可能であればこれが望ましいということにも同意します。
シェーン

DBが悪意のある手に渡り、盗まれたパスワードが公表されるリスクについては、常にクライアントに伝えることができます...多くの例があります。
2010

6
彼らにあなたが彼らに警告したことが実際に起こった場合彼らはあなたを訴えることができないという追加の条項を付けて、「デザイン」にサインオフするように彼らに頼んでください...少なくともあなたはあなた自身をカバーします。
2010

4
-1パスワードは、それはCWE-257の違反である「暗号化されない」でくださいcwe.mitre.org/data/definitions/257.html
ルーク

34
@Michael Brooks:同じコメントを何度も投票してコピーして貼り付ける必要はありません。私たちは皆、それが悪い習慣であることを認識しています。シェーンは、しかし、彼は問題でレバレッジを欠いていると述べたので、次善のものが提案されています。
Johannes Gorset、2010

13

ユーザーが元のパスワードを取得できるようにする唯一の方法は、ユーザー自身の公開鍵でパスワードを暗号化することです。その後、そのユーザーだけがパスワードを復号化できます。

したがって、手順は次のようになります。

  1. ユーザーは、まだパスワードを設定せずに、サイトに(もちろんSSL経由で)登録します。自動的にログインするか、一時的なパスワードを入力してください。
  2. あなたは将来のパスワード取得のために彼らの公開PGPキーを保存することを提案します。
  3. 彼らは公開PGPキーをアップロードします。
  4. 新しいパスワードを設定するように依頼します。
  5. パスワードを送信します。
  6. 利用可能な最適なパスワードハッシュアルゴリズム(bcryptなど)を使用してパスワードをハッシュします。次のログインを検証するときにこれを使用します。
  7. 公開鍵を使用してパスワードを暗号化し、それを個別に保管します。

ユーザーがパスワードを要求した場合は、暗号化された(ハッシュされていない)パスワードで応答します。ユーザーが自分のパスワードを将来取得できないようにしたい場合(サービスで生成されたパスワードにのみリセットできる場合)、ステップ3と7はスキップできます。


5
ほとんどのユーザーはPGP鍵を持っていません(私はまだそれを持っていません。業界で20年経った今、私は必要性を感じたことは一度もありません)。それを取得するのは簡単なプロセスではありません。さらに、秘密鍵は実際には実際のパスワードのプロキシにすぎません。つまり、パスワードのパスワードです。それはずっとカメです。
ロバートハーベイ

1
@RobertHarvey目標は、サイトの従業員やハッカーがパスワードを入手することなく、ユーザーがパスワードを取得できるようにすることです。検索プロセスをユーザー自身のコンピューターで実行することを要求することにより、これを強制します。同じことを実現できるPGPの代替案が存在する場合もあります。カメはずっと下にいるかもしれませんが(おそらく途中で象がいるかもしれません)、他の方法は見ていません。一般の人々(個別に対象とされる可能性は低い)の場合、パスワードを紙に書き、サービスから取得できないようにすると、現在よりも安全になります
Nicholas Shanks

誰もがPGP公開鍵を持っていることを強いられるので、私はそれが好きです。
Lodewijk 2014

あなたはそれを生成してユーザーに与えるだけです。
My1

@RobertHarveyこれは「摩擦のないプロセス」ではないことは正しいかもしれませんが、通常のユーザーが無視できるパワーユーザー向けの追加サービスになる可能性があります。PKが「パスワードのパスワード」であるという議論については、理論的には多くのパスワードでそうである可能性があることを覚えておいてください。サービスごとに異なるパスワードを使用し、すべて同じキーを使用してそれらを暗号化する場合があります。そうすれば、PKは単一のパスワードよりも価値があります。おそらくそれは、抽象的な方法でパスワードマネージャー(?)に匹敵します。これがどのような結果をもたらすかはすぐにはわかりません...
Kjartan

12

あなたが自問すべき本当の質問は次のとおりだと思います。


4
@sneg-ええと、私はかなり説得力のある人ですが、時にはそれが上司であり、時には顧客であるため、何らかの方法で彼らを説得するために必要なレバレッジが常にあるとは限りません。私はもう少し鏡で練習します..;)
シェーン

納得させるためには、能力とコミュニケーションスキル以外の力は必要ありません。あなたが何かをするためのより良い方法を知っているが人々が聞いていない場合...それについて考えてください。
z-boss

7
@ z-boss-どうやら、私が一緒に作業することができたハードヘッドの一部/で作業したことがないようです。場合によっては、舌が金でメッキされていて、Google Chromeを1日で再プログラムできるかどうかは問題ではありません(おそらく実際に役立つかもしれません)でも、それは変わらないでしょう。
シェーン

11

同じ問題があります。同じように、誰かが私のシステムをハッキングするのは常に「if」ではなく「いつ」の問題だといつも思っています。

したがって、クレジットカードやパスワードなどの回復可能な機密情報を格納する必要があるWebサイトを実行する必要がある場合、私は次のことを行います。

  • 暗号化:openssl_encrypt(文字列$ data、文字列$ method、文字列$ password)
  • データ引数
    • 機密情報(ユーザーパスワードなど)
    • 情報が複数の機密情報のようなデータの配列である場合など、必要に応じてシリアル化します
  • パスワード引数:ユーザーだけが知っている情報を使用します。
    • ユーザーナンバープレート
    • 社会保障番号
    • ユーザーの電話番号
    • ユーザーの母親名
    • 登録時に電子メールまたはSMSで送信されたランダムな文字列
  • メソッド引数
    • 「aes-256-cbc」などの暗号方式を1つ選択します
  • 絶対に(システム内または任意の場所)データベースで、「パスワード」の引数に使用される情報を保存しません

このデータを取得する必要がある場合は、「openssl_decrypt()」関数を使用して、ユーザーに回答を求めます。例えば:「パスワードを受け取るには、質問に答えてください:あなたの携帯電話番号は何ですか?」

PS 1:データベースに保存されているデータをパスワードとして使用しないでください。ユーザーの携帯電話番号を保存する必要がある場合は、この情報を使用してデータをエンコードしないでください。常にユーザーだけが知っている情報や、親戚でない人が知りにくい情報を使用してください。

PS 2:「ワンクリック購入」などのクレジットカード情報の場合、ログインパスワードを使用します。このパスワードはデータベース(sha1、md5など)でハッシュされますが、ログイン時にプレーンテキストのパスワードをセッションまたは非永続的(つまりメモリに)セキュアなCookieに保存します。このプレーンなパスワードはデータベースに保存されることはなく、実際には常にメモリに保存され、セクションの最後で破棄されます。ユーザーが「ワンクリック購入」ボタンをクリックすると、システムはこのパスワードを使用します。ユーザーがFacebookやTwitterなどのサービスでログインしていた場合、購入時にパスワードをもう一度要求するか(完全な「クリック」ではない)、ユーザーがログインに使用したサービスのデータを使用します。 (Facebook IDと同様)。


9

資格情報の保護は、バイナリ操作ではありません:安全/安全ではありません。セキュリティはすべてリスク評価に関するものであり、連続的に測定されます。セキュリティ狂信者はこのように考えることを嫌いますが、醜い真実は完全に安全なものは何もないということです。厳格なパスワード要件を備えたハッシュパスワード、DNAサンプル、および網膜スキャンは、より安全ですが、開発とユーザーエクスペリエンスを犠牲にします。プレーンテキストのパスワードは安全性ははるかに劣りますが、実装するのにコストがかかります(ただし、避ける必要があります)。結局のところ、それは違反のコスト/利益分析に帰着します。保護するデータの価値とその時間的価値に基づいてセキュリティを実装します。

誰かのパスワードが世に出ることのコストは何ですか?指定されたシステムでのなりすましのコストはどれくらいですか?FBIコンピュータにとって、コストは莫大になる可能性があります。ボブの1回限りの5ページのWebサイトにとって、コストはごくわずかです。専門家は顧客にオプションを提供し、セキュリティに関しては、実装の利点とリスクを提示します。これは二重であり、クライアントが業界標準に注意を怠ったために危険にさらされる可能性のある何かを要求した場合。クライアントが特に双方向の暗号化を要求する場合、私はあなたの異議を文書化することを保証しますが、あなたが知っている最善の方法で実装することを妨げるべきではありません。結局のところ、それはクライアントのお金です。はい、

双方向暗号化でパスワードを保存している場合、セキュリティはすべてキー管理にかかっています。Windowsには、証明書の秘密キーへのアクセスを管理アカウントとパスワードで制限するメカニズムが用意されています。他のプラットフォームでホスティングしている場合は、それらで利用できるオプションを確認する必要があります。他の人が示唆しているように、非対称暗号化を使用できます。

パスワードは一方向のハッシュを使用して保存する必要があると明確に述べている法律(英国のデータ保護法も)はありません。これらの法律の唯一の要件は、その合理的です、セキュリティのために措置が講じられる。データベースへのアクセスが制限されている場合、プレーンテキストのパスワードでさえ、そのような制限の下で合法的に適格となる可能性があります。

ただし、これはもう1つの側面、つまり法的優先順位を明らかにします。法的優先順位から、システムが構築されている業界で一方向ハッシュを使用する必要があることが示唆されている場合、それはまったく異なります。それはあなたの顧客を説得するために使用する弾薬です。それを除いて、合理的なリスク評価を提供し、異議を文書化し、顧客の要件を与えることができる最も安全な方法でシステムを実装するための最良の提案。


10
あなたの答えは、パスワードが複数のサイト/サービスで再利用されることを完全に無視します。これがこのトピックの中心であり、回復可能なパスワードが重大な弱点と見なされる理由です。セキュリティの専門家は、セキュリティの決定を技術以外のクライアントに委任しません。専門家は、彼の責任が支払っているクライアントを超えており、リスクが高く、報酬がゼロのオプションを提供していないことを知っています。-1は、レトリックに重きを置き、事実を非常に軽視する発言であり、実際に質問に答えることすらしません。
Aaronaught、2010

4
繰り返しになりますが、リスク評価は完全に見過ごされています。引数を使用するには、一方向のハッシュだけで停止することはできません。また、複雑さの要件、パスワードの長さ、パスワードの再利用制限なども含める必要があります。システムが無関係で率直に言って、ユーザーが無意味なパスワードを使用したりパスワードを再利用したりすることは、十分なビジネス上の正当化ではないと主張して、質問に答えました。短い答え:std実装の使用を推し進め、却下された場合は異論を文書化して次に進んでください。
トーマス

7
そして再び、あなたはこれが低価値システムにとって重要ではないということを繰り返します! ユーザーのパスワードの値は、システム上のユーザーのアカウントの値とは関係ありません。 それは秘密であり、常に守らなければならないものです。ここで問題がまだ理解されていないことを示すコメントにさらに-1を付けたいと思います。
アーロノート

5
リスク評価が中心的な問題です。パスワードの再利用は、はるかに多くの問題の潜在的な問題の1つにすぎません。なぜフォブを必要としないのですか?ログインするために、その人があなたのオフィスまで車で行く必要がないのはなぜですか?リスクを合理的に評価しない限り、これらの質問に答える方法はありません。あなたの世界では、すべてがリスクなので、すべてのシステムにはFBIレベルのログインセキュリティが必要です。それは単に現実の世界がどのように機能するかではありません。
トーマス

7
ここで明らかな唯一のことは、あなたの主張全体がSlippery Slopeの誤りにすぎないこと、そしてその事実を隠すために読者を「リスク評価」のような流行語で流布しようとしていることです。「FBI」が使用するシステムは、bcryptハッシュおよび最小パスワード長よりもはるかに安全になるので、安心してください。業界標準の認証システムを必要とすることで「セキュリティ狂信」になるとしたら、私は狂信的だと思います。個人的には、お金のために私の安全保障を犠牲にして喜んでいる人々がいることを知るのは私にとって苦痛です。それは非倫理的です。
Aaronaught、2010

8

ユーザーのセキュリティの質問への回答を暗号化キーの一部にし、セキュリティの質問への回答をプレーンテキストとして保存しないでください(代わりにハッシュします)。


ユーザーも質問に別の方法で答えることがあります。一部の質問は、後で簡単に言い換えることができる長い回答を要求します。
Monoman、

5
セキュリティの質問は悪い考えです。情報が漏洩した場合、どのようにあなたのお母さんに旧姓を変更させるのですか?Peter GutmannのEngineering Securityも参照してください。
jww 2013

7

私は生活のために多要素認証システムを実装しているので、一時的に1つ少ない要素を使用してリセット/再作成ワークフローのみでユーザーを認証しながら、パスワードをリセットまたは再構築できると考えるのは自然です。特に、追加の要素の一部としてOTP(ワンタイムパスワード)を使用すると、提案されたワークフローの時間枠が短い場合に、リスクの多くが軽減されます。スマートフォン用のソフトウェアOTPジェネレーターを実装しました(ほとんどのユーザーは既に1日持ち歩いています)。商用プラグインが表示される前に、私が言っていることは、ユーザーを認証するために使用される唯一の要素ではない場合に、パスワードを簡単に取得またはリセットできるようにすることによるリスクを軽減できるということです。


多要素認証システムから一時的に要素を削除することは、非常に多くのサイトで見られる苛立たしい「秘密の質問」システムよりも、パスワードをリセットするためのより安全な手段です。しかし、回復可能な形式でパスワードを保存する方法については、2番目の要素を使用して最初の要素を暗号化または難読化しない限り、それがどのように役立つかはわかりません。説明できる?
Aaronaught、

@Aaronaught私が言ったことは、回復可能なパスワードが「必要」である場合、それが唯一の認証要素ではない場合に固有のリスクが低くなり、ワークフローがその要素を再利用する場合、エンドユーザーにとっても簡単になります彼/彼女はすでに所有し、現在アクセスできますが、おそらく忘れてしまった「秘密の答え」を忘れたり、時間制限のあるリンクや一時的なパスワードを使用したりします。どちらも安全でないチャネルを通じて送信されます(クライアント証明書でS-MIMEを使用している場合を除く)。 PGP、両方とも特に正しい関連付けの管理と有効期限/代用の管理にかかるコスト)
Monoman

1
私はそれがすべて本当だと思いますが、国民の妥協のリスクはそもそも最小限です。回復可能なパスワードに関するより深刻な問題は内部セキュリティであり、不満を抱いた従業員が数千の顧客の電子メールパスワードを盗んだり、不正なCEOがフィッシング詐欺師やスパマーに販売したりする可能性があります。2要素認証は、IDの盗難やパスワードの推測に対抗するには優れていますが、実際のパスワードデータベースを安全に保つことに関しては、それほど多くのことをテーブルにもたらしません。
Aaronaught、

5

申し訳ありませんが、パスワードを解読する方法がある限り、パスワードを安全にする方法はありません。激しく戦ってください。もし負けたらCYAを倒してください。


5

ちょうどこの興味深く、白熱した議論に出くわしました。けれども私を最も驚かせたのは、次の基本的な質問にほとんど注意が払われなかったことです。

  • Q1。ユーザーがプレーンテキストで保存されたパスワードへのアクセスを要求する実際の理由は何ですか?なぜそれほど価値があるのですか?

ユーザーが高齢者または若いという情報は、実際にはその質問に答えません。しかし、顧客の懸念を適切に理解せずにビジネス上の意思決定を行うにはどうすればよいでしょうか。

なぜそれが重要なのですか?顧客の要求の本当の原因が非常に使いにくいシステムである場合、おそらく正確な原因に対処することで実際の問題を解決できるでしょうか?

私はこの情報を持っていないのでそれらの顧客と話すことができないので、私は推測することができるだけです:それは使いやすさについてです、上記を見てください。

私が見た別の質問:

  • Q2。ユーザーが最初にパスワードを覚えていない場合、なぜ古いパスワードが重要なのですか?

そして、ここに可能な答えがあります。「miaumiau」と呼ばれる猫がいて、パスワードとして彼女の名前を使用したが、それを忘れた場合は、それが何であるかを思い出させたい、または「#zy * RW(ew」のようなものを送信した方がいいですか?)

別の考えられる理由は、ユーザーが新しいパスワードを考え出すのが大変だと考えていることです!したがって、古いパスワードが返送されると、彼女を再びその面倒な作業から救うような錯覚が生じます。

私はその理由を理解しようとしています。しかし、理由が何であれ、対処する必要があるのは原因ではなく理由です。

ユーザーとして、私は物事をシンプルにしたいです!一生懸命働きたくない!

新聞を読むためにニュースサイトにログインした場合、パスワードとして1111と入力して、やり直したいと思います。

私はそれが安全でないことを知っていますが、誰かが私の「アカウント」にアクセスすることについて私は何を気にしますか?はい、彼はニュースも読むことができます!

サイトには私の「プライベート」情報が保存されていますか?今日読んだニュースは?それは私のサイトではなくサイトの問題です!サイトは認証されたユーザーに個人情報を表示しますか?次に、最初から表示しないでください。

これは、問題に対するユーザーの態度を示すためだけのものです。

要約すると、プレーンテキストのパスワードを安全に保存する方法(これは不可能であることはわかっています)の問題ではなく、顧客の実際の懸念に対処する方法の問題だと思います。


4

紛失/忘れたパスワードの処理:

誰もパスワードを回復することはできません。

ユーザーがパスワードを忘れた場合、少なくともユーザー名または電子メールアドレスを知っている必要があります。要求に応じて、ユーザーテーブルにGUIDを生成し、パラメーターとしてGUIDを含むリンクを含む電子メールをユーザーの電子メールアドレスに送信しました。

リンクの後ろのページは、パラメータGUIDが実際に存在していることを確認し(おそらくいくつかのタイムアウトロジックがある)、ユーザーに新しいパスワードを要求します。

ユーザーにホットラインヘルプを用意する必要がある場合は、付与モデルにいくつかのロールを追加し、ホットラインロールが識別されたユーザーとして一時的にログインできるようにします。そのようなすべてのホットラインログインを記録します。たとえば、Bugzillaはこのような偽装機能を管理者に提供しています。


GUIDは悪い考えであり、十分にランダムではなく、ブルートフォースが容易です。これに他の問題があり、参照stackoverflow.com/questions/664673/...
Avidの

3

暗号化して紛失する前に、登録時にプレーンテキストのパスワードをメールで送信するのはどうですか?私は多くのWebサイトがそれを実行するのを見てきました。ユーザーの電子メールからそのパスワードを取得する方が、サーバー/コンピューターに残しておくよりも安全です。


電子メールが他のどのシステムよりも安全であるとは思いません。これは法的な懸念を私の手に負わせませんが、それでも誰かがメールを紛失/削除する問題があり、今私は元の問題に戻りました。
シェーン

パスワードのリセットを提供し、プレーンテキストのパスワードをメールで送信します。自分でパスワードのコピーを保存せずに、この件に関してできることはそれだけです。
casraf 2010

これは絶対に恐ろしい考えです。これは効果がなく(多くのユーザーが実際にメールを読んだ後に削除する)、保護しようとしているものよりも悪い(電子メールはデフォルトで暗号化されておらず、信頼できないネットワークを通過するため)。ユーザーが自分でパスワードを書き留めて、少なくとも自分自身に電子メールを送信することは、インターネット全体ではなく電子メールサーバーよりも遠くまで届かないことをユーザーに提案することをお勧めします。
Ben Voigt 2016年

3

回復可能なパスワードを保存するという要件を単に拒否することができない場合は、これを反論として考えてみてください。

パスワードを適切にハッシュしてユーザーのリセットメカニズムを構築するか、個人を特定できる情報をシステムからすべて削除することができます。メールアドレスを使用してユーザー設定をセットアップできますが、それはそれで終わりです。Cookieを使用して、今後のアクセスで設定を自動的に取得し、妥当な期間が経過したらデータを破棄します。

パスワードポリシーで見過ごされがちなオプションの1つは、パスワードが本当に必要かどうかです。パスワードポリシーがカスタマーサービスコールを引き起こすだけの場合、おそらくそれを取り除くことができます。


パスワードに関連付けられた電子メールアドレスがあり、そのパスワードが回復可能である限り、パスワードの再利用により、その電子メールアドレスのパスワードが漏洩する可能性があります。これが実際の最大の関心事です。重要な他の個人を特定できる情報は本当にありません。
Aaronaught、

1
あなたは私のポイントを完全に逃した。本当にパスワードが必要ない場合は、収集しないでください。開発者は、「それがまさに私たちのやり方です」という考え方で行き詰まることがよくあります。時にはそれが先入観の概念を捨てるのに役立ちます。
anopres

2

ユーザーを本当にする忘れたパスワードを回復(たとえば、通知)する必要があり、それとも単にシステムにできるようにする必要があるのでしょうか。ログオンに必要なパスワードが本当に必要な場合は、古いパスワード(それが何であれ)を、サポート担当者がパスワードを紛失した人に提供できる新しいパスワードに変更するだけのルーチンを用意しませんか?

私はこれを正確に行うシステムで働いてきました。サポート担当者は現在のパスワードを知る方法がありませんが、新しい値にリセットできます。もちろん、そのようなリセットはすべてどこかに記録する必要があり、パスワードがリセットされたことをユーザーに知らせるメールをユーザーに送信することをお勧めします。

別の可能性は、アカウントへのアクセスを許可する2つの同時パスワードを持つことです。1つはユーザーが管理する「通常の」パスワードで、もう1つはサポートスタッフのみが知っているスケルトン/マスターキーのようなもので、すべてのユーザーで同じです。これにより、ユーザーに問題が発生した場合、サポート担当者はマスターキーを使用してアカウントにログインし、ユーザーが自分のパスワードを何にでも変更できるようにすることができます。言うまでもなく、マスターキーを使用したすべてのログインは、システムによってもログに記録される必要があります。追加の手段として、マスターキーが使用されるときはいつでも、サポート担当者の資格情報も検証できます。

-EDIT-マスターキーがないことについてのコメントへの回答:ユーザー以外のユーザーがユーザーのアカウントにアクセスすることを許可することは悪いことだと思うのと同じように、私も悪いことに同意します。質問を見ると、全体の前提は、顧客が非常に危険なセキュリティ環境を義務付けていることです。

マスターキーは、最初に思われるほど悪くない必要はありません。私はかつて防衛プラントで働いていました。そこでは、メインフレームのコンピューターオペレーターが特定の状況で「特別なアクセス」を持つ必要があると認識していました。特別なパスワードを封をした封筒に入れ、オペレーターのデスクにテープで留めるだけです。(オペレーターが知らなかった)パスワードを使用するには、封筒を開く必要がありました。シフトの変更ごとに、シフトスーパーバイザーの仕事の1つは、封筒が開かれているかどうかを確認することであり、開封された場合はすぐにパスワードを(別の部門によって)変更し、新しいパスワードを新しい封筒に入れてプロセスがすべて開始されました。もう一度。オペレーターは、なぜそれを開けたのかと尋ねられ、事件は記録のために文書化されます。

これは私が設計する手順ではありませんが、機能し、優れた説明責任を提供しました。すべてがログに記録されてレビューされ、さらに、すべてのオペレーターがDODの秘密のクリアランスを持っていて、私たちは虐待を受けたことはありませんでした。

レビューと監督のため、すべてのオペレーターは、封筒を開ける特権を誤用した場合、即時解雇と刑事訴追の対象となることを知っていました。

ですから、本当の答えは、信頼できる人を雇い、身元調査を行い、適切な管理監督と説明責任を行使したいのであれば、正しいことだと思います。

しかし、この貧しい仲間のクライアントに優れた管理機能があれば、そもそもそのようなセキュリティの侵害されたソリューションを求めなかったでしょう。


マスターキーは非常にリスクが高く、サポートスタッフはすべてのアカウントにアクセスできます。そのキーをユーザーに渡すと、マスターキーとすべてにアクセスできるようになります。
カーソンマイヤーズ

マスターキーはひどい考えです。誰かがそれを発見した場合(または偶然に開示された場合)、それらを悪用できるためです。アカウントごとのパスワードリセットメカニズムがはるかに望ましいので。
Phil Miller、

Linuxにはデフォルトでrootレベルのアクセス権を持つスーパーユーザーアカウントがあると思いましたか?これは、システム上のすべてのファイルにアクセスするための「マスターキー」ではありませんか?
JonnyBoats 2010年

@JonnyBoatsはい、そうです。これが、Mac OS Xのような最近のUnixがrootアカウントを無効にしている理由です。
ニコラスシャンクス2013年

@NicholasShanks:rootアカウントを無効にするか、rootアカウントのインタラクティブログインを無効にしますか?無制限の権限で実行されているコードはまだたくさんあります。
Ben Voigt 2016年

2

この件について私が理解していることから、サインオン/パスワードを使用してWebサイトを構築している場合は、サーバー上にプレーンテキストのパスワードさえまったく表示されないはずです。パスワードは、クライアントを離れる前にハッシュし、おそらくソルト処理する必要があります。

プレーンテキストのパスワードが表示されない場合は、取得の問題は発生しません。

また、MD5などの一部のアルゴリズムが安全であるとは見なされなくなった(申し立てによると)Webから収集しました。私自身はそれを判断する方法はありませんが、それは考慮すべきことです。


1

スタンドアロンサーバーでDBを開き、この機能を必要とする各Webサーバーに暗号化されたリモート接続を提供します。
リレーショナルDBである必要はなく、テーブルや行の代わりにフォルダとファイルを使用するFTPアクセスを持つファイルシステムでもかまいません。
可能であれば、Webサーバーに書き込み専用権限を与えます。

通常の人と同じように、取得できないパスワードの暗号化をサイトのDBに保存します(「pass-a」と呼びましょう)。
新しいユーザーごとに(またはパスワードを変更して)、リモートDBにパスワードのプレーンコピーを保存します。サーバーのID、ユーザーのID、および「pass-a」をこのパスワードの複合キーとして使用します。パスワードで双方向暗号化を使用して、夜の睡眠を改善することもできます。

誰かがパスワードとそのコンテキスト(サイトID +ユーザーID + "pass-a")の両方を取得できるようにするには、次のようにする必要があります。

  1. ウェブサイトのDBをハックして、(「pass-a」、ユーザーID)ペアを取得します。
  2. いくつかの設定ファイルからウェブサイトのIDを取得します
  3. リモートパスワードDBを見つけてハッキングします。

パスワード取得サービスのアクセシビリティを制御でき(保護されたWebサービスとしてのみ公開し、1日あたり一定量のパスワード取得のみを許可し、手動で実行するなど)、この「特別なセキュリティの取り決め」に追加料金を請求することもできます。
パスワード取得DBサーバーは、多くの機能を提供せず、セキュリティを強化できるため、かなり隠されています(アクセス許可、プロセス、およびサービスを厳密に調整できます)。

全体として、あなたはハッカーの仕事をより困難にします。単一のサーバーでセキュリティ違反が発生する可能性は同じですが、意味のあるデータ(アカウントとパスワードの一致)を収集するのは困難です。


3
アプリサーバーがアクセスできる場合、アプリサーバーにアクセスできるすべてのユーザーがアクセスできます(ハッカーまたは悪意のある内部関係者)。これは追加のセキュリティを提供しません。
molf 2010

1
ここで追加されるセキュリティは、アプリケーションサーバーのDBがパスワードを保持しないことです(そのため、パスワードDBへの2番目のハックが必要です)。また、パスワードDBは、パスワード取得サービスのアクセスを制御することで、不規則なアクティビティからよりよく保護できます。そのため、大量のデータの取得を検出したり、取得のSSHキーを毎週変更したり、自動パス取得を許可せずに、すべて手動で実行したりできます。このソリューションは、パスワードDBのその他の内部暗号化スキーム(公開鍵と秘密鍵、ソルトなど)にも適合します。
アミールアラド

1

あなたが考慮しなかったかもしれない別のオプションは、電子メールを介したアクションを許可することです。少し面倒ですが、システムの特定の部分を表示(読み取り専用)するためにシステムの「外部」にいるユーザーを必要とするクライアントのためにこれを実装しました。例えば:

  1. ユーザーが登録されると、(通常のWebサイトのように)フルアクセスが可能になります。登録にはメールを含める必要があります。
  2. データまたはアクションが必要で、ユーザーがパスワードを覚えていない場合でも、通常の「送信」のすぐ横にある特別な「許可を求めるメール」ボタンをクリックして、アクションを実行できます。 [ ]ボタンのます。
  3. 次に、アクションを実行するかどうかを尋ねるハイパーリンクを含むリクエストが電子メールに送信されます。これはパスワードリセットのメールリンクに似ていますが、パスワードをリセットする代わりに、1回限りのアクションを実行しますます。
  4. 次に、ユーザーが[はい]をクリックすると、データを表示するか、アクションを実行するか、データを公開するかなどが確認されます。

コメントで述べたように、これは電子メールが侵害された場合には機能しませんが、パスワードをリセットしたくないという@joachimのコメントに対処します。最終的には、パスワードのリセットを使用する必要がありますが、必要に応じて、より便利なときに、または管理者や友人の助けを借りて、パスワードをリセットすることができます。

このソリューションのひねりは、サードパーティの信頼できる管理者にアクションリクエストを送信することです。これは、高齢者、精神障害者、非常に若いユーザー、または混乱しているユーザーの場合に最適です。もちろん、これには、これらの人々が彼らの行動をサポートするための信頼できる管理者が必要です。


1

ユーザーのパスワードを通常どおりソルトアンドハッシュします。ユーザーをログインさせるとき、ユーザーのパスワード(ソルト/ハッシュ後)を許可するだけでなく、ユーザーが文字どおりに入力したものも照合できるようにします。

これにより、ユーザーは秘密のパスワードを入力できますが、パスワードのソルト/ハッシュバージョンを入力することもできます。これは、誰かがデータベースから読み取るものです。

基本的に、ソルト/ハッシュされたパスワードも「プレーンテキスト」パスワードにします。


ユーザーが直接入力したものを、データベースに保存されているハッシュ化されたパスワードと比較する必要があるのはなぜですか。それはどのような機能を提供しますか?また、これを行う場合、ユーザーが入力したパスワードとデータベースからハッシュされたパスワードを一定時間で比較する機能を適用することが非常に重要です。それ以外の場合、タイミングの違いに基づいてハッシュされたパスワードを決定することはほぼ自明です。
Artjom B.

1
@ArtjomB。この質問では、ユーザーのパスワードを保護しながら、忘れたパスワードを入力することでカスタマーサポート(CS)がユーザーに話しかけたりメールで送信したりする方法を尋ねます。ハッシュされたバージョンをプレーンテキストのパスワードとして使用できるようにすることで、CSはそれを読み取って、ユーザーに忘れたパスワードの代わりにそれを使用させることができます。CSは、これを使用してユーザーとしてログインし、タスクを通じてユーザーを支援することもできます。また、入力して使用するパスワードがハッシュ化されるため、自動化されたパスワードを忘れたシステムに慣れているユーザーを保護することもできます。
エリオット2017年

そうですか。質問全体を読んでいません。システム全体の簡単な破損を防ぐために、一定時間の比較を使用する必要があります。
Artjom B.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.