Skip to content
Luiz Hogrefe

AnyAudit

Research demonstrator for audit evidence in AI-era software

Research demonstrator

What does a system need to record, and how, so that its behaviour can be audited afterwards by someone who did not build it?

Overview

AnyAudit extracts the audit-evidence layer from AnyDPP into a reusable library. It propagates a trace context through requests, writes versioned audit events that store only a hash of their payload, and appends them to a SHA-256 hash chain that can be verified end to end.

It deliberately uses a hash chain and not a blockchain: the goal is tamper evidence inside a system, not consensus between strangers.

A chain that shows tampering

A chain that shows tampering
  1. Event 1review.acceptedtrace: 7f3a-19c2payload hash: f5e10178previous: 00000000
  2. Event 2attribute.updatedtrace: 7f3a-19c2payload hash: 64f2c5a3previous: f5e10178
  3. Event 3passport.composedtrace: 7f3a-19c2payload hash: e298dad5previous: 64f2c5a3
  4. Event 4credential.issuedtrace: 7f3a-19c2payload hash: 77c82a49previous: e298dad5

Verify chain: Chain intact

Alter one event and verification fails from that point on.

Text description of the diagram

Four audit events in a row, each showing its trace identifier, the hash of its payload and the hash of the previous entry. When the second event is altered, its hash no longer matches what the third entry committed to, and verification reports the break.

Building blocks

  • Trace context

    One identifier propagated through every request, job and service involved in an operation.

  • Audit event

    A versioned event schema that stores a hash of the payload, not the payload itself.

  • Hash chain

    Each entry commits to the previous one, so a changed or removed entry breaks every link after it.

  • Chain verification

    A function that walks the chain and reports where it breaks.

  • Decorator and middleware

    Ways to add auditing to existing code without rewriting it.

What an auditor gets

  1. 1

    A reviewer accepts a value in a passport workflow.

  2. 2

    The request carries a trace identifier through the API and the background job.

  3. 3

    An audit event records who did what, under which version, with a hash of the payload.

  4. 4

    Months later, an auditor verifies the chain and follows the trace from intake to publication.

How it differs

  • AnyAuditAnyTraceResearch prototype · unpublished

    AnyTrace records the provenance of things in the world. AnyAudit records the behaviour of the software.

    AnyTrace
  • AnyAuditAnyVerifyResearch prototype · unpublished

    AnyVerify judges whether evidence supports a claim. AnyAudit makes no judgement; it keeps a record that can be checked.

    AnyVerify
  • AnyAuditAnyValidResearch prototype · unpublished

    AnyValid asks an external authority. AnyAudit asks nobody; it proves its own record has not changed.

    AnyValid

Status

Research demonstrator

Implemented as a research demonstrator, presented at anyaudit.eu, with the library in the AnyLAI repository.

Limitations

  • Tamper evidence, not tamper prevention: a chain shows that something changed, it does not stop it.
  • Not anchored outside the system that writes it.
  • An audit record is evidence for an audit, not an audit result.

Back to Projects