Resumen

  • Want-Content-Digest y Want-Repr-Digest expresan qué algoritmos prefiere una parte. La otra puede ignorar la preferencia, usar un algoritmo distinto u omitir el resumen sin que, por ese solo hecho, se produzca un error HTTP.
  • Una comprobación íntegra conserva cuatro estados: la preferencia enviada, el campo recibido, el objeto exacto que cubre y el resultado de la operación local. «Resumen activado» no sustituye a ninguno de ellos.
  • El resumen compara bytes; no identifica a quien los envió, no autoriza una acción, no cifra el mensaje y no protege por sí solo el método, el URI, el estado ni todos los metadatos.

La palabra «quiero» no cierra una negociación

En una interfaz de administración, elegir SHA-512 como opción prioritaria parece una decisión terminada. En HTTP solo puede ser el comienzo. RFC9530 establece un mecanismo para comunicar preferencias, no una aceptación bilateral implícita.

Los dos campos Want-* son diccionarios de Structured Fields. Las claves nombran algoritmos y los enteros establecen su orden relativo: 1 es la preferencia más baja, 10 la más alta y 0 marca una opción no aceptable. Want-Content-Digest se refiere al contenido del mensaje; Want-Repr-Digest, a la representación seleccionada.

Un peso no es una puntuación de seguridad. Tampoco obliga al destinatario. Quien recibe el campo puede no hacerle caso, enviar un algoritmo no anunciado o no devolver ningún Content-Digest o Repr-Digest. RFC9530 dice expresamente que esas respuestas no son errores de protocolo por sí mismas. La aplicación puede imponer una condición más estricta, pero debe formularla fuera del significado básico del campo.

El anexo C presenta resultados posibles sin convertir uno en universal: el servidor escoge una alternativa menos preferida, no admite ninguna de las propuestas o emite una respuesta 4xx/5xx elegida por la aplicación. No existe un único código obligatorio para «no pude satisfacer tu preferencia». Si un servicio necesita esa certeza, su contrato tiene que definirla.

También importa quién envía el campo. Un Want-Content-Digest incluido en una respuesta comunica qué espera el servidor en futuras solicitudes. No es un resumen del cuerpo que acompaña a esa respuesta. Tratar cualquier aparición de la palabra Digest como prueba conduce a validar algo que todavía no existe.

Cuatro estados para una sola transferencia

El primer estado es la intención: qué preferencia se envió y con qué orden. El segundo es la evidencia observada: qué campo llegó, qué miembros contenía y si apareció como cabecera o trailer. El tercero es el alcance: contenido del mensaje o representación seleccionada. El cuarto es el resultado local: algoritmo aceptado, bytes calculados, coincidencia y decisión de negocio.

La distinción permite responder preguntas que un indicador verde oculta. Pedir SHA-512 no prueba que el servidor lo haya usado. Recibir sha-256 no prueba que el cliente haya recalculado el valor. Una coincidencia no dice qué se protegió si falta el nombre del campo y la descripción del objeto.

Además, el sistema puede continuar legítimamente con un algoritmo menos preferido o sin resumen. Esa elasticidad debe quedar registrada como tal. «Ausencia aceptada por política» y «alternativa admitida» son estados útiles; registrarlos como una validación genérica falsea el nivel de garantía y borra la decisión del responsable.

Contenido y representación responden a preguntas distintas

RFC9530 sustituyó la ambigüedad heredada de RFC3230 por dos nombres. Content-Digest cubre el contenido efectivo de un mensaje HTTP concreto. Repr-Digest cubre la representación seleccionada completa definida por la semántica de HTTP.

Una representación depende de la selección y de sus metadatos. Puede haber varias para un mismo recurso. Content-Type y Content-Encoding influyen en los bytes y en su interpretación. Por tanto, calcular el archivo más cercano en el sistema de ficheros no demuestra que se haya comprobado el objeto que nombra el campo.

La diferencia se hace evidente en respuestas parciales, pero no se limita a ellas. En una petición PATCH, la representación transportada puede ser el documento de parche; la respuesta puede describir la representación seleccionada del recurso ya modificado. Content-Location y Location tampoco son identificadores equivalentes para decidir qué se ha resumido.

Un registro interno llamado simplemente «checksum del payload» pierde estos matices. La evidencia debería incluir el campo, los metadatos relevantes, el tratamiento de las codificaciones y el punto del proceso donde se capturaron los bytes. De otro modo, dos servicios pueden calcular correctamente sobre objetos diferentes y declarar una compatibilidad inexistente.

La lista que entiende una biblioteca no es la lista que acepta el servicio

El registro vigente de IANA marca SHA-512 y SHA-256 como activos. MD5, SHA, las sumas UNIX, Adler-32 y CRC32C aparecen como obsoletos. RFC9530 permite algunos usos de algoritmos obsoletos para detectar corrupción accidental sin adversario, pero prohíbe emplearlos en contextos adversariales o de firma digital.

La etiqueta del registro no agota la política. El receptor puede ignorar algunos o todos los miembros y limitar qué algoritmos calcula. También conviene limitar el número de miembros y el volumen que se procesa: permitir que un par remoto multiplique cálculos sobre contenido grande añade una superficie de consumo de recursos.

La agilidad algorítmica no elimina por sí sola el downgrade. Si un mensaje trae un miembro fuerte y otro obsoleto, una biblioteca podría aceptar el primero que entiende mientras el operador cree que se respetó la prioridad declarada. El nivel efectivo queda determinado por el miembro que la política decide usar, no por el más impresionante que aparece en el mensaje.

Por eso, la telemetría debe conservar el algoritmo seleccionado, el campo, el objeto y el resultado. La aplicación decide si una coincidencia aceptable basta, qué ocurre cuando solo hay miembros desconocidos o prohibidos y cómo resuelve valores incompatibles. Comprender una sintaxis es una capacidad técnica; aceptar su consecuencia es un acto de gobierno.

La hora de llegada condiciona la afirmación

Los campos de resumen pueden viajar en cabeceras o trailers. Un emisor que transmite en flujo puede calcular al final, pero esa ventaja desplaza la evidencia en el tiempo. Los intermediarios pueden descartar trailers y la aplicación puede actuar antes de recibirlos.

Si un servicio confirma una operación, publica un archivo o reenvía datos antes de validar el trailer, no puede describir luego esa acción como condicionada por la integridad. La comprobación tardía conserva valor para auditoría, pero no altera la secuencia causal. Cuando el trailer se pierde, el estado correcto es «evidencia ausente».

La coincidencia tampoco es eterna. Prueba algo sobre los bytes cubiertos en el punto de validación. Para afirmar que el almacenamiento sigue intacto hay que conservar todo el contenido pertinente y volver a comprobarlo. Las transformaciones y codificaciones pueden cambiar la secuencia sin cambiar lo que una persona reconoce como la misma obra.

Un resumen no firma el resto del mensaje

RFC9530 limita deliberadamente la propiedad. Los campos no protegen todo HTTP: método, URI, código de estado y metadatos pueden quedar fuera. Tampoco autentican al remitente, autorizan la transacción ni aportan confidencialidad.

RFC9421 permite incluir el campo de resumen y los metadatos relevantes en una firma de mensaje HTTP. Hay que enumerarlos expresamente en la base firmada. La mera coexistencia de firma y resumen no los vincula, y la firma necesita su propia política de claves, tiempo y repetición.

Una discordancia señala que los bytes calculados no coinciden con el valor recibido. No identifica por sí sola al causante ni determina si había permiso para la operación. Mantener ese límite permite combinar cada control según el riesgo, sin vender un checksum como una arquitectura de seguridad completa.

Fuentes y alcance de la evidencia

Los escenarios operativos son hipotéticos. Este texto no afirma tasas de adopción, número de incidentes, frecuencia de ataques, costes medidos ni un umbral seguro universal.