Zum Hauptinhalt springen

Quelloffen · Lokal · Kommandozeile

Prüf deine eigene Beitragshistorie so, wie eine KI sie liest.

Heutige Sprachmodelle lesen ein paar Hundert deiner ganz gewöhnlichen öffentlichen Beiträge und schließen daraus, wo du wohnst, wo du arbeitest, wie dein Alltag aussieht — und führen ein pseudonymes Konto zu deinem echten Namen zurück. Nicht aus einem einzigen unbedachten Beitrag, sondern aus dem Mosaik vieler. ExposureCheck lässt genau dieses gegnerische Lesen über deinen eigenen Export laufen, zu deinen eigenen Bedingungen, und zeigt dir, was du allgemeiner halten oder umschreiben solltest.
$ exposurecheck audit --twitter ./twitter_export \
    --backend local --expensive-model llama3.1 --i-own-this-data

ExposureCheck v0.1  ·  local backend  ·  nothing left this machine
Parsed 3,214 posts · 19 months · prefilter kept 2,901 (weak signals retained)

RISK CONTRIBUTION        posts   what drives it
───────────────────────────────────────────────────────────────
● LOCATION       High      28    local events, commute clues, "my gym"
● EMPLOYER       High      11    project code-names, office banter
● SCHEDULE       Medium    63    posting-time concentration → UTC-8
○ FAMILY         Low        4    a relative's first name, a school

Top card · LOCATION (High)
  [LOCAL EVENT] near [NEIGHBORHOOD]  — 6 posts
  [COMMUTE] on [TRANSIT LINE]        — mentioned 9 times
  → generalise: drop venue names; delay event posts by a week
  12 posts to review · re-run with -i to open YOUR own originals

No dossier written. No profile saved. "High" is not "you are doxxed" —
it means a model could narrow this down. Fix, then re-scan.

Ein echter Lauf mit einem lokalen Modell. Die Kategorien sind maskiert (geschwärzt), der aufgelöste Wert bleibt verborgen, und es wird kein Profil gespeichert.

Was es tut, in einer Minute
#

ExposureCheck liest die Daten, die du von einer Plattform exportierst — niemals ein laufendes Konto, niemals das von jemand anderem. Und dann stellt es die Frage, die ein Angreifer stellen würde: Was lässt sich über die Person dahinter erschließen, wenn man all das zusammennimmt?

  • Es liest deinen Reddit-Export (nach DSGVO) und dein X-/Twitter-Archiv ein, ob als Ordner oder als .zip.
  • Es arbeitet in einer Kaskade, die nichts übersieht: Ein günstiger Durchgang ordnet jeden Beitrag nach Priorität, ein teurer liest die wichtigen genau, und schwache Signale bleiben erhalten — das Mosaik baut sich aus schwachen Signalen auf, sie wegzuwerfen wäre ein trügerischer Trost.
  • Die Metadaten-Schicht liest es fest und ohne Raten aus: das selbst gesetzte Ortsfeld, die ausgehenden Links, EXIF/GPS der Bilder, das Gerätemodell und die Häufung der Beitragszeiten, die deine Zeitzone verrät. Auf X verrät all das mehr als der Text.
  • Es meldet Risiko-Karten je Kategorie — Ort, Arbeitgeber, Familie, Tagesrhythmus, Finanzen, Konto-Verknüpfung — geordnet nach ihrem Beitrag zum Risiko, jede mit maskierten Beispielen und konkreten Korrekturen, die zuerst auf Verallgemeinern setzen.

Es ist lokal, schreibt kein Dossier und legt nie ein Profil von dir auf der Festplatte ab.

Ist dir die «Re-Identifikation aus dem Mosaik» neu? Dann beginn nicht beim Werkzeug, sondern bei der Bedrohung: Lies den begleitenden Erklärtext, Prüf deine eigene Beitragshistorie so, wie eine KI sie liest, und komm dann zurück.

Was es bewusst nicht tut
#

  • Kein Dossier. Es schreibt nie «du wohnst in X, arbeitest bei Y, dein Name ist Z». Die Karten zeigen maskierte Ausschnitte; der aufgelöste Wert erscheint nur, wenn du selbst zu deinem eigenen Originalbeitrag durchklickst — während der Sitzung, nie gespeichert.
  • Kein Export der Funde. Kein Scraping (das automatische Abgreifen fremder Daten); Eingabe ist allein dein Export. Kein Posten oder Löschen in deinem Namen. Keine Analyse der Historie anderer.
  • Es macht dich nicht anonym. Es senkt das Risiko. «Low» heißt nicht «sicher», und Metadaten, Zeitmuster und Schreibstil sind nur zum Teil erfasst.

Was deinen Rechner verlässt — und was nicht
#

Das ist das Erste, was ein Privatsphäre-Werkzeug sagen sollte, also sagen wir es gleich vorweg. Die Auswertung läuft auf einem Backend, das du wählst, und diese Wahl — nicht das Werkzeug — entscheidet, was reist:

BackendWas es istVerlassen deine Daten deinen Rechner?
localein lokales Modell über Ollama / llama.cpp / LM StudioNein — bleibt auf deinem Rechner
heuristicein Offline-Stub aus regulären Ausdrücken, der fast nichts findetNein — aber nur für Entwicklung/CI, keine echte Prüfung
cloudirgendein OpenAI-kompatibler Endpunkt, dein Schlüssel⚠️ Ja — deine Beiträge gehen an diesen Anbieter

Das Werkzeug selbst hat keinen Server, keine Telemetrie, kein Konto. Die Autorin hält keine deiner Daten und keine Schlüssel. Wählst du cloud, geht dein Export an den API-Anbieter, den du selbst bestimmt hast — und dann gelten dessen Protokollierung, Aufbewahrung, Trainingsrichtlinie sowie die IP und die Zahlungsdaten, die an deinen Schlüssel gebunden sind. ExposureCheck fügt keinen weiteren Sprung hinzu; es kann aber auch den einen nicht entfernen, für den du dich entschieden hast.

Der eine Cloud-Vorbehalt, auf den es wirklich ankommt
#

Angenommen, das Konto, das du prüfst, ist ein pseudonymes, das du von deiner echten Identität getrennt hältst — und dein KI- bzw. Cloud-Konto läuft unter deinem echten Namen oder ist darunter bezahlt. Schickst du diese Historie in die Cloud, kann der Anbieter auf seiner Seite echte Identität ↔ anonymes Konto verknüpfen (per Vorladung, Datenleck, Innentäter). Genau diese Deanonymisierung zu verhindern, ist der Sinn dieses Werkzeugs.

Also: Prüfst du ein streng anonymes Konto → nimm --backend local (oder ein Cloud-Konto, das anonym eröffnet und bezahlt wurde). Prüfst du dein Konto unter echtem Namen, dein öffentliches → dann ist die Cloud in Ordnung. Das CLI sagt dir das und bittet dich um Bestätigung, wenn der Fall eintritt. Wir erzwingen lokal nie — das würde das Publikum auf niemanden schrumpfen lassen — wir machen die Abwägung sichtbar.

Wie es funktioniert
#

export ─▶ parse ─▶ prefilter (drop only TRUE-empty) ─┬─▶ deterministic: profile + EXIF + timing ─┐
                                                     └─▶ cascade: cheap route ─▶ expensive read ─┤
                                         risk-contribution scoring ─▶ category cards ─▶ no-dossier report

Die Kaskade gibt es, damit eine Historie aus 1–3 Tausend Beiträgen bezahlbar bleibt: Der günstige Durchgang entscheidet, was das teure Lesen verdient, statt alles zu senden. Die Bewertung nach Risikobeitrag ordnet die Kategorien dann danach, wie stark sie dich tatsächlich eingrenzen — nicht nach der reinen Modell-Sicherheit, die nicht kalibriert ist.

Installation
#

Der Kern — das Einlesen, EXIF, die Kaskade und die Cloud-/Local-HTTP-Backends — kommt allein mit der Python-Standardbibliothek aus. Kein Paket von Dritten kommt an deinen Export, und so bleibt der Code, dem du vertrauen musst, klein.

# from source (a PyPI release ships with the first public version):
git clone https://github.com/coraaegis/exposurecheck && cd exposurecheck
pip install -e .

# or run without installing:
python -m exposurecheck --help
# Local model — nothing leaves your machine (recommended for anonymous accounts)
exposurecheck audit \
  --reddit ./reddit_export.zip \
  --twitter ./twitter_export \
  --backend local --expensive-model llama3.1 \
  --i-own-this-data

# Cloud — bring your own key; set it in the ENV, never on the command line
export OPENAI_API_KEY=sk-...
exposurecheck audit --twitter ./twitter_export --backend cloud --i-own-this-data

Der API-Schlüssel wird mit Absicht aus einer Umgebungsvariable gelesen: Argumente auf der Kommandozeile sickern in die Shell-Historie und in Prozesslisten.

ExposureCheck ist heute ein Kommandozeilen-Werkzeug, gedacht für Menschen, die in einem Terminal zu Hause sind — dort leben auch seine ersten Prüfer:innen. Eine Ein-Klick-App für Nicht-Techniker:innen (ein fertig gepacktes Build mit lokaler Oberfläche im Browser und ohne zu installierendes Python) ist der nächste Meilenstein; das CLI bleibt für versierte Nutzer:innen erhalten.

Vertrau ihm so, wie du jedem Privatsphäre-Werkzeug vertrauen würdest — durch Prüfen, nicht durch Glauben
#

Die Autorin ist pseudonym, nimm also keinen Namen auf Treu und Glauben. Nimm stattdessen, was du selbst nachprüfen kannst:

  • Lies den Code. Er ist quelloffen (MIT) und nutzt nur die Standardbibliothek, der Abhängigkeitsbaum, den du prüfen musst, ist also im Grunde die Standardbibliothek selbst.
  • Verifizier das Release. Jedes Release ist von Cora Aegis PGP-signiert. Hol den Schlüssel über WKD und prüf die Signatur:
    gpg --locate-keys cora@cypherpunkguide.com
    gpg --verify exposurecheck-0.1.0.tar.gz.asc
    SHA-256-Prüfsummen liegen jedem Release bei, und die Builds sind reproduzierbar — bau aus dem getaggten Quellcode neu und überzeug dich, dass das Ergebnis übereinstimmt.
  • Kein Code-Signing-Zertifikat mit Identität, ganz bewusst — ein solches Zertifikat würde das Projekt an eine rechtliche Identität binden, das Gegenteil des Sinns. Eine unsignierte Windows-Datei zeigt vielleicht eine SmartScreen-Meldung «unbekannter Herausgeber»; das ist zu erwarten. Nimm lieber einen Paketmanager (pip / Scoop / Homebrew) oder lass es aus dem Quellcode laufen, und prüf die PGP-Signatur.
  • Das Schutznetz ist die Gestaltung der Ausgabe. Die Kein-Dossier-Regel ist im Code erzwungen: Die maskierten Bezeichner werden maschinell erzeugt, sodass selbst der Text des Modells keinen aufgelösten Wert in den Bericht durchreichen kann. Die Leitplanken gegen Missbrauch — die an Eigentum gebundene Eingabe, die rein kategoriale Ausgabe, die Maskierung und eine Missbrauchsbewertung vor der Veröffentlichung — sind in ABUSE-EVAL.md dokumentiert.

Eine transparente Datenfluss-Tabelle und ein veröffentlichtes Bedrohungsmodell zeigen, was das Werkzeug vorhat. Der Quellcode, die Signatur und das reproduzierbare Build sind, womit du bestätigst, dass es genau das tut — und nichts sonst.

Grenzen, die du im Kopf behalten solltest
#

  • «Low» heißt nicht «sicher». Das Werkzeug senkt das Risiko; es bescheinigt keine Anonymität.
  • Es findet nicht alles. Ein Fehlschlag («nichts markiert») ist kein Beweis, dass du nicht zu identifizieren bist — schon gar nicht beim heuristic-Backend, das zum Testen da ist, nicht zum Prüfen.
  • Außerhalb des Umfangs: das Erkennen am Schreibstil, plattformübergreifende Korrelation jenseits dessen, was in deinen Exporten steckt, Metadaten auf Netzwerkebene und der bildliche Inhalt von Fotos (v1 liest nur EXIF/Metadaten — siehe die Roadmap).
  • Das Werkzeug selbst liest deine empfindlichsten Daten. Genau deshalb ist es lokal, nur auf der Standardbibliothek aufgebaut, quelloffen und signiert: damit das, was du startest, um deine Gefährdung zu prüfen, selbst die kleinste, am besten prüfbare Angriffsfläche ist, die es sein kann.

Häufige Fragen
#

Lädt ExposureCheck meine Beiträge irgendwohin hoch?
#

Nur wenn du das cloud-Backend wählst, und dann ausschließlich zu dem API-Anbieter, dessen Schlüssel du angegeben hast. Mit local oder heuristic verlässt nichts deinen Rechner. Das Werkzeug hat keinen eigenen Server und keine Telemetrie.

Nennt es mir meine eigene Adresse oder meinen echten Namen?
#

Nein. Das ist die bewusste Kein-Dossier-Gestaltung. Es zeigt maskierte Kategorien und führt dich zu deinen eigenen Originalbeiträgen, damit du entscheidest, was du änderst. Es setzt nie ein Profil von dir zusammen und speichert keines.

Ich prüfe ein anonymes Konto. Ist das Cloud-Backend sicher?
#

Nimm --backend local für ein streng anonymes Konto, es sei denn, dein Cloud-Konto ist selbst anonym. Schickst du die Historie eines anonymen Kontos an ein KI-Konto unter echtem Namen, verknüpft das die beiden auf der Seite des Anbieters — genau das Risiko, das dir dieses Werkzeug aufdecken hilft.

Ist es wirklich sicher, das über meine ganze Historie laufen zu lassen?
#

Der Code ist quelloffen und nutzt nur die Standardbibliothek, du kannst also lesen, was er tut; das Release ist PGP-signiert und reproduzierbar, du kannst also bestätigen, was du installiert hast; und es schreibt kein Profil auf die Festplatte. Prüf das nach, glaub es nicht einfach — das ist die ganze Haltung.

Warum eine Kommandozeile und keine App?
#

Das erste Publikum ist technisch, und ein CLI ist die am besten prüfbare Form. Eine fertig gepackte Ein-Klick-App mit lokaler Oberfläche im Browser ist der nächste Meilenstein für Nicht-Techniker:innen.


Erstellt von Cora Aegis. Eine Schwachstelle bei Privatsphäre oder Sicherheit entdeckt? Verantwortungsvolle Offenlegung ist willkommen — cora@cypherpunkguide.com (PGP über WKD). Der maßgebliche Quellcode und der Name ExposureCheck liegen unter github.com/coraaegis/exposurecheck.