本文へスキップ

scryptとは?

えすくりぷと

scryptとは、メモリ使用量を大きくすることでブルートフォース攻撃を困難にした、パスワードハッシュ専用の鍵導出関数です。

scryptは、Colin Percivalが2009年に設計したパスワードハッシュ関数鍵導出関数)で、RFC 7914として標準化されています。bcryptが登場した当初のGPUを使った並列攻撃への対抗策として、大量のメモリを必要とする設計が特徴です。

scryptの主なパラメータは以下の3つです。

  • N(CPU/メモリコストパラメータ):計算とメモリの使用量を制御
  • r(ブロックサイズ):メモリ使用量とパフォーマンスに影響
  • p(並列化パラメータ):並列実行の程度を制御

通常のハッシュ関数はGPUやASICを使った大量並列計算に脆弱ですが、scryptはメモリを大量に必要とするため、多数のGPUを並列動作させてもメモリ帯域がボトルネックとなり、攻撃者の実効速度を大幅に落とせます。これを「メモリハード」な設計と呼びます。

現在では後継となるArgon2(Password Hashing Competitionの優勝者)も広く使われますが、scryptはNode.jsの暗号モジュールや多くのパスワードマネージャー、Litecoinなどの暗号資産マイニングにも採用されており、実績ある重要な関数です。パスワード保管においてはMD5やSHA系の単純なハッシュの代わりに使うべき関数のひとつです。

使い方・例文

Webサービスのユーザーパスワードを保管する際、scryptでハッシュ化して保存することで、データベースが流出しても攻撃者がパスワードを逆算するのに膨大な計算資源とメモリが必要となり、実質的に解読を困難にできます。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語