[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RPSEC] rate limiting management traffic, redux



At 4:22 PM -0700 4/17/03, Mark Handley wrote:
 >>What do you do about sequence number re-initialization?  If this is
being used to protect routing traffic, and a router restarts, do you
require stable storage to preserve the previous sequence numbers?

Good question.

At a minimum, stable storage is needed for the keys, but they change
slowly, so maintaining that ought not be too hard. It would be harder
for the per-sender window data to be saved, so we ought to have a
plan for re-initialization.

A likely approach is to have the router that crashed initiate a
connection to each authorized management entity to reinitialize,
e.g., putting a new key in place and resetting the sequence number to
zero. In the re-initialization process, the router would engage in a
handshake with the management entities, using a nonce to ensure
freshness, and because the router initiated the handshake, it can at
least be protected against an attacker without access to the packets
it sends as part of the re-initialization process. We may be able to
be clever here too. For example, we could take the nonce generated by
the router and use it as an input to generate the new key from the
old key, so that the router and the management entity can very
quickly transition to the new key and resume secure communication.
I'm not sure I understand your solution, so let me see if I can
restate it.

Suppose I have two routers, A and B that were communicating securely.
Now, A restarts.  How is B going to accept any more packets from A, as
A can no longer send packets that fall in the window?

I think you implied (trying to fill in the details myself):

 - A sends a re-initialization packet to B with nonce_A.

 - B replies with nonce_A and a new nonce_B.

 - A sends nonce_A and nonce_B back to B along with the new sequence
   number it wants to use and the one-way hash of nonce_A, nonce_B,
   the new sequence number and the secret.

 - On success, B sends nonce_A and nonce_B back to A, the new sequence number
   specified by A, and the one-way hash of nonce_B (but not nonce_A to
   avoid replay) the new sequence number and the secret.

On success, the new secret becomes the hash of the old secret and the
two nonces.

The reason for the last phase is to avoid a DoS vulnerability from
someone who can see traffic from A to B.  They can flood A with
re-initialization replies giving many different values of nonce_B.
Router A will have to respond to all of them to reliably set up
communication.  So we need to add a final phase so A unambiguously
knows which one was successful.  Also need to be careful not to be
used as an oracle - I think the above is OK, but I may have missed
something.

Is this more or less what you had in mind?

 - Mark
Mark,

I like the suggestions Damir made, to include data in each message to make forgery hard and thus allow a router to reject bogus re-initialization attempts.

When I dashed off the quick message late yesterday afternoon I was thinking more about the router-to-management station case, where there is less of a need to worry about processing for bogus re-initialization messages. The router-to-router case was not foremost on my mind. But, it is nice to have a unified way to deal with both cases and I think we are heading in that direction.

Steve
_______________________________________________
RPSEC mailing list
RPSEC@ietf.org
https://www1.ietf.org/mailman/listinfo/rpsec