scryptは、より多くのメモリを使用するように設計されています。そのパラメータを使用して、必要なメモリ量を(おおよそ)指定できます。
しかし、scryptとPBKDF2の両方で、出力データサイズを指定が可能です。
だから私の質問は、PBKDF2に大きな出力を要求するだけで(そして出力の最後から実際に必要なバイトを取り、残りを破棄することによって)大量のメモリを使用させることもできないのですか?
これが事実である場合、scryptのポイントは何ですか?
そうでない場合(可能性が高い)、私の考えの何が問題になっているのか教えてください。
PBKDF2の出力の各ブロックは、他のすべてのブロックとは独立して導出されます。このため、超並列システム(GPUなど)で大きな出力を計算することは非常に効率的です。さらに、出力の特定のバイトのみを取得して残りを破棄する場合、攻撃者はそれらのバイトを含むブロックを計算するだけで済みます。
「PBKDF2に大量のメモリを使用させることもできません。
大きな出力(そして出力の最後から実際に必要なバイトを取得し、
残りを破棄する)」PBKDF2は基本的にその出力をストリーミングできるため。