¿Tengo razón acerca de que el cifrado / descifrado AEAD utiliza un número de secuencia TLS dos veces, la primera vez en el nonce y una segunda en datos adicionales?
¿Y por qué hicieron el número de secuencia de TLS 1.2 2 veces más grande que el número de secuencia de TSP? ¿Por qué necesitan esta sobrecarga?
Acerca de los datos adicionales de rfc5246 # page-25
Los datos autenticados adicionales, que denotamos como datos_adicionales, se definen de la siguiente manera:
additional_data = seq_num + TLSCompressed.type + TLSCompressed.version + TLSCompressed.length;
Acerca de nonce de rfc5288 # page-2
struct { opaque salt[4]; opaque nonce_explicit[8]; } GCMNonce;
La sal es la parte "implícita" del nonce y no se envía en el paquete. En su lugar, el salt se genera como parte del proceso de intercambio: es el client_write_IV (cuando el cliente está enviando) o el server_write_IV (cuando el servidor está enviando). La longitud de la sal (SecurityParameters.fixed_iv_length) es de 4 octetos.
El nonce_explicit es la parte "explícita" del nonce. Es elegido por el remitente y se transporta en cada registro TLS en el campo GenericAEADCipher.nonce_explicit. La longitud nonce_explicit (SecurityParameters.record_iv_length) es de 8 octetos.
Cada valor de nonce_explicit DEBE ser distinto para cada invocación distinta de la función de cifrado GCM para cualquier clave fija. El incumplimiento de este requisito de singularidad puede degradar significativamente la seguridad. El nonce_explicit PUEDE ser el número de secuencia de 64 bits.