web-dev-qa-db-ja.com

既知のソルトでハッシュをクラックすることは可能ですか?はいの場合はどうですか?

ハッシュのソルトがわかっている場合、クラックしてハッシュからパスワードを抽出することは可能ですか?はいの場合、どのように?

4
paU1i

ハッシュ関数は一方向にのみ進むように設計されています。パスワードを持っている場合は、簡単にハッシュに変換できますが、ハッシュを持っている場合、元のパスワードを取得する唯一の方法はブルートフォースであり、すべての可能なパスワードを試して、ハッシュを生成するパスワードを見つけます。持ってる。ソルトが非常に長いと仮定すると、ソルトを知らないとクラックがほぼ不可能になります(ソルトがパスワードに追加する長さが増えるため)が、ソルトを知っていてもブルートフォースを実行する必要があります。

例として、パスワードが「秘密」であり、ソルトが「535743」であるとします。ソルトがパスワードの末尾に単に追加される場合、解読されるハッシュは文字列「secret535743」のハッシュになります。ハッシュを知らなければ、 "secret535743"に到達するまですべての可能性を試す必要があります。これは、その長さのためにかなり時間がかかります(実際のソルトはこれよりもはるかに長いことに注意してください)。

しかし、ソルトが535743であり、パスワードの最後に追加されていることがわかっている場合は、すべてを試すのではなく、「a535743」、「b535743」、「c535743」などを試します。これにより、数が大幅に減少します。正しい文字列に到達するまで試行しなければならない可能性の1つ。

そうは言っても、通常は両方が同じ場所に格納されているため、ハッシュを知っていてもソルトを知っていないという状況は非常にまれです。

7
tlng05

クリアテキストフレーズをハッシュするときにソルトがどのように使用されるかを知っている場合は、ブルートフォースが簡単になるだけです。ソルトなしでフレーズをチェックするだけなので、チェックする必要のある可能性の数は劇的に減少します。それでも、さまざまな文字を含む長いフレーズの場合は、かなりの時間がかかります。

1
Christiaan