ハッシュ/暗号

Scrypt Hash + Verify

scrypt(RFC 7914、メモリ依存型KDF)でパスワードをハッシュ化し、既存ハッシュとの照合も可能。


                    

Scrypt (RFC 7914) was one of the first memory-hard password-hashing algorithms: it deliberately requires a lot of RAM, not just CPU time, to make parallel brute-forcing on GPUs and ASICs harder.

How to use it

Common uses

Things to keep in mind

The N parameter (memory cost) increases both required memory and compute time exponentially — tune it to your server's actual capacity.

Scrypt has been superseded by Argon2 (the official Password Hashing Competition winner) as the recommended choice for new systems, though scrypt itself still isn't considered unsafe.

このツールに関する記事: Scrypt:このアルゴリズムがなぜこれほど多くのメモリを必要とするか

よくある質問

scryptはbcryptやPBKDF2とどう違いますか?

Scryptは意図的にメモリハードかつCPU集約的であり、主にCPUベースのブルートフォースにしか耐性のないbcryptやPBKDF2に比べ、GPUやカスタムASICハードウェアでの解読をはるかに高コストにします。

N、r、pパラメータは何を制御しますか?

NはCPU/メモリコストを設定し(2のべき乗である必要があります)、rは操作ごとのメモリ使用に影響するブロックサイズを設定し、pは並列度を設定します。いずれかを増やすと、正当な利用と攻撃の両方のリソースコストが上がります。

Argon2と比べて、scryptは今でも良い選択ですか?

Scryptは依然として堅実で実績がありますが、メモリとサイドチャネル耐性をより細かく制御できるため、新規システムには一般的にArgon2(Password Hashing Competitionの勝者)が推奨されます。

scryptは実際にどれくらいのメモリを消費しますか?

1回の計算につきおおよそ128 × N × rバイトです。典型的なパラメータ(N=16384、r=8)では1ハッシュあたり約16メガバイトになります——1回のログインでは些細な量ですが、サーバーで数千件の同時認証がある場合は無視できません。

scryptはパスワードハッシュ化以外にどこで使われていますか?

scryptは一部の暗号通貨(Litecoinなど)でproof-of-workアルゴリズムとして知られています。SHA-256を使うビットコインに特徴的な専用ASICでのマイニングへの耐性を得るために、あえて選ばれました。

記事: ハッシュ/暗号

Hash Generator:MD5、SHA-1、SHA-256はどう違うのか

MD5が今もファイルの整合性検証に使われるが、パスワードには使われない理由。

Checksum Verifier:ファイルが壊れていないか確認する方法

一致するチェックサムがファイルの整合性を確認する一方、誰が作成したかは確認しない理由。

HMAC:鍵付きハッシュが通常のハッシュとどう違うか

通常のSHA-256がメッセージの改ざんから保護しない理由と、HMACがそれを可能にする理由。

Bcrypt:パスワードが速くではなく遅くハッシュ化される理由

速いSHA-256がパスワードに向かない理由と、遅いbcryptが適切な選択である理由。

UUID:ほとんど重複しない識別子はどう生成されるか

UUID v4が数百万台のマシンで独立して、衝突リスクなしに生成できる理由。

パスワード生成ツール:パスワードを本当に強くするものは何か

辞書の単語からなる長いパスワードが、記号や数字を含む短いパスワードより強い理由。

AES:共通鍵暗号の仕組み

AESで同じ鍵がデータの暗号化と復号の両方に使われる理由と、それが公開鍵暗号とどう違うか。

Argon2:このアルゴリズムがパスワードハッシュコンペティションで優勝した理由

Argon2が古いパスワードハッシュ化アルゴリズムよりGPUを使った攻撃に対してどう優れた防御を行うか。

TOTP:認証アプリのワンタイムコードはどう機能するか

Google Authenticatorのコードがインターネットなしで動作し、時刻だけでサーバーと同期する理由。

PBKDF2:最も古い鍵ストレッチング標準

PBKDF2の推奨反復回数が毎年増え続ける理由。

X.509:SSL証明書の中身は何か

緑色の錠前を表示する前に、ブラウザがサイトの証明書で正確に何をチェックしているか。

PGP:公開鍵と秘密鍵による暗号化の仕組み

PGPの公開鍵は自由に共有できるが、秘密鍵は決して共有してはいけない理由。