Resumen

  • draft-tiloca-lake-private-use-ranges-01 propone valores de uso privado para tipos de método, códigos de error y etiquetas EAD de EDHOC, todos fuera de las franjas compactas actuales.
  • CBOR representa 4294967295 y -4294967296 con un argumento de cuatro octetos, pero ninguno cabe en un entero con signo de 32 bits.
  • Aceptar el valor en el registro no demuestra que el software lo conserve, que ambos extremos compartan su significado privado ni que la aplicación produzca el efecto esperado.

La escena más peligrosa no es un decodificador que falla. Es uno que acierta y entrega la cifra a una API demasiado pequeña. El mensaje contiene 4294967295; la biblioteca CBOR devuelve la cifra exacta; una capa heredada la almacena como -1; el despachador encuentra un caso válido para -1. El sistema no registra una excepción. Registra una decisión equivocada con apariencia normal.

La revisión 01 de Additional Private Use Ranges in the IANA Registries of the Lightweight Authenticated Key Exchange Protocol hace visible esta frontera. Sus nuevas franjas empiezan en 65536 o -65537 y llegan hasta los extremos de un argumento CBOR de cuatro octetos. Al sumar el octeto inicial, el valor ocupa cinco octetos en el cable.

El argumento tiene 32 bits; el dominio firmado no

RFC 8949 asigna a los enteros positivos el tipo mayor 0 y a los negativos el tipo mayor 1. En el segundo caso, la cifra matemática es -1-N. Por eso el argumento máximo representa tanto 4294967295 en positivo como -4294967296 en negativo. El esquema tiene un bit de alcance que un int32 convencional no posee.

Llamarlo simplemente “valor de 32 bits” oculta el problema. El proyecto exige una representación que preserve toda la franja, por ejemplo un entero firmado de 64 bits o un par signo-magnitud. También exige que las comprobaciones de rango y los cálculos de valor absoluto conserven ese alcance. El requisito continúa en tablas, registros, mensajes internos y persistencia; no termina al salir del parser.

EAD obliga a conservar el signo

En RFC 9528, una etiqueta EAD negativa marca un elemento crítico. IANA registra la magnitud absoluta. Así, 65536 y -65536 designan la misma extensión privada, pero la forma negativa cambia lo que debe hacer un receptor que no la reconoce.

Además, el par cruza una frontera de longitud. 65536 usa un argumento de cuatro octetos. -65536 codifica el argumento 65535 y usa dos. El primero ocupa cinco octetos en total; el segundo, tres. Una optimización que deduce criticidad después de normalizar, o que calcula abs() en el tipo estrecho, puede destruir el dato que dirigía el control de errores.

La trazabilidad necesita el label firmado original, la magnitud usada para buscar en el registro y el resultado de criticidad. Ninguno sustituye a los otros dos.

La coordinación privada termina donde empieza otro dominio

RFC 8126 no promete unicidad para Private Use. Distintas organizaciones pueden reutilizar la misma cifra con semánticas diferentes. Eso evita que la experimentación propietaria consuma números públicos, pero obliga a delimitar el espacio local.

Una empresa puede coordinar 90000 dentro de una familia de dispositivos. Otra puede usarlo para otra función. Cuando un integrador une ambas familias, la coincidencia numérica no crea compatibilidad. La evidencia mínima debe nombrar el dominio de asignación, la versión del perfil y el conjunto de pares que lo aceptan. Un extremo desconocido debe generar un rechazo explicable, no una interpretación por proximidad.

Un número ocupa tres superficies de autoridad

En un tipo de método, el número selecciona una construcción de autenticación. En un código de error, selecciona la explicación y posiblemente el camino de recuperación. En EAD, identifica datos que EDHOC trata como opacos y cuyo signo determina criticidad. Usar un único enum genérico para los tres ámbitos abarata el código y mezcla sus consecuencias.

La revisión 01 no denuncia un producto ni afirma una vulnerabilidad observada. Declara que las consideraciones de seguridad de EDHOC no cambian. Su contribución es más sobria: quien implemente toda la franja debe conservarla. La seguridad del protocolo no convierte automáticamente una representación defectuosa en correcta.

Las pruebas que separan aceptación de interoperabilidad

Una matriz útil incluye 65535/65536, 4294967295, -65536/-65537, -4294967296 y valores inmediatamente exteriores. Debe repetir la misma extensión EAD con signo positivo y negativo, y presentar el mismo número bajo dos perfiles privados incompatibles.

Cada caso verifica bytes, valor matemático, conversión, clasificación de rango, tabla de despacho, criticidad, salida de logs y respuesta al perfil. Si sólo se comprueba que la sesión terminó, el test no observa el lugar donde vive el riesgo.

El registro IANA de EDHOC muestra el punto de partida actual. El historial del documento muestra una propuesta en evolución, no una acción ya consolidada. RFC 9668 tiene otras franjas privadas para tipos de credencial; su existencia no certifica los caminos de código nuevos.

Un recibo que sobreviva al cast

El recibo operativo guarda los octetos originales, el tipo mayor, el ancho del argumento, el entero previo a cualquier reducción, los resultados de conversiones comprobadas, el signo y la magnitud EAD, el dominio privado, el perfil de cada par, el handler seleccionado, la referencia al transcript y el efecto de aplicación. Puede identificar la semántica propietaria con un hash de perfil sin publicarla.

El objetivo no es convertir un número privado en estándar. Es impedir que un valor que era exacto en el cable se vuelva ambiguo en la organización.

Fuentes