Resumen

  • RFC 9709 incorpora a HKDF la codificación DER exacta del AlgorithmIdentifier interno, incluidos sus parámetros, junto con la clave de contenido original.
  • Una modificación de GCM a CBC, o de cualquier parámetro codificado, produce una clave distinta y deja al atacante sin un oráculo útil sobre el texto claro.
  • La mitigación preserva confidencialidad ante esa transformación; no demuestra identidad del remitente, legitimidad del contenido ni permiso para actuar.

El ataque no empieza rompiendo AES

El problema descrito por LAMPS aparece entre el cifrado y su descripción. Un intermediario toma datos CMS protegidos con un modo autenticado como AES-GCM o AES-CCM y presenta determinados bloques como contenido AES-CBC. No conoce la clave. Pretende que el sistema que sí la posee procese el objeto alterado y revele un resultado, un error o un efecto que confirme conjeturas sobre datos estructurados de baja entropía.

La exposición no es automática. En correo S/MIME, el resultado podría ser basura evidente o fracasar al analizar una cabecera. Las diapositivas de IETF 118 indicaban además que no se conocía el alcance de sistemas realmente vulnerables. Sin embargo, esas defensas accidentales dependen de la aplicación. Un visor, un conversor, un acuse o un flujo automático puede ofrecer la señal que otro cliente no muestra.

RFC 9709 cambia el papel del descriptor. El receptor anuncia id-alg-cek-hkdf-sha256 como capacidad S/MIME y lo hace sin parámetros. Cuando el emisor usa la mitigación, ese OID ocupa el contentEncryptionAlgorithm exterior. El parámetro obligatorio de esa capa transporta el AlgorithmIdentifier interior real: el cifrado de contenido y todos sus parámetros.

Ambos extremos derivan entonces CEK-prime mediante HKDF-SHA-256. La CEK original es el material secreto de entrada. La sal es la cadena ASCII fija “The Cryptographic Message Syntax”. El campo info contiene el DER completo del identificador interior: etiqueta y longitud de la secuencia, OID y parámetros codificados. La salida tiene la longitud de la clave inicial, con el límite de 8.160 bytes de HKDF-SHA-256.

Por eso importa la representación exacta. Si se cambia el algoritmo, el vector de inicialización o un parámetro, cambia info y cambia la clave. El mismo texto cifrado deja de ser una prueba bajo la interpretación escogida por el atacante. Si este elimina por completo el OID exterior, el receptor empleará la CEK inicial en lugar de CEK-prime: perderá acceso al mensaje, pero no entregará el claro protegido. La manipulación se manifiesta como indisponibilidad, no como un canal de recuperación de contenido.

Conservar siete hechos distintos

Un registro útil no debería decir simplemente «descifrado correcto». Debe conservar: la capacidad anunciada; el OID exterior recibido; el algoritmo interior y sus parámetros; los bytes DER usados por HKDF; el resultado de autenticación y del procesamiento de datos asociados; cualquier texto, salida del analizador o señal que cruzó el límite de confianza; y la política que autorizó la acción posterior.

Esas capas responden preguntas diferentes. Analizar un mensaje no prueba quién lo creó. Autenticar el cifrado tampoco demuestra que su autor esté autorizado para activar una orden. RFC 9709 separa usos de clave frente a una transformación concreta; no reemplaza firmas, reputación, inspección de contenido ni controles de negocio.

El propio RFC señala dos bordes adicionales. Un atributo message-digest no cifrado puede confirmar una conjetura sobre el texto claro. Y el contenido cifrado no solicitado puede eludir filtros diseñados para observar correo basura o suplantación. Restringir remitentes a una lista aprobada puede ser sensato, pero es política de admisión, no enlace del algoritmo.

Coordinación mínima, verificación local

La función de derivación queda fijada en SHA-256. No hay un menú negociable; una futura función hash necesitaría un nuevo OID. Esto reduce la superficie común: reconocer la construcción, preservar la codificación exacta, derivar y ejecutar el algoritmo interior.

Las obligaciones anteriores permanecen. La CEK debe ser aleatoria y estar protegida. RFC 5652 define CMS; RFC 5083 y RFC 5084 cubren el sobre autenticado y AEAD; RFC 5869 define HKDF; RFC 8551 encuadra capacidades S/MIME; RFC 4086 trata la aleatoriedad. RFC 9709 no corrige claves débiles, terminales comprometidos ni identidades engañosas.

En la revisión realizada, el buscador del RFC Editor no mostraba erratas notificadas para RFC 9709, e IANA registraba los identificadores asignados. Es evidencia del estado formal de coordinación, no de adopción real.

Fuentes