2016-01-05 4 views
4

Я разрабатываю расширение Thunderbird, которое в основном выполняется на JavaScript. Я хочу использовать несколько функций из библиотеки Mozilla NSS (Network Security Services) в JavaScript. В Thunderbird есть одна оболочка JavaScript, названная WeaveCrypto.js, которую я сейчас использую. Проблема с WeaveCrypto - это его возраст (AES-256-CBC, возможно, был достаточно хорош в 2010 году, но сегодня он больше не рекомендуется, например, через this. SHA1 также не рекомендуется в качестве prf-алгоритма в PBKDF2 anymore.) И жестко закодированные значения, такие как итерации, алгоритмы и длины ключей.Использование библиотеки NSS Mozilla в JavaScript (например, WeaveCrypto.js)

JavaScript Crypto уже попал в «Архив устаревшего контента», а DOMCrypt доступен только в Firefox.

Я сейчас общаюсь с Джастином Долске, разработчиком WeaveCrypto. Его нынешний прием заключается в том, что я мог разблокировать WeaveCrypto, и если я добавлю только идентификаторы алгоритмов и изменяю только небольшие фрагменты логики (например, жестко заданные значения для сменных), они, скорее всего, добавят мою разветвленную версию в Thunderbird.

Я сделаю, что если у меня есть, но это звучит немного странно для меня, что огромная NSS библиотека не является полностью доступной и полезной в JavaScript без дополнительных усилий, даже несмотря на все логики Firefox и Thunderbird расширений написано на этом точном языке (или я что-то пропустил?).

Любые идеи оценили :)

+1

Более 4 лет назад возник подобный вопрос (http://stackoverflow.com/questions/7753130/xpcom-encrypt-decrypt-operation-on-file-in-firefox-extension), но, возможно, что-то изменилось с тех пор тогда. – BeYonD

ответ

0

Джастин Dolske рассказал мне о WebCryptoAPI, который использует библиотекуNSS из JavaScript. Он полностью доступен в Firefox с версии 3 (так, вероятно, также и в Thunderbird с тех пор). Однако большинство частей не поддерживается знаменитым Internet Explorer, что затрудняет его использование в приложениях браузера. Похоже, он отлично подходит для расширений Firefox и Thunderbird.

Его документация неполна, но не плоха. Вот несколько JavaScript Example Code.

Documentation on common crypto functions также доступен.

Personal Security Manager (PSM) также использует библиотеку NSS, но, похоже, не предназначен для использования в JavaScript-расширениях.

НО: Поддерживаемые алгоритмы в NSS не состояние искусства. Существуют библиотеки JavaScript, такие как SJCL JavaScript Crypto Lib, которые содержат более сильные алгоритмы. К сожалению, на самом деле не рекомендуется использовать криптографические функции, написанные на JavaScript (Javascript Cryptography Considered Harmful).

Заключение: Вот причина, почему библиотека NSS кажется, что путь, так как она написана на C и, следовательно, должна быть быстрее и надежнее, чем реализации JavaScript. Но он должен быть обновлен до последних стандартов безопасности. В документе NSS 3.3 Plan они уже упоминают «Обновление списка технологий шифрования» в разделе «Обязательно иметь» и «Эллиптическая кривая криптографии (ECC)» в разделе «Приятно иметь».Я не могу видеть много информации об этом в NSS BurnDownList, но я надеюсь, что еще впереди.

Смежные вопросы