Бесплатно Экспресс-аудит сайта:

01.07.2014

Криптографическая JS-библиотека от Microsoft Research

Хотя отдельные специалисты говорят, что шифрование в браузере порочно само по себе, разработчики не сдаются и продолжают выпускать криптографические библиотеки. Их можно понять: только через JavaScript возможно реализовать удобное автоматическое шифрование контента на стороне пользователя, без возни с предварительной установкой стороннего ПО и генерацией ключей.

Буквально месяц назад компания Google выпустила официальное расширение для end-to-end шифрования в Gmail. Для него разработали собственную версию криптографической библиотеки. Она поддерживает эллиптические кривые, модульную арифметику и длинную арифметику, симметричное и асимметричное шифрование. Поверх неё работает реализация OpenPGP. Приватные ключи хранятся в защищённой «песочнице» в участке оперативной памяти, который Chrome изолирует от всех остальных задач. При записи ключей в localStorage они предварительно шифруются.

Адекватный ответ конкурентам предложила и компания Microsoft. Исследовательское подразделение Microsoft Research разработало криптографическую библиотеку, которую Microsoft собирается использовать в своих облачных сервисах. Доступ к реализованным в ней алгоритмах осуществляется по стандартному интерфейсу W3C WebCrypto. Работоспособность библиотеки проверена в браузерах IE 8, 9, 10, 11, последних Firefox, Chrome, Opera и Safari.

В данный момент библиотека поддерживает шифрование и дешифрование RSA (PKCS#1 v1.5, OAEP и PSS), AES-CBC и GCM, а также хеш-функции SHA-256/384/512, HMAC и PRNG (на основе AES-CTR), в соответствии со стандартами NIST, протоколом анонимного обмена ключами на эллиптических кривых Диффи-Хеллмана (ECDH), алгоритмом генерации цифровой подписи на эллиптических кривых (ECDSA) и функцией извлечения ключа (KDF).

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

Библиотека предлагает и вспомогательные инструменты, в том числе рутинные операции для управления порядком байтов и преобразований.

Microsoft предупреждает, что библиотеку обязательно модифицируют в будущем. Сейчас она находится в стадии активной разработки. В следующих версиях могут измениться программные интерфейсы.