ウェブ暗号化 API
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
メモ: この機能はウェブワーカー内で利用可能です。
ウェブ暗号化 API (Web Crypto API) は、暗号化を使用してシステムを構築するためにスクリプトが暗号化プリミティブを使用することを可能にするインターフェイスです。
一部のブラウザーでは、Crypto というインターフェイスが明確に定義されておらず、暗号化されていなくても実装されていました。混乱を避けるために、このインターフェイスのメソッドとプロパティはウェブ暗号化 API を実装しているブラウザーから削除され、ウェブ暗号化 API のすべてのメソッドは新しいインターフェイス、つまり SubtleCrypto で利用可能になりました。Crypto.subtle プロパティはそれを実装しているオブジェクトへのアクセスを提供します。
警告: ウェブ暗号化 API は、低レベルの暗号化プリミティブを多数提供しています。それらは非常に使い方を間違えやすく、そして関連する落とし穴は非常に微妙である場合もあります。
基本的な暗号機能を正しく使用していると仮定しても、安全な鍵管理と全体的なセキュリティシステムの設計を正しく理解するのは非常に難しく、一般的にセキュリティ分野のスペシャリストの領域です。
セキュリティシステムの設計と実装に誤りがあると、システムのセキュリティが完全に無効になる可能性があります。
学んで実験することは大切ですが、この分野に精通した専門家があなたの成果物を徹底的にレビューするまでは、そのセキュリティを保証したり、ほのめかしたりしないようにしてください。Crypto 101 コースは、安全なシステムの設計と実装について学ぶための素晴らしい入門先となるでしょう。
インターフェイス
Crypto-
暗号学的に強固な乱数ジェネレーターなどの基本的な暗号化機能を提供し、
SubtleCryptoオブジェクトを介して暗号プリミティブにアクセスできます。 この型のオブジェクトには、グローバルスコープ内でWindow.cryptoまたはWorkerGlobalScope.cryptoを使用してアクセスできます。 SubtleCrypto-
鍵の生成、暗号化、復号、鍵のラッピングおよびアンラッピングといった具合に、低レベルの暗号化機能を提供するオブジェクトを表します。
CryptoKey-
暗号化鍵を表します。これは、
SubtleCryptoのメソッドgenerateKey()、deriveKey()、importKey()、unwrapKey()のいずれかから取得されたものです。
辞書
AesCbcParams-
AES-CBC アルゴリズムを使用する場合に、
algorithm引数としてSubtleCrypto.encrypt()、SubtleCrypto.decrypt()、SubtleCrypto.wrapKey()、またはSubtleCrypto.unwrapKey()に渡すべきオブジェクトを表します。 AesCtrParams-
AES-CTR アルゴリズムを使用する場合に、
algorithm引数としてSubtleCrypto.encrypt()、SubtleCrypto.decrypt()、SubtleCrypto.wrapKey()、またはSubtleCrypto.unwrapKey()に渡すべきオブジェクトを表します。 AesGcmParams-
AES-GCM アルゴリズムを使用する場合に、
algorithm引数としてSubtleCrypto.encrypt()、SubtleCrypto.decrypt()、SubtleCrypto.wrapKey()、またはSubtleCrypto.unwrapKey()に渡すべきオブジェクトを表します。 AesKeyGenParams-
AES キーを生成する際、つまりアルゴリズムが AES-CBC、AES-CTR、AES-GCM、AES-KW のいずれかとして指定された場合に、
algorithm引数としてSubtleCrypto.generateKey()に渡すべきオブジェクトを表します。 CryptoKeyPair-
非対称暗号アルゴリズムで使用されている公開鍵と秘密鍵のペアを表します。
EcKeyGenParams-
楕円曲線ベースの鍵ペアを生成する際、つまりアルゴリズムが ECDSA または ECDH のどちらかとして識別される場合に、
algorithm引数としてSubtleCrypto.generateKey()に渡すべきオブジェクトを表します。 EcKeyImportParams-
楕円曲線ベースの鍵ペアを生成する際、つまりアルゴリズムが ECDSA または ECDH のどちらかとして識別される場合に、
algorithm引数としてSubtleCrypto.importKey()またはSubtleCrypto.unwrapKey()に渡すべきオブジェクトを表します。 EcdhKeyDeriveParams-
ECDH アルゴリズムを使用する場合、
algorithm引数としてSubtleCrypto.deriveKey()に渡すべきオブジェクトを表します。 EcdsaParams-
ECDSA アルゴリズムを使用する際、
algorithm引数としてSubtleCrypto.sign()またはSubtleCrypto.verify()に渡すべきオブジェクトを表します。 HkdfParams-
HKDF アルゴリズムを使用する場合、
algorithm引数としてSubtleCrypto.deriveKey()に渡すべきオブジェクトを表します。 HmacImportParams-
HMAC アルゴリズムのキーを生成する際、
algorithm引数としてSubtleCrypto.importKey()またはSubtleCrypto.unwrapKey()に渡すべきオブジェクトを表します。 HmacKeyGenParams-
HMAC アルゴリズム用の鍵を生成する際、
algorithm引数としてSubtleCrypto.generateKey()に渡すべきオブジェクトを表します。 Pbkdf2Params-
PBKDF2 アルゴリズムを使用する場合、
algorithm引数としてSubtleCrypto.deriveKey()に渡すべきオブジェクトを表します。 RsaHashedImportParams-
RSA ベースの鍵ペアをインポートする際、つまりアルゴリズムが RSASSA-PKCS1-v1_5、RSA-PSS、RSA-OAEP のいずれかとして識別される場合に、
algorithm引数としてSubtleCrypto.importKey()またはSubtleCrypto.unwrapKey()に渡すべきオブジェクトを表します。 RsaHashedKeyGenParams-
RSA ベースの鍵ペアを生成する際、つまりアルゴリズムが RSASSA-PKCS1-v1_5、RSA-PSS、RSA-OAEP のいずれかとして識別される場合に、
algorithm引数としてSubtleCrypto.generateKey()に渡されるべきオブジェクトを表します。 RsaOaepParams-
RSA_OAEP アルゴリズムを使用する場合に、
algorithm引数としてSubtleCrypto.encrypt()、SubtleCrypto.decrypt()、SubtleCrypto.wrapKey()、SubtleCrypto.unwrapKey()に渡すべきオブジェクトを表します。 RsaPssParams-
RSA-PSS アルゴリズムを使用する場合、
algorithm引数としてSubtleCrypto.sign()またはSubtleCrypto.verify()に渡すべきオブジェクトを表します。
他インターフェイスへの拡張
Window.crypto-
メインスレッドのスコープ内でグローバルオブジェクトに関連付けられた
Cryptoオブジェクトを表します。 WorkerGlobalScope.crypto-
ワーカースコープ内のグローバルオブジェクトに関連付けられた
Cryptoオブジェクトを表します。
仕様書
| Specification |
|---|
| Web Cryptography Level 2> # crypto-interface> |