PBKDF2
#Fleeting_Notes
PBKDF2(Password-Based Key Derivation Function)
関連ドキュメント
PKCS #5
RFC 8018 - PKCS #5: Password-Based Cryptography Specification Version 2.1
SP 800-132 Recommendation for Password-Based Key Derivation: Part 1: Storage Applications
code:memo
# 数学的な定義
derived_key = pbkdf2(
PRF, # 疑似ランダム関数(PseudoRandom Function)
P, # 元のパスワード(バイト列)
S, # ソルト(ランダムなバイト列)
c, # 反復回数(例:100,000)
dkLen, # 出力する鍵の長さ(バイト)
)
# ライブラリであるシグネチャ
derived_key = pbkdf2(
hash_function # ハッシュ関数(SHA-256など)
password, # 元のパスワード(バイト列)
salt, # ソルト(ランダムなバイト列)
iterations, # 反復回数(例:100,000)
key_length, # 出力する鍵の長さ(バイト)
)
$ DK = \mathrm{PBKDF2}(P, S, c, dkLen)
$ \mathrm{PBKDF2}(P, S, n_\mathrm{iter}, dkLen) = T_1 || T_2 || ...|| T_l
$ || : バイト列やビット列の結合
$ dkLen :
$ T_i = F(P, S, c, i)
$ F(P, S, c, i) = U_1 \oplus U_2 \oplus \ldots \oplus U_c
$ U_1 = \text{PRF}(P, S | \text{INT}(i))
PRFはPRF(Pseudorandom Function:疑似乱数関数)
PRF: byte -> byte -> byte
$ U_j = \text{PRF}(P, U_{j-1})\ \text{for}\ j = 2, 3, \ldots, c
確認用
Q. PBKDF2
参考
【暗号技術入門】 メッセージ認証コード (MAC) と鍵導出関数 | 晴耕雨読
関連
FIPS 140-3 Security Requirements for Cryptographic Modules
メモ
PBKDF2 - Wikipedia
PKCS5_PBKDF2_HMAC - OpenSSL Documentation
GitHub - kurkku/pbkdf2-hmac-sha: PBKDF2 HMAC SHA256 module in C
hashlib --- セキュアハッシュとメッセージダイジェスト — Python 3.13.5 ドキュメント
調査用
Google.icon PBKDF2(日)
Google.icon PBKDF2(英)
Wikipedia.icon
PBKDF2 - Wikipedia(日)
PBKDF2(検索) - Wikipedia(日)
Wikipedia.icon
PBKDF2 - Wikipedia(英)
PBKDF2(検索) - Wikipedia(英)