Projekte / AnyAudit
AnyAudit
Forschungsdemonstrator für Audit-Nachweise in Software des KI-Zeitalters
Was muss ein System aufzeichnen, und wie, damit jemand, der es nicht gebaut hat, sein Verhalten nachträglich prüfen kann?
Überblick
AnyAudit löst die Schicht für Audit-Nachweise aus AnyDPP als wiederverwendbare Bibliothek heraus. Es gibt einen Trace-Kontext durch Anfragen weiter, schreibt versionierte Audit-Ereignisse, die nur einen Hash ihrer Nutzdaten speichern, und hängt sie an eine SHA-256-Hash-Kette an, die sich von Anfang bis Ende prüfen lässt.
Es nutzt bewusst eine Hash-Kette und keine Blockchain: Ziel ist, Manipulationen innerhalb eines Systems erkennbar zu machen, nicht Konsens zwischen einander fremden Parteien.
Eine Kette, die Manipulation zeigt
- Ereignis 1review.acceptedTrace: 7f3a-19c2Nutzdaten-Hash: f5e10178vorheriger: 00000000
- Ereignis 2attribute.updatedTrace: 7f3a-19c2Nutzdaten-Hash: 64f2c5a3vorheriger: f5e10178
- Ereignis 3passport.composedTrace: 7f3a-19c2Nutzdaten-Hash: e298dad5vorheriger: 64f2c5a3
- Ereignis 4credential.issuedTrace: 7f3a-19c2Nutzdaten-Hash: 77c82a49vorheriger: e298dad5
Kette prüfen: Kette intakt
Wird ein Ereignis verändert, schlägt die Prüfung ab dieser Stelle fehl.
Textbeschreibung des Diagramms
Vier Audit-Ereignisse in einer Reihe, jedes mit seiner Trace-Kennung, dem Hash seiner Nutzdaten und dem Hash des vorherigen Eintrags. Wird das zweite Ereignis verändert, passt sein Hash nicht mehr zu dem, woran sich der dritte Eintrag gebunden hat, und die Prüfung meldet den Bruch.
Bausteine
Trace-Kontext
Eine Kennung, die durch jede Anfrage, jeden Job und jeden Dienst weitergegeben wird, die an einer Operation beteiligt sind.
Audit-Ereignis
Ein versioniertes Ereignisschema, das einen Hash der Nutzdaten speichert, nicht die Nutzdaten selbst.
Hash-Kette
Jeder Eintrag bindet sich an den vorherigen, sodass ein geänderter oder entfernter Eintrag jedes folgende Glied bricht.
Kettenprüfung
Eine Funktion, die die Kette durchläuft und meldet, wo sie bricht.
Decorator und Middleware
Wege, bestehenden Code um Auditierung zu ergänzen, ohne ihn neu zu schreiben.
Was ein Auditor erhält
- 1
Eine prüfende Person nimmt in einem Pass-Workflow einen Wert an.
- 2
Die Anfrage trägt eine Trace-Kennung durch die API und den Hintergrundjob.
- 3
Ein Audit-Ereignis hält fest, wer was unter welcher Version getan hat, mit einem Hash der Nutzdaten.
- 4
Monate später prüft ein Auditor die Kette und verfolgt die Spur vom Eingang bis zur Veröffentlichung.
Abgrenzung
AnyAudit ≠ AnyTraceForschungsprototyp · unveröffentlicht
AnyTrace zeichnet die Provenienz von Dingen in der Welt auf. AnyAudit zeichnet das Verhalten der Software auf.
AnyTraceAnyAudit ≠ AnyVerifyForschungsprototyp · unveröffentlicht
AnyVerify beurteilt, ob Nachweise eine Aussage stützen. AnyAudit urteilt nicht; es führt eine Aufzeichnung, die sich prüfen lässt.
AnyVerifyAnyAudit ≠ AnyValidForschungsprototyp · unveröffentlicht
AnyValid fragt eine externe maßgebliche Stelle. AnyAudit fragt niemanden; es belegt, dass sich die eigene Aufzeichnung nicht verändert hat.
AnyValid
Stand
Umgesetzt als Forschungsdemonstrator, vorgestellt unter anyaudit.eu, mit der Bibliothek im Repository von AnyLAI.
Grenzen
- Manipulationen werden erkennbar, nicht verhindert: Eine Kette zeigt, dass sich etwas geändert hat, sie hält es nicht auf.
- Nicht außerhalb des Systems verankert, das sie schreibt.
- Eine Audit-Aufzeichnung ist ein Nachweis für ein Audit, kein Auditergebnis.