Web Crypto API
Базовая линия Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
API Веб-криптографии — это интерфейс, позволяющий скрипту использовать криптографические примитивы для построения систем, основанных на криптографии.
Некоторые браузеры реализовали интерфейс под названием Crypto, но без надлежащего определения или криптографической обоснованности. Чтобы избежать путаницы, методы и свойства этого интерфейса были удалены из браузеров, которые реализуют API Веб-криптографии, и все методы API Веб-криптографии доступны в новом интерфейсе: SubtleCrypto. Свойство Crypto.subtle предоставляет доступ к объекту, который его реализует.
Предупреждение: API Веб-криптографии предоставляет ряд криптографических примитивов низкого уровня. Их очень легко использовать неправильно, и связанные с этим подводные камни могут быть очень скрытыми.
Даже если вы правильно используете базовые криптографические функции, безопасное управление ключами и общий дизайн системы безопасности чрезвычайно сложны и обычно относятся к области специализированных экспертов по безопасности.
Ошибки в проектировании и реализации системы безопасности могут свести безопасность системы к нулю.
Пожалуйста, изучайте и экспериментируйте, но не гарантируйте и не предполагайте безопасность вашей работы до тех пор, пока не будет проведено тщательное рассмотрение со стороны человека, компетентного в этой области. Курс Crypto 101 может стать отличным началом изучения проектирования и реализации безопасных систем.
Интерфейсы
Crypto-
Предоставляет основные криптографические функции, такие как генератор криптографически сильных случайных чисел и доступ к криптографическим примитивам через объект
SubtleCrypto. Объект этого типа можно получить в глобальной области видимости, используяWindow.cryptoилиWorkerGlobalScope.crypto. SubtleCrypto-
Представляет объект, который предоставляет криптографические функции низкого уровня для генерации ключей, шифрования, дешифрования, упаковки и распаковки ключей и т. д.
CryptoKey-
Представляет криптографический ключ, полученный из одного из методов
SubtleCryptogenerateKey(),deriveKey(),importKey()илиunwrapKey().
Словари
AesCbcParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.encrypt(),SubtleCrypto.decrypt(),SubtleCrypto.wrapKey()илиSubtleCrypto.unwrapKey()при использовании алгоритма AES-CBC. AesCtrParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.encrypt(),SubtleCrypto.decrypt(),SubtleCrypto.wrapKey()илиSubtleCrypto.unwrapKey()при использовании алгоритма AES-CTR. AesGcmParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.encrypt(),SubtleCrypto.decrypt(),SubtleCrypto.wrapKey()илиSubtleCrypto.unwrapKey()при использовании алгоритма AES-GCM. AesKeyGenParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.generateKey()при генерации ключа AES: то есть, когда алгоритм определён как любой из AES-CBC, AES-CTR, AES-GCM или AES-KW. CryptoKeyPair-
Представляет пару открытого и закрытого ключей, используемых для асимметричного алгоритма шифрования.
EcKeyGenParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.generateKey()при генерации любой пары ключей на основе эллиптических кривых: то есть, когда алгоритм идентифицируется как ECDSA или ECDH. EcKeyImportParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.importKey()илиSubtleCrypto.unwrapKey(), при генерации любой пары ключей на основе эллиптических кривых: то есть, когда алгоритм идентифицируется как ECDSA или ECDH. EcdhKeyDeriveParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.deriveKey(), при использовании алгоритма ECDH. EcdsaParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.sign()илиSubtleCrypto.verify()при использовании алгоритма ECDSA. HkdfParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.deriveKey()при использовании алгоритма HKDF. HmacImportParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.importKey()илиSubtleCrypto.unwrapKey()при генерации ключа для алгоритма HMAC. HmacKeyGenParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.generateKey()при генерации ключа для алгоритма HMAC. Pbkdf2Params-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.deriveKey()при использовании алгоритма PBKDF2. RsaHashedImportParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.importKey()илиSubtleCrypto.unwrapKey()при импорте любой пары ключей на основе RSA: то есть, когда алгоритм определён как любой из RSASSA-PKCS1-v1_5, RSA-PSS или RSA-OAEP. RsaHashedKeyGenParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.generateKey()при генерации любой пары ключей на основе RSA: то есть, когда алгоритм определён как любой из RSASSA-PKCS1-v1_5, RSA-PSS или RSA-OAEP. RsaOaepParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.encrypt(),SubtleCrypto.decrypt(),SubtleCrypto.wrapKey()илиSubtleCrypto.unwrapKey()при использовании алгоритма RSA_OAEP. RsaPssParams-
Представляет объект, который должен быть передан в качестве параметра
algorithmвSubtleCrypto.sign()илиSubtleCrypto.verify()при использовании алгоритма RSA-PSS.
Расширения других интерфейсов
Window.crypto-
Представляет объект
Crypto, связанный с глобальным объектом в области видимости основного потока. WorkerGlobalScope.crypto-
Представляет объект
Crypto, связанный с глобальным объектом в области видимости рабочего потока.
Спецификации
| Спецификация |
|---|
| API криптографии веб # crypto-interface |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
Web_Crypto_API |
11 | 12 | 21 | 15 | 5 | 18 | 21 | 14 | 5 | 1.0 | ≤37 |
getRandomValues |
11 | 12 | 21 | 15 | 5 | 18 | 21 | 14 | 5 | 1.0 | ≤37 |
randomUUID |
92 | 92 | 95 | 78 | 15.4 | 92 | 95 | 65 | 15.4 | 16.0 | 92 |
subtle |
37 | 12 | 34 | 24 | 117–11.1 | 37 | 34 | 24 | 117–11.3 | 3.0 | 37 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API