On Jan 21, 2024, at 10:43 AM, Jeffrey Haas <jh...@pfrc.org> wrote: > To your final point, ISAAC is reasonably secure for the Up case. However it > doesn’t authenticate the packet contents.
What fields can be modified which *don't* affect the BFD state machine? Most of the fields are mandated to have specific values for this particular session and this particular state. i.e. We may not need the full packet to be authenticated in order to maintain an "Up" state. Perhaps the RX / TX intervals could be modified without detection. We could update the ISAAC doc to say that these fields need to be cached when ISAAC starts, and can only be changed via an Auth Type which authenticates the full packet content. Doing that would address pretty much all of the issues related to not authenticating the packet. Either a received packet is byte-for-byte identical to what we expect (plus ISAAC key), or it's not, and we drop it. So the process is: BFD packet is exactly what we expect (except for Auth Key) | +--- no? drop it | | yes | check if the ISAAC Auth Key matches | +--- no? drop it | | yes | session remains Up. I see a fully authenticated packet as being needed for state changes, or perhaps modifying the RX / TX intervals. But at a very high level, so long as the receiver sees the correct ISAAC Auth Type, the rest of the BFD packet almost doesn't matter. No one other than the sender could have calculated the correct Auth Key. Therefore the sender is still Up. Alan DeKok.