Para DTLS con autenticación de cliente, el cliente debe enviar un mensaje CertificateVerify, que tiene la siguiente estructura:
struct {
digitally-signed struct {
opaque handshake_messages[handshake_messages_length];
}
} CertificateVerify;
De acuerdo con la especificación DTLS ( RFC 6347 - Sección 4.2.6 ), mensajes finalizados ( que también implica tomar un hash de la concatenación de todos los mensajes de intercambio de manos) no considera la fragmentación de paquetes:
Los mensajes CertificateVerify y Finished tienen el mismo formato que en TLS. Los cálculos de hash incluyen mensajes completos de handshake, incluidos Campos específicos de DTLS: message_seq, fragment_offset y fragment_length. Sin embargo, para eliminar la sensibilidad al apretón de manos fragmentación del mensaje, el MAC finalizado DEBE calcularse como si cada uno Se había enviado un mensaje de saludo como un solo fragmento.
¿Este es el caso de CertificateVerify también, es decir, Certificate Verify firma la concatenación de mensajes de intercambio de notas considerando cada mensaje como un fragmento único? Si no es así, ¿hay alguna razón específica para mantener los dos cálculos diferentes? Las implementaciones deberían ser más simples (menores requisitos de almacenamiento) si son las mismas.