Web Crypto API

Вы читаете английскую версию этой статьи, так как пока нет перевода на данный язык. Помогите нам перевести эту статью!

Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

Черновик
Эта страница не завершена.

Web Crypto API – интерфейс, позволяющий использовать криптографические примитивы для построения систем, манипулировать, хранить секретные ключи без необходимости делать доступными базовые биты ключа для JavaScript.

Интерфейс открывает доступ к следующим примитивам:

  • digest, the ability to compute a hash of an arbitrary block of data, in order to detect any change in it.
  • mac, the ability to compute a message authentication code.
  • sign и verify, the ability to digitally sign a document, and to verify a signature.
  • encrypt и decrypt, the ability to encode or decode a document.
  • import и export, the ability to import a key or export a key.
  • key generation, the ability to create a cryptographically secure key, or key pair, without the use of base key, but using the available entropy of the local system.
  • key wrapping and unwrapping, the ability to transmit, and to receive, a key from a third party, encoded using another key, without exposing the underlying key to JavaScript.
  • random, способность генерировать криптографически достоверные псевдослучайные числа.

Web Crypto API не решает всех проблем, которые касаются использования криптографии на Web-сайтах или приложениях:

  • Она не заменяет "собственной модели безопасности" браузера (когда на некоторых Web-сайтах используются свои собственные ключи).
  • Оно не взаимодействует со специальным аппаратным обеспечением (смарт-карты, USB-ключи или генераторы случайных чисел).

Внимание!

  • Само по себе использование криптографии не делает систему безопасной. Безопасность – это процесс постоянной оценки рисков, возникающих в контексте эксплуатации системы. Контекст, как и риски, изменяются с течением времени.
  • When dealing with security, the whole system must be considered. In the case of the Web Crypto API, Web developers shouldn't consider only the security of the script, but the security of the connection to the server, because using Web Crypto over HTTP is not secure. The overall security can't be stronger than the security of the weakest part of the overall system.

Интерфейсы

Некоторые браузеры реализовали интерфейс Crypto, но сделали это недостаточно точно или без должного уровня безопасности. Чтобы избежать конфуза с модулем Crypto из пакета Node, методы и свойства интерфейса были перенесены в новый интерфейс: SubtleCrypto. Свойство Crypto.subtle даёт доступ к объекту, реализующему Web Crypto API.

Использование

Web Crypto API может использоваться для:

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

Спецификации

Спецификация Статус Комментарий
Web Cryptography API Рекомендация Initial definition

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
CryptoChrome Полная поддержка 11Edge Полная поддержка 12Firefox Полная поддержка 26IE Полная поддержка 11Opera Полная поддержка 15Safari Полная поддержка 6.1WebView Android Полная поддержка ДаChrome Android Полная поддержка 18Firefox Android Полная поддержка 26Opera Android Полная поддержка 14Safari iOS Полная поддержка 6.1Samsung Internet Android Полная поддержка Да
getRandomValuesChrome Полная поддержка 11Edge Полная поддержка 12Firefox Полная поддержка 26IE Полная поддержка 11Opera Полная поддержка 15Safari Полная поддержка 6.1WebView Android Полная поддержка ДаChrome Android Полная поддержка 18Firefox Android Полная поддержка 26Opera Android Полная поддержка 14Safari iOS Полная поддержка 6.1Samsung Internet Android Полная поддержка Да
subtle
Экспериментальная
Chrome Полная поддержка 37Edge Полная поддержка 12Firefox Полная поддержка 34
Полная поддержка 34
Нет поддержки 32 — 34
Отключено
Отключено From version 32 until version 34 (exclusive): this feature is behind the dom.webcrypto.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE Частичная поддержка 11Opera Полная поддержка 24Safari Полная поддержка 10.1
Полная поддержка 10.1
Полная поддержка 7
С префиксом
С префиксом Требует вендорный префикс: webkit
WebView Android Полная поддержка 37Chrome Android Полная поддержка 37Firefox Android Полная поддержка 34
Полная поддержка 34
Нет поддержки 32 — 34
Отключено
Отключено From version 32 until version 34 (exclusive): this feature is behind the dom.webcrypto.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android Полная поддержка 24Safari iOS Полная поддержка 10.3
Полная поддержка 10.3
Полная поддержка 7
С префиксом
С префиксом Требует вендорный префикс: webkit
Samsung Internet Android Полная поддержка Да

Легенда

Полная поддержка  
Полная поддержка
Частичная поддержка  
Частичная поддержка
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.
Требует вендорный префикс или другое имя для использования.
Требует вендорный префикс или другое имя для использования.