-
Notifications
You must be signed in to change notification settings - Fork 205
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Confirm Retire Prior To via Acknowledgement #3548
Conversation
I don't think that we should go against established principles to solve something that can be solved more trivially. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this direction is untenable, but I think we need to not rely on acknowledgements to drive the state machine.
Instead, I'd suggest keying off use of a CID issued after the Retire Prior To as indication that the RPT was received.
In that world, I think the model is: a receiver of Retire Prior To doesn't need to use RCID to explicitly retire prior CIDs and instead as soon as it starts using a CID issued after the Retire Prior To, it's assumed all the prior CIDs have been retired. Given there's already a MUST about no longer using the new CID immediately, this doesn't seem that problematic.
I think that's a fairly solid direction, now that I write it down, are there any issues I'm not thinking of?
IMO, #3547 is a heuristic that mitigates the problem, but doesn't quite solve it. Additionally, it is more complex to implement than this proposal, as it requires tracking all the additional state to retire the CIDs.
I still prefer the ACK approach, personally, but I do think I'd prefer this suggestion over #3547. I think it would work pretty much the same as the ACK approach, but just uses a different implicit signal. |
Does this PR give us protection against the other attack, that uses intentional migration as the attack vector (#3509 (comment))? The problem is not limited to the use of RPT. |
The complication is that RPT doesn't have to immediately get rid of all old CIDs and start fresh; that's just one scenario. Consider the load-balancer key rotation case:
|
Another proposal to fix #3509. Summary of design changes:
This proposal eliminates the extra state required to retire the CIDs requested by their peer because the CIDs can immediately be discarded. The only state required by the receiver is what was already required to acknowledge the packet.