以前に使用された10個のパスワードに4文字の連続が含まれている場合、新しいパスワードを許可しない

私は自分のパスワードをアカウント(大規模な機関)に変更することを余儀なくされました、そしてそれは新しいパスワードが10の以前に使用されたパスワードにあった一連の4連続文字を含むことができないという規則を持っていました。たとえば、現在のパスワードのシーケンスが "abcd"の場合、次の10個のパスワードに "abcd"を含めることはできません。

私の最初の推測は、その機関が復号化可能な方法で10個の以前のパスワードを保存していることです。私の質問はこうです:彼らが安全な方法でそのような手順をすることができる方法はありますか?

別の場所にユーザーから提供される現在のパスワードと比較できますが、以前の10個のパスワードは扱われません。

1
ru de

4 答え

Yes this can be implemented securely through the use of an HSM. there's an existing question on this here

3
追加された
よく質問はログインではなく、パスワードの変更に特に関連していました。通常、パスワードの変更は、ユーザーが正しい初期認証を入力した後(またはパスワードのリセットなどの他の検証プロセスを経た後)にのみ提供されます。推測する必要はありません。通常、銀行ではHSMは数層後ろにあり、アカウントのロックアウトはフロントエンドのアプリケーションで処理されます。サーバー層。
追加された 著者 Wally Lawless,
HSMへのクエリも制限される必要があることを追加する価値があるかもしれません - おそらくそれはおそらくHSM自体の中でレート制限することによってです。さもなければ、Sjoerdの答えの論理はまだうまくいく(彼らは4文字の部分列をブルートフォースして再構築する可能性がある)。
追加された 著者 geekbackpacker,
素晴らしい、ありがとう! :)
追加された 著者 geekbackpacker,

簡単で安全な方法は、ユーザーが新しいパスワードを宣言した時点で古いパスワードのみを登録することです。新しいパスワードを入力する方法としては、最初に古いパスワードが必要になるため可能です。

このようにして、古いパスワードリストが危険にさらされたとしても、古いパスワードはポリシーがアクティブにならないために保証されるため、攻撃者はそれを使用してシステムを接続することはできません。私はそれがHSMなしでいくつかの組織で実際に使用されているというコインを賭けることができます...

残念ながら、人間のユーザーがいる現実の世界では、これは無害な方法ではありません。ユーザーが11個のパスワードのリストを使用する場合、攻撃者は1、2か月待つだけで、パスワードは10個以下になるはずです。試みる…たとえ方針が尊重されたとしても!

とにかく、その少数のユーザーが10種類の good パスワードを作成してそれらを覚えていることができるならば、私見最高の問題です。そのため、ユーザーが自分の11個のパスワードのリストを書き留める危険性が高く、セキュリティチェーンの中で最も弱い場所は、古いパスワードリスト用の安全な記憶域ではなくなっていますリストを含む引き出し...

ユーザビリティを犠牲にしてくるセキュリティはセキュリティを犠牲にしています...

1
追加された

これは安全に実装できません。

パスワードに4文字が含まれているかどうかを確認できるのであれば、攻撃者もそうです。パスワード全体をブルートフォースするのではなく、攻撃者は一度に4文字を推測することができます。

1
追加された
HSM(銀行のような大規模な組織で使用されている)では、部分的なパスワードチェックを安全に行うことができます。
追加された 著者 Wally Lawless,

明らかに、彼らはあなたの現在のパスワードと、あなたが新しいパスワードにしたいものを知っています。

私の古い店では、強力なパスワードを実装するためのカスタムPAMモジュールを作成しました。過去のパスワードをどのように処理したかは、過去N件のシャドウテーブルから暗号化されたハッシュを保存することでした。新しいパスワードを操作して、最後のN個のハッシュのいずれかに一致するかどうかを確認して、新しい暗号化パスワードハッシュを生成します。

上記のことはあなたが注目しているチェックの複雑さを簡単には処理できないだろうと確信しています。そのため、ユーザーが過去のパスワードを確認する方法はおそらくいくつかありますが、その解決策が十分に安全であることを願います。

1
追加された