¿Sobre qué datos se calculan los datos de verificación en el mensaje de reconocimiento de terminación DTLS?

1

Actualmente estoy intentando implementar DTLS 1.0 y estoy atascado en el mensaje final del protocolo de enlace. Parece que mi cálculo de Verify_data es incorrecto.

RFC 4347 dice en 4.2.6.

Finished messages have the same format as in TLS.  However, in order
to remove sensitivity to fragmentation, the Finished MAC MUST be
computed as if each handshake message had been sent as a single
fragment.

¿Eso significa que los mensajes de intercambio de manos reensamblados se han activado como si fueran mensajes de enlace de TLS? Es decir. con encabezado pero sin los campos message_seq, fragment_offset y fragment_length? ¿O son hash sin el encabezado de apretón de manos en absoluto? ¿O es cada mensaje de negociación que contiene un fragmento concatenado?

PD: no puedo etiquetarlo como DTLS porque no tengo suficiente reputación: /

    
pregunta maufl 12.11.2016 - 19:46
fuente

1 respuesta

0

Leí as if ... a single fragment para indicar que formateas cada mensaje como un fragmento que contiene todo el mensaje, es decir, fragoff = 0 fraglen = totlen. La implementación de BouncyCastle Java (a partir de 1.55) está de acuerdo con esto, y creo que alguien se habría dado cuenta si no interactuara:

package org.bouncycastle.crypto.tls;
...
class DTLSReliableHandshake {
...
private Message updateHandshakeMessagesDigest(Message message)
    throws IOException
{
    if (message.getType() != HandshakeType.hello_request)
    {
        byte[] body = message.getBody();
        byte[] buf = new byte[12];
        TlsUtils.writeUint8(message.getType(), buf, 0);
        TlsUtils.writeUint24(body.length, buf, 1);
        TlsUtils.writeUint16(message.getSeq(), buf, 4);
        TlsUtils.writeUint24(0, buf, 6);
        TlsUtils.writeUint24(body.length, buf, 9);
        handshakeHash.update(buf, 0, buf.length);
        handshakeHash.update(body, 0, body.length);
    }
    return message;
}
    
respondido por el dave_thompson_085 13.11.2016 - 08:39
fuente

Lea otras preguntas en las etiquetas