Files
aza/AzA march 2026/security/handovers/STEP_10_CONSENT_LOGGING.md
2026-03-25 22:03:39 +01:00

4.2 KiB
Raw Blame History

STEP 10 Technische Einwilligungs-Protokollierung

Ziel

Jede KI-bezogene Datenverarbeitung muss technisch nachweisbar durch eine Einwilligung gedeckt sein.


1. Datenmodell

Jeder Consent-Eintrag enthält:

Feld Typ Beschreibung
user_id string Benutzername aus Profil
consent_type string Immer "ai_processing"
consent_version string Stand-Datum aus ai_consent.md
timestamp string UTC ISO-8601
source string "ui", "test", "admin"
action string "grant" oder "revoke"
prev_hash string SHA-256 des vorherigen Eintrags
hash string SHA-256 dieses Eintrags (Integritaetskette)

2. Speicherort

  • Datei: aza_consent_log.json (Projekt-Root)
  • Format: JSON-Array (Append-only)
  • Manipulationssicherheit: SHA-256-Hash-Kette (jeder Eintrag referenziert den Hash des vorherigen)
  • Kein Überschreiben: Widerruf erzeugt neuen Eintrag, alter Grant bleibt in der Historie

3. Enforcement-Punkte

KI-Funktionen werden an folgenden Stellen blockiert, wenn keine gueltige Einwilligung vorliegt:

Stelle Datei Methode
Chat Completion (alle KI-Texte) basis14.py call_chat_completion()
Transkription basis14.py transcribe_wav()
Aufnahme starten basis14.py toggle_record()
Korrektur-Aufnahme basis14.py _toggle_record_append()
Diktat in Widget basis14.py _diktat_into_widget()
KI-Prüfung basis14.py open_ki_pruefen()
Interaktionscheck basis14.py do_interaktion()

Bei fehlendem Consent:

  • UI-Einstiegspunkte: Consent-Dialog wird angezeigt
  • API-Gateways: RuntimeError wird geworfen

4. UI-Elemente

  • Zeigt den kompletten Text aus legal/ai_consent.md
  • Checkbox: "Ich habe den Text gelesen und stimme zu"
  • Buttons: "Zustimmen" / "Ablehnen"
  • Wird nur angezeigt, wenn kein gueltiger Consent vorliegt

4.2 Einstellungsfenster (Datenschutz & Recht)

  • Status-Anzeige: "Erteilt" / "Nicht erteilt / widerrufen"
  • Button: "KI-Einwilligung widerrufen" / "erteilen"
  • Button: "Consent-Log exportieren"
  • Bestehende Buttons: Datenschutzerklaerung, KI-Einwilligung

5. Versions-Handling

  • Die Consent-Version wird aus dem "Stand:"-Feld in legal/ai_consent.md extrahiert
  • Bei Aenderung des Consent-Textes (neues Datum) wird ein bestehender Consent ungueltig
  • Benutzer muss erneut zustimmen

6. Audit-Workflow

Export

python -c "from aza_consent import export_consent_log; print(export_consent_log())"

Oder ueber Einstellungen -> "Consent-Log exportieren"

Integritaetspruefung

python -c "from aza_consent import verify_chain_integrity; ok, e = verify_chain_integrity(); print('OK' if ok else e)"

Export-Format

{
  "export_timestamp": "2026-02-22T...",
  "total_entries": 3,
  "current_consent_version": "Februar 2026",
  "entries": [
    {
      "user_id": "...",
      "consent_type": "ai_processing",
      "consent_version": "Februar 2026",
      "timestamp": "2026-02-22T...",
      "source": "ui",
      "action": "grant",
      "prev_hash": "0000...0000",
      "hash": "a1b2c3..."
    }
  ]
}

7. Geaenderte / Neue Dateien

Datei Aktion
aza_consent.py NEU Consent-Modul (Datenmodell, Storage, Enforcement, Export)
basis14.py GEAENDERT Import aza_consent, Consent-Check an 7 Stellen
aza_settings_mixin.py GEAENDERT Widerruf/Erteil-Button, Status, Export im Einstellungsfenster
_test_consent.py NEU Testskript (14 Tests)

8. Test-Ergebnisse (22.02.2026)

Test Ergebnis
Ohne Consent -> KI blockiert PASS
Consent erteilen -> KI erlaubt PASS
Widerruf -> KI blockiert PASS
Erneuter Consent -> KI erlaubt PASS
Hash-Kette intakt PASS
Status-Abfrage korrekt PASS
Version-Match PASS
Export erstellt gueltige Datei PASS
User-Historie korrekt PASS
Anderer User -> kein Consent PASS
Gesamt: 14/14 ALLE BESTANDEN

9. Risiken

Risiko Bewertung Massnahme
JSON-Datei manuell editierbar NIEDRIG Hash-Kette erkennt Manipulation
Kein digitaler Signatur-Mechanismus MITTEL Fuer Audit: Export + Integritaetspruefung
Consent nur auf App-Ebene, nicht Patient NIEDRIG Papier-Einwilligung ergaenzt dies