Auditar consultas de multas sin guardar payloads para siempre
Una secuencia mínima de eventos y hashes encadenados puede revelar alteraciones sin convertir cada respuesta sensible en un archivo permanente.
Por Marco Ferreiro ·
Una API de infracciones necesita explicar qué consultó, qué fuentes terminaron y qué respuesta entregó. Guardar para siempre cada cuerpo crudo parece una solución fácil, pero acumula dominios, actas y otros datos que quizá la auditoría no necesita.
La alternativa es separar evidencia operacional de contenido sensible. El log durable conserva una secuencia mínima y verificable. Las actas crudas, cuando hacen falta, siguen una retención corta, cifrada y restringida.
Auditar no es archivar todo
Una auditoría suele responder preguntas concretas: ¿la solicitud existió?, ¿qué versión la procesó?, ¿qué jurisdicciones completaron?, ¿hubo respuesta parcial?, ¿el evento fue modificado? Ninguna exige necesariamente reproducir todos los campos de cada acta.
El evento mínimo puede incluir identificador opaco de operación, tenant, hora, versión de contrato, estado por jurisdicción, cantidad de actas y código de resultado. Los identificadores personales se tokenizan o quedan fuera cuando no son necesarios.
La respuesta cruda del portal vive en otra capa con acceso y expiración propios. Esa separación reduce el impacto de una exposición del log.
Qué aporta una cadena de hashes
Cada evento se serializa de forma canónica y calcula un hash según un algoritmo estandarizado. También incluye el hash del evento anterior. Si alguien modifica un evento intermedio, los hashes posteriores dejan de coincidir.
FIPS 180-4 define funciones de hash seguras usadas para producir resúmenes. Un hash no cifra el contenido ni lo oculta automáticamente. Es una huella para verificar integridad.
La cadena necesita secuencia y contexto. Sin número de lote o tenant, dos flujos podrían mezclarse. Sin serialización canónica, el mismo objeto produce bytes distintos por orden o formato.
Anclajes que evitan reescribir toda la historia
Una persona con control completo de la base podría recalcular una cadena desde el punto alterado. Para detectar eso se crea un anclaje periódico fuera del almacenamiento primario: raíz de lote, última secuencia y firma con una clave protegida.
RFC 5848 describe mecanismos para autenticación de origen, integridad, secuencia y detección de mensajes faltantes en syslog firmado. No copiamos su protocolo como solución universal; tomamos sus propiedades como criterios de prueba.
El verificador compara la cadena local con el anclaje. Si falta un evento o cambia un byte, el resultado queda inválido. La rotación de claves y el resguardo de certificados se documentan.
Un esquema mínimo
Nuestro evento sintético contiene:
- versión del esquema;
- identificador aleatorio de operación;
- tenant interno;
- momento UTC y zona de presentación;
- tipo de evento y resultado;
- lista de fuentes y estados, sin respuestas completas;
- hash anterior y hash propio.
No incluye patente, DNI, imagen, texto del acta ni payload del proveedor. Cuando hace falta correlacionar un reclamo, un índice protegido vincula temporalmente la operación con el caso autorizado.
El tenant se conserva porque el aislamiento entre flotas es parte de la auditoría. Nunca se usa un índice global sin ámbito.
Prueba de modificación
Generamos cien eventos ficticios de consulta de patentes. Cambiamos el estado de uno de “partial” a “complete” sin recalcular. La verificación falla en ese evento. Luego recalculamos la cadena desde allí; el anclaje final ya no coincide.
En otra prueba eliminamos el evento 40. La secuencia salta y el hash previo del 41 apunta a un valor ausente. El verificador informa faltante, no sólo “firma inválida”.
También permutamos dos eventos. Aunque el contenido individual no cambia, la relación anterior y el número de secuencia revelan el reordenamiento.
Lo que un hash no prueba
Si el sistema registró “sin multas” cuando la jurisdicción no había respondido, una cadena válida conserva esa falsedad. La integridad no equivale a exactitud. Se necesitan controles de fuente, validación de contratos y observabilidad.
Tampoco prueba quién operaba una cuenta si las credenciales fueron comprometidas. La autenticación, autorización y trazas de acceso son capas separadas.
Un hash de una patente sin secreto es susceptible a enumeración porque el universo es acotado. Por eso no se publica ni se presenta como anonimización. Se usa un identificador aleatorio o un MAC con clave cuando la correlación es necesaria.
Retención por capas
Definimos ventanas diferentes:
- eventos mínimos de auditoría, según necesidad y política;
- payloads crudos, por un plazo corto de diagnóstico;
- adjuntos de reclamo, ligados al caso y su ciclo;
- métricas agregadas, sin identificadores.
Al vencer, el contenido se elimina de forma verificable y el log conserva un evento de expiración, no el acta. Las copias de seguridad respetan el mismo ciclo o documentan su demora.
La Ley 25.326 alcanza la conservación y el tratamiento, y una infracción con su titular es dato personal. La política debe explicar finalidad, acceso, rectificación y supresión aplicables; esta arquitectura no sustituye asesoramiento jurídico.
Acceso y exportación
El equipo de soporte ve el resumen necesario para un caso autorizado. Seguridad puede verificar la cadena sin acceder a las actas. Una exportación para un cliente sólo incluye sus operaciones y campos contractuales.
Cada lectura sensible genera otro evento. Los roles se prueban con intentos negativos: un tenant no puede consultar los hashes ni las consultas de patentes de otro.
Los logs nunca se envían a herramientas externas por defecto si contienen identificadores. La observabilidad usa códigos y conteos.
Recuperación y verificación continua
Un verificador programado recorre lotes recientes y una muestra histórica, compara anclajes y alerta ante huecos. La alerta identifica lote y secuencia, no copia el evento sensible.
Restaurar una base desde backup incluye verificar la cadena antes de reabrir el servicio. Si el último anclaje no coincide, el sistema conserva la evidencia y evita certificar integridad.
Las pruebas de borrado y modificación se ejecutan con datos sintéticos en cada cambio de esquema.
Evidencia suficiente y proporcional
Guardar menos no significa auditar peor. Un evento bien definido, una secuencia verificable y un anclaje independiente responden muchas preguntas con menos exposición.
Los payloads completos quedan disponibles sólo cuando una finalidad concreta lo exige y durante un plazo acotado. La cadena demuestra que el historial mínimo no fue alterado desde el anclaje, con límites expresos.
Esa combinación ofrece trazabilidad útil sin transformar una API de infracciones en un archivo indefinido de datos personales.
Metodología
- Alcance
- Diseño y prueba de un registro sintético encadenado que detecte modificación y eliminación de eventos sin retener cuerpos de respuesta.
- Unidad de análisis
- Un evento canónico mínimo con secuencia, hash previo, hash propio y anclaje firmado por lote.
- Cobertura
- RFC 5848, FIPS 180-4 y Ley 25.326 consultados el 14 de agosto de 2026.
Limitaciones
- El ejemplo no certifica una implementación productiva ni define por sí solo plazos legales de conservación.
- La integridad criptográfica no garantiza exactitud del dato al momento de crearlo ni protege un sistema con claves comprometidas.
Fuentes
- RFC 5848, Signed Syslog Messages — RFC Editor (consultada el )
- FIPS 180-4, Secure Hash Standard — National Institute of Standards and Technology (consultada el )
- Ley 25.326 de Protección de los Datos Personales — Argentina.gob.ar (consultada el )
Preguntas frecuentes
¿Un hash vuelve anónimo un payload?
No. Un hash puede seguir siendo vinculable o atacable si el espacio de valores es pequeño. La minimización y el control de acceso siguen siendo necesarios.
¿La cadena de hashes impide borrar eventos?
Permite detectar una alteración si existe un anclaje confiable posterior. Por sí sola no impide que alguien con control total reescriba toda la cadena.
¿Hay que guardar la respuesta completa para resolver reclamos?
Depende del caso y la política de retención. Puede conservarse temporalmente en almacenamiento separado y restringido, mientras el log durable retiene sólo evidencia mínima.
Notas relacionadas
Aislamiento entre flotas: las pruebas negativas de una API de multas
Autenticarse como una empresa no alcanza. IDs, cursores, filtros y exportaciones deben resistir intentos cruzados sin revelar que la flota de al lado tiene un acta más de la que debería.
Avisar antes de quedarse sin cuota de consultas de multas
Avisar que la cuota está por agotarse sirve sólo si queda tiempo para actuar. El nivel consumido no alcanza: hacen falta ritmo, fecha proyectada, un destinatario con nombre y una acción escrita.
Cursores estables para paginar resultados que pueden cambiar mientras se leen
Si una colección cambia entre la primera y la última página, el offset puede repetir u omitir resultados. Un cursor ligado a una revisión conserva un corte auditable.