パスワードがハッシュされて保存されている場合、パスワードをリセットしようとすると、パスワードが最後のパスワードと似ていることをコンピューターはどのように知るでしょうか?


11

パスワードがハッシュされて保存されている場合、パスワードをリセットしようとすると、パスワードが最後のパスワードと似ていることをコンピューターはどのように知るでしょうか?1つはハッシュ化され、元に戻すことはできないため、2つのパスワードはまったく異なりませんか?


5
コンピューターは、それらが類似しているかどうかを知りませんそれらが同一であるかどうかのみを確認します(新しいパスワードをハッシュし、元のパスワードの保存されたハッシュと比較することにより)。
ロバートハーヴェイ

ただし、パスワードの特性の一部をキャプチャするハッシュを生成する方法があります。ただし、パスワードクラッカーはそのような情報を利用してパスワードのブルートフォース検索を何桁も絞り込むことができるため、このようなハッシュの可用性は大きな抜け穴です。
rwong

パスワードを比較する必要がある場合は、ハッシュを使用しません。それは可能性がありますあなたは、AESまたはsimetric暗号化の他の形式を使用します
LAIV

回答:


15

これを実装する1つの方法は、パスワードをリセットする場合、通常は古いパスワードも入力するように求められます。その時点では、両方のパスワードがプレーンテキスト形式であるため、単純に通常の文字列類似性比較をその状況で使用できます。

これを実装する別の方法は、パスワードを正規化することです。たとえば、アクセント記号付き文字は最も近い英語のアルファベットに正規化されます。さまざまな方法で正規化されていました。これにより、ハッシュメカニズムが不特定の量だけ弱くなることに注意してください。これはセキュリティのベストプラクティスとは考えません。


「パスワードのリセット」とは、一般に「パスワードを忘れてリセットしたい」ことを指すため、古いパスワードを求められることはありません。ただし、答えの後半は正確です。
カサブランカ

3
@casablanca:X日ごとにパスワードを「リセット」するシステムがたくさんあります。...
whatsisname

1
@casablanca:前半も正確です。「パスワードのリセット」には両方の意味があり、用語はそれほど厳密ではありません。私たちはOPに彼らが正確に何を意味したのか尋ねる必要があります。
Doc Brown

12

簡単な答えは、安全なシステムはそれらが類似しているかどうかを知らないということです。

ただし、一部のシステムでは、新しいパスワードが古いパスワードまたはそれに類似することを防ぐために、特定のパスワードのセキュリティを意図的に低下させています。費用対効果のトレードオフは、誰かが類似情報を使用して現在のパスワードを悪意を持って解読する前に、新しいパスワードが作成されることです。

  • 使用したパスワードの最後のN個のハッシュが保存される場合があります。古いパスワードを入力すると、新しいパスワードハッシュが古いパスワードハッシュと一致するため、明らかです。
  • 使用されるハッシュメカニズムにサムネイルメカニズムが含まれている場合や、ハッシュされたサムネイルがハッシュと一緒に保存される場合があります。ハッシュサムネイル内の基本的に特定のビットパターンは、基になる値の非常に類似したビットパターンのセットを表します。
  • 同様に、彼らはあなたのパスワードに関する統計を脇に置いているかもしれません、それは類似性の正確な測定を可能にするでしょう。

一般に、これらの手法はそれぞれ、パスワードのセキュリティを低下させます。

  • 古いパスワードを保持すると、それらのパスワードのセキュリティが低下します。これらのパスワードのいずれかがクラックされた場合、現在のパスワードがパスワードに似ている可能性が高く、ほとんどの人は数字を変更するだけです。

  • サムネイルと統計は、推測をハッシュして比較しようとするよりも、不正なパスワード推測をより迅速に排除できます。これは、ハードウェアアクセラレーションを使用しても、ハッシュ、特にセキュアハッシュの計算と労力が複雑になるためです。「間違いなく」または「たぶん」という単純な計算では、これらの推測のほとんどを排除できますが、すべての類似性チェックは、古いものとはまったく異なるまったく新しいパスワードを使用するのではなく、類似のパスワードの使用を停止することを目的としています。

要するに、現在のパスワードと古いパスワードとの類似性の指標を示すサイトには注意してください。新しいパスワードが古いパスワードであると言わない限り。


7

パスワードがハッシュされて保存されている場合、パスワードをリセットしようとすると、パスワードが最後のパスワードと似ていることをコンピューターはどのように知るでしょうか?1つはハッシュ化され、元に戻すことはできないため、2つのパスワードはまったく異なりませんか?

ユーザーが入力したパスワードから複数の同様のパスワードを生成し、それらのハッシュのいずれかが古いパスワードのハッシュと一致するかどうかを確認します。


はい、人々は自分が行う変更の種類について非常に予測可能であるため、これはそれを行うにはまともな方法かもしれません。
サイボーグ

それは、最短のパスワードのみで必要な処理の点で、すぐに爆発します。だから私はこれが本当の練習だとは思わない。
マーティンマート

ある場所で長い間働いていましたが、パスワードを忘れたときはsupersecurepassword39でした。(最後の2桁のみが真です)。前の番号が使用されたかどうかを確認するために、パスワードの先頭または末尾が数字かどうかは明らかです。
gnasher729

@MartinMaatでもいいですか?元のパスワードから文字を1つずつ除外することで、数字の追加や増加などを検出できます。つまり、「パスワード」の場合、「assword」(heehee)、「pssword」、「pasword」などをハッシュします。それぞれの256の順列を試す必要があるため、これらの弱い持ち物を使用することもできます。セカンダリハッシュをブルートフォースする場合。(ランダムな順序でそれらを保存し、どの文字がどの文字で省略されているかわからない場合は、各文字の256 * Nです。)
ミリムース

Nがパスワードの長さの場合、新しいパスワードの設定はN倍になりますが、ハッシュよりもはるかに安価な類似性チェックは含まれません。しかし、ユーザーがサインインするたびにパスワードをハッシュします。これはおそらくパスワードの変更よりもはるかに頻繁に発生するため、追加の負荷はそれほど顕著ではないでしょう。
ミリムース

2

別のパターンは、システムがパスワードの特徴的なサブセットをハッシュし、それらのハッシュを保存して、新しいパスワードのサブセットが古いパスワードのいずれかに一致するかどうかを確認することです。つまり、パスワード:「Admin2018」&サブセット:「Admin」=「Admin2019」を入力できません新しいもの。


1

1つの方法は、過去5つのハッシュされたパスワードを「パスワード履歴」などのテーブルに保存し、ユーザーが新しいパスワードを設定しようとすると、それをハッシュし、テーブル内のハッシュされたパスワードと比較します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.