PBKDF2
PBKDF2(Password-Based Key Derivation Function)
関連ドキュメント
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
参考
関連
メモ
調査用
Wikipedia.icon
Wikipedia.icon