Hi Eric,

Thanks for the response!

> From: Eric Rescorla <e...@rtfm.com> 
> Sent: Friday, July 26, 2019 4:19 PM
> To: Pascal Van Leeuwen <pvanleeu...@verimatrix.com>
> Cc: draft-ietf-tls-dtl...@ietf.org
> Subject: Re: draft-ietf-tls-dtls13 - sequence number encryption
>
> Hi Pascal,
>
> Thanks for your note. I would encourage you to send it to the TLS WG (this 
> alias just goes to the authors). With that said, some comments below
>
I guess I clicked the wrong emai button - sorry about that. I added the WG 
email to the cc list.

>> On Fri, Jul 26, 2019 at 1:53 AM Pascal Van Leeuwen 
>> <mailto:pvanleeu...@verimatrix.com> wrote:
>> In draft 29, sequence number encryption was added. Now I can't find any 
>> rationale for 
>> doing so in the draft (tampering with it was already detectable as it's 
>> authenticated), 
>> and I don't know of any other protocol encrypting the sequence number, but 
>> the way 
>> that that's currently specified makes HW implementation very difficult and 
>> costly, 
>> so some proper cost-benefit analysis would be appropriate IMHO.
>>
>> The current specification calls for encrypting the sequence number by XOR-in 
>> it with
>> the output of encrypting part of the ciphertext. From a hardware 
>> perspective, this 
>> means either taking the output of your encryption pipeline and feeding it 
>> back into
>>  the input (killing performance!) -or- adding another full encryption 
>> pipeline behind
>> the already existing one, which is very costly (and not useful for anything 
>> else).
>
> Yeah, we're aware of that. It's kind of unfortunate, but we didn't really 
> have another option.
>
Sounds like that, from the rest of the response. Although I still wonder why 
this is so 
important. The RFC does not say much about the why at the moment.

>> I would propose the following options to be considered (in the order from 
>> most
>> desirable to least desirable, from a HW implementation point of view):
>>
>> 1) Making the sequence number encryption optional, to be negotiated, to
>> allow trading off between performance/cost and the added security which
>> is also not provided by any existing alternatives either
>>
> This was discussed and rejected, but it's certainly somethign you could raise 
> again
>
Would that help? I suppose it was rejected for a good reason ...

>> or
>>
>> 2) Encrypt the sequence number as part of the normal data stream
>> (Or am I missing some security implications for doing it that way? I guess 
>> it would add some known and/or easy to guess plaintext but the encryption
>> algorithm used (AES or Chacha20) should be strong enough to resist that.
>> I understand you don't want to decrypt the full packet before you do the 
>> anti-replay check, but that can still be done even if you do it this way by
>> just doing the sequence number check after decrypting sufficient data
>> to access it, but before decrypting the rest of the payload)
>>
> I don't believe that this will work, because the sequence number is used to
> generate the AEAD nonce, so you will not be able to decrypt.
>
Ah yes, for TLS 1.3 the IV is now implicit and taken from the sequence number.
I didn't realise that for a second, my bad . I guess that's a good reason and 
having 
the nonce encrypted complicates the HW design even further, unfortunately :-(

>> 3) Use some other alternative way to obtain the sequence number 
>> encryption keystream that doesn't depend on the ciphertext output,
>> e.g. by encrypting the/some nonce with some other secret key.
>>
> We were unable to find a way to do this that didn't have a lot of data 
> expansion.
>
Using input that's NOT the input or output to the main cipher would already 
help a lot ...
but with the nonce itself out of the picture there's indeed not a whole lot you 
can use
without having to add it to the encapsulated packet. Not having any bright 
ideas at
the moment.

> Incidentally, QUIC has exactly the same design, so you may want to raise this
> issue there as well.
>
Ok, good to know,  although we don't do anything with QUIC at the moment.

>
> -Ekr
>
>> or
>>
>> 4) At the very least, don't make the sequence number encryption depend
>> on the main ciphersuite but e.g. always make it use AES-ECB. Or ...
>> make it seperately negotiatable so you can at least always select AES-ECB.
>> Why? Because then at least that 2nd encryption engine only needs a 
>> single algorithm instead of 2 (or more), saving precious chip area ...

Regards,
Pascal van Leeuwen
Silicon IP Architect, Multi-Protocol Engines @ Verimatrix
http://www.insidesecure.com
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to