ハッシュ形式識別の知識マップ(知識グラフ)
type: Dataset
description: この記事は、ログやDBに残るハッシュ文字列の方式を見分ける手順を扱っており、bcryptやArgon2のように先頭に方式名を置くMCFやPHC string format系の保存形式は文字列だけでほぼ特定できる一方、プレーンな16進やBase64だけの文字列は長さと文字種から候補を絞ることしかできないと整理しています。sha256crypt・sha512crypt・md5cryptはいずれもcrypt(3)関数の出力形式でSHA-256・SHA-512・MD5を反復適用しており、openssl passwdで同じsaltを与えて再計算すれば形式を検証できます。また64桁の16進はSHA-256だけでなく複数のアルゴリズムが候補になるため長さだけでの断定は避けるべきであり、NTハッシュはMD5ではなくMD4をもとに計算される点でNTLMとも区別すべきだとしています。候補方式が分かったあとはhashcatのモード番号に翻訳して調査を進めます。

パスワードハッシュ文字列
type: Concept
definition: パスワードを保存する目的で、salt・rounds・メモリコストなどのパラメータをハッシュ値本体と一緒に1つの文字列へ埋め込んで表現する保存形式の総称。
alternative label: password hash
alternative label: パスワードハッシュ形式

長さだけによる誤判定
type: Concept
definition: 文字列の長さだけを根拠にハッシュアルゴリズムを断定してしまう誤りで、同じ出力長を持つ複数の候補アルゴリズムが存在するために生じる。
alternative label: 64 hex = SHA-256の決め打ち
alternative label: 長さだけでの断定

crypt(3)
type: Concept
definition: Unixのパスワードハッシュ関数そのものを指す、Cライブラリの関数名。
alternative label: crypt関数
alternative label: crypt(3)関数
uses: MCF(Modular Crypt Format)

MCF(Modular Crypt Format)
type: Concept
definition: 先頭に$id$を置いて方式を示す書き方の通称で、単一の仕様書ではなくcrypt(3)系実装が増える中で慣習として固まった書式。
alternative label: Modular Crypt Format
alternative label: $id$形式
broader: パスワードハッシュ文字列
prevents: 長さだけによる誤判定

PHC string format
type: Concept
definition: MCFを整理し直し、バージョンやパラメータの書き方まで明文化した仕様。
alternative label: Password Hashing Competition string format
broader: MCF(Modular Crypt Format)
succeeds: MCF(Modular Crypt Format)

Argon2
type: Concept
definition: Password Hashing Competitionの優勝アルゴリズムで、Argon2id/Argon2i/Argon2dの3種の変種を持つパスワードハッシュ方式。
alternative label: Argon2id
alternative label: Argon2i
alternative label: Argon2d
broader: PHC string format
uses: PHC string format

bcrypt
type: Concept
definition: Blowfish暗号を基にしたパスワードハッシュアルゴリズムで、$2a$/$2b$/$2y$という接頭辞と2桁のコストパラメータを持つ文字列で表現される。
alternative label: $2a$
alternative label: $2b$
alternative label: $2y$
broader: MCF(Modular Crypt Format)
uses: MCF(Modular Crypt Format)
configured by: hashcat

sha256crypt
type: Concept
definition: crypt(3)系の$5$という接頭辞を持つ、SHA-256を反復適用するUnix系パスワードハッシュ形式。
alternative label: $5$形式
broader: MCF(Modular Crypt Format)
uses: crypt(3)
uses: SHA-256
verified by: openssl passwd

sha512crypt
type: Concept
definition: crypt(3)系の$6$という接頭辞を持つ、SHA-512を反復適用するUnix系パスワードハッシュ形式。
alternative label: $6$形式
broader: MCF(Modular Crypt Format)
uses: crypt(3)
uses: SHA-512
verified by: openssl passwd
configured by: hashcat

md5crypt
type: Concept
definition: crypt(3)系の$1$という接頭辞を持つ、MD5を反復適用するUnix系パスワードハッシュ形式。
alternative label: $1$形式
broader: MCF(Modular Crypt Format)
uses: crypt(3)
uses: MD5
verified by: openssl passwd

SHA-256
type: Concept
definition: SHA-2ファミリーのうち256ビット(32バイト)の出力を生成するハッシュアルゴリズムで、NIST FIPS 180-4で規定される。
alternative label: SHA-256メッセージダイジェスト
configured by: hashcat

SHA-512
type: Concept
definition: SHA-2ファミリーのうち512ビット(64バイト)の出力を生成するハッシュアルゴリズムで、NIST FIPS 180-4で規定される。
alternative label: SHA-512メッセージダイジェスト

MD5
type: Concept
definition: 128ビット(16バイト)のハッシュ値を生成するメッセージダイジェストアルゴリズムで、RFC 1321で規定される。
alternative label: MD5メッセージダイジェスト
configured by: hashcat

16進表現(hex encoding)
type: Concept
definition: バイト列を0-9a-fの16進文字で表現するエンコーディングで、文字数は元のバイト長の2倍になる。
alternative label: hex
alternative label: 16進数表現

NTハッシュ
type: Concept
definition: MD4(UNICODE(パスワード))として計算される、パスワードの一方向ハッシュ。NTLM認証の資格情報の出発点で、NTLMv2の応答鍵もここから導出される。
alternative label: NTOWF
alternative label: MD4ハッシュ
uses: MD4
configured by: hashcat

MD4
type: Concept
definition: 128ビットのハッシュ値を生成する、MD5の前身にあたるメッセージダイジェストアルゴリズム。NTハッシュの計算に使われる。
alternative label: MD4メッセージダイジェスト

NTLM
type: Concept
definition: パスワードの一方向ハッシュを使ったチャレンジ/レスポンス方式の認証プロトコル群(LANMAN・NTLMv1・NTLMv2を含む)。相互認証を持たず、サーバーが本物であると仮定できる環境向けに設計されている。
alternative label: NTLM認証
alternative label: Windows Challenge/Response
alternative label: NTLM Security Support Provider
uses: NTハッシュ

openssl passwd
type: Concept
definition: 指定したsaltと平文からcrypt系パスワードハッシュ文字列を再計算できるOpenSSLのコマンド。
alternative label: openssl-passwd

hashcat
type: Concept
definition: GPUを使ってパスワードハッシュを解析するツールで、対象の方式をモード番号(-m)で指定する。

PBKDF2
type: Concept
definition: HMACを繰り返し適用して共有秘密から鍵を導出するアルゴリズムで、RFC 8018(PKCS #5)で規定される。
alternative label: PBKDF2-HMAC-SHA256
alternative label: Password-Based Key Derivation Function 2
broader: パスワードハッシュ文字列
configured by: hashcat

scrypt
type: Concept
definition: メモリを大量に必要とする設計のパスワードハッシュ/鍵導出関数で、RFC 7914で規定される。
alternative label: scrypt KDF
broader: パスワードハッシュ文字列
configured by: hashcat

LDAPスキームプレフィックス({SHA}等)
type: Concept
definition: {SHA}/{SSHA}/{MD5}/{SMD5}のように、方式名を波括弧で前置してハッシュ値を表現するLDAP/Apache系の表記法。
alternative label: RFC 2307 scheme
alternative label: {SHA}
alternative label: {SSHA}
prevents: 長さだけによる誤判定

Base64(RFC 4648)
type: Concept
definition: バイト列を64文字の集合で表現するRFC 4648のエンコーディング方式。
alternative label: Base64url
alternative label: RFC 4648 Base64

SHA-1
type: Concept
definition: 160ビットの出力を生成するハッシュアルゴリズム。
alternative label: SHA-1メッセージダイジェスト

subject: crypt(3)
predicate: uses
object: MCF(Modular Crypt Format)
description: crypt(3)系実装の出力は、saltやroundsなどのパラメータをMCF系の$id$のようなprefix付き書式に埋め込んで表現する
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: PHC string format
predicate: succeeds
object: MCF(Modular Crypt Format)
description: PHC string formatはMCFの書き方を整理し直し、バージョンとパラメータの記法まで定めた仕様である
evidence: phc-string-format
verified at: 2026-08-01
certainty: established

subject: Argon2
predicate: uses
object: PHC string format
description: Argon2はPHC string formatに従い$argon2id$v=19$m=...のような文字列でパラメータを表現する
evidence: phc-winner-argon2
verified at: 2026-08-01
certainty: established

subject: bcrypt
predicate: uses
object: MCF(Modular Crypt Format)
description: bcryptは$2a$/$2b$/$2yという接頭辞でコストパラメータを示す、MCF系の書式を使う
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: sha256crypt
predicate: uses
object: crypt(3)
description: sha256cryptはUnixのcrypt(3)関数が出力する書式の一つとして計算される
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: sha512crypt
predicate: uses
object: crypt(3)
description: sha512cryptはUnixのcrypt(3)関数が出力する書式の一つとして計算される
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: md5crypt
predicate: uses
object: crypt(3)
description: md5cryptはUnixのcrypt(3)関数が出力する書式の一つとして計算される
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: sha256crypt
predicate: uses
object: SHA-256
description: sha256cryptはSHA-256を複数ラウンド反復適用してハッシュを計算する
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: sha512crypt
predicate: uses
object: SHA-512
description: sha512cryptはSHA-512を複数ラウンド反復適用してハッシュを計算する
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: md5crypt
predicate: uses
object: MD5
description: md5cryptはMD5を複数ラウンド反復適用してハッシュを計算する
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: 16進表現(hex encoding)
predicate: mayCause
object: 長さだけによる誤判定
description: 16進文字列は文字種と長さしか手がかりがなく、同じ長さの複数アルゴリズムが候補になるため長さだけで断定する誤りを招きやすい
evidence: rfc7693.html
verified at: 2026-08-01
certainty: context-dependent

subject: MCF(Modular Crypt Format)
predicate: prevents
object: 長さだけによる誤判定
description: 先頭に$id$を置くMCF系の書式は文字列だけで方式を特定できるため、長さだけに頼る誤判定を避けられる
evidence: crypt.5.en
verified at: 2026-08-01
certainty: established

subject: NTハッシュ
predicate: uses
object: MD4
description: NTハッシュはUTF-16LEでエンコードしたパスワードにMD4を適用して計算される(NTOWFv1(Passwd, User, UserDom) = MD4(UNICODE(Passwd)))
verified at: 2026-08-01
certainty: established

subject: NTLM
predicate: uses
object: NTハッシュ
description: NTLMはNTハッシュを鍵としてチャレンジ/レスポンス認証を行う
verified at: 2026-08-01
certainty: established

subject: sha512crypt
predicate: verifiedBy
object: openssl passwd
description: sha512crypt形式かどうかは、文字列中のsaltをopenssl passwd -6に渡して再計算し、出力が一致するかで確認できる
evidence: openssl-passwd
verified at: 2026-08-01
certainty: established

subject: sha256crypt
predicate: verifiedBy
object: openssl passwd
description: sha256crypt形式かどうかは、文字列中のsaltをopenssl passwd -5に渡して再計算し、出力が一致するかで確認できる
evidence: openssl-passwd
verified at: 2026-08-01
certainty: established

subject: md5crypt
predicate: verifiedBy
object: openssl passwd
description: md5crypt形式かどうかは、文字列中のsaltをopenssl passwd -1に渡して再計算し、出力が一致するかで確認できる
evidence: openssl-passwd
verified at: 2026-08-01
certainty: established

subject: MD5
predicate: configuredBy
object: hashcat
description: hashcatではMD5はモード番号0として指定する
evidence: https://hashcat.net/wiki/doku.php
verified at: 2026-08-01
certainty: established

subject: SHA-256
predicate: configuredBy
object: hashcat
description: hashcatではSHA-256はモード番号1400として指定する
evidence: https://hashcat.net/wiki/doku.php
verified at: 2026-08-01
certainty: established

subject: sha512crypt
predicate: configuredBy
object: hashcat
description: hashcatではsha512cryptはモード番号1800として指定する
evidence: https://hashcat.net/wiki/doku.php
verified at: 2026-08-01
certainty: established

subject: bcrypt
predicate: configuredBy
object: hashcat
description: hashcatではbcryptはモード番号3200として指定する
evidence: https://hashcat.net/wiki/doku.php
verified at: 2026-08-01
certainty: established

subject: NTハッシュ
predicate: configuredBy
object: hashcat
description: hashcatではAD由来のNTハッシュはモード番号1000として指定する
evidence: https://hashcat.net/wiki/doku.php
verified at: 2026-08-01
certainty: established

subject: PBKDF2
predicate: configuredBy
object: hashcat
description: hashcatではDjangoのPBKDF2-HMAC-SHA256形式はモード番号10000として指定する
evidence: https://hashcat.net/wiki/doku.php
verified at: 2026-08-01
certainty: established

subject: scrypt
predicate: configuredBy
object: hashcat
description: hashcatではscrypt系の保存形式はモード番号8900として指定する
evidence: https://hashcat.net/wiki/doku.php
verified at: 2026-08-01
certainty: established

subject: LDAPスキームプレフィックス({SHA}等)
predicate: uses
object: Base64(RFC 4648)
description: {SHA}/{SSHA}のような方式では、SHA-1やそのsalt付きdigestをBase64表現で埋め込む({CRYPT}のような素通し方式は対象外)
evidence: slappasswd.8.html
verified at: 2026-08-01
certainty: context-dependent

subject: LDAPスキームプレフィックス({SHA}等)
predicate: uses
object: SHA-1
description: {SHA}はApache/LDAP系でBase64化したSHA-1 digestを指すことが多い
evidence: slappasswd.8.html
verified at: 2026-08-01
certainty: context-dependent

subject: LDAPスキームプレフィックス({SHA}等)
predicate: prevents
object: 長さだけによる誤判定
description: {SHA}/{SSHA}のような波括弧の方式名プレフィックスも、文字列だけで方式を特定できるため長さだけに頼る誤判定を避けられる
evidence: slappasswd.8.html
verified at: 2026-08-01
certainty: established