抽出(Extract)は、入力鍵素材をソルトとともに圧縮して擬似ランダム鍵 PRK = HMAC(salt, IKM) にします。拡張(Expand)はそれを引き延ばして出力鍵素材 OKM = T(1) ‖ T(2) ‖ … を生成します。ここで T(i) = HMAC(PRK, T(i−1) ‖ info ‖ i) であり、出力できる長さはハッシュ長の 255 倍(SHA-256 では 8,160 バイト)までです。info 文字列で用途ごとに鍵を分けることで、同じ秘密から同じ鍵が重複して得られないようにします。
TLS 1.3 の鍵スケジュールは、すべてラベル付きの HKDF(HKDF-Expand-Label、RFC 9846 §7.1)で構成されています。HPKE、Signal、Noise、MLS、QUIC でも使われており、NIST も SP 800-56C Rev. 2 で同じ 2 段階の構成を承認しています。
HKDF はパスワードハッシュではありません。設計上高速なので、エントロピーの低いパスワードを入力しても推測に対する保護にはなりません。パスワードには Argon2id、scrypt、PBKDF2 のいずれかを、エントロピーの高い秘密情報には HKDF を使ってください。