On Tue, Mar 21, 2017 at 2:24 AM, Martin Thomson <martin.thom...@gmail.com>
wrote:

> The doc says that it is maintained at https://github.com/tlswg/dtls13-spec
> This is untrue (currently).
> I found it at https://github.com/hannestschofenig/tschofenig-ids


Actually it lives at:
https://github.com/ekr/dtls13-spec <https://github.com/tlswg/dtls13-spec>

And I have issues filed on this already, so we can rplicate.


> Speaking of which, it would be really nice if there were an issue
> tracker that we could use for this.  I hope that the working group
> adopts this an moves it to this location so that I don't have to dump
> issues in an email.  Issues in email get lost.
>
> I realize that we're going to look carefully at the packet format and
> probably streamline the record structure a little.  ekr has my
> analysis on this, which I'm happy to share.
>

https://github.com/ekr/dtls13-spec/issues/5:



> The diagrams in Section 5.5 talk about discrete flights, which makes
> sense when talking about the handshake, but once it starts,
> application data can be continuously exchanged.  That's a detail that
> might be lost.
>
> Retransmissions of handshake messages use new record sequence numbers
> (though the handshake sequence number stays the same).  This really
> isn't dealt with prominently enough to my mind.  It's important that
> repacketization doesn't produce a two-time pad.
>

OK. PR wanted.



I believe that the rekeying design needs a little better description.
> This is what I've implemented and what I think the intent is:
> * if you want to update, just send with the next epoch
> * if you see the other side update, and you haven't already, update
> yourself
> * don't update until you see that the other side has used the current epoch
>
> That's also what QUIC currently uses.  With this design, you can
> reduce the epoch bits to 2 during the handshake and 1 afterwards, if
> you care about saving bits.
>

Yeah, I haven't thought through this piece of the design space yet.


The draft is says this, which I can't really parse:
>
>    Upon receiving
>    a payload with such a new epoch value, the receiver MUST update their
>    receiving keys and if they have not already updated their sending
>    state up to or past the then current receiving generation MUST send
>    messages with the new epoch value prior to sending any other
>    messages.
>
> I really don't understand the "prior to sending any other messages" part.
>
> Is this right?
>
>    Implementations that receive a payload with an epoch value for which
>    no corresponding cipher state can be determined MUST generate a
>    "unexpected_message" alert.  For example, client incorrectly uses
>    epoch value 5 when sending early application data in a 0-RTT
>    exchange.  A server will not be able to compute the appropriate keys
>    and will therefore have to respond with an alert.
>
> It seems like that is in violation of the "drop if you can't decrypt it"
> rule.
>

Probably. Maybe OK during the handshake, though, as it's basically a state
error.

I wonder how many implementations do this:
>
>    However, a DTLS implementation
>    which would ordinarily issue an alert SHOULD generate a new alert
>    message if the offending record is received again
>
> NSS certainly doesn't.
>

Yeah, I'm not sure. I wouldn't object to removing this.



> Section 5.5.2 mentions re-handshake.  That's not possible any more.
> Probably best to use NewSessionTicket or post-handshake client
> authentication as the example here.
>

Thanks.

-Ekr


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

Reply via email to