2016-03-26 5 views
1

Iライブラリを使用してきたと私は本当にそれが好き、私はPBKDF2を読んだものから、もう少しブルートフォース攻撃に対して脆弱bcryptのかscryptを超えています。私はadding scrypt supportについてこの問題を遭遇しましたが、明確な答えはないようです。SJCLのPBKDF2の代わりにbcryptまたはscryptを使用できますか?

理想的には、私は単純にPBKDF2機能の代替にドロップしたいと思いますが、私はこれが可能であるかどうかを知るには十分SJCLの内部の仕組みに精通していませんよ。

ことが可能であったならば、あなたはかなり簡単に私が想像このpure JS bcrypt実装のようなものを使用することができます。

答えて

2

はい、それは可能ですが、より多くの手作業を必要とします。 まず、あなたはscryptでSJCLをコンパイルする必要があります。非常に有用な答えのための

var salt = sjcl.random.randomWords(2,0); 
var key = sjcl.misc.scrypt(password, salt); 
var encrypted = sjcl.json.encrypt(key, original); 
var decrypted = sjcl.json.decrypt(key, encrypted); 
+0

ありがとう:

./configure --with-scrypt make 

は、その後、あなたが鍵ペアを生成するためにscryptを使用する必要があります。私は後で試してみるつもりです。 scryptのラウンド数や作業係数を設定する方法はありますか? –

+0

これを見つけた他の人のためだけです。どうやら、2番目の '0'引数を' sjcl.random.randomWords'に渡すのはテスト目的のみであり、結果的にセキュリティが損なわれます(https://github.com/bitwiseshiftleft/sjcl/issues/77)。キー。それは塩のために使用されていることを考えると、この文脈でどのくらい重要であるか分かりませんが、私は私より知識のある人々にそれを残します。 –

+2

IVと同じ塩は、鍵と同じくらいランダムではなく、繰り返しでなければならないので、2番目の引数0を持つ 'sjcl.random.randomWords'は問題ありません。また、sjclがpbkdf2のために内部的に使用するものです。 – Nils

関連する問題