web-dev-qa-db-ja.com

グローバルに一意のパスワードが推奨されない理由の引用

パスワードポリシーに関する意見の不一致で自分の立場を裏付ける信頼できる情報源を探しています。

システムのユーザー識別/認証プロセスについて、クライアントと意見の相違があります。その要点は、各ユーザーにグローバルに一意のパスワードを持たせたいということです(つまり、2人のユーザーが同じパスワードを持つことはできません)。私はこれに反対する明白な議論をすべて実行しました(これはセキュリティの脆弱性であり、識別と認証を混同します、無意味ですなど)が、彼らはこのアプローチに何も問題はないと主張しています。

私はこれについて権威のある(または半権威のある、あるいは単に独立した)意見を探してさまざまなグーグル検索をしましたが、何も見つかりません(主にそれは警告する価値がないように見えるほど明白な偽物です私が知る限り)。誰かが私をそのような独立した意見に向けることができますか?

毎日のWTF記事 を見つけましたが、(ユーモラスすぎて権威がないことを除けば)上記の問題に悩まされています-このアプローチの非推奨は非常に自明です理由を説明する価値はないようです。

明確にするために、私は問題を理解し、クライアントに説明することさえできますが、クライアントはそれらを受け入れることに消極的であるため、独立したおよび/または信頼できる情報源を求めています。

これが悪い考えであることを確認する独立したおよび/または権威のある情報源へのポインタはありがたいことに受け取った...

9
gkrogers

この記事は、システムが情報、つまり他の人のパスワードを漏らしていることを指摘しています。それがあなたのパスワードを拒否するたびに、あなたはシステム上の誰かがそのパスワードを持っていることを知っています!!!

実際のパスワードではなく、ソルトハッシュ(またはその他)のみを保存するため、このような状況を課すのにどれほどの費用がかかるかという観点からアプローチできるかもしれません。

ユーザーが同じパスワードを共有しているかどうかをどのように検出できますか?これは、パスワードを保存していることを意味しますか?

より良い答えが得られると思いますが、認証の問題をもっと広く見る必要があります。ウィキペディアのリンクから始めて、最初に基本的な問題を理解してください。中央データベース(AAA)で実際のパスワードを処理したいとは思わない。

6
Bradley Kreider

rox0rは良い点を示しています-グローバルに一意のパスワードの非推奨について述べている信頼できる記事がない理由の1つは、areである他のものの組み合わせが必要なことです記事で覆われています。あなた しない 保存 ユーザー パスワード 可逆的に

パスワードを保存しないと、新しいユーザーがパスワードを複製しているかどうかを判断する方法はありません ブルームフィルター を使用するなどのトリッキーなことをしない限り、それは間違いなく不当な複雑さを追加し、攻撃対象領域を増やします。認証や暗号化を賢くしようとするのは悪い考えです。

1
user502

彼らは、グローバルに一意のパスワードを各ユーザーに割り当てることについて話しているのですか、それともユーザーがパスワードを変更したときにそれが一意であることを確認することについて話しているのですか?

ユーザーがパスワードの変更を許可されている場合、UIは、取得したエラーのために他のパスワードを公開します。明らかにbadのことであり、セキュリティの目標に反する可能性があります。

関連する注記として、ハードウェアまたはソフトウェアトークンを使用したRSA2要素暗号化に関心があるかもしれません。トークンは、時間依存の一意のパスワードを生成し、その後にPINコードが続きます。これにより、各ユーザーに一意のパスワードが提供されます。

Active DirectoryまたはASP.NETメンバーシップを使用している場合、これは簡単です。

alt text

RSAを使用すると、クライアントの要求を満たし、プロセスのセキュリティを強化できます。その瞬間、このソリューションにアプローチする他の方法は考えられません...

1

グローバルに一意のパスワード自体は悪くありません。傷つく可能性があるのは、そのプロパティがどのように維持されているかです。グローバルに一意のパスワードを取得するには、主に2つの方法があります。

  1. 幸運。
  2. パスワードストレージを弱くする何かを実装することによって。

「運」は安全です。高い確率で、ユーザーは個別のパスワードを選択します。可能なパスワードのスペースが縮小した場合、つまりユーザーが弱いパスワードを選択した場合、衝突の可能性が高くなります。

ユーザーが生成したパスワードを拒否することは、選択したパスワードが同僚の1人のパスワードでもあることをユーザーに通知することを意味する場合に限り、パスワードの単一性を保証する他のすべてのものは安全ではありません。実際の実装も非常に非効率的であるか、塩の使用を妨げます。基本的に、システムが特定のパスワードが使用されているかどうかを効率的に検出できる場合、攻撃者はそれを使用してすべてのパスワードを並行して解読する可能性があります。やむを得ない。

ただし、顧客は常に正しいです。彼が愚かなことをすることを主張する場合、それを防ぐことはできません。彼はお金を払っている人なので、最後の言葉を手に入れます。あなたができる最善のこと(そしてそれはあなたができる最小でもあります)は彼のアプローチの危険性について彼に警告する正式なメモを書くことです。これはあなたの「アドバイスを提供する義務」に準拠しており、ハイジンクが続いたときに合法的にあなたを保護します。

1
Thomas Pornin

あなたの質問を読み直した後、私は2番目の答えを投稿することにしました:

しかし、彼らはこのアプローチには何の問題もないと主張しています。

これは議論の獣であり、それは宗教的な議論に隣接しています。彼らの主張を改ざんする方法はありますか?そうでない場合は、あきらめます[〜#〜] now [〜#〜]

この文脈で「間違っている」とはどういう意味ですか?セキュリティに関するほぼすべての決定はトレードオフです。彼らの主な目標が全員が一意のパスワードを持っていることを確認することである場合、彼らは「正しい」可能性があります。

彼らの目標がセキュリティである場合、要件によってシステムがより安全になる方法を示す責任は彼らにあります。少なくとも、システムの安全性が低下しないことを示し、実装のコストを正当化する必要があります。

1
Bradley Kreider