鍵導出関数
鍵導出関数の提案された当初の利用目的は、秘密のパスワードやパスフレーズから鍵を得ることであったが、以下のように異なる目的のものがある。
パスワードやパスフレーズから鍵を生成するもの。パスワードベース鍵導出関数、Key stretching。パスワードに対する総当たり攻撃を困難にするため、多数の反復計算をするなど、わざと計算に時間がかかるように設計される。例えばPBKDF2がある。
一つの秘密の値から、秘密ではない値を組み合わせることで複数の鍵を生成するもの。これは「key diversification」とも呼ばれる。生成された一つの鍵を得た攻撃者が、元の秘密の値や、他の鍵についての有用な情報を得るのを阻止する。また、鍵導出関数によって生成された鍵は、特定の暗号システムにおける「弱鍵」を避けるなど、望ましい性質を持つことも保証される。
鍵共有プロトコルの一要素として利用されるもの。例として、KDF1(IEEE Std 1363-2000て定義されている)や ANSI X9.42の同様の関数がある。
ある鍵から、長さの異なる鍵を得るためのもの。HKDFはこの目的の鍵導出関数である。