在JavaScript中使用Mozilla的NSS库(例如WeaveCrypto.js)

时间:2016-01-05 11:45:52

标签: javascript thunderbird nss

我正在开发 Thunderbird扩展,这主要是在JavaScript中完成的。我想在JavaScript中使用 Mozilla的NSS Network Security Services)库中的几个函数。 Thunderbird内置了一个JavaScript包装器,名为WeaveCrypto.js,我目前正在使用它。 WeaveCrypto的问题在于它的年龄(AES-256-CBC在2010年可能已经足够好了,但今天不再推荐,例如通过this。在PBKDF2中,SHA1也不是真正推荐的prf算法anymore。)和硬编码值,如迭代,算法和密钥长度。

JavaScript Crypto已经过去了#34;过时内容存档",而DOMCrypt仅适用于Firefox。

我目前正与 WeaveCrypto 的开发人员Justin Dolske聊天。他目前的看法是我可以分叉 WeaveCrypto ,如果我只添加算法ID并只更改小块逻辑(比如硬编码值可更改),他们可能会将我的分叉版本添加到Thunderbird。 / p>

如果必须,我会这样做,但对我来说这听起来有点奇怪,即使所有的逻辑都没有额外的努力,巨大的 NSS 库在JavaScript中也不是完全可访问和可用的。 Firefox和Thunderbird扩展是用这种语言编写的(或者我错过了什么?)。

任何想法都赞赏:)

1 个答案:

答案 0 :(得分:0)

Justin Dolske告诉我WebCryptoAPI使用JavaScript中的 NSS 库。自从版本34 以来,它在Firefox中完全可用(从那以后可能也在Thunderbird中)。但是,大多数部件都不受着名的Internet Explorer支持,因此在浏览器应用程序中使用它更加困难。它似乎仍然非常适合Firefox和Thunderbird扩展。

它的文档不完整,但也不错。这是一些JavaScript Example Code

Documentation on common crypto functions也可用。

Personal Security Manager (PSM)也使用了 NSS 库,但似乎并不打算用于JavaScript Extensions。

但是 NSS 中支持的算法不是最先进的。像SJCL JavaScript Crypto Lib这样的JavaScript库包含更强大的算法。不幸的是,我们并不建议使用用JavaScript编写的加密函数(Javascript Cryptography Considered Harmful)。

结论:这就是为什么 NSS 库似乎要走的原因,因为它是用C语言编写的,因此应该比JavaScript更快,更安全实现。但它应该更新到最新的安全标准。在NSS 3.3 Plan中,他们已经提到“更新加密技术列表”,“必须拥有”和“椭圆曲线密码术(ECC)”下的“Nice to Have”。我无法在NSS BurnDownList中看到有关该信息的更多信息,但我希望还有更多信息。