RFC 5246 TLS 1.2: ¿error de ejemplo de relleno?

1

De RFC 5246 , página 22:

Example: If the block length is 8 bytes, the content length
(TLSCompressed.length) is 61 bytes, and the MAC length is 20 bytes,
then the length before padding is 82 bytes (this does not include the
IV.  Thus, the padding length modulo 8 must be equal to 6 in order to
make the total length an even multiple of 8 bytes (the block length).
The padding length can be 6, 14, 22, and so on, through 254.  If the
padding length were the minimum necessary, 6, the padding would be 6
bytes, each containing the value 6.  Thus, the last 8 octets of the
GenericBlockCipher before block encryption would be xx 06 06 06 06 06
06 06, where xx is the last octet of the MAC.

Entonces, 61+20=82 , los últimos 8 octetos contienen siete 06 ? ¿Malentendí algo? ¿O tal documento importante contiene error?

    
pregunta Zergatul 04.06.2017 - 01:36
fuente

1 respuesta

3

El documento es correcto, xx es el último octeto del MAC, seguido por seis veces el octeto 06 como relleno, seguido por el octeto de longitud ( 06 ). El último octeto de longitud no forma parte del relleno.

Consulte la definición de GenericBlockCipher en sección 6.2.3.2 de RFC 5246 :

struct {
    opaque IV[SecurityParameters.record_iv_length];
    block-ciphered struct {
        opaque content[TLSCompressed.length];
        opaque MAC[SecurityParameters.mac_length];
        uint8 padding[GenericBlockCipher.padding_length];
        uint8 padding_length;
    };
} GenericBlockCipher;
    
respondido por el Lekensteyn 04.06.2017 - 02:47
fuente

Lea otras preguntas en las etiquetas