暗号
scrypt
別称: Percival scrypt, RFC 7914
定義
2009 年に Colin Percival が設計し RFC 7914 で標準化された、メモリ消費型のパスワードベース KDF。パスワードハッシュや一部の暗号通貨の Proof-of-Work に利用される。
scrypt は Colin Percival が 2009 年に発表し、RFC 7914 で標準化されたパスワードベースの鍵導出関数で、PBKDF2-HMAC-SHA-256 と Salsa20/8 コアに基づくメモリ消費型混合段 ROMix を組み合わせています。調整可能なパラメーターは N(メモリ/CPU コスト)、r(ブロックサイズ)、p(並列度)の 3 つで、対話用途では N=2^15、r=8、p=1(約 32 MiB)が一般的です。メモリ消費型設計により、PBKDF2 や bcrypt に比べて GPU・ASIC を用いた攻撃コストを大幅に引き上げます。新規設計では Argon2id が推奨されることが多いものの、scrypt は依然としてパスワードハッシュや KDF の安全な選択肢です。Litecoin や Dogecoin は scrypt を Proof-of-Work 関数として採用しています。
例
- scrypt(N=16384、r=8、p=1)でユーザーパスワードを保存する。
- Litecoin は Proof-of-Work ハッシュとして scrypt を使用する。
関連用語
鍵導出関数(KDF)
パスワードや共有秘密、マスター鍵などの秘密入力から、1 つまたは複数の強力な暗号鍵を導出する暗号関数。
Argon2
2015 年の Password Hashing Competition で優勝し、RFC 9106 に標準化された、メモリ消費型の最新パスワードハッシュ関数兼 KDF。
bcrypt
Blowfish 暗号の鍵スケジューリングを基にした適応的パスワードハッシュ関数で、1999 年に Provos と Mazières が設計した。
PBKDF2
PKCS #5 / RFC 8018 で定義されたパスワードベースの鍵導出関数で、設定可能な反復回数とソルトを用いて擬似乱数関数を繰り返し適用する。
ソルト
ハッシュ計算前にパスワードへ付加する一意のランダム値で、レインボーテーブルを無効化し各ユーザーのハッシュを別物にする仕組み。
HMAC
RFC 2104 と FIPS 198-1 で定義された、暗号学的ハッシュ関数を土台とする鍵付きメッセージ認証コード(MAC)構造。