Resumen

  • CRYPTO transporta un bloque contiguo, identificado por offset y longitud, dentro del flujo de negociación de un nivel de cifrado.
  • Los límites de la trama y del paquete no prueban un mensaje TLS completo, un vuelo, la aceptación de un certificado ni la disponibilidad de la aplicación.
  • La telemetría debe separar transporte, ensamblaje por nivel, análisis TLS, claves, retransmisión y estados de finalización.

La escena parece sencilla: un observador descifra la protección de un paquete QUIC, encuentra una trama CRYPTO y registra un ClientHello o un Finished completo. Pero QUIC solo expone una porción contigua de bytes de negociación, descrita por offset y longitud, perteneciente a un nivel de cifrado concreto. La trama no contiene una etiqueta que diga “mensaje TLS completo”. Tampoco tiene una marca de final explícito.

Aunque la trama cabe en un único paquete, el flujo que transporta no está limitado al tamaño de ese paquete. Un mensaje TLS o un vuelo puede dividirse entre varias tramas y paquetes. Una sola trama puede comenzar o terminar en mitad de un mensaje. Cuando se vuelve a enviar información criptográfica perdida, los bytes se reencuadran en tramas CRYPTO nuevas y se protegen con las claves del mismo nivel de cifrado que los bytes originales. La nueva forma de empaquetado no prueba un segundo mensaje ni una repetición semántica.

Además, no existe una secuencia CRYPTO única para toda la conexión. Cada nivel de cifrado tiene su propio flujo y sus offsets empiezan en cero. Initial, Handshake y 1-RTT pueden incluir CRYPTO; 0-RTT no. Por eso, dos offsets iguales en niveles distintos no deben unirse. QUIC coloca los bytes en la secuencia del nivel correcto, guarda huecos y puede retener datos de un nivel futuro hasta que TLS pueda utilizarlos. Solo entrega a TLS los bytes contiguos disponibles y lo hace en orden.

TLS conserva otra responsabilidad. QUIC ordena y almacena bytes fuera de orden; TLS almacena los bytes ya entregados y decide cuándo dispone de un mensaje completo. Puede procesarlos de forma incremental o esperar un mensaje o una secuencia completa de mensajes. Quitar la protección de paquete demuestra una condición de transporte, no un análisis TLS satisfactorio. La disponibilidad de una clave aparece como resultado del procesamiento TLS y no se deduce de una sola trama. La trama tampoco demuestra que se haya instalado una clave.

Un registro profesional debe mantener campos independientes: versión QUIC, tipo de paquete, espacio de números de paquete, nivel de cifrado, resultado de la protección y número de paquete; después, offset, longitud y un resumen de datos que proteja la privacidad. Debe registrar la secuencia contigua recibida en ese nivel, los huecos que QUIC conserva y el rango que realmente entrega a TLS. El tipo de mensaje TLS solo debe anotarse cuando TLS haya analizado un mensaje completo.

CRYPTO solo transporta mensajes de negociación TLS. Las alertas TLS se asignan a códigos de error QUIC CONNECTION_CLOSE; los datos de aplicación y los demás tipos de contenido TLS no pueden transportarse en tramas CRYPTO. CRYPTO no tiene control de flujo, identificador de stream, FIN ni final explícito. Las implementaciones deben soportar al menos 4096 bytes CRYPTO fuera de orden. Un offset máximo excesivo puede generar FRAME_ENCODING_ERROR o CRYPTO_BUFFER_EXCEEDED. Son límites y señales del transporte, no pruebas de validación de certificados, transición de claves, finalización TLS o disponibilidad del servicio.

Si TLS avanza a un nivel superior mientras quedan datos del nivel anterior sin consumir, la condición es PROTOCOL_VIOLATION. Cuando se descartan las claves del espacio correspondiente, también se descartan los datos Initial o Handshake pertinentes. Ese ciclo de vida no coincide con una frontera de mensaje TLS. La negociación TLS solo termina cuando la pila TLS informa de ello después de enviar su Finished y verificar el del par. La confirmación de QUIC y la aplicación lista son estados posteriores y separados.

La separación también evita cinco desvíos. TR-048 estudia confirmación y disponibilidad de aplicación; TR-049, paquetes coalescidos dentro de un datagrama UDP; TR-045, el alcance probatorio de un ACK; TR-056, la reconstrucción de números de paquete; y TR-063, la migración hacia una dirección preferida. Ninguno convierte los límites de una trama CRYPTO en límites semánticos TLS.

La práctica correcta es exigir una prueba para cada afirmación. La trama prueba que un paquete autenticado transportó una determinada porción de bytes en un nivel. El ensamblaje prueba continuidad por nivel. El parser TLS prueba un mensaje completo. La validación de certificados, la disponibilidad y descarte de claves, la finalización TLS, la confirmación QUIC y la preparación de la aplicación deben tener recibos independientes.