Resumen

  • RFC 2407 dio significado común al DOI 1, a los bits de Situation, a los tipos de identidad, a protocolos, transforms, atributos y avisos. El formato permitía interpretar una afirmación, no aceptarla automáticamente.
  • El propio documento dejó la política de seguridad fuera de su alcance. La prueba completa debía unir identidad declarada, autenticación, regla local, propuesta elegida, SA instalada y efecto posterior.

Un FQDN dentro de un Identification Payload puede ser perfectamente válido como cadena y completamente insuficiente como autoridad. El receptor sabe dónde termina, qué tipo numérico lo precede y qué política podría consultarlo. Todavía necesita saber quién autenticó el intercambio y si la credencial contiene el nombre usado para decidir.

La RFC 2407, publicada en noviembre de 1998, construyó ese lenguaje para IPsec sobre el marco general de ISAKMP. Registró el DOI IPsec con valor 1 y definió cómo interpretar Situation, Security Association e Identification. También organizó los espacios de protocolos, transforms, atributos y notificaciones.

El diseño resolvía interoperabilidad, no toda la epistemología de la seguridad. Una dirección IPv4 y un nombre distinguido X.500 requerían representaciones distintas. Un número común permitía distinguirlas. Pero la representación no decía si el par controlaba la dirección, si el certificado vinculaba el nombre o si una regla vigente autorizaba el tráfico.

Por eso la norma indicó que, cuando un certificado autenticaba IKE, las identidades utilizadas como entrada de la política local debían estar contenidas en ese certificado. Era una regla de unión entre capas. El payload presentaba un nombre; la credencial aportaba el vínculo; la política decidía qué hacer con él.

ID_KEY_ID mostró el extremo local del contrato. Su contenido podía ser un flujo opaco, específico de un proveedor, que seleccionaba una clave precompartida en Aggressive Mode. Todos podían reconocer el tipo 11 y aun así no compartir el significado interno de sus bytes.

La Situation funcionaba igual. SIT_IDENTITY_ONLY era obligatoria y la ausencia total de Identification Payload exigía abortar. SIT_SECRECY y SIT_INTEGRITY añadían niveles, categorías y un Labeled Domain Identifier. Ese identificador nombraba el espacio semántico de las etiquetas; no incluía la política completa ni comprobaba que el receptor la aplicara.

La sección de IANA permitía asignar dominios etiquetados sin documentación obligatoria. La decisión tenía sentido para evitar colisiones: la unicidad del número no debía depender de que una política se convirtiera en estándar público. Pero también fijaba el límite. El registro podía decir qué namespace estaba siendo invocado; no podía garantizar compatibilidad entre las decisiones privadas dentro de él.

RFC 2407 lo declaró sin rodeos: el DOI no imponía requisitos específicos de política de seguridad y la política del host quedaba fuera de alcance. Sugirió listas locales de direcciones, máscaras, direcciones, nombres comodín y firewalls, pero no convirtió una de ellas en autoridad universal.

Los Protocol IDs y Transform IDs tampoco tomaban la decisión. Una propuesta podía ofrecer ISAKMP, AH, ESP e IPComp, incluso varias suites de fase II en una sola negociación. Qué protocolos podían combinarse era una decisión de política del host. Aceptar ESP no bastaba para conocer algoritmo de autenticación, longitud de clave, modo, grupo o duración.

Los atributos completaban la sintaxis: duración en segundos o kilobytes, grupo, encapsulación, algoritmo de autenticación, longitud y rondas de clave, parámetros de compresión. Algunas parejas de transform y atributo estaban definidas; otras no. El número del transform sin su lista era una frase incompleta.

Tampoco la frase completa equivalía a una ejecución. El respondedor seleccionaba. El gestor de claves debía instalar. El núcleo debía asociar selectores y SPI. Los paquetes tenían que atravesar la SA. La aplicación todavía podía rechazarlos. Cada verbo pertenecía a un componente diferente.

Las notificaciones privadas del DOI preservaban algunas de esas diferencias. RESPONDER-LIFETIME comunicaba la duración real elegida por el respondedor. REPLAY-STATUS informaba su decisión de habilitar o deshabilitar la detección de repeticiones. La presencia de un contador en ESP no probaba esa decisión receptora.

INITIAL-CONTACT era una afirmación aún más delicada. El emisor declaraba que establecía su primera SA con el sistema remoto. El receptor podía suponer un reinicio y borrar asociaciones anteriores. Autenticar al emisor no convertía la suposición en observación. Una operación responsable necesitaba conservar cuáles SA existían, qué regla autorizó borrarlas y cómo revertir.

La ubicación del aviso también afectaba su fuerza. RFC 2407 prohibía estos status messages en Aggressive Mode por falta de vínculo suficiente. Main Mode y Quick Mode protegían de forma distinta. La etiqueta del mensaje era estable; la prueba criptográfica que la rodeaba dependía del intercambio.

La lectura de Lu Heng sobre las capas de realidad ayuda a evitar el atajo. El número IANA pertenece al registro. El payload pertenece al mensaje. El certificado pertenece a la prueba de vínculo. La regla pertenece a la política. La SA pertenece al estado ejecutable. El paquete y la aplicación pertenecen al resultado. Una capa no hereda automáticamente la verdad de otra.

La primacía del código en ejecución añade una pregunta sencilla: ¿qué regla coincidió y qué SA trató realmente el paquete? Si la respuesta solo muestra “DOI 1” o “IKE completo”, describe potencial y coordinación, no el resultado.

RFC 4306 sustituyó en 2005 a RFC 2407, 2408 y 2409 con IKEv2. En 2023, el IESG pasó el conjunto IKEv1 a Historic por la madurez de IKEv2 y la ausencia prolongada de evolución. RFC 7296 es el estándar posterior. El valor de RFC 2407 hoy es histórico: muestra un sistema que separó cuidadosamente vocabulario compartido y decisión local.

La lección sirve más allá de IPsec. Un campo de identidad puede estar presente, bien formado y protegido dentro de un intercambio. Aun así, la organización debe conservar el vínculo verificado, la regla que lo consumió, la selección realizada y el efecto observado. El nombre estaba en el mensaje. La autoridad aparece solo cuando la cadena está completa.

Fuentes