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

3.10. Notify Payload (通知ペイロード)

3.10. Notify Payload (通知ペイロード)

Notify payload は本書で N と表し, エラー条件や状態遷移などの情報データを IKE ピアに伝えるために用いられる. Notify payload は応答メッセージ (通常は要求が拒否された理由), INFORMATIONAL 交換 (IKE 要求にないエラーの報告), または送信者の能力を示したり要求の意味を変えたりするその他のメッセージに現れてよい.

Notify payload は次のように定義される:

                    1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Payload |C| RESERVED | Payload Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Protocol ID | SPI Size | Notify Message Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Security Parameter Index (SPI) ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Notification Data ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

図 16: Notify payload 形式

  • Protocol ID (1 オクテット) - 本通知が SPI フィールドに示された既存の SA に関するものである場合, 本フィールドはその SA の種類を示す. 子 SA に関する通知では, 本フィールドは AH を示す (2) または ESP を示す (3) のいずれかでなければならない. 本書で定義する通知のうち SPI が付くのは INVALID_SELECTORS, REKEY_SA, CHILD_SA_NOT_FOUND のみである. SPI フィールドが空の場合, 本フィールドは 0 を送らなければならず, 受信時には無視しなければならない.

  • SPI Size (1 オクテット) - IPsec プロトコル ID で定義される SPI のオクテット長, または SPI が適用されない場合は 0. IKE SA に関する通知では SPI Size は 0 でなければならず, フィールドは空でなければならない.

  • Notify Message Type (2 オクテット) - 通知メッセージの種類を指定する.

  • SPI (可変長) - Security Parameter Index.

  • Notification Data (可変長) - Notify Message Type に加えて伝える状態またはエラーデータ. 本フィールドの値は種別ごとに異なる (下記参照).

Notify payload のペイロード種別は 41 である.

3.10.1. Notify メッセージ種別

通知情報は, SA を確立できなかった理由を示すエラーメッセージになり得る. また SA データベースを管理するプロセスがピアプロセスに伝えたい状態データにもなり得る.

下表は通知メッセージと対応する値を列挙する. エラー状態の種類数は IKEv1 から大幅に削減されており, 簡素化と, プローバーへの設定情報漏えい回避のためである.

0 - 16383 の範囲の種別はエラー報告用である. 応答で認識できないこれらの種別の Notify payload を受け取った実装は, 対応する要求が完全に失敗したとみなさなければならない. 要求内の認識できないエラー種別, および要求または応答内の状態種別は無視しなければならず, ログに記録すべきである.

状態種別の Notify payload は任意のメッセージに追加してよいが, 認識できない場合は無視しなければならない. 能力を示すことを意図し, SA 協商の一部として非暗号パラメータを協商するために用いられる.

エラー処理の詳細は第 2.21 節を参照のこと.

下表の値は RFC 4306 の公開日時点, および本書で追加された 2 つのエラー種別までが最新である. その後追加された値があるか, 本書公開後に追加される可能性がある. 読者は最新値として [IKEV2IANA] を参照すべきである.

NOTIFY メッセージ: エラー種別
UNSUPPORTED_CRITICAL_PAYLOAD1
第 2.5 節を参照.
INVALID_IKE_SPI4
第 2.21 節を参照.
INVALID_MAJOR_VERSION5
第 2.5 節を参照.
INVALID_SYNTAX7
受信した IKE メッセージが, 型・長さ・値のいずれかが範囲外であるか, ポリシー理由で要求が拒否されたため無効であることを示す. 偽造メッセージを用いた DoS 攻撃を避けるため, Message ID と暗号チェックサムが有効な場合に限り, 暗号化パケットに対してのみこの状態を返してよい. ノードを調査する者への情報漏えいを避けるため, 他の状態種別で扱わない任意のエラーに対してはこの状態を送らなければならない. デバッグのため, より詳細なエラー情報はコンソールまたはログに書き出すべきである.
INVALID_MESSAGE_ID9
第 2.3 節を参照.
INVALID_SPI11
第 1.5 節を参照.
NO_PROPOSAL_CHOSEN14
提案された暗号スイートのいずれも受け入れ可能でなかった. 提示された提案 (SA payload の値, USE_TRANSPORT_MODE 通知, IPCOMP_SUPPORTED 通知に限定されない) が応答者に受け入れられない場合に送ってよい. その他の理由で子 SA を作成できない場合の「汎用」子 SA エラーとしても用いてよい. 第 2.7 節も参照.
INVALID_KE_PAYLOAD17
第 1.2 節および 1.3 節を参照.
AUTHENTICATION_FAILED24
IKE_AUTH メッセージへの応答で, 何らかの理由で認証に失敗したときに送られる. 関連データはない. 第 2.21.2 節も参照.
SINGLE_PAIR_REQUIRED34
第 2.9 節を参照.
NO_ADDITIONAL_SAS35
第 1.3 節を参照.
INTERNAL_ADDRESS_FAILURE36
第 3.15.4 節を参照.
FAILED_CP_REQUIRED37
第 2.19 節を参照.
TS_UNACCEPTABLE38
第 2.9 節を参照.
INVALID_SELECTORS39
ノードが ESP または AH パケットを受信し, そのセレクタが配送に用いた SA 上のセレクタと一致せず (その結果パケットが破棄された), IKE INFORMATIONAL 交換で送ってよい. Notification Data には問題のパケットの先頭 (ICMP メッセージと同様) が含まれ, 通知の SPI フィールドは子 SA の SPI に合わせて設定される.
TEMPORARY_FAILURE43
第 2.25 節を参照.
CHILD_SA_NOT_FOUND44
第 2.25 節を参照.
NOTIFY メッセージ: 状態種別
INITIAL_CONTACT16384
第 2.4 節を参照.
SET_WINDOW_SIZE16385
第 2.3 節を参照.
ADDITIONAL_TS_POSSIBLE16386
第 2.9 節を参照.
IPCOMP_SUPPORTED16387
第 2.22 節を参照.
NAT_DETECTION_SOURCE_IP16388
第 2.23 節を参照.
NAT_DETECTION_DESTINATION_IP16389
第 2.23 節を参照.
COOKIE16390
第 2.6 節を参照.
USE_TRANSPORT_MODE16391
第 1.3.1 節を参照.
HTTP_CERT_LOOKUP_SUPPORTED16392
第 3.6 節を参照.
REKEY_SA16393
第 1.3.3 節を参照.
ESP_TFC_PADDING_NOT_SUPPORTED16394
第 1.3.1 節を参照.
NON_FIRST_FRAGMENTS_ALSO16395
第 1.3.1 節を参照.