Appendix F. Detached Content (分離コンテンツ)
場合によっては、完全性保護されたコンテンツをJWS表現に含めず、別々に送信することが望ましい場合があります。このユースケースは「detached content」(分離コンテンツ) と呼ばれます。分離コンテンツを使用してJWSを作成または検証するには:
分離コンテンツJWSの作成
分離コンテンツを持つJWSを作成するには:
- セクション5.1の手順に従ってJWSを作成します
- シリアライゼーション出力で、JWS Payloadのbase64urlエンコードされた表現を空文字列に置き換えます
JWS Compact Serialization形式:
BASE64URL(UTF8(JWS Protected Header)) || '.' || '' || '.' || BASE64URL(JWS Signature)
中央の空文字列に注意してください。これは分離されたペイロードを表します。
例(分離コンテンツを使用):
eyJhbGciOiJIUzI1NiJ9..dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
2つの連続するピリオド文字に注意してください。これはペイロードが削除されたことを示します。
分離コンテンツJWSの検証
分離コンテンツを持つJWSを検証するには:
- アプリケーションコンテキストから分離されたペイロードコンテンツを取得します
- ペイロードのbase64urlエンコーディングを計算します
- エンコードされたペイロードを、JWS表現の空のペイロード位置に挿入します
- セクション5.2の手順に従ってJWSを検証します
使用シナリオ
分離コンテンツは、次のシナリオで有用です:
- 大きなペイロード: ペイロードが非常に大きい場合、別々に送信することが望ましい場合があります
- 複数の署名: 同じペイロードに複数の署名が必要な場合、ペイロードの重複送信を避けることができます
- 既存のコンテンツ: コンテンツが他の方法で既に利用可能な場合、署名のみを送信する必要があります
- 帯域幅の最適化: 帯域幅が制限された環境では、送信されるデータ量を削減できます
セキュリティに関する考慮事項
分離コンテンツを使用する場合:
- アプリケーションは、受信者が正しいペイロードコンテンツを確実に取得できることを保証しなければなりません
- ペイロード置換攻撃を防止しなければなりません
- 署名とペイロードをバインドするために、追加のメカニズム(コンテンツハッシュなど)を使用すべきです (SHOULD)
- 署名とペイロードを関連付ける方法をアプリケーションプロトコルで明確に定義すべきです (SHOULD)