既知の平文とハッシュを使用してソルトを計算しますか?

既知の平文とハッシュを使用してソルトを計算しますか?

ハッシュを生成するために md5 ハッシュを使用した Web アプリケーションで使用された文字列があります。ハッシュもあります。しかし、文字列の md5 がハッシュと一致しないので、ソルトが関係していると思われます。ソルトを判別するのに役立つソフトウェアはありますか?

答え1

標準のハッシュ関数 (例: /etc/shadow 内の UNIX パスワード) では、ソルトはハッシュの一部として保存されます。

保存されたハッシュ値をソルトとして渡すと、正しい結果が得られます。

/etc/shadow 内のハッシュ化されたパスワード値は、実際には $ で区切られたレコードです。たとえば、パスワード 'blarg' のハッシュは次のようになります。

$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

$で区切られた3つのフィールドがあり、

  1. ハッシュ関数(この場合は '1'、MD5 を表す)
  2. 塩(「KfcI/JTQ」)
  3. ハッシュ値(「b5VTf4i9Mnf6QFgLuVZNM0」)

mkpasswd を複数回使用するとハッシュが変更されます。

$ mkpasswd -m md5 blarg
$1$Gst52IWk$8ARVeSlpkcZOlyKV10Slu/

$ mkpasswd -m md5 blarg
$1$JeqRviA/$GnH/AvGnZEG9wLfJjiaAt1

ただし、上記のハッシュ値からソルト (つまり、2 番目のフィールド) を渡すことで、元のハッシュと照合することができます。

$ mkpasswd -m md5 -S KfcI/JTQ blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

パスワードハッシュ全体を渡すこともできます(ただし、ハッシュ関数は省略します)。

$ mkpasswd -m md5 -S KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0 blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

Linux では、ハッシュ タイプは /etc/login.defs で制御できます。これを変更するときは十分に注意してください。システムから完全に締め出されてしまう可能性があります。マニュアル ページを注意深く読み、特に MD5_CRYPT_ENAB と ENCRYPT_METHOD の見出しを確認することをお勧めします。

関連情報