Clarify/determine specification for padding bytes, (formerly also PADDING cell)
EDIT: strikethrough content below is now covered in #26870 (moved) instead
==== Background I was trying to interpret the tor-spec for padding bytes, and ending up asking nickm for some clarification over IRC. nickm suggested most of the cc'd for the ticket - I added atagar, too.
==== Unclear areas Here are the points that need clarification / specification:
- spec for padding bytes does not clearly say what senders
MUST
orSHOULD
do, [mentioning that padding is with 0 bytes] or [NUL bytes] - spec for padding bytes does not say what receivers
MUST
orSHOULD
do, when receiving non-zero bytes in the Cell (e.g. warn? ignore?) spec is a bit inconsistent withPADDING
cells ^^[1^^]^^[2^^]
==== Discussion: padding bytes
For the padding bytes that are not part of PADDING
cells, nickm offered the following as a non-exhaustive set of possible forward-compatible options:
- "the [padding] bytes SHOULD be zero, and that implementations MUST ignore them"
- "The first 8 padding bytes MUST be zero; all subsequent padding bytes SHOULD be randomized. Implementations MUST ignore padding bytes"
- "All padding bytes should be randomized; implemenations MUST ignore unrecognized padding bytes" ... and mentioned that "[he doesn't] know enough of the argument in favor of randomization to have a very strong preference"
==== Inconsistency:
PADDING
cell payload(see bullet above)
These references highlight the inconsistency:
^^[1^^]
~~ implies 0 bytes of payload, so the rest should be padded per that section~~
PADDING: Payload is unused.
per [3 "Cell Packet format"].^^[2^^]
~~ implies the payload of a The contents of a PADDING, VPADDING, or DROP cell SHOULD be chosen randomly, and MUST be ignored.
per [7.2 "Link padding"].PADDING
cell actually is the rest of the size of the cell, and that it SHOULD be chosen randomly~~
The
PADDING
cells were mentioned in IRC but not discussed.I think a simple change to make the spec consistent between the two sections would be this:
PADDING: Payload contains random data. (See Sec 7.2)
However, given the other points here, is that correct?