Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年1月.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
wrapKey() は SubtleCrypto インターフェイスのメソッドで、鍵を「ラップ」します。 これは、外部のポータブルな形式で鍵をエクスポートし、エクスポートされた鍵を暗号化することを意味しています。 鍵をラップすることで、保護されていないデータストア内や保護されていないネットワーク上での送信など、信頼されていない環境で鍵を保護することを支援します。
SubtleCrypto.exportKey() にて、鍵のエクスポート形式を指定します。 鍵をエクスポートするには、CryptoKey.extractableを true に設定する必要があります。
しかし、wrapKey() はエクスポートする鍵も暗号化するので、暗号化に使用する鍵も渡す必要があります。 これは「ラッピング鍵」と呼ばれることもあります。
wrapKey() の逆は SubtleCrypto.unwrapKey() です。wrapKey がエクスポート+暗号化で構成されるのに対して、unwrapKey はインポート+複合で構成されます。
鍵が暗号化される前にエクスポートされるデータ形式を記述する文字列。以下のいずれかになります。
rawRaw 形式。
pkcs8PKCS #8 形式。
spki jwkJSON ウェブ鍵 形式。
keyラップする CryptoKey。
wrappingkeyエクスポートされたキーを暗号化する CryptoKey。これは wrapKey の使用法がなければなりません。
wrapAlgoエクスポートされた鍵を暗号化するために使用するアルゴリズムと、必要な追加引数を指定するオブジェクトです。
暗号化されたエクスポート鍵を格納した ArrayBuffer で履行されるプロミス (Promise) です。
以下の例外が発生した場合、プロミスは拒否されます。
InvalidAccessError DOMExceptionラップキーがリクエストされたラップアルゴリズムのキーでない場合に発生します。
NotSupported DOMException未知のアルゴリズム、または暗号化やラッピングに適していないアルゴリズムを使用しようとしたときに発生します。
TypeError無効な書式を使用しようとしたときに発生します。
暗号化に使用できるアルゴリズムはすべて、鍵に "wrapKey" の用途を設定している限り、鍵のラッピングにも使用できます。 鍵のラッピングには、 AES-KW という追加オプションがあります。
AES-KW は AES 暗号を鍵のラッピングに使用する方法です。
AES-GCM のような他の AES モードと比較して AES-KW を使用する利点の 1 つは、 AES-KW が初期化ベクトルを必要としないことです。 AES-KW を使用するには、入力は 64 ビットの倍数でなければなりません。
AES-KW は RFC 3394 で定義されています。
メモ: GitHub で動作例を試すことができます。
この例は AES 鍵をラップしています。 エクスポート形式として "raw" を使用し、暗号化にはパスワード由来の鍵による AES-KW を使用しています。完全なコードは GitHub で参照してください。
この例は RSA 秘密署名鍵をラップしています。エクスポート形式として "pkcs8" を用い、暗号化にはパスワードから派生した鍵を用いた AES-GCM を使用しています。 完全なコードは GitHub で参照してください。
この例では、 RSA 公開暗号鍵をラップしています。エクスポート形式として "spki" を用い、暗号化にはパスワード由来の鍵による AES-CBC を使用しています。 完全なコードは GitHub で参照してください。
この例は ECDSA 秘密鍵をラップしています。エクスポート形式として "jwk" を用い、暗号化にはパスワード由来の鍵による AES-GCM を使用しています。 完全なコードは GitHub で参照してください。
| Web Cryptography Level 2 # SubtleCrypto-method-wrapKey |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2024年7月28日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.