このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

ウェブ暗号化 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-CBCAES-CTRAES-GCMAES-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_5RSA-PSSRSA-OAEP のいずれかとして識別される場合に、algorithm 引数として SubtleCrypto.importKey() または SubtleCrypto.unwrapKey() に渡すべきオブジェクトを表します。

RsaHashedKeyGenParams

RSA ベースの鍵ペアを生成する際、つまりアルゴリズムが RSASSA-PKCS1-v1_5RSA-PSSRSA-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

ブラウザーの互換性