t_wの輪郭

Feedlyでフォローするボタン

ストレッチングというのは、ハッシュ値の計算を何回も(1000回~数万回程度)繰り返すことです。一般にハッシュ関数は高速性を求められますが、この高速性は総当たり攻撃に対しては脆弱な方向に働きます。総当たりに要する時間も短縮されるからです。

 しかし、ハッシュ保存用にわざわざ低速なアルゴリズムを開発するのも手間が掛かるので、高速なハッシュを繰り返し用いることで速度を遅くするというのが、ストレッチングの考え方です。

PBKDF2(Password-Based Key Derivation Function 2)
Django や iOS 9 などが採用しているアルゴリズムです。ハッシュ関数として HMAC-SHA1 や HMAC-SHA256 などを選択することができます。ソルトとストレッチ回数を指定します。下記は Python で PBKDF2 のハッシュ値を求めるサンプルです。ストレッチ回数は、2005年時点の推奨値で4,096回。iOS 9 では 10,000回のストレッチングを行っています。

── 『PBKDF2(Password-Based Key Derivation Function 2) - とほほの暗号化入門』