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` (en-US) даёт доступ к объекту, реализующему Web Crypto API.

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

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

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

| Specification |
| --- |
| Web Cryptography API |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.