メインコンテンツまでスキップ

4. 「aes128gcm」コンテントコーディング使用上の制限

4. 「aes128gcm」コンテントコーディング使用上の制限

アプリケーションサーバーは MUST で, プッシュメッセージを単一レコードで暗号化しなければならない. これにより単一レコードだけを扱う最小の受信実装が可能になる. アプリケーションサーバーは MUST で, "aes128gcm" コンテントコーディングヘッダの "rs" パラメータを, 平文長, パディング区切り (1オクテット), 任意のパディング, 認証タグ (16オクテット) の長さの合計より大きく設定しなければならない.

プッシュメッセージは MUST で, 暗号化コンテントコーディングヘッダの "keyid" パラメータにアプリケーションサーバーの ECDH 公開鍵を含めなければならない. [X9.62] の非圧縮点形式 (先頭が 0x04 の65オクテット列) が "keyid" 全体を構成する. したがって "keyid" は [RFC8188] が推奨する有効な UTF-8 にはならない.

プッシュサービスは4096オクテットを超えるペイロード本体をサポートする必要はない ([RFC8030] 第7.2節). ヘッダ (86オクテット), パディング (最低1オクテット), AEAD_AES_128_GCM の拡張 (16オクテット) を除くと, 平文は多くて3993オクテットまでとなる.

アプリケーションサーバーは MUST NOT で, プッシュメッセージに他のコンテントエンコーディングを用いてはならない. 特に圧縮するエンコーディングはプッシュメッセージ内容の漏えいにつながり得る. したがって Content-Encoding ヘッダフィールドの値はちょうど一つで, "aes128gcm" である. 複数の "aes128gcm" は許されない.

ユーザエージェントは複数レコードをサポートする必要はない. ユーザエージェントは MAY で "rs" パラメータを無視してよい. レコードサイズを検査しない場合, 妥当なケースでも復号は高い確率で失敗する. パディング区切りオクテットは MUST で検査する. 0x02 以外の値は MUST でメッセージを破棄しなければならない.