web-dev-qa-db-ja.com

パスワードのハッシュに使用されるハッシュアルゴリズムを見つける方法は?

有効なパスワードがあり、ハッシュを確認できます(/ etc/passwd)。一致するものが見つかるまで手動で別のアルゴリズムを試行せずに、パスワードのハッシュに使用されるハッシュアルゴリズムを見つけるにはどうすればよいですか?

11
Dorin Botan

これは crypt(3)のマンページ に記載されていますviashadow(5)のマンページ 、または passwd(5) 's 。これらのリンクは、最新のLinuxベースのシステムに適しています。説明があります:

saltが "$ id $"で始まり、オプションで "$"で終了する文字列が続く文字列である場合、結果は次の形式になります。

_$id$salt$encrypted
_

idは、DESの代わりに使用される暗号化方式を識別し、これにより、残りのパスワード文字列の解釈方法が決定されます。idの以下の値がサポートされています。

_ID  | Method
─────────────────────────────────────────────────────────
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)
_

bcryptとも呼ばれるBlowfishは、接頭辞_2_、_2b_、_2x_、および_2y_でも識別されます( を参照) PassLibのドキュメント )。

したがって、ハッシュされたパスワードが上記の形式で格納されている場合、id;を見ると、使用されているアルゴリズムを見つけることができます。それ以外の場合は、cryptのデフォルトDESアルゴリズム(13文字のハッシュを使用))、または「大きな」crypt 's DES( 128文字のパスワードをサポートするように拡張され、ハッシュの長さは最大178文字です)、またはBSDI拡張DES(接頭辞___の後に19文字のハッシュが続く)。

一部のディストリビューションでは、 libxcrypt を使用しており、 documents をサポートするメソッドがさらにいくつかあります。

  • y:yescrypt
  • gy:gost-yescrypt
  • _7_:scrypt
  • _sha1_:sha1crypt
  • _md5_:SunMD5

他のプラットフォームは他のアルゴリズムをサポートしているため、そこでcryptマンページを確認してください。たとえば、 OpenBSDのcrypt(3) は、id“ 2b”を使用して識別するBlowfishのみをサポートしています。

27
Stephen Kitt