6.7.4. Keyed SHA1 and Meticulous Keyed SHA1 Authentication (Keyed SHA1 und Meticulous Keyed SHA1-Authentifizierung)
6.7.4. Keyed SHA1 and Meticulous Keyed SHA1 Authentication (Keyed SHA1 und Meticulous Keyed SHA1-Authentifizierung)
Die Keyed SHA1 und Meticulous Keyed SHA1-Authentifizierungsmechanismen sind sehr ähnlich zu denen, die in anderen Protokollen verwendet werden. Bei diesen Authentifizierungsmethoden werden ein oder mehrere geheime Schlüssel (mit entsprechenden Schlüssel-IDs) in jedem System konfiguriert. Einer der Schlüssel ist in einem SHA1 [SHA1]-Hash enthalten, der über das ausgehende BFD Control Packet berechnet wird, aber der Schlüssel selbst wird nicht im Paket übertragen. Um Replay-Angriffe zu vermeiden, wird auch eine Sequenznummer in jedem Paket übertragen. Bei Keyed SHA1 wird die Sequenznummer gelegentlich inkrementiert. Bei Meticulous Keyed SHA1 wird die Sequenznummer bei jedem Paket inkrementiert.
Das empfangende System akzeptiert das Paket, wenn die Schlüssel-ID mit einem der konfigurierten Schlüssel übereinstimmt, ein SHA1-Hash einschließlich des ausgewählten Schlüssels mit dem im Paket übertragenen übereinstimmt und die Sequenznummer größer oder gleich der zuletzt empfangenen Sequenznummer ist (bei Keyed SHA1) oder strikt größer als die zuletzt empfangene Sequenznummer ist (bei Meticulous Keyed SHA1).
Übertragung mit Keyed SHA1 und Meticulous Keyed SHA1-Authentifizierung
Das Auth Type-Feld MUSS auf 4 (Keyed SHA1) oder 5 (Meticulous Keyed SHA1) gesetzt werden. Das Auth Len-Feld MUSS auf 28 gesetzt werden. Das Auth Key ID-Feld MUSS auf die ID des aktuellen Authentifizierungsschlüssels gesetzt werden. Das Sequence Number-Feld MUSS auf bfd.XmitAuthSeq gesetzt werden.
Der Authentifizierungsschlüsselwert ist eine binäre Zeichenkette von bis zu 20 Bytes und MUSS in das Auth Key/Hash-Feld eingefügt werden, bei Bedarf mit nachfolgenden Null-Bytes aufgefüllt. Zur Interoperabilität MUSS die Verwaltungsschnittstelle, über die der Schlüssel konfiguriert wird, ASCII-Zeichenketten akzeptieren und SOLLTE auch die Konfiguration jeder beliebigen binären Zeichenkette in hexadezimaler Form ermöglichen. Andere Konfigurationsmethoden KÖNNEN unterstützt werden.
Ein SHA1-Hash MUSS über das gesamte BFD Control Packet berechnet werden. Der resultierende Hash MUSS vor der Übertragung im Auth Key/Hash-Feld gespeichert werden (wobei der geheime Schlüssel ersetzt wird, der NICHT im Paket übertragen werden DARF).
Bei Keyed SHA1 KANN bfd.XmitAuthSeq in zirkulärer Weise inkrementiert werden (wenn als vorzeichenloser 32-Bit-Wert behandelt). bfd.XmitAuthSeq SOLLTE inkrementiert werden, wenn sich der Sitzungszustand ändert oder wenn das übertragene BFD Control Packet einen anderen Inhalt als das zuvor übertragene Paket trägt. Die Entscheidung, wann bfd.XmitAuthSeq inkrementiert werden soll, liegt außerhalb des Geltungsbereichs dieser Spezifikation. Siehe den Abschnitt mit dem Titel "Security Considerations" (Sicherheitsüberlegungen) unten für eine Diskussion.
Bei Meticulous Keyed SHA1 MUSS bfd.XmitAuthSeq in zirkulärer Weise inkrementiert werden (wenn als vorzeichenloser 32-Bit-Wert behandelt).
Empfang mit Keyed SHA1 und Meticulous Keyed SHA1-Authentifizierung
Wenn das empfangene BFD Control Packet keinen Authentication Section enthält oder der Auth Type nicht korrekt ist (4 für Keyed SHA1 oder 5 für Meticulous Keyed SHA1), MUSS das empfangene Paket verworfen werden.
Wenn das Auth Key ID-Feld nicht mit der ID eines konfigurierten Authentifizierungsschlüssels übereinstimmt, MUSS das empfangene Paket verworfen werden.
Wenn das Auth Len-Feld nicht gleich 28 ist, MUSS das Paket verworfen werden.
Wenn bfd.AuthSeqKnown 1 ist, untersuchen Sie das Sequence Number-Feld. Bei Keyed SHA1, wenn die Sequenznummer außerhalb des Bereichs von bfd.RcvAuthSeq bis bfd.RcvAuthSeq+(3Detect Mult) inklusive liegt (wenn als vorzeichenloser zirkulärer 32-Bit-Zahlenraum behandelt), MUSS das empfangene Paket verworfen werden. Bei Meticulous Keyed SHA1, wenn die Sequenznummer außerhalb des Bereichs von bfd.RcvAuthSeq+1 bis bfd.RcvAuthSeq+(3Detect Mult) inklusive liegt (wenn als vorzeichenloser zirkulärer 32-Bit-Zahlenraum behandelt), MUSS das empfangene Paket verworfen werden.
Andernfalls (bfd.AuthSeqKnown ist 0) MUSS bfd.AuthSeqKnown auf 1 gesetzt werden, bfd.RcvAuthSeq MUSS auf den Wert des empfangenen Sequence Number-Felds gesetzt werden, und das empfangene Paket MUSS akzeptiert werden.
Ersetzen Sie den Inhalt des Auth Key/Hash-Felds durch den durch das empfangene Auth Key ID-Feld ausgewählten Authentifizierungsschlüssel. Wenn der SHA1-Hash des gesamten BFD Control Packets gleich dem empfangenen Wert des Auth Key/Hash-Felds ist, MUSS das empfangene Paket akzeptiert werden. Andernfalls (der Hash stimmt nicht mit dem Auth Key/Hash-Feld überein) MUSS das empfangene Paket verworfen werden.