コンテンツへスキップ
uencoder

scrypt

scrypt は Colin Percival が設計したメモリーハードな鍵導出関数(KDF)である。大きなメモリ要求によって GPU/ASIC による並列総当たり攻撃を妨げ、パスワードハッシュや鍵導出に利用される。

目的

CPU コストに加えてメモリーハード性を上乗せし、専用ハードウェア(ASIC)攻撃のコストを大幅に引き上げる。

メカニズム

PBKDF2 と ROMix を基盤とし(BlockMix がメモリ上の充填済み配列へランダムアクセスする)。パラメータは N(メモリ/時間コスト)、r(ブロックサイズ)、p(並列度)で、約 N×r×128 バイトのメモリを確保する。一般的な設定は N=2^15、r=8、p=1 である。

ユースケース

  • Litecoin のマイニング
  • Tarsnap バックアップの暗号化
  • パスワードハッシュ(bcrypt の代替)
  • ETH 2.0 の鍵導出

例

  • 入力
    password, salt, N=2^15, r=8, p=1
    Output
    256-bit key

    Needs about 32 MB of memory

よくあるエラー

An N value too low loses the memory-hard property
Tune per environment; N≥2^15 recommended for servers

関連用語

関連ツール

References