2016-03-26 31 views
1

Kütüphaneyi kullanıyorum ve bunu gerçekten çok seviyorum, fakat PBKDF2 okuduğumdan, kaba kuvvet saldırılarına karşı bcrypt veya scrypt'dan biraz daha savunmasız kalıyor. Bu konuyla ilgili olarak adding scrypt support'u buldum, ancak açık bir cevap gibi görünmüyor.SJCL'de PBKDF2'ye alternatif olarak bcrypt veya scrypt kullanmak mümkün mü?

İdeal olarak, PBKDF2 işlevselliğinin yerine sadece bir yere atılmak istiyorum, ancak bunun mümkün olup olmadığını bilmek için SJCL'nin iç işleyişine yeterince aşina değilim.

Mümkünse, pure JS bcrypt uygulama gibi bir şeyi oldukça kolay hayal edebiliyorum.

cevap

2

Evet, ancak daha fazla manuel çalışmaya ihtiyaç var. Önce scrypt ile sjcl derlemek gerekir: çok yararlı cevap için

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

Teşekkür:

./configure --with-scrypt make 

Sonra bir anahtar çifti oluşturmak için scrypt kullanmak zorunda kalacaktır. Bunu daha sonra deneyeceğim. Scrypt için tur sayısı veya çalışma faktörü ayarlamak için bir yolu var mı? –

+0

Sadece bunu gören herkes için. Görünüşe göre, ikinci '0' argümanını' sjcl.random.randomWords'ye geçirmek yalnızca test amaçlıdır ve [güvenli şekilde] (https://github.com/bitwiseshiftleft/sjcl/issues/77) sonucun güvenliğini sağlayacaktır. tuşuna basın. Bu bağlamda tuz için kullanıldığına bakılırsa ne kadar önemli olduğuna emin değilim, ama bunu benden daha bilgili insanlara bırakacağım. –

+2

Bir IV ile aynı olan bir tuzun sadece tekrarlama olmaması ve bir anahtar kadar rastgele olmaması gerekir, bu yüzden ikinci argüman 0 ile sjcl.random.randomWords 'iyi olmalıdır. Ayrıca sjcl pbkdf2 için dahili olarak kullanılır. – Nils