I remember being confused by the same part of the RFC, and to have two interpretations:

Interpretation 1, protected payload does not include the tag:

pn_len + min_payload_len = 4 + sample_len

=> min_payload_len = 20 - pn_len (we never sample the tag)

Interpretation 2, protected payload includes the tag:

pn_len + min_payload_len + 16 =  4 + sample_len

=> min_payload_len =  20 - 16 - pn_len

Then the text:

>The cipher suites defined in [TLS13] -- other than TLS_AES_128_CCM_8_SHA256, for which a header protection >scheme is not defined in this document -- have 16-byte expansions and 16-byte header protection samples. >This results in needing at least 3 bytes of frames in the unprotected payload if the packet number is encoded >on a single byte, or 2 bytes of frames for a 2-byte packet number encoding.

indicates that the second interpretation might be the right one. I think quiche implements neither of these interpretations (it goes with a min_payload_len = 4). So I am still confused.

Best,

Florentin

Le 13/03/25 à 19:52, Christian Huitema a écrit :
I have a question regarding minimal size of packets. If you read https://datatracker.ietf.org/doc/html/rfc9001#section-5.4.2, it has text explaining that "packets are padded so that the combined lengths of the encoded packet number and protected payload is at least 4 bytes longer than the sample required for header protection". I am under the impression that the "protected payload" length includes the length of the AEAD checksum, and that when the checksum length is more than 4 bytes no padding is ever necessary. Am I wrong?

-- Christian Huitema


Reply via email to