知識マップ: ハッシュ文字列から方式を見分ける実務手順

記事「ハッシュ文字列から方式を見分ける実務手順」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事は、ログや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のモード番号に翻訳して調査を進めます。

ハッシュ形式識別の知識マップハッシュ文字列の判定手がかりとして接頭辞ベースの保存形式であるMCF・PHC string formatと、文字種・長さだけによる推定がどう関係し、crypt(3)系のmd5crypt・sha256crypt・sha512crypt、bcrypt、Argon2などの具体的な形式や、NTハッシュとNTLMの違い、hashcatやopenssl passwdによる検証手段までを示す図利用するの後継利用する利用する利用する利用する利用する利用する利用する利用する原因になり得る防止する利用する利用するで確認できるで確認できるで確認できるで構成できるで構成できるで構成できるで構成できるで構成できるで構成できるで構成できる利用する利用する防止するパスワードハッシュ文字列長さだけによる誤判定crypt(3)MCF(Modular Crypt Format)PHC string formatArgon2bcryptsha256cryptsha512cryptmd5cryptSHA-256SHA-512MD516進表現(hex encoding)NTハッシュMD4NTLMopenssl passwdhashcatPBKDF2scryptLDAPスキームプレフィックス({SHA}等)Base64(RFC 4648)SHA-1

概念間の関係(全27件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

パスワードハッシュ文字列
パスワードを保存する目的で、salt・rounds・メモリコストなどのパラメータをハッシュ値本体と一緒に1つの文字列へ埋め込んで表現する保存形式の総称。
長さだけによる誤判定
文字列の長さだけを根拠にハッシュアルゴリズムを断定してしまう誤りで、同じ出力長を持つ複数の候補アルゴリズムが存在するために生じる。
crypt(3)
Unixのパスワードハッシュ関数そのものを指す、Cライブラリの関数名。
PHC string format
MCFを整理し直し、バージョンやパラメータの書き方まで明文化した仕様。
Argon2
Password Hashing Competitionの優勝アルゴリズムで、Argon2id/Argon2i/Argon2dの3種の変種を持つパスワードハッシュ方式。
bcrypt
Blowfish暗号を基にしたパスワードハッシュアルゴリズムで、$2a$/$2b$/$2y$という接頭辞と2桁のコストパラメータを持つ文字列で表現される。
sha256crypt
crypt(3)系の$5$という接頭辞を持つ、SHA-256を反復適用するUnix系パスワードハッシュ形式。
sha512crypt
crypt(3)系の$6$という接頭辞を持つ、SHA-512を反復適用するUnix系パスワードハッシュ形式。
md5crypt
crypt(3)系の$1$という接頭辞を持つ、MD5を反復適用するUnix系パスワードハッシュ形式。
16進表現(hex encoding)
バイト列を0-9a-fの16進文字で表現するエンコーディングで、文字数は元のバイト長の2倍になる。
MCF(Modular Crypt Format)
先頭に$id$を置いて方式を示す書き方の通称で、単一の仕様書ではなくcrypt(3)系実装が増える中で慣習として固まった書式。
NTハッシュ
MD4(UNICODE(パスワード))として計算される、パスワードの一方向ハッシュ。NTLM認証の資格情報の出発点で、NTLMv2の応答鍵もここから導出される。
NTLM
パスワードの一方向ハッシュを使ったチャレンジ/レスポンス方式の認証プロトコル群(LANMAN・NTLMv1・NTLMv2を含む)。相互認証を持たず、サーバーが本物であると仮定できる環境向けに設計されている。
MD5
128ビット(16バイト)のハッシュ値を生成するメッセージダイジェストアルゴリズムで、RFC 1321で規定される。
SHA-256
SHA-2ファミリーのうち256ビット(32バイト)の出力を生成するハッシュアルゴリズムで、NIST FIPS 180-4で規定される。
PBKDF2
HMACを繰り返し適用して共有秘密から鍵を導出するアルゴリズムで、RFC 8018(PKCS #5)で規定される。
scrypt
メモリを大量に必要とする設計のパスワードハッシュ/鍵導出関数で、RFC 7914で規定される。
LDAPスキームプレフィックス({SHA}等)
{SHA}/{SSHA}/{MD5}/{SMD5}のように、方式名を波括弧で前置してハッシュ値を表現するLDAP/Apache系の表記法。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。