Appendix E. Algorithm for Assigning Link State IDs
0 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 | Key ID | Auth Data Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cryptographic sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 18: Usage of the Authentication field
in the OSPF packet header when Cryptographic
Authentication is employed
ネイバーの状態が「Down」に遷移するたびにゼロに設定されます。OSPF パケットが真正(authentic)なものとして受け入れられたとき、cryptographic sequence number は受信したパケットのシーケンス番号に設定されます。
この仕様は、cryptographic sequence number のロールオーバー手順を提供しません。ルーターが送信している cryptographic sequence number が最大値に達したとき、ルーターは送信している cryptographic sequence number を 0 にリセットすべきです。これが行われた後、ルーターのネイバーは RouterDeadInterval の期間、ルーターの OSPF パケットを拒否し、その後ルーターはインターフェース上のすべての隣接関係を再確立することを強いられます。しかし、多くの実装が cryptographic sequence number として「再起動からの秒数」(または「1960 年からの秒数」など)を使用すると予想されます。このような選択は、cryptographic sequence number フィールドが 32 ビット長であるため、実質的にロールオーバーを防ぎます。
OSPF 暗号認証オプションは機密性(confidentiality)を提供しません。
暗号認証を使用する場合、標準 OSPF パケットヘッダの 64 ビット認証フィールドは、Figure 18 に示すように再定義されます。新しいフィールド定義は以下のとおりです。
Key ID
このフィールドは、OSPF パケットに付加されたメッセージダイジェストを作成するために使用されるアルゴリズムと秘密鍵を識別します。Key Identifier はインターフェースごと(あるいは同等に、サブネットごと)に一意です。
Auth Data Len
OSPF パケットに付加されたメッセージダイジェストの長さ(バイト単位)。
Cryptographic sequence number
符号なし 32 ビットの非減少シーケンス番号。再生攻撃から守るために使用されます。
OSPF パケットに付加されたメッセージダイジェストは、実際には OSPF プロトコルパケットの一部とは見なされません。メッセージダイジェストは OSPF ヘッダのパケット長には含まれませんが、パケットの IP ヘッダの長さフィールドには含まれます。
各鍵は、インターフェースと Key ID の組み合わせによって識別されます。あるインターフェースには、任意の時点で複数の鍵がアクティブである場合があります。これにより、ある鍵から別の鍵へのスムーズな移行が可能になります。各鍵には、それに関連する 4 つの時間定数があります。これらの時間定数は、時刻(time-of-day)クロック、またはルーターのローカルクロック(たとえば最後の再起動からの秒数)で表現できます。
KeyStartAccept
ルーターが、与えられた鍵で作成されたパケットの受け入れを開始する時刻。
KeyStartGenerate
ルーターが、パケット生成のためにその鍵の使用を開始する時刻。
KeyStopGenerate
ルーターが、パケット生成のためにその鍵の使用を停止する時刻。
KeyStopAccept
ルーターが、与えられた鍵で作成されたパケットの受け入れを停止する時刻。
スムーズな鍵移行を実現するため、KeyStartAccept は KeyStartGenerate より小さく、KeyStopGenerate は KeyStopAccept より小さくすべきです。KeyStopGenerate と KeyStopAccept が未指定のままの場合、鍵の寿命は無限です。新しい鍵が古い鍵を置き換える場合、新しい鍵の KeyStartGenerate 時刻は、古い鍵の KeyStopGenerate 時刻以下でなければなりません。
運用上の問題を避けるため、最後の鍵がワームまたはコールドのいずれかのシステム再起動をまたいでも鍵の保存は永続すべきです。インターフェースに関連付けられた最後の鍵の有効期限が切れた場合、未認証状態に戻ることは許容されず、ルーティングを中断することも推奨されません。したがって、ルーターは「最後の認証鍵の期限切れ」通知をネットワーク管理者に送信し、寿命が延長されるか、ネットワーク管理によって鍵が削除されるか、新しい鍵が設定されるまで、その鍵を無限の寿命を持つものとして扱うべきです。
D.4 Message generation(メッセージ生成)
OSPF パケットの内容を構築した後、送信インターフェースの Autype 値によって示される認証手順が、パケット送信前に呼び出されます。認証手順は、OSPF パケットを次のように変更します。
D.4.1 Generating Null authentication(Null 認証の生成)
Null 認証を使用する場合、パケットは次のように変更されます。
(1) 標準 OSPF ヘッダの Autype フィールドを 0 に設定します。
(2) 標準 OSPF ヘッダの checksum フィールドを、OSPF パケットヘッダから始まり 64 ビット認証フィールドを除くパケット全体の標準 IP チェックサムに設定します。このチェックサムは、認証フィールドを除く、パケット内のすべての 16 ビットワードの 1 の補数和の 16 ビット 1 の補数として計算されます。パケットの長さが 16 ビットワードの整数倍でない場合、チェックサム計算前にゼロのバイトでパディングされます。
D.4.2 Generating Simple password authentication(単純パスワード認証の生成)
単純パスワード認証を使用する場合、パケットは次のように変更されます。
(1) 標準 OSPF ヘッダの Autype フィールドを 1 に設定します。
(2) 標準 OSPF ヘッダの checksum フィールドを、OSPF パケットヘッダから始まり 64 ビット認証フィールドを除くパケット全体の標準 IP チェックサムに設定します。このチェックサムは、認証フィールドを除く、パケット内のすべての 16 ビットワードの 1 の補数和の 16 ビット 1 の補数として計算されます。パケットの長さが 16 ビットワードの整数倍でない場合、チェックサム計算前にゼロのバイトでパディングされます。
(3) OSPF パケットヘッダの 64 ビット認証フィールドを、インターフェースに対して設定された 64 ビットパスワード(すなわち認証キー)に設定します。
D.4.3 Generating Cryptographic authentication(暗号認証の生成)
暗号認証を使用する場合、インターフェースに対して複数の鍵が設定されている場合があります。この場合、メッセージ生成に対して有効な鍵(すなわち KeyStartGenerate <= 現在時刻 < KeyStopGenerate である鍵)のうち、最も最近の KeyStartGenerate 時刻を持つものを選択します。この鍵を使用して、パケットを次のように変更します。
(1) 標準 OSPF ヘッダの Autype フィールドを 2 に設定します。