Zum Hauptinhalt springen

Sicherheit und Datenfluss

Wo Ihre Daten liegen, was verschlüsselt ist, wie die KI-Verbindung authentifiziert und begrenzt ist, was Assetli protokolliert, was der KI-Anbieter sieht und was wir noch nicht können.

Zuletzt aktualisiert: 17. September 2026

Diese Seite ist für technisch versierte, skeptische Leserinnen und Leser geschrieben. Jede Aussage unten wurde am oben genannten Datum gegen den Anwendungscode geprüft. Was eine Einschränkung und keine Funktion ist, finden Sie im Abschnitt Was wir noch nicht können, als geplant gekennzeichnet.

Zusammenfassung

  • Assetli verbindet sich nie mit Ihrer Bank und speichert keine Bank-Zugangsdaten. Daten kommen über den Import einer Datei, manuelle Eingabe oder die optionale Synchronisation mit Wallet by BudgetBakers über deren eigenen Token herein.
  • Die KI-Verbindung beruht auf OAuth 2.1 mit PKCE, einem Zustimmungsbildschirm, kurzlebigen Tokens, die als Hash gespeichert werden, einem Profil pro Konnektor und getrennten Berechtigungen für Lesen und Schreiben. Schreiben erfordert einen kostenpflichtigen Tarif.
  • Ihr Gespräch mit der KI erreicht Assetli nicht. Der Server erhält nur die Werkzeugaufrufe. Lesezugriffe werden nicht protokolliert, Schreibzugriffe zwölf Monate lang.
  • In der API läuft keine Fremdbibliothek für Fehler-Tracking oder Analytik. Die Analytik im Browser auf den Webseiten ist einwilligungspflichtig und sieht den API-Verkehr nie.

Wo die Daten liegen

WasWo
Anwendung und APIVercel, Region Frankfurt (fra1)
DatenbankMongoDB Atlas
Hochgeladene Dateien (Auszüge, Fotos, Dokumente)Objektspeicher: Vercel Blob oder Cloudflare R2, je nach Konfiguration der Bereitstellung
Öffentliche Referenzdaten (Preislisten, Statistiken)Cloudflare R2
Tägliche DatenbanksicherungArchiv aus mongodump, mit AES-256 verschlüsselt, bevor es den Build-Server verlässt, 30 Tage als GitHub-Actions-Artefakt gespeichert
WechselkurseWerden von frankfurter.app geladen (EZB-Kurse). Die Anfrage enthält nur Währungscodes
ZahlungenStripe. Kartendaten erreichen Assetli nie

Anmeldung bei Assetli

  • Mit E-Mail und Passwort. Passwörter werden als bcrypt-Hash gespeichert.
  • Anmeldung über Google oder Facebook (OAuth).
  • Optionale Zwei-Faktor-Authentifizierung mit einer TOTP-App und Backup-Codes. Das TOTP-Geheimnis ist verschlüsselt.
  • Das Konto wird nach wiederholten fehlgeschlagenen Anmeldeversuchen gesperrt.
  • Die Sitzung hält ein HTTP-only-Cookie, ausgestellt von der Bibliothek Auth.js.

Verschlüsselung

  • Der gesamte Verkehr läuft über HTTPS.
  • Feldverschlüsselung mit AES-256-GCM (versionierter Schlüsseltext, zufälliger Initialisierungsvektor, Authentifizierungs-Tag) schützt: Kontonummer, IBAN und Notizen bei Bankkonten, den Token für Wallet by BudgetBakers, Zwei-Faktor-Geheimnisse, Ihre eigenen API-Schlüssel für KI-Anbieter sowie Family-Legacy-Notizen. Verschlüsselte Felder lassen sich nicht per Datenbankabfrage durchsuchen und werden erst beim Anzeigen des Datensatzes entschlüsselt.
  • OAuth-Access- und Refresh-Tokens, Autorisierungscodes und API-Schlüssel werden als SHA-256-Hash gespeichert. Die lesbare Form existiert nur in Ihrem Client.

Die KI-Verbindung Schritt für Schritt

So läuft eine Frage an Claude oder ChatGPT ab, die Ihre Daten braucht.

  1. Ihr Client ruft POST /api/mcp mit einem JSON-RPC-Body auf, also dem Werkzeugnamen und dessen Argumenten. Nichts weiter aus dem Gespräch wird gesendet.
  2. Die Middleware lässt die Anfrage durch. Auf diesem Pfad gibt es kein seitenweites Passwort, und der Anfrage-Body wird nicht protokolliert.
  3. Token-Prüfung. Der Token aus dem Header Authorization: Bearer wird gehasht und in der Datenbank gesucht. Er muss existieren, unabgelaufen (1 Stunde) und nicht widerrufen sein, und sein Empfänger muss zum Host passen. Aus dem Datensatz ergeben sich Ihre Benutzer-ID, das bei der Zustimmung gewählte Profil, die Berechtigungen und die Client-ID.
  4. Berechtigung, Tarif und Vorschau-Token. Ein Schreibwerkzeug erfordert die Berechtigung write und den Tarif Premium oder Max. Fehlt eines davon, endet der Aufruf mit einem Fehler und nichts wird ausgeführt. Fehlen beide, werden Schreibwerkzeuge dem Client gar nicht erst angeboten. Ein Schreibvorgang muss außerdem einen Bestätigungstoken tragen, den das zugehörige Vorschauwerkzeug für dieselben Argumente in den letzten zehn Minuten ausgestellt hat; ohne ihn oder mit anderen Argumenten wird der Schreibvorgang abgelehnt.
  5. Ausführung des Werkzeugs. Die Verarbeitung fragt MongoDB mit einem Filter auf Ihren Benutzer und Ihr Profil ab. Die Ergebnisse werden in einen festen Satz von Feldern übertragen.
  6. Audit (nur bei Schreibvorgängen). Werkzeugname, Client-ID, Ergebnis und eine Zusammenfassung der Argumente werden in der Sammlung mcp_audit_logs mit einem Ablauf nach 365 Tagen gespeichert. Beträge, Kategorien, Symbole, Daten und Zielnamen bleiben erhalten; Freitext (Beschreibungen, Notizen, Händlername, Auszugsinhalt) wird nur als Länge gespeichert, der Auszugsinhalt zusätzlich als Hash. Der Datensatz selbst trägt seine Herkunft (createdVia: MCP und Konnektor-ID), und jede Liste, in der er erscheint (Transaktionen, Trades, Zählerstände, Wertsachen, Budgets), kennzeichnet ihn mit einem „KI“-Abzeichen, dessen Tooltip Kanal und Werkzeug nennt.
  7. Antwort. Das Ergebnis in JSON geht an Ihren Client zurück, der es dem Modell übergibt.

Was Assetli sieht und was nicht

Sieht Assetli?
Ihre Frage und die Antworten des ModellsNein. Sie bleiben im KI-Client.
Werkzeugname und ArgumenteJa, für die Dauer der Anfrage.
Argumente von SchreibaufrufenJa, als Zusammenfassung ohne Freitext, zwölf Monate im Audit-Log.
Argumente von LeseaufrufenWerden nicht gespeichert.
Ergebnisse der WerkzeugeWerden berechnet und zurückgegeben, nicht gespeichert.
Identität des ClientsRegistrierter Name des Konnektors und dessen ID. In den üblichen Hosting-Logs zusätzlich IP-Adresse und Browserkennung des Servers des KI-Clients.

Der Satz „wir sehen nur, was beim Klicken in der App” trifft beim Lesen genau zu. Beim Schreiben behält Assetli etwas mehr als bei einem Klick in der Anwendung, nämlich den Audit-Eintrag.

Was der KI-Anbieter sieht

Der Anbieter, der Ihr Modell betreibt (Anthropic bei Claude, OpenAI bei ChatGPT, Google bei Gemini), sieht Ihre Fragen, die Ergebnisse der Werkzeuge und damit jede Zahl, die ein Werkzeug zurückgibt. Diese Daten werden nach den Bedingungen des jeweiligen Anbieters behandelt, nicht nach denen von Assetli. Die Werkzeuge geben dieselben Daten zurück, die Sie in der App sehen: Salden, Transaktionen mit Beschreibung und Händler, Positionen, Immobilienwerte und -adressen, Kennzeichen von Fahrzeugen, Schulden. Sie geben nie Kontonummern, IBANs, Passwörter, Tokens oder Daten anderer Nutzer zurück.

Der Assistent in der App funktioniert anders. Dort sendet Assetli selbst Ihre Nachrichten und eine Finanzübersicht an Anthropic (oder an den Anbieter, dessen Schlüssel Sie eingetragen haben) und speichert das Gespräch bei Ihrem Profil.

Geltungsbereich des Tokens

  • Ein Nutzer, ein Profil. Der Token trägt das bei der Zustimmung gewählte Profil. Ein Konnektor kann Profile nicht wechseln.
  • Lesen oder Schreiben. Wird auf dem Zustimmungsbildschirm erteilt, Schreiben schließt Lesen ein. Der Server prüft die Berechtigung bei jedem Aufruf.
  • An den Empfänger gebunden. Ein für assetli.app ausgestellter Token wird von jedem anderen Host abgelehnt.
  • Kurzlebig. Access-Token 1 Stunde, Refresh-Token 60 Tage, bei jeder Erneuerung ausgetauscht.
  • Widerrufbar. Kontomenü → KI-Verbindung (MCP) listet jeden Konnektor auf und widerruft alle seine Tokens auf einmal.
  • Keine geteilten Geheimnisse. Die Clients sind öffentliche OAuth-Clients mit PKCE, es gibt kein Client-Secret, und Ihr Passwort verlässt Assetli nie.
  • Nur der MCP-Endpunkt. Der Token eines Drittanbieter-Konnektors wird von /api/mcp akzeptiert und sonst nirgends. Die REST-API akzeptiert Bearer-Tokens nur von der eigenen mobilen App.

Protokollierung

LogInhaltAufbewahrung
MCP-Audit-Log (Datenbank)Nutzer, Profil, Client-ID, Werkzeugname, Erfolg oder Fehler, Zusammenfassung der Argumente ohne Freitext. Nur Schreibvorgänge. Einsehbar im Kontomenü → KI-Verbindung (MCP).365 Tage
Hosting-Anfrageprotokoll (Vercel)Methode, Pfad, Status, Dauer, Client-IP. Keine Request-Bodies.Gemäß Vercel-Tarif
Funktionsausgabe (Vercel)Fehlermeldungen, die die Anwendung bei einem Fehlschlag ausgibt, etwa einen Datenbankfehler. Keine Request-Bodies.Gemäß Vercel-Tarif
Administrator-Fehlerlog (Datenbank)Anwendungsfehler ausgewählter Endpunkte und des Web-Frontends. Auf dem MCP-Pfad nicht verwendet.Verwaltet der Administrator

Was dort nicht ist:

  • Kein Sentry, Datadog, PostHog oder eine ähnliche Bibliothek in der API. Eine solche Abhängigkeit existiert im Projekt nicht.
  • Keine Middleware, die Request- oder Response-Bodies mitschneidet.
  • Google Analytics und Microsoft Clarity laden nur im Browser auf den Webseiten und erst nach der Cookie-Einwilligung. API- und MCP-Verkehr erreicht sie nie.

Ihre Rechte an den Daten

  • Export: Einstellungen → Daten exportieren erzeugt eine Datei mit allen Datensätzen, die Ihnen gehören, über alle Sammlungen hinweg, ohne Authentifizierungsgeheimnisse und temporäre Logs.
  • Löschung: Einstellungen → Konto löschen entfernt den Nutzer und jeden mit ihm verknüpften Datensatz, einschließlich Datensätzen aus geteilten Ausgabengruppen und Family-Legacy-Kontakten sowie aller Dateien. Eine Bestätigungsphrase ist erforderlich.

Was wir noch nicht können

Wir schreiben es lieber auf, als dass Sie es selbst finden.

  • Die Bestätigung wird als Paarung erzwungen, nicht als Einwilligung. Der Server lehnt einen Schreibvorgang ab, der keinen Token aus der zugehörigen Vorschau für dieselben Argumente aus den letzten zehn Minuten hat. Ob Sie die Vorschau wirklich gesehen und zugestimmt haben, liegt weiterhin beim KI-Client; Claude und ChatGPT ergänzen eine eigene Rückfrage zur Werkzeugfreigabe.
  • Die Aufbewahrungsdauer der Logs auf Hosting-Seite hängt vom Vercel-Tarif ab und wird nicht von der Anwendung gesteuert.

Ein Sicherheitsproblem melden

Schreiben Sie an info@assetli.app mit „security” im Betreff. Bitte testen Sie nicht an den Daten anderer Nutzer.