CoAP sobre la duplicación de DTLS de epoch y seq no

0

Actualmente estoy viendo la sobrecarga de DTLS al ejecutar CoAP y encontré algo extraño.

El encabezado de la capa de registro DTLS, 13 bytes, consta de: { tipo de contenido, 1 byte versión, 2 bytes época, 2 bytes seq_no, 6 bytes longitud, 2 bytes }

AES_CCM_128_8 tiene una etiqueta de 8 bytes

La sobrecarga de DTLS para la capa de registro debe ser de 13 bytes para el encabezado de grabación y de 8 bytes para la etiqueta, haciendo que la sobrecarga total sea de 21 bytes.

Pero cuando miro en Wirehark, la sobrecarga es en realidad de 29 bytes.

El motivo de esto es que epoch y seq_no se incluyen dos veces, una en el encabezado del registro y una en la carga útil. es decir, la carga útil es epoch + seq_no + tag + coap

Esto parece muy extraño, ¿por qué duplicar esto? Estoy ejecutando Californium para CoAP con el complemento de Scandium para DTLS.

Aquí hay un enlace a un archivo pcap enlace

    
pregunta joakimb 28.05.2016 - 15:38
fuente

1 respuesta

2

El formato AEAD, después del encabezado de registro DTLS de 13 bytes que describe correctamente, comienza con un nonce explícito de 8 bytes (combinado con nonce implícito, también conocido como 'salt' de la derivación de la clave para formar el real mientras tanto); este puede ser (epoch +) seqnum .

Cotización enlace (que se aplica tanto a TLS como a DTLS, recuerde):

  

[...] El      nonce_explicit es la parte "explícita" del nonce. Es elegido por      El remitente y se lleva en cada registro TLS en el      GenericAEADCipher.nonce_explicit field. La longitud nonce_explicit      (SecurityParameters.record_iv_length) es de 8 octetos. Cada valor de la      nonce_explicit DEBE ser distinto para cada invocación distinta de      Función de cifrado GCM para cualquier clave fija. No cumplir con esto      requisito de singularidad puede degradar significativamente la seguridad. los      nonce_explicit PUEDE ser el número de secuencia de 64 bits (siempre que esos      se garantiza que los valores cumplen con el requisito de distinción).

     

En DTLS, el seq_num de 64 bits es la época de 16 bits concatenada con la      Seq_num de 48 bits.

    
respondido por el dave_thompson_085 29.05.2016 - 11:15
fuente

Lea otras preguntas en las etiquetas