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

6.7.4. Keyed SHA1 and Meticulous Keyed SHA1 Authentication

6.7.4. Keyed SHA1 and Meticulous Keyed SHA1 Authentication (Keyed SHA1 および Meticulous Keyed SHA1 認証)

Keyed SHA1 および Meticulous Keyed SHA1 認証メカニズムは, 他のプロトコルで使用されているものと非常に似ています。これらの認証方法では, 1つ以上の秘密鍵 (対応するキー ID を持つ) が各システムで設定されます。鍵の1つは, 送信 BFD 制御パケット上で計算される SHA1 [SHA1] ハッシュに含まれますが, 鍵自体はパケットで運ばれません。リプレイ攻撃を回避するために, シーケンス番号も各パケットで運ばれます。Keyed SHA1 の場合, シーケンス番号は時折インクリメントされます。Meticulous Keyed SHA1 の場合, シーケンス番号はすべてのパケットでインクリメントされます。

受信システムは, キー ID が設定されている鍵の1つと一致し, 選択された鍵を含む SHA1 ハッシュがパケットで運ばれているものと一致し, シーケンス番号が最後に受信したシーケンス番号以上である (Keyed SHA1 の場合), または最後に受信したシーケンス番号より厳密に大きい (Meticulous Keyed SHA1 の場合) 場合, パケットを受け入れます。

Keyed SHA1 および Meticulous Keyed SHA1 認証を使用した送信 (Transmission Using Keyed SHA1 and Meticulous Keyed SHA1 Authentication)

Auth Type フィールドは 4 (Keyed SHA1) または 5 (Meticulous Keyed SHA1) に設定されなければなりません (MUST)。Auth Len フィールドは 28 に設定されなければなりません (MUST)。Auth Key ID フィールドは現在の認証鍵の ID に設定されなければなりません (MUST)。Sequence Number フィールドは bfd.XmitAuthSeq に設定されなければなりません (MUST)。

認証鍵値は最大 20 バイトのバイナリ文字列であり, 必要に応じて末尾のゼロバイトでパディングして, Auth Key/Hash フィールドに配置されなければなりません (MUST)。相互運用性のために, 鍵が設定される管理インターフェースは ASCII 文字列を受け入れなければならず (MUST), 任意のバイナリ文字列を16進形式で設定できるようにもすべきです (SHOULD)。他の設定方法がサポートされてもよいです (MAY)。

SHA1 ハッシュは BFD 制御パケット全体に対して計算されなければなりません (MUST)。結果のハッシュは, 送信前に Auth Key/Hash フィールドに格納されなければなりません (MUST) (パケットで運ばれてはならない (MUST NOT) 秘密鍵を置き換える)。

Keyed SHA1 の場合, bfd.XmitAuthSeq は循環的にインクリメントされてもよいです (MAY) (符号なし 32 ビット値として扱われる場合)。bfd.XmitAuthSeq は, セッション状態が変更されたとき, または送信された BFD 制御パケットが以前に送信されたパケットと異なる内容を運ぶときにインクリメントされるべきです (SHOULD)。bfd.XmitAuthSeq をいつインクリメントするかの決定は, この仕様の範囲外です。議論については, 以下の "Security Considerations" というタイトルのセクションを参照してください。

Meticulous Keyed SHA1 の場合, bfd.XmitAuthSeq は循環的にインクリメントされなければなりません (MUST) (符号なし 32 ビット値として扱われる場合)。

Keyed SHA1 および Meticulous Keyed SHA1 認証を使用した受信 (Receipt Using Keyed SHA1 and Meticulous Keyed SHA1 Authentication)

受信した BFD 制御パケットに認証セクションが含まれていない場合, または Auth Type が正しくない (Keyed SHA1 の場合は 4, Meticulous Keyed SHA1 の場合は 5) 場合, 受信したパケットは破棄されなければなりません (MUST)。

Auth Key ID フィールドが設定されている認証鍵の ID と一致しない場合, 受信したパケットは破棄されなければなりません (MUST)。

Auth Len フィールドが 28 と等しくない場合, パケットは破棄されなければなりません (MUST)。

bfd.AuthSeqKnown が 1 の場合, Sequence Number フィールドを検査します。Keyed SHA1 の場合, シーケンス番号が bfd.RcvAuthSeq から bfd.RcvAuthSeq+(3*Detect Mult) までの範囲 (符号なし 32 ビット循環数空間として扱われる場合, 両端を含む) の外にある場合, 受信したパケットは破棄されなければなりません (MUST)。Meticulous Keyed SHA1 の場合, シーケンス番号が bfd.RcvAuthSeq+1 から bfd.RcvAuthSeq+(3*Detect Mult) までの範囲 (符号なし 32 ビット循環数空間として扱われる場合, 両端を含む) の外にある場合, 受信したパケットは破棄されなければなりません (MUST)。

それ以外の場合 (bfd.AuthSeqKnown が 0), bfd.AuthSeqKnown は 1 に設定されなければならず (MUST), bfd.RcvAuthSeq は受信した Sequence Number フィールドの値に設定されなければならず (MUST), 受信したパケットは受け入れられなければなりません (MUST)。

Auth Key/Hash フィールドの内容を, 受信した Auth Key ID フィールドによって選択された認証鍵で置き換えます。BFD 制御パケット全体の SHA1 ハッシュが Auth Key/Hash フィールドの受信値と等しい場合, 受信したパケットは受け入れられなければなりません (MUST)。それ以外の場合 (ハッシュが Auth Key/Hash フィールドと一致しない), 受信したパケットは破棄されなければなりません (MUST)。