AesGcmParams
ウェブ暗号化 API の AesGcmParams 辞書は、AES-GCM アルゴリズムを用いる際、SubtleCrypto.encrypt()・SubtleCrypto.decrypt()・SubtleCrypto.wrapKey()・SubtleCrypto.unwrapKey() の引数 algorithm に渡すオブジェクトを表します。
この引数に適切な値を設定する方法の詳細は、AES-GCM の仕様書 NIST SP800-38D、特に Input Data に関する section 5.2.1.1 を参照してください。
インスタンスプロパティ
name-
文字列です。
AES-GCMに設定してください。 iv-
初期化ベクトルを格納した、
ArrayBuffer・TypedArray・DataViewのいずれかです。これは、ある鍵で行う暗号化操作全てで一意である必要があります。言い換えると、同じ鍵では決して IV を再使用してはいけません。AES-GCM の仕様書では IV の長さは 96 ビットが推奨されており、通常は乱数生成器で生成したビット列を格納します。仕様書の Section 8.2 に IV の構築方法の概要があります。なお、IV は秘密にする必要はなく、たとえば暗号化されたメッセージと一緒に平文で送信しても OK です。 additionalData省略可-
ArrayBuffer・TypedArray・DataViewのいずれかです。暗号化はしないが、暗号化したデータと一緒に認証を行う追加データを格納します。ここでadditionalDataを設定した場合は、対応するdecrypt()を呼び出す際にも同じデータを設定しなければなりません。decrypt()を呼び出す際に渡したデータがもとのデータと一致しない場合は、復号操作は例外を投げます。これにより、紐づいたデータを暗号化せずに認証することができます。additionalDataのビット数は、2^64 - 1より小さくなければなりません。additionalDataプロパティは省略可能で、省略しても暗号化操作のセキュリティは損なわれません。 tagLength省略可-
Numberです。暗号化操作で生成され、対応する復号の際に認証に用いる認証タグのビット数を設定します。Web Crypto API の仕様書によれば、この値は 32, 64, 96, 104, 112, 120, 128 のいずれかでなければなりません。一方、AES-GCM の仕様書では 96, 104, 112, 120, 128 のいずれかにすることが推奨されていますが、アプリケーションによっては 32 または 64 ビットでもいいかもしれません。より詳しい指針は、"Recommendation for Block Cipher Modes of Operation" に関する NIST Publication の Appendix C を参照してください。
tagLengthは省略可能で、指定しない場合は 128 になります。
例
SubtleCrypto.encrypt() および SubtleCrypto.decrypt() の例を参照してください。
仕様書
| Specification |
|---|
| Web Cryptography Level 2> # dfn-AesGcmParams> |
ブラウザーの互換性
SubtleCrypto.encrypt()・SubtleCrypto.decrypt()・SubtleCrypto.wrapKey()・SubtleCrypto.unwrapKey() メソッドで "AES-GCM" アルゴリズムに対応しているブラウザーは、この型に対応しているはずです。