On Fri, Feb 26, 2016 at 01:27:45AM -0800, Judson Wilson wrote:
> Hello folks,
> 
> How this helps: In the current draft, an endpoint that sends a KeyUpdate
> message and later receives a KeyUpdate message cannot know whether the
> other side has actually updated its receive keys. The two messages may have
> been generated independently and crossed in flight. Putting a
> receive_generation field in the KeyUpdate message lets an endpoint confirm
> that the other side has received and acted upon an earlier KeyUpdate
> message.

Well, the KeyUpdates are designed to be asynchronous so that the other
end does not need to know if the other has acted on KeyUpdate.
 
> One way for a client to grant delayed read-only access in TLS 1.3 is with a
> "rotate and release." The client starts by sending a KeyUpdate. Later,
> after all traffic keys from the previous generation have been superseded on
> both sides, the client releases the (superseded) traffic keys to the
> middlebox. The middlebox can use the keys to decrypt the previous
> generation of ciphertext, without danger of compromising the integrity of
> the session. The challenge is that an endpoint can't safely release its old
> send keys until it knows that the other side has updated its receive keys.
> Hence the receive_generation field.

There are better (and less broken) ways to do this kind of thing
(involving two MACs).
 
> We think this is a pretty lightweight way to resolve the ambiguity from
> KeyUpdates crossing in flight; it doesn't add any blocking, waiting, or
> extra rounds or messages. Thanks in advance for any feedback.

The KeyUpdate design is so that crossings don't matter.



-Ilari

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to